Dr. DoBB'S ToURNALof 

COMPUTER 

(Calisthenics Orthodontia 

Running Light Without Overbyte 


A Reference Journal for Users of Home Computers 

Volu me Two 



[?| The People’s Computer Company Series 





















] 


! 










Dr. Dobb’s Journal 

of Computer Calisthenics 6 Orthodontia, 

Volume Two 














Dr. Dobb s JouRNALof 

COMPUTER 

(Calisthenics ^ Orthodontia 

Running Light Without Overbyte 


A Reference Journal for Users of Home Computers 


Volume Two 



The People’s Computer Company Series 


nr HAYDEN BOOK COMPANY, INC. 
HU Rochelle Park, New Jersey 








Acknowledgments 

Profuse thanks to all the authors and readers who contribute articles and share 
ideas with Dr. Dobb’s. Dr. Dobb’s Journal, distributed worldwide, owes its 
existence to you. Thanks also to the employees and other supporters of People’s 
Computer Company who have seen Dr. Dobb’s through its inception, growing 
pains and success. 

Full-page computer art by David Dameron. 

Linocut of griffin by Wendy Palmer. The mythological griffin, half lion and half 
eagle, has long stood as an enemy of ignorance. 


ISBN 0-8104-5484-X 


Copyright © 1980 by People’s Computer Company. All rights reserved. No 
part of this book may be reprinted, or reproduced, or utilized in any form or 
by any electronic, mechanical, or other means, now known or hereafter invented, 
including photocopying and recording, or in any information storage and 
retrieval system, without permission in writing from the Publisher. 

Printed in the United States of America 


123456789 PRINTING 


80 81 82 83 84 85 86 87 88 


YEAR 







The second volume of Dr. Dobb’s Journal is being compiled quite some time after the pub¬ 
lication of the magazines it contains. That makes it possible to write a preface with some degree 
of perspective. By contrast with the contents of Volumes 1 and 3, this volume provides a pic¬ 
ture of an industry’s growing pains. 

Microcomputers were still very much the domain of hobbyists and technology junkies in 
early 1977, but, during the course of that year, computers began to emerge as useful tools 
for home and business. At the same time, Dr. Dobb’s found itself acting as a consumer ad¬ 
vocate in a market that was beginning an era of explosive growth. 

In late 1977, it was my privilege to follow Dr. Dobb’s founder, Jim Warren, as editor; I 
walked right into the middle of a world of dazzling machines, selfless people exploring diffi¬ 
cult systems for the love of the science itself, and fast-talking carny barkers. Since it seemed 
that the field genuinely needed a publication to speak for the consumer, Dr. Dobb’s began to 
publish independent product reviews and reports on delayed deliveries, and to pursue con¬ 
sumer complaints. 

That task, however, became overwhelming. The industry was growing too fast for the 
reviewers to keep up with all the details of the major new products; companies were founded, 
and folded, overnight. To the extent of our small staffs ability, however, serious complaints 
were still pursued, and customers reported that our efforts helped resolve some of their prob¬ 
lems. 

Dr. Dobb’s , Volume 2, chronicles the emergence of the small computer as a useful tool. 

Here you will find a complete source listing for Lawrence Livermore Basic, which became 
popular due to its implementation of a floating point math package. The quest for a standard 
floating point implementation is still being discussed by a committee of the IEEE, and LLL 
Basic directly contributed to that effort. The publication of LLL Basic also represented one of 
Dr. Dobb’s primary functions — the introduction of useable software into the public domain. 

In this volume, we have collected important pieces of systems software, all by authors who 
contributed their work for no reward other than the satisfaction gained by sharing. For ex- 



ample, two issues of DDJ were required to present the full documentation and source code for 
Dr. John Starkweather’s 8080 PILOT. This language is now used world-wide, and was the 
springboard for later developments in computer-assisted instruction (CAI). 

For the most part, the software in Volume 2 is based on the Intel 8080, which was the first 
microprocessor to come into general use with the MITS Altair 8800 microcomputer, and which 
emphasized systems operation rather than applications. Max Agoston’s “Kernel,” a complete 
8080 operating system, is published with documentation and source listing, and is now, also 
in use world-wide. 

Of course, it isn’t all heavy-duty. lichen Wang, author of Palo Alto Tiny Basic (which 
appeared in Volume 1 of Dr. Dobb’s ) offers the tasty “Interactive Language for the Control 
of Robots.” Volume 2 also contains graphics routines, disassemblers, memory tests, patches 
and corrections to commercially offered software — all products of the pleasure people have 
had learning how to use these wonderous machines. 

Following the course of the letters and short subjects gives some of the flavor of the debates 
among readers, including the importance of software authors’ receiving reasonable compen¬ 
sation for their efforts; the endless debate about ‘hex vs. octal’ notation: and rumors that later 
turned out to be true, as well as others that turned out not to be (oops!). 

The most delightful result of editing a magazine like Dr. Dobb’s Journal was observing the 
intense interest of, and active participation by, the readers. I was continually amazed that 
people would send in material that had taken a great deal of work and care to develop because 
they wanted to share with others. The year 1977 produced a quantity of software which is 
still in use today, and which has formed the basis for a number of commercial packages. It 
was an unforgettable experience to have been involved in it. 

Tom Williams 



© David Dameron 1979 



Contents 


VOLUME 2, NUMBER 1, 1977 


13 A PDP-11-Like, 16-Bit Micro for the S-lOOBus Dick Wilcox, Alpha Micro 
Technology 

17 DDJ Editor Comments on the Alpha Micro System Jim C. Warren, Jr. 

18 Lawrence Livermore Lab’s 8080 BASIC John Dickenson, Jerry Barber, John Teeter, 

Royce Eckard, Eugene Fisher 


VOLUME 2, NUMBER 2, 1977 


77 Free Software? Or — Support Your Local Software Vendor Tom Pittman 

79 String Handling for Pittman’s 6800 Tiny BASIC Henry L. Kee 

80 Extensions to Wang’s Palo Alto Tiny BASIC Russ Hayden 

81 Pittman 6800 Tiny BASIC Mods for SWTPC PR - 40 Printer Mickey E. Ferguson 

82 STRINGOUT Mods for Espinosa’s 6502 Routine H.T. Gordon 

83 Symple Cyphering David Gruhn 

86 High Speed Interaction Without Interrupt or DMA Eugene Fisher 
92 Modifications to Microsoft 8K BASIC 3.1 for Cromemco Z—80 
95 $ 10 for 64-Characters & Scrolling on a TVT-II R. Lynn Smith 

98 64 Char/Line TVT-II Mods, Requests & Suggestions Gary Alevy 

100 An 8080 Disassembler Ward Christensen 
114 Appendices to CASUAL Bob Van Valzah 


VOLUME 2, NUMBER 3, 1977 


122 Tiny Linkage Editor for “relocatable code” on 8080’s and Z-80’s Dan M. Shaw 

124 Proposal for Standard Z-80 Code Peter G. Formaniak 

126 Graphics on the Poly -88 Harvey A. Cohen 

129 Extended Accuracy Arithmetic Routines M.G. Dineley 

137 Algorithm for computing square roots James A. Hinds 

139 8080 Disassembler Written in MITS 3.2 BASIC Jef Raskin 

144 M6800 Disassembler Gordon Stallings 

148 Proposed Tiny PILOT Dennis Allison 

150 An SC/MP Subroutine Supervisor Richard K. Peterson 

152 The Selectric Typewriter as An Output Device Rod Graves 








VOLUME 2, NUMBER 4 , 1977 


159 Washington Club Offers Free Access to Their On-Line Journal 
162 Pros & Cons of Modems for Cassette Recording 
162 Using an Acoustic Coupled Modem as a Bulk Storage Interface 
164 MITS Basic, Poly Basic, and NIBL — Product Review Jef Raskin 
166 Screen Image Hard Copy for the VDM-I Dan S. Parker 
168 Here, Now: A Micro APL for 8080’s Erik T. Mueller 
173 Guide to 8080 PILOT, Version 1.1 John A. Starkweather, Ph.D. 
186 A 650X Program Relocater Ralph Sherman 
188 A KIM-1 TV Sketch Program Stan Ockers 
190 The Characteristics and Decodability of the Universal Product 
Code Symbol D. Savir & G.J. Laurer 


VOLUME 2, NUMBER 5, 1977 


203 What to Get Your Computer for its First Birthday Jef Raskin 
205 Testing the DZ80-80 CPU: Nifty Z-80 Conversion for Altair & IMSAI Computers 
Jef Raskin 

207 Jack Armstrong’s Super Decoder Ring — Revisited Marvin R. Winzenread 

208 Video Chase for 8080/VDM Joseph J. Sanger 

216 Source Code for 8080 PILOT, Version 1.1 John A. Starkweather, Ph.D. 

232 A Practical, Low-Cost Home/School Microprocessor System Joe Weisbecker 


VOLUME 2, NUMBER 6, 1977 


245 Wayne Watch: A New DDJ Featurette for the Naive Novice Jim C. Warren, Jr., 

Editor, DDJ 

246 Which Manufacturer Offers the Longest Delivery Delay? a pseudo-contest 

247 Response to Tom Pittman’s Editorial Dave Allen 

248 More Support for Software Vendors Brent Longtin 

252 A Story of Traffic Lights, or: A BASIC Program to Play the Game of Life R. Broucke 

253 Conversions Between Octal and Hexadecimal R. Broucke 

255 SCHDL: A BASIC-coded‘Daily Reminder” Bob Moody & Steve Williams 

257 Curve Plotting on a TV Screen with the Polymorphics Video Interface and MITS BASIC 
R. Broucke 

259 6800 Circle Maker David Hudson 

261 DompierPlus: A “Musical Keyboard” Bruce Hicks 

262 Permanent Solution to Missing SP and PSW Definitions in PTC Sys Bruce R. Kendall 

263 Tape LOAD and SAVE Routines for P.T.’s BASIC Ron Santore 
265 KIM-1 Breakpoint Routines: Plain & Fancy Willi Kushe 

268 A ‘Turtle’ for VDM Marvin R. Winzenread 

271 An Example of an M6800-Based GPIB Interface S.C. Baunach 

296 Errata: TVT-II Mods had Pin Numbers Permuted Christopher Terry 

297 Lower Case Mod for SWTPC’s CT -1024 R. Lynn Smith 


VOLUME 2, NUMBER 7, 1977 


301 SCCS Group Buy—Complaint & Response 

302 About Those ASCII TTY’s That You Cannot Trade For ... David Jon Fylstra 

303 Some Dire Warnings of a Modem Jef Raskin 

305 Pennywhistle Plays a Better Tune Jef Raskin 

306 VDM-1 Modifications Lichen Wang 








308 Dissecting the SWTPC Control Interface Phillip Schuman 

310 PCF is Center for Personal Communications Law Kenneth S. Widelitz 

311 Towards a Good n-C Language Joshua P. Gordon 

312 On the Effects of Filling Cavities Within the Fillings of Cavities Within ... Steve Witham 

314 The APL Core Project Texas A&M APL Committee 

316 Decoding 65OX Opcodes H.T. Gordon 

319 A High-Speed Memory Test Program for the 6502 Jim F. Butterfield 

320 Mods to 8080 PILOT Steven Spence 

321 Z-80 Patches for MITS Basic Martin D. Gray 

322 One-for-One Patch to P.T. 5K Basic Morris G. Miller 

322 Real-Time Modification for Sanger’s Video CHASE David J. Morgan 

326 An 8080 Tracer John Walker 

327 Friend Finds Factorial Flaw Jef Raskin 


VOLUME 2, NUMBER 8, 1977 


331 About Those Elusive PILOT Tapes — Ronald C. Fryxell reply by Gregory Yob 

332 Some Follow-Ups and A Few New Tidbits from Readers Jef Raskin 

333 Computer Applications for the Handicapped Warren J. Dunning 

334 AN INTERACTIVE PROGRAMMING LANGUAGE FOR CONTROL OF ROBOTS 

Lichen Wang 

346 A MICROPROCESSOR OPERATING SYSTEM: THE KERNEL 

Max K. Agoston, Ph.D. 

367 Basic-Coded Memory Dumper John B. Palmer 

368 Patching Microsoft’s 4.0 Basic on P.T.’s SOL Jack L. Calaway 


VOLUME 2, NUMBER 9, 1977 


376 A Detailed Report on Product Delivery Complaints Tom Williams, Assistant Editor 

380 The Heath H-8: Pro & Con 

385 Poly Doc Corrections Richard B. Emerson 

389 Dijkstra’s Minilanguage Neils Laughlin 

391 GRAFX — A Graphics Monitor for the 8080/TV Dazzler Jonathan W. Mills 

398 Alphanumeric Plotter for Poly Video Display Arthur Armstron 

400 Utilities & Music on the Cosmac Elf Edward M. McCormack 

404 PROMable IK Operating System for RCA’s Elf Edward M. McCormack 

406 Multiple Column Accounting Charlie Pack 

412 OPLEGL Correction & a 6502 Scanning-Debugger H.T. Gordon 


VOLUME 2, NUMBER 10, 1977 


420 New Voice Synthesis & Graphics Products Kenneth Young 
423 Heathkit’s H-8: A Consumer’s View Paul R. Poduska, Ph.D. 

426 A KIM-1 Disassembler Theodore E. Bridge 

427 VDM -1 Driver Mods John Moorhead 

429 MATHPAC: A Kimath Supplement John Eaton 
436 GPM for the 6800 Frits van der Wateren 

443 ZAPS Operating System and Assembler for the Z-80 Jef Raskin 

444 SWTPC Editor Format Update Phil Hughes 

445 KAPIAR: AN 8080 MACROPROCESSOR Steve Newberry 

475 Index to Volumes One, Two, and Three 





About 

People’s Computer Company 

People’s Computer Company was founded in 1972 to demystify computers by teaching 
people how to use them. It is still carrying on that crusade through magazines, books and 
informal classes. 

As one of PCC’s founders, Bob Albrecht explained in the first issue of the PCC newspaper, 
“Computers are mostly used against people instead of for people, used to control people in¬ 
stead of to free them. It’s time to change all that. We need a People’s Computer Company.” 

Since then, in its role as a non-profit, educational corporation, PCC has published a news¬ 
paper, three magazines, and several books on home/personal computing. The Personal Com¬ 
puter NETwork, (PCNET) joined People’s Computer Company in March, 1979. PCNET is a 
Bay Area, California group dedicated since 1977 to the development of personal computer- 
based telecommunications. Computertown, U.S.A.!, a computer literacy project joined People’s 
Computer Company in August, 1979. In the past PCC also operated a neighborhood computer 
center, and a mail-order bookstore. 

Today, the PCC magazines - Recreational Computing, Dr. Dobb’s Journal, and Computer 
Music Journal — have a combined circulation of about 28,000 (paid subscribers plus news¬ 
stand sales). 

People’s Computer Company sprang from the same roots as the Whole Earth Catalog. 

Both were offshoots of the Portola Institute of Menlo Park, an organization dedicated to invest¬ 
igating and promoting the idea of alternative technology. For the founders of PCC, that meant 
learning to use computers as a liberating force in society. 

In PCC’s view, familiarity with computers breeds confidence and personal power. “The com¬ 
puter-liberated kid grows up to be an adult unafraid to challenge his bills - or anything else 
in the world’s great electronic system,” says Albrecht. 

People’s Computer Company publishes three magazines for three distinct audiences. The 
oldest, Recreational Computing, is for the computer novice to the intermediate hobbyist. It 
started out as a newspaper called People’s Computer Company, evolved into People’s Com¬ 
puters magazine, and took its present name with the January-February 1979 issue. The maga¬ 
zine is published bimonthly. 

“It’s in the home—in a relaxed, recreational environment-that the real computer revolution 
is going to take place over the next few years,” said Albrecht. 

As the first publication in the personal computing field, Recreational Computing has 
spawned imitators. “But we feel we have a very special niche,” says pub Usher Willard Holden. 
“Recreational Computing takes risks that other pubUcations don’t. We are willing to publish 
articles that may be off-beat and outrageous if we think they will get people excited about the 
possibiUties of computers.” 

Dr. Dobb’s Journal, PCC’s second publication, had its beginning in January 1976 as a short¬ 
term mimeographed forum for the newly written Tiny Basic language. Reader response was so 
strong that the Journal went into steady pubUcation. Most DDJ readers describe themselves as 
having from intermediate to extensive computer experience. 

Dr. Dobb’s Journal is a reference journal read worldwide. Ten percent of the circulation is 
outside the United States. The magazine contains sophisticated discussions of programming 
techniques and hardware modifications. About half of each issue is devoted to free software. 
DDJ appears ten times a year. 

Computer Music Journal, the third PCC publication, is at the forefront of new developments 
in the computer music world. During the past 20 years, there has been extensive research in 
applying computers to music. The results of this research are becoming more visible as digital 
techniques transform music production, music analysis, and music recording. 

Computer Music Journal, published since 1977, is a respected source for information in this 
field. The Journal is distributed quarterly to universities, research institutes, and individual 
subscribers in 27 countries. 

People’s Computer Company occupies the second floor of a small office building in down¬ 
town Menlo Park. The 30 staff members, more than half of whom are part-time, have pro¬ 
fessional interests in education, art, musical composition, computer science and journalism. 


People’s Computer Company 
Box E 

Menlo Park, CA 94025 



dr dobbs journal of 

COMPUTER 


(Calisthenics 



rthodontia 


Running Light Without Overbyte 

Number 11 January 1977 Volume 2, Issue 1 

A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


A PDP-11-Like, 16-Bit Micro for the S-100 Bus, Dick Wilcox, Alpha Micro Technology 3 

Complete with a multi-tasking, multi-user floppy disk operating system 

DDJ Editor Comments on the Alpha Micro System, Jim C. Warren, Jr. 7 

Lawrence Livermore Lab’s 8080 BASIC, John Dickenson, Jerry Barber, John Teeter, 

Royce Eckard, Eugene Fisher 8 

Includes Floating Point Package 
Complete User Documentation & Examples 
Complete, Assembled Annotated Source Code 


- - and a few, miscellaneous hardware announcements - - 






© David Dameron 1979 


A PDP-11-Like, 16-Bit Micro 

for the S-100 Bus 


16 BITS FOR YOUR IMSAI OR ALT AIR 
COMPUTER 

by Dick Wilcox, 1342 Mauna Loa Road, Tustin, CA 92680 

(714) 838-1381 

As I was waiting for my computer to finish an assembly, I 
happened to be glancing over my September issue of DDJ 
when I came across your small but interesting article way down 
down in the corner of page 11 entitled, “HOT IDEA”. In it 
you suggested that someone should interface the LSI-11 board 
to the S-100 bus used in the IMSAI and ALT AIR hobby com¬ 
puters. I would like to acquaint you with a recent develop¬ 
ment of mine which should prove to be of interest to the 
more advanced hobbyists who have run out of flexibility in 
their 8080 systems. 

I have worked with the PDP-11 series ever since the ori¬ 
ginal design first came out on the market (the now extinct 
PDP-11/20) and have gotten quite used to working with a 
full set of 16-bit registers. To drop back to an 8-bit single 
accumulator machine seemed to be intolerable and so I inves¬ 
tigated just what you suggested. I have done extensive soft¬ 
ware and hardware interfacing to several of the PDP-11 
models and after some study, came up with the conclusion 
that the low impedence bus structure of the LSI-11 was not 
easily adaptable to the S-100. In addition, the board size 
pretty much eliminated the incorporation of it directly into 
the actual computer box which all-in-all cast a dim shadow 
over the whole idea. 

The only feasible solution to this problem seemed to be a 
totally new design based around some already existing micro¬ 
processor. The system I selected is the Western Digital MCP- 
1600 which is comprised of two system chips (40-pin) and 
from one to four microprogrammable ROMS (40-pin) which 
may be custom programmed to perform various macro-level 
instruction sequences. Working together with a personal 
friend, Rich Notari, I came up with a workable instruction set 
that could exist in the MCP-1600. Rich then took this list and 
added a few frills of his own based on some previous experi¬ 
ences with this particular chip set. A note of thanks is due at 
this point to him for his undying efforts and late hours for I 
feel that he is the only programmer I know who could have 
successfully completed the microprogramming of this system 
in the short time frame allotted. We have named this particular 
chip set (4 chips total) as it is currently microprogrammed, 
the WD-16 microprocessor system. 

This system is then interfaced to the S-100 IMSAI/AL- 
TAIR bus using some 70-plus TTL logic chips which fit 
totally on two standard sized S-100 interface PC boards. 

These cards plug directly into the motherboard of your com¬ 
puter and include as standard features, multi-level interrupt 
steering logic, priority DMA channels (up to eight of them), 
and in interrupt-driven real-time clock for timesharing job 
control or program timing. The real beauty of this new sys¬ 
tem, however, lies in the software which is now running on it 
(notice I said now). The complete unit including the WD-16 
microprocessor and associated TTL interface is named the 
CM-16 microcomputer and is currently running in two IMSAI 
computers, undergoing rigorous testing at my house and at 
Alpha Micro Technology where much of the development 
was done. I am working in depth with the guys there to in¬ 
sure that the unit will be compatible with the majority of the 


currently available memory and peripheral devices on the 
market. So far the computer is performing admirably with 
no modifications necessary to any of the devices we have tried 
it out with. 

Microprocessor Structure 

The microprocessor is basically a 16-bit structured device 
which has been interfaced to the 8-bit IMSAI bus in a method 
which makes it transparent to the programmer. There are a 
total of eight registers (each 16-bits) which are used as a pro¬ 
gram counter (PC), a stack pointer (SP), and 6 general pur¬ 
pose work registers (R0-R5). The work registers are all identi¬ 
cal and may be used for memory addressing, accumulators, or 
index registers. Clock cycle for the chip set is 2Mhz to make 
it compatible with current 8080 devices although the unit is 
capable of speeds up to 3.3 Mhz with some modifications. 

Each machine instruction is 1,2, or 3 words in length depend¬ 
ing on the addressing modes in use by the instruction. Instruc¬ 
tion formats include control instructions, single operand in¬ 
structions, and monitor call instructions. Instruction operands 
can be register data or memory data which may be referenced 
directly (no register involved) or indirectly (through one of the 
registers). The stack may be specified as any contiguous block 
of memory and any operand may be directly referenced (not 
just the one on the top). In addition to the specified stack 
register, any of the six general purpose registers may also be 
used as stack registers for multiple-stack compiler applica¬ 
tions. Memory-to-memory operations may be done directly 
throughout the entire addressing range of 65K bytes (32K 
words) without disturbing any of the general purpose regis¬ 
ters. These instructions include add, subtract, logical and, 
logical or, and logical bit testing. 

Addressing of memory is normally done as either full 
16-bit words or as single 8-bit bytes. Most instructions allow 
either mode of operation, thereby giving very flexible charac¬ 
ter-string handling without sacrificing arithmetic capabilities. 
The top 256 bytes of the addressing range (memory locations 
FF00-FFFF) are translated by the interface logic into 8080 
I/O instructions and presented to the bus as such with the 
proper signals wiggling at the proper times. This eliminates 
the need for separate I/O instructions and most memory 
reference instructions may be used for I/O transfers with 
certain clearly defined restrictions. For all other memory ac¬ 
cess operations, the logic cleverly translates the 16-bit proces¬ 
sor requests into a couple of ordinary old 8080 8-bit requests 
and both ends of the string are quite happy with the arrange¬ 
ment. 

Interrupts are handled on a single level with up to eight 
hardware selectable priorities, totally compatible with the 
8080 interrupt scheme. The user has the option of running 
with either vectored or non-vectored software handling of 
the interrupt request. Vectored interrupts merely use the 
device interrupt code (0-7) as a table pointer to develop an 
absolute address to the specific interrupt handling routine. 
DMA transfers require some slight modification to the device 
board since the DMA structure uses some of the currently 
spare lines of the 100 bus structure. The 16-bit unit (dubbed 
the CM-16) resides in the computer in complete harmony with 
the existing 8080 CPU processor and uses a single control line 
(PRDY) to perform the hardware switching. At any one time, 
one of the processors is using the bus and the other processor 
is tri-stated. This method avoids making the 8080 CPU ob- 

Page 3 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


13 



solete and allows 8080 programs to be loaded under control 
of the extensive CM-16 software operating system and then 
executed using the 8080 CPU. At the present time, this 
switching is done mechanically but could be done via a soft¬ 
ware controlled output port if care was taken in the software 
timing. 

Available Software 

All of the software about to be described is currently run¬ 
ning on my prototype units with the exception of the Ex¬ 
tended BASIC Compiler system which is still undergoing de¬ 
velopment. The operating system is one which I have been 
using (in general design) on several computers over the past 
several years and has proven to be extremely useful in imple¬ 
menting new systems. I have recoded the various modules 
of it into the CM-16 macro instruction set and am running it 
with major success in all areas tested. Since most of the sys¬ 
tem is generalized in nature and is implemented in a very ex¬ 
tensive macro defined language, translation to the CM-16 code 
was fairly easy. The basic structure of the command language 
used by the operating system and the file system used for disk 
management greatly resembles the Decsystem-10 operating 
system which I feel is one of the most powerful and easy to 
master. 

Operating System 

The operating system (or monitor) may be generated in 
one of several basic cofigurations. To gain all of the features 
inherent in the design of the command language, the operating 
system should be based on disk (either floppy or hard surface) 
where the loading and execution of programs is handled auto¬ 
matically by the system. This disk-based version contains all 
routines for file handling on the disk and other peripheral de¬ 
vices (including memory). It can be structured for real-time 
processing and full timesharing using fixed memory partition¬ 
ing which is dynamically allocated during run-time. The time¬ 
sharing routines include priority processing methods and dy¬ 
namic device reassignment for non-sharable devices. A line 
printer spooler is included which runs in its own dedicated 
jobstream for those users lucky enough to have laid their 
hands on one of these expensive beasties. The operating sys¬ 
tem may also be generated in a much limited version which 
does not require a disk and allocated space in RAM dynam¬ 
ically for program and data files. In this version the user 
must explicitly load the run programs which perform most 
of the system tasks from some peripheral device such as a 
cassette tape. 

The operating system includes all facilities for logical I/O 
handling on a device-independent basis. All programs are writ¬ 
ten using logical calls such as OPEN, READ, WRITE, CLOSE, 
etc., and the monitor assigns input and output devices (or 
files) at run time under operator control. This means that 
when the user purchases his new random access Magnetic Wim- 
bis device, all he has to do is write a small driver for getting 
data into and out of the Wimbis and all of his programs (in¬ 
cluding all system programs) will operate with said bizarre 
device. Writing this driver is done in macro assembly language 
using a set of predefined rules. An extensive terminal service 
package allows various different devices to be defined as sys¬ 
tem consoles or peripheral I/O devices and interact with the 
operating system using specific control codes necessary for 
such things as carriage position and cursor control. I feel that 
with the myriad of different peripheral devices on the market 
(including surplus items) it is important to offer an easy meth¬ 
od to implement these devices without having to rewrite all 
programs. 

Command Language 

The command language implemented in the CM-16 operat¬ 


ing system offers the user the ability to easily define his own 
commands without modification to any of the system soft¬ 
ware. It works like this: when a command (1-6 characters) is 
typed on the terminal, the operating system searches for ei¬ 
ther a program by that name or a command file by that name. 
These programs and commands may be stored in a common 
system library or in the user’s own area Searching is performed 
in a manner defined when the user builds his operating system. 
If a program is found by that name it is automatically loaded 
into memory and executed. In other words, the file renaming 
functions are performed by a program called RENAME.PRG 
which is part of the system utility package. When the user 
types RENAME on his terminal the program is executed and 
performs the function. If the command results in the location 
of a command file that file is loaded into memory and the lines 
in that file are then fed into the terminal input stream one at a 
time just as if they had been typed on the terminal in sequence 
by the user. Each command file is ASCII and is created and 
edited by the text editor just as any source file or data file 
would be. Lines within the command file may include pro¬ 
gram name commands, other command file commands, or in¬ 
put data required for the execution of the program called. 
Specific control codes (preceeded by a colon) allow the con¬ 
trol of echoing, manual keyboard input for specific data, and 
operator messages within the command file processing. 

Disk Data Organization 

The disk (or multiple disks) is dynamically allocated as 
files are built using a bitmap technique which eliminates the 
need for a compression phase when the disk becomes frag¬ 
mented due to file deletion. Each time a file is opened it 
eats up only as much space as it actually requires. Records 
within the file are linked in sequence and need not be con¬ 
tiguous except for special files which the user may option¬ 
ally preallocate to a given size. When the file is deleted, all 
the space it occupied becomes imediately available for an¬ 
other file to use. On the larger scale, the disk may be allo¬ 
cated under one or more user areas with each user having 
a separate account number and an optional password (1-6 
characters) which is required at login time. Each user area 
is protected from other user’s vandalism by file protection 
codes and account numbers. Filenames need only be unique 
within each user area eliminating the necessaity of keeping 
track of who’s doing what with which, etc. User areas need 
not be allocated when they are set up since space on the 
disk is allocated on a first-come, first-serve basis. Utility 
routines assist in creating and maintaining user accounts and 
files in the system area. The system area is merely another 
user area and also may dynamically change as required. 

All input and output files and devices are referenced by a 
general format: 

device :filename.extension [ppn] 

The device code is a 3-character alpha name given to the 
peripheral unit to be referenced. This may be optionally 
followed by a drive number for units which may have more 
than one drive such as disk or tape. Typical assigned names 
might include DSK for disk, TAP for cassette tape, LPT 
for line printer, and TTY for terminal devices. DSKO and 
DSK1 would therefore be the device codes for two individ¬ 
ual drives connected to the same disk controller. These 
names are assigned by the user when he writes or renames 
the associated device driver routine. The exception to this 
is DSK which must be the name of the system disk when 
the disk operating system is used. The filename.extension 
follows the standard Decsystem-10 convention of using 
from 1-6 alphanumeric characters for the name of the file 


Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 January, 1977 


14 



and a 1-3 character extension (or modifier) which usually 
specifies the type of file it is. For example, given the pro¬ 
gram name of CONVRT for a conversion program, the fol¬ 
lowing standard extensions are used by the system: 


CONVRT.MAC 

CONVRT.BAK 


macro language source file 
backup source file created by the edi¬ 
tor 


CONVRT.OBJ 

CONVRT.PRG 

CONVRT.SYM 


object file created by the assembler 
runnable program file created by the 
Link loader 

symbol file used by the symbolic 
debugging program 


The ppn within brackets represents the user account number 
(also called project-programmer number, hence ppn) when 
reference is to another user area. Filenames and ppns are 
used only for file, structured devices and are ignored for 
non-file-structured devices such as a printer or paper-tape 
reader. 

Some examples of dataset references are: 

LPT: — Line printer 

DSK:CONVRT.MAC - File CONVRT.MAC in current 

user area on disk 

DSK1 :CONVRT.PRG [24,5] - File named CONVRT.PRG in 

user area 24,5 on disk 1 

TTY: — Current user terminal device 

All routines for processing these dataset references and set¬ 
ting up the links to the correct devices and files are built 
into the resident operating system thereby relieving the 
programmer of that task. The programmer merely sets up a 
20-word dataset definition block (DDB) and then uses a 
dozen or so monitor calls which reference this DDB to per¬ 
form all I/O setup and accessing operations. 


Assembly Language Development System 

The assembly language programming fanatic (long may he 
live!) has plenty of support in the CM-16 development sys¬ 
tem. The assembler is an extensive macro-level one with 
complete macro definition facilities and conditional assembly 
pseudo-operators. Internal and external global reference 
statements allow a large program to be segmented into lit¬ 
tle hunks and assembled separately while allowing inter-seg¬ 
ment data and procedure references. A linkage loader is 
then called to link all the object files together, resolve all 
external references, and generate a runnable program file. 

The resultant program may be totally relocatable without 
relinking if certain programming standards are adhered to 
due to the addressing capabilities of the hardware. A copy 
statement in the assembler allows system definition libraries 
and standard routines to be included in the source program 
with a single statement. These libraries and routines are 
normal ASCII source files and may reside in a common sys¬ 
tem area (DSKO: [7,7]) or in the user area. A symbolic 
debug program (DDT) allows the user to test his program 
under the supervision of a controlling program. Using DDT 
the user may set breakpoints, single-step execution, and in¬ 
spect data at any point during execution. All data areas 
and program instructions are referenced by the symbols 
used in the source program so the programmer need not 
work in that diabolical numbering system known as hexa¬ 
decimal. This DDT basically parallels the program by the 
same name in the Decsystem-10 for those of you who are 
familiar with it. Input to the DDT program is the program 
file (.PRG) and the symbol file (.SYM) which was created 
by the symbol file creation program which interprets the 
assembler output object file (.OBJ) as required. As a 


final frosting on the cake, there is a segmentation system 
in the assembler and the monitor which allows a program 
to be broken into logical segments and executed in a much 
smaller amount of memory by having each segment overlay 
the preceeding one. 

BASIC Compiler and Run System 

As I mentioned previously, this is the main piece of soft¬ 
ware which is not totally complete at this time, although it 
is sufficiently up and running for many test programs to be 
demonstrated. I have implemented the language in a kind of 
unique way which makes it a true compiler but which allows 
it to look like an interpreter in the development code. The 
source code may be edited via the standard text editor as a 
file on disk or it may be edited using the fine editor built 
into BASIC which follows the standards used by the other 
popular BASIC systems on the market. The program is auto¬ 
matically compiled once when the RUN command is execu¬ 
ted and the object code (actually a series of Polish-mode 
driver codes) is built in memory and then executed. This 
compiled code may optionally be stored off on disk and 
later recalled for execution, requiring only the run-time 
package to be resident. 

The language elements implemented (and to be imple¬ 
mented) include most of the currently available functions 
found in the popular extended BASIC interpreters. Timings 
taken on some various programs indicate timings on the or¬ 
der of 5-7 times as fast as the current version of MITS 8K 
BASIC depending on the amount of math being performed 
and the types of variables being used. String functions are 
fully supported as in integer and double-precision arithmetic. 
I also intend to include some fairly extensive assembly lan¬ 
guage and subroutine linkages to enable the high-speed rou¬ 
tines to be implemented where needed. Disk file data ac¬ 
cess methods are also supported along with matrix opera¬ 
tions. 

I have also included some rather unique features which 
are not a part of the standard BASIC format but which 
should provide the sophisticated user some additional 
flexibility. Variable names may be any length alphanumeric 
and are not limited to one or two characters. A redefinition 
scheme allows you to define any name as a command or set 
of commands to be referenced later in the program or in the 
terminal command system itself. For example, the name 
TOM could be equated to the multiple command sequence 
PRINT “TOM IS ALIVE”:GOTO 230 and each time TOM 
was entered into the program, the above sequence would re¬ 
place it. This is quite similar to the macro definition facility 
commonly found in assemblers. A copy statement allows 
external routines to be included in the source program when 
the compile mode is in use. There are also some other 
minor functions to numerous to mention here. If I could 
just find a function that would automatically document all 
the other features I would be in fat city. 

Text Editor 

For the Decsystem-10 fans, the text editor is basically a 
limited version of the very popular TECO program. It is a 
character-oriented free-form ASCII file editor with com¬ 
mands to add, delete, and insert both line and character 
strings in a text buffer. A pointer keeps track of your posi¬ 
tion within the text buffer and is manipulated by commands 
which move it forward and backward by a fixed number of 
lines or characters. Search commands may be used to locate 
a specific character string and leave the pointer set immedi¬ 
ately after it. An iteration scheme allows a series of editor 
commands to be enclosed in angle brackets and repeated a 
predetermined number of times. There are 26 registers (A- 
Z) which may be used for the holding and moving of varia- 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 5 


15 



ble lengths of text or numeric values including the pointer 
location. The text editor may be used to create and main¬ 
tain source files, command files, and data files (ASCII). 

System Utility Programs 

To supplement the creation, maintenance and operation of 
the system there exist a number of utility programs which 
perform specific functions. I will describe briefly a few of 
the more important ones. Probably the single most impor¬ 
tant one is the monitor generation program which allows the 
user to tailor the monitor to his specific needs and create a 
runnable monitor which includes selected routines and may 
optionally include some user written functions for fast ac¬ 
cess. The system allows the storing of several different 
flavors of monitors which may be called upon at any time 
for specific operations. Another important utility is one 
which creates and maintains the user accounts on the vari¬ 
ous disks. Accounts may be added and deleted and pass¬ 
words may be changed. This program is also used to in¬ 
itialize a new disk removing all files and accounts and free¬ 
ing up all the blocks. An extensive disk analysis program 
may be run which reads the entire disk structure and plots 
out the allocation of all files. Checks are made to insure 
that no two files are accessing the same physical disk record 
or records reserved for system use (such as the master direc¬ 
tory record and bitmaps). All files and directory records are 
read and checked for errors. The bitmap is analyzed for 
records marked in use but not in a file and vice-versa. The 
bitmap is then recreated and rewritten onto the disk. This 
is an effective garbage-collection program which is very help¬ 
ful in recovering from major disk failures which may destroy 
part of the file structure. 

There also exists the usual collection of support routines 
for copying files, dumping memory and disk data, print 
directory and file listings, and monitoring system status and 
operations. Most programs are accessible to all user accounts 
but a few of the programs are privileged in the respect that 
they may be run only when the user is logged under the 
system manager’s account number of 1,2. This prevents 
the non-informed users (such as wives and kids) from inad¬ 
vertantly eating up their own system disks. Now please 
don’t go and write about the intelligence levels of wives 
versus husbands, since I was only kidding. Really, some of 
my best friends are wives! 

8080 Cross Assembler 

For those of you who have some 8080 assembly language 
programs and do not wish to convert them immediately I have 
have a full macro and conditional assembly system for the 
standard 8080 instruction set which will accept 8080 source 
code and generate 8080 runnable programs. This develop¬ 
ment may be done using all the flexibility of the CM-16 
operating system whereby the source file and object file 
may be stored on disk (or other peripheral). The runnable 
program may then be loaded into memory using a special 
loader and the processor switched to 8080 mode to run the 
program. Since both microprocessors physically share the 
bus this is not a major inconvenience and makes for a pretty 
nifty little 8080 development system also. 

Current Progress of System Testing 

As I mentioned previously, this system is currently run¬ 
ning and not just a pipe dream and I invite anyone inter¬ 
ested to come down to Alpha Micro for a live demonstra¬ 
tion. The current system is running in an IMSAI computer 
with 40K bytes of memory of various types, a dual ICOM 
Frugal Floppy disk unit, a Tarbell cassette, and a 3P+S con¬ 
nected to a Lear Siegler Dumb Terminal. The memory re¬ 
quirements for the software operating system range from 
about 8K for a limited version to around 14K for the full 
timesharing disk-based one. We will be recommending 

Page 6 


around 24K as a minimum memory size which includes 
space for user program assembly and BASIC compilations. 

Due to the power of the microprocessor itself and the exten¬ 
sive software available, I do not feel that the main market¬ 
place will be the limited memory systems and with the 
price of memories dropping constantly, the tradeoffs in¬ 
volved in limiting the monitor to 4K bytes or less is not 
worth it. 

We are testing the prototype unit with various memories 
and peripherals to insure compatibility with most of the 
more popular ones. The following is a list of the devices 
that we have tested with the CM-16 with complete success: 

Seals 8K Memory 

Processor Tech 4K and 8K Memories 
IMSAI 4K Memory 
Solid State Music 4K Memory 
IMSAI SIO-2 Serial I/O Interface 
IMSAI PIO-4 Parallel I/O interface 
Cromemco 8K Bytesaver 
Processor Tech 3P+S I/O Interface 
ICOM Frugal Floppy Disks 
Tarbell Cassette Interface 
Lear Siegler ADM-3 Dumb Terminal 
Teletype ASR-33 Terminal 
Processor Tech VDM-1 Video Display 

Marketing Approach 

The finished CM-16 computers are scheduled for delivery 
on January 15, 1977 and will be distributed exclusively by 
Alpha Micro Technology of Tustin, CA. The unit will be 
sold as a kit with the price being somewhere under $999 
(does that sound better than $1000?) which will include all 
software mentioned above. The software will be distributed 
in one of several standard versions in runnable binary for¬ 
mat on either floppy disk or cassette tape media. I firmly 
believe that the hobby market should be basically just that 
and therefore we intend to make all software available for as 
little as possible to cover handling and a small profit margin. 

I have done commercial consulting for over six years and 
feel that companies making a profit from my software can 
well afford to pay top prices for it. The hobbyist, on the 
other hand, merely wants to enjoy his toys and perhaps 
gain some real insight into the world of computers while 
doing so. I see no threat to my own existence there and 
intend to make every effort to be personally responsive to 
all questions and comments concerning the CM-16 software 
library and also intend to maintain some form of update 
service to users who care to get all the latest improvements 
as they come out. The actual cost of the software system 
(included in the price of the CM-16 kit) is somewhere 
around $75.00 for the runnable binary system. This will 
cover the license to use that software for non-profit only. 
Commercial users desiring to OEM either the CM-16 com¬ 
puter or the WD-16 chip set alone will be asked to pay a 
nominal licensing fee for each version sold. 

An unusual approach not commonly found in systems of 
this magnitude is that we intend to sell all source files and 
listings in selected groups for a similarly nominal price. 

They will be distributed on floppy disks and will be modi¬ 
fiable by the user if he so desires. I intend to also distribute 
a fairly complete set of manuals giving information on writ¬ 
ing your own monitor routines and peripheral drivers. Since 
much of the software is modular in scope, many of the rou¬ 
tines used to build the monitor, assembler, and compiler will 
be available for the user. I have seen the enthusiasm that 
the hobby market has produced and feel that the feedback 
that I receive on my software will more than offset any ad¬ 
ditional profit to be made by overpricing. 

January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


16 



I hope that this brief description will spur the interest of 
some of you out there and I invite you to write or call me 
for further information on this new microprocessor system. 
Most of my time lately has been spent chasing gremlins and 
I welcome the opportunity to engage in some casual conver¬ 
sation now and then with other hobbyists interested in ad¬ 
vancing the field of computers. You can find me chasing 
gremlins at the following location: 

Alpha Micro Technology 
1342 Mauna Loa Road 
Tustin, CA 92680 


DDJ EDITOR COMMENTS ON THE ALPHA 
MICRO SYSTEM 

by Jim C. Warren, Jr. 

I saw this widgit running at a December meeting of the Home¬ 
brew Computer Club, and was totally blown away by it! It comes 
close to being an order of magnitude more potent than any other 
system I have seen. In prototype form, I watched John French 
running BASIC on one L-S terminal while Dick Wilcox was running 
the editor and the macro assembler on a second terminal. At the 
same time, a DECsystem-10 style SYSTAT system status display 
was running on a Processor Technology VDM, showing which jobs 
were alive, which one was active, etc., and also displaying a hours- 
minutes-seconds clock. It is, truly, a multi-tasking, multi-user sys¬ 
tem. 


Supervisor Call Instructions: 


SVCA arg 
SVCB arg 


SVCC arg 

Immediate Mode Instructions: 
AUDI irnn.reg 
SUBI imm.reg 
MOVI inrn,reg 
BICI imn.reg 

Single Address Instructions: 
ROR dst 
RORB dst 
ROL dst 
ROLB dst 
TST dst 
TSTB dst 
ASL dst 
ASLB dst 
SET dst 
SETB dst 
CLR dst 
CLRB dst 
ASR dst 
ASRB dst 
SWAB dst 
SWAD dst 
COM dst 
COMB dst 
NEC dst 
NEGB dst 
INC dst 
INCB dst 
DEC dst 
DECB dst 
IW2 dst 
SXT dst 
LSTS dst 
SSTS dst 
TJMP dst 
TCALL dst 
ADC dst 
SBC dst 


Jumps to a monitor routine defined by a table base 
address in location 22 plus twice the argument value 
Pushes all registers onto the stack including the SP 
and PC and then jumps to a monitor routine as in SVCA 
getting the table base address frcm location 24 
Same as SVCB using table from location 26 


Adds the imnediate data (range 1-16) to reg 
Subtracts the immediate data (range 1-16) from reg 
Moves the immediate data (range 1-16) to reg 
Clears the bits in reg corresponding to imnediate data 


Rotates dst^right one bit through the carry* flag 
Rotates dst byte right one bit through the carry flag 
Rotates dst word left one bit through the carry flag 
Rotates dst byte left one bit through the carry flag 
Tests the dst word and sets the CTU flags per the result 
Tests the dst byte and sets the CPU flags per the result 
Shifts the dst word left one bit into the carry flag 

Shifts the dst byte left one bit into the carry flag 

Sets the dst word to all ones 
Sets the dst byte to all ones 
Clears the dst word to zeros 

Clears the dst byte to zeros 

Shifts the dst word left one bit into the carry flag 

Shifts the dst byte left one bit into the carry flag 

Swaps the two bytes in the dst word 
Swaps the two hex digits in the dst byte 
Compliments the dst word (one’s compliment) 

Compliments the dst byte (one's compliment) 

Negates the dst word (two's compliment) 

Negates the dst byte (two's compliment) 

Increments the dst word by one 

Increments the dst byte by one 

Decrements the dst word by one 

Decrements the dst byte by one 

Increments the dst word by two 

Extends the sign bit (N flag) through the dst word 

Loads the processor flags and interrupt from the dst word 

Stores the processor flags and interrupt into the dst word 

Table jump based on data in dst and table following the inst 

Table subroutine call similar to TJMP 

Adds the carry flag to the dst word 

Subtracts the carry flag from the dst word 


Double Address Instructions: 


ADD src.dst 
SUB src,dst 
AND src.dst 
BIC src.dst 
BIS src.dst 
BISB src.dst 
BIT src.dst 
XOR src.dst 
MOV src.dst 
MDVB sre ,dst 
CMP sre ,dst 
(MPB src.dst 


Adds the sre word to the dst word 

Subtracts the sre word from the dst word 

Logical AND's the sre word into the dst word 

Clears bits in the dst word corresponding to the sre word 

Logical OR's the sre word into the dst word 

Logical OR's the sre byte into the dst byte 

Sets processor flags based on corresponding sre-dst word bits 

Logical XOR's the sre word into the dst word 

Moves the sre word to the dst word 

Moves the sre byte to the dst byte 

Compares the sre word to the dst word and sets flags 

Compares the sre byte to the dst byte and sets flags 


Register-Address Instructions: 

Call the subroutine at dst (PC pushed onto stack) 

Call the subroutine at dst using reg as link register 
Loads the effective address dst into reg 
Special form of LEA which jumps to dst routine 
Exchanges the words in the reg and dst 

Decrements reg by one and branches to dst if result not zero 
Shifts the word in reg by (dst) bits (left if + , right if -) 
Shifts the double-word unit in reg.reg+l same as ASH 
Multiplies reg by dst leaving result in reg,reg+1 
Divides reg,reg+l by dst leaving result in reg (remainder in 

reg+1) 


CALL 

dst 

CALL 

reg,dst 

LEA 

reg,dst 

JMP 

dst 

xai 

reg,dst 

SOB 

reg,dst 

ASH 

reg,dst 

ASHC 

reg,dst 

MUL 

reg,dst 

DIV 

reg,dst 


All of this was running on an IMSAI with 48K bytes of RAM 
and dual iCom floppy disc drives. John told me the 8080 board 
was still in there, doing little more than supporting the front panel. 
Incidentally, at one point the system crashed—I believe Dick was 
running in privileged mode and garbled his memory partitioning 
commands (i.e., operator error, not system error). He simply 
reached over, hit the front panel RESET switch, and booted off 
the disc in a few seconds. He asked John how much memory he 
wanted (for running BASIC), allocated it, and both of them were 
off and running again. 

Evidently the system truly is device-independent. I talked to 
Dick about two days ago, asking if he could easily get the system 
running on the $350 I BM 2311 multi-platter, hard-disc, 7.25 
MEGAbyte disc-pack drive that is being interfaced to the S-100 
bus by another group in Southern California (ahhh, but that's 
another story for another issue). He said that it shouldn't take 
more than a coupla hours to write the driver for it; then it would 
run with no further changes to the software. 

Concerning the BASIC "compiler": as I understand it, Dick's 
BASIC processor translates into an efficient intermediate code 
which is both compact and fast to interpret. In this way, it gains 
the reported 5-7 speed advantage over the MITS BASIC. It is not, 
however, a true compiler in the sense of generating absolute object 
code for the target machine. 

I would like to particularly applaud Dick's position regarding 
low-cost distribution of software for not-for-profit use. He is 
recognizing and adjusting to the realities of the new world of per¬ 
sonal computing in a manner that I feel is fair and reasonable for 
everyone concerned. His willingness to release his very extensive 
systems software sources is to be particularly applauded. 

Why bother with a multi-tasking operating system on a "per¬ 
sonal" computer? Let’s daydream for a moment. Wouldn't it be 
nice to be able to start a lengthy listing on our hardcopy device; 
while that was running, start an assembly of a large program; and 
then go about editing the source for another program from our 
softcopy terminal? That's exactly what you can do with a multi¬ 
tasking system . . . the Sixteen/8 (a later name for the CM-1 6). 

Why bother with multi-user capabilities? Well, let's say that 
your kids want to run Space War at the same time you want to do 
some "serious work" on your home system. Or, let's say a school 
has already purchased a number of IMSAI's—such as is the case with 
the San Jose Unified School District in California-and would like 
to allow more students to use the machines at the same time, than 
is possible in a one-on-one environment. Since the capability is 
already there—it was in Dick's home-grown operating system on the 
11/20 for four years—it might be useful. On the other hand, you 
can ignore it if you wish. 

Watch for a comprehensive evaluation of the Sixteen/8 in a 
future issue of DDJ. Dick and John have promised that, as soon as 
they get their first batch of production units, they will let me come 
down, pick any one I choose out of the bunch, bring it back to the 
Bay Area, and bang away on it to my heart's content. Be assured 
that an evaluation of that unit—particularly its software and sys- 
tems aspects—will appear in Dr. Dobb’s shortly thereafter. 


Branch Instructions: 


BR 

adr 

Branch unconditionally 

BEQ 

adr 

Branch if equal 

BNE 

adr 

Branch if not equal 

BPL 

adr 

Branch if plus 

»1I 

adr 

Branch if minus 

Bill 

adr 

Branch if higher (unsigned) 

BHIS 

adr 

Branch if higher or same (unsigned) 

BL0 

adr 

Branch if lower (unsigned) 

BLOS 

adr 

Branch if lower or same (unsigned) 

BGT 

adr 

Branch if greater (signed) 

BGE 

adr 

Branch if greater or equal (signed) 

BLT 

adr 

Branch if less (signed) 

BLE 

adr 

Branch if less or equal (signed) 

BVC 

adr 

Branch if overflow flag clear 

BVS 

adr 

Branch if overflow flag set 

BCC 

adr 

Branch if cany flag clear 

BCS 

adr 

Branch if carry flag set 

iuary 

, 1977 

Dr. Dobb's Journal of 


Multiple-bit Shift 

Instructions: 

SSRR 

reg,ent 

Shifts 

SSLR 

reg,ent 

Shifts 

SSRA 

reg,cnt 

Shifts 

SSLA 

reg,ent 

Shifts 

SDRR 

reg,ent 

Shifts 

SDLR 

reg,ent 

Shifts 

SDRA 

reg,ent 

Shifts 

SOLA 

reg,ent 

Shifts 


Shifts the word in reg right ent times through the carry 
Shifts the word in reg left ent times through the carry 
Shifts the word in reg right ent times from the carry 
Shifts the word in reg left ent times into the carry 
Shifts the double-word in reg,reg+1 same as SSRR 

Shifts the double-word in reg,reg+1 same as SSLR 

Shifts the double-word in reg,reg+1 same as SSRA 

Shifts the double-word in reg,reg+1 same as SSLA 

Floating Point instructions: at this time the floating point microprogramming is not 
complete and the final format is still undergoing change. The basic floating 
point instructions will be available as an optional fifth microprocessor chip. 

Please note that many of the instructions are rather exotic and were designed 
specifically to be used in the operating system for subroutine processing. 

Many of the instructions in this category will not be used for application 
programs but are available for those who wish to dabble with them. 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 7 


17 



Lawrence Livermore Lab’s 

8080 BASIC 

includes floating point package 

user documentation & complete, annotated source 


Fore ward 

The BASIC interpreter described in this user’s guide was 
developed at the University of Idaho by John Dickenson, Jerry 
Barber, and John Teeter under a contract with the Lawrence 
Livermore Laboratory. In addition, Jerry Barber, as an LLL 
summer employee, made significant contributions to this docu¬ 
ment and to implementing the BASIC language in an MCS-8080 
8080 microprocessor. 


Abstract 

Scientists are finding increased applications for micropro¬ 
cessors as process controllers in their experiments. However, 
while microprocessors are small and inexpensive, they are dif¬ 
ficult to program in machine or assembly language. A high- 
level language is needed to enable scientists to develop their 
own microprocessor programs for their experiments on loca¬ 
tion. Recognizing this need, LLL contracted to have such a 
language developed. This report describes the result—the LLL 
BASIC interpreter. 


Introduction 

The BASIC interpreter described in this user’s manual was 
designed to operate with the MCS-8080 microprocessor. It 
consists of a 5K-byte-PROM resident interpreter used for pro¬ 
gram generation and debug. 

The goal in developing the 8080 BASIC was to provide a 
high-level, easy-to-use language for performing both control 
and computation fuctions in the MCS-8080 microprocessor. 
To minimize system size and cost, the interpreter was con¬ 
strained to fit into 5K bytes. It was necessary, therefore, to 
limit the commands to those considered the most useful in 
microprocessor applications. 

A list of these commands is given in Table 1, and a list of 
the statements making up the BASIC interpreter is presented 
in Table 2. Average assembly-language execution times and 
the various operations allowed in the BASIC floating-point 
package are given in Table 3. 


Table 1. BASIC interpreter commands. 
Command Action 


RUN 

SCR 

LIST 

PLST 

PTAPE 

CNTRLS 


Begins program execution 
Gears program from memory 
Lists ASCII program in memory 
Punches paper-tape copy of program 
Reads paper-tape copy of program using 
high-speed reader 

Interrupts program during execution 


Table 2. BASIC statements. 

Statement 

Function 

0 to 32767 

Indicates BASIC line number (maximum 
range 0 to 32767). 

REM 

Indicates a comment (Spaces are ignored 
excpet when enclosed in quotes, there¬ 
fore, comments are generally enclosed 
in quotes) 

END 

Indicates end of program 

STOP 

Stops program 

GO to XX 

Transfers to line number XX 

DIM 

Declares an array (Only one-dimensional 
arrays with an integer number of ele¬ 
ments are allowed) 

LET 

IF expression 

Indicates an assignment statement (Addi- 
tio, subtraction, multiplication, division, 
or special function may be used) 
tion, subtraction, multiplication, division, 

THEN XX 

Condition statement which transfers to line 
number XX if the condition of the ex¬ 
pression is met 

INPUT 

Allows numeral data to be inputed via a 
terminal 

PRINT 

Allows numerical data and character strings 
to be printed on a terminal 

FOR 

Causes program to iterate through a loop a 
designated number of times 

NEXT 

Signals end of loop and at which point the 
computer adds the step value to the varia¬ 
ble and checks to see if the variable is 
still less than the terminal value 

GO SUB NN 

Transfers control to a subroutine that begins 
at line NN 

RETURN 

Returns control to the line after the last 

GO SUB 

CALL 

CALL (N,A,B,....) 

N = subroutine No. as listed in assembly 
patch table A, B, etc. = parameters, con¬ 
stants, variables, or expressions. 

GET 

(X) = READ 8080 INPUT PORT X 

PUT 

(Y) = OUTPUT A BYTE OF DATA TO 
OUTPUT PORT Y 

Table 3. BASIC operations and execution times. 

Operation 

Execution times on 8080 (msec) 

ADD 

2.4 

SUBTRACT 

2.4 

MULTIPLY 

5.4 

DIVIDE 

7.0 


Page 8 


Dr. Dobh's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


18 



USING THE BASIC INTERPRETER 

Starting the Interpreter 

The BASIC interpreter is presently configured so that it is 
located in memory pages 118 to 34g. The starting address is 
17g, location 0. This address begins an initialization sequence 
a second starting address—page 17g, location 23g—can be used. 
This starting address is used if the user wishes to retain any 
program that might exist in memory. 

Once started the interpreter responds with READY. 

Entering a Line 

Each line entered is terminated with the carriage-return 
key. The line-feed key is ignored. It is possible to correct 
errors on a line being entered by either deleting the entire 
line or by deleting one or more characters on the line. A 
character is deleted with either the rubout key or the shift/ 

0 kry. Several characters can be deleted by using the rubout 
key several times in succession. Character deletion is, in 
effect, a logical backspace. To delete the line you are cur¬ 
rently typing, use the CNTRL/Y key. 

The above line-editing features can be used on command, 
program, or data lines. 

Commands 

The following commands are available: 

RUN - Begins program execution 
SCR - Clears program from memory 
LIST - Lists program in memory 
PLST - Punches paper-tape copy of program 
PTAPE- Reads in paper-tape copy of program using 
high-speed reader 

The LIST and PLST commands can be followed by one 
or two line numbers to indicate that only a part of the pro¬ 
gram is to be listed. If one line number follows the command, 
the program is listed from that line number to the end of the 
program. If two line numbers (separated by a comma) follow 
the command, the listing begins at the first line number and 
ends at the second. 

When a command is completed, READY will be typed on 
the teletype. Once initialized by a command, a process will 
normally go to completion. However, if you wish to interpret 
an executing program or a listing, simply strike CNTRL S and 
the process will terminate and a READY message will be typed, 
typed. 

Statements 

Each statement line begins with a line number, which must 
be an integer between 0 and 32767. Statements can be entered 
in any order, but they will be executed in numerical order. All 
blanks are ignored. 

A program can be edited by using the line numbers to insert 
or delete statements. Typing a line number and then typing a 
carriage return causes statement at that line number to be de¬ 
leted. Since the statements can be entered in any order, a 
statement can be inserted between between two existing state¬ 
ments by giving it a line number between the two existing 
statement line numbers. To replace a statement, the new 
statement should have the same line number as the old state¬ 
ment. The following types of statements are allowed: 

REM - Indicates a remark (comment). The system 
deletes bln 

deletes blanks from all character strings that 
are not enclosed in quotes (”). Therefore, it 
is suggested that characters following the 
REM key word be enclosed in quotes. 

END - Indicates the end of a program. The program stops 
when it gets to the END statement. All pro¬ 
grams must end with END. 

STOP - Stops the program. This statement is used when 
the program needs to be stopped other than at 
the end of the program text. 


GOTO - Transfers to a line number. This statement is used 
to loop or jump within a program. 

DIM - Declares an array. Only one-dimensional arrays 
with an integer constant number of elements 
are allowed. An array with N elements uses in¬ 
dexes 0 through N-l. All array locations are set 
to zero. No check is made on subscripts to en¬ 
sure that they are within the declared array. An 
array variable must be a single letter. 

LET - Indicates an assignment statement. Non-array 

variables can be either a single letter or a letter 
followed by a digit. It is possible to have an 
array and a non-array variable with the same 
name. The general form of the LET statement 
is: 

line number LET identifier = expression, 
where “identifier” is either a subscripted array 
element or a non-array variable or function (see 
section on functions) and “expression” is a 
unary or binary expression. The expression will 
be one of the following ten types: 

variable -variable - variable 

-variable variable * variable 

variable + variable -variable * variable 

variable - variable variable / variable, 

-variable + variable -variable / variable, 

where “variable” is an identifier, function, or 
number. The subscript of an array can also be 
an expression. 

Numbers in a program statement or input via the 
teletype are handled with a floating-point 
package provided by LLL. Numbers can have 
any of the following forms: 

4 ±4 .123 

4. ±4.0 ±.123 

4.0 1.23 0.123 

±4 ±1.23 ±0.123 

and the user may add an exponent to any of the 
above forms using the letter E to indicate 

powers of 10. The forms of the exponent are: 

E±1 E±15 

El E 15 

El E 15. 

The numbers are stored with seven-digit 
accuracy; therefore, seven significant figures 
can be entered. The smallest and largest num¬ 
bers are ±2.71051E-20 and ±9.22337E18. 

IF This is the conditional statement. It has the form: 

line number IF expression relation expression 
THEN transfer line number. The possible re¬ 
lations are: 


Equal 

= 


Greater than 

> 


Less than 

< 


Greater than or equal 

>= 

=< 

Less than or equal 

<= 

=< 

Not equal 

<> 

>< 


If the relation between the two expressions is 
true then the program transfers to the line num¬ 
ber, otherwise it continues sequentially. 

INPUT - This command allows numerical data to be input 
via the teletype. The general form is: 

Line number INPUT identifier list, 
where an “identifier list” is a sequence of iden¬ 
tifiers separated by commas. There is no comma 
after the last identifier so, if only one identifier 
is present, no comma is needed. When an INPUT 
statement is executed, a colon (:) is output to 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 9 


19 



the teletype to indicate that data are expected. 
The data are entered as numbers separated by 
commas. If fewer data are entered than ex¬ 
pected, another colon is output to the teletype, 
indicating again that data are expected. For 
example, where 

50 INPUT I,J,K,P 

is executed, a colon is output to the teletype. 
Then, if only 3 numerical values are entered, an¬ 
other colon will be output to indicate that 
more data are expected; e.g., 

: 4,4,6.2 C/R 
: 10.3 C/R 

where C/R is the carriage-return key. If an error 
is made in the input-data line, an error message 
is issued and the entire line of data must be re¬ 
entered. If, for the above example, 

: 4,4,6M2,10.3 C/R 
is entered, the system will respond 

INPUT ERROR, TRY AGAIN 

At this time, the proper response would be 
4,4,6.2,10.3 C/R. 

PRINT - This command allows numerical data and character 
strings to be printed on the teletype. Two types 
of print items are legal in the print statement: 
character strings enclosed in quotes (”) and ex¬ 
pressions. These items are separated by either a 
comma or a semicolon. If print items are 
separated by a comma, a skip occurs to the next 
pre-formatted field before printing of the item 
following the comma begins. The pre-formatted 
fields begin at columns 1,14, 27, 40, and 52. 

If print items are separated by a semicolon, no 
skip occurs. If a semicolon or comma is the last 
character on a print statement line, the appro¬ 
priate formatting occurs and the carriage-return- 
line feed is suppressed. A print statement of the 
form 

50 PRINT 

will generate a carriage-return-line feed. Thus, 
the two lines below 

50 PRINT “INPUT A NUMBER”; 
60 INPUT A 

will result in the following output: 

INPUT A NUMBER: 

For more examples, see sample programs in 
Appendix A. 

FOR - Causes program to iterate through a loop a desig¬ 
nated number of times. 

NEXT - Signals end of loop at which point the computer 
adds the step value to the variable and checks 
to see if the variable is still less than the terminal 
value. 

GOSUB NN - Transfer control to a subroutine that begins at 
line NN. 

RETURN - Returns control to the next sequential line after 
the last GOSUB statement executed. A return 
statement executed before a GOSUB is equi¬ 
valent to a STOP statement. 

CALL - Calls user-written assembly-language routines of 
the form 

CALL (N, A, B,...), 

where N is a subroutine number from 0 - 254 
and A, B,... are parameters. The parameters 
can be constants, variables, or expressions. How¬ 
ever, if variables and constants or expressions 
are intermixed, all variables should have been 


referenced before the CALL statement. Other¬ 
wise, the space reserved for newly referenced 
variables may overwrite the results of constants 
and expressions. A memory map of one con¬ 
figuration of the system is shown below: 


Page 10 



The subroutine table contains 3-byte entries for each sub¬ 
routine. The table directly follows the pointer to the first 
word of available memory (FWAM) and must end with an octal 
377. A sample table and its subroutines is shown below: 


ORG I$6(12Q 

DW SUBEND 

; Define FWAM 

DB 1 

; Subroutine #1 

DW SUB1 

; Starting add of 
subroutine #1 

DB 4 

; Subroutine #4 

DW SUB4 

; Starting add of 
subroutine #4 

DB 5 

; Subroutine #5 

DW SUB5 

; Starting add of 
subroutine #5 

DB 2 

; Subroutine #2 

DB SUB2 

; etc. 

DB 377Q 

; end of subroutine table 

SUB1: 4 

; Subroutine #1 

RET 

SUB5: 4 

; Subroutine #5 

RET 

• 

• 

• 

RET 

SUBEND EQU $ 

; FWAM 


Addresses to passed parameters are stored on the stack. The 
user must know how many parameters were passed to the sub¬ 
routine. These must be taken off the stack before RET is 
executed. Addresses are stored last parameter first on the 
stack. Thus, on entry to a subroutine, the first POP instruc¬ 
tion will recover the address to the last parameter in the call 
list. The next will recover the next to last, etc. 

Each scalar variable passed results in the address to the first 
byte of a four-byte block of memory. Each array element 
passes the address to the first byte of a (N-M) x four-byte 
memory block, where N is the number of elements given the 
array in the DIM STMT and M is the array subscript in the 
CALL STMT. 

For passed parameters to be handled in expressions within 
BASIC, they must be in the proper floating-point format. 


Page 10 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 January, 


20 





Functions 

Two special functions not found in most BASIC codes are 
available to input or output data through Intel 8080 port 
numbers. 

The function GET allows input from a port and the function 
PUT allows output to a port. Their general forms are: 

GET (expression) 

PUT (expression). 

The function GET may appear in statements in a position that 
implies that a numerical value is used. The function PUT may 
appear in statements in a position that implies that a numerical 
value will be stored or saved. This is because GET inputs a 
number and PUT outputs a number. For example, 

LET PUT(I) = GET(J) is valid 

while 

LET GET(I) = PUT(J) is invalid. 

These functions send or receive one byte of data, which in 
BASIC is treated as a number from 0 to 255. 

Error Messages 

If an unrecognizable command is entered, the word WHAT? 
is printed on the teletype. Simply retype the command. It 
may also have been caused by a missing line number on a 
BASIC statement, in which case you should retype the state¬ 
ment with a line number. 

If an error is encountered while executing a program, an 
error message is typed out that indicates an error number 
and the line number in which the error occurred. The meanings 
of the error numbers are given in Table 4. 

Table 4. Meanings of error numbers. 

Error number Error 

1 Program has no END statement 

2 Unrecognizable keyword at beginning of 
statement 

3 Source statements exist after END 
statement 

4 Designation line number is improperly 
formed in a GOTO, GOSUB, or IF 
statement 

5 Destination line number in a GOTO, 
GOSUB, or IF statement does not exist 

6 Unexpected character 

7 Unfinished statement 

8 Illegally formed expression 

9 Error in floating-point conversion 

10 Illegal use of a function 

11 Duplicate array definition 

12 An array is referenced before it is defined 

13 Error in the floating-point-to-integer 
routine, number is too big 

14 Invalid relation in an IF statement 

During program execution and whenever new lines are added 
to the program, a test is made to see if there is sufficient mem¬ 
ory. If the memory is full, MEMORY FULL is printed on the 
teletype. At this point, you should enter one of the single digits 
below to indicate what you wish to do: 

Number entered Meaning 

0 (RUN) runs the program in memory 

1 (PLST) outputs program in memory to 
paper tape punch 

2 (LIST) lists program in memory 

3 (SCR) erases program in memory 

4 none of the above (will cause WHAT? 
to be printed in teletype). 


To help you select the best alternative, a brief description 
of how the statements are manipulated in memory will be 
helpful. All lines entered as program are stored in memory. If 
lines are deleted or replaced, the original still remains in 
memory. Thus, it is possible, if a great deal of line editing has 
been done, to have a significant portion of memory taken up 
with unused statements. If a MEMORY FULL message is ob¬ 
tained in these circumstances, then the best thing to do is 
punch a tape of the program (entering number 1), then erase 
the program memory with a SCR command (or a number 3, if 
memory is too full to accept commands), and then re-enter 
your program using the high-speed paper-tape reader with the 
PTAPE command. 


Appendix A: Sample Programs 

The program below gives a few examples of the use of the 
print statement. 

LIST 

1PRINT“THE PRE-FORMATTED COLUMNS ARE SHOWN 
BELOW 

2PRINT1,2,3,4,5 
4PRINT 

10PRINT“INPUT 1ST NUMBER”: 

20INPUTA 

30PRINT“INPUT 2ND NUMBER”, 

40INPUTB 

50PRINT 

60PRINT“A IS”;A 
70PRINT“B IS”.B 

80PRINT“A IS”;A;“B IS”,B,“A+B IS”;A+B 

100 END 

READY 

RUN 

THE PRE-FORMATTED COLUMNS ARE SHOWN BELOW 
1.0000E 00 2.0000E 00 3.0000E 00 4.0000E 00 

5.0000E 00 

INPUT 1ST NUMBERS 

INPUT 2ND NUMBER :3 

A is 2.0000E 00 
B IS 3.0000E 00 

A is 2.0000E 00B IS 3.0000E 00 A+B IS 5.0000E 00 
READY 


The following program plots a function on a display. It uses 
four user-written assembly-language subroutines. The display 
works as follows: The contents of memory locations on pages 
274g to 277g are displayed as 16 rows of 64 characters each. 
Thus, if location 201s on page 274 contains 301s (ASCII A), 
an A appears in column 2 of Row 3. An example of this pro¬ 
gram’s execution is shown below: 

RUN 

WHAT SHOULD PLOT BE LABELED? MCS80 
BASIC INTERPRETER 

READY 

The BASIC and assembly-language programs and the display 
output are shown on the following pages. 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 P a 9 e 11 


21 



BASIC Program 

1.1 ST 

IREM" THIS ROUTINE WILL PLOT A SET OF AXIS AND A QUADRATIC FUNCTION 

2RF.M" ON A DISPLAY AND THEN LABEL IT. IT USES A 4 USER WRITTEN 

3KEM" SUB-ROUTINES: 

4 REM 

SRKM" CALL (1,X,Y,C) - PLACES C IN COLUMN X, ROW Y OF THE DISPLAY 

6RKM" WHERE C IS AN ASCII CODED CHARACTER 
7 REM 

8RKM" CALL(2,A(0)) - READS A CHARACTER STRING FROM THE TTY AND STORES 

9REM" IT"IN ARRAY A 

10REM 

11REM" CALL(3»A(0)) - WRITES THE CHARACTER STRINC STORED IN ARRAY A 

12RF.M" TO THE DISPLAY 

13REM 

14REM" CALL(4) - CLEARS THE DISPLAY 
1SRKM 

16REM" START OF PROCRAM 

17 REM 

18REM" RESERVE STORAGE AREA FOR TITLE 

20DIMA(10) 

30REM" CLEAR SCREEN 

40CALL(4) 

S0REM" ASK FOR AND INPUT TITLE 

55PRINT"WHAT SHOULD PLOT BE LABELED?"; 

60CAL1.(2, A(0)) 

70REM" DRAW AXIS 

80COSUB500 

90REM" PLOT FUNCTION 

100LETX—29 
110COSUB1000 
120CALL(1,31+X,8-Y,248) 

130LETX=X+1 
140IFX><31 THEN110 
1S0REM" OUTPUT TITLE 

160CALL(3,A(0)) 

16SRF.M" WE'RE DONE 

170STOP 

S00REM" THIS SUB. WILL DRAW A SET OF AXIS 

505LKTX-1 

510LETY-7 

S20LETC*173 

S30CALL(1,X,Y,C) 

540LETX-X+1 

550IFXX65THEN530 

560LETX=31 

S70I.ETY=1 

S7SI.ETC*=252 

580CALL(1,X,Y,C) 

590LETY-Y+1 

600IFYX17THENS80 

610RETURN 

1000REM" GIVEN X THIS SUB. CALCULATES (17/900)*X**2-8 
1003REM" FIRST CHECK IF X*=0 AS IT WILL UPSET FLT. PNT. PACK. 
1010IFX-0THEN1045 

1015REM" WE'RE OK - CALCULATE FUNCTION 

10?0LETY=X*X 

10?3LETK=17/900 

1030LETY=Y*K 

1035LETY«=Y-fi 

1040RETURN 

104SLET'Y=-8 

1050RETURN 

2000END 

READY 


Assembly-language program 

limn 

macko assembler ver 2 2 errors - e page i 


.•DEFINE EXTERNALS 


014012 




FIX 

EOU 

140120 


;FIX ROUTINE 

013212 




COPDH 

EQU 

132120 


{COPY ROUTINE 

016567 




FREG1 

EOU 

165670 


.•FLOATING PNT REGISTER 

016614 





ORG 

166140 



016614 

027 

036 



DW 

SBEND 


jFWAM 





}ENTRIES 

IN SUB 

TABLE 



016616 

001 




DB 

1 



016617 

233 

035 



DW 

SCOPE 



010621 

602 




DB 

2 



016622 

334 

035 



DW 

SUB2 



016624 

00 3 




DB 

3 



016625 

364 

035 



DW 

SUB3 



016627 

004 




DB 

4 



016630 

003 

036 



DW 

SUB4 



016632 

377 




DB 

377Q 


;NO MORE ENTRYS 





;THE CALL TO THIS ROUTINE 

IS 

OF THE FORM 





• 

CALL (1 

X Y C) 







;THE VALUE OF C 

IS PLACED 

IN 

COLUMN X LINE Y 





{OF THE 

DISPLAY 




016633 

321 



SCOPE: 

POP 

D 


;ADDRESS OF CHARACTER 

016634 

041 

167 

035 


LX1 

H FREG1 


•COPY TO FREG1 

016637 

315 

212 

026 


CALL 

COPDH 



016642 

353 




XCHG 



{ADDRESS TO DE 

016643 

315 

012 

030 


CALL 

FIX 


}FIX IT 

016646 

023 




1 NX 

D 


j PNT TO 4TH BYTE 

016647 

023 




1NX 

D 



016650 

023 




INX 

D 



016051 

032 




LDAX 

D 


{GET CHARACTER 

016652 

107 




MOV 

B A 


;SAVE IN B 

016653 

321 




POP 

D 


;ROW ADD 


016654 

041 

167 

035 


LXI 

H FREG1 

{COPY TO FREG1 

016657 

315 

212 

026 


CALL 

COPDH 


016662 

353 




XCIIG 



016663 

315 

012 

030 


CALL 

FIX 

{FIX IT 

016666 

023 




INX 

D 

jGET BYTE 4 TO A 

016667 

023 




INX 

D 


016670 

023 




INX 

D 


016671 

032 




LDAX 

D 


016672 

117 




MOV 

C A 

{SAVE IN C 

016673 

321 




POP 

D 

{GET COLUMN ADD 

016674 

041 

167 

035 


LXI 

H FREG1 

{COPY TO FREG1 

016677 

315 

212 

026 


CALL 

COPDH 


016702 

353 




XCHG 



016703 

315 

012 

030 


CALL 

FIX 

;FIX IT 

016706 

023 




INX 

D 

;PNT TO 4TH BYTE 

016707 

023 




INX 

D 


016710 

023 




INX 

D 


016711 

032 




LDAX 

D 

{GET IT TO A 

016712 

041 

377 

273 


LXI 

H 1357770 

.•CALCULATION OF ADDRESS 

016715 

021 

100 

000 


LXI 

D 100Q 


016720 

015 



LUP: 

OCR 

C 


016721 

312 

330 

035 


JZ 

ADINC 


016724 

031 




DAD 

D 


016725 

303 

320 

035 


JMP 

LUP 


016730 

137 



ADINC: 

MOV 

E A 


01631 

031 




DAD 

D 

;ADD IN COLUMN LOC 

016732 

160 




MOV 

M B 

;STORE CHARACTER 

016733 

311 




RET 


; DONE 





; SUB2 

READS A TITLE FROM TTY 

VIA ODT 

000333 




HEAD' 

LOU 

3330 

;ODT ROUTINE 

016734 

341 



SUB2 : 

POP 

H 

;GET STORAGE AREA ADD 

016735 

345 




PUSH 

H 


016736 

016 

000 



MV I 

C 0 

jINIT CNTR 

016740 

043 



LUP2: 

INX 

H 

; BUMP PNTR 

016741 

315 

333 

000 


CALL 

READ 

;READ A CHARACTER 

016744 

376 

215 



CPI 

2150 

jCR? 

016746 

312 

356 

035 


JZ 

DUN 2 

;YES - DONE 

016751 

014 




INR 

C 

; INCR CNT 

016752 

167 




MOV 

M A 

;SAVE CHARACTER 

016753 

303 

340 

035 


JMP 

LUP2 


016756 

341 



DUN2: 

POP 

H 

{STORE CNT 

016757 

161 




MOV 

M C 


016760 

076 

212 



MV1 

A 2120 

{SEND A LF 

016762 

367 




RST 

6 


016763 

311 




RET 


{DONE 





; SU33 

WRITES TITLE TO DISPLAY 

016764 

341 



SUB3: 

POP 

H 

{GET ADD 

016765 

021 

341 

277 


LXI 

D 1377410 

{SCREEN ADD 

016770 

116 




MOV 

C M 

{CNT 

016771 

043 




INX 

H 


616772 

176 



LUP3: 

MOV 

A M 

{SEND STRING 

016773 

022 




STAX 

D 


016774 

043 




INX 

H 


016775 

023 




INX 

D 


016776 

015 




DCR 

C 


016777 

302 

372 

035 


JNZ 

LUP3 


017002 

311 




RET 


{DONE 





; SUB4 

CLEARS SCREEN 


017003 

041 

0U0 

274 

SUB4: 

LXI 

H 1360000 

{SCREEN ADD 

017006 

076 

240 



MV 1 

A 2400 

{SPACE 

017010 

026 

000 



MV 1 

D 0 

{CNTR S 

017012 

016 

004 



MV 1 

C 4 


017014 

167 



LUP4: 

MOV 

M A 

{CLEAR IT 

017015 

043 




INX 

H 


017016 

025 




DCR 

D 


017017 

302 

014 

036 


JNZ 

LUP4 


017022 

015 




DCR 

C 


017023 

302 

014 

036 


JNZ 

LUP4 


017020 

311 




RET 


{DONE 

017027 




SBEND 

EOU 

$ 







END 



NO PROGRAM 

LRkORS 







SYMBOL TABLE 

• 01 


A 

00 00 0 7 

ADINC 

016730 

B 

000000 

C 

000001 

COPDH 

013212 

D 

000002 

DUN2 

016756 

E 

000003 

FIX 

014012 

FREGl 

016567 

H 

000004 

L 

000005 

LUP 

010720 

LUP2 

016740 

LUP3 

016772 

LUP4 

017014 

M 

000006 

PSW 

000006 

READ 

000333 

SBEND 

017027 

SCOPE 

SUB4 

016633 

017003 

SP 

000006 

SUB2 

016734 

SUB3 

016764 


X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

XX 

XX 

XX 

XX 

XX 

XX 

X 

X 

XX 

XX 

XX 

XX 

XX 

XX 

XXX 

XXX 

XXXXXXX 

XXXXXXX 


MCS80 BASIC interpreter 

Display output for 

preceding prwgram. 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


22 






Appendix B: Description of Basic Interpreter EVAL 

Following is a brief description of the BASIC interpreter. 

Hopefully, with this description, it will not be a major project 
to modify the BASIC to satisfy the reader’s specific needs. 

Formats 

Source statements are stripped of blanks on input (character 
strings enclosed in “ ”s are an exception) and stored as is in 
memory, using the following format: FINPT 

Binary equivalent Length of ASCII 

of line no. source statement 


Forward pointer ASCII source statement 

to next sequential 

line 


The forward pointer links statements by ascending line num¬ 
bers. The last line’s forward pointer (supposedly an end state¬ 
ment) has value 177777s to indicate end of the list. 

The symbol table is built up at run time and begins after 
the most recently entered source statement (the variable 
STSPAC points to where the symbol table will start). Symbol 
table entries are shown below. 

Scalar-variable format 



Variable name 


Forward pointer 


Variable value 


Bin f-ASCIl 
letter 


Bin r-i 


3 


Array Forward 

name pointer 


Arrny-vnrinblc format 


Array elements 


Subroutines 

Following is a list of potentially useful subroutines, with a 
brief description on each subroutine: 

ALPHA - Value pointed to by Hand L is tested to 

see if it is an ASCII letter. CY = 1 => Yes 


NUMB 

CHAR2 

CHAR5 

CHK1 


CY = 0 => No 

Same as above but tests for a decimal 
number (ASCII 0-9). 

Inputs a character from the teletype to a 
register. 

Same as above for HSR. 

Checks to see if HL are equal to 177777s 
(-1). CY = 1 => Yes. 

CY = 0 => No. 


CONV (CURT) 

COPDH 

COPY 

CUB 

DCOMP 

DFXL 


One of the floating-point routines. Con¬ 
verts floating-point number to a character 
string. Output is padded to the output 
buffer. 

Copies floating-point number pointed to 
by D,E to location pointed to by H,L; 
uses copy. 

One of the floating-point routines. Copies 
floating-point value pointed to by A,L to 
location pointed to by H,C. 

Converts the integer-character string 
pointed to by H,L to its binary equivalent. 
Value returns in D,E registers. 

Double-byte comparison routine. Com¬ 
pares value in CB to the in ED. 


Z= 1 

=> 

CB = ED 

CY = 1 

=> 

CB > ED 

CY = 0 

=> 

CB > ED. 


One of the floating-point routines. Used 
to float an unsigned integer H,L point to 
First of four bytes; integer is right justi¬ 
fied in first three bytes. 


FIX 


FSYM 


LADD 

LSUB 

LOIU 

LMUL 

LMCM 


MCHK 

MEMFUL 


MULT 

NSRCH 

OUTR 

PAD 

SYMSRT 


Evaluates an expression the first element 
of which is pointed to by H,L and the 
length of which is in C. Used to evaluate 
expressions wherever they are legal in 
BASIC. C usually contains the length of 
the source statement line containing the 
expression. 

One of the floating-point routines. Con¬ 
verts character string to floating-point 
number. The variable HLINP contains a 
pointer to the character string, and the 
variable CREG contains the length of line 
containing character string. Mode = 0 = > 
data comes from teletype (i.e., only de¬ 
limiters are g’s). Mode = 1 => data comes 
from source statements. 

Fixes a floating-point number. DE points 
to number to be fixed. Error code 13 is 
given if number is too big to fix. 

Finds symbols in symbol table. BC con¬ 
tains symbol. Returns with HL pointing 
to symbol value. CY = 1 => symbol was 
found. CY = 0 and a scalar => symbol 
not found, but inserted and initialized to 
0. CY = 0 and an array => not found, no 
action taken: HL are meaningless. 
Floating-point add routine. 

Floating-point subtract routine. 
Floating-point divide routine. 
Floating-point multiply routine. 

One of the floating-point routines. Com¬ 
pares two floating-point values HL Point 
to first 

HB point to second 

z = 1 => Equality 

CY = 1 = > first < second 

(Note: compares absolute only, does not 

reference mantissa sign.) 

Waits for flag from port 3. Proper mask 
is sent in register B. 

Checks to see if memory is full. HL point 
to location of memory to be checked. 
Memory is considered full if it is within 
50| o locations of the current value of stack 
pointer. 

Multiplies two two-byte binary numbers. 
HL point to last byte of four bytes. First 
two contain first number. Last two con¬ 
tain second number. Answer returns in 
BCDE. 

Routine to locate source line in memory 
passed binary value of line number in DE. 
Returns address of line in HL, CY = 1 => 
not found. 

Used by CONV (CURT) to pad output to 
output buffer. 

Pads characters to output buffer. A con¬ 
tains character; B contains number of 
pads. 

Checks a character string to see if it is a 
BASIC symbol. HL contains address 
pointing to first character of symbol, C 
contains length of line that contains sym¬ 
bol. A contains type of symbol sought. 

0 = command 1 = keyword 

z = operator or delimiter 3 = function 
Returns with 377s in a register if 
nothing found. Otherwise A contains 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 13 


23 



symbol number in appropriate KDAT 
table. Thus, for symbol type 2, if a 4 is 
returned, the symbol found was the fourth 
one (starting with 0) in table KDAT3 
(KDAT concatenated with 2 and 1 or A). 
CIS is updated, but HL is not. 

TTYIW - Inputs a line from teletype. Stores start¬ 

ing at location pointed to by HL. Line 
edits. Returns length of line in A register 
(maximum line length is 72 characters). 
VALUE - Called with HL pointing to a variable, 

constant, or function; C contains line 
length, returns with DE pointing to float¬ 
ing-point value. HL, C are updated. 

VAR - Called with HL pointing to character 

string, C has line length. Determines if 
character string is a variable. If so, returns 
with CY = 1, DE pointing to value (sub¬ 
scripts of arrays are evaluated, etc.). HL, 

C updated. If not, a variable returns CY = 
0, HL, C untouched. 

WRIT - Dumps contents of output buffer to tele¬ 

type. Uses entry WRIT1 with D register 
equal to one to suppress CR/LF. 

ZROL - Part of floating-point subroutines. Writes 

a floating-point zero, starting at location 
pointed to by HL. 

The preceding list contains those subroutines most likely to 
be used by someone modifying BASIC. If you plan on using 
one of the routines, you should examine it and its comments 
carefully. 

Variables 

Following is a list of interpreter variables, with a description 
of each variable. 

MEMST - Assembly time variable. Contains the 

first available RAM location. This is where 
active variables start. 

MEMEND - Assembly time variable. Contains the last 

available location in RAM 

SEND - Has value 6, used with RST instruction to 

print characters via ODT. 

OBUFF - Output buffer, the first location contains 

the number of characters in the buffer +1. 
IBUF - Input buffer, occupies same area as 

OBUFF. 

STLINE - Points to first source line to be executed. 

If no source, contains 111111%. 

NLINE, NLZ, - Contain address, binary-equivalent line 
NL4, NL6 number, forward pointer, and length of 

next input line. 

KLINE, KL2, - Same as above, but used by a subroutine 
KL4, KL6 that inserts lines in sequential order 

(insert). 

PLINE, PL2, - Subroutine insert to order statements 
PL4, PL6 sequentially. 

KASE, LEN - Temporary storage for commandmode 
routines. 

MULTI, MULT2 - Used to store binary values to be multi¬ 
plied. 

SBSAV - Temporary storage for commandmode 

routines. 

STSPAC - Next available location in memory, sym¬ 

bol table starts here at run time. 

LPNT - Pointer to the current line at run time. 

CPNT - Pointer to current character in current line 

at run time. 

KFPNT - Point to next sequential line at run time. 

FREG1,FREG2 - Two floating-point registers. 


- Temporary storage for HL and C registers 
for routine INP. 

- Pointer to next available space of memory 
for symbol table. 

- General register, in and out instructions 
are stored here and executed for get and 
put functions. 

MODE - Indicates to INP routine whether input 

data comes from source or teletype. 
MESCR - Temporary storage for call-statement 

processor. Points to next available space 
after symbol table. Area after the symbol 
table is used to store intermediate results 
of expressions or constants passed to user 
subroutines. 

VARAD - Temporary storage space for input-state¬ 

ment processor. 

VEND - Assembly time variable. Indicates end of 

interpreter variable-storage area and where 
FWAM pointer is to go. 

FWAM - First word of available memory pointer. 

This is where user source programs go. 

Some of the above variables occupy the same area of mem¬ 
ory. This is because some variables are used only in the com¬ 
mand mode and others only at runtime. To conserve space, 
they share the same memory locations. 

New Statements 

To add additional statements to the BASIC, use the follow¬ 
ing procedure. First, insert the statement keyword in the data 
tables for subroutine SYMSRT. Then, insert the starting ad¬ 
dress of the statement processor in the interpreter JUMP table. 
Finally, the statement processor itself must be inserted. 

The keyword must be entered in the table KDAT2. The 
first byte must be the keyword length and the next bytes hold 
the ASCII-coded keyword. The table must end with a 211%. 

If the keyword is the Nth entry in the table, on return from 
SYMSRT, the A register will hold N-l if the keyword is found. 

The starting address of the statement processor must be in¬ 
serted into table JTBL. The order of keywords in KDAT2 
must correspond with statement processor addresses in JTBL 
since, on return from SYMSRT, the A register times two is 
used as offset in JTBL to determine processor address. 

The statement processor must be placed somewhere in 
memory. Generally, the first thing done in the statement 
processors is to load the pointer to the statement (LHLD 
CPNT) and increment past the keyword (since HL is not up¬ 
dated by SUMSRT). On entry, C contains the number of 
characters in the line minus those checked by SYMSRT. The 
end of the processor should be a “JMPIEND” instruction. 


New Functions 

New functions must be added to SYMSRT Data Table 
KDAT4 in the same manner as for key words. The function 
itself must be placed in subroutine “VALUE.” Presently, the 
only function in VALUE is GET. 


Message Lines 

The following description tells how to incorporate messages 
into B ASIC output routines. Currently, to output a message 
to the teletype, the user executes an LXI H,ODATA, then a 
call to FORMK where K is an integer indicating which message 
is wanted (i.e., K = z indicates “TURN ON PUNCH”). FORM 
pads the message into the output buffer. Then A “CALL 


HLINP, CREG 

NXTSP 

GREG 


Page 14 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


24 




WRIT” writes the contents of the fubber. 

Suppose the message “POTATO BASIC” is to be added. 
Preceding the form 9 instruction, we will insert “FORiO: INR 
L.” At the end of the ODATA table, we add “DB ODAT8 and 
377Q.”. And, after message ODAT 7, we add ODAT8 DB *12, 
“POTATO BASIC.” Now, the following program segment: 

LXI H,ODATA 
CALL FORIO 
CALL WRIT, 

will cause “POTATO BASIC” to be output to the teletype. 

Complete Assembled, Annotated Source Code Begins on 
Next Page 

*12 is the character count in the message. 

FIRST JAPANESE COMPUTER CLUB & A WORLD¬ 
WIDE CONTEST 

Japan has been slow to enter the microcomputer hobby; 
however, it looks as though the dam is breaking: there is now 
now a Japan Microcomputer Club (address: The 1st Ohkura 
Building 4F, 2-1 Nihonbashi, Chou-ku, Tokyo, Japan). At 
the Mini/Micro Exposition in San Francisco we picked up 
the first issue of their newsletter (translated from Japanese) 
dated October, 1976. They already have a significant organi¬ 
zational and administrative structure that includes club offi¬ 
cers associated with the University of Tokyo, Intel Japan, 
Waseda University, Keio University, Seikei University, SORD 
Company, Tokyo Institute of Technology, the University of 
Gifu, Hosei University, Nippon Tel & Tel, and JIPDEC . . . 
as well as other organizations, less well known in the U.S. 
They are having almost weekly symposia this fall, including 
speakers from NEC, TDK Fairchild, Toshiba, Fjuitsu, Hit¬ 
achi, Intel Japan, Mitsubishi, and other Japanese microproces¬ 
sor manufacturers. 

The back page of their “Micro Computer News” men¬ 
tions a microcomputers application contest: “For develop¬ 
ing techniques, directing a spotlight on to unknown talents, 
and encouraging new ideas, we are planning a contest in 
March, 1977. Anyone in the world can be an entrant. 
Subscription should be sent not later than February, 1977. 

No only winners but also all the entrants will have mar¬ 
velous prizes!” 

Another interesting tidbit is that one of the Club’s 
General Council Members, Hidetoshi Takahashi, was part 
of the JIPDEC Microprocessor Study Team which visited 
People’s Computer Company last spring [see DDJ, May 
1976]. 


Many computer hobbyists are either neophytes or "software 
people who may have mad little or no experience in the care and 
feeding of LSI hardware. When their JOLT, KIM, or POLY breaks 
a leg they either ship it back to the factory, tote it to the nearest 
computer store, or shoot it. There is, however, a book that should 
be quite helpful in providing a basic understanding of digital 
troubleshooting techniques. This is Richard E. Gasperini's Digital 
Troubleshooting, available for $9.95 from the Hayden Book Co., 

50 Essex St., Rochelle Park, NJ 07662. 

This book introduces the reader to the fundamentals of bipolar 
and MOS technology, explains how to read logic diagrams, and dis¬ 
cusses basic tools and diagnostic methods. It then covers the use 
of common digital circuits such as decoders, multiplexers, flip-flops, 
buffers, counters, and shift registers. The book does assume some 
prior knowledge of electronics, but not of digital circuitry. It dis¬ 
cusses the use of memory and display devices, and gives many useful 
tips on soldering and unsoldering ICs, obtaining replacement parts, 
etc. Chapter 18 contains some good suggestions on obtaining addi¬ 
tional information, and an appendix explains how to interpret manu¬ 
facturer's part numbers, such as SN74LS195N. 

Jim Day 


FLOPPY DISC SYSTEM(S?) FOR 
NON-HARDWARE TYPES 

Dear Jim, Dec. 22, 1976 

A few weeks ago I called you seeking advice for a client. 
They were interested in acquiring a microcomputer with dual 
floppies that had a good BASIC and text editing capabilities. 
Sounds easy so far. The only hook was that the system was 
to be used by non-professionals in a non-technical environ¬ 
ment with no hardware types around and only BASIC pro¬ 
grams available. 

After talking to you, I sought advice from a few others, as 
well. I was surprised at the result ... if my clients want to 
buy today, there appears to be only one professional quality 
(non-hobby) system that fits their needs. That is the DTC 
Microfile. All other possibilities are in various stages of 
“development,” “testing,” “debugging” or are too new to 
have any track record. Microfile has been installed in the U.S. 
and abroad and appears to be a proven system. It’s easy to use 
and beginners, with a little training, can easily use the text 
editor. 

I assume that more users like my clients exist, and I assume 
that more vendors will attempt to match what DTC has already 
done or improve on it. How about you guys (vendors) keeping 
us informed as the systems come on the market. 

Sincerely, 

LeRoy Finkel 

CACHE SURVEY 

Results of a survey of the members of CACHE (Chicago 
Area Computer Hobby Enthusiasts) taken at the September 
meeting. 

♦ How many members have an 8080 or Z80 computer 
“up & running” as of this date? 37 members. 

♦ How many members have a system “up & running” 
with any other CPU? 16 members. 

♦ Of those with 8080’s, how much contiguous memory 
is currently available for applications program (RAM)? 

Greater than 0 but less than IK: 1 member 

Greater than or equal to 1 but less than 2K: 2 

Greater than or equal to 2 but less than 4K: 1 

Greater than or equal to 4 but less than 8K: 7 

Greater than or equal to 8 but less than 12K: 11 

Greater than or equal to 12 but less than 16K: 6 

Greater than or equal to 16 but less than 24K: 4 

Greater than or equal to 24 but less than 32K: 5 

Greater than or equal to 32 but less than 64K: 0 

♦ Of those with 8080’s, how many members do not have 
Page 0 available for applications programs? 1 member. 

♦ Of those with 8080’s, how many have a terminal device 
“up & running” through parallel I/O ports (no software 
UARTS)? 16 members. 

♦ Of those above, how many know how to write I/O 
drivers for their terminal? All 16 members knew how. 

♦ Of those above, how many can use an I/O driver of 
the form below? 


GET: 

IN 

TIRP 


ANI 

TIRM 


J(N)Z 

GET 


IN 

TIDP 


ANI 

RET 

177Q 

PUT: 

PUSH 

PSW 

PUT1: 

IN 

TORP 


ANI 

TORM 


J(N)Z 

PUT1 


POP 

PSW 


OUT 

RET 

TODP 


All 16 members could. 


BOOK ON DIGITAL TROUBLESHOOTING 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 15 


25 




fl'tOOilQ 




MEMST 

EQU 

30000Q 

MUST BE ON PAGE BOUNDARY 

Uv y'.'V'y 

037777 




MEMEND 

EQU 

37777Q 


000005 




SEND 

EQU 

6 

RST FOR OOT 

030000 




CBUFF 

EQU 

MEMST 

INPUT AND OUTPUT BUFFERS OCCUPY 

030001 




I BUF 

EQU 

MEMST *1 

SAME AREA 

030111 




STL!NE 

EQU 

MEMST *1110 


030113 




NLINE 

EOU 

MEMST + 113Q 


030113 




NL2 

EQU 

MEMST♦115Q 


030117 




NL4 

EQU 

MEMST♦117Q 


030121 




NL 6 

EQU 

MEMST*1 21 Q 


030122 




KLINE 

EQU 

MEMST *122Q 


030124 




KL2 

EQU 

MEMST*124Q 


030i26 




KL4 

EQU 

MEI-IST+ 126Q 


030130 




KL 6 

EQU 

MEMST*130Q 


030131 




PL 1 NE 

EQU 

MEMST♦131Q 


030133 




PL2 

EQU 

MEMST*133Q 


030135 




PL4 

EQU 

MEMST*135Q 


030135 




S3SAV 

EQU 

PL4 

RETURN ADD. SAVE FOR CALL STMT. 

030137 




PL 6 

EQU 

MEMST♦137Q 


030140 




KASE 

EQU 

MEMST*140Q 


030141 




LEN 

EQU 

MEMST*141Q 


030142 




MULTI 

EQU 

MEMST*142Q 


030’44 




MULT2 

EQU 

MEMST +144Q 


030131 




NXTSP 

EQU 

MEMST*131Q 


030'13 




STSPAC 

EQU 

MEMST*113Q 


007707 




NORM 

EQU 

7707Q 


007712 




FLOAT 

EQU 

771 2Q 


007715 




ZROL 

EQU 

771 5Q 


030122 




LPNT 

EQU 

MEMST*122Q 


030 I 30 




KLEN 

EQU 

MEMST*130Q 


U30i33 




CPNT 

EQU 

MEMST*133Q 


030126 




KFPNT 

EQU 

MEMST*126Q 


030200 




FREG2 

EQU 

MEMST + 200Q 


030204 




CREG 

EOU 

MEMST + 204Q 


007720 




LADD 

EQU 

7720Q 


007723 




LMUL 

EQU 

7723Q 


007726 




LDI V 

EQU 

7726Q 


007731 




LSUB 

EQU 

7731 Q 


007734 




OFXL 

EQU 

7734Q 


007737 




LMCM 

EQU 

7737Q 


030206 




HLI NP 

EQU 

MEMST + 2060 


030167 




GREG 

EQU 

MEMST*167Q 


030174 




FREG1 

EQU 

MEMST*174Q 


030146 




SCR 

EQU 

MEMST +146Q 


007745 




CCNV 

EQU 

7745Q 


030205 




MODE 

EQU 

MEMST + 205Q 


007750 




FINPT 

EQU 

7750Q 


007753 




MULT 

EQU 

7753Q 


007756 




PT'VAL 

EOU 

7756Q 


007761 




DCGMP 

EQU 

7761Q 


007754 




MCHK 

EQU 

7764Q 


007767 




CHAR2 

EQU 

7767Q 


030210 




MESCR 

EQU 

MEMST + 21OQ 

DEFINE MEMORY SCR AREA PNTR 

030212 




VARAD 

EQU 

MEMST + 212Q 

TEMP SPACE FOR INP. STMT. 

030214 




VNAME 

EOU 

MEMST *214Q 

TEMP SPACE FOR 'FOR-NEXT' 

030216 




VLCC 

EQU 

MEMST + 216Q 

TEMP SPACE FOR 'FOR-NEXT' 

030220 




FLINT 

EQU 

MEMST + 220Q 

TEMP SPACE FOR 'FOR-NEXT' 

030224 




NEST 

EQU 

MEMST + 224Q 

NESTING STACK-POINTER 

030226 




STAC 

EQU 

MEMST+226Q 

FOR-NEXT NESTING STACK 

000024 




STSIZ 

SET 

20 

STACK SI ZE.ALLOWS 10 NESTED FOR- 

030226 




TOPNS 

EQU 

STAC 

TOP OF STACK NEXT 

030252 




BOTNS 

EQU 

STAC+STS!Z 

BOTTOM OF STACK 

030252 




VEND 

EQU 

MEMST + 252Q 

DEF END OF VAR. STORAGE AREA 





; MAIN 

ROUTINE- 

-HANDLES ALL USER INPUT 

010000 





ORG 

1 OOOOQ 


010000 

041 

000 

060 

Ml : 

LX I 

H.OBUFF 


010003 

066 

001 



MV 1 

M. 1 


010005 

041 

111 

060 


LX t 

H, STLlNE 


010010 

066 

377 



MV 1 

M, 377Q 


010012 

054 




I NR 

L 


010013 

066 

377 



MV I 

M,377Q 


010015 

052 

320 

03 7 


LHLD 

FWAM 

GET ADDRES OF FWA MEM. 

010020 

042 

1 1 3 

060 


SHLD 

NLINE 

STORE IN FREE SPACE PNTR. 

010023 

061 

377 

07 7 

MIA: 

LX I 

SP, MEMEND 


010026 

041 

132 

024 

M2: 

LX I 

H,ODATA 


010031 

31 5 

1 1 0 

024 


CALL 

F0RM1 


010034 

315 

320 

022 


CALL 

WRIT 


0i0007 

052 

1 1 3 

060 

M3: 

LHLD 

NLINE 


010042 

043 




1 NX 

H 


0100 13 

013 




I NX 

H 


010044 

043 




I NX 

H 


010045 

043 




I NX 

H 


010046 

043 




I NX 

H 


010047 

315 

31 1 

023 


CALL 

TTYIN 


010052 

1 1 7 




MOV 

C, A 


010053 

376 

000 



CPI 

0 


010055 

312 

03 7 

020 


JZ 

M3 


010000 

315 

0^2 

022 


CALL 

ALPHA 


Oi0063 

332 

102 

020 


JC 

M4 


010063 

315 

024 

022 


CALL 

NUMB 


010071 

304 

236 

021 


CNC 

WHAT 


010074 

3 T 5 

217 

020 


CALL 

INSERT 


01007? 

303 

037 

020 


JMP 

M3 



Page 16 


26 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 




010|02 

070 

000 


M4: 

MVI 

A, 0 

010i04 

315 

367 

022 


CALL 

SYMSRT 

01Oi07 

074 



M4A: 

INR 

A 

01 Oi10 

314 

236 

021 


CZ 

WHAT 

010113 

075 




OCR 

A 

01 01 1 <1 

312 

1 73 

026 


JZ 

RUN 

010117 

075 




OCR 

A 

010120 

314 

252 

021 


CZ 

TAPE 

010123 

312 

026 

020 


JZ 

M2 

010126 

075 




DCR 

A 

010127 

314 

321 

021 


CZ 

LIST 

010132 

312 

026 

020 


JZ 

M2 

010135 

075 




DCR 

A 

010136 

312 

000 

020 


JZ 

Ml 

010141 

075 




DCR 

A 

010142 

304 

236 

021 


CNZ 

WHAT 





; ROUTINE 

TO INPUT FROM HSR 

010145 

315 

010 

025 

PTAPE: 

CALL 

CHAR5 

Oi0150 

376 

000 



CPI 

0 

010152 

312 

1 45 

020 


JZ 

PTAPE 

010'55 

315 

325 

024 

PT1 : 

CALL 

HSR I N 

010160 

1 1 7 




MOV 

C, A 

01oici 

376 

000 



CPI 

0 

010163 

312 

1 45 

020 


JZ 

PTAPE 

010i63 

315 

042 

022 


CALL 

ALPHA 

010171 

332 

r 02 

020 


JC 

M4 

010174 

315 

217 

020 


CALL 

INSERT 

010177 

315 

010 

025 


CALL 

CHAR5 

010202 

376 

000 



CPI 

0 

010204 

312 

026 

020 


JZ 

M2 

010207 

043 




I NX 

H 

010210 

043 




I NX 

H 

010211 

043 




I NX 

H 

010212 

043 




I NX 

H 

010213 

043 




I NX 

H 

010214 

303 

1 55 

020 


JMP 

PT1 





: ROUTINE 

TO HANDLE ALL SOURCE LINE INPUT 





: THIS INCLUDES 

INSERTION, DELEATI ON, AND 





: ADDITION CF NEW SOURCE LINES. 

010217 

053 



INSERT: 

OCX 

H 

010220 

161 




MOV 

M,C 

010221 

043 




I NX 

H 

010222 

315 

352 

022 


CALL 

CVB 

010225 

376 

005 



CPI 

5 

010227 

332 

242 

020 


JC 

I SRI A 

010232 

304 

236 

021 


CNZ 

WHAT 

010235 

1 73 




MOV 

A.E 

010236 

027 




RAL 


010237 

334 

?36 

021 


CC 

WHAT 

010242 

052 

1 1 3 

060 

ISR1A: 

LHLD 

NLINE 

010245 

1 62 




MOV 

M.D 

010245 

043 




I NX 

H 

010247 

163 




MOV 

M, E 

010250 

041 

1 1 3 

060 


LX I 

H,NLINE 

010253 

315 

356 

01 7 


CALL 

PTVAL 

010256 

052 

1 1 1 

060 


LHLD 

STLINE 

010261 

315 

243 

022 


CALL 

CHK1 

010264 

322 

324 

020 


JNC 

ISRT3 

010267 

052 

1 1 3 

060 


LHLD 

NLINE 

010272 

042 

1 1 1 

060 


SHLD 

STLINE 

010275 

026 

377 


ISRT1: 

MV I 

D, 3770 

010277 

1 32 




MOV 

E, D 

010300 

31 5 

213 

021 


CALL 

STPNT 

010303 

043 




I NX 

H 

010304 

1 76 



ISRT2: 

MOV 

A.M 

010305 

306 

005 



ADI 

5 

010307 

052 

1 1 3 

060 


LHLD 

NLINE 

010312 

205 




ADD 

L 

010313 

157 




MOV 

L, A 

010314 

076 

000 



MV 1 

A.O 

010316 

21 4 




ADC 

H 

010217 

1 47 




MOV 

H, A 

010320 

042 

1 1 3 

060 


SHLO 

NLINE 

010323 

31 1 




RET 


010324 

042 

1 22 

060 

ISRT3: 

SHLD 

KLINE 

010327 

041 

1 22 

060 

ISRT4: 

LX I 

H,KLINE 

010332 

315 

366 

01 7 


CALL 

PTVAL 

010335 

041 

1 15 

060 


LX I 

H, NL2 

010340 

1 26 




MOV 

D,M 

010241 

054 




INR 

L 

010342 

1 36 




MOV 

E, M 

010343 

041 

1 24 

060 


LX I 

H, KL2 

010345 

106 




MOV 

B.M 

010347 

054 




I NR 

L 

010350 

1 1 6 




MOV 

C, M 

010351 

31 5 

361 

01 7 


CALL 

DCOMP 

010354 

31 2 

041 

021 


JZ 

I SRT6 

010357 

332 

1 72 

021 


JC 

I SRI 2 

010262 

052 

1 26 

060 


LHLD 

KL4 

010365 

31 5 

243 

022 


CALL 

CHK1 

010370 

332 

31 7 

021 


JC 

ISRT5 

010373 

345 




PUSH 

H 

010274 

052 

1 22 

060 


LHLD 

KLINE 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 17 


27 



/ 


010377 

042 

131 

060 


SHLD 

PLI NE 

01 040.2 

041 

131 

060 


LX I 

H,PLINE 

010435 

315 

356 

01 7 


CALL 

PTVAL 

010410 

341 




POP 

H 

010411 

042 

122 

060 


SHLD 

KLINE 

01C414 

303 

327 

020 


JMP 

1SRT4 

010417 

05? 

1 13 

060 

ISRT5: 

LHLD 

NLI NE 

010422 

315 

221 

021 


CALL 

NOLINE 

010425 

310 




RZ 


010425 

353 




XCHG 


010427 

052 

122 

060 


LHLD 

KLINE 

010432 

315 

213 

021 


CALL 

STPNT 

010435 

353 




XCHG 


010436 

303 

27 5 

020 


JMP 

1SRT1 

010441 

052 

1 1 3 

060 

ISRT6: 

LHLD 

NLINE 

010444 

315 

221 

021 


CALL 

NOLINE 

010447 

302 

1 10 

021 


JNZ 

ISRT8 

81845! 

052 

353 

1 1 1 

060 


xch8 

STL INE 

010456 

052 

1?2 

060 


LHLD 

KLINE 

01 0461 

345 




PUSH 

H 

010462 

301 




POP 

B 

010463 

31 5 

361 

01 7 


CALL 

DCOMP 

010466 

052 

126 

060 


LHLD 

KL4 

010471 

312 

104 

021 


JZ 

ISRT7 

010474 

353 




XCHG 


010475 

052 

131 

060 


LHLD 

PLINE 

010500 

315 

213 

021 


CALL 

STPNT 

010603 

31 1 




RET 

010504 

042 

1 1 1 

060 

ISRT7: 

SHLD 

STLINE 

010507 

31 1 




RET 


010510 

052 

1 26 

060 

ISRT8: 

LHLD 

KL4 

010513 

353 




XCHG 


010514 

052 

1 1 3 

060 


LHLD 

NLINE 

010517 

315 

213 

021 


CALL 

STPNT 

010522 

052 

i 22 

060 

ISRT9: 

LHLD 

KLINE 

010525 

353 




XCHG 


010525 

052 

1 1 1 

060 


LHLD 

STLINE 

010531 

345 




PUSH 

H 

010532 

301 




POP 

B 

010333 

315 

361 

01 7 


CALL 

DCOMP 

010536 

312 

161 

021 


JZ 

1 SR 1 1 

010541 

052 

1 1 3 

060 


LHLD 

NLINE 

010544 

353 




XCHG 


010545 

052 

131 

060 


LHLD 

PLINE 

010550 

315 

21 3 

021 


CALL 

STPNT 

010553 

04 1 

121 

060 

ISR10: 

LX I 

H. NL6 

010556 

303 

304 

020 


JMP 

ISRT2 

010551 

052 

1 1 3 

060 

I SR 11: 

LHLD 

NLINE 

010554 

042 

1 1 1 

060 


SHLD 

STLINE 

010567 

303 

1 53 

021 


JMP 

1 SRI 0 

010572 

052 

1 22 

060 

ISR12: 

LHLD 

KLINE 

010375 

353 




XCHG 


010575 

052 

1 1 3 

060 


LHLD 

NLINE 

010601 

315 

221 

021 


CALL 

NOLINE 

010604 

310 




RZ 


010605 

315 

213 

021 


CALL 

STPNT 

010610 

303 

122 

021 


JMP 

ISRT9 





: ROUTINE TO STORE POINTI 

010613 

043 



STPNT: 

I NX 

H 

010614 

043 




I NX 

H 

010615 

1 63 




MOV 

M, E 

010616 

043 




1 NX 

H 

010617 

1 62 




MOV 

M.O 

010620 

31 1 




RET 



010621 
010622 
010623 
010524 
010625 
010626 
010627 
010630 
01 0633 
010634 
010635 


010536 
010641 
010644 
010647 

010652 
010653 
010654 
010657 
010662 
010665 
010667 
010670 
010672 


345 
043 
043 
043 
043 
1 16 
043 
315 
341 
271 
31 1 


161 022 


041 132 024 
315 104 024 
315 320 022 
303 023 020 


365 

305 

041 

315 

315 

076 

301 

006 

365 


132 024 
107 024 
320 022 
000 

100 


; ROUTINE 
NOLINE: 


TO CHECK 
PUSH 
I NX 
I NX 
1 NX 
I NX 
MOV 
I NX 


; ROUTINE 
; COMMAND 
WHAT: 


: ROUTINE 
TAPE: 


CALL 
POP 
CMP 
RET 
TO RESPOND 


NEW LINE 
H 
H 
H 
H 
H 

C.M 

H 

LENGTH 

H 

C 


INTO MEM ARRAY 


FOR SOURCE STMT. 


WITH 'WHAT?' FOR UNIDENTIFIED 


LX I 
CALL 
CALL 
JMP 


H.ODATA 
F0RM7 
WRIT 
MIA 


TO PUNCH PAPER TAPE OF SOURCE. 


PUSH 
PUSH 
LX I 
CALL 
CALL 
MV I 
POP 
MV I 
PUSH 


PSW 
B 

H.ODATA 

F0RM2 

WRIT 

A. 0 
B 

B, 1OOQ 
PSW 


Page 18 


28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


010673 

305 



010574 

315 

255 

022 

0i0677 

315 

320 

022 

Oll'/O? 

301 



010703 

305 



010704 

3 1 5 

321 

021 

010707 

301 



010/10 

361 



010/11 

31 

255 

022 

010/14 

315 

320 

022 

010717 

361 



010/20 

31 1 



010721 

052 

1 1 1 

060 

010724 

315 

243 

022 

010727 

332 

023 

020 

010732 

042 

1 31 

060 

010735 

041 

377 

377 

010740 

042 

1 22 

060 

010743 

015 



010744 

304 

1 1 5 

025 

010747 

052 

131 

060 

010752 

043 



010753 

043 



010754 

1 06 



010755 

043 



010756 

116 



010757 

305 



010760 

043 



010761 

315 

1 1 1 

024 

010764 

315 

320 

022 

010767 

301 



Oi0770 

052 

1 22 

060 

010773 

353 



010774 

315 

361 

01 7 

010/77 

310 



011000 

150 



011001 

141 



011002 

315 

010 

022 

011005 

303 

352 

021 


011010 

333 

003 

011012 

037 


011013 

320 


011014 

333 

002 

011016 

376 

223 

011020 

312 

023 020 

011023 

31 1 



011024 

305 



011025 

006' 

260 


011027 

CIO 

272 


011031 

1 76 



01I032 

270 



011033 

077 



011034 

322 

040 

022 

011037 

271 



011040 

301 



011041 

31 1 



011042 

305 



011043 

006 

301 


011045 

CIO 

333 


011047 

303 

031 

022 


011052 

345 



011053 

305 



011054 

315 

161 

022 

011057 

365 



011060 

345 



011051 

376 

000 


011063 

312 

1 50 

022 

011006 

041 

1 40 

060 

011071 

1 67 



011072 

054 



011073 

161 



011074 

Oil 

012 

000 

011077 

042 

1 42 

060 

011102 

041 

000 

000 

011105 

042 

1 4 4 

060 

011110 

041 

1 45 

060 

011113 

315 

353 

017 

011116 

343 



011117 

1 76 



011120 

336 

260 


011122 

202 




PUSH 

B 

CALL 

PAD 

CALL 

WRIT 

POP 

B 

PUSH 

B 

CALL 

LIST 

POP 

B 

POP 

PSW 

CALL 

PAD 

CALL 

WRIT 


PSW 


ROUTINE TO LIST TO TTY THE SOURCE STMTS. 



CALL 

CHK1 



JC 

MIA 



SHLD 

PLINE 



LX 1 
SHLD 

H,1777770 

KLINE 



OCR 

C 



CNZ 

BOUND 



LHLD 

PLINE 


LISI: 

I NX 

H 



I NX 

H 



MOV 

B.M 



I NX 

H 



MOV 

C.M 



PUSH 

B 



I NX 

H 



CALL 

FORMS 



CALL 

WRIT 



POP 

B 



LHLD 

XCHG 

KLINE 



CALL 

RZ 

DCOMP 



MOV 

L.B 



MOV 

H.C 



CALL 

QUI TT 

;CHECK FOR INTERRUPTION 


JMP 

L I S1 

:NONE - CONTINUE 

:THIS ROUTINE CHECKS PORT 2 FOR 

A (iNTRL/S CHARACTER 

;IF ONE IS FOUND 

THEN EXECUTION 

IS TO BE INTERRUPTED 

:CONTROL 
OUITT: 

IS PASSED TO MIA 


IN 

3 

;TEST FLAG PORT 


RAR 


;FLAG TO CY 


RNC 


;NOTHING THERE 


IN 

2 

; FLAG WAS SET, GET DATA 

QTCHK: 

CPI 

223Q 

;WAS IT CNTRL/S? 


JZ 

MIA 

; YES 


RET 


;NO, RETURN 

: ROUTINES NUMB 

AND ALPHA CHECK 

IF CONTENTS OF MEMORY 

; LOCATION IN HL CONTAIN ASCII 

NUMERIC OR ALPHBETIC 

; CHARACTER. RETURN CY=1 IF YES, 

CY-0 IF NO. 

NUMB: 

PUSH 

B 



MV I 

B,260Q 



MV I 

C.272Q 


Cl: 

MOV 

A, M 



CMP 

B 



CMC 




JNC 

BAC 



CMP 

C 


BAC: 

POP 

B 



RET 



ALPHA: 

PUSH 

B 



MV I 

B,301Q 



MV I 

C.333Q 

Cl 



JMP 


: ROUTINE 

TO CONVERT ASCII NUMERIC CHAR. STRING TO 

: EQUIVALENT BINARY NUMBER. RETURNS EQUIVALENT IN 

: DE REG. 

LENGTH OF LINE PASSED 

IN REG C AND 

; RETURNED POINTING TO LAST NUMERIC CHAR. LENGTH 

: OF CHAR 
CVB: 

STRING 

RETURNED IN REG 

A. 

PUSH 

H 



PUSH 

B 



CALL 

LENGTH 



PUSH 

PSW 



PUSH 

H 



CPI 

0 



JZ 

CVB2 



LX I 

H.KASE 



MOV 

M, A 



■INR 

L 



MOV 

M.C 



LX I 

SHLD 

H. 10 

MULTI 



LX I 

H, 0 



SHLD 

MULT2 


CVB1 : 

LX I 

H,MULT2*1 


CALL 

XTHL 

MULT 




MOV 

A.M 



SB I 

260Q 



ADD 

D 



January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 19 


29 





/ 


0M123 
01 il 24 
011 1 35 
011127 
0I1K0 
011131 
011 132 
011133 
011134 
01 1 i 35 
011136 
0 1 1 1 4 1 
011142 
011113 
011141 
011145 
011150 
011151 
Oil i52 
011 53 

011156 
011157 
01 1 1 CO 


011161 
011162 
011163 
011165 
011170 
011173 
011174 
011175 
011176 
011201 
011204 
011205 
011206 
01 1 207 


011210 
011213 
011216 
011217 
011220 
011221 
011222 
011225 
011350 
011231 


127 

070 000 


011255 
011256 
011257 
01 1 260 
011263 
011264 
011265 
011255 
011270 
011271 
011274 
011275 
011276 
011601 
011602 
011303 
011304 
011305 
011310 
011311 
011312 


113 022 


MOV 

D. A 

MV 1 

A, 0 

ADC 

E 

MOV 

E, A 

I NX 
XTHL 

H 

MOV 

M,D 

I NR 

L 

MOV 

M,E 

PUSH 

H 

LX 1 

H, LEN 

DCR 

M 

DCR 

L 

DCR 

M 

POP 

H 

JNZ 

CVB1 

POP 

H 

POP 

PSW 

POP 

B 

LX I 

H, LEN 

MOV 

C, M 

POP 

RET 

H 


305 

645 

006 000 

515 024 022 

322 204 022 

043 

004 

015 

312 204 022 
303 165 022 


052 111 060 
315 243 022 
330 
106 
043 
1 16 

515 361 017 
312 240 022 


011232 

043 



I NX 

H 

011233 

1 46 



MOV 

H.M 

011234 

1 57 



MOV 

L, A 
L2 

011235 

303 

213 022 


JMP 

011240 

053 


FOUND: 

DCX 

H 

011241 

267 



ORA 

A 

011242 

31 1 



RET 





; ROUTINE 

TO COMPARE 




; RETURNS 

CY = 1 

IF YES 

011243 

305 


CHK.1 : 

PUSH 

B 

011244 

345 



PUSH 

H 

0 l 1 .34 5 

006 

000 


MV 1 

B.O 

011247 

016 

001 


MV I 

C, 1 

011251 

01 1 



DAD 

B 

0 1 i 

341 



POP 

H 

011253 

301 



POP 

B 

011254 

31 1 



RET 



; ROUTINE TO EVALUATE LENGTH OF ASCII NUMERIC 
; CHAR STRING: PASSED ADD OF FIRST CHAR IN HL REG. 

; RETURNS LENGTH IN REG A. 

LENGTH: PUSH B 

PUSH H 

MV I B.O 

NLE1: CALL NUMB 

JNC NLE2 

I NX H 

I NR B 

OCR C 

JZ NLE2 

JMP NLE1 

NLE2: MOV A,B 

POP H 

POP B 

RET 

; ROUTINE TO LOCATE SOURCE LINE IN MEM. PASSED BIN VALUE 
;OF LINE NUM3ER IN DEC LOW,HIGH) REG. RETURNS ADDRESS OF 
;SOURCE LINE IN HL REGS. (HIGH,LOW). CY SET = 0 NOT FOUND. 
NSRCH: LHLD STL INE 

L2: CALL CHK1 

MOV B,M 

S,M 

CALL DCOMP 

JZ FOUND 

I NX H 

MOV A.M 


NLE2: 


NSRCH: 
L2: 


305 

325 

345 

041 000 060 

1 1 5 
1 56 
127 

076 111 

275 

302 302 022 

151 

167 

315 320 022 


270 022 


ROUTINE TO FAD OUTPUT BUFFER WITH CONTENTS OF REG A. 

REG B CONTAINS NUMBER OF CHAR TO PAD. 

\D: PUSH B 

PUSH D 

L^pn H, OBUFF 
MOV C,L 

MOV L,M 

MOV D,A 

MV I A,73 

: CMP L 

JNZ P2 

MOV L,C 

MOV M.A 

CALL WRIT 

I NR L 

!: MOV M, D 

I NR L 

DCR B 

JNZ PI 

MOV A, 0 

MOV B,L 

MOV L.C 


Page 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


30 







011313 

1 60 



011314 

341 



011315 

321 



011316 

301 



011317 

31 1 



011320 

026 

000 


011322 

555 



011323 

345 



011324 

305 



011325 

041 

000 

060 

011330 

345 



011231 

116 



01i332 

015 



011333 

312 

360 

022 

011336 

054 



011337 

1 76 



011240 

367 



011041 

054 



011342 

015 



011343 

302 

33 7 

022 

011243 

025 



011347 

312 

360 

022 

Oli352 

076 

215 


011354 

367 



011255 

076 

212 


011357 

367 



011350 

341 



011361 

066 

001 


011363 

301 



011354 

341 



011365 

361 



011356 

31 1 




011367 

325 



011370 

305 



01 1371 

345 



01 1372 

345 



011373 

041 

141 

060 

011376 

161 



011377 

041 

1 13 

023 

011402 

036 

000 


011404 

205 



011405 

157 



011406 

1 56 



011407 

1 1 6 



011410 

054 



011411 

106 



011412 

343 



011413 

1 76 



011414 

270 



011415 

302 

043 

023 

011420 

015 



011421 

312 

077 

023 

011424 

345 



011425 

C 4 1 

141 

060 

011430 

'165 



011431 

341 



01 i 4 32 

212 

042 

02 3 

011435 

043 



011436 

343 



01 1437 

303 

0’ 0 

023 

01 1 4 i:7 

01 4 



0114 13 

341 



0!1444 

1 71 



0114 i5 

205 



0114 ;e 

1 24 



Oi1447 

241 



O’ 14 50 

201 



011431 

305 



O 1 1452 

245 



011453 

245 



011434 

ca i 

1 41 

060 

01 1 <-57 

161 



0114:0 

1 57 



01146! 

1 42 



011462 

1 76 



011463 

034 



011464 

1 1 7 



011465 

074 



01!466 

30p 

010 

023 

0114/1 

041 

141 

053 

011474 

C64 



011475 

036 

377 


011477 

1 73 



011500 

C 41 

1 4 1 

063 

011503 

1 36 



01i504 

035 



011505 

341 



011506 

341 




; ROUTINE 
WRIT: 
WRIT1: 


MOV M,B 

POP H 

POP D 

POP B 

RET 

TO DUMP OUTPUT BUFFER TO TTY. 


MV 1 0,0 

PUSH PSW 

PUSH H 

PUSH B 

LX I H.OBUFF 

PUSH H 

MOV C,M 

OCR C 

JZ W2 

I NR L 

W1: MOV A.M 

RST SEND 

I NR L 

DCR C 

JNZ W1 

DCR D 

JZ W2 

MV I A.2I5Q 

RST SEND 

MV I A,212Q 

RST SEND 

W2: POP H 

MV I M,1 

POP B 

POP H 

POP PSW 

RET 

; ROUTINE TO LOCATE COMMANDS. KEY WORDS, 

; AND FUNCTION. HL CONTAINS ADD OF FIRST 
; REO C 
: IF FOUND 
SYMSRT: 


jPRINT VIA ODT 


;PR I NT VIA ODT 
;PR I NT VIA ODT 


OPERATORS, 
CHAR.■ 


S2: 

S3: 


S4A: 
S4: 


IMTAI NS 

LENGTH OF LINE 

: RETURNS SYMBOL NUMBER 

1 IN REG A, 377Q IN A 

IF NOT FOUND. 

PUSH 

D 


PUSH 

B 


PUSH 

H 


PUSH 

H 


LX I 

H, LEN 

;SAVE C IN LEN 

MOV 

M.C 


LX I 

H.KDATA 

;LOCATE TYPE OF SYMBOL SOUGHT. 

MV I 

E, 0 

; REG A CONTAINS: 

ADO 

L 

; 0 FOR COMMAND 

MOV 

L, A 

; 1 FOR KEYWORD 

MOV 

L,M 

; 2 FOR OPERATOR AND DELIMITER 

MOV 

C.M 

; 3 FOR FUNCTION 

I NR 

L 


MOV 

B.M 


XTHL 



MOV 

A, M 


CMP 

B 


JNZ 

S4 


DCR 

C 


JZ 

S5 


PUSH 

H 


LX 1 

H, LEN 


DCR 

M 


POP 

H 


JZ 

S4A 


1 NX 

H 


XTHL 



JMP 

S3 


I NR 

C 


POP 

H 


MOV 

A, C 


ADD 

L 


MOV 

0,H 



S5: 


POP 

POP 

PUSH 

PUSH 

PUSH 

LX I 

MOV 

MOV 

MOV 

MOV 

I NR 

MOV 

I NR 

JNZ 

LX I 

I NR 

MV I 

MOV 

LX I 

MOV 

DCR 

POP 

POP 


H 
B 
B 
H 
H 

H, LEN 
M, C 
L, A 
H,D 
A, M 
E 

£‘ A 

S3 

H, LEN 
M 

E,377Q 

A,E 

H, LEN 

E,M 

E 

H 

H 


MOVE SYMBOL NUMBER INTO REG A 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


Page 21 


31 



011507 
011510 
011511 
011512 


011513 
011511 
011513 
011516 
011517 
011523 
01 1 5 > 7 
011533 
01 l 3 3 7 
0) I' '3 


301 
1 1 3 
321 
31 1 


1 1 7 
1 4-1 

23G 

300 

003 

003 

003 

003 

003 

377 


;M9VE NUMBER OF CHAR. 


* * * * 

THE 
• THIS 
CHPAR 


POP B 

MOV C, E 

POP D 

RET 

**»**it**«*******************a******************* 


LEFT IN 
LIME I NT 


CODE FROM HERE TO THE NEXT 
MACRO ADDS PARITY BITS TO 
CH 

CH OR 200Q 


KDATA: 


MACRO 

DB 

ENDM 

DB 


LINE OF *'S MUST BE ON ONE PAGE 
CHARACTERS 


322 
320 
312 

323 
320 


325 
314 
3 i 1 
303 
324 


313 

323 

323 

322 

301 


KDAT1 


DB 

DB 

DB 

DB 

DB 

DB 

DB 

DB 

DB 


011544 

003 

31 4 

30 5 

324 KDAT2: 

DB 

011550 

003 

32D 

322 

31 1 

DB 

011554 

003 

32 2 

305 

315 

DB 

011560 

003 

32 5 

32 4 

317 

DB 

011564 

003 

305 

315 

30 4 

DB 

011570 

003 

307 

31 7 

024 

DB 

011574 

002 

3 1 1 

305 


DB 

011577 

003 

31 1 

316 

320 

DB 

01 i60 1 

003 

304 

31 1 

315 

DB 

01!007 

003 

303 



DB 

01 1 C 1 i 

301 




DB 

011012 

314 




DB 

011413 

004 

307 



DB 

C1 1 0 1 5 

317 




DB 

01161G 

323 




DB 

0 , K 1 7 

325 




DB 

0i1620 

003 

322 



DB 

01162V 

303 




DB 

01 11.2 3 

324 




DB 

01’604 

003 

306 



DB 

01 1 FOG 

217 




DB 

0116*7 

322 




DB 

011650 

004 

316 



OB 

011652 

305 




DB 

01 1 'M7. 

330 




DB 

011454 

324 




DB 

011653 

377 




DB 


KDAT1 AND 3770 
KDAT2 AND 377Q 
KDAT3 AND 3770 
KDAT4 AND 377Q 
3,3220.3250,316Q 
3,3200,3140,323Q 

3.3140.31 IQ,323Q 
3, 3230,3030,322Q 
3, 320Q,3240,301Q 
377Q 

3,3140,305Q,3240 

3.3200.3220.31 IQ 
3,3220,3050,3150 
3,3230,324Q,317Q 
3,305Q,316Q,304Q 
3, 3070,3170,324Q 

2.31 IQ,3060 
3,3110,3160,320Q 

3.3040.31 IQ,315Q 

3, ' C'+200Q 
'A'+200Q 
'L'+200Q 

4, 'G'+200Q 
'0'+200Q 
'S'+200Q 
'U'+2000 
3.'R'+ 200Q 
'E'+200Q 
'T'+200Q 

3, 'F' OR 200Q 
'0' OR 20CQ 
'R' OR 200Q 

4, 'N' OR 2000 
'E' OR 200Q 
'X' OR 2000 
'T' OR 2000 
3770 

DELIMITERS HAVE FOLLOWING VALUES: 


RUN 

PLS 

LIS 

SCR 

PTA 


; LET 
PRI 
REM 
STO 
END 
GOT 
IF 
I NP 
DIM 
; CAL 


jGOSU 


; RET 


; FOR 
; NEXT 


) 


^HEN 

TO 

STEP 

* 

/ 

♦ 


0 

1 

2 

3 

4 

5 

6 
7 
S 

9 

10 
1 1 
12 


011635 


001 

274 

001 

276 KDAT3: 

DB 

1,2740,1.2760 

011642 


001 

254 

001 

275 

DB 

1 , 2540, 1 , 275i 

011 CIS 


001 

251 



DB 

1 , 251Q 

0116 50 


001 

273 



DB 

1 , '; '+ 200Q 

011652 


004 




DB 

4 


1 




4 * 

CHPAR 

0 • 0 y 0 0 0 

011653 

1 

324 



4- 

DB 

'T' OR 2000 


1 




•f 

CHPAR 

' "H' " 

011654 

1 

310 



4- 

DB 

'H' OR 200Q 


1 




4» 

CHPAR 

' "E" * 

011C55 

1 

305 



♦ 

DB 

'E' OR 200Q 


1 




•f 

CHPAR 

' ' ' N' * * 

011650 

1 

316 



■f 

DB 

'N' OR 200Q 

01iG57 


002 




DB 

2 


1 




4 - 

CHPAR 

t • 0 y * 0 • 

01t660 

1 

324 



4 - 

DB 

'T' OR 2000 


1 




•f 

CHPAR 

'"O'" 

Oil661 

1 

317 



■f 

DB 

'0' OR 2000 

011662 


004 




DB 

4 


1 




■f 

CHPAR 

•■ 'S' *' 

01!602 

1 

323 



4 - 

DB 

'S' OR 200Q 


1 




•f 

CHPAR 

0 0 0 y 0 0 0 

011634 

1 

324 



4- 

DB 

'T' OR 200Q 


1 




4 - 

CHPAR 

0 0 • £ » 0 0 

011655 

1 

305 



4 - 

DB 

'E' OR 200Q 


1 




4 - 

CHPAR 

0 * 0 p 0 0 0 

011605 

1 

320 



4 - 

DB 

'P' OR 2000 

011667 


001 

252 



DB 

1 , ' * '+200Q 

011671 


001 

257 

001 

253 

D3 

1,2570,1,253 

0!1675 


00 i 

255 



C3 

1,2550 


• It, 

0 , 0 
THEN 


I TO 


; STEP 




Page 22 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


32 









01107/ 
011700 
01 1 704 
011710 


011711 
011712 
011714 
011717 
011721 
011724 
011726 
011731 
011733 
011726 
01 1 740 
011743 
011745 
01 1 700 
011752 
011755 
011 756 
011757 
011750 
011 7 S3 
011756 
011770 
011771 
011772 
011773 
0117 76 
011777 
012C00 
0’2001 
0i2003 
012004 
012005 
0i2007 
012010 
012012 
012013 
012015 
012016 
012017 
012020 


377 

003 307 305 324 KDAT4: 
003 320 325 324 

377 


DB 

D3 

DB 

DB 


3770 

3,3070,3050,3240 ; GET 

3,3200,3250,3240 :PUT 


345 

006 000 
315 367 017 
376 231 
312 001 024 
376 377 
312 366 023 
376 337 
312 371 023 
376 212 
312 314 023 
376 215 
312 010 024 
376 214 
312 314 023 
167 
043 
004 

315 024 025 

303 3M 023 

076 337 

367 

053 

005 

362 314 023 

341 

257 

31 1 

076 334 
367 

076 000 
341 
31 1 

076 212 
367 

016 COO 
341 
1 70 
271 


j tttttmn 

t ********'*>****:******* fcx********#*****.,.*****-. 

» ROU TINE 

TO INPUT SOURCE LINE 

FROM TTY. PASSED ADD 

; Oh FIRST CHAR 
TTYIN: PUSH 

IN HL. RETURNS 

H 

LENGTH OF LINE IN REG A 


MV I 

B, 0 


TI N1 : 

CALL 

CHAR2 



CPI 

23 1 Q 

;CNTRL Y? 


J Z 

T I N5 



CPI 

377Q 

;RUBOUT? 


J z 

T 1 N2 



CPI 

337Q 

BACK ARROW (RUBOUT)? 


JZ 

TIN2 + 3 



CPI 

2120 

; lf? 


JZ 

T I N1 



CPI 

215Q 

j CR 


JZ 

TIN4 



CPI 

2140 

;FORM FEED? 


JZ 

TIN1 

;IGNORE 


MOV 

M. A 



I NX 

H 



I NR 

B 



CALL 

MEMFUL 



JMP 

T I N1 


TIN2: 

MV I 

A,337Q 



RST 

SEND 

;PRI NT VIA ODT 


DCX 

H 



OCR 

B 



JP 

TIN1 



POP 

H 



XRA 

A 

i ZERO A 


RET 



TINS: 

MV I 

A,3340 



RST 

SEND 

;PR I NT VIA ODT 

TIN5A: 

MV I 

A, 0 



POP 

H 



RET 



TI N4: 

MV I 

A,2120 



RST 

SEND 

;PR I NT VIA ODT 

TIN4A: 

MV I 

C, 0 



POP 

H 



MOV 

A, B 



CMP 

C 



310 


RZ 


012021 




jROUTINE 

TO REMOVE BLANKS FROM SOURCE UNLESS ENCLOSED IN !'S 

325 




PUSH 

D 

SAVE REG'S 

012022 

345 




PUSH 

H 


012023 

345 




PUSH 

H 


012024 

036 

242 



MV I 

E.+200Q 

I NIT E FOR COMPARES 

012026 

026 

000 



MV l 

0,0 

D =1= >WITH1N QUOTES,LEAVE BLANKS 

012030 

257 



PK1 : 

XRA 

A 

CLEAR A 

012031 

272 




CMP 

D 

CHECK INPUT MODE 

012032 

1 76 




MOV 

A, M 

GET CHAR 

012033 

302 

053 

024 


JNZ 

QSTRG 

WITHIN QUOTE STRING 

012036 

273 




CMP 

E 

IS IT 1ST !? 

012037 

302 

016 

024 


JNZ 

$♦7 

NO - PROCEED 

012042 

024 




I NR 

D 

YES, SET FLAG 

012043 

303 

060 

024 


JMP 

QSTR1 

CONTINUE 

012046 

376 

240 



CPI 

2400 

IS IT A SPACE? 

012050 

012053 

312 

273 

065 

024 

QSTRG: 

<£p 

|K2 

leave OUT 

012054 

302 

C60 

024 


JNZ 

S + 4 

NO - CONTINUE 

012057 

025 



QSTR1: 

OCR 

D 

RESET FLAG 

012060 

343 



XTHL 


GET DESTINATION ADDRESS 

012061 

167 




MOV 

M, A 

SAVE 

012062 

043 




I NX 

H 

BUMP PNTR. 

012063 

343 




XTHL 


GET SOURCE ADO. 

012064 

01 4 




I NR 

C 

BUMP CHAR. CNT 

012065 

043 



PK2: 

I NX 

H 

BUMP PNTR. 

012066 

005 




OCR 

B 

OCR INPUT LINE CHAR CNT 

012067 

302 

030 

024 


JNZ 

PK1 

MORE - GO AGAIN 

012072 

171 




MOV 

A, C 

CHAR CNT TO A 

012073 

341 




POP 

H 

RESTORE REG'S, RETURN 

01 2074 

341 




POP 

H 


012075 

321 




POP 

0 


012076 

31 1 




RET 




ROUTINES TO PAD MESSAGES TO OUTPUT BUFFER. 

FORI 2 PADS 'UNDERFLOW' 

FOR 1 1 PADS 'OVERFLOW' 

FOR 10 PADS 'ZEROD1V IDE' 

F0RM9 PADS 'INFUT ERROR, TRY AGAIN' 

F0RM8 PADS 'MEMORY FULL' 

F0RM7 PADS 'WHAT?' 

F0RM4 PADS 'IN LINE' 

F0RM3 PADS 'ERROR' 

FORM2 PADS 'TURN ON PUNCH' 

FORM 1 PADS 'READY' 

F0RM5 PADS SOURCE LINE, PASSED ADDRESS OF 
LENGTH OF LINE IN HL REGS. 

FORM6 PADS CHAR STRING, PASSED ADD OF FIRST CHAR IN 
HL, LENGTH OF STRING IN REG C 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 23 


33 





012077 

054 




FORI 2: 

I NR 

L 

012100 

054 




FORI 1: 

1 NR 

L 

012101 

054 




FORI 0: 

l NR 

L 

012102 

054 




FORM9: 

I NR 

L 

012101 

054 




FORMS’. 

1 NR 

L 

012!04 

054 




FORM7: 

I NR 

L 

012105 

054 




FCF.M4 : 

1 NR 

L 

012106 

054 




F0RM3: 

1 NR 

L 

012107 

054 




F0RM2: 

I NR 

L 

012110 

1 56 




FORM 1: 

MOV 

L,M 

012111 

1 16 




F0RM5: 

MOV 

C, M 

012112 

1 71 





MOV 

A.C 

012113 

376 

000 




CPI 

0 

012115 

310 





RZ 


012116 

043 




FI : 

1 NX 

H 

012117 

1 76 




F0RM6: 

MOV 

A, M 

012120 

006 

001 




MV 1 

B, 1 

012122 

315 

255 

022 



CALL 

pko 

012125 

015 





OCR 

C 

012126 

302 

1 1 6 

024 



JNZ 

FI 

01 2131 

31 1 





RET 







■ IlltttlU 


***x************************************ 






:THE CODE 

FROM 

HERE TO THE NEXT LINE OF *'S MUST BE ON 

012132 

144 




ODATA: 

DB 

CDAT1 AND 3770 

01 2 1 33 

152 





DB 

0DAT2 AND 377Q 

012134 

1 70 





DB 

0DAT3 AND 377Q 

012135 

201 





DB 

0DAT4 AND 377Q 

012136 

213 





DB 

0DAT5 AND 377Q 

012137 

221 





DB 

0DAT6 AMD 377Q 

012140 

240 





DB 

0DAT7 AND 377Q 

012141 

267 





DB 

0DAT8 AND 377Q 

012142 

302 





DB 

0DAT9 AND 377Q 

012i43 

313 





DB 

ODA10 AND 377Q 

012144 

005 

1 22 

105 

101 

0DAT1: 

DB 

'READY' 

012150 

1 04 

131 






0i2i52 

015 

1 24 

125 

1 22 

0DAT2: 

DB 

13,'TURN ON PUNCH' 

012153 

1 16 

Or’O 

1 1 7 

1 16 




012162 

040 

1 20 

1 2 5 

1 1 6 




012165 

103 

1 10 






012170 

010 

215 

212 

105 

0DAT3: 

DB 

8,215Q,212Q,'ERROR 

012174 

122 

1 22 

1 1 7 

1 22 




012200 

040 







012201 

01 1 

040 

1 1 1 

1 1 6 

0DAT4: 

DB 

9,' IN LINE ' 

012205 

040 

1 1 4 

1 1 1 

1 1 6 




012211 

1 05 

040 






0122’3 

005 

1 27 

1 1 0 

101 

CDAT5: 

DB 

5, 'WHAT?' 

0122 1 7 

1 24 

077 






012221 

016 

1 1 5 

1 05 

1 1 5 

0DAT6: 

DB 

14,'MEMORY FULL',2150,2120,'?' 

017223 

1 1 7 

1 22 

131 

040 




0)2231 

1 06 

1 25 

1 1 4 

1 1 4 




012253 

215 

212 

077 





012240 

026 

1 1 1 

1 1 S 

1 20 

0DAT7: 

DB 

22,'INPUT ERROR, TRY AGAIN 1 


01224 4 
012250 
0 t 2254 
012?P0 
012264 
012267 
01 227.3 
012277 
012202 
O' 2306 
01 231 2 
0123 t3 
012317 
012323 


104 0DAT8: 
1 16 

105 0DAT9: 

1 1 7 

104 ODA10: 
1 1 4 


10,'INDEFINITE' 


8 t 'OVERFLOW' 
9, 'UNDERFLOW' 






: OF FIRST CHAR 

IN HL. 1 

012325 

345 



HSR IN: 

PUSH 

H 

012326 

006 

000 



MV I 

B.O 

012330 

303 

336 

024 


JMP 

PlNIA 

012333 

315 

010 

025 

PI N1 : 

CALL 

CHAR5 

01 2'26 

376 

231 


PIN1A: 

CPI 

2310 

012340 

312 

004 

024 


JZ 

TIN5A 

012343 

376 

377 



CPI 

3770 

012345 

312 

oco 

025 


JZ 

PIN3 

012350 

376 

337 



CPI 

3370 

012352 

312 

000 

025 


JZ 

PI N3 

012355 

376 

212 



CPI 

212Q 

012.357 

312 

O ’: 3 

024 


JZ 

T I N4A 

012362 

376 

215 



CPI 

2150 

012364 

312 

333 

024 


JZ 

PIN1 

012367 

1 67 




MOV 

M, A 

012370 

043 




I NX 

H 

012371 

004 




I NR 

B 

0i2372 

315 

024 

025 


CALL 

MEMFUL 

012375 

603 

333 

024 


JMP 

PI N1 

012400 

053 



PIN3: 

DCX 

H 

012401 

005 




DCR 

B 

012402 

302 

333 

02 4 


JP 

P1N1 

012405 

341 




POP 

H 

012406 

257 




XRA 

A 

Cl 2407 

31 1 




RET 



**************** * :l ****************************** 

ROUTINE TO INPUT SOURCE LINE FRO,“I HSR. PASSED ADD 


;CNTRL YT 


i ZERO A 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


34 



012410 

305 



012411 

006 

004 


012413 

323 

Q05 


012415 

315 

334 

01 7 

012420 

333 

005 


012422 

C-01 



012423 

31 1 



012424 

305 



0!2425 

325 



012426 

345 



O ' 2427 

076 

062 


Oi24o 1 

205 



0124T2 

1 07 



012433 

076 

000 


012465 

21 4 



0124 66 

1 1 7 



012437 

041 

000 

000 

012442 

07l 



012443 

1 25 



012444 

1 34 



012445 

315 

361 

01 7 

012450 

341 



012451 

321 



012452 

301 



012453 

320 



012454 

041 

1 32 

024 

012457 

3'5 

103 

024 

012462 

315 

320 

022 

012465 

315 

367 

01 7 

012470 

315 

255 

022 

012473 

315 

320 

022 

012476 

336 

260 


012500 

376 

004 


012502 

314 

236 

021 

012505 

061 

377 

077 

012510 

016 

001 


012512 

303 

107 

020 

012515 

052 

1 1 3 

060 

012520 

076 

01 1 


012522 

205 



012523 

1 57 



012524 

076 

000 


012526 

214 



012527 

147 



012530 

345 



012531 

315 

024 

022 

012534 

324 

236 

021 

012537 

315 

052 

022 

0)2542 

365 



012543 

305 



012544 

31 5 

243 

025 

012547 

301 



012530 

053 



012551 

042 

13’ 

060 

012554 

361 



012555 

341 



012556 

074 



012557 

205 



012560 

157 



012361 

076 

000 


012563 

214 



012564 

1 47 



012565 

076 

000 


012567 

271 



012570 

310 



012571 

015 



Oi2572 

315 

024 

022 

012575 

324 

256 

021 

012600 

325 



012601 

3 1 5 

052 

022 

012604 

325 



012605 

305 



012606 

315 

243 

025 

012611 

301 



012612 

043 



012613 

126 



012614 

043 



012615 

136 



012616 

353 



012617 

042 

122 

060 

012622 

321 



012623 

341 



012624 

1 71 



012525 

376 

000 


012627 

302 

236 

021 

012632 

104 



012633 

1 15 




: ROUTINE TO INPUT CHAR FROM HSR 

CHAR5: PUSH B 

MV I B,4 
OUT 5 

CALL MCHK 
IN 5 

POP B 

RET 

; ROUTINE TO INSURE SOURCE DOES NOT OVERFLOW MEM SPACE 
COMPARES CURENT MEM AODRESS TO SP. 


MEMFUL: 


PUSH 

PUSH 

PUSH 

MV I 

ADD 

MOV 

MV I 

ADC 

MOV 

LX I 

DAD 

MOV 

MOV 

CALL 

POP 

POP 

POP 

RNC 

LX I 

CALL 

CALL 

CALL 

CALL 

CALL 

SB I 

CPI 

CZ 

LX I 

MV I 

JMP 


B 
D 
H 

A, 50 
L 

B, A 
A, 0 
H 

C, A 
H.O 
SP 

D, L 

E, H 
DCOMP 
H 

D 

B 


H,ODATA 
F3RM8 
WRIT 
CHAR2 
PAD 
WRIT 
260Q 
4 

WHAT 

SP.MEMEND 
C. \ 

M4A 

ROUTINE TO EVALUATE BOUNDS FOR LIST AND PLIST 
COMMANDS. RETURNS PLINE AS FIRST LINE. KLINE 
. AS LAST LINE TO BE LISTED. 

BOUND: 


BND1 


LHLD 

NLI NE 

MV I 

A, 9 

ADD 

L 

MOV 

L, A 

MV I 

A, 0 

ADC 

H 

MOV 

H, A 

PUSH 

H 

CALL 

NUMB 

CNC 

WHAT 

CALL 

CVB 

PUSH 

PSW 

PUSH 

B 

CALL 

BND2 

POP 

B 

OCX 

H 

SHLO 

PLINE 

PCP 

PSW 

POP 

H 

I NR 

A 

ADD 

L 

MOV 

L,A 

MV I 

A, 0 

ADC 

H 

MOV 

H, A 

MV I 

A, 0 

CMP 

RZ 

C 

OCR 

C 

CALL 

NUMB 

CNC 

WHAT 

PUSH 

0 

CALL 

CVB 

PUSH 

0 

PUSH 

B 

CALI 

BND2 

POP 

B 

I NX 

H 

MOV 

O.M 

I NX 

H 

MOV 

XCHO 

E,M 

SHLO 

KLINE 

PCP 

D 

POP 

H 

MOV 

A. C 

CPI 

0 

JNZ 

WHAT 

MOV 

B, H 

MOV 

C.L 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 


35 




012634 
012637 
012640 
012643 
012646 
012647 
012060 
012651 
012654 
012635 
012656 
012657 
012650 
01 26 31 
0)2632 
012633 
012654 
012657 
0126 70 
012673 
012674 
012675 


012676 
012701 
012702 
Oi2705 
012706 
012707 
012712 
012714 
012715 
012716 
012717 
012720 
012721 
012722 
012724 
012726 
012731 
012732 
012733 
012736 
012737 
012742 
012745 
012746 
012747 
012750 
012751 
012752 
012753 
012756 
012757 
012762 
012760 


012766 
012/70 
012773 
0127/5 
013000 
013002 
013005 
013007 
013010 
013011 
013012 


013015 
013016 
013017 
013020 
013023 
013024 
013025 
013030 
013031 
013032 
013033 


Page 26 


36 


315 

3S i 

01 7 


CALL 

DCOMP 



320 




RNC 




303 

236 

021 


JMP 

WHAT 



052 

1 1 1 

060 

BND2: 

LHLD 

STL INE 



106 



BND3: 

MOV 

B.M 



043 




1 NX 

H 



1 1 6 

315 

361 

017 


MOV 

CALL 

d6omp 



330 




RC 




310 




RZ 




345 




PUSH 

H 



043 




I NX 

H 



1 76 




MOV 

A.M 



043 




I NX 

H 



1 46 




MOV 

H, M 



1 57 




MOV 

L, A 



31 5 

2 43 

02 2 


CALL 

CHK1 



301 



POP 

B 



322 

246 

025 


JNC 

BND3 



305 


PUSH 

B 



341 




POP 

H 



31 1 




RET 






: ROUTINE TO OUTPUT ERROR MSG. TO USER. 





; REG A 

CONTAINS 

BCD ERROR NUMBER. 

HL 





; LOADED 

WITH VALUE OF KLINE. 



C41 

023 

020 

ERROR: 

LX 1 

H, Ml A 

RETURN ADDRESS 


345 


PUSH 

H 

PUT ON STACK 


041 

1 32 

024 


LX 1 

H.ODATA 

OUTPUT BUFFER DATA 

TABLES 

345 



PUSH 

H 



1 27 




MOV 

D, A 

SAVE ERROR NUMB. IN 

D 

315 

1 06 

024 


CALL 

F0RM3 

PAD 'ERROR ' 


006 

001 



MV I 

B, 1 

I NIT FOR PADS 


1 1 0 




MOV 

C.B 

INIT AS CNTR. 


1 72 




MOV 

A, 0 

GET ERROR NUMB. 


007 




RLC 


ROTATE HIGH 4 BITS 

TO LOW 

007 




RLC 




007 




RLC 




007 




RLC 




346 

01 7 


ERRR1: 

AN 1 

170 

MASK 


306 

260 



ADI 

2600 

CONVERT TO ASCII 


315 

255 

022 


CALL 

PAD 

PAD IT 


1 72 




MOV 

A.D 

GET ERROR NUMB. 


015 




OCR 

C 

ANOTHER PASS? 


362 

322 

025 


JP 

ERRR1 

YES 


341 




POP 

H 

NO-CONTINUE 


315 

1 05 

024 

ERLN: 

CALL 

F0RM4 



052 

1 22 

060 


LHLD 

KLINE 



043 




I NX 

H 



043 




I NX 

H 



043 




I NX 

H 



043 




I NX 

H 



1 16 




MOV 

C.M 



043 




I NX 

H 



315 

161 

022 


CALL 

LENGTH 



1 1 7 




MOV 

C, A 



315 

1 1 7 

024 


CALL 

F0RM6 



315 

320 

022 


CALL 

WRIT 



31 1 




RET 





THIS ROUTINE INCREMENTS H AND L 
DECR. C(CHARS IN LINE) SHOULD C 


AND 

RESULT 


IN 0 THEN THE ERROR CCRRES. TO ENTRY PNT. 


076 

007 

:IS GIVEN 

1 CP7: 

MV I 

A. 7 

303 

00 7 

025 

JMP 

I NCPT 

076 

010 

I CPS: 

MV I 

A. 8 

303 

007 

025 

JMP 

I NCPT 

076 

004 

I CP4: 

MV I 

A, 4 

303 

00 7 

025 

JMP 

I NCPT 

076 

002 

I CP2: 

MV I 

A.2 

043 


INCPT: 

I NX 

H 

0 1 5 
300 

303 

276 

025 

DCR 

RNZ 

JMP 

C 

ERROR 



:FSYM FINDS SYMBOLS IN TABLE 


B,C CONTAIN SYMBOL 

RET WITH B,C,D,E SAME 

H AND L PNT TO VALUE (1ST BYTE) 

CY =1 =0 FOUND 

CY = 0 AND A SCALAR VAR. =0 INSERTED 
AND SET TO 0 
CY=0 AND AN ARRAY 





H AND L PNT 

TO LAST 

ENTRY IN SYMBOL TABLE 

325 


FSYM: 

PUSH 

D 


257 



XRA 

A 


260 



CRA 

B 

;SET CARRY IF NOT 

31 2 

024 025 


JZ 

AR 

;AN ARRAY AND SAVE 

077 



CMC 



365 


ar: 

PUSH 

PSW 


052 

131 060 


LHLD 

NXTSP 

;GET NEXT AVAILABLE 

305 



PUSH 

B 

;SPACE PNTR. 

1 04 



MOV 

B, H 


1 1 5 



MOV 

C, L 

;CHECK TO SEE 

052 

113 060 


LHLD 

STSPAC 

;IF SYMBOL TABLE 






;EMPTY 


Dr. Dobb's Journal of Computer Calisthenics 

& Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 










013036 

124 




MOV 

D,H 


013037 

1 35 




MOV 

E, L 


013040 

315 

361 

01 7 


CALL 

DCOMP ; 

DOUBLE BYTE COMPARE 

013043 

301 




PCP 

B ; 

GET VAR. BACK 

013044 

312 

1 04 

025 


JZ 

NOSYM 


013047 

315 

?A 3 

022 

LUKON: 

CALL 

CHK1 ; 

CHECK FOR END 

013052 

332 

1 06 

025 


JC 

NOENT 


013055 

124 




MOV 

D.H ; 

SAVE OLD PNTR 

013056 

135 




MOV 

E,L 


013057 

1 70 




MOV 

A, B 


013060 

276 




CMP 

m ; 

DO VARIABLES MATCH 

013061 

?02 

073 

025 


JNZ 

NOMAT 


013064 

043 




I NX 

H 


013005 

171 




MOV 

Aj C 


013066 

276 




CMP 

M 


013067 

312 

1 64 

025 


JZ 

ENTRY 


013072 

053 




OCX 

H 

NO MATCH GET NEW PNT 

013073 

043 



NCMAT: 

1 NX 

H 

013074 

043 




I NX 

H 


013075 

1 76 




MOV 

A.M 


013076 

043 




1 NX 

H 


013077 

1 46 




MOV 

H, M 


013100 

1 57 




MOV 

L.A 


013101 

303 

047 

025 


JMP 

LUKON 






;ARRIVE 

HERE IF 

SYMBOL TABLE IS EMPTY 

013104 

033 



NOSYM: 

OCX 

D 

=STSPAC-2 SO STPNT 

013105 

033 




OCX 

D 






;ARRIVE 

HERE WHEN NO ENTRY FOUNO 


013106 

032 

131 

060 

NOENT: 

LHLD 

NXTSP 

ADD. OF FREE MEMORY 

013111 

353 




XCHO 


TO OE. HL HAVE LAST 
ARRAY? 

0131 12 

361 




POP 

PSW 

013113 

322 

1 71 

025 


JNC 

FBAC 

YES, RETURN 

CHECK FOR PAGE BOUND 

013116 

31 5 

260 

037 


CALL 

CHKLC 

013121 

315 

21 3 

021 


CALL 

STPNT 

UPDATE PNTR 

013124 

353 




XCHO 


NXTSP TO HL 

013125 

1 60 




MOV 

M.B 

STORE VAR. 

013126 

043 




1 NX 

H 


013 1 27 

161 




MOV 

M,C 


013130 

043 




I NX 

H 


013131 

345 




PUSH 

H 


013132 

043 




I NX 

H 

.STORE NXTSP +8 IN NXT 

013l33 

043 




I NX 

H 


013134 

043 




I NX 

H 


013135 

043 




I NX 

H 


013136 

043 




I NX 

H 


013137 

043 




I NX 

H 



013140 
013143 
013 1 46 
013147 
013151 
013152 
013154 
013155 
0131 <30 
01 3 n51 
013164 
0131 <55 
013:66 
013167 
013 <70 
013171 
013172 


042 

31 5 

341 

05C 

043 

066 

043 

315 

257 

303 

361 

043 

043 

043 

067 

321 

31 1 


131 

324 

377 
377 
315 
1 71 


063 

025 


01 7 
025 


ENTRY: 


FBAC: 


SHLD 
CALL 
POP 
MV I 
I NX 
MV I 
I NX 
CALL 
ORA 
JMP 
POP 
I NX 
I NX 
I NX 
STC 
POP 
RET 


NXTSP 

MEMFUL 

H 

M,377Q 
H 

M.377Q 

H 

ZROL 

A 

FBAC 

PSW 

H 

H 

H 


ENTRY 


;MEMORY FULL? 

;SET FWD PNT. TO -1 


; 1NIT TO FLT. PNT. 0 
;CLEAR CY 

;RESET CARRY AND RETURN 
;VAR FOUND 

;MOVE PNT. TO FIRST BYTE 
;OF FLT. PNT. NO. 

;SET CY AND RET. 

;RESTORE D 


;RUN - THE 1NTERP. 






•1NIT. 

NXTSP 



013’! 73 

052 

1 1 3 

060 

RUN: 

LHLD 

STSPAC 


013176 

353 




XCHG 


: ADJUST START OF SYMBOL T/ELE SO 

013177 

315 

301 

037 


CALL 

CKD1M 

\ IT STARTS ON AM EVEN 4 WORD EC UN 

013202 

315 

260 

037 


CALL 

CHKLC 

: ADJUST START OF SYMBOL TABLE SO IT 
: DOES NOT CROSS PAGE BOUNDARY 

013205 

353 




XCHG 



O i 3; 0 ~ 

04 2 

' 1 3 

060 


SHLD 

STSPAC 


Ol3211 

042 

l 31 

oco 


SHLD 

NXTSP 

jINIT SP FOR NESTING STACK 

01 321 <1 

o-n 

252 

060 


LX I 

H,BOTNS 

0i3217 

04 2 

224 

060 


SHLD 

NEST 

;PRECAUTION, IN CASE RETURN IS 

"'2?3 

041 

023 

020 


LX I 

H, Ml A 

013225 

345 




PUSH 

H 

;EXECUTED BEFORE A GOSUB 

013226 

345 




PUSH 

H 


013227 

052 

1 l 1 

060 


LHLO 

STL INE 

;START OF SOURCE 

01 32.32 

315 

010 

022 

I LOOP: 

CALL 

OUI TT 

;CHECK FOR INTERRUPTION 

013233 

31 5 

243 

022 

CALL 

CHK1 

;HL=- 1 =Q NO MORE SOURCE 

013240 

322 

230 

02<3 


JNC 

SORCE 


013.2-13 

073 

001 



MV I 

A, 1 


013245 

303 

2 76 

02 5 


JMP 

ERROR 

;ERROR 1, NO END STMT. 

013250 

Q..1 O 

1 22 

063 

SORCE: 

SHLD 

LPNT 


013253 

345 




PUSH 

H 

:DEFINE VALUES OF 

01325 1 

04 1 

122 

060 


LX I 

H, LPNT 

013257 

315 

356 

01 7 


CALL 

PTVAL 

:KBIN.KFPNT.KLEN 
;CHAR'S IN LINE TO C 

013262 

072 

1 30 

060 


LDA 

KLEN 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 27 


37 




Ot 326 5 
0)3205 
01 3': c 7 
013370 
013371 
013372 
013273 
013374 
013277 
01 3 3 02 
013305 
013306 
013307 
013312 
01 3 < 1 4 
013 117 
013321 
013324 
013327 
013332 
013333 
013334 
013336 
013337 
013340 
013341 
013342 
013343 
013344 
013346 
013.=0 
013352 
0153:4 
013356 
013360 
013362 
01336 4 
013366 
013370 
013372 
01337 4 
013376 
0 ’ 24 n 0 
013403 
013406 
013411 
013413 
013416 
013421 
013422 
013423 
013424 
013427 
013432 
013433 
013436 
013440 
013433 
013446 
013451 
013453 
013456 
013461 
013462 
013463 
013434 
013467 
013472 
013471 
013477 
013500 
013503 
0\3305 
013506 
013511 
013514 
013517 
013520 
013521 
013523 
013524 
013525 
013527 
01 3530 
013533 
013534 
013535 
013536 
013540 
013543 
013546 
01 3547 
013550 


Page 28 


38 


1 1 7 




MOV 

C. A 


014 




I NR 

C 


341 




POP 

H 

;MOVE PNTR. TO 1ST CHAR 

043 




I NX 

H 

;IN SOURCE REC. 

043 




I NX 

H 


043 




I NX 

H 


043 




I NX 

H 


315 

005 

025 

LI: 

CALL 

1 CP2 

; I NCR. H.L DCR C 

315 

'■>42 

022 


CALL 

ALPHA 

; F1 NO FIRST LETTER 

322 

274 

026 


JNC 

LI 


257 




XRA 

A 


074 




I NR 

A 

;LETTER FOUND 

315 

367 

022 


CALL 

SYMSRT 

;DETERMINE KEYWORD 

376 

377 



CPI 

3770 


302 

324 

025 


JNZ 

GKEY 


076 

002 



MV 1 

A,2 

;BAD KEYWORD 

303 

276 

025 


JMP 

ERROR 


042 

1 33 

060 

GKEY: 

SHLD 

CPNT 


041 

34 4 

025 


LX I 

H, JTBL 

; LOAD JUMP TABLE PNTR. 

207 




ADD 

A 

;DOUBLE A 

137 




MOV 

E,A 


026 

000 



MV I 

0,0 


031 




DAD 

D 

; PNT. TO PROPER PROC. 

1 76 




MOV 

A, M 

; ADD. IN JUMP TABLE 

043 




1 NX 

H 

;GET PROC. ADD. 

1 46 




MOV 

H,M 


1 57 




MOV 

L, A 


351 




PCHL 


; INDIRECT JUMP TO PROC. 

263 

033 


JTBL: 

DW 

LET 

;JMP TABLE 

253 

032 



DW 

PR I 


242 

033 



DW 

I END 

;REM STMT. - NO ACTION 

023 

020 



DW 

MIA 

;STOP STMT.-RETURN TO EDIT MODE 

000 

0C7 



DW 

ENDD 

01 6 

027 



DW 

GOTO 


223 

024 



DW 

I FRT 


1 42 

033 



DW 

INPUT 


056 

027 



DW 

DIM 


1 60 

035 



DW 

CALLP 


346 

035 



DW 

GOSUB 


373 

035 



DW 

RETRN 


375 

055 



DW 

FOR 


357 

036 



DW 

NEXT 


052 

1 c 5 

060 

ENDD: 

LHLD 

KFPNT 

;CHECK TO SEE IF MORE 

315 

243 

022 


CALL 

CHK 1 

;SOURCE AFTER END 

332 

OJ-O 

020 


JC 

MIA 


0 76 

003 



MV I 

A, 3 

;MORE SOURCE ERROR 3 

303 

276 

025 


JMP 

ERROR 


052 

1 33 

050 

GOTO: 

LHLD 

CPNT 

;GOTO STMT. PROC. 

043 



gsent: 

I NX 

H 

;INCREMENT PAST KEYWORD 

043 




I NX 

H 


043 




1 NX 

H 


31 5 

000 

025 


CALL 

I CP4 

;POSSIBLE ERROR 4 

315 

052 

022 

GTRA: 

C4LL 

CVB 

;GET DESTINATION 

267 

043 

027 


CRA 

A 

;MAKE SURE IT WAS OK 

302 


JNZ 

OKN 


076 

004 



MV I 

A. 4 


30? 

276 

C25 


JMP 

ERROR 


315 

210 

022 

CKN: 

CALL 

NSRCH 

;GET NEXT LPNT 

322 

232 

025 


JNC 

I LOOP 

;MAKE SURE IT EXISTED 

076 

005 



MV I 

A,5 


303 

276 

025 


JMP 

ERROR 

;NON-EXISTENT 

052 

1 33 

060 

OIM: 

LHLD 

CPNT 

;DIM STMT. PROC. 

043 




I NX 

H 

;PNT TO FIRST VAR. 

043 




I NX 

H 


043 




I NX 

H 


315 

042 

022 

DLOOP: 

CALL 

ALPHA 

;CHECK IF IT IS A VAR. 

332 

077 

027 


JC 

OKLET 


076 

006 


ER6: 

MV I 

A, 6 

;ERROR 6 

303 

276 

025 


JMP 

ERROR 


1 06 



OKLET: 

MOV 

B, M 


315 

366 

C25 


CALL 

I CP7 

; I NCR.CPNT 

076 

250 



MV I 

A,2500 

;CHECK FOR ( 

276 




CMP 

M 


302 

072 

027 


JNZ 

ER6 


315 

365 

025 


CALL 

ICP7 

;INCR. CPNT 

31 5 

052 

022 


CALL 

CVB 

;CONV. TO BIN NO. 

205 




ADD 

L 

;UPDATE CPNT 

157 

000 



MOV 

L.A 

;ED CONTAIN ARRAY LEN. 

076 



MV I 

A, 0 


214 




ADC 

H 

;C CONT. NO. CHARS LEFT 

1 47 

261 



MOV 

H, A 

;IN LINE 

076 



MV I 

A,2510 

;CHECK FOR ) 

276 




CMP 

M 


332 

07 2 

02 7 


JNZ 

ER6 


345 




PUSH 

H 


305 




PUSH 

B 

; SAVE B,C,H,L 

1 1 0 

000 



MOV 

C, B 

; SET UP FOR CALL TO FSYM 

006 



MV 1 

B,0 


31 5 
322 

01 5 

1 55 

025 

027 


CALL 

JNC 

FSYM 

NDOU 


301 




POP 

B 


341 

021 



POP 

H 


076 



MV I 

A, 1 1H 

;ERROR 11 


Dr. 

Dobb's Journal of Computer Calisthenics & Orthodontia, 

Box E, Menlo Park, CA 94025 January, 1977 



013552 

303 

276 

025 


JMP 

ERROR 

01 3533 

325 



NDOU: 

PUSH 

D 

013533 

3 03 




XCHG 


O' C'S d? 

002 

131 

060 


LHLO 

NXTSP 

C!?J82 

353 




XCHG 


013563 

31 5 

301 

037 


CALL 

CKDIM 

0-3663 

31 5 

213 

021 


CALL 

STPNT 

01357i 

353 




XCHG 


O’ 3572 

321 




POP 

D 

013573 

066 

000 



MV I 

M, 0 

013575 

043 




1 NX 

H 

013576 

161 




MOV 

M.C 

013577 

043 




1 NX 

H 

013600 

066 

377 



MV 1 

M,377Q 

013602 

043 




I NX 

H 

013603 

066 

377 



MV 1 

M,377Q 

013605 

043 




I NX 

H 

013506 

1 72 




MOV 

A,D 

OK 607 

057 




CMA 


013610 

117 




MOV 

C.A 

013611 

1 73 




MOV 

A.E 

013612 

057 




CMA 


01 361 3 

107 




MOV 

B,A 

01 06’ 4 

315 

315 

01 7 

CONT: 

CALL 

ZROL 

013617 

043 




I NX 

H 

013620 

043 




I NX 

H 

013631 

04 3 




I NX 

H 

01 3622 

043 




1 NX 

H 

013623 

003 




I NX 

B 

013624 

345 




PUSH 

H 

013625 

31 5 

021 

025 


CALL 

MEMFUL 

013630 

1 40 




MOV 

H, B 

013631 

151 




MOV 

L.C 

0136°2 

315 

243 

022 


CALL 

CHK1 

OI55635 

341 




POP 

H 

01 2636 

32 c* 

214 

02 7 


JNC 

CONT 

013341 

042 

131 

060 


SHLO 

NXTSP 

013344 

301 




POP 

B 

0 13545 

341 




POP 

H 

013643 

043 




1 NX 

H 

013347 

015 




DCR 

C 

013650 

312 

242 

03 3 


JZ 

I END 

013653 

015 




DCR 

C 

013654 

312 

07? 

027 


JZ 

ER6 

013657 

076 

254 



MV I 

A.254Q 

013661 

276 




CMP 

M 

013562 

043 




I NX 

H 

013'53 

312 

064 

027 


JZ 

DLOOP 

013553 

303 

072 

027 


JMP 

ER6 





;ROUTINE 

TO COPY CONTEN 





;BY DE TO 

LOCATION H,L 

013671 

365 



COPDH: 

PUSH 

PSW 

012572 

305 




PUSH 

B 

013673 

325 




PUSH 

0 

0)3674 

345 




PUSH 

H 

0136/5 

005 

0C4 



MV I 

B.4 

013677 

032 



C0PD1: 

LDAX 

D 

013700 

1 67 




MOV 

M, A 

013/01 

023 




I NX 

D 

013702 

043 




I NX 

H 

013703 

005 




DCR 

B 

01370 1 

302 

277 

027 


JNZ 

C0PD1 

013707 

341 




POP 

H 

013710 

321 




POP 

D 

013711 

301 




POP 

B 

013712 

361 




POP 

PSW 

013/13 

31 1 




RET 






:OUTR PADS OUTPUT FROM 





: OUTPUT BUFF- ER 

USING RO 





;ALL REG' 

S MAI 

4 T A 1 NED 

013714 

305 



OUTR: 

PUSH 

B 

013715 

006 

001 



MV I 

B, 1 

013717 

315 

255 

02? 


CALL 

PAD 

013722 

301 




POP 

B 

013723 

311 




RET 



013724 
013727 
01 3/30 
0 1 37>2 
013735 
013737 
01 3742 
01 3744 
013747 
Oi373? 
013773 
013754 
013703 
01 3 7 “> 3 


315 
330 
076 
3 1 5 
376 
312 
3 76 

302 

303 
043 
043 
043 
1 71 
267 


203 030 


VALUE RETURNS IN D(H),E(L) PNTR 
TO THE VALUE OF A TOKEN 
C,H,L ARE UROATEO 
A,5 ARE DESTROYED 


VALUE: 


022 


003 
367 
377 
114 030 
001 

352 027 
216 03 4 


GET: 


CALL 

RC 

MV I 

oai l 

CPI 

JZ 

CPI 

JNZ 

JMP 

I NX 

I NX 

I NX 

MOV 

ORA 


VAR 
A, 3 

KCNT 

1 

GET 
ER1 0 
H 
H 
H 

£‘ C 


DUPLICATE ARRAY DEF. 

SAVE DIM. LENGTH 

ADD. OF LAST SYM. TAB. ENTRYfTO DE 

GET ADD. OF AVAILABLE MEM. 

SET UP FOR CALL 
CHECK START OF 'DIM' ARRAY 
STORE NEW PNTR 
NXTSP TO HL 
RESTORE D 

INSERT VAR IN SYMB. TAB. 


;FPNT TO -1 


PNTS TO FIRST DATA 
GET ONE'S COMPLEMENT OF 
NUMBER OF ELEMENTS 
IN ARRAY TO B,C 


;ZEROE OUT ELEMTS. 
; OF ARRAY 


; MEMORY FULL? 


;NEW VALUE OF NXTSP. 
;RESTORE REG'S 


;MORE ELEMTS IN LINE? 


;NEXT ELEMENT A , 


TO 


;SAVE REGISTERS 


;COUNT 

; GET FROM SOURCE 
; PUT TO DESTINATION 
; BUMP PNTRS. CNT 


;RESTORE REGISTERS 


SAVE REG B 
PAD ONCE 
DO I T 

RESTORE B AND RET. 


;IS IT A VARIABLE? 

;YES - ALL DONE 
;NO CHEK IF A FUNC. 


;NOT A FUNCTION - 
I WAS IT PUT ( --)? 

;NO - OK 

;ILLEGAL USE OF FUNCTION 
i OK, IT'S GET<--) 

;UPDATE H,L 

;CHECK FOR PREMATURE EOL 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


39 








0137o7 
013762 
013764 
013763 
013770 
013773 
01 3776 
013/77 
01 4002 
014003 

oi <ooe 

014007 

014312 
0140 i 3 
014014 
014015 
014013 
014017 
014020 
014021 
014024 
014026 
014027 
014032 
014033 
O’ 4034 
014035 
014035 
014041 
014044 
014045 
014047 
014050 
014051 
01-1052 
014053 
014056 
014061 
014062 
01 4065 
014070 
014071 
014072 
014073 
014074 
014073 
014076 
014101 
014104 
014105 
01 4106 
014107 
014111 
014114 
014117 
014122 
014124 
014:25 
014130 
014132 
014!35 
014140 
014143 


014144 

014147 

014152 

014153 

014155 

014’61 

014163 

014166 

014171 

014174 

014175 

014176 

014200 


014203 
014203 
0! 120 7 
014210 


Page 30 


312 

070 

032 


JZ 

ER8 




076 

250 



MV I 

A,250Q 



CHEK FOR ( 

276 




CMP 

M 




302 

0 70 

032 


JNZ 

ER8 




315 

373 

025 


CALL 

I CP8 



BUMP PNTR'S 

3 1 5 

335 

031 


CALL 

EVAL 



GET PORT ■ 

345 




PUSH 

H 



SAVE REG H,L 

041 

1 74 

060 


LX I 

H,FRE01 




315 

271 

027 


CALL 

COPDH 



COPY IT 

353 




XCHG 





341 




POP 

H 



RESTORE H,L 

315 

033 

031 


CALL 

FIX 



; FIX IT 

023 




I NX 

0 




023 




I NX 

D 



GET LOWEST BYTE TO 

023 




I NX 

D 



REG D 

032 




LDAX 

D 




127 




MOV 

D, A 




171 




MOV 

A.C 



;EOL? 

267 




ORA 

A 




312 

070 

032 


JZ 

ER8 




076 

251 



MV I 

A,251Q 



CHECK FOR ) 

276 




CMP 

M 



302 

070 

032 


JNZ 

ER8 




043 




I NX 

H 



BUMP PNTR'S 

01 5 




OCR 

C 




345 

305 




PUSH 

PUSH 

H 

B 



SAVE H.L,B,C 

STORE PROGRAM SEGMENT 

001 

167 

060 


LX 1 

B,GREG 



IN RAM,START AT GREG 

041 

1 07 

030 


LX 1 

H,RINST 



ADD. OF INST'S 

036 

005 



MV I 

E,5 



NUMB. OF BYTES 

1 76 


VI : 

MOV 

A,M 



GET BYTE 

002 




STAX 

B 



STORE IN RAM 

043 




I NX 

H 




003 




I NX 

B 




035 




OCR 

E 



BUMP PNTR'S.DCR CNT 

302 

046 

030 


JNZ 

VI 




04 f 

1 70 

060 


LX I 

H,GREG*1 



STORE PORT = 

162 


MOV 

M, D 



I N RAM 

303 

167 

060 


JMP 

GREG 



OK - TRANSFER 

041 

171 

060 HOME: 

LX I 

H,GREG+2 



; SET UP FOR FLOAT 

167 




MOV 

M, A 



; STORE AWAY INPUT 

053 




OCX 

H 




257 




XRA 

A 



;ZERO OUT HIGHER BYTES 

1 67 




MOV 

M, A 



BUT CHAR, DOESN'T MATTER 

053 




OCX 

H 




167 




MOV 

M, A 




315 

234 

01 7 


CALL 

DFXL 



; FLOAT IT 

021 

I 67 

060 


LX I 

D,GREG 



; FIX D,E RESTORE C,H,L 

301 




POP 

B 




341 




POP 

H 




31 1 




RET 





333 

000 

RINST: 

IN 

0 



RAM INSTRUCTIONS 

30? 

065 

030 


JMP 

HOME 




315 

024 

022 K.0NT: 

CALL 

NUMB 



NUMBER 

332 

1 30 

030 


JC 

OKK 




076 

256 



MV I 

A,2560 



DEC. PNT.? 

276 




CMP 

M 




302 

070 

032 


JNZ 

ER8 




076 

00 1 

OKK: 

MV I 

A, 1 



MODE 1 1, IE. INPUT FROM SOURCE 

31 5 

1 44 

030 


CALL 

RDKON 



READ CONSTANT TO GREG 

332 

1 76 

030 


JC 

ER9 



IF ERROR THEN CY=1 

021 

167 

050 


LX I 

D,GREG 



PNTS. TO CONSTANT 

31 1 




RET 







•THIS ROUTINE READS A CONSTANT INT( 

5 GREG FROM ASCII 




CHARACTERS POI 

NTED TO BY 

HL 

AND C 




ENTER 

WITH A-0 

=> DATA FROM 

TTY 





ENTER 

WITH A=1 

=> DATA FROM 

SOURCE 




RETURN 

WITH CY 

=1 => ERROR 

IIS 

CONVERSION 

062 

205 

060 RC.-sCN: 

STA 

MODE 



SAVE MODE FOR ROUT. 1NP 

042 

1 71 

062 

206 

060 


SHLD 

MOV 

STA 

HLINP 
a o 



SAVE HL FOR ROUT. INP 

204 

060 


CREG 



SAVE C FOR ROUT. INP 

041 

167 

C60 


LX I 

H,GREG 



WHER VALUE WILL GO 

016 

1 46 



MV I 

C,SCR AND 
FINPT 

377Q 

SET UP AND CALL FINPT 

315 

350 

01 7 


CALL 



05? 

206 

060 


LHLO 

HLINP 



RETORE H,L AND C 

07 2 

204 

060 


LDA 

CREG 




1 1 7 




MOV 

C.A 




31 1 




RET 




DONE 

076 

01 1 

ER9: 

MV I 

A, 9 




303 

276 

025 


JMP 

ERROR 







VAR DECIDES WHETHER A TOKEN 

IS 





A VAR I 

ABLE IF 

SO CY- 1 AND 







ADDRESS IS COMPUTED,(SUBSCRIPT IS 





EVALUATED ETC. 

), RETURNS 

WITH DE PNTING 




TO VAR 

. REFERENCED H.L.C. 

UPDATED 





A, B DE 

STROYED 








IF NOT 

A VARI3LE CY=0 




315 

042 


H, L, C 

ARE LEFT 

UNTOUCHED 




022 VAR: 

CALL 

ALPHA 



1ST CHAR A LETTER? 

320 




RNC 




NO-NOT VAR. 

043 




I NX 

H 



BUMP PNTR'S 

015 




DCR 

C 




Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


40 







01 !211 
01 -121 4 
014215 
014217 
014220 
014221 
014222 
014225 
Oi4230 
0142 ? 3 
014274 
01 4?.'J 6 
01 1241 
o-424^ 
014243 
014245 
Oi4247 
014250 
014251 
01425? 
014255 
01420D 
01 42C>1 
014263 
014265 
014266 
014270 
01427? 
014274 
014275 
014300 
014301 
014202 
014303 
014304 
014305 
014306 
014307 
014310 
014313 
014314 
014315 
014316 
014317 
014320 
014322 
014325 
014327 
014330 
014333 
014334 
014335 
014340 
014343 
01 424 1 
01 4 3 4 5 
014346 
014347 
014302 
014355 
014256 
014361 
014364 
014365 
014366 
014271 
Oi437? 
0!4374 
014377 
014400 
014 40i 
014402 
014403 
014401 
014405 
0144C5 
014407 
014410 
0144il 
014412 
014413 
014414 
014415 
014416 
014417 
014420 
014421 
014422 
014423 
014424 
014425 
014426 
014427 


January, 1977 


302 

255 

030 


JNZ 

MORE 

MORE TO LINE 

305 



SCI : 

PUSH 

B 

SAVE B.EOL 

Oi 6 

000 



MV I 

C,0 

SET FOR CALL TO FSYM 

053 




DCX 

H 

GET SINGLE LETTER 

1 06 




MOV 

B, M 

VAR TO B 

043 




I NX 

H 


303 

307 

030 


JMP 

SCALR 


2 i 5 

042 

022 

more: 

CALL 

ALPHA 

2ND A LETTER? 

322 

252 

030 


JNC 

SFSO 

SO FAR SO GOOD 

305 




PUSH 

B 

SAVE C 

076 

002 



MV I 

A,2 

CHECK FOR DELIMITER 

215 

067 

02 2 


CALL 

SYMSRT 


301 




POP 

B 

RESTORE C 

074 




1 NR 

A 

FOUND? 

302 

214 

030 


JNZ 

SCI 

YES 

014 



BUPT: 

1 NR 

C 

NOT A VAR. 

053 




DCX 

H 

BACK UP PNTR'S 

267 




ORA 

A ; 

CY=0 AND RET 

31 1 




RET 



315 

024 

022 

SFSO: 

CALL 

NUMB 

TEST FOR NUMBER 

3?2 

31 7 

030 


JNC 

ARCK 

MAYBE AN ARRAY 

0 13 




I NX 

H ; 

ITS A SCALAR 

015 




DCR 

c 

BUMP PNTR'S 

312 

300 

030 


JZ 

SLOAD 

EOL 

305 




PUSH 

B 

SAVE C 

076 

002 



MV I 

A,2 

SET UP FOR SYMSRT 

315 

067 

022 


CALL 

SYMSRT 

TEST FOR LEGAL 

301 




POP 

B 

GET C BACK 

074 




1 NR 

A 

DELIMITER FOUND? 

312 

070 

032 


JZ 

ER8 

NO, ERROR 

053 



sload: 

OCX 

H 

MOVE BACK, 

305 




PUSH 

B 

SAVE C, 

1 1 6 




MOV 

C, 14 

GET VAR. INTO 

053 




DCX 

H 

B, C FOR FSYM 

1 06 




MOV 

B,M 


043 




I NX 

H 


043 




1 NX 

H 


353 



SCALR: 

XCHO 


SAVE H,L IN D.E 

315 

015 

026 


CALL 

FSYM 

GET PNTR TO VALUE 

353 




XCHG 


RESTORE H,L PNTR TO D 

301 




POP 

B 

GET C REG BACK 

067 




STC 


SET CY,RET 

31 1 




RET 



1 76 



arck: 

MOV 

A.M 

ARRAY CHEK, GET CHARA 

376 

250 



CPI 

2500 

IS IT (? 

312 

343 

030 


JZ 

ARYES 

YES,ITS AM ARRAY 

076 

002 



MV I 

A.2 

NO-CHEK FOR LEGAL DEL 

305 




PUSH 

B 

SAVE C 

315 

367 

022 


CALL 

SYMSRT 


301 




POP 

B 

RESTORE C 

074 




I NR 

A 

DELIMITER FOUND? 

51 2 

070 

032 


JZ 

ER8 


303 

214 

030 


JMP 

SCI 

1 CHAR. SCALAR VAR. 

053 



ARYES: 

DCX 

H ;YES-WE HAVE ARRAY 

1 76 




MOV 

A, M 

GET VAR. 

043 




1 NX 

H 


365 




PUSH 

PSW 

SAVE VAR. 

315 

373 

025 


CALL 

I CPS 

BUMP PNTR'S 

315 

335 

031 


CALL 

EVAL 

EVALUATE SUBSCRIPT 

345 




PUSH 

H 

SAVE REG H,L 

041 

1 74 

060 


LX! 

H,FRE01 


315 

271 

027 


CALL 

COPDH 

COPY IT 

353 




XCHO 



311 




POP 

H 

RESTORE H,L 

315 

053 

031 


CALL 

FIX 

FIX VALUE 

070 

251 



MV! 

A,251Q 

CHECK FOR ) 

276 




CMP 

M 


302 

070 

032 


JNZ 

ER8 


043 




I NX 

H 


015 




OCR 

C 

BUMP PNTR'S 

023 

0?3 




1 NX 

I NX 

8 

PNT TO LOWER 2 BYTES 

032 




LDAX 

0 


107 




MOV 

8, A 

H-BYTE TO B 

023 




I NX 

D 

PNT TO LOW BYTE 

032 




LDAX 

0 

LOW BYTE TO A 

267 




ORA 

A 

KILL CY 

027 




RAL 


START MULT OF OFFSET 

1 37 




MOV 

E, A 

BY 4(BYTES/FLTPT «> 

1 70 




MOV 

A, B 

GET H BYTE 

027 




RAL 



1 27 




MOV 

D.A 

DE IS OFFSET*2 

1 73 




MOV 

A,E 

GET LOW 

267 




ORA 

A 

KILL CARRY 

027 




RAL 



137 




MOV 

E, A 


172 




MOV 

A, 0 


027 




RAL 



1 27 




MOV 

D.A 


361 




POP 

PSW 

DE CONTAIN 0FFSET*4 

305 




PUSH 

B 

GET VAR., SAVE C 

1 1 7 




MOV 

C. A 


006 

000 



MV! 

B, 0 

SETUP TO CALL FSYM 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 31 


41 







014431 

345 




PUSH 

H 

;SAVE H.L 

014432 

o 1 5 

015 

026 


CALL 

FSYM 

; GET START ADD. 

01 4435 

332 

045 

031 


JC 

AFOND 


01 4140 

0/6 

022 



MV 1 

A, 12H 

;ERROR 12 

014442 

303 

276 

025 


JMP 

ERROR 

;ARRAY REF. NOT DIM'ED. 

014445 

031 


AF0ND: 

DAO 

D 

;H,L NOW PNT TO START OF 

014445 

353 




XCHO 


;ARRAY, ADD OFFSET, EXCHO 
;RESTORE FNTR'S AND RET. 

01 4447 

341 




POP 

H 

014450 

301 




POP 

B 


014451 

067 




STC 


SET CY 

014452 

31 1 



ROUTINE 

RET 

TO FIX 

FLOATING POINT 






NUMBERS 

, ALL REG'S BUT A ARE 






MAINTAINED. DE 

PNT TO 4 BYTES 






OF = TO 

BE FIXED 


014453 

305 


FIX: 

PUSH 

B 


014454 

345 




PUSH 

H 


014455 

325 




PUSH 

D 

; SAVE REG'S 

014456 

023 




I NX 

0 


014457 

023 




I NX 

D 


014460 

023 




I NX 

0 

; PNT TO 4TH BYTE 

014461 

032 




LDAX 

D 


014462 

365 




PUSH 

PSW 

;SAVE CHAR. (FOR SIGN) 

014463 

346 

1 77 



ANI 

1 77Q 


014465 

027 




RAL 

;CHEK IF EXP SIGN IS - 

014466 

027 




RAL 



014467 

332 

1 06 

031 


JC 

MINSE 


014472 

037 




RAR 



014473 

037 




RAR 


;RESTORE CHAR 

014474 

376 

030 



CPI 

300 

;IS IT TOO BIG? 

014475 

332 

1 1 0 

031 


JC 

GOOD 


014501 

076 

023 



MV 1 

A, 13H 

;ERROR 13 

014503 

303 

276 

025 


JMP 

ERROR 

jFIX = TOO BIG 

0145C6 

037 


M1NSE: 

RAR 



014507 

037 




RAR 



014510 

022 


0000 : 

STAX 

0 

;ABSOLUTE VALUE 

014511 

033 




DCX 

0 


014512 

033 




OCX 

D 


014513 

033 




DCX 

D 

;MOV PNTR BACK 

014514 

C 41 

1 74 

060 


LX 1 

H,FREG1 


014517 

315 

271 

027 


CALL 

COPDH 

;COPY TO FREG1 

014522 

041 

200 

060 


LX 1 

H,FREG2 

;STORE .5*2**24 IN 

014525 

021 

205 

031 


LX 1 

0,FDAT 

;FREG2 

014530 

315 

271 

027 


CALL 

COPDH 

;COPY IT 

014533 

041 

1 74 

060 


LX I 

H.FREG1 

;SET UP TO CALL LADD 

014536 

006 

200 



MV I 

B,FREG2 AND 3770 


014540 

016 

1 46 



MV I 

C.SCR AND 377Q 


014542 

315 

320 

01 7 


CALL 

LADD 

,' ADD THEM, RESULT IN FREG1 

014545 

041 

174 

060 


LX I 

H.FREG1 

PSW 


014550 

361 




POP 

j GET SIGN AND ADD. 

014551 

321 




POP 

□ 

014552 

027 




RAL 



014553 

076 

000 



MV I 

A.O 

i GET SIGN ONLY 

014555 

037 




RAR 


014556 

1 06 




MOV 

B,M 

1 GET BYTE1 

014557 

022 




STAX 

D 

.•STORE BYTE 1 OF FIX 

014560 

1 70 




MOV 

A.B 

1 77Q 

014561 

346 

1 77 



ANI 

;CLEAR HIGH BIT (FROM ADD) 

014563 

023 




I NX 

D 

014564 

043 




I NX 

H 


014565 

106 




MOV 

B, M 

i GET BYTE 2 

014563 

022 




STAX 

0 

;STORE BYTE 2 OF FIX 

014537 

023 




1 NX 

0 

014570 

1 70 




MOV 

A, B 


014571 

043 




I NX 

H 


014572 

106 




MOV 

B.M 

;GET BYTE 3 

014573 

022 




STAX 

D 

;STORE BYTE 3 OF FIX 

014574 

1 70 




MOV 

A.B 

014575 

023 




I NX 

0 


014576 

022 




STAX 

0 

;STORE BYTE 4 OF FIX 

014377 

033 




DCX 

0 

;FIX D PNTR 

014600 

033 




DCX 

D 

014601 

033 




DCX 

0 


014602 

341 




POP 

H 


014603 

301 




PGP 

B 


014004 

31 1 




RET 



014505 

200 

000 

000 030 FDAT: 

DB 

200Q,0.0.30Q 






INP SAVES ALL REG'S 






SERVES 

AS BUFFER BETWEEN F1NPT AND 





DATA INPUT. IF 

M0DE=0, DATA COMES 

FROM TTY 





IF MODE 

=1 DATA 

COMES FROM SOURCE 

STMTS. 





1 N ALL 

CASES HL 

,C ARE UPDATED FROM HLINP. AND 





CREG AND RETURNED TO THOSE LOCATI 

ONS 

014611 

345 



NP: 

PUSH 

H 

; SAVE ALL REG'S 

014612 

325 




PUSH 

D 


014613 

305 




PUSH 

B 


014614 

052 

206 

060 


LHLD 

HLI NP 

;GET PNTR'S 

014617 

072 

204 

060 


LDA 

CREG 


014622 

1 1 7 




MOV 

C. A 


014623 

267 

235 

240 

031 


ORA 

A 

;CHECK FOR EOL 

014324 
014627 

302 

076 

SPACE: 

JNZ 

MV 1 

CHKMO 

A.240Q 

;NO CHECK MODE 
;SEND A SPACE 

014631 

301 


I DONE: 

POP 

B 

jRESTORE REG'S 


Page 32 


42 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 





014632 

321 




POP 

D 



014633 

341 




POP 

H 



014634 

31 1 




RET 


AND RETURN 


014635 

072 

205 

063 

CHKMD: 

LDA 

MODE 

GET MODE 


014640 

075 




DCR 

A 

CHECK IT 


014641 

312 

255 

031 


JZ 

M0DE1 

MODE IS 1 


014644 

176 




NOV 

A, M 

MODE 0, GET CHAR. 


014645 

376 

254 



CPI 

' , ' OR 200Q 

IS IT A ' '* 

YES - SEN6 A SPACE 


01 16 17 

312 

227 

031 


JZ 

SPACE 


014652 

303 

321 

031 


JMP 

BMPTR 

NO - SEND IT 

TO A) 

014655 

315 

024 

022 

MCDE1: 

CALL 

NUMB 

NUMBER? (ALSO LOADS IT 

01 4'"-60 

332 

321 

031 

JC 

BMPTR 

YES - SEND IT AND BUMP 

PNTR' 

014663 

376 

256 



CPI 

256Q 

DEC. PNT.? 


014665 

312 

321 

031 


JZ 

BMPTR 


014570 

376 

305 



CPI 

3050 

E? 


014672 

312 

321 

031 


JZ 

BMPTR 



014675 

376 

253 



CP! 

2530 

♦? 


014677 

312 

307 

031 


JZ 

CHEKE 



014702 

376 

255 



CPI 

255Q 

- t 


014704 

302 

227 

031 


JNZ 

SPACE 

SEND A SPACE 


01470 7 

107 



CHEK.E: 

MOV 

B, A 

Ch’EK IF E PRECEDES ♦ , - 


014710 

053 




DCX 

H 

BACK UP AND GET PRE¬ 


014711 

1 76 




MOV 

A.M 

CEDING CHARACTER 


0147i2 

376 

305 



CPI 

305Q 

IS IT E? 


0147 i 4 

302 

227 

031 


JNZ 

SPACE 

NO.+OR- WAS DEL I MITTER 


014717 

1 70 




MOV 

A, B 

YES,GET ♦ OR - 


014720 

043 




I NX 

H 

RESTORE H,L 


014721 

043 



BMPTR: 

I NX 

H 

BUMP AMD STORE PNTR'S 


014722 

015 




DCR 

C 


014723 

042 

206 

060 


SHLD 

HLI NP 



014726 

041 

204 

060 


LX I 

H,CREG 



014731 

161 




MOV 

M,C 



014732 

303 

231 

031 


JMP 

I DONE 

RESTORE REG'S AND RETURN 


THIS ROUTINE WILL EVALUATE UNARY AND/OR 
BINARY EXPRES IONS CALLED WITH H AND L 
POINT INS TO FIRST CHAR. OF EXP.,C CONTAINS 
NUMBER OF CHAR'S LEFT IN LINE. RETURNS 
0(H) AND E(L) POINTING TO THE ANSWER 
THIS ROUTINE CALLS ITSELF RECURSIVELY 
IN ORDER TO EVALUATE SUBSCRIPT 


;EXPRESIONS. REG A,B DESTROYED 
:C, H, L ARE UPDATED 
EVAL: MVI A.255Q 


014735 

076 

255 


EVAL: 

MVI 

A,2550 

IS IT UNARY - 

014737 

276 




CMP 

M 

Z=1 => YES 

014740 

365 




PUSH 

PSW 

Z=0 => NO 

014/41 

302 

347 

031 


JNZ 

ECAV 


014744 

315 

373 

025 


CALL 

I CP3 

BUMP POINTER 

014747 

315 

324 

027 

ECAV: 

CALL 

VALUE 

GET PNTR. TO VALUE 

014752 

345 




PUSH 

H 

GET VALUE TO FREG1 

014753 

041 

1 74 

060 


LX I 

H,FREG1 


014756 

315 

271 

027 


CALL 

COPDH 


014751 

353 




XCHG 



014762 

341 




POP 

H 


014763 

361 




POP 

PSW 

GET SIGN 

014764 

302 

002 

032 


JNZ 

DOL 

SHALL WE NEGATE? 

014767 

023 




I NX 

0 

YES, POINT TO CHAR. 

014770 

023 




I NX 

D 


014771 

023 




I NX 

0 


014772 

032 




LDAX 

D 

AND LOAD TO A 

014773 

027 




RAL 


ROTATE SIGN TO CY 

014774 

077 




CMC 


COMPLEMENT IT 

014770 

037 




RAR 


ROTATE BACK 

O’. 4776 

022 




STAX 

0 

STORE AWAY 

014777 

033 




DCX 

D 

AND FIX PNTR. 

015000 

033 




DCX 

D 


015001 

033 




DCX 

D 


015002 

1 71 



DOL: 

MOV 

A.C 

IS THIS END OF LINE? 

015003 

267 




ORA 

A 


015004 

310 




RZ 


YES-RETURN 

010005 

305 




PUSH 

B 

SAVE C 

015005 

C-76 

002 



MVI 

A,2 

NO SET UP TO CALL 

010010 

31 5 

367 

022 


CALL 

SYMSRT 

SYMSRT AND CALL 

015013 

301 




FOP 

B 

RESTORE C 

015014 

074 




I NR 

A 

DELIMITER FOUND? 

015015 

312 

070 

032 


JZ 

ER8 

NO, ERROR 

015020 

326 

012 


EOK: 

SUI 

10 

CHECK FOR EXPRESSION 

015022 

330 




RC 


DELI MI TER 

015023 

360 




PUSH 

PSW 

SAVE OVERATI ON 

015024 

315 

373 

025 


CALL 

ICP8 

BUMP PNTR'S 

015027 

267 




CRA 

A 

CLEAR CY 

015030 

345 



AGA: 

PUSH 

H 

GET BYTES OF NUMBER 

015031 

032 




LDAX 

D 

AND PLACE ON STACK 

015032 

1 57 




MOV 

L, A 


015033 

023 




I NX 

D 


015034 

032 




LDAX 

D 


016035 

023 




I NX 

D 


015035 

1 47 




MOV 

H, A 

2 BYTES TO H,L 

015037 

343 




XTHL 


XCHANGE, RESTORES H, L 

O' 5040 

077 




CMC 



015041 

332 

030 

032 


JC 

AGA 

ANOTHER PASS? 

015044 

315 

324 

027 


CALL 

VALUE 

GET 2ND VALUE 

015047 

171 




MOV 

A.C 

CHECK FOR END OF LINE 

015050 

267 




CRA 

A 

IF SO => WELL FORMED 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 33 


43 







015031 

312 

075 

032 


JZ 

WFOR 

015054 

305 




PUSH 

B 

015005 

076 

002 



MV I 

A,2 

015057 

315 

367 

022 


CALL 

SYI1SRT 

015062 

301 




POP 

B 

015063 

3 76 

012 



CPI 

io 

010005 

322 

075 

032 


JC 

WFOR 

015070 

076 

010 


ER8: 

MV 1 

A, 8 

015072 

303 

276 

025 


JMP 

ERROR 

015075 

305 



WFOR: 

PUSH 

B 

015076 

345 




PUSH 

H 

015077 

041 

200 

050 


LX I 

H,FREG2 

015102 

315 

271 

027 


CALL 

COPDH 

015105 

321 




PCP 

D 

015106 

301 




POP 

B 

015107 

341 




PCP 

H 

015110 

042 

1 76 

060 


SHLD 

FREG1 *2 

015113 

341 




POP 

H 

015114 

C42 

1 74 

060 


SHLD 

FREG1 

015117 

353 




XCHG 


015120 

361 




POP 

PSW 


THIS ROUT!HE PERFORMS BINARY 
S,C,H,L AF.. LEFT UNDISTURBED 
D,E PNT TO RESULT 
OPERATIONS ARE SPECIFIED BY 


;SAVE C 

;ELSE CALL 5YMSRT TO 
; ClIEK FOR EXP. DEL. 

;RECOVER IT 

;YES, WELL FORMED 
;ILL-FORMED EXP. 

;SAVE C, AND H,L 

;COPY 2ND VALUE TO 
;FREG2 

;GET BYTES FROM STACK 
;INTO FREG1+2 

;AND NEXT 2 BYTES 
;FROM STACK TO FREG1 

;GET OPERATION 

OPERATIONS ON OPERANDS IN FREG1 AND 
. A IS DESTROYED FREG2 

A REGISTER AS FOLLOWS! 


A = 0 

= > 

FREG1 

X 

FREG2 

A=1 

= > 

FR2G1 

/ 

FREG2 

A = 2 

= > 

FREG1 

♦ 

FREG2 

A = 3 

= > 

FREG1 

- 

FREG2 


015121 

305 



; (ERROR 

8) AND 

THE INTERP 



&INOP: 

PUSH 

B 

015122 

? 45 



PUSH 

H 

015123 

041 

1 74 

060 


LX I 

H, FREG1 

015126 

015130 

006 

016 

200 

1 46 



PM 

S; r s» 

015132 

075 




DCR 

A 

015133 

372 

235 

032 


JM 

FMULT 

015136 

312 

243 

032 


JZ 

DIV 

015141 

075 




DCR 

A 

015142 

312 

1 54 

032 


JZ 

ADDD 

015145 

075 




DCR 

A 

015146 

312 

227 

032 


JZ 

SUBB 

015151 

303 

070 

03? 


JMP 

ER8 

015154 

315 

320 

01 7 

ADDD: 

CALL 

LADD 

015157 

124 



AS3C: 

MOV 

0. H 

015160 

1 35 




MOV 

E, L 

015161 

267 



FPERR: 

ORA 

A 

015162 

312 

224 

032 

JZ 

NFPER 

015165 

325 




PUSH 

D 

015166 

365 




PUSH 

PSW 

015167 

015172 

315 

361 

320 

022 


m L 

m j 

015173 

041 

215 

032 


LXI 

H,WFPER 

015176 

345 




PUSH 

H 

015177 

041 

1 32 

024 


LX I 

H,ODATA 

015202 

027 




RAL 


015203 

332 

077 

024 


JC 

FOR 1 2 

015206 

02 7 




J R S L 

015207 

332 

1 00 

024 


FORI 1 

015212 

303 

101 

024 


JMP 

FOR 10 

015215 

041 

1 32 

024 

WFPER: 

LX I 

H,ODATA 

015220 

315 

337 

023 


CALL 

ERLN 

015223 

321 




POP 

D 

015224 

341 



NFPER: 

POP 

H 

015225 

301 




POP 

B 

015226 

31 1 




RET 


015227 

315 

331 

01 7 

SUBB: 

CALL 

LSUB 

015232 

303 

157 

032 


JMP 

ASBC 

015235 

315 

323 

01 7 

FMULT: 

CALL 

LMUL 

015240 

303 

246 

03 ? 


JMP 

MDBC 

01524? 

31 5 

326 

01 7 

DIV: 

CALL 

LDIV 

01524G 

124 



MDBC: 

MOV 

D, H 

0152 17 

1 31 




MOV 

E.C 

015250 

303 

161 

032 


JMP 

FPERR 





;PRINT 
PRI : 

PROCESSOR 

015253 

052 

1 33 

060 

LHLD 

CPNT 

015256 

043 




I NX 

H 

015257 

043 




I NX 

H 

015260 

043 




I NX 

H 

015261 

315 

366 

023 


CALL 

I CP7 

015234 

043 




I NX 

H 

015265 

01 5 




DCR 

C 

015266 

006 

000 



MV I 

B, 0 

015270 

302 

304 

032 


JNZ 

PLOOP 

015273 

004 




I NR 

B 

015274 

076 

000 



MV I 

A, 0 

015276 

315 

255 

022 


CALL 

PAD 

01 5 J01 

303 

134 

033 


JMP 

PEND 

015304 

1 76 



PLOCP: 

MOV 

A, M 

015305 

376 

242 



CPI 

'"'+ 200Q 


IN CASE Or ARITHMETIC ERROR A MESSAGE IS SENT TO USER. 

IF A CONTAINS ILLEGAL OPERATION REQUEST ERROR IS SENT TO USER 
(ERROR 8) AND THE I INTERPRETER IS ABORTED. 

INOP: PUSH B jSAVE REG'S 

PUSH H 

LX I H.FREG1 ;SET UP PNTR'S TO 

MV I B.FREG2 AND 3770 ;F REG'S AND SCR AREA 

MVl C,SCR AND 377Q :AND DO OPERATION 

DCR A 

JM FMULT ;0,1=>« OR / 

JZ DIV ;2,3=>+ OR - 


ILLEGAL OPER. 

DO ADDITION 

FIX PNTR'S FOR RET. 

SET FLAGS 
NO ERROR 
SAVE DE 
SAVE A 
DUMP BUFFER 
GET A BACK 
RETURN ADDRESS 
SAVE ON STACK 
MESSAGE TABLE 
UNDERFLOW? 

YES 

OVERFLOW? 

YES 

NO - ITS ZERODIVIDE 
MESSAGE TABLE 
PRINT 'IN LINE 
RESTORE REG'S 


(USE PART OF 
ERROR 


;DO SUBTRACTION 
;DO MULT. 

;DO DIV. 

iAND FIX PNTR'S FOR RET. 
;CHECK FOR ERROR 

;INCR. PAST KEYWORD 


j BUMP PNTRS 

;SET CHAR CNT 
;CONTINUE IF MORE 
.•NOTHING MORE, PAD A NULL 


;WRITE IT AND CONTINUE 
;GET CHARACTER 

; Is it -? 


Page 34 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


44 






QUOTE: 


015307 

302 

354 

032 

0 1 5312 

31 5 

366 

025 

01 D 3 i 5 

1 76 



015316 

376 

242 


015320 

312 

336 

032 

015323 

004 



015324 

1 20 



015325 

006 

001 


015327 

315 

255 

022 

015332 

102 



015333 

303 

312 

032 

015335 

043 



015337 

01 5 



015340 

31 2 

134 

033 

015343 

1 76 



015344 

376 

242 


015346 

312 

323 

032 

015351 

3C3 

03 s 

033 

015354 

315 

042 

022 

015357 

332 

003 

033 

015362 

315 

024 

022 

015365 

332 

003 

033 

015370 

1 76 



015371 

376 

256 


015373 

31 2 

003 

033 

015375 

376 

255 


0154OC 

302 

035 

03 3 

015403 

305 



01543 ' 

315 

335 

031 

015407 

305 



015410 

345 



015411 

353 



015412 

016 

1 46 


01541 1 

315 

345 

01 7 

015417 

341 



015420 

301 



015421 

1 71 



015422 

301 



015423 

1 1 7 



015424 

267 



015425 

312 

1 34 

033 

015430 

0 76 

013 


015432 

200 



015433 

107 



01543-1 

1 76 



015435 

376 

273 


015437 

312 

1 1 7 

033 

015442 

376 

254 


0154 M 

302 

072 

027 

015447 

257 



015450 

306 

015 


015452 

270 



015453 

312 

061 

033 

015456 

322 

1 03 

033 

01 5-16 1 

376 

064 


015463 

302 

050 

033 

015465 

315 

220 

022 

015471 

0C6 

000 


015473 

043 



01547 1 

015 



015475 

312 

1 34 

033 

015600 

303 

304 

032 

015303 

220 



015504 

120 



015605 

1 37 



015506 

1 07 



015607 

076 

240 


015511 

3" 5 

255 

022 

015514 

1 72 



015515 

203 



015516 

107 



015517 

0-13 



015620 

015 



015521 

302 

304 

032 

015524 

026 

001 


013326 

315 

322 

02 2 

01553! 

303 

i 37 

033 

015634 

31 5 

320 

022 

015637 

303 

2 42 

03 3 


015042 171 

015545 062 137 060 

015516 052 133 050 

015551 043 

015052 043 

01O553 043 

015554 315 366 025 

01555/ 315 366 025 

015062 305 

015563 345 

0i5364 006 001 

016565 076 072 


QOTCK: 


OCHEK: 


EXPRE: 


PRTIT: 


SCOLN: 


ADFLD: 


ONWD: 


JNZ 

EXPRE 

; NO 

CALL 

I CP7 

; GET CHARACTER TO A 

MOV 

A.M 


CP! 

' '• ' +200Q 

; I S IT " ? 

JZ 

OCHEK 


I NR 

B 

; INCREMENT CNT 

MOV 

0 , B 

; SAVE IN D 

MV I 

B, 1 

; PAD ONCE 

CALL 

PAD 


MOV 

B,D 

;RESTORE CNT 

JMP 

QUOTE 

; AGAIN 

1 NX 

H 

; BUMP PNTRS 

OCR 

C 


JZ 

PEND 

; EOL 

MOV 

A.M 


CPI 

' '• ' +200Q 

; ANOTHER "? 

JZ 

GOTOK 


JMP 

SCOLN 


CALL 

ALPHA 

;IS IT A LETTER 

JC 

PRT 1 T 

;YES, EVALUATE AND PRINT 

CALL 

NUMB 

; IS IT A NUMB? 

JC 

PRT IT 

; YES, EVALUATE AND PRINT 

MOV 

A, M 


CPI 

' .'+200Q 

; IS IT A DECIMAL PNT? 

JZ 

PRT! T 

; YES EVALUATE, PRINT 

CP! 

' - ' +200Q 

; IS IT A -? 

JNZ 

SCOLN 

; NO, CHECK FOR ; 

PUSH 

B 

; SAVE CNT 

CALL 

EVAL 

.•EVALUATE EXPRES I ON 

PUSH 

B 

; SAVE C,H,L 

PUSH 

H 


XCHQ 


; DE TO HL 

MV I 

C,SCR AMD 3770 

; SET UP, CONVERT 

CALL 

CONV 


POP 

H 

; RESTORE REG'S 

POP 

B 


MOV 

A.C 


POP 

B 


MOV 

C, A 


ORA 

A 

; CHECK EOL 

JZ 

PEND 


MV I 

A, 1 1 

; UPDATE CNTR 

ADD 

B 


MOV 

B. A 


MOV 

A.M 

; GET CHAR. 

CPI 

' • ' +200Q 

: IS IT ; ? 

JZ 

SONWD 

; YES 

CP! 

' ' +2000 

; IS IT , ? 

JNZ 

ER6 

; NO-UNEXPECTED CHAR. 

XRA 

A 

; ZERO A 

AO I 

13 

; ADD FIELD LENGTH 

CMP 

B 

; COMPARE TO CNT 

JZ 

$ *6 


JNC 

FLDFO 


CPI 

52 

; LAST FLO? 

JNZ 

ADFLD 


CALL 

WRIT 

; YES - WRITE LINE 

MV I 

B.O 

;RESET CNT 

I NX 

H 

;BUMP PNTRS 

DCR 

C 


JZ 

PEND 



JMP r LOOP 

FLDFO: SUB B ;FOUND 

MOV D.B ;DE TER 

KOV E.A ; SET U 

MOV B,A 

MV I A.240Q 

CALL PAD ; PAD S 

MOV A,D 

ADD E ;NEW C 

MOV B, A : SAVE 

SONWO: 1 NX H :CHECK 

OCR C 

JNZ PLOOP 

MV! 0.1 ;SUPPR 

CALL WRIT1 

JMP $+6 

PEND: CALL WRIT •DUMP 

JMP I END 

;INPUT PROCESSOR - READS VALUES FROM TTY 
jTHEY MUST-BE DELIMITED BY COMMAS ONLY 

INPER: 


;FOUND FIELD 

;DE TERM IN OF SPACES TO’ PAD 

;SET UP TO CALL PAD 

;PAD SPACES 

;NEW CNT 
;SAVE IN B 
;CHECK EOL 

;SUPPRESS CR/LF 

;DUMP BUFFER, CONTINUE 


;IN CASE OF ERROR 
; SAVE 

;INPUT LINE (V-STRINO) PNTR 
;ADJUST PNTR'S 


PRMPT: 


;SAVE PNTR'S 
;SEND PROMPT 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 35 


45 






u i 55 70 
o ; 1 

ni bi>-.M 
oi 55 7 7 
01 cl' v? 
01 Sc-05 

01 boos 
oi :>eo7 
01 SCI 0 
01 3 1 1 
010014 
0100 ! 7 
o’ 5522 
oi OL.no 
O'5630 
010003 
01 CO3 1 
01 0037 
Oi5032 
015645 


015650 
015651 

015652 
010653 
015654 
01 565.5 
015651 
015602 
010663 
015636 
010057 
01 Ob 70 
015671 
015572 
015073 
015075 
015/00 
015701 
015702 
015705 
01 i'» 7‘C 6 
01 0/07 
015712 
Oi57 1 3 
0157iG 
0157 1 7 
01572) 
015721 
015722 
015723 
015724 
0’5726 
0 t 'j 7 5 I 
01575 1 
015735 
01 5/33 
015737 
015740 
015741 
015742 
Oi5/45 
015/50 
015753 
015754 
015755 
015756 
015757 
015760 

015763 
015/66 
015767 
015770 
015771 
015772 
015773 
015776 
016000 
016003 
Oi6006 
0150 I 1 
016013 
015016 


Page 36 


46 


120 




MOV 

D,e 

TO SUPPRESS CR/LF 

-i l 5 

255 

02 2 


CALL 

PAO 

PAD IT 

3>5 

322 

02? 


CALL 

WRIT! 

WRITE IT 

041 

001 

060 


LX I 

H.IBUF 

TTY 1 N 

ADD. OF INPUT BUFFER 

315 

31 1 

023 


CALL 

READ A LINE 

353 



XCHG 


AOD. OF K-STRING TO 

341 




POP 

H 

ADD. OF V-STRING 

301 




POP 

B 

V-STRING CNT TO C 

1 07 




MOV 

B, A 

K-STRING CNT TO B 

4 15 

2 50 

03 3 


CALL 

STRIN 

TRANSFER CONSTANTS T 

3 1 2 

2(77 

03 3 


JZ 

I NPOK 

NO ERROR 

04 1 

i 32 

024 


LX I 

H, ODATA 

SEND ERROR MESSAGE 

315 

102 

024 


CALL 

F0RM9 


315 

620 

022 


CALL 

WRIT 


0 72 

1 37 

050 


LDA 

PL6 

GET V-STRING CNT 

1 1 7 




MOV 

C, A 


204 

1 46 

033 


JMP 

INPER 

START AGAIN 

332 

1 62 

03 3 

INPOK: 

JC 

PRMPT 

NEED MORE CONSTANTS 

052 

1 26 

060 

I END: 

LHLD 

KFPNT 

ALL OK - GET NEW PNT 

303 

232 

025 


JMP 

I LOOP 

■CONTINUE 




; TH1 S 

ROUTINE 

TRANSFERS THE FLOATING POINT VALUES 


OF AN ASCII STRING OF CONSTANTS TO THE LOCATIONS 
SPECIFIED BY AN ASCII STRING OF VARIBLES 
POINTER AMD LINE CNT OF VAR. STRING ARE IN HL.C 
POINTER AND LINE CNT OF CONST. STRING ARE IN DE,B 
ON RETURN: 

ALL OK 

NEED MORE CONSTANTS 
ERROR IN CONVERSION 
CNT *S ARE RETURNED UPDATED 

GET V-STR1NG CNT 

TEST FOR EOL 
DONE. CY = 0 => ALL OK 
.GET CHAR. 

2000 ;IS IT A ,? 

IT'S NOT A , 

COMMA, BUMP PNTR'S 





$ 

Z = 0 

AND CY = 0 




$ 

z = o 

AND CY =1 




S 

Z=1 





;ALL POINTERS AND LINE 

1 71 



STRIN: 

MOV 

A. C 

267 




ORA 

A 

310 




RZ 


1 76 




MOV 

A, M 

376 

254 



CPI 

',' OR 

302 

266 

03 3 


JNZ 

STOKV 

043 




I NX 

H 

015 




DCR 

C 

312 

336 

033 


JZ 

ERRET 

1 70 



STOKV: 

MOV 

A, B 

267 




ORA 

A 

C67 




STC 


310 




RZ 


032 




LOAX 

0 

276 

254 



CPI 

' OR 

3 52 

305 

033 


JNZ 

stOKK 

023 




I NX 

D 

005 




DCR 

B 

312 

336 

033 


JZ 

ERRET 

305 



STCKK: 

PUSH 

B 

325 




PUSH 

D 

3 1 5 

203 

030 


CALL 

VAR 

353 




XCHG 


C 12 

212 

060 


SHLD 

VARAD 

341 




POP 

H 

1 71 




MOV 

A, C 

301 




POP 

B 

1 1 0 




MOV 

C, B 

365 




PUSH 

P&W 

325 




PUSH 

D 

C76 

000 



MV I 

A, 0 

315 

1 44 

030 


CALL 

RDKON 

32? 

341 

033 


JNC 

STNER 

341 




POP 

H 

341 

257 



ERRET: 

POP 

XRA 

H 

A 

074 




I NR 

A 

31 1 




RET 


345 



STNER : 

PUSH 

H 

052 

212 

060 


LHLD 

VARAD 

021 

1 67 

060 


LX I 

D,GREG 

315 

271 

027 


CALL 

COPDH 

321 




POP 

D 

1 01 




MOV 

B, C 

341 




POP 

H 

361 




POP 

PSW 

1 1 7 




MOV 

C, A 

303 

250 

033 


JMP 

STRIN 




; LET STMT 

PROCESSOR 

052 

1 33 

060 

LET: 

LHLD 

CPNT 

043 




1 NX 

H 

043 




I NX 

H 

043 




I NX 

H 

171 




MOV 

A, C 

267 




ORA 

A 

302 

003 

034 


JNZ 

LOK 

0 75 

007 


ER7: 

MV I 

A, 7 

303 

276 

02 5 


JMP 

ERROR 

315 

203 

030 

LCK: 

CALL 

VAR 

332 

1 ’0 

034 


JC 

SAW 

076 

003 



MV I 

A.3 

315 

367 

022 


CALL 

SYMSRT 

376 

377 



CPI 

3770 


2000 


POSSIBLE ERROR (IF EOL) 

GET K-STRING LENGTH 
TEST FOR EOL 
IN CASE IT'S EOL 

RET, CY =1 =@ NEED MORE CONSTANTS 
GET CHAR 
TEST FOR , 

NOT A , - READY TO GO 
BUMP PNTR'S 

POSSIBLE ERROR (IF EOL) 

SAVE,K-STRING CNT 
SAVE K-STRING PNTR 
ADD. TO VARIBLE TO DE 
VAR. ADD TO H,L 
SAVE 

ADDRESS OF K-STRINO 
V-STRING CNT TO A 
K-STRING CNT TO B 
K-STRING CNT TO C 
SAVE V-STRING CNT 
SAVE V-STRING ADD. 

A = 0 -Q DATA FROM TTY 
GET CONSTANT TO GREO 

EMPTY STACK 
ERROR 


SAVE K-STRING PNTR. 

GET VAR. ADD 
ADD. TO CONST. 

COPY IT TO VARIABLE LOC. 
K-STING PNTR. TO DE 
K-STRING LENGTH TO B 
V-STRING PNTR. TO HL 
V-STRING LENGTH TO C 


LOOP 

GET PNTR. 
FIX PNTR. 


;CHECK FOR EOL 


;GET ADDRESS TO VAR. 
;IT'S A VARIABLE 
;NO-CHEK FOR FUNC. 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 







01 6020 

31 ? 

070 

032 


JZ 

ER6 

016023 

075 




DCR 

A 

01 602-4 

302 

216 

034 


JNZ 

ER10 

016027 

043 




I NX 

H 

Oi6030 

043 




I NX 

H 

016031 

0-13 




I NX 

H 

01 603? 

1 71 




MOV 

A, C 

016033 

207 




ORA 

A 

016024 

31 2 

070 

032 


JZ 

ER8 

01 SC 27 

1 76 




MOV 

A, M 

01 60-10 

376 

250 



CPI 

250Q 

016042 

5 02 

070 

022 


JNZ 

ER8 

015045 

3 i 5 

373 

025 


CALL 

I CP8 

015050 

315 

335 

031 


CALL 

EVAL 

010053 

345 




PUSH 

H 

016054 

041 

1 74 

060 


LX I 

H,FREG1 

016057 

315 

271 

02 7 


CALL 

COPDH 

O' 6062 

353 




XCHG 


Oi 60>53 

341 




POP 

H 

016064 

315 

053 

031 


CALL 

FIX 

016067 

023 




I NX 

D 

01eo/o 

023 




I NX 

D 

016071 

023 




I NX 

D 

01 S'. 72 

032 




LDAX 

0 

010073 

SG5 




PUSH 

PSW 

016074 

1 73 




MOV 

A, M 

01 6075 

376 

251 



CPI 

2510 

016077 

302 

070 

032 


JNZ 

ER8 

01610 ? 

315 

373 

025 


CALL 

1 CP8 

016105 

026 

377 



MV 1 

D,3770 

016107 

1 32 




MOV 

E. D 

016110 

325 



SAW: 

PUSH 

D 

016111 

1 76 




MOV 

A, M 

0161 12 

376 

275 



CPI 

2750 

016114 

302 

0 70 

032 


JNZ 

ER8 

016117 

315 

373 

025 


CALL 

1 CPS 

016122 

315 

335 

031 


CALL 

EVAL 

016125 

341 




POP 

H 

016’26 

315 

243 

022 


CALL 

CHK1 

016131 

332 

1 42 

034 


JC 

PTFIN 

016134 

315 

271 

027 


CALL 

COPDH 

016i37 

303 

242 

033 


JMP 

1 FND 

016 '42 

041 

1 74 

060 

PTFIN: 

LX I 

H,FREG1 

016145 

315 

271 

027 


CALL 

COPDH 

01 6 50 

353 




XCHG 


016'51 

315 

053 

031 


CALL 

FIX 

016154 

023 




I NX 

0 

016155 

023 




1 NX 

D 

016156 

023 




I NX 

D 

016157 

032 




LDAX 

D 

016160 

1 1 7 




MOV 

C.A 

016161 

041 

21 1 

034 


LX 1 

H.PINST 

Oi3’C4 

021 

1 67 

060 


LX 1 

D,GREG 

016 1 67 

006 

005 



MV I 

B, 5 

016 71 

1 76 



PR 11: 

MOV 

A, M 

016172 

022 




STAX 

D 

016173 

043 




I NX 

H 

016174 

023 




I NX 

0 

016175 

005 




DCR 

B 

016176 

302 

1 71 

034 


JNZ 

PR I 1 

016201 

361 




POP 

PSW 

016202 

041 

1 70 

060 


LX I 

H,GREG+1 

016205 

167 




MOV 

M, A 

016206 

171 




MOV 

A. C 

016207 

053 




OCX 

H 

016210 

351 




PCHL 


016211 

323 

000 


P1NST: 

OUT 

0 

016213 

303 

242 

033 


JMP 

1 END 

016216 

075 

020 


ER10: 

MV I 

A, 1 OH 

016220 

303 

276 

025 


JMP 

ERROR 





: IF STMT. 

PROCESSOR 

016223 

052 

1 33 

060 

I FRT: 

LHLD 

CPNT 

016226 

043 




I NX 

H 

016227 

01 4 




I NR 

C 

016230 

315 

366 

025 


CALL 

1 CP7 

016233 

315 

335 

031 


CALL 

EVAL 

016236 

1 71 




MOV 

A, C 

016237 

267 




ORA 

A 

016240 

312 

376 

033 


JZ 

ER7 

016243 

345 



IAGA: 

PUSH 

H 

016244 

032 




LDAX 

D 

016245 

023 




I NX 

D 

016246 

1 57 




MOV 

L. A 

016247 

032 




LDAX 

D 

01 5250 

023 




I NX 

D 

0 iC ?51 

1 47 




MOV 

H, A 

016x52 

243 




XTHL 


0152 5 3 

077 




CMC 


016254 

332 

243 

03 4 


JC 

1 AGA 

0 1 62 r -7 

0 76 

002 



MV I 

A. 2 

01 S-.'tol 

315 

367 

022 


CALL 

SYMSRT 

0 1 6 c. 0 4 

7/6 

004 



CPI 

4 

016206 

332 

276 

034 


JC 

III 


;DON'T KNOW WHAT IT IS 

;ILLEGAL USE OF FUNC. 

; IT'S PUT,UPDATE H,L 

;EOL CHK 

;CHEK FOR ( 


;DUMP PNTRS 
;EVALUATE AND FIX 
;SAVE H,L 

;COPY IT 


; GET LOWEST BYTE 
;PORT = IS SAVED 

;CHECK FOR ) 

;BUMP PNTR'S 

;KEEP ADDRESS 
;CHEK FOR = 


; BUMP PNTRS 
;EVALUATE EXPRESSION 
; GET ADDRESS 

; IT WAS A PUT 
;COPY TO ADDRESS 
;CONTINUE 

;COPY VALUE TO FREG1 


;FI X THE VALUE 


;SAVE IN C 

; ADD OF BYTES TO GO TO 
; RAN AT GREG 
; BYTE CNT 

;STORE PROG. SEG. IN 
; RAM 


;GET PORT * 

;STORE 

;GET DATA OUT TO A 
;TRANSFER 

;RAM INSTRUCTIONS 


;GET PNTR., ADJUST 
;CHECK EOL 

;EVALUATE EXPRESSION 
;CHECK EOL 

;SAVE H,L, PUT VALUE ON STK 


;RESTORE H,L 

;ANOTHER PASS? 

;CHEK TYPE OF RELATION 
;WAS IT LEGAL? 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 


47 



oi e;; y i 
0102/3 
016;?; 6 
oisjuo 

016303 
016304 
016305 
016306 
016311 
Oi6313 
016315 
016-120 
01 e- >23 
016325 
016230 
016332 
016535 
016536 
013337 
016340 
016243 
016344 
016245 
016345 
016350 


016353 
016356 
016357 
016362 
016305 
016566 
016367 
016370 
CK 373 
016374 
016375 
016400 
013401 
016402 
013405 
0!5406 
013407 
016410 
016411 
01C41 4 
016415 
016421 
01C422 
016425 
016427 
016430 
016433 
016436 
016437 
01 54 42 
016444 
01 54 -15 
016450 
ni245i 
016454 
0!6455 
016457 
016462 
016453 
016 iOS 


016 171 
016474 
016477 
016500 
016502 
016503 
016604 
016505 


Page 38 


075 

024 


ER14: MV I 

A. 1 4H 


303 

276 

025 

JMP 

ERROR 


376 

002 


m: CPI 

2 

;WAS IT A ,? 

312 

271 

034 

JZ 

ER1 4 


074 



1 NR 

A 

;ALL OK, INC,SAVE 

365 



PUSH 

PSW 


014 



1 NR 

C 


315 

366 

025 

CALL 

I CP7 

i BUMP PNTRS 

076 

002 


MV I 

A,2 

i CALL SYMSRT 

31 5 

367 

022 

CALL 

SYMSRT 


3 76 

377 


CPI 

3770 

;FOUND ANYTHING? 

312 

353 

03 4 

JZ 

RELAT 

; DONE 

376 

002 


CPI 

2 


312 

271 

034 

JZ 

ER1 4 

;IT WAS A , 

375 

004 


CPI 

4 


322 

271 

034 

JNC 

ER1 4 

j NOT LEGAL 

074 



I NR 

A 


1 07 



MOV 

B, A 


01 4 



I NR 

C 


315 

366 

025 

CALL 

I CP7 


361 



POP 

PSW 

;GET SECOND RELATION 

200 



ADD 

B 

;ADD THEM 

365 



PUSH 

PSW 

;AMD SAVE 

376 

010 


CPI 

ioa 

;TEST FOR == 

31 2 

271 

034 

JZ 

ER 1 4 



RELATION IS STORED ON TOP OP STACK (PUSH PSW) ACCORDING 
THE FOLLOWING 


TO 







1 => 

< 






2 => 

> 






3 => 

<> 






4 => 

* 






5 => 

<* 






6 => 

>* 

315 

335 

031 

6ELAT: 

CALL 

EVAL 

345 





PUSH 

H 

041 

200 

060 



LX I 

H,FREG2 

315 

271 

027 



CALL 

COPDH 

341 





POP 

H 

361 





POP 

PSW 

343 





XTHL 


042 

1 76 

060 



SHLO 

FREG1+2 

341 





POP 

H 

343 





XTHL 


0 42 

1 74 

06 0 



SHLD 

FREG1 

305 





PUSH 

B 

365 





PUSH 

PSW 

5 1 5 

071 

035 



CALL 

FCOMP 

127 





MOV 

0, A 

361 





POP 

pi W 

301 





POP 

B 

272 





CMP 

D 

312 

054 

035 



JZ 

TRUE 

325 

no 4 




SUI 

4 

362 

056 

035 



JP 

N0T3 

074 





1 NR 

A 

302 

050 

035 



JNZ 

FALSE 

075 

004 




MV I 

A, 4 

272 





CMP 

D 

303 

054 

035 



JNZ 

TRUE 

303 

050 

035 



JMP 

FALSE 

2 72 



N0T3: 

CMP 

D 

312 

054 

035 



JZ 

TRUE 

076 

004 




MV I 

A, 4 

272 





CMP 

D 

312 

054 

035 



JZ 

TRUE 

341 



FALSE: 

POP 

H 

303 

242 

033 



JMP 

I END 

341 



TRUE: 

POP 

H 

006 

004 




MV I 

B, 4 

315 

365 

025 

THEN: 

CALL 

I CP7 

005 





OCR 

B 

302 

057 

035 



JNZ 

THEN 

303 

027 

027 



JMP 

GTRA 


ROUTINE FCG."P COMPARES 2 FLOAT! 
TO BE IN FREG 1 AMD FREQ2. 

ALL REGISTERS ARE DESTROYED. 

THE VALUE RCTURNED IN REG A IS 
RESULTS ARE AS FOLLOWS: 


;EVALUATE 
;SAVE H,L 
;COPY TO FREG2 

;GET H ( L 
;AND RELATION 
; GET 2ND 2 BYTES 
;STORE 

;GET 1ST 2 BYTES,STORE 


;SAVE A,B,C 
;COMPARE NUMBERS 
;SAVE RESULT IN D 
;GET RELATION,B.C 

;SAME? 

; YES 

;NOT RELATION 3 
; 1S IT RELATI ON 3? 

;NO. ITS FALSE 

;IT IS, CHECK FOR INEQUALITY 


.•RELATION 5.6 TRUE? 

• YES 

•IT V/AS. CHECK FOR EQUALITY 


.•CONTINUE 


;INCREMENT PAST THEN 

;TRANSFER TO GOTO 
NG POINT ='S. THEY ARE ASSUMED 

RESULT OF COMPARISON. 


041 
021 
1 76 
006 
240 

1 1 7 
032 

2 10 


177 060 
203 060 

200 


^COMP: 


A = 1 

= > 

FREG1 < 

A = 2 

= > 

FREG1 > 

A = 4 

= > 

FREG1 = 

LX! 

H. 

FREG1+3 

LX 1 

D, 

FREG2+3 

MOV 

A. 

M 

MV I 

B, 

2000 

ANA 

B 


MOV 

c. 

A 

LDAX 

D 


ANA 

B 



FREG2 

FREG2 

FREG2 

;PNTS TO CHAR OF 1ST' 
;PNTS TO CHAR OF 2ND 
;GET 1 CHAR 
;MASK TO B 
;GET SIGN, 1 
;SAVE IN fc 
;GET CHAR 2 
;GET SIGN 2 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


48 







01 650 3 

251 




XRA 

C 

010007 

312 

121 

035 


JZ 

SINEQ 

01 G01 2 

1 71 




MOV 

A.C 

015013 

027 




RAL 


01 SO 14 

076 

001 



MV I 

A, 1 

01GE16 

330 




RC 


016517 

074 




I NR 

A 

01 6’>20 

31 1 




RET 


016021 

305 



SINEQ: 

PUSH 

B 

O’ 5 ,; ;'2 

053 




DCX 

H 

01 052 3 

053 




DCX 

H 

01652 1 

053 




DCX 

H 

016525 

103 




MOV 

B, E 

010525 

005 




OCR 

a 

010027 

005 




OCR 

B 

016030 

005 




DCR 

B 

01653 1 

3 i 5 

337 

01 7 


CALL 

LMCM 





;AT THIS 

POINT Z 

=1 => =, 1 

016524 

301 




POP 

B 

016525 

302 

1 4 3 

035 


JNZ 

$ + 6 

01SSsO 

076 

004 



MV I 

A,4 

016542 

31 1 




RET 


016043 

1 71 




MOV 

A, C 

01304 1 

074 




I NR 

A 

01 GOAL 

076 

001 



MV I 

A, 1 

016047 

3 72 

i 55 

035 


JM 

$ + 6 

016552 

330 




RC 


016553 

074 




I NR 

A 

016554 

31 1 




RET 


016555 

320 




RNC 


015556 

074 




I NR 

A 

016557 

31 1 




RET 






;CALL PROCESSOR 


010560 

041 

242 

033 

CALLP: 

LX 1 

H, I END 

0’3OF3 

345 




PUSH 

H 

0100C4 

052 

1 33 

060 


LHLD 

CPNT 

016667 

043 




I NX 

H 

016570 

043 




I NX 

H 

016571 

043 




I NX 

H 

016672 

315 

363 

025 


CALL 

I CP7 

016575 

1 76 




MOV 

A, M 

016576 

376 

250 



CPI 

' ( ' +2000 

016600 

302 

376 

033 


JNZ 

ER7 

016603 

315 

366 

025 


CALL 

1 CP7 

016606 

315 

052 

022 


CALL 

CVS 

016611 

205 




ADD 

L 

016612 

157 




MOV 

L, A 

016613 

076 

000 



MV I 

A, 0 

016615 

214 




ADC 

H 

016C16 

1 47 




MOV 

H, A 

0 ‘ 6 5 1 7 

345 




PUSH 

H 

0166?0 

C 4 1 

322 

037 


LX 1 

H. SUBS 

01 CO23 

1 76 



NUSUB: 

MOV 

A, M 

016624 

272 




CMP 

D 

010625 

3 1 2 

244 

033 


JZ 

FNDSB 

01 C 2 03 

043 




I NX 

H 

01 £ 63 1 

C 43 




I NX 

H 

016252 

C43 




I NX 

H 

01 6 13 

0 74 




I NR 

A 

01cc:4 

302 

223 

035 


JNZ 

NUSUB 

O ' 26 37 

0 76 

0 ’5 



MV I 

A, 1 5H 

01664’ 

303 

Z/c 

025 


JMP 

ERROR 

01 CS '.A 

04 3 



FNDSB: 

I NX 

H 

010345 

1 36 




MOV 

E, M 

016646 

043 




1 NX 

H 

Oi6647 

1 46 




MOV 

H, M 

016060 

1 53 




MOV 

L, E 

0 > 5PM 

042 

1 35 

060 


SHLD 

SBSAV 

OiG654 

052 

131 

060 


LHLD 

NXTSP 

010657 

042 

210 

060 


SHLD 

MESCR 

016652 

341 




POP 

H 

013663 

1 76 



PARLP: 

MOV 

A, M 

016C04 

376 

251 



CPI 

•' ) ' +200Q 

01 662-3 

312 

342 

035 


JZ 

CLSUB 

016671 

3 76 

254 



CPI 

','+2000 

016673 

202 

072 

027 


JNZ 

ER6 

016575 

31 5 

365 

025 


CALL 

TCP7 

016701 

3 i 5 

203 

030 


CALL 

VAR 

016704 

322 

31 3 

035 


JNC 

PREXP 

016707 

325 




PUSH 

D 

016710 

303 

263 

035 


JMP 

PARLP 

016713 

315 

335 

031 

PREXP: 

CALL 

EVAL 

016716 

345 




PUSH 

H 

016717 

052 

21 0 

060 


LHLD 

MESCR 

016722 

31 5 

271 

02 7 


CALL 

COPDH 

015725 

321 




POP 

D 

016725 

345 




PUSH 

H 

016727 

043 




I NX 

H 

016730 

043 




I NX 

H 

016731 

0 43 




I NX 

H 

016722 

043 




I NX 

H 

016733 

0 12 

21 0 

060 


SHLD 

MESCR 

Oi6735 

353 




XCHG 



;SAME SIGNS 
;OPPIS!TE SIGNS,GET 
;ROTATE TO CY 


1 SIGN 


;FREG1 < FREG2 => A*1 
;ELSE FREG1 > FREG2 
;AND A-2 
;SAVE SIGN 
;PNTR TO 1 IN H,L 


; PNTR TO 2 IN B 


;COMPARE MAGNITUDES 
= > 1 <2 

;GET SIGN BACK 
;EQUAL => A = 4 


;GET SIGN TO A 
;SET SIGN BIT 


; S I GN IS NEGATIVE 
;SIGN= + AND ABS(FREGI) 
;ABS(FREG1)>ADS(FREG2) 


<ABS(FREG2) 


;SIGN=- AND ABS(FREQI) 
; ABS (FREG 1 )< ABS (FREG2 


>ABS(FREG2) 


; I NIT RETURN ADDRESS 
;INIT POINTERS 


;GET CHAR 
; IS IT A (? 
; BAD 

;BUMP PNTRS 
;GET SUB 
;UPDATA H,L 


D NOW CONTAINS SUB 
SAVE HL 

g| T T EN^RY ° F SUB TADLE 

COMPARE 
FOUND IT 

PNT TO NEXT ENTRY 


CHECK TO SEE IF LAST WAS 3770 
ER 15 - NO SUB BY THIS * 

FOUND IT,GET STARTING ADD. 


AND SAVE IT 

INIT MEMORY SCRATCH AREA 

GET SOURCE PNTR BACK 
GET CHAR 
IS IT )? 

YES - GO CALL SUB 
DO WE HAVE A , ? 

UEXPECTED CHARACTER 
BUMP PNTRS 

DO WE HAVE A VARIABLE 
NO 

YES - SAVE ADDRESS 
CONTINUE 

EVALUATE EXPRESSION 
SAVE H,L 

GET SCRATCH AREA 
AND COPY TO IT 
HL TO DE 
SAVE ADDRESS 
UPDATE MESCR 


;SAVE IT 
; GET H.L BACK 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 39 


49 






016737 

303 

263 

035 

JMP 

PARLP 

;CONTINUE 

016/42 

052 

' 35 

060 

CLSUB: LHLO 

SBSAV 

;START OF ROUTINE 

016745 

351 



PCHL 


;TRANSFER 





:GOSUB PROCESSOR 


016746 

041 

232 

025 

GOSUB: LX 1 

H, I LOOP 

;FOR RETURN STMT. 

016/51 

345 



PUSH 

H 

; TO STACK 

016752 

052 

1 26 

060 

LHLO 

KFPNT 

;PNTR. TO NEXT STMT. 

016755 

345 



PUSH 

H 

;SAVE ON STACK 

016756 

052 

1 31 

060 

LHLD 

NXTSP 

;CHECK MEMORY 

016761 

315 

024 

025 

CALL 

MEMFUL 


01 6,6 1 

052 

1 3? 

060 

LHLD 

CPNT 

;GET CHAR. PNTR 

01 6/67 

043 



1 NX 

H 


016/70 

303 

021 

027 

JMP 

GSENT 

;PART OF GOTO TO FINISH 





;RETURN STMT. PROCESSOR 


01 6773 

341 



RETRN: POP 

H 

;GET RETURN ADD. FROM STACK 

016/74 

31 1 



RET 


;CONTINUE 





;FOR STATEMENT 

PROCESSOR 


016775 

052 

1 33 

060 

FOR: LHLD 

CPNT 

;FIX PNTRS 

017C00 

014 



1 NR 

C 


017001 

043 



I NX 

H 


017002 

043 



I NX 

H 


017003 

315 

365 

025 

CALL 

I CP7 


017006 

315 

042 

022 

CALL 

ALPHA 

;LETTER? 

01701 1 

322 

253 

03 7 

JNC 

ER21 

; NO 

017014 

1 06 



MOV 

B, M 

;GET IT TO B 

017015 

315 

365 

025 

CALL 

1 CP7 

;BUMP PNTR'S 

O' 7020 

121 



MOV 

D.C 

;SAVE C 

Oi7021 

016 

000 


MV 1 

C, 0 

; I NI T C TO 0 

017023 

315 

024 

022 

CALL 

NUMB 

; NUMBER? 

017026 

322 

03/ 

035 

JNC 

$ ♦ 9 

; NO 

017031 

1 1 6 



MOV 

C,M 

;YES. GET IT 

017032 

043 



I NX 

H 

;BUMP PNTR'S 

017033 

025 



DCR 

D 


01 :’C54 

312 

376 

033 

JZ 

ER7 

;PREMATURE EOL 

017037 

345 



PUSH 

H 

;SAVE H,L 

017040 

3 1 5 

01 5 

023 

CALL 

FSYM 

; GET VAR, LOCATION 

017043 

343 



XTHL 


;PUT ON STACK. GET H.L 

017044 

1 31 



MOV 

E.C 

; VAR 1 ABLE TO D.E 

0 ’ 7045 

1 1 2 



MOV 

C, D 

.•RESTORE C 

Oi7046 

1 20 



MOV 

D.B 


017047 

353 



XCHG 


;SAVE VAR NAME 

017050 

042 

214 

060 

SHLD 

VNAME 


017053 

353 



XCHG 


;RESTORE H.L 

017054 

1 76 



MOV 

A, M 

;LOOK FOR = 

017055 

376 

275 


CPI 

' = ' OR 200Q 


017057 

302 

222 

037 

JNZ 

ER 1 6 


017CS2 

31 5 

365 

025 

CALL 

I CP7 

;BUMP PNTR'S 

017005 

3 1 5 

333 

031 

CALL 

EVAL 

;EVALUATE EXPRESSION 

017070 

343 



XTHL 


l VARIABLE LOCATION 

017071 

315 

271 

027 

CALL 

COPDH 

;WRITE VALUE 

017074 

042 

21 5 

060 

SHLD 

VLOC 

; SAVE PNTR TO VARIABLE LOCATION 

017077 

341 



PGP 

H 

;GET H.L BACK 

01 7' 00 

1 71 



MOV 

A, C 

;CHECK EOL 

017101 

267 



ORA 

A 


017102 

312 

376 

033 

J z 

ER7 


017105 

076 

002 


MV I 

A, 2 

;CHECK FOR 'TO' 

017107 

315 

367 

022 

CALL 

SYMSRT 


017112 

376 

007 


CPI 

7 


017114 

302 

227 

037 

JNZ 

ER1 7 


01717 

043 



I NX 

H 

;BUMB PNTR'S 

017120 

043 



1 NX 

H 


017i21 

1 71 



MOV 

A, C 

;CHECK EOL 

017122 

267 



ORA 

A 


017123 

312 

376 

033 

JZ 

ER7 


017126 

315 

335 

031 

CALL 

EVAL 

;EVALUATE LIMIT 

01 7'31 

345 



PUSH 

H 

;SAVE H.L 

017:33 

041 

220 

060 

LX I 

H,FLIMT 

;SAVE LIMIT VALUE 

017'35 

315 

27' 

027 

CALL 

COPDH 


0171-<3 

1 71 



MOV 

A, C 

.•CHECK EOL 

01 7 1 41 

267 



ORA 

A 


0 1 7'4 2 

302 

1 5-1 

035 

JNZ 

STP 


Oi7145 

021 

353 

035 

LX I 

D,FONE 

; DEFAULT STEP=1 

017150 

341 



POP 

H 

; RESTORE H.L 

017151 

303 

201 

035 

JMP 

FBILD 


017154 

341 



STP: POP 

H 

; GET H.L 

017155 

076 

002 


MV I 

A, 2 

; LOOK FOR 'STEP' 

017157 

315 

367 

022 

CALL 

SYMSRT 


017162 

376 

010 


CPI 

8 


017164 

302 

227 

037 

JNZ 

ER 1 7 


017167 

043 



I NX 

H 

; FIX H.L 

017 i 70 

043 



I NX 

H 


017171 

043 



I NX 

H 


01 7172 

014 



I NR 

C 

.•CHECK EOL 

017173 

31 5 

366 

025 

CALL 

I CP7 


017176 

315 

335 

031 

CALL 

EVAL 

; GET STEP SIZE 





; AT THIS POINT 







: VAR 1ASLE NAME 

IS IN LOCATION 

VNAME 





; VAR I ABLE ADDRESS IS IN LOCATION VLOC 





: VAR IDLE HAS BEEN INITIALIZED 






; LI MIT IS IN 4 

BYTE LOCATION FLIMT 





; STEP IS POINTED TO BY D, E 






:H , L .C ARE POINTER. COUNTER AS 

USUAL 

017201 

325 



FBILD: PUSH 

D 

; SAVE PNTR TO STEP 


Page 40 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


50 







017202 

052 

214 

030 

LHLD 

VNAME 

;GET VARIABLE NAME 

017205 

076 

077 


MV I 

A, 770 

; MASK 

017207 

244 



ANA 

H 

;MASK OFF TOP 2 BITS 

017210 

1 07 



MOV 

B, A 

; SET UP TO CALL FSYM 

017211 

1 1 5 



MOV 

C, L 


017212 

31 5 

015 

025 

CALL 

FSYM 

; FIND ENTRY 

017215 

332 

243 

035 

JC 

FEXST 

; IT WAS THERE 

017220 

345 



PUSH 

H 

; IT WASN'T, SAVE H,L 

017221 

052 

131 

060 

LHLD 

NXTSP 

;UPDATE NXTSP 

017224 

076 

010 


MV I 

A, 8 

;ADD 8 TO H,L 

017223 

205 



ADD 

L 


017227 

157 



MOV 

L, A 


017230 

076 

000 


MV I 

A, 0 


017232 

214 



ADC 

H 


017233 

147 



MOV 

H, A 


017234 

042 

131 

060 

SHLD 

NXTSP 

;NEW VALUE OF NXTSP 

017237 

315 

024 

025 

CALL 

MEMFUL 

;CHECK MEMORY 

01 7 242 

311 



POP 

H 

;GET ADD. IN DATA BLOCK 

01 7 2 <4 3 

321 



FEXST: POP 

D 

;ADDRESS OF STEP SIZE 

017244 

315 

271 

02 7 

CALL 

COPDH 

;STORE IT 

017247 

043 



I NX 

H 

;PNT TO WHERE VAR. PNTR GOES 

0.7250 

043 



I NX 

H 


017251 

043 



1 NX 

H 


017252 

043 



1 NX 

H 


017253 

0 72 

216 

060 

LDA 

VLOC 

;PIRST BYTE 

017265 

167 



MOV 

M, A 

;STORE IT 

017257 

0 13 



I NX 

H 


017250 

072 

21 7 

060 

LDA 

VLCC+1 

;SECOND BYTE 

017253 

167 



MOV 

M, A 


017231 

0<13 



I NX 

H 

;PNT TO WHERE LIMIT GOES 

0i7233 

021 

220 

060 

LX 1 

D, FLIMT 

;WHERE IT IS NOW 

017270 

315 

271 

027 

CALL 

COPDH 

;COPY IT 

017273 

043 



I NX 

H 

;PNT TO WHERE KFPNT GOES 

017271 

043 



I NX 

H 


017275 

013 



1 NX 

H 


017276 

043 



I NX 

H 


017277 

072 

1 26 

060 

LDA 

KFPNT 

;1ST BYTE 

017-02 

1 67 



MOV 

M, A 


017303 

043 



I NX 

H 


017304 

072 

1 27 

060 

LDA 

KFPNT + 1 

;2ND BYTE 

017307 

167 



MOV 

M, A 






;PUT CURRENT VNAME ON NESTING STACK 

017310 

041 

030 

000 

LX I 

H, 0 

;GET STACK-POINTER 

017313 

071 



DAD 

SP 


01731 1 

042 

216 

060 

SHLD 

VLOC 

;SAVE IT 

017317 

052 

22 1 

060 

LHLD 

NEST 

:GET NEST SP 

017322 

1 75 



MOV 

A, L 

;COMPARE WITH STACK LIMIT 

017323 

376 

226 


CPI 

TOPNS AND 

3770 , Ni.F.r> ONLY COMPAN'L PAGE LOCAT 

017325 

312 

234 

03 7 

JZ 

ER1 8 

;FORS NEXTED TOO DEEPLY 

017330 

371 



NSTOK: SPHL 


;LOAD NEW SP 

017331 

353 



XCHG 


;SAVE NEST SP 

017332 

052 

21 4 

060 

LHLD 

VNAME 

;GET INDEX NAME 

017335 

345 



PUSH 

H 

;SAVE 1T 

017335 

033 



DCX 

D 

;UPDATE NEST SP 

017337 

033 



DCX 

0 


017340 

353 



XCHG 


;SAVE IT 

017341 

0 4 2 

224 

060 

SHLD 

NEST 


017344 

052 

216 

06 0 

LHLD 

VLOC 

;RESTORE OLD SP 

017347 

371 



SPHL 



017350 

303 

242 

033 

JMP 

I END 

;ALL DONE 

017353 

200 

000 

003 001 

FONE: D3 

200Q,0,0, 

001Q ;FLOATING PNT ONE 





;NEXT STATEMENT 

PROCESSOR 


017357 

052 

1 33 

060 

NEXT: LHLD 

CPNT 

;FIX PNTR'S 

017362 

043 



I NX 

H 


017353 

043 



1 NX 

H 


017354 

043 



I NX 

H 


017355 

014 



I NR 

C 


017305 

315 

366 

02 5 

CALL 

I CP7 


01?3 7 1 

315 

0 42 

022 

CALL 

ALPHA 

;LETTER? 

017374 

322 

253 

037 

JNC 

ER21 

;NO, ERROR 

017377 

1 C6 



MOV 

B, M 

;YES, GET IT 

017403 

1 21 



MOV 

D, C 

;SAVE C 

017401 

016 

000 


MV! 

C, 0 

; I NI T C TO 0 

017403 

043 



1 NX 

H 

; BUMP PNTR'S 

017401 

025 



OCR 

D 


017405 

312 

023 

037 

JZ 

NEXT 1 


017410 

315 

024 

022 

CALL 

NUMB 

;NUMBER? 

017413 

322 

253 

037 

JNC 

ER21 

;NO, ERROR 

0 l v7 4 1 6 

1 16 



MOV 

C, M 

;YES, GET IT 

01/417 

025 



DCR 

D 

;SHOULD BE EOL 

017420 

■*C:p 

253 

037 

JNZ 

ER2 1 


01747 < 

04 f 

000 

000 

NEXT1: LX I 

H, 0 

;GET SP 

017425 

071 



DAD 

SP 


017427 

042 

216 

060 

SHLD 

VLOC 

;SAVE IT 

017 132 

062 

224 

060 

LHLD 

NEST 

;GET NEST SP 

017435 

1 75 



MOV 

A, L 

;COMPARE WITH BOTTOM 

017436 

376 

252 


CPI 

BOTNS AND 

3770 

017440 

312 

241 

037 

JZ 

ER1 9 

;NEXT BEFORE FOR 

017443 

371 



SPHL 


;LOAD SP 

017444 

341 



POP 

H 

;GET LAST INDEX 

01 74 15 

1 70 



MOV 

A, B 

;COMPARE TO CURRENT 

017446 

274 



CMP 

H 


017447 

302 

246 

037 

JNZ 

ER20 

;NESTING ERROR 

January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 


51 







01 7-152 

171 




MOV 

A, C 

01 7-153 

275 




CMP 

L 

0 1 7X5 1 

302 

246 

037 


JNZ 

ER20 

017X57 

052 

216 

060 


LHLD 

VLOC 

017X52 

371 




SPHL 


01 7X53 

076 

077 



MV I 

A, 770 

017X65 

240 




ANA 

B 

017X66 

107 




MOV 

B, A 

017X67 

315 

015 

025 


CALL 

FSYM 

017X72 

353 




XCHG 


017X73 

041 

1 74 

060 


LX I 

H,FPEG1 

017X76 

315 

271 

027 


CALL 

COPDH 

017501 

023 




1 NX 

D 

017502 

023 




I NX 

D 

017503 

023 




I NX 

D 

017504 

032 




LDAX 

D 

017005 

3X6 

200 



ANI 

2000 

017507 

027 




RAL 


017510 

077 




CMC 


017511 

076 

000 



MV I 

A, 0 

017513 

027 




RAL 


017514 

074 




I NR 

A 

017515 

062 

216 

060 


STA 

VLOC 

017020 

023 




I NX 

D 

017521 

353 




XCHG 


017022 

136 




MOV 

E,M 

017523 

0X3 




I NX 

H 

017524 

1 26 




MOV 

0, M 

01 7520 

043 




I NX 

H 

017526 

345 




PUSH 

H 

017527 

041 

200 

060 


LX I 

H, FREG2 

017532 

315 

271 

027 


CALL 

COPDH 

017535 

353 




XCHG 


017036 

0/6 

OOP 



MV 1 

A, 2 

017540 

315 

1 21 

032 


CALL 

Bl NOP 

017543 

315 

271 

027 


CALL 

COPDH 

017543 

0X1 

1 74 

C60 


LX I 

H,FRE01 

017551 

315 

271 

027 


call 

CCPDH 

01 705-1 

321 




POP 

D 

017055 

04 i 

200 

060 


LXI 

H,FREG2 

017360 

315 

271 

027 


CALL 

CCPDH 

017063 

325 




PUSH 

D 

017064 

315 

071 

035 


CALL 

FCOMP 

01756/ 

041 

215 

060 


LXI 

H,VLOC 

017072 

276 




CMP 

M 

017073 

3X1 




POP 

H 

017074 

31 2 

212 

037 


J 2 

NXTDN 

017077 

043 




I NX 

H 

017600 

043 




I NX 

H 

017601 

043 




I NX 

H 

0!7602 

043 




I NX 

H 

017603 

1 36 




MOV 

E, M 

017604 

043 




I NX 

H 

017605 

1 26 




MOV 

D, M 

017605 

253 




XCHG 


017607 

303 

23 2 

025 


JMP 

1 LOOP 

017612 

0-11 

224 

06 0 

NXTDN: 

LXI 

H,NEST 

017615 

064 




I NR 

M 

017616 

064 




I NR 

M 

017617 

302 

242 

033 


JMP 

I END 

017622 

0 76 

026 


ER1 6: 

MV I 

A, 16H 

017624 

203 

276 

025 


JMP 

ERROR 

017627 

076 

02 7 


ER1 7: 

MV I 

A, 1 7H 

017631 

202- 

2 / 6 

025 


JMP 

ERROR 

01763 1 

076 

030 


ER1 8: 

MV 1 

A, 1 8H 

017636 

303 

276 

02 5 


JMP 

ERROR 

017641 

076 

U3 1 


ER1 9: 

MV I 

A, 1 9H 

017643 

303 

276 

025 


JMP 

ERROR 

017645 

075 

040 


ER20 • 

MV I 

A, 20H 

017650 

303 

276 

025 


JMP 

ERROR 

017653 

076 

041 


ER21 : 

MV I 

A, 21 H 

017655 

303 

276 

023 

t 

JMP 

ERROR 


0! 7660 
01 7 <5 fc> 0 
01 766 1 
O i 7662 
0 I 76G 4 
017665 

01 7570 
017671 
017672 

017673 


;ALL OK, RESTORE OLD SP 
; MASK 

;MASK OUT TOP 2 Bl TS 

;FIND SYMBOL 
;ADDRESS TO D,E 
;COPY STEP TO FREG1 

;PNT TO CHARACTERISTIC OF STEP 


GET IT 
GET SIGN 

ROTATE IT INTO CARRY 
COMPLEMENT IT 
MAKE SURE A = 0 
ROTATE TO LSB 
BUMP BY ONE 

SAVE IT, ITS =1 IF - STEP.ELSE- 2 
PNT TO VARIABLE PNTR 
GET IT TO DE 


SAVE DATA BLOCK PNTR. 

COPY VARIBLE VALUE TO FREG2 
SAVE VARIABLE LOCATION IN H,L 

SET UP TO ADD 

AND DO IT 

COPY TO VARIABLE 

AND TO FREG1 FOR COMPARE 

PNT TO LIMIT 
COPY TO FREG2 

SAVE DATA BLOCK PNTR 
COMPARE 

COMPARE WITH STEP TYPE 

GET DATA BLOCK PNTR. 

YES => LOOP DONE 

LOOP NOT DONE 

PNT TO TRANSFER ADD. 


]GET IT TO H,L 


;POP NEST STACK 


;CONTINUE 

' EXPECTED(NOTE: NO ARRAY 
;FOR INDICES) ELEMENTS 

;BAD SYNTAX NEAR 'TO' OR 'STEP' 

;IN FOR STATEMENT 
;FOR'S NESTED TOO DEEPLY 

;'NEXT' EXECUTED BEFORE A 'FOR' 

;NEST I MG ERROR, 'FOR'-'NEXT' 

;BAD INDEX IN FOR-NEXT 


THIS SUB CHECKS FOR PAGE BOUNDARY CROSSING 
OF VARIABLE STORAGE BEFORE UPDATING 
FORWARD POINTER 

D-E POINT TO CURRENT LOCATION OF NEXT VARIABLE 
H-L POINT TO PREVIOUS VARIABLE LOCATION 


[FY D-E ( IF NECESSARY ) SO VARIABLE WILL NOT CROSS PAGE BOUNDARY 


365 

325 

076 007 
203 

332 273 03 7 


CHKLC: 


; OK 


: PAGE 

CHOVL: 


PUSH PSW 

PUSH D 

MV I A,7 

ADD E 

JC CHOVL 

■ DOES NOT CROSS PAGE 
POP D 

POP PSW 

RET 

BOUNDARY CROSSED - 


SEE IF CURRENT VARIABLE 
STORAGE 8 WORD BLOCK 
WILL CROSS PAGE BOUNDARY 


SET D-E TO START OF NEXT PAGE 


Page 42 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


52 







017673 
017674 
017675 
017677 
017700 


321 

024 

036 

361 
31 1 


000 


POP 
1 NR 
MV I 
POP 
RET 


D 

D 

PSW 


017701 

017701 

173 


017702 

346 

003 

017704 

310 


017705 

1 73 


017706 

346 

374 

017710 

306 

004 

017712 

137 


01771 3 

1 72 


017714 

316 

000 

017716 

127 


017717 

31 1 


017720 

252 

060 

017722 

017722 

377 



THIS SUB IS CALLED FROM 'DIM' PROCESSOR _ 

REGS. 'D-E' POINT TO NEXT AVAILABLE WORD OF VARIABLE STORAGE 
THIS SUB MAKES SURE THAT STORAGE STARTS ON A 4-WORD 
BOUNDARY SO FLT. PT. NUMBER WILL NOT CROSS PAGE 

CKDIM: 

MOV A,E 

AN I 3 

RZ 

MOV A,E 

ANI 3740 

ADI 4 

MOV E,A 

MOV A,D 

AC I 0 

MOV D,A 

RET 

; CALL ROUTINES 
FWAM: OW VEND 

;ENTRIES TO SUBTABLE 
SUBS: 


;DEFINE FWAM POINTER 


;END OF TABLE 
PACKAGE FOR THE MCS8 

BRAND 9/6/74 

BIT MANTISSAS*********** 


DB 3770 

////FLOATING POINT 
////BY DAVID MEAD 
////MOO IFI ED BY HAL 
////MODIFIED FOR 24 
////PLUS ADDED I/O CONVERSION ROUTINES 



• 

////NEW 

ROUTINE COMMENTS 



////ARE 

PRECEEOEO 

BY / 


• 

////OTHER CHANGES 

ARE NOTED BY ** 



////MODIFIED BY FRANK CLKEN 6/26/75 

004000 

$ 

ORG 4000Q 


007775 

OUTR 

EQU 

7775Q 

;LINK TO BASIC 

013711 

OUTL 

EQU 

1371 IQ 


014606 

INL 

EQU 

1460CQ 


007772 

1 NP 

EQU 

77720 

;LINK TO BASIC 

000300 

M1 NCH 

ECU 

30CQ 

;MINIMUM CHARACTERISTIC 

000077 

MAXCH 

§ 

EQU 

077Q 

•MAXI MUM CHARACTERISTIC 


EXTENDED 
<MTH SIGN 

XXXXSXXXX "XXXXXX»XXXXXXXtXXX*X»*XXXXXXXXXt**X«**XX*t£$ TENDED 

//// DIVIDE SUBROUTINE 

xxxx*xxxx*x»xxxxxxxxxxx*xxxxxx*xx*»:x*xxxxx***xxx*****» 


004000 

315 

151 

013 

004003 

315 

332 

01 1 

004006 

302 

022 

010 

004011 

3 i 5 

342 

01 1 

004014 

31 2 

250 

01 2 

00401 7 

303 

257 

01 2 

004022 

315 

342 

01 1 

00 1025 

312 

1 33 

01 3 

004030 

135 



004031 

151 



004032 

315 

035 

012 

004035 

1 53 



00403S 

315 

020 

01 3 

004041 

151 



004042 

315 

351 

01 1 

004045 

026 

027 


004047 

153 



004050 

315 

012 

01 3 

004053 

025 



004054 

312 

073 

010 

004057 

1 75 



004060 

151 



004061 

1 17 



004062 

315 

351 

01 1 

004055 

1 75 



004066 

131 



0040S7 

1 1 7 



004070 

303 

047 

010 

001073 

315 

341 

012 

004076 

372 

1 15 

010 

00 1101 

175 



January, 1977 


Dr. D‘ 


l6I V: 


DTST2: 


CALL 

CALL 

JNZ 

CALL 

JZ 

JMP 

CALL 

JZ 


CSIGN 

ZCHK 

DTST2 

BCHK 

INDFC 

WZERC 

BCHK 

OFLWC 


REP3: 


600N: 


MOV E,L 

MOV L.C 
CALL DCLR 
MOV L,E 
CALL ENT1 
MOV L.C 
CALL DLST 
MV I 0,23 
MOV L.E 
CALL EMT2 
OCR D 
JZ GOON 
MOV A,L 
MOV L.C 
MOV C,A 
CALL DLST 
MOV A,L 
MOV E.C 
MOV C,A 
JMP REP3 

CALL AORS 
JM CRIN 
MOV A,L 


COMPUTE SIGN OF RESULT 
CHECK IF DIVIDEND = ZERO 
IF DIVIDEND .NE. 0 CHECK DIVISOR 
CHECK FOR ZERO/ZERO 
ZERO/ZERO = INDEFINITE 
ZERO/NONZERO = ZERO 
COME HERE IF DIVIDEND .NE. 0 
NONZERO/ZERO = OVERFLOW 
IF WE GET HERE, THINGS LOOK OKAY 
SAVE BASE IN E 
BASE\S TO L 

CLEAR OUOTIENT MANTISSA SLOT 
RESTORE BASE IN L 
DO FIRST CYCLE 
BASE \6 TO L 

MOVE QUOTIENT OVER ONE PLACE 
NUMBER OF ITERATIONS TO D 


; DEC 0 


;BASE\6 TO L 

;MOVE QUOTIENT MANT OVER 
JCPTR TO A 
;LPTR TO E 
;CPTR TO C 


;CHECK IF RESULT IS NORMALIZED 
;LPTR TO A 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 43 


53 








0041 or? 
004'03 
004104 
004107 
004 ! 5 0 
004111 
00 !> 1 4 

004115 
004 i .?0 
004i21 
004 l 23 

0 04 i o<? 

004 I 30 
004 13 3 


004134 
004135 


0C4140 


004142 

004)45 

004150 


004)51 

004154 

004 I 57 

004160 

004,63 

004164 

004166 

004167 

004170 

004171 

004172 

00 1173 

004;74 

004!77 

004200 

004201 

004203 

0042C4 

004203 

004207 

004212 

004214 

004215 

004220 

004221 

004224 

004225 

004226 

004231 

00 42 32 

00423? 

00423 I 

004237 

004242 

004244 

004247 

004252 

004254 

004255 

004260 

004263 

004253 

004207 

004270 

004271 

004274 

004277 


Page 44 


54 


151 




MOV L,C 


1 1 7 

31 3 

351 

01 1 


MOV C.A 

CALL DLST 

1 1 5 




MOV C.L 


1 53 




MOV L,E 


315 

071 

01 3 


CALL 

LDCP 

31 1 




RET 


315 

1 1 4 

01 2 

6riN: 

CALL 

CFCHE 

223 




SUB 

E 

376 

1 77 



CPI 

1 770 

3 1 2 

1 33 

01 3 


JZ 

CFLWC 

300 

001 



ADI 

1 

315 

1 04 

01 3 


CALL 

CCHK 

31 1 




RET 



CPTR TO L 
LPTR TO C 

SHIFT QUOTIENT LEFT 


;COMPUTE THE CHARACTERISTIC OF RESULT 


;GET A = CHAR(H,L), E = CHAR(H.B) 

NEW CHAR = CHAR(DIVIDEND) - CHAR 1 
CHECK MAX POSITIVE NUMBER (OVISIOR) 
JUMP ON OVERFLOW 

ADD 1 SINCE WE DID NOT LEFTSH1FT 
CHECK AND STORE CHARACTERISTIC 
RETURN 


257 

303 142 010 


//// ADDITION SUBROUTINE 

XXXXXXXXXXX*XXXXXXXXXXXXXXXX:*X*XXXXXXXXXXXXX*XXXXXXXXt 


C.ADD: XRA A ;/«**SET UP TO ADD 

JMP LADS ;/NOW DO IT 


XXXX»XXXXt:XXXXXXXXXXXXX*XXX*X*XXXXX**X*XX**XX***X**#** 

//// SUBTRACTION SUBROUTINE 

XXXXXXXXXAXXXXXTXXXXXXXXXXXXXXXX-Ixxxxxxxxxxxxxxxftxxx'rt 


076 200 


315 

357 

01 2 

315 

310 

342 

01 1 

3 i 5 

1 33 

012 

3 1 2 

127 

234 

010 

332 

223 

1 77 

010 

316 

127 

135 

151 

054 

1 63 

1 50 

177 


303 

1 73 
222 

204 

010 

346 

127 

1 77 


076 

272 

030 


322 

214 

010 

026 

267 

030 


315 

025 

370 

01 1 

302 

1 75 
270 

214 

010 

302 

151 

054 

1 56 

234 

010 

315 

002 

01 1 

3 i 5 

357 

01 2 

376 

002 


SO 2 

252 

010 

303 

215 

01 2 


C.SUB: MV I A, 2000 


(.ADS: 

CALL 

ACPR 


CALL 

BCHK 


RZ 



CALL 

. CCMP 


JZ 

EQ02 


MOV 

D, A 


JC 

LLTB 


SUB 

E 


ANI 

127 


MOV 

0, A 


MOV 

E,L 


MOV 

L, C 


I NR 

L 


MOV 

M, E 


MOV 

L, B 


JMP 

NCHK 

LLTB: 

MOV 

A, E 


SUB 

D 


ANI 

1 27 


MOV 

0, A 

NCHK: 

MV I 

A, 24 


CMP 

D 


JNC 

SHI 0 


MV I 

0, 24 

SH10: 

ORA 

A 


CALL 

DRST 


OCR 

0 


JNZ 

SHI 0 

EQUL: 

MOV 

A.L 


CMP 

B 


JNZ 

EQ02 


MOV 

L,C 


INR 

L 


MOV 

L, M 

E002: 

CALL 

. LASD 


CALL 

. ACPR 


CPI 

2 


JNZ 

NOTO 


JMP 

WZER 


•/xxxxSET UP TO SUBTRACT 
SUBROUTINE LADS 
FLOATING POINT ADD OR SUB 
A I 1 28 ON ENTRY l SUB 
ACO ON ENTRYIADD 
F-SCF,FIRST OPER DESTROYED 
BASE \11 USED FOR SCRATCH 
;SAVE ENTRY PNT AT BASE \6 

;CHECK ADDEND/SUBTRAHEND = ZERO 

; IF SO, RESULT = ARG SO RETURN 

;THIS WILL PREVENT UNDERFLOW INDICATION ON 

;ZERO + OR - ZERO 

;IF EOUAL. GO ON 
;SAVE LPTR CHAR IN D 

;L.GT.B IF HERE 


; DIFFERENCE TO 0 
; SAVE BASE IN E 
;C PTR TO L 
;C PTR\1 TO L 
;SAVE BASE IN C PTR\1 
;B PTR TO L 


jL.LT.B IF HERE,BPTR TO A 
:SUE TRACT LPTR CHAR FROM BPTR CHAR 


;DIFFERENCE TO D 


F.GT.S IF L.NE.B 

C PTR TO L 

C PTR\1 TO L 

RESTORE L 

CHECK WHAT TO 

SAVE ANSWER 

TEST FOR ZERO ANSWER 

jWRITE FLOATING ZERO AND RETURN 


026 
242 
31 2 
31 3 
3'7 
1 75 
I 50 
I 07 


001 

326 010 
347 012 
271 010 


NOTO: MV I D, 1 

ANA D 
JZ ADDZ 
CALL TSTR 
JZ SUBZ 
MOV A,L 
MOV L,B 
MOV B,A 


;WILL TEST FOR SUB 

;LSB[1 IMPLIES SUB 
;CHECK NORMAL/REVERSE 
;IF NORMAL,GO SUBZ 
;OTHERWISE REVERSE 
;ROLES 
;OF L AND B 


315 046 012 
315 357 010 
315 347 012 


4u3Z: CALL DSUB 

CALL MANT 

CALL TSTR 


SUBTRACT SMALLER FROM BIGGER 

SET UP SIGN OF RESULT 

SEE IF WE NEED TO INTERCHANGE 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 











004302 312 255 011 

00-1305 175 

00 '30$ 150 

00J307 107 

004310 171 

004311 110 

004312 135 

004313 107 

004314 315 044 013 

0043i 7 170 

004320 101 

004321 117 

004322 153 

004323 303 255 011 


JZ NORM 

MOV A,L 
MOV L,B 
MOV B,A 
MOV A,C 
MOV C,B 
MOV E,L 
MOV B,A 
CALL LXFR 
MOV A, B 
MOV B,C 
MOV C, A 
MOV L,E 
JMP NORM 


;BPTR AND LPTR 

;NO INTERCHANGE NECESSARY,SO NORMALIZE 
;AND RETURN 
INTERCHANGE 

L 

AND B 

CPTR TO A 
BPTR TO C 
LPTR TO E 
CPTR TO B 

M0VE_3PTR> TO LPTR> 


;NORMALIZE RESULT AND RETURN 


004326 315 133 012 
004331 322 337 010 
004334 315 215 013 

004337 315 357 010 
004342 315 006 012 
004045 222 32? 012 
034350 315 370 011 
004353 315 266 012 
004355 311 


COPY THE LARGER CHARACTERISTIC TO THE RESULT 


AOOZ: 

CALL 

CCMP 


JNC 

AD02 


CALL 

BCTL 

ADD2: 

CALL 

MANT 


CALL 

DADD 


JNC 

SCCFQ 


CALL 

DRST 


CALL 

RET 

I NCR 


COMPARE THE CHARACTERISTICS 
IF CHAR( H, L) .GE. CHARCH.B) CONTINUE 
IF CHAR(H,L) .LT. CHAR(H,B> THE COPY 
CHAR(H,B) TO CHAR(H,L) 

COMPUTE SIGN OF RESULT 
ADD MANTISSAS 

;IF THERE IS NO OVFLW - DONE 
IF OVERFLOW SHIFT RIGHT 
AND INCREMENT CHARACTERISTIC 
ALL DONE, SO RETURN 


THIS ROUTINE STORES THE MANTISSA SIGN IN THE RESULT 
THE SIGN HAS PREVIOUSLY BEEN COMPUTED BY LASD. 


004357 
004360 
004331 
004352 
004364 
004365 
004366 
004367 
004370 
004371 
0C43 7 2 
004274 
004375 
004376 
004377 
004400 
004401 


1 35 
151 
1 76 

345 200 
i 53 
054 
054 
054 

1 37 
1 73 

346 177 
203 

1 67 
055 
055 
055 

31 1 


MANT: 


MOV 

E.L 

; SAVE L PTR 

MOV 

L, C 

; C PTR TO L 

MOV 

A.M 

; LOAD INDEX WORD 

ANI 

1 28 

; SCARF SIGN 

MOV 

L, E 

; RESTORE L PTR 

I NR 

L ; 

; L PTR\2 

I NR 

L 


1 NR 

L 

; TO L 

MOV 

E, A 

; SAVE SIGN IN E 

MOV 

A, M 


ANI 

1 27 

; SCARF CHAR 

ADD 

E 

; ADD SIGN 

MOV 

M. A 

; STORE IT 

DCR 

L 

; RESTORE 

DCR 

L 


DCR 

L 

; L PTR 

RET 




004402 

315 

1 71 

013 

C ASD: 

CALL MSFH 

004405 

273 




CMP 

E 

004406 

332 

064 

01 1 


JC 

ABCH 

00441 1 

302 

075 

01 1 


JNZ 

BBCH 

004414 

203 




ADD 

E 

00441 5 

332 

042 

01 1 


JC 

BMIN 

004420 

315 

341 

01 2 


CALL 

. AORS 

004423 

362 

1 06 

01 1 


JP 

LOOO 

004425 

315 

364 

01 2 

C0M1 : 

CALL 

. OCMP 

004431 

332 

1 24 

01 1 


JC 

L1 31 

004434 

302 

1 1 0 

01 1 


JNZ 

L001 

004-127 

076 

002 


L002: 

MV I 

A, 2 

004441 

31 1 




RET 


004442 

315 

341 

01 2 

BMIN: 

CALL 

. AORS 

004445 

362 

1 1 6 

01 1 


JP 

L 1 28 

004450 

315 

354 

012 

COM2: 

CALL 

. DCMP 

004453 

332 

1 t 3 

01 1 


JC 

L003 

004455 

302 

121 

01 1 


JNZ 

L1 29 

004451 

303 

037 

01 1 


JMP 

L002 

004-164 

315 

341 

012 

ABCH: 

CALL 

. AORS 

004457 

372 

1 05 

01 1 


JM 

LOOO 

Co4472 

303 

026 

01 1 


JMP 

COM 1 

OC 4-175 

3 • 5 

341 

012 

B3CH: 

CALL 

. AORS 

004500 

372 

1 1 6 

01 1 


JM 

LI 28 

00^50 3 

303 

050 

01 1 


JMP 

COM2 

004505 

257 



LOOO: 

XRA 

A 

004507 

31 1 




RET 


004510 

076 

001 


LO01 : 

MV I 

A, 1 

004512 

31 1 




RET 


004513 

076 

003 


L003: 

MV 1 

A,3 

004315 

31 1 




RET 


004516 

075 

2C0 


LI 28: 

MV! 

A, 128 

004520 

31 1 




RET 


004521 

076 

201 


LI 29: 

MV I 

A, 1 29 

004523 

31 1 




RET 


004524 

076 

203 


LI 31 : 

MV I 

A. 1 31 

004525 

31 1 




RET 



SUBROUTINE LASD 
UTILITY ROUTINE FOR LADS 
CALCULATES TRUE OPER AND SGN 
RETURNS ANSWER IN 

;FETCH MANT SIGNS, F IN A, D 
;COMPARE SIGNS 
;F\,S- MEANS GO TO A BRANCH 
;F- S\ MEANS GO TO B BRANCH 
;SAME SIGN IF HERE, ADD SIGNS 
;IF BOTH MINUS, WILL OVERFLOW 
;BOTH POS IF HERE 
;IF AN ADD, LOAD 0 
COMPARE F WI TH S 
;S.GT.F,SO LOAD 131 
;F.GT.S,SO LOAD 1 
;ERROR CONDITION, ZERO ANSWER 

;CHECK FeR ADD OR SUB 
;ADD, SO LOAD 128 
JCOMPARE F WITH S 
; S . GT ..F, SO LOAD 3 
JFGT.S.SO LOAD 129 
;ERROR 

;FT,S- SO TEST FOR A/S 
;SUBTRACT, SO LOAD 0 
;ADD, SO GO TO DCMP 
;F-,S\,SO TEST FOR A/S 
; SUB 
; ADD 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 45 


55 










; SUBROUTINE LMCM 

COMPARES THE MAGNITUDE OF 
TWO FLOATING FNT NUMBERS 
; ZC1 IF [,CM IF F.LT.S. 

0041527 315 133 012 LMCM: CALL CCMP ; CHECK CHARS 

004532 300 RNZ ;RETURN IF NOT EQUAL 

004533 315 364 012 CALL DCMP ;IF EQUAL, CHECK MANTS 

004536 311 RET 


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
//// MULTIPLY SUBROUTINE 

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXt 

SUBROUTINE LMUL 
FLOATING POINT MULTIPLY 
L PTR X B PTR TO C PTR 


004537 

315 

151 

01 3 

LMUL: 

CALL 

CSIGN 

004542 

315 

332 

01 1 


CALL 

ZCHK 

004545 

312 

257 

012 


JZ 

WZERC 

00-1550 

315 

3 42 

01 1 


CALL 

BCHK 

004553 

312 

2c 7 

012 


JZ 

WZERC 

004556 

1 35 




MOV E.L 


004557 

151 




MOV L.C 


004550 

315 

035 

012 


CALL DCLR 

004563 

1 53 




MOV L.E 


004564 

0 26 

030 



MV 1 D,24 

004566 

3 i 5 

370 

01 1 

KPGO: 

CALL DRST 

004571 

332 

244 

01 1 


JC MADD 

004574 

1 75 




MOV A,L 


004375 

1 51 




MOV L.C 


004576 

1 1 7 




MOV C A 


004577 

31 5 

370 

01 1 

I NTR: 

CALL DRST 

004502 

1 75 




MOV A, L 


004603 

1 51 




MOV L.C 


004504 

1 1 7 




MOV C, A 


004605 

025 




DCR D 


004605 

302 

1 66 

01 1 


JNZ KPGO 

004611 

315 

341 

01 2 


CALL 

AORS 

C04614 

372 

100 

013 


JM 

LMCP 

C04617 

1 35 




MOV 

E, L 

C04620 

151 




MOV 

L.C 

004621 

31 5 

351 

01 1 


CALL 

DLST 

001624 

1 53 




MOV 

L, E 

004625 

315 

1 1 4 

012 


CALL 

C^CHE 

C04630 

203 




ADD 

E 

C04S31 

376 

200 



CPI 

200Q 

C04633 

31 2 

1 42 

01 3 


JZ 

UFLWC 

004636 

32C 

001 



SUI 

1 

CO 4540 

315 

i 04 

01 3 


CALL 

CCHK 

C046--t3 

31 1 




RET 


OC IC44 

1 75 



*MADD: 

MOV A,L 


004545 

151 




MOV L.C 


0045 46 

1 1 7 




MOV C. A 


00-104 7 

315 

0C6 

01 2 


CALL DADD 

C 0 4 6 5 2 

303 

1 77 

01 1 


JMP 1NTR 


.•COMPUTE SIGN OF RESULT AND STORE IT 
;CHECK FIRST OPERAND FOR ZERO 
;ZERO * ANYTHING = ZERO 
;CHECK SECOND OPERAND FOR ZERO 
;ANYTHING * ZERO = ZERO 
;SAVE L PTR 
;C PTR TO L 

\CLR PRODUCT MANT LOCS 
;L PTR TO L 

;LOAD NUMBER ITERATIONS 
;SH1 FT L PTR RIGHT 
; WI LL ADD B PTR IF CM 
;INTERCHANGE 
; L AND 
;C PTRS 

;SHI FT PRODUCT OVER 
;INTERCHANGE 
;L AND C PTRS BACK TO 
;OR 1GINAL> 

;MORE CYCLES IF ZCO 

;1EST IF RESULT IS NORMALIZED 
;IF NORMALIZED GO COMPUTE CHAR 
;SAVE LPTR IN E 
;SET L=CPTR 

;LEFT SHIFT RESULT TO NORMALIZE 
;RESTORE LPTR 

; OTHERWl SE SET A=CHAR t H, L), E=CHAR (H .B ) 
l CHAR(RESULT) = CHAR(H,L) + CHAR(H.B) 

;CHECK FOR SMALLEST NEGATIVE NUMBER 
;IF SO THEN UNDERFLOW 

;SUBTRACT 1 TO COMPENSATE FOR NORMALIZE 
;CHECK CHARACTERISTIC AND STORE IT 
;RETURN 

;INTERCHANGE 
; L AND 
;C PTRS 

;ACCUMULATE PRODUCT 


SUBROUTINE NORM 

THIS SUBROUTINE WILL NORMALIZE A FLOATING POINT 
NUMBER, PRESERVING ITS ORIGINAL SIGN. 

WE CHECK FOR UNDERFLOW AND SET THE CONDITION 
FLAG APPROPRIATELY. (SEE ERROR RETURNS). 

THER IS AN ENTRY POINT TO FLOAT A SIGNED INTEGER 
(FLOAT) AND AN ENTRY POINT TO FLOAT AN UNSIGNED 
INTEGER. 

ENTRY POINTS: 

NORM - NORMALIZE FLOATING PT NUMBER AT (H.L) 

FLOAT - FLOAT TRIPLE PRECISION INTEGER AT (H,L) 
PRESERVING SIGN BIT IN (H,L)+3 
DFXL - FLOAT UNSIGNED (POSITIVE) TRIPLE PRECISION 
AT (H.L) 

REGISTERS ON EXIT: 


A = CONDITION FLAG (SEE ERROR RETURNS) 
O.E = GARBAGE 

B.C.H.L = SAME AS ON ENTRY 


004655 

135 



NORM: 

MOV 

E.L 

SAVE L IN E 

004656 

315 

101 

012 

NORM 1: 

CALL 

GCHAR 

GET CHAR(H.L) IN A WITH SIGN EXTENDED 

004661 

1 27 




MOV 

D, A 

SAVE CHAR IN D 

004062 

1 53 



FXL1 : 

MOV 

L, E 

RESTORE L 

004663 

315 

332 

011 

FXL2: 

CALL 

ZMCHK 

CHECK FOR ZERO MANTISSA 

00-4066 

31 2 

2 1 5 

012 


JZ 

WZER 

IF ZERO MANTISSA THEN ZERO RESULT 

004071 

1 76 



REP6: 

MOV 

A.M 

GET MOST SIGNIFICANT BYTE OF 


MANTISSA 


Page 46 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


56 










004672 

004S73 

267 

372 

313 011 


ORA 

JM 

A 

SCHAR 

004676 

004577 

004701 

004704 

004/07 

004/10 

004713 

1 72 

376 

312 

315 

025 

303 

303 

300 

143 012 
351 011 

271 011 
303 012 

SCHAR: 

MOV 

CPI 

JZ 

CALL 

DCR 

JMP 

JMP 

AD 

MINCH 

WUND 

DLST 

D 

REP6 

INCR3 

004716 

135 


6FXL: 

MOV 

E.L 

004717 
004720 
004721 
004722 
004723 
004724 
004725 

054 

054 

054 

257 

167 

1 53 
C2C 

030 

FLOAT: 

I NR 

1 NR 

I NR 

XRA 

MOV 

MOV 

MV I 

L 

L 

L 

A 

M A 

L, E 

D, 24 

004727 

303 

263 011 


JMP 

FXL2 


SET FLAGS 

IF MOST SIGNFI CANT BIT = 1 THEN 

NUMBER IS NORMALIZED AND WE GO TO 

STORE THE CHARACfER1 ST IC 

OTHERWISE CHECK FOR UNDERFLOW 

COMPARE WITH MINIMUM CHAR 

IF "EQUAL THEN UNDERFLOW 

SHIFT MANTISSA LEFT 

DECREMENT CHARACTERSTIC 

LOOP AN TEST NEXT BIT 

STORE THE CHARACTERISTIC USING 

THE SAME CODE AS THE INCREMENT 

ENTER HERE TO FLOAT UNSIGNED 
INTEGER 

FIRT SAVE L IN E 
MAKS ( H, L ) POINT TO CHAR 
MAKE <H,L) POINT TO CHAR 
MAKE (H,L) POINT TO CHAR 
ZERO ACCUMULATOR 
STORE A PLUS <+) SIGN 
RESTORE L 

ENTER HERE TO FLOAT INTEGER 
PRESERVING ORIGINAL SIGN IN (H.L)*3 
SET UP CHARACTERISTIC 
GO FLOAT THE NUMBER 


SUBROUTINE ZCHK 

THIS ROUTINE SETS THE ZERO FLAG IF IT DETECTS 
A FLOATING ZERO AT (H.L). 

SUBROUTINE ZMCHK 


004732 

004732 054 

004733 054 

004734 176 

004795 655 

004736 266 

004737 055 

004740 266 

004711 311 


THIS ROUTINE SETS THE ZERO FLAG IF IT DETECTS A 
ZERO MANTISSA AT (H. L) 


^CHK: 

ZMCHK: I NR L 

I NR L 

MOV A.M 

DCR L 

ORA M 

DCR L 

ORA M 

RET 

• SUBROUTINE BCHK 


SET L TO POINT LAST BYTE OF MANTISSA 
SET L TO POINT TO LAST BYTE OF MANTISSA 
LOAD LEAST SIGNIFICANT BYTE 
L POINTS TO MIDDLE BYTE 
OR WITH LEAST SIGNFI CANT BYTE 
L POINTS TO MOST SIGNFI CANT BYTE 
OF MANTISSA (ORIGINAL VALUE) 

OR IN MOST S1GNFI CANT BYTE 
RETURNS WITH ZERO FLAG SET 

APPROPRIATELY 


THIS ROUTINE CHECKS (H,B) FOR FLOATING PT ZERO 


004742 

1 35 

feCHK: 

MOV 

E, L 

;SAVE LPTR IN £ 

004743 

1 50 


MOV 

L.B 

;SET L=BPTR 

004744 

315 332 011 


CALL 

ZCHK 

.•CHECK FOR ZERO 

004/47 

1 53 


MOV 

L. E 

;RESTORE L=LPTR 

004/30 

31 1 


RET 


;RETURN 


001751 

004752 

004753 

004754 

004755 

004756 

004757 

0047S0 

004761 


004762 

004763 

0047S4 

004765 

004766 

004767 


054 
054 
1 76 
267 
027 
167 
055 
1 76 
027 


167 
055 
1 76 
027 
167 
31 1 


6lST : 


I NR 
I NR 


MOV A.M 
ORA A 
RAL 

MOV M.A 
DCR L 
MOV A.M 
RAL 


MOV M.A 
OCR L 
MOV A.M 
RAL 

MOV M.A 
RET 


SUBROUTINE DLST 

SHIFTS DBL WORD ONE PLACE LF 

•/* * * TP 
;LOAD IT 
;KILL CARRY 
;SHI FT IT LEFT 
;STORE IT 

.•LOAD IT 
; SH I FT IT LEFT 
IF CARRY SET BY FIRST SHIFT 
IT WILL BE IN LSB OF SECOND 

;/* * * TP EXTENSION 


J/***ALL DONE TP 

SUBROUTINE DRST 
SHIFTS DOUBLE WORD ONE PLACE 
TO THE RIGHT 
DOES NOT AFFECT D 


004770 

135 

6rst: mov 

E, L 

;/* * * TP MODIFIED 1 

004771 

1 76 

MOV 

A.M 

;LOAD FIRST WORD 

004772 

037 

RAR 


;ROTATE IT RIGHT 

004773 

167 

MOV 

M. A 

;STORE IT 

0047 74 

054 

1 NR 

L 

;/*** TP 

004775 

1 76 

MOV 

A.M 

;LOAD SECOND WORD 

004776 

037 

RAR 


;SHIFT IT RIGHT 

004777 

167 

MOV 

Mj A 

;STORE IT 


RIGHT SHIFT TP 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 47 










005000 

CVc'OOl 

005002 

00-5003 

005004 

0U50U5 


005005 
005007 
005010 
0050 I 1 
0050 12 
005013 
005014 
0050 i 5 
005016 
005017 
005020 
005021 
005022 
005023 
005C24 
005025 
005026 
005027 
005030 
005031 
005032 
005033 
005034 


005035 

005036 

005037 

005040 

005041 

005042 

005043 

005044 

005045 


005046 
005047 
005050 
005051 
0C5052 
005053 
005054 
00'_><J55 
005056 
005057 
005C60 
005061 
005062 
005063 

005064 
005065 
005066 
005067 
005070 
005071 
005072 
005073 
005074 
005075 
005076 
005077 
005100 


005101 
00510? 
005103 
005 1 04 
005105 


Page 48 


054 


INR L 

1 76 


MOV A.M 

0'3 7 


RAR 

1 67 


MOV M,A 

1 53 


MOV L.E 

31 1 

« 

RET 

1 35 

» 

6aDD: 

MOV E.L 

1 50 


MOV L,B 

054 


INR L 

054 


INR L 

1 76 


MOV A.M 

153 


MOV L.E 

054 


INR L 

054 


IMR L 

206 


ADO M 

1 67 


MOV M, A 

150 


MOV L, B 

054 


INR L 

1 76 


MOV A.M 

153 


MOV L.E 

054 


INR L 

216 


ADC M 

1 67 


MOV M, A 

150 


MOV L.B 

1 76 


MO’.' A.M 

1 53 


MOV L.E 

216 


ADC M 

167 


MOV M,A 

31 I 

2 

RET 

257 

* 

bCLR: 

XRA A 

167 


MOV M.A 

054 


INR L 

1 67 


MOV M.A 

054 


IMR L 

1 67 


MOV M.A 

055 


OCR L 

055 


OCR L 

311 

2 

RET 

1 35 

» 

6SUB: 

MOV E.L 

054 


INR L 

C54 


INR L 

1 76 


MOV A.M 

I 50 


MOV L.B 

054 


INR L 

054 


INR L 

226 


SUB M 

1 53 


MOV L.E 

054 


INR L 

054 


INR L 

167 


MOV M.A 

055 


DCR L 

1 76 


MOV A.M 

1 50 


MOV L.B 

054 


INR L 

236 


SBB M 

1 53 


MOV L.E 

054 


INR L 

1 67 


MOV M.A 

055 


DCR L 

1 76 


MOV A.M 

1 50 


MOV L.B 

235 


SBB M 

1 53 


MOV L.E 

1 67 


MOV M.A 

31 1 


RET 


;/*** TP EXTENSION 


J/* * * TP - ALL DONE TP 

SU3R0UTINE DADD 
ADDS TWO DOUBLE PRECISION 
WORDS, CM IF THERE IS OVRFLW 
;SAVE BASE IN E 
;BASE \3 TO L 
;BASE \4 TO L 
;/* * *TP 
j LOAD S MANTB 
;BASE TO L 
;BASE \1 TO L 
;/* * *TP 

;ADD TWO MANTB)S 
;STORE ANSWER 
;/***TP EXTENSION 


;/***TP - ALL DONE 
;BASE \3 TO L 
;MANTA OF S TO A 
;BASE TO L 
;ADD WITH CARRY 
;STORE ANSWER 

SUBROUTINE DCLR 
CLEARS TWO SUCCESSIVE 
LOCATIONS OF MEMORY 


/***TP EXTENSION 
/* * * TP ZERO 3 
/* * * TP - ALL DONE 


/***«*ALL MEW DSU3 - SHORTER* * * 
SUBROUTINE DSUB 
DOUBLE PRECISION SUBTRACT 
;SAVE BASE IN E 
;/* * * TP EXTENSION 
;/START WITH LOWS 
;/GET ARG 

;/NOW SET UP TO SUB 


;/NOW DO IT 

j/NOW MUST PUT IT BACK 


/PUT BACK 
/* * * TP - ALL DONE 
/GET LOW OF LOP 
/SET TO BOP 
/SET TO BOP LOW 
/GET DIFF. OF LOWS 
/SAVE IN LOP LOW 
/TO LOP LOW 
/INTO RAM 

/BACK UP TO LOP HIGH 
/GET LOP HIGH 
/SET TO BOP HIGH 
/SUB. WITH CARRY 
/SAVE IN LOP HIGH 
/INTO RAM 

/ALL DONE - MUCH SHORTER 


SUBROUTINE GCKAR 

THIS SUBROUTINE RETURNS THE CHARACTERISTIC OF 
THE FLOATING POINT NUMBER POINTED TO BY (H, L) 

IN THE A REGISTER WITH ITS SIGN EXTENDED INTO THE 
LEFTMOST BIT. 


REGISTERS ON EXIT: 


054 
054 
054 
1 76 

346 177 


GCHAR: 


A = CHARACTER I ST 
L = (ORIGINAL L) 
B, C, 0,E,H = SAME 

I NR L 

I NR L 

I NR L 

MOV A.M 

AN I 177Q 


C OF (H,L) WITH 
♦ 3 

AS ON ENTRY 

;MAKE (H,L) 
;MAKE (H,L) 
;MAKE (H,L) 
;SET A= CHAR 
;GE T RID OF 


SIGN EXTENDED 


POINT TO CHAR 
POINT TO CHAR 
POINT TO CHAR 
♦ MANTISSA SIGN 
MANTISSA SIGN BIT 


Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


58 









005107 306 100 
005111 356 100 
005113 311 


ADI 1000 
XRI 100Q 
RET 


PROPAGATE CHAR SIGN INTO LEFTMOST BIT 
RESTORE ORIGINAL CHAR SIGN BIT 
RETURN WITH (H,L) POINTING TO THE 
CHAR = ORIGINAL (H.L)+3 
SOMEONE ELSE WILL CLEAN UP 


SUBROUTINE CFCHE 

THIS SUBROUTINE RETURNS THE CHARACTERISTICS OF THE 
FLOATING POINT NUMBERS POINTED TO BY (H,L) AND 
(H,B) IN THE A AND E REGISTERS RESPECTIVELY, 

WITH THEIR SIGNS EXTENDED INTO THE LEFTMOST BIT. 

REGISTERS ON EXIT: 

A = CHARACTERISTIC OF (H.L) WITH SIGN EXTENDED 
E = CHARACTERISTIC OF ( H B ) WITH SIGN EXTENDEO 
B,C,H,L = SAME AS ON ENTRY 
D = A 


005114 

135 



6fche: 

MOV 


SAVE LPTR IN E 

005115 

150 




MOV 

l'b 

GCHAR 

SET L = BPTR 

0051 1 6 

315 

101 

01 2 


CALL 

GET CHAR(H.B) WITH SIGN EXTENDED IN A 

005121 

1 53 




MOV 

U.E 

RESTORE L = LPTR 

005122 

137 

101 

01 2 


MOV 

GCHAR 

SET E = CHAR(H.B) WITH SIGN EXTENDED 

005123 

315 


CALL 

SET A=CHAR(H,L) WITH SIGN EXTENDED 

005126 

055 




DCR 

L 

RESTORE L = LPTR 

005127 

055 




DCR 

L 

RESTORE L = LPTR 

005130 

055 




DCR 

L 

RESTORE L = LPTR 

005131 

127 




MOV 

D.A 

SET D=A=CHAR(H.L) WITH SIGN EXTENDED 

005132 

31 1 




RET 




SUBROUTINE CCMP 

THIS SUBROUTINE COMPARES THE CHARACTERISTICS OF 
FLOATING POINT NUMBERS POINTED TO BY (H,L) AND (H.B). 
THE ZERO FLIP-FLOP IS SET IF CHAR(H,L) EQUALS 
CHAR(H, B ) . IF CHAR(H,L) IS LESS THAN CHAR(H,3) THEN 
THE CARRY BIT WILL BE SET. 

REGISTERS ON EXIT: 


A = 

E = 

D = A 
B, C, H, L 


CHARACTERISTIC OF (H.L) WITH SIGN EXTENDED 
CHARACTERISTIC OF (H,B) WITH SIGN EXTENDED 


= SAME AS ON ENTRY 


005133 

315 114 012 

6cmp: 

CALL 

005136 

127 


MOV 

005137 

223 


SUB 

005:40 

027 


RAL 

005141 

1 72 


MOV 

005142 

311 


RET 


CFCHE 

D.A 

A, D 


FETCH CHARACTERISTICS WITH SIGN EXTENDED 
INTO A (CHAR(H.L)) AND E (CHAR(H,B)) REGISTERS 
SAVE CHAR (H.L) 

SUBTRACT E (CHAR(H,B)) 

ROTATE SIGN BIT INTO CARRY BIT 
RESTORE A=CHARIH.L) 

RETURN 


ERROR RETURNS 


THE FOLLOWING CODE IS USED TO RETURN VARIOUS 
ERROR CONDITIONS. IN EACH CASE A FLOATING POINT 
NUMBER IS STORED IN THE 4 WORDS POINTED TO BY (H.L) 
AND A FLAG IS STORED IN THE ACCUMULATOR. 


CONDITION 

FLAG 

RESULT 

(♦) 


RESULT 

( -) 


UNDERFLOW 

377 

000 

000 

000 

1 00 

000 

000 

000 

300 

OVERFLOW 

1 77 

377 

377 

377 

077 

377 

377 

377 

277 

INDEFINITE 

077 

377 

377 

377 

077 

377 

377 

377 

277 

NORMAL 

000 

XXX 

XXX 

XXX 

XXX 

XXX 

XXX 

XXX 

XXX 

NORMAL ZERO 

000 

000 

000 

000 

1 00 

(ALWAYS 

RETURNS +0) 


ENTRY POINTS: 

WUND - WRITE UNDERFLOW 
WOVR - WRITE OVERFLOW 
WIND - WRITE INDEFINITE 
WZER - WRITE NORMAL ZERO 


WFLT 


LABEL:: 


MACRO VMANT,VCHAR,VFLAG,LABEL ;WRITE FLOATING NUMBER 


005143 1 


WUND: 


MV I 
CALL 
MV I 


CALL 
MV I 
ORA 
RET 
ENDM 

WFLT 


D,VCHAR 
WCHAR 
A,VMANT 


WMANT 
A,VFLAG 


LOAD CHARACTERISTIC INTO D REGISTER 
WRITE CHARACTERISTIC 
LOAD MANTISSA VALUE 

WE ASSUME HERE THAT ALL BYTES OF MANTISSA 

ARE THE SAME 

WRITE THE MANTISSA 

SET ACCUMULATOR TO FLAG 

SET FLAGS PROPERLY 

RETURN (WMANT RESTORED (H.L)) 


0.100Q,377Q,UFLW1 ;WRITE UNDERFLOW 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 49 


59 










003143 
005143 
005150 


00513? 
003l53 
005 I 5 7 
005160 
005161 

005101 
003163 
0051 66 


005170 
005173 
005175 
005176 
005 I 7 7 

005 1 7 7 
003201 
005204 


005206 

005211 
005213 
005214 

005215 
005216 
005217 
005220 
00522? 
005??3 
005226 
005227 


005230 

005231 

005232 

005233 

005234 

005235 

005236 


005237 

005240 

005241 

005242 

005243 

005245 

005246 

005247 


005250 

005251 

005252 

005255 

005256 


005257 

005260 

005261 

005264 


Page 50 


026 

100 


♦ 

■f 

MV I 

D,000 10H 

315 

237 

012 

♦ 

CALL 

WCHAR 

076 

000 


♦UFLW1:: 

♦ 

MV I 

A.OOOOOH 

31 5 

230 

012 

♦ 

4* 

CALL 

WMANT 

0 76 

3/7 


•f 

MV I 

A,OOUFFH 

267 



♦ 

ORA 

A 

31 1 



♦ 

RET 





4-WOVR: 

WFLT 

3770,770,17 

026 

077 


♦ 

♦ 

MV I 

D,0003FH 

315 

237 

012 

♦ 

CALL 

WCHAR 

076 

377 


♦OFLW1:: 

♦ 

MV I 

A,OOOFFH 

315 

230 

012 

♦ 

♦ 

CALL 

WMANT 

070 

1 77 


♦ 

MV I 

A,000/FH 

267 



■f 

ORA 

A 

31 1 



•f 

RET 





►W1ND: 

WFLT 

3770,770,77 

026 

077 


♦ 

♦ 

MV I 

D,C003FH 

315 

237 

012 

♦ 

CALL 

WCI.AR 

076 

377 


♦INDF!:: 

♦ 

MV I 

A, OOOFFH 

315 

230 

012 

♦ 

♦ 

CALL 

WMANT 

076 

077 


♦ 

MV I 

A,COOOFH 

26 7 



♦ 

ORA 

A 

31 1 



♦ 

RET 


054 



WZER: 

INR 

L 

054 




INR 

L 

05-1 




1 NR 

L 

066 

100 



MV I 

M.1000 

257 




XRA 

A 

31 5 

230 

012 


CALL 

WMANT 

267 




ORA 

A 

31 1 




RET 





• ROUTINE TO 

WRITE MANTISSA 

055 



WMANT : 

OCR 

L 

167 




MOV 

M. A 

055 




OCR 

L 

1 67 




MOV 

M, A 

055 




OCR 

L 


167 
31 1 


1 35 
1 51 
315 
153 
31 1 


177 012 


135 

151 

315 215 012 
153 


; LOAD 
; V/R I IE 

; LOAD 


CHARACTERISTIC 
CHARACTERISTIC 
MANTISSA VALUE 


INTO D REGISTER 


THAT ALL 


;WE ASSUME HERE 
;ARE THE SAME 
:WRITE THE MANTISSA 
: SET ACCl MUl.A V 0R TO FLAG 
: SET FLAGS PKO.'LRLY 
: RE TURN (WMANT RE- •TOPED <H,L)> 
’Q,OFLW1 :WRITE OVERFLOW 


BYTES OF 

MANTISSA 


; LOAD 
; WR1TL 
: LOAD 


CHARACTERISTIC 
CHARACTERISTIC 
MANTISSA VALUE 


INTO D REGISTER 


THAT AH 


;WE ASSUME HERE 
;ARE THE SAME 
;WR1 IE THE MANTISSA 
;SET ACCl MUl.AT.iR TO FLAG 
:SET FLAGS PROPERLY 
: RL1 UR, 1 (WMANT HE- • TORED (H 
I.INDF1 : WR I TE INDEFINITE 


BYTES OF 
MAN r 1 


SA 


L) ) 


;LOA n CHARACTERISTIC 

;WRI1,: characteristic 

;LOAD MANTISSA VALUE 


INTO D REGISTER 


BYTES OF 

MANTISSA 


MOV 

RET 


M, A 


054 

: ROUTINE TO WRITE CHl 
: NOTE: WE PRESERVE ( 
; ON ENTRY D CONTAINS 

WCHAR: INR L 

054 

INR 

L 

054 

I NR 

L 

1 76 

MOV 

A, M 

346 200 

ANI 

2000 

262 

ORA 

D 

167 

MOV 

M, A 

31 1 

RET 



;WE ASSUME HERE THAT ALL 
;ARE THE SAME 
:WRITE THE MANTISSA 
;SET ACCUMULATOR TO FLAG 
: SET FLAGS PROPERLY 
;RETURN CWMAN" RESTORED <H,L)) 

WRITE NORMAL ZERO 


STORE CHARACTERISTIC FOR ZERO 

ZERO ACCUMULATOR 

STORE ZERO MANTISSA 

SET FLAGS PROPERLY 

RETURN 


POINT LEAST SIGNIFICANT BYTE 
OF MANTISSA 

STORE LSBYTE OF MANTISSA 
POINT TO NEXT LEAST SIGNIFICANT BYTE 
OF MANTISSA 

STORE NLSSYTE OF MANTISSA 
POINT TO MOST SIGNIFICANT BYTE 
OF MANTISSA 

STORE MSC-YTE OF MANTISSA 
RETURN (H,L) POINTS TO BEGINNING OF 
FLOATING POINT RESULT 
C FOR ERROR RETURNS 
ORIGINAL MANTISSA SIGN 
NEW CHARACTERi 1ST IC TO BE STORED. 

SET CH,L) TO POINT TO CHARACTERISTIC 
PART OF ABOVE 
PART OF ABOVE 
LOAD CHARACTERISTIC A 
AND MANTISSA SIGN 
JUST KEEP MANTISSA SIGN 
OR IN NEW CHARACTERISTIC 
STORE IT BACK 

RETURN WITH (H,L) POINT TO 
OF RFSULT CHARACTERISTIC 

SOMEONE ELSE WILL FIX UP (H,L) 


SUBROUTINE INDFC 


THIS ROUTINE WRITES A FLOATING INDEFINITE. SETS 
THIS WRITES WRITES A FLOATING POINT INDEFINITE 
AT (H,C), SETS THE CONDITION FLAG AND RETURNS 


1NDFC: 


MOV 

MOV 

CALL 

MOV 

RET 


E.L 

wInd 

L.E 


;SAVE LPTR IN E 

;SET L=CPTR SO (H, L)-ADDR OF RESULT 
;WRITE INDEFINITE 
;RESTORE L=LPTR 
;RETURN 


SUBROUTINE WZERC 


THIS ROUTINE WRITES A NORMAL FLA0T1NG POINT ZERO 
AT (H.C), SETS THE CONDITION FLAG AND RETURNS 


WZERC: 


MOV 

MOV 

CALL 

MOV 

RET 


E.L 
L, C 
WZER 
L,E 


;SAVE LPTR IN E 

;SETL=CPTR SO (H, L)=ADDR OF RESULT 
;WRITE NORMAL ZERO 
;RESTORE L=LPTR 
;RETURN 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


60 











005265 311 . RET jRETURN 

• SUBROUTINE I NCR 

• THIS SUBROUTINE INCREMENTS THE CHARACTERISTIC 

; OF THE FLOATING POINT NUMBER POINTED TO BY (H.L). 

; WE TEST FOR OVERFLOW AND SET APPROPRIATE FLAG. 

; (SEE ERRRCR RETURNS). 

; REGISTERS ON EXIT: 

• A - CONDITION FLAG (SEE ERROR RETURNS) 

; D = CLOBBERED 





j 

B.C, 

H. L = SAME AS ON 

ENTRY 

0051)36 

315 

101 01? 

i NCR: 

CALL 

GCHAR 


GET CHAR WITH SIGN EXTENDED 

005271 

3/6 

077 


CPI 

MAXCH 


COMPARE WITH MAX CHAR PERMITTED 

005;;/3 

312 

ICS 012 


JZ 

0FLW1 


INCREMENT WOULD CAUSE OVERFLOW 

005276 

127 



MOV 

0, A 

/SAVE IT IN D 

005/77 

024 



I NR 

D 

/INCREMENT IT 

005300 

503 

306 012 


JKP 

I NCR2 


JUMP AROUND ALTERNATE ENTRY POINT 

005303 

054 


INCR3: 

1 NR 

L 


COME HERE TO STORE CHARACTERISTIC 

0053C4 

C54 



I NR 

L 


POINT (H,L) TO CHAR 

005305 

054 



I NR 

L 


POINT (H.L) TO CHAR 

0053C6 

076 

1 77 

INCR2: 

MV I 

A,177Q 



005310 

242 



ANA 

D 

/KILL SIGN BIT 

003311 

1 27 



MOV 

D, A 

/BACK TO D 

00511 2 

1 76 



MOV 

A, M 

/NOW SIGN IT 

005313 

346 

200 


ANI 

2000 

/GET MANTISSA SIGN 

005315 

202 



ORA 

D 

/PUT TOGETHER 

0053'6 

1 67 



MOV 

M, A 

/STORE IT BACK 

005317 

055 



OCR 

L 

/NOW BACK TO BASE 

005320 

055 



OCR 

L 

/ * « x TP 

005321 

055 



DCR 

L 



005322 

257 


SCCFG: 

XRA A 


;SET SUCCESS FLAG 

005323 

31 1 



RET 





SUBROUTINE DECR 


THIS SUBROUTINE DECREMENTS THE CHARACTERISTIC 
OF THE FLOATING POINT NUMBER POINTED TO BY (H.L). 
WE TEST FOR UNDERFLOW AND SET APPROPRIATE FLAG. 
(SEE ERRRCR RETURNS). 


REGISTERS ON EXIT: 






1 

4 

A = 

CONDITION 

FLAG (SEE ERROR RETURNS) 





S 

D = 

CLOBBERED 






4 

B,C. 

H,L 

= SAME 

AS ON ENTRY 

005324 

315 

101 

012 

6ecr: 

CALL 

GCHAR 

;GET CHAR WITH SIGN EXTENDED 

005327 

376 

300 



CPI 


MINCH 

; COMPARE WITH MIN CHAR PERMITTED 

0053 ?1 

312 

1 50 

012 


JZ 


UFLW1 

;DECREMENT WOULD CAUSE UNDERFLOW 

005334 

127 




MOV 


D,A 

; SAVE CHARACTEKSTIC IN D 

005335 

025 




DCR 


D 

;DECREMENT CHARACTERISTIC 

005336 

303 

306 

01 2 


JMP 


INCR2 

;GO STORE IT BACK 





4 

4 

4 

a 




SUBROUTINE AORS 

RETURN SCI IF BASE \6 

HAS A 1 IN MSB 

005341 

1 35 



AORS: 

MOV 

E.L 


;SAVE BASE 

005342 

1 51 




MOV 

L.C 


;BASE \6 TO L 

005343 

1 76 




MOV 

A.M 


;LOAD IT 

005)44 

267 




ORA 

A 


;SET FLAGS 

005345 

1 53 




MOV 

L, E 


;RESTORE BASE 

0053 16 

311 



4 

RET 



SUBROUTINE TSTR 


CHECKS C PTR TO SEE IF 
NLSB [ 1 

RETURNS Zt1 IF NOT 
DESTROYS E,D 


005347 

1 35 

TSTR: 

MOV 

E.L 


SAVE BASE 

005350 

1 51 


MOV 

L.C 


C PTR TO L 

005351 

026 002 


MV 1 

0.2 


MASK TO D 

005353 

1 76 


MOV 

A, M 


LOAD VALUE 

OC 5354 

1 53 


MOV 

L.E 


RESTORE BASE 

Ou 5355 

242 


ANA 

D 


AND VALUE WITH MASK 

005356 

31 1 


RET 






4 

a 

a 



SUBROUTINE ACPR 

STORES A IN LOCATION OF CPTR 
LPTR IN E 

005357 

1 35 

ACPR: 

MOV 

E.L 


SAVE LPTR 

005460 

1 51 


MOV 

L.C 


CPTR TO L 

005361 

1 67 


MOV 

M. A 


STORE A 

005362 

1 53 


MOV 

L, E 


RESTORE BASE 

005363 

31 1 


RET 







SUBROUTINE DCMP 






CO 

1PARES TWO DOUBLE LENGTH 



£)CMP: 



WORDS 

0053G4 

1 76 

MOV 

A.M 


NUt'1 MANTA TO A 

065 6.5 

1 35 


MOV 

E.L 


SAVE BASE IN E 

005366 

1 50 


MOV 

L.B 


BASEN3 TO L 

005367 

276 


CMP 

M 


COMPARE WITH DEN MANTA 


January, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 51 


61 















005 J .’0 

I 53 



MOV L.E 

; RETURN BASE TO L 

005371 

3C0 



RNZ 

;RETURN IF NOT THE SAME 

005 1/2 

054 



INR L 

;L TO NUM MANTB 

0053/3 

1 76 



MOV A.M 

:LOAD IT 

005374 

1 50 



MOV L.B 

;DEN MANTB ADD TO L 

00 ;> i 75 

054 



INR L 

;BASE\ 4 TO L 

005376 

2 76 



CMP M 


005377 

1 53 



MOV L.E 


005400 

300 



RNZ 

•/* * * TP EXTENSION 

005401 

054 



INR L 

; /NOW CHECK BYTE 3 

005402 

054 



INR L 


005403 

1 76 



MOV A.M 

; /GET FOR COMPARE 

005404 

1 50 



MOV L.B 


005405 

054 



I NR L 


005406 

054 



INR L 

;/BYTE 3 NOW 

005407 

276 



CMP M 

; /COMPARE 

0054 10 

153 



MOV L.E 

;/***TP - ALL DONE 

00541 I 

31 1 



RET 





$ 


SUBROUTINE DIVC 




• 

B 


PERFORMS ONE CYCLE OF DOUBLE 




B 


PRECISION FLOATING PT 01 VIDE 




B 


ENTER AT ENT 1 ON FIRST CYCLE 




Oil ENT2: 


ENTER AT ENT2 ALL THEREAFTER 

005412 

315 

351 

CALL DLST 

;SHI FT MOVING DIVIDEND 

0054 1 3 

032 

027 

013 

JC OVER 

; IF CARRY11.NUM.GT.D 

0054 20 

3 1 5 

364 

012 ENT1: 

CALL DCMP 

;COMPARE NUM WITH DEN 

005423 

022 

027 

013 

JNC OVER 

JIF CARRY NOT SET.NUM . GE.DEN 

005426 

31 1 



RET 


005427 

315 

346 

012 OVER: 

CALL DSUB 

;CALL DOUBLE SU3TRACT 

005432 

1 35 



MOV E.L 

;SAVE BASE IN E 

005433 

1 51 



MOV L.C 

.•BASE \6 TO L 

00542-1 

054 



INR L 

;BASE \7 TO L 

005435 

054 



INR L 

■ / * * x TP 

005436 

1 76 



MOV A.M 


005437 

306 

001 


ADI 1 

; ADD 1 

005441 

1 67 



MOV M,A 

;PUT IT BACK 

005442 

1 53 



MOV L.E 

; RESTORE BASE TO L 

005443 

31 1 



RET 





B 


SUBROUTINE LXFR 




B 


MOVES CPTR TO EPTR 




C.XFR: 


MOVES 3 WORDS IF ENTER AT LXFR 

005444 

026 

004 

MV I D.4 

;/MOVE 4 WORDS 

005416 

151 


REP5: 

MOV L.C 

;CPTR TO L 

005417 

1 76 



MOV A.M 

; _CPTR> TO A 

005400 

1 53 



MOV L.E 

; EPTR TO L 

005451 

1 67 



MOV M,A 


005452 

014 



INR C 

j/INCREMENT C 

005453 

034 



INR E 

; /INCREMENT E TO NEXT 

OC 5454 

025 



OCR D 

; /TEST FOR DONE 

005455 

302 

045 

013 

JNZ REP5 

; /GO FOR FOR TILL D=0 

005460 

1 73 



MOV A,E 

; /NOW RESET C AND E 

005401 

3^6 

004 


SUI 4 

; /RESET BACK BY 4 

005463 

1 37 



MOV E,A 

; /PUT BACK IN E 

OC 5434 

1 71 



MOV A,C 

; /NOW RESET C 

005465 

326 

004 


SUI 4 

; /BY 4 

005467 

1 1 7 



MOV C.A 

; /BACK TO C 

005470 

31 1 



RET 

; /DONE 




SUBROUTINE LDCP 





1 

B 

THIS SUBROUTINE 

COMPUTES THE CHARACTERISTIC 




B 

FOR THE FLOATING DIVIDE ROUTINE 




REGISTERS ON EXIT: 





B 

B 

A = CONDITION FLAG (SEE ERROR RETURNS) 




t 

O.E = GARBAGE 





B 

B.C.H.L = SAME AS ON ENTRY 




REGISTERS ON ENTRY: 





B 

B 

(H.B) = ADDRESS 

OFF DIVISOR 




B 

(H.C) = ADDRESS 

OF QUOTIENT 




B 

(H.L) = ADDRESS 

OF DIVIDEND 

005471 

215 

1 14 

012 LOCP: 

CALL CFCHE 

;SET E=CHAR(H.B), A=CHAR(H.L) 

005474 

223 



SUB E 

;SUBTRACT TO GET NEW CHARACTER 

0U5475 

303 

1 04 

013 

JMP CCHK 

;GO CHECK FOR OVER/UNDERFLOW 


i vnLV/r\ r ur\ vvi_ia/ uiiulim 

; ANO STORE CHARACTERTI ST IC 


SUBROUTINE LMCP 

THIS SUBROUTINE COMPUTES THE CHARACTERISTIC 
FOR THE FLOATING MULTIPLY ROUTINE. 

REGISTERS ON EXIT: 

A = CONDITION FLAG (SEE ERROR RETURNS) 

D,E = GARBAGE 

B.C.H.L = SAME AS ON ENTRY 


Page 52 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 January, 1977 


62 










REGISTERS ON ENTRY: 


005500 315 1 1 4 012 

005503 203 


; (H, B) = ADDRESS OFF MULTIPLICAND 

; ( H, C) = ADDRESS OF PRODUCT 

; (H,L) = ADDRESS OF MULTIPLIER 

LMCP: CALL CFCHE ;SET E=CHAR(H,B), A=CHAR(H,L) 

ADD E ;ADD TO GET NEW CHARACTERISTIC 

;NOW FALL INTO THE ROUTINE 
;WHICH CHECKS FOR OVER/UNDERFLOW 
;AMD STORE CHARACTERT1 ST IC 


SBUROUTINE CCHK 

THIS SUBROUTINE CHECKS A CHARACTERISTIC IN 
THE ACCUMULATOR FOR OVERFLOW OR UNDERFLOW. 

IT THEN STORES THE CHARACTERISTIC, PRESERVING 
THE PREVIOUSLY COMPUTED MANTISSA SIGN. 

REGISTERS ON ENTRY: 

(H,L) = ADDRESS OF ONE OPERAND 
(H,B) = ADDRESS OF OTHER OPERAND 
(H,C) = ADDRESS OF RESULT 
A = NEW CHARACTERISTIC OF RESULT 

REGISTERS ON EXIT: 


A = CONDITION FLAG (SEE ERROR RETURNS) 
D,E = GARBAGE 

B,C,H,L = SAME AS ON ENTRY 


005504 




6chk: 



ENTER HERE TO CHECK CHARACTERISTIC 

005504 

376 

100 



CPI 

1000 

CHECK FOR 0 TO +63 

005505 

352 

1 23 

01 3 


JC 

STORC 

JUMP IF OKAY 

005511 

376 

200 



CPI 

20C0 

CHECK FOR *64 TO ♦127 

005513 

332 

1 33 

013 


JC 

CFLVC 

JUMP IF OVERFLOW 

005516 

376 

300 



CP! 

3C0Q 

CHECK FOR -128 TO -65 

005520 

332 

1 42 

013 


JC 

UFLWC 

JUMP IF UNDERFLOW 

005523 

135 



STORC: 

MOV 

E, L 

SAVE LINE 

000524 

151 




MOV 

L, C 

LET L POINT TO RESULT 

005525 

1 27 




MOV 

0, A 

SAVE CHARACTERISTIC IN D 

00o526 

315 

303 

01 2 


CALL 

l NCR3 

STORE CHARACTERISTIC 

005531 

1 53 




MOV 

L, E 

RESTORE L 

005532 

31 1 




RET 


RETURN 


; SUBROUTINE OFLWC 

• THIS ROUTINE WRITES A FLOATING POINT OVERFLOW AT (H,C) 

; SETS THE CONDITION FLAG, AND RETURNS. 

005533 135 &FLWC: MOV E,L ;SAVE L IN E 

005534 151 MOV L,C ;SET L=CPTR, SO (H,L)=ADDR OF RESULT 

005535 315 161 012 CALL WOVR ;WRITE OUT OVERFLOW 

005540 153 MOV L,E ;RESTORE L 

005541 311 RET ;RETURN 


SUBROUTINE UFLWC 


THIS ROUTINE WRITES A FLOATING POINT UNDERFLOW AT (H.C) 
SETS THE CONDITION FLAG, AND RETURNS. 


005542 

1 35 

UFLWC: 

MOV 

E, L 

005543 

151 


MOV 

L.C 

005544 

315 143 012 


CALL 

WUND 

005547 

1 53 


MOV 

L, E 

005550 

31 1 

• 

RET 



;SAVE LINE 

;SET L=CPTR, SO (H,L)=ADDR OF RESULT 
;WRITE OUT UNDEFLOW 
;RESTORE L 
;RETURN 


SUBROUTINE CSIGN 


THIS SUBROUTINE COMPUTES AND STORE THE MANTISSA 
SIGN FOR THE FLOATING MULTIPLY AND DIVIDE ROUTINES 

REGISTERS ON ENTRY: 


(H,L) = ADDRESS OF ONE OPERAND 
(H,B) = ADDRESS OF OTHER OPERAND 
(H,C) = ADDRESS OF RESULT 

REGISTERS ON EXIT: 


A, D,E = GARBAGE 

B, C,H,L = SAME AS ON ENTRY 


0C555I 

005554 

005555 

005560 


315 171 013 
253 

315 161 013 
31 1 


CSIGN: 


CALL 

XRA 

CALL 

RET 


MSFH 

E 

CSTR 


;SET A = SIGNCH,L), E=SIGN(H,B) 

;EXCLUSIVE OR SIGNS TO GET NEW SIGN 
;STORE SIGN INTO RESULT 
;RETURN 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 53 


63 









000561 
000362 
00536 3 
000*364 
000365 
005366 
005567 
005570 


005571 
005572 
005573 
005574 
005575 
005376 
005377 
005601 
005602 
005603 
005604 
005605 
005606 
005607 
00561 1 
005612 
005613 
005614 


005615 
005616 
005617 
005620 
005621 
005622 
005623 
005624 
005625 
005626 
005627 
005630 
005631 


005632 

005635 

005640 

005641 

005642 

005643 

005046 

005647 

005650 

005651 

005657 

005653 

005654 

005657 

005660 

005G61 

005662 

005663 

005CS4 


Page 54 


64 



6sTR: 



SUBROUTINE CSTR 
STORES VALUE IN 
CPTR\2 

PUTS LPTR IN E 

135 

MOV 

E.L 

;SAVE LPTR IN 

151 


MOV 

L, C 

;CPTR TO L 

054 


I NR 

L 

;CPTRS2 

054 


1 NR 

L 

;T0 L 

054 


I NR 

L 

;/* * * TP 

167 


MOV 

M. A 

;STORE ANSWER 

1 53 


MOV 

L,E 

;LPTR BACK TO 

31 1 


RET 




SUBROUTINE MSFH 


THIS SUBROUTINE FETCHES THE SIGNS OF THE MANTISSAS 
OF THE FLOATING POINT NUMBERS POINTED TO BY (H.L) 
AND (H J 3) INTO THE A AND E REGISTERS RESPECTIVELY. 


REGISTERS ON EXIT: 


A = SIGN OF MANTISSA OF (H.L) 
E = SIGN OF MANTISSA OF (H.B) 
B,C,0,H ) L = SAME AS ON ENTRY 


135 


MSFH: MOV 

E, L 

SAVE LPTR 

1 50 


MOV 

L,B 

SPTR TO L 

054 


I NR 

L 

BPTR\2 

054 


INR 

L 

/***TP 

054 


I NR 

L 

TO L 

1 76 


MOV 

A.M 

_BPTR\2>T0 A 

245 

200 

ANI 

1 28 

Save mant sign 

153 


MOV 

L.E 

LPTR BACK TO L 

137 


MOV 

E, A 

store dptr mant sign 

054 


INR 

L 

LPTR\2 

054 


I NR 

L 

/* * * TP 

054 


I NR 

L 

TO L 

1 76 


MOV 

A.M 

LPTR\2>TO A 

346 

200 

ANI 

1 28 

SAVE LPTR MANT SIGN 

055 


DCR 

L 

LPTR BACK 

055 


OCR 

L 

TO L 

055 


OCR 

L 

/ * » * TP 

31 1 


RET 





• 

$ 

SUBROUTINE BCTL 



• 

$ 

MOVES BP TR CHAR TO LPTR CHAR 



&CTL: MOV 

DESTROYSE 

1 35 


E.L 

LPTR TO E 

1 50 


MOV 

L.B 

BPTR TO L 

054 


INR 

L 

BPTR \2 

054 


I NR 

L 

/x**TP 

054 


INR 

L 

TO L 

1 76 


MOV 

A.M 

BPTR CHAR TO A 

1 53 


MOV 

L.E 

LPTR TO L 

054 


INR 

L 

LPTR \2 

054 


INR 

L 

TO L 

054 


INR 

L 

/ * * * TP 

167 


MOV 

M, A 

STORE BPTR CHAR IN LPTR CHAR 

1 53 


MOV 

L.E 

LPTR TO L 

211 


RET 

• 

$ 





« 

*xxxtx-*xxtxx»xx*x**xx*x.*xx**x**xrxx*x***ft*x* 


//// 5 DIGIT FLOATING PT. OUTPUT 


**«***«*«****«*y*****XK**St********t*:lr>itij:******X******** 


*******ROUTINE to convert FLOATING PT. 

**^NUMBERS TO ASCI I AND OUTPUT THEM VIA A SUBROUTINE 
*«•CALLED OUTR - NOTE: THIS IS CURRENTLY SET 
* * * TO ODT'S OUTPUT ROUTINE 


315 

332 

01 1 

CVRT: 

CALL 

ZCHK 

307 

257 

013 


JNZ 

NNZRO 

01 4 




I NR 

C 

01 4 




INR 

C 

151 




MOV 

L.C 

3 1 5 

215 

012 


CALL 

WZER 

054 




INR 

L 

054 




INR 

L 

054 




INR 

L 

054 




INR 

L 

257 




XRA 

A 

167 




MOV 

M, A 

203 

01 6 

01 4 


JMP 

MDSKP 

1 26 



NNZRO: 

MOV 

D.M 

054 




INR L 


106 




MOV B.M 


054 




INR L 


1 36 




MOV E.M 


054 




INR L 



;CHECK FOR NEW ZERO 
;NOT ZERO 

; IT WAS, OFFSET C BY 2 


;WRITE ZERO 

JPNT TO DECIMAL EXPONENT 


;SET IT TO ZERO 
;OUTPUT IT 

;/GET THE NUMBER TO CONVERT 


;/4 WORD***TP 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 











005665 

1 76 




MOV A.M 

/***TP 

005665 

014 




INR C 

/OFFSET SCRATCH POINTER BY 2 

005667 

01 4 




I NR C 


005670 

151 




MOV L,C 

/L NOT NEEDED ANY MORE 

005671 

162 




MOV M.O 

/SAVE NUMBER IN SCRATCH 

005672 

054 




INR L 


005673 

160 




MOV M.B 


005674 

054 




INR L 


005675 

1 63 




MOV M,E 

/* * * TP 

005675 

054 




INR L 

/xxxTP 

005677 

107 




MOV B,A 

/SAVE- COPY OF CHAR & SIGN 

005700 

345 

1 77 



AN I 1770 

GET ONLY CHAR. 

005/02 

167 




MOV M,A 

/SAVE ABS(NUMBER) 

005703 

376 

1 00 



CPI 1OOQ 

CK FOR ZERO 

005705 

312 

314 

01 3 


JZ NZRO 


006710 

326 

001 



S'JI 1 

/GET SIGN OF DEC, EXP 

0O5712 

345 

i 00 



AN I 1000 

/GET SIGN OF CHAR. 

005714 

007 



NZRO: 

RLC 

MOVE IT TO SIGN POSITION 

005715 

054 




INR L 

/MOVE TO DECIMAL EXP. 

005716 

1 67 




MOV M.A 

/SAVE SIGN OF EXP. 

005717 

1 70 




MOV A,B 

/GET MANT. SIGH BACK 

005720 

31 5 

220 

01 4 


CALL SIGN 

/OUTPUT SIGN 

005723 

056 

024 



MV I L, (TEN5 AND 3770) ;/TRY MULT. OR DIV. BY 100000 FIRST 

005725 

315 

361 

01 4 


CALL COPT 

/MAKE A COPY IN RAM 

005730 

315 

235 

01 4 

TST8: 

CALL GCHR 

/GET CHAR. OF NUMBER 

005733 

1 07 




MOV B.A 

/SAVE A COPY 

00573 } 

346 

1 00 



ANI 1OOQ 

/GET ABSOLUTE VALUE OF CHAR 

005733 

1 70 




MOV A.B 

/INCASE PLUS 

005737 

312 

343 

01 3 


JZ GOTV 

/ALREADY PLUS 

005742 

076 

200 



MVI A,2000 

/MAKE MINUS INTO PLUS 

005744 

220 




SUB B 

/PLUS-200B-CHAR 

0057-.5 

376 

022 


GOTV: 

CPI 220 

/TEST FOR USE OF 100000 

003747 

372 

353 

01 3 


JM TRY 1 

/WONT GO 

003752 

315 

243 

01 4 


CALL MORD 

/WILL GO SO DO IT 

005755 

306 

005 



ADI 5 

/INCREMENT OEC. EXPONENT BY 3 

005/57 

167 




MOV M,A 

/UPDATE MEM 

0 0 3 7 C 0 

303 

330 

013 


JMP TST8 

/GO TRY AGAIN 

005763 

G5S 

030 


TRY 1 : 

MVI L, (TEN AND 377Q) :/NOV/ USE JUST TEN 

005765 

315 

361 

01 4 


CALL COPT 

/PUT IT IN RAM 

005770 

3 i 5 

235 

01 4 

TST1 : 

CALL GCHR 

/GET CHARACTERISTIC 

005/73 

376 

001 



CPI 1 

/MUST GET IN RANGE 1 TO 6 

005/75 

362 

0 1 1 

01 4 


JP OKI 

/ATLEAST ITS 1 OR BIGGER 

006000 

315 

243 

01 4 

MDGN: 

CALL MORD 

/MUST ML'L OF DIV BY 10 

00600? 

306 

001 



ADI 1 

/INCREMENT DECIMAL EXP. 

006005 

167 




MOV M,A 

/UPDATE MEM 

005006 

303 

370 

013 


JMP TST1 

/NOW TRY AGAIN 

006011 

375 

007 


OKI : 

CPI 7 

/TEST FOR LESS THAN 7 

006013 

362 

000 

014 


JP MDGN 

/NOPE - 7 OR GREATER 

006016 

151 



NDSKP: 

MOV L,C 

;/SET UP DIGIT COUNT 

006017 

055 




DCR L 


006020 

055 




DCR L 

/IN 1ST WORD OF SCRATCH 

006021 

066 

005 



MV I M,5 

/5 DIGITS 

006023 

137 




MOV E,A 

/SAVE CHAR. AS LEFT SHIFT COUNT 

006024 

31 5 

1 66 

01 4 


CALL LSFT 

/SHIFT LEFT PROPER NUMBER 

006027 

376 

012 



CPI 12Q 

/TEST FOR 2 DIGITS HERE 

0C6031 

362 

31 1 

01 4 


JP TWOD 

/JMP IF 2 DIGITS TO OUTPUT 

006034 

315 

072 

01 4 


CALL DIGO 

/OUTPUT FIRST DIGIT 

006037 

315 

1 1 5 

01 4 

POPD: 

CALL MULTT 

/MULTIPLY THE NUMBER BY 10 

006042 

315 

072 

01 4 

INPCP: 

CALL DIGO 

/PRINT DIGIT IN A 

006045 

307 

037 

01 4 


JNZ POPD 

/MORE DIGITS? 

0C6050 

076 

305 



MV I A,3050 

/NO SO PRINT E 

006052 

315 

3 t 5 

01 7 


CALL OUTR 

/BASIC CALL TO OUTPUT 

0C6053 

315 

275 

01 4 


CALL GETEX 

/GET DECIMAL EXP 

006060 

107 




MOV B,A 

/SAVE A COPY 

006061 

315 

220 

01 4 


CALL SIGN 

/OUTPUT SIGN 

0 0 c 0 5 4 

1 70 




MOV A,B 

/GET EXP SACK 

006065 

3-15 

077 



AN 1 770 

/GET GOOD BITS 

000067 

315 

3 40 

01 4 


CALL CTWO 

/GO CONVERT 2 DIGITS 

006072 

306 

260 


D1 GO: 

ADI 2600 

/MAKE A INTO ASCII 

006074 

315 

375 

01 7 


CALL OUTR 

/OUTPUT DIGIT 

006077 

151 




MOV L,C 

/GET DIGIT COUNT 

006100 

055 




DCR L 

/BACK UP TO DIGIT COUNT 

006101 

055 




DCR L 


005102 

1 76 




MOV A,M 

/TEST FOR DECIMAL PT 

003103 

376 

003 



CPI 5 

/PRINT . AFTER 1ST DIGIT 

006105 

076 

255 



MV I A,256Q 

/JUST IN CASE 

006107 

31 4 

373 

017 


CZ OUTR 

/OUTPUT . IF 1ST DIGIT 

0061 1 2 

1 26 




MOV D,M 

/NOW DECREMENT DIGIT COUNT 

0061 1 3 

025 




DCR D 


006 1 1 4 

1 62 




MOV M,D 

/UPDATE MEM AND LEAVE FLOPS SET 

006i15 

31 1 




RET 

/SERVES AS TERM FOR 01 GO & CVRT 

0061iG 

035 

001 


MULTT: 

MV I E,1 

/MULT. BY 10 (START WITH X2) 

005’20 

315 

1 66 

01 4 


CALL LSFT 

/LEFT SHIFT 1 = X2 

006’23 

1 51 




MOV L,C 

/SAVE X2 IN "RESULT" 

006124 

055 




DCR L 

/SET TO TOP OF NUMBER 

006125 

1 71 




MOV A.C 

/SET C TO RESULT 

000126 

306 

Oil 



ADI 11Q 


006130 

1 1 7 




MOV C.A 

/NOW C SET RIGHT 

006131 

1 74 




MOV A,H 

/SHOW RAM TO RAM TRANSFER 

006’32 

315 

377 

01 4 


CALL COPY 

/SAVE X2 FINALLY 

006135 

1 71 




MOV A,C 

/MUST RESET C 

006'36 

326 

01 1 



SUI 110 

/BACK TO NORMAL 

006140 

1 1 7 




MOV C.A 


January, 1977 



Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 55 


65 







006'41 

036 

002 


006’43 

151 



OOC'44 

055 



006 45 

315 

1 72 

014 

006150 

151 



006 1 51 

1 71 



006'52 

30G 

012 


006154 

107 



00S165 

315 

0C3 

012 

005160 

035 



OOo 61 

1 76 



006>62 

1 50 



006163 

055 



006164 

216 



006l65 

31 1 



006 166 

151 



OOC107 

055 



006170 

257 



0 0 6 1 71 

167 



006172 

035 



006173 

370 



0061 7-1 

054 



006175 

024 



006 75 

054 



006177 

1 76 



0 0 C 2 C 0 

027 



OOC201 

1 67 



006202 

055 



006203 

1 76 



006204 

027 



006205 

1 67 



0C6206 

055 



0 C 5 2 0 7 

1 76 



006210 

027 



006211 

1 67 



006212 

035 



006213 

176 



006214 

027 



00C215 

3C3 

1 71 

01 4 

006220 

346 

200 


006222 

076 

240 


006224 

312 

231 

01 4 

006227 

076 

255 


006231 

315 

375 

01 7 

006234 

31 1 



006235 

151 



006236 

054 



006237 

054 



006240 

054 



006241 

1 76 



006242 

31 1 



006243 

315 

276 

01 4 

006246 

1 37 



006247 

105 



006250 

004 



006251 

151 



006252 

171 



006253 

306 

01 1 


006255 

1 17 



006256 

1 73 



006257 

346 

200 


006251 

312 

303 

01 4 

006264 

31 5 

1 37 

01 1 

006267 

171 



006270 

1 1 5 



006271 

157 



006272 

1 74 



006273 

315 

377 

01 4 

0062/6 

151 



006277 

054 



006300 

203 

235 

01 4 

006303 

315 

000 

010 

006306 

303 

267 

01 4 

cos 3 1 ; 

313 

340 

014 

0062 1 4 

1 07 



0 C 0 3 1 5 

31 5 

276 

01 4 

006320 

1 37 



C0632i 

34S 

200 


006323 

31 2 

334 

01 4 

00632-5 

035 



006527 

1 63 



006230 

1 70 



006331 

303 

042 

01 4 

006334 

034 



006323 

305 

327 

014 

006 o'40 

036 

377 


0062a2 

034 



006343 

326 

012 


OOC345 

362 

342 

01 4 

0C6J50 

306 

012 


006332 

107 



006353 

173 



006354 

31 5 

072 

014 


LSFT: 


TLCOP: 
TLP2: 


SIGN: 

PLSV: 

GCHR: 
GETA: 


MORD: 


FINUP: 

GETEX: 

DIVIT: 
TWOD: 


FINIT: 

ADD1 : 

CTWO: 
LCOP: 


MV I 

E, 2 

MOV 

L. C 

OCR 

L 

CALL TLP2 

MOV 

L, C 

MOV 

A, C 

ADI 

12Q 

MCV 

B, A 

CALL 

. 6ado 

DCR 

L 

MOV 

A, M 

MOV 

L.B 

DCR 

L 

ADC 

M 

RET 


MOV 

L, C 

DCR 

L 

XRA 

A 

MOV 

M, A 

DCR 

E 

RM 


I NR 

L 

I NR 

L 

I NR 

L 

MOV 

A.M 

RAL 


MOV 

M, A 

DCR 

L 

MOV 

A.M 

RAL 


MOV 

M, A 

DCR 

L 

MOV 

A.M 

RAL 


MOV 

M. A 

DCR 

L 

MOV 

A.M 

RAL 


JMP 

TLOOP 

ANI 

2000 

MV 1 

A,240Q 

JZ 

PLSV 

MV I 

A.2550 

CALL OUTR 

RET 


MOV 

L, C 

I NR 

L 

INR 

L 

I NR 

L 

MOV 

A.M 

RET 

CALL 

. GETEX 

MOV 

E, A 

MOV 

B.L 

INR 

B 

MOV 

L.C 

MOV 

A. C 

ADI 

Ho 

MOV 

C, A 

MCV 

A E 

ANI 

2600 

JZ 

DIVIT 

CALL LMUL 

MOV 

A, C 

MOV 

C.L 

MOV 

L. A 

MOV 

A. H 

CALL COPY 

MOV 

L.C 

I NR 

L 

JMP 

GETA 

CALL LDIV 

JMP 

FINUP 

CALL CTWO 

MOV 

B, A 

CALL GETEX 

MOV 

ANI 

200Q 

JZ 

ADD 1 

DCR 

E 

MOV 

M.E 

MOV 

A, B 

JMP 

1 NPOP 

INR 

E 

JMP 

FINI T 

MV I 

E,3770 

I NR 

E 

SUI 

1 20 

JP 

LOOP 

ADI 

120 

MOV 

B.A 

MOV 

A, E 

CALL 01 GO 


;/NOW GET <X2)X4=X8 
;/BUT MUST SAVE OVERFLOW 

;/GET X8 

; /SET UP TO CALL DADO 
;/SET B TO X2 
;/TO X2 

;/ADD TWO LOW WORDS 
;/BACK UP TO OVERFLOW 
;/GET IT 

J/NOW SET TO X2 OVERFLOW 
;/ITS AT B-1 

;/ADD WITH CARRY - CARRY WAS PRESERVED 
;/ALL DONE, RETURN OVERFLOW IN A 
;/SET PTR FOR LEFT SHIFT OF NUMBER 
;/BACK UP TO OVERFLOW 
;/OVERFLOW 1 0 1ST TIME 
;/SAVE OVERFLOW 
;/TEST FOR DONE 
;/DOr;E WHEN E MINUS 
;/MOVE TO LOW 

;/* * * TP EXTENSION 
;/SHI FT LEFT 4 BYTES 

;/PUT BACK 
; /* * * TP - ALL DONE 
;/GET LOW 
;/SHI FT LEFT 1 
;/RESTORE IT 
;/BACK UP TO HIGH 
;/GET HIGH 

;/SHI FT IT LEFT WITH CARRY 
\ /'PUT IT BACK 
;/BACK UP TO OVERFLOW 
;/GET OVERFLOW 
;/SHI FT IT LEFT 
;/GO FOR MORE 
;/GET SIGN BIT 
;/SPACE INSTEAD OF PLUS 
;/TEST FOR ♦ 

; /NEGATIVE 

.-/OUTPUT SIGN 

; /GET CHARCTERISTI C 
;/MOVE TO IT 


• /* * * TP 

;/FETCH INTO A 
;/DONE 

;/MUL OR DIV DEPENDING ON EXP 

;/SAVE DECIMAL EXP 

J/SET UP TO MULT OR DIV 

;/NOW BOP POINTER SET 

;/L POINTS TO NUMBER TO CONVERT 

;/POINT C AT "RESULT" AREA 

;/IN SCRATCH 

;/NOW C SET RIGHT 

;/NOW TEST FOR MUL 

;/TEST NEGATIVE DEC. EXP. 

;/IF EXP IS ♦ THEN DIVIDE 
;/MULT. 

;/SAVE LOC. OF RESULT 

;/C=LOC OF NUMBER (IT WAS DESTROYED) 

;/SET L TO LOC. OF RESUTL 
;/SHOW RAM TO RAM TRANSFER 
;/MOVE RESULT TO NUM3ER 
;/NOW GET DECIMAL EXP 

;/USE PART OF GCHR 
.•/DIVIDE 

;/CONVERT TO 2 DIGITS 

;/SAVE ONES DIGIT 

;/GET DECIMAL EXP 

.•/SAVE A COPY 

;/TEST FOR NEGATIVE 

;/BUMP EXP BY 1 SINCE 2 DIGITS 

;/DECREMENT NEGATIVE EXP SINCE 2 DIGITS 

;/RESTORE EXP WITH NEW VALUE 

;/NOW DO 2ND DIGIT 

;/GO OUT 2ND AND REST FO DIGITS 

;/COMPENSATE FOR 2 DIGITS 

;/CONVERT 2 DIGIT BIN TO BCD 
;/ADD UP TENS DIGIT 
;/SUBTRACT 10 
;/TlIL NEGATIVE RESULT 
;/RESTORE ONES DIGIT 
J/SAVE ONES DIGIT 
; /GET TENS DIGIT 
;/OUTPUT IT 


Page 56 


66 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 








006357 

1 70 


006360 

31 1 


006361 

171 


006362 

306 

005 

006364 

1 1 7 


006365 

076 

015 

006367 

315 

377 

006372 

171 


006373 

326 

005 

006375 

1 1 7 


006376 

311 


006377 

104 


006400 

1 47 


006401 

176 


006402 

054 


006403 

126 


006401 

054 


006405 

1 36 


OCX- 106 

054 


006407 

156 


0064i0 

1 10 


0064 1 1 

105 


006412 

1 51 


006413 

1 67 


OCX-41 4 

054 


006415 

1 76 


0064 16 

1 62 


006417 

054 


006420 

1-33 


000421 

054 


006422 

160 


066423 

31 1 


006424 

303 

i -o 

006430 

240 

000 


COPT: 

01 4 

COPY: 


000 02 1 IeN5: 

OCO CO-1 TEN: 


MOV 

RET 

A, B 

/SET A TO 2ND DIGIT 

MOV 

A , C 

/COPY FROM 10*N TO RAM 

ADI 

5 


MOV 

C , A 

/SET C TO PLACE TO PUT 

MV 1 

A,(TEN5/256). 


CALL COPY 

/COPY IT 

MOV 

SUI 

A, C 

5 

/NOW RESET C 

MOV 

RET 

C, A 

/ITS RESET 

MOV 

B, H 

/SAVE RAM H 

MOV 

H, A 

/SET TO SOURCE H 

MOV 

A, M 

/GET 4 WORDS INTO THE REGS. 

I NR 

L 


MOV 

D, M 


I NR 

L 


MOV 

E,M 


I NR 

L 


MOV 

L, M 

/LAST ONE ERASES L 

MOV 

H, B 

; /SET TO DESTINATION RAM 

MOV 

S,L 

; /SAVE 4TH WORD IN B 

MOV 

L, C 

; /SET TO DESTINATION 

MOV 

M, A 

;/SAVE FIRST WORD 

I NR 

L 

; /SAVE THIS WORD IN A(INPUTSAVES C HERE 

MOV 

A, M 

MOV 

M, D 

; / NOW PUT 2ND WORD 

I NR 

L 


MOV 

M, E 


1 NR 

L 


MOV 

M, B 

; /ALL 4 COPIED NOW 

RET 


; /ALL DONE 


OS 3030,’200,0Q t 21Q :/303240(8) = 100000. 

D3 2400,00,00,40 ;/12(8) = 10 


SCRATCH MAP FOR I/O CONVERSION ROUTINES 


RELATIVE TO 

C-2 

C-1 

C 

C*1 
C + 2 
C*3 
C + 4 
C + 5 
C + 6 
C + 7 
C + 8 
C*9 
C+10 
C + 1 1 


(C+2)USE 

DIGIT COUNT 
OVERFLOW 

HIGH NUMBER - MANTISSA 
LOW NUMBER 
CHARACTERISTIC 

DECIMAL EXPGNEXT (SIGN S MAG.) 

TEN* *N 
TEN* *N 
TEN* *N 

RESULT OF MULT & DIV 
AND TEMP FOR X2 

• • M 

L FOR NUMBER TO GO INTO (INPUT ONLY) 
DIGIT JUST INPUT (INPUT ONLY) 


/*nx**BEGIN input************* 


005 131 067 
006 135 311 


ERR: STC 

RET 


ERROR FLAG 
AND RETURN 


XXXXXXXXXXXXXXX£XXXXXXX*XXXXXXX»XXXXX£!t*XXXXXttXX*«*»»*X« 

//// 4 1/2 DIGIT INPUT ROUTINE 


;XXXXXXXXX*XXXXXXK*«-XXXX*X£XX£!|-1tX«»£K»£X**S««XX*X£S***ttX 


/L POINTS TO WHERE TO PUT INPUT NUMBER 
/C POINTS TO 13(10) WORDS OF SCRATCH 


006436 

1 05 



iNPUT: 

MOV B,L 

006437 

1 71 




MOV A,C 

006440 

306 

01 7 



ADI 17Q 

006442 

157 




MOV L,A 

006443 

1 60 




MOV M,B 

00644 1 

01 4 




I NR C 

006445 

01 4 




I NR C 

006446 

315 

035 

01 5 


CALL ZROIT 

006431 

054 




I NR L 

000452 

167 




MOV M.A 

006453 

31 5 

31 1 

01 5 


CALL GNUM 

000456 

376 

3/6 



CPI 376Q 

006450 

312 

203 

01 5 


JZ DECPT 

006403 

376 

075 


TSTEX: 

CPI 25Q 

006405 

312 

230 

01 5 


JZ INEXP 

006470 

3 76 

360 



CPI 360Q 

006472 

30:? 

034 

015 


JNZ ERR 

006475 

311 5 

022 

01 3 


CALL FLTSGN 

OC'.-LOO 

315 

275 

01 4 

SCALE: 

CALL GETEX 

006303 

346 

1 77 



ANI 177Q 

006505 

1 37 




MOV E,A 

006505 

34 6 

1 00 



ANI 100Q 

006510 

007 




RLC 

January, 1977 



Dr. Dobb's Journal of Computer Calisthenics & 


/SAVE ADDRESS WHERE DATA IS TO GO 
/IN SCRATCH 

/COMPUTE LOC. IN SCRATCH 


/PUT IT 

/OFFSET SCRATCH POINTER 
/BY 2 

/ZERO NUMBER 

/AND ZERO 

/DECIMAL EXPONENT 

/GET INTEGER PART OF NUM 

/TERM*.? 

/YES 

/TEST FOR E 

/YES - HANDLE EXP 

/TEST FOR SPACE TERM (240B-260B) 

/NOT LEGAL TERM 

/FLOAT n AND SIGN IT 

/GET DECIMAL EXP 

/GET GOOD BITS 

/SAVE COPY 

/GET SIGN OP EXP 

/INTO SIGN BIT 


Orthodontia, Box E, Menlo Park, CA 94025 


Page 57 


67 







000511 

267 



0005 I 2 

107 



000513 

1 73 



00651 1 

312 

1 22 

01 5 

0065i7 

076 

200 


006521 

£23 



006322 

200 



0C6': 23 

1 67 



000524 

056 

024 


00C526 

315 

361 

01 4 

000531 

315 

276 

01 4 

006534 

346 

077 


0065 36 

376 

005 


0065 10 

372 

1 54 

015 

006543 

315 

243 

01 4 

006545 

326 

005 


006550 

167 



0C6551 

303 

134 

01 5 

00655-1 

056 

030 


00655-3 

315 

361 

01 4 

006561 

315 

276 

014 

006564 

346 

077 


006536 

267 



006567 

312 

026 

01 s 

006572 

315 

243 

01 4 

006575 

326 

001 


006577 

167 



006600 

203 

1 34 

015 

006603 

1 51 



006604 

055 



0C6605 

055 



006606 

036 

000 


006610 

315 

01 4 

016 

006613 

137 



006614 

151 



006615 

055 



000016 

055 



006617 

106 



006620 

315 

276 

01 4 

006623 

ICO 



000624 

1 73 



006625 

303 

063 

015 

000600 

3 1 5 

022 

01 3 

006633 

315 

026 

015 

006636 

31 5 

055 

01 3 

006641 

315 

31 1 

015 

006644 

376 

360 


006 64 5 

302 

034 

015 

006651 

151 



0C6C52 

054 



006653 

054 



006634 

1 76 



006655 

346 

037 


0C6657 

107 



0CS660 

054 



CC6631 

1 76 



006662 

207 



0C6663 

1 70 



006664 

372 

272 

015 

006667 

076 

000 


006671 

220 



005672 

054 



006673 

206 



006674 

1 67 



006675 

171 



006676 

3C6 

015 


006700 

1 57 



006701 

1 56 



006702 

1 74 



006703 

3 i 5 

37 7 

01 4 

006706 

303 

100 

01 5 

006711 

315 

372 

01 7 

006714 

376 

240 


006716 

312 

31 1 

015 

006721 

376 

255 


00672-3 

302 

337 

015 

006725 

151 



006727 

054 



005730 

054 



00673i 

054 



006732 

066 

200 


006734 

303 

31 1 

015 

006737 

376 

253 


006741 

31 2 

31 1 

015 

00674 1 

326 

260 


0C574S 

370 



006747 

375 

012 


006751 

360 



00^752 

i 37 



006753 

31 5 

047 

01 3 

006753 

1 C3 



0067 oV 

3 1 5 

1 1 6 

01 4 

006762 

267 




APLS: 

I NT5: 

TRYTN: 
INTI : 

DECPT: 


INEXP: 


USE IT: 


GNUM: 


TRYP: 
TSTN: 


ORA A 
MOV B,A 
MOV A,E 
JZ APLS 
MV I A,200Q 
SUB E 
ADD B 
MOV M,A 

MV I L, (TEN5 AND 

CALL COPT 

CALL GETEX 

AN 1 77Q 

CPI 5Q 

JM TRYTN 

CALL MORD 

SUI 50 

MOV M,A 

JMP INT5 

MV I L, (TEN AND 

CALL COPT 

CALL GETEX 

ANI 77Q 

ORA A 

JZ SAVEN 

CALL NORD 

SUI 10 

MOV M,A 

JMP INTI 

MOV L,C 

DCR L 

OCR L 

MV I M,0 

CALL EP1 

MOV E,A 

MOV L,C 

DCR L 

DCR L 

MOV B,M 

CALL GETEX 

MOV M ( B 

MOV A,E 

JMP TSTEX 

CALL FLTSGN 

CALL SAVEN 

CALL ZROIT 

CALL GNUM 

CPI 360Q 

JNZ ERR 

MOV L,C 

I NR L 

I NR L 

MOV A.M 

ANI 37Q 

MOV B,A 

I NR L 

MOV A,M 

ORA A 

MOV A,B 

JM USE IT 

MV I A,OQ 

SUB B 

I NR L 

ADD M 

MOV M,A 

MOV A,C 

ADI 15Q 

MOV L,A 

MOV L,M 

£?L V L A ci*PY 
JMP SCALE 
CALL INP 
CPI 240Q 
JZ GNUM 
CPI 2550 
JNZ TRYP 
MOV L , C 
I NR L 
I NR L 

MVU MI,200Q 
JMP GNUM 
CPI 253Q 
JZ GNUM 
S'JI 2600 
RM 

CPI 12Q 
RP 

MOV E,A 
CALL GETN 
MOV M,E 
CALL MULTT 
ORA A 


/SET FLOPS 
/SAVE SIGN 
/GET EXP BACK 
/JMP IS + 

/MAKE MINUS ♦ 

/NOW ITS ♦ 

/SIGN NUMBER 
:/SAVE EXP (SIGN & MAO.) 

377Q) ;/TRY MORD WITH 10**5 FIRST 

;/TRANSFER TO RAM 
/GET DECIMAL EXP 
/GET MAG. OF EXP 
/TEST FOR USE OF 10**5 
/WONT GO - TRY 10 
/WILL GO SO DO IT 
/MAG = MAG -5 
/UPDATE DEC. EXP IN MEM 
j/GO TRY ACAIN 
377Q) ;/PUT TEN IN RAM 


/SET UP FOR LOOP 
/GET MAGNITUDE 
/TEST FOR 0 

/DONE, MOVE MUM OUT AND GET OUT 

/NOT DONE - DO 10 

/EXP = EXP -1 

/UPDATE MEM 

/TRY AGAIN 

/ZERO DIGIT COUNT 

/SINCE ITS NECESSARY 

/TO COMPUTE EXP. 

/ZEROED 

/GNUM IN MIDDLE 
/SAVE TERMINATOR 
/MOVE DIGIT COUNT TO EXP 
/BACK UP TO DIGIT COUNT 


/GOT DIGIT COUNT 

/SET L TO DEC. EXP 

/PUT EXP 

/TERM BACK TO A 

/TEST FOR E+OR-XX 

/FLOAT AND SIGN NUMBER 

/SAVE NUMBER IN (L) TEMP 

/ZERO OUT NUM, FOR INPUTTING EXP 

/NOW INPUT EXPONENT 

/TEST FOR SPACE TERM. 

/NOT LEGAL - TRY AGAIN 
/GET EXP OUT OF MEM 
/* * *TP 


/EXP LIMITED TO 5 BITS 

/GET LOWEST 8 BITS 

/GET GOOD DITS 

/SAVE THEM 

/GET SIGN OF EXP 

/INTO A 

/SET FLOPS 

/INCASE NOTHING TO DO 
/IF NEG. USE AS ♦ 

/IF + MAKE - 

/0-X = -X 

/POINT AT EXP 

/CET REAL DEC. EXP 

/PUT IN MEM 

/NOW GET NUMBER BACK 

/GET ADD OF L 

/L POINTS TO L OF NUMBER 

/NOW L POINTS TO NUMBER 

/RAM TO RAM COPY 

/COPY IT BACK 

/NOW ADJUST FOR EXP 

/GET A CHAR 

/IGNORE LEADING SPACES 


;/TEST FOR - 
; / NO T MINUS 
;/MINUS SO SET SIGN 
J/IN CHAR LOC. 

;/***TP 

; /SET - SIGN 

;/IGNORE + 


/STRIP ASCI I 
/RETURN IF TERM 
/TEST FOR NUMBER 
/ILLEGAL 
/SAVE DIGIT 

/LOC. OF DIGIT STORAGE TO L 

/SAVE DIGIT 

/MULT NUMBER BY 10 

/TEST FOR TOO MANY DIGITS 


Page 58 


68 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 







006763 

00676-1 

005767 

006770 

006771 

006/72 

006773 

0067 7 4 

006/75 

006776 

007000 

007001 

007002 

007003 

007005 

007005 

007007 

007010 

007011 

007012 

007013 

007014 

00701 7 

007022 

007023 

007025 

007027 

007031 

007032 

007033 

00703-1 

007035 

007036 

007037 

0070-10 

007041 

007044 

007045 

007045 

007047 

007050 

007032 

007053 

007054 

007055 

007076 

007057 

007060 

007061 

Co 7062 

007063 

007064 

007065 

0 U 7 0 0 6 

000633 


007067 

007070 

007071 

007072 

007073 

007074 

007075 
007076 
007101 
007 02 
007103 


007104 
007105 
007106 
007107 
007.11 
0071 1 2 
00 7 1 1 3 
007 1 1 4 
007115 
00 7'16 
007 1 1 7 
007120 
007121 
007>22 
007l23 
00 7 I 24 
007125 
007126 
007 127 
00 7 I 30 
007131 


January, 1977 


300 



RNZ 


315 

047 016 


CALL GETN 

151 



MOV 

L.C 

054 



I NR 

L 

054 



1 NR 

L 

206 



ADD 

M 

1 67 



MOV 

M, A 

055 



DCR 

L 

1 76 



MOV 

A, M 

316 

000 


AC 1 

00 

167 



MOV 

M, A 

055 



DCR 

L 

1 76 



MOV 

A, M 

316 

000 


AC 1 

06 

167 



MOV 

M, A 

330 



RC 


055 



DCR 

L 

055 



DCR 

L 

1 06 



MOV 

B,M 

004 



1 NR 

B 

1 60 



MOV 

M, B 

315 

372 017 

EP1 : 

CALL 1NP 

303 

344 015 


JMP 

TSTN 

1 51 


FLTSGN: 

MOV 

L 

303 

325 011 


JMP 

FI 

1 71 


SAVEN: 

MOV 

A, C 

306 

015 


ADI 

1 50 

1 57 



MOV 

L, A 

1 36 



MOV 

E, M 

153 



MOV 

L, E 

054 



1 NR 

L 

161 



MOV 

M, C 

1 51 



MOV 

L.C 

1 1 3 



MOV 

C, E 

1 74 



MOV 

A. H 

316 

377 014 


CALL COPY 

1 1 7 



MOV 

C. A 

267 



ORA A 

31 1 



RET 


171 


GETN: 

MOV 

A, C 

306 

016 


ADI 

1 60 

1 57 



MOV 

L, A 

1 76 



MOV 

A,M 

31 1 



RET 


1 51 


ZROIT: 

MOV 

L.C 

207 



XRA 

A 

1 67 



MOV 

M, A 

054 



I NR 

L 

1 67 



MOV 

M.A 

054 



I NR 

L 

1 67 



MOV 

M.A 

054 



I NR 

L 

1 67 



MOV 

M.A 


/TOO MANY DIGITS 
/GET DIGIT 
/SET L TO NUMBER 

/ x x x T P 

/ADD IN THE DIGIT 
/PUT RESULT BACK 
/NOW DO HIGH 

/GET HIGH TO ADD IN CARRY 
/ADD IN CARRY 
/UPDATE HIGH 
/x * * TP EXTENSION 

/ADD IN CARRY 
/* * *TP ALL DONE 
/OVERFLOW ERROR 
/BUMP DIGIT COUNT NOW 

/GET DIGIT COUNT 
/BUMP DIGIT COUNT 
/UPDATE DIGIT COUNT 
/GET NEXT CHAR 
/MUST BE NUM. OR TERM 
;POINT L AT NUMBER TO FLOAT 
;GO FLOAT IT 
/PUT NUMBER IN (L) 

/GET ADD OF L 

/GET L OF RESULT 
/POINT L AT (L) 

/SET TO 2ND WORD TO SAVE C 

/SAVE C IN (L) +1 SINCE IT WILL BE 

/SET UP TO CALL COPY DESTROYED 

/NOW L&C SET 

/RAM TO RAM COPY 

/COPY TO L 

/IL)+1 RETURNED HERE SO SET AS C 
;MAKE SURE CY=0 (NO ERROR) 

/NOV' EVERYTHING HUNKY-DORRY 
/GET DIGIT 

/LAST LOG. IN SCRATCH 
/PUT IN L 
/GET DIGIT 

/ZERO NUMBER - 

/* * *TP 
/* * * TP 


31 1 


READ 


RET 

EQU 


3330 


CONTAIN LOW BYTE OF 



; BODE, 

CY = 0 IF 

BC<DE: 

1 73 

DCOMP: 

MOV 

A, E 

271 


CMP 

C 

300 


RNZ 


1 72 


MOV 

A, D 

270 


CMP 

B 

31 1 


RET 



; ROUTINE 

TO INPUT CHAR 

305 

CHAR2: 

PUSH 

B 

315 333 000 


CALL 

READ 

1 70 


MOV 

A, B 

301 


POP 

B 

31 1 


RFT 



;/NOW SET SIGN TO ♦ 

;/DONE 

;ODT READ ROUTINE 
TWO BYTE VALUE. RETURNS CY=1 IF 
Z=1 IF BC=DE. 


jINPUT FROM ODT 
;GET CHAR TO A REO. 

;RESTORE B,C 

ROUTINE 10 ADJUST VALUES OF BIN, FORWARD PNT. AND 

LINE LENGTH OF SOURCE LINE. PASSED ADD OF TEMP VARIABLE 

CONTAINING ADD OF SOURCE LINE. 


365 


PTVAL: 

PUSH 

PSW 

325 



PUSH 

D 

345 



PUSH 

H 

0 76 

002 


MV I 

A, 002 

1 36 



MOV 

E.M 

054 



1 NR 

L 

1 26 



MOV 

D, M 

054 



I NR 

L 

325 



PUSH 

D 

343 


N1 : 

XTHL 


1 36 



MOV 

E.M 

043 



I NX 

H 

1 26 



MOV 

D.M 

043 



1 NX 

H 

343 



XTHL 


1 63 



MOV 

M.E 

054 



I NR 

L 

162 



MOV 

M, D 

054 



I NR 

L 

075 



DCR 

A 

302 

H6 016 


JNZ 

N1 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 59 


69 





007 ■ 3-1 

343 



XTHL 


00 / 1 35 

1 26 



MOV 

D.M 

00/■36 

341 



POP 

H 

00/ 3 7 

1 62 



MOV 

M, D 

go/: io 

341 



POP 

H 

007’ -4 1 

321 



POP 

D 

007:43 

361 



POP 

PSW 

CO 7 13 

31 1 



RET 






: ROUTINE TO CHK 

FLAGS ON INPUT AND i 





; PASSED FLAS VALUE IN REG S. 

007:41 

265 



MCKK: PUSH 

PSW 

007;45 

530 

003 


MCHK1: IN 

3 

Cu/l47 

240 



ANA 

B 

0 37 i :.o 

31 2 

1 4 5 

01 5 

JZ 

MCHK1 

007l03 

361 



POP 

PSW 

007154 

31 1 



RET 






; MULTIPLICATION 

ROUTINE (ADD. VALUE: 

007155 

1 36 



MULT: MOV 

E, M 

007■55 

053 



OCX 

H 

007157 

1 26 



MOV 

D.M 

0071 GO 

060 

021 


MV 1 

M, 1 1 H 

007|52 

006 

000 


MV I 

B,0 

007 154 

1 1 0 



MOV 

C. B 

007105 

1 73 



TOP: MOV 

A.E 

00 7 156 

037 



RAR 


007l67 

1 37 



MOV 

E.A 

007170 

1 72 



MOV 

A, 0 

007171 

037 



RAR 


007172 

065 



DCR 

M 

007173 

1 27 



MOV 

D,A 

007174 

310 



RZ 


007175 

322 

212 

016 

JNC 

SHIFT 

007200 

053 



OCX 

H 

007201 

053 



OCX 

H 

007202 

1 70 



MOV 

A, S 

007203 

206 



ADD 

M 

007204 

1 07 



MOV 

B, A 

007205 

043 



I NX 

H 

007206 

171 



MOV 

A, C 

007207 

216 



ADC 

M 

007210 

1 1 7 



MOV 

C. A 

007211 

043 



I NX 

H 

007212 

1 71 



SHIFT: MOV 

A, C 

007213 

037 



RAR 


007214 

1 17 



MOV 

C. A 

007215 

170 



MOV 

A.B 

007216 

037 



RAR 


007217 

107 



MOV 

B, A 

007220 

303 

165 

016 

JMP 

TOP 





:LINKAGES TO FLOATING POINT ROUTINES 

007707 




ORG 

7707Q 

007707 

303 

255 

01 1 

JMP 

NORM 

0077 i 2 

303 

325 

0 I 1 

JMP 

FLOAT 

007715 

203 

2 1 5 

0 1 2 

JMP 

WZER 

007720 

303 

1 34 

010 

JMP 

LADD 

007723 

303 

1 37 

01 1 

JMP 

LMUL 

007/26 

303 

000 

010 

JMP 

LDI V 

CO7731 

303 

1 40 

010 

JMP 

LSUB 

007734 

303 

316 

01 1 

JMP 

DFXL 

0 0 77 3 7 

303 

127 

01 1 

JMP 

LMCM 

007742 

303 

37 7 

014 

JMP 

COPY 

007745 

303 

232 

013 

JMP 

CVRT 

OO7750 

303 

036 

0 13 

JMP 

INPUT 

007753 

303 

1 55 

015 

JMP 

MULT 

007756 

303 

1 04 

01-3 

JMP 

PTVAL 

007761 

303 

067 

015 

JMP 

DCOMP 

007764 

303 

1 44 

01 G 

JMP 

MCHK 

007767 

303 

0 75 

015 

JMP 

CHAR2 

007772 

303 

206 

031 

JMP 

I NL 

0077/5 

303 

31 1 

027 

JMP 

OUTL 


END 


Page 60 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


70 



BASIC INTERPRETER SYMBOL TABLE 


A 

000007 


ADDO 

015154 

AGA 

015030 


ALPHA 

011042 

AS YES 

014343 


ASI3C 

015157 

£ I NOP 

013121 


BMP i R 

014721 

BND3 

012646 


BOTNS 

030252 

C 

000001 


Cl 

011031 

CKAP.2 

007/67 


CHARS 

0124 10 

C’-K'-C 

017660 


CHKMD 

014635 

CL SUB 

016742 


CCNT 

012614 

COP Oil 

013671 


CPNT 

0301 33 

eve i 

011113 


CV82 

011150 

DFXL 

007734 


DIM 

013455 

DDL 

015002 


E 

000003 

eh try 

013164 


EOK 

015020 * 

ERl 5 

017622 


ERl 7 

017627 

ER20 

01 7S46 


ER21 

017653 

ER8 

015070 


ER 3 

014173 

ERROR 

012576 


ERRR1 

012722 

FI 

012116 


FALSE 

016450 

fcomp 

016471 


FDAT 

014605 

FIX 

014433 


FLOFD 

015503 

FML'LT 

Oi5235 


FNDS3 

0!6644 

FORI 0 

012101 


FORI 1 

012100 

FORM 2 

C12i07 


F0RM3 

012106 

FORMS 

012117 


FORM 7 

012104 

FOUND 

011240 


FPERR 

015161 

FS'iM 

013015 


FWAM 

017720 

G^CD 

014510 


GC3UB 

016743 

GSENT 

01 3421 


GTRA 

013427 

HOME 

014065 


HSR I N 

012325 

1 CP2 

013005 


I CP4 

013000 

1 DON.: 

0’4631 


1 END 

015642 

1 LOO' 1 

013232 


INCPT 

013007 

I NPOK 

015637 


1 NPUT 

015542 

1 SPP 

010561 


I SR 1 2 

010572 

1 SRT2 

010304 


ISRT3 

010321" 

1 SRT6 

010441 


1SRT7 

010504 

JT3L 

013344 


KASE 

030140 

KDAT3 

011636 


KDAT4 

011700 

KL2 

030124 


KL4 

020126 

KL 1 NE 

030122 


KONT 

014114 

L2 

011213 


LADD 

007720 

LENGT 

011161 


LET 

015763 

LMCM 

007737 


LMUL 

007723 

LSUB 

007731 


1. UKON 

013047 

MIA 

010023 


M2 

010026 

M4A 

010107 


MCHK 

007764 

MEMFU 

012424 


MEMST 

030000 

MODE 

030205 


M0DE1 

014655 

MUL ri 

030142 


MULT2 

030144 

NEXT 

017357 


NEXT 1 

017423 

ML 4 

0301 1 7 

« 

NL5 

030121 

MU ME 

0301 1 3 


NOE NT 

01 31ca 

NORM 

007707 


NOSYM 

013104 

HSTCK 

017330 

* 

NUMB 

011024 

MXTSP 

050131 


OBUFF 

030000 

0DAT2 

012152 


0DAT3 

012170 

ODAT6 

'i222' 


OOAT7 

O' 2240 

UDATA 

012132 


OKK 

014130 

on D 

015473 

* 

OI TR 

013714 * 

PAD 

011255 


PARLP 

016063 

PI MIA 

012336 


PI M3 

012400 

PK2 

012565 


PL2 

030133 * 

PLi ME 
PR! 1 

030131 


PLOOP 

015304 

016171 


primp r 

Oi5562 

PT1 

010155 


PTAPE 

01014 5 

OCHER 

013336 


QO TDK 

0 1 5323 

QTCI-IK. 

01 1 01G 


QU 1 T T 

011010 

PEL AT 

016353 


RETRN 

016773 

S2 

011407 

* 

S3 

011410 

S5 

011477 


SAW 

016110 

SCALR 

014307 


SCOLN 

O' 5435 

SF3G 

014252 


SINEQ 

016521 

SORCE 

Oi3250 


SP 

000006 

STL iN 

0301 1 1 


STNER 

015741 

STP 

017154 


STPNT 

010613 

STS PA 

0301 13 


SU3B 

015227 

TAPE 

010652 


THEN 

016457 

T 1 N4 

012010 


T I M4A 

012013 

TOP NS 

030226 


TRUE 

016454 

VALUE 

013724 


VAR 

014203 

VLOC 

0502! 6 


VNAME 

03021 4 

WF OR 

015075 


WFPER 

015215 

WR1 T 1 

Cl 1622 


ZROL 

007715 


ADFLD 

015430 

AFOND 

014445 

AR 

013024 

ARCK 

014317 

B 

000000 

BAC 

011040 

BND1 

012534 * 

BND2 

012643 

BOUND 

012515 

BUPT 

014246 * 

CALLP 

016560 

CHOVL 

017673 

CHEKE 

014707 

CHK1 

011243 

CHPAR 

003712 

CKDIM 

01 7701 

CO MV 

007745 

C0PD1 

013677 

CREG 

030204 

CVB 

011052 

D 

000002 

DCOMP 

007761 

D I V 

015243 

DLOOP 

013464 

ECAV 

014747 

ENOD 

013400 

ERl 0 

016216 

ERl 4 

016271 

ERl 8 

017634 

ERl 9 

017641 

ER6 

013472 

ER7 

015776 

ERLN 

012737 

ERRET 

015736 

EVAL 

014735 

EX ERE 

015354 

FBAC 

01317) 

FB1LD 

017201 

FEXST 

017243 

FI NPT 

007750 

FLIMT 

030220 

FLOAT 

007712 * 

FONE 

017353 

FOR 

016775 

FOR 1 2 

012077 

FORM 1 

012110 

F0RM4 

012105 

F0RM5 

012111 

FORM 8 

012103 

F0RM9 

012102 

FREG1 

030!74 

FREG2 

030200 

GET 

013752 

GKEY 

013324 

GOTO 

013416 

GREG 

030167 

H 

000004 

HL1 NP 

030206 

1 AGA 

016243 

IBUF 

030001 

1 CP7 

012766 

I CP8 

012773 

1 FRT 

016223 

1 1 1 

016276 

1 NP 

014611 * 

I NPER 

015546 

1 NSER 

010217 

1 SRI 0 

010553 

1 SRI A 

010242 

ISRT1 

010275 

ISRT4 

010327 

ISRT5 

010417 

1 SRT8 

010510 

1SRT9 

010522 

KDAT1 

011517 

KDAT2 

011544 

KDATA 

011513 

KFPNT 

030126 

KL6 

030130 * 

KLEN 

030130 

L 

000005 

LI 

013274 

LD1 V 

007726 

LEN 

030141 

L1 S1 

010752 

LIST 

010721 

LOK 

016003 

LPNT 

030122 

M 

000006 

Ml 

010000 

M3 

010037 

M4 

010102 

MDBC 

015246 

MEMEN 

037777 

MESCR 

030210 

M I NSE 

014506 

MORE 

014225 

MULT 

007753 

NDOU 

013555 

NEST 

030224 

NEPER 

015224 

ML 2 

030115 

NLE 1 

011165 

NLF2 

011204 

NOLI N 

010621 

NOMAT 

013073 

NOT 3 

016436 

NSRCH 

011210 

NUSUC- 

0 i 6623 

NX TON 

017612 

ODA1 0 

012313 

ODA T 1 

012144 

0DAT4 

012201 

0DAT5 

01 221 3 

0DAT3 

012267 

0DAT9 

012302 

OKLET 

013477 

OKN 

013443 

PI 

01 1 270 

P2 

0 1 1 302 

PEND 

0 1 5534 

PI N1 

012333 

PI NST 

01 621 1 

PK1 

012030 

PL4 

030135 

PL6 

030137 

PREXP 

016713 

PRI 

015253 

PRT1 T 

015403 

PSW 

000006 

PTE" 1 N 

016142 

PTVAL 

007756 

0STR1 

012060 

QSTRG 

012053 

QUOTE 

015312 

RDKON 

014144 

RI NST 

014107 

RUN 

013173 

S4 

011443 

S4A 

011442 

SBSAV 

030135 

SCI 

014214 

SCR 

0301 46 

SEND 

000006 

SLOAD 

0 14300 

SONWD 

015517 

SPACE 

014627 

STAC 

030226 

STOKK 

015705 

STOKV 

015666 

STR! N 

015650 

srsi z 

000024 

SUBS 

01 7722 

SVMSR 

01 1 367 

T 1 N1 

011714 

TIN2 

01 1 766 

TINS 

0 1 200 1 

TIN5A 

012004 

TTY IN 

011711 

VI 

01 4046 

VARAD 

030212 

VEND 

030252 

V/1 

011337 

W2 

01 1 360 

WHAT 

01 C636 

WR! T 

011320 


January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 61 


71 



FLOATING POINT PACKAGE SYMBOL TABLE 


A 

000007 

ABCH 

004464 

A DU 2 

004337 

A DO 2 

004326 

B 

000000 

BBCH 

004475 

BN1 N 

004442 

C 

000001 

CFCHE 

005114 

CHAR2 

007075 

COPT 

00C361 

COPY 

006377 

CSTR 

005561 

CTWO 

006340 

DADD 

005006 

0CLR 

005033 

DECPT 

006600 

DECR 

005324 * 

D1 VI T 

006303 

DL-ST 

004751 

0TST2 

004022 

E 

000003 

EP 1 

007014 

EQ02 

004224 

F ! N I T 

00632/ 

PINUP 

006267 

FXL 1 

004062 

FXL2 

004663 

GETA 

006236 

GETEX 

006276 

GOON 

004073 

GO TV 

005745 

I NCR2 

005306 

I NCR3 

005303 

I NEXP 

006630 

I NL 

014606 

1 NPUT 

006436. 

INTI 

006564 

KPGO 

004566 

L 

000005 

L002 

004427 

L003 

004513 

LI 31 

004524 

LAOD 

004134 

LDCP 

005471 

LD! V 

004000 

LNCP 

005500 

LMUL 

004537 

LSUB 

004140 

LXFR 

005444 

MANT 

004357 

MAXCH 

000077 

MDGN 

006000 

MDSKP 

00601 6 

MSFH 

0C557I 

MULT 

007 1 55 

nohk 

004204 

NNZRO 

005657 

NO TO 

004252 

NZRO 

00571 4 

OKI 

0060 1 1 

OUTL 

013711 

PLSV 

006231 

POPD 

006037 

READ 

000333 

REP3 

004047 

SAVLH 

007026 

SCALE 

006500 

SHI 0 

004214 

SH! FT 

007212 

STORC 

005523 

SUEZ 

004271 

TLOOP 

006171 

TLP2 

006172 

TRYP 

006737 

TRYTN 

006554 

TSTEX 

006463 

TSTN 

006744 

UFLW1 

005 1 50 

UFLWC 

005542 

WFLT 

003557 

WIND 

005177 

V/UND 

005143 

WZER 

005215 

ZMCHK 

004732 

ZROI T 

007055 


ACPR 

005357 

ADD1 

006334 

AORS 

005341 

API.S 

00S522 

BCHK 

C04742 

BC TL 

005615 

CCHK 

005504 

CCMP 

005133 

corn 

004426 

COM2 

004450 

CR1 N 

004 1 1 5 

C3IGN 

005551 

CVRT 

005632 

0 

000002 

DCMP 

005364 

DCOMP 

00706/ 

DFXl. 

00471 6 

D1 GO 

006072 

DRST 

004770 

DSUB 

005046 

EN T1 

005420 

ENT2 

005412 

EOUL 

004224 * 

ERR 

006434 

FLOAT 

004725 

FLTSG 

007022 

GCHAR 

005101 

GCHR 

006235 

GETN 

007047 

GNUH 

006/1 1 

H 

000004 

1 NCR 

005266 

I NDF 1 

005204 * 

I NDFC 

005250 

I NP 

007772 

I NPOP 

006042 

I NT5 

006534 

1 NTR 

00457/ 

LOOO 

004503 

L00I 

004510 

LI ZZ 

004 51 5 

LI 29 

004521 

LADS 

004142 

LASD 

004402 

LLTB 

004 1 77 

LMCM 

004527 

LOOP 

006342 

LSF T 

006166 

M 

OOCOOG 

MADD 

004544 

MCHK 

007 1 44 

MCHK 1 

007145 

MINCH 

000300 

MORD 

006243 

MULTT 

0061 1 6 

N 1 

0071 16 

NORM 

004655 

NORM 1 

004656 * 

OFLW1 

005166 

OFLWC 

005533 

OUTR 

007775 

OVER 

005427 

PSW 

000005 

PTVAL 

007104 

REP5 

005446 

REP6 

004671 

SCCFG 

005322 

SCHAR 

004713 

-SIGN 

006220 

SP 

000005 

TEN 

006430 

TENS 

006424 

TOP 

007165 

TRY 1 

005753 

TST1 

005770 

TSTO 

005730 

TSTR 

005347 

TWOD 

005311 

USE I T 

006672 

WCHAR 

005237 

WMANT 

005230 

WOVR 

005161 

WZERC 

005257 

ZCHK 

004732 


BOOK REVIEW 

Computer Accouting Methods 

by G. A. Cook, B. J. Wade and C. C. Upton 

Petrocelli Books, 384 Fifth Ave., New York, NY 10018 

Reviewed by Rich Roth, 1052 Clark, Mountain View, CA 94040 

With an ominous title like this, you'd expect a detailed account¬ 
ant's handbook to computing. However, what you get is an 184-page 
paperback comprising the computer part of an 'Introduction to 
Accounting' course. Being oriented toward a beginning accountant 
who doesn't know computers, it spends the first 3 chapters on com¬ 
puters and BASIC. And then in rapid succession comes the juicy 
parts% general ledger, financial reports, accounts receivable, payroll 
accounting, depreciation accounting. Each chapter has flowcharts 
with explanation, variable definitions, operating instructions and 
BASIC SOURCE code for the topic. The BASIC used in standard 
Dartmough BASIC, with character string arrays and 'PRINT with 
IMAGE' added. There is a fair sized database, and the class exercises 
were set-up for a time-sharing service (probably the ex-IBM Service 
Bureau Co rp 

Bureau Corp., since two of the authors work for SBC). This allows 
the programs to use disk files, and to do all activity in memory. 

For anyone familiar with BASIC, this book is an excellent 
starting point to do accounting programming, with the possible 
addition of a review of a regular introductory accounting text. 

The only major missing topic is calculation errors. Most mini/ 
microcomputer BASIC's use 32-bit floating point numbers for 
about 614 decimal digits precision. For business purposes that 
limits you to $29,999.99. [O'course, you could always modify 
your BASIC to do BCD arithmetic with unlimited precision and 
no round-off ... as is more appropriate to accounting applications 
than is floating-point, anyway. — Editor] 


NEW BOOK FOR COMPUTER HOBBYISTS 

Howard W. Sams & Co. (4300 W. 62nd St., Indianapolis, IN 
46206) has just published a book for the computer hobbyist: How 
to Buy & Use Minicomputers & Microcomputers, by William Barden, 
Jr. I am sure that all hobbyists will agree that such a book is long 
overdue. Newcomers to computing as a hobby have had to rely on 
other hobbyists, periodicals, and manufacturers' literature for their 
orientation . This book presents a great deal of useful information 
all in one place, and the hobbyist will surely get his or her $9.95 
worth from it. 

Like most introductory books on computing, this one is written 
backwards. That is, the basic approach is "bottom-up" instead of 
"top-down," and the reader must wade through the usual discussions 
of binary arithmetic, etc. before getting to the good stuff. C’est la 
vie. Chapter 1 is a short introduction. Chapter 2 is devoted to 
binary arithmetic. Chapter 3 deals with basic ALU operations. 
Chapter 4 discussed programming languages. Chapter 5 covers peri¬ 
pherals. Chapter 6 explains benchmarking. Chapter 7 is about pro¬ 
gramming methods. Chapter 8 compares the various microcompu¬ 
ters, and the final chapter compares minicomputers. Ten appendices 
present useful reference data. 

On the whole it's a good book, but one might prefer less space 
devoted to instruction sets and more devoted to the relative merits 
of Altair versus IMSAI, etc. Coverage of peripheral boards such as 
video displays, cassette controllers, etc. is rather skimpy, to say the 
least, and information on hardware construction and troubleshooting 
is conspicuous by its absence. Nevertheless, this is the world's 
greatest book on computing as a hobby. It also seems to be the 
only one, at present. 

Nov. 1, 1976 Jim Day 


Pa 9 e 62 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


January, 1977 


72 


PRAMMER FROM XYBEK 

A PROM/RAM/PROM programmer for the Altair 8800, 
IMSAI 8080 and other SI 00 bus microcomputers is now 
available. This 2K memory board contains 256 bytes of 
RAM and space of 1792 bytes of 1702A EPROM. One of 
the 1702A sockets doubles as a 1702A programmer. The 
PRAMMER is not an I/O device, but occupies any 2K 
slice of system memory. This kit is complete with its own 
80v power supply, features onboard timing independent of 
the CPU clocks and contains its own microprogram for read 
and write control. No oneshots are used. The 256 bytes of 
RAM may be used for a stack, for buffers, save areas, etc,, 
eliminating the need for use of main memory already dedi¬ 
cated to other application programs. Complete stand-alone 
software for programming and copying 1702A EPROMs is 
supplied with the PRAMMER kit in a single preprogrammed 
1702A. Also included are the complete listings for PRAM- 
SYS, an eleven-function development system designed to 
reside in the 1792 bytes of EPROM in the fully populated 
board and to interface with a TTY compatible terminal. 

Also available is a 3-foot extention kit for bringing any of 
the 1702A sockets to a Textools zero insertion force external 
to your system. The introductory price for the PRAMMER 
kit is $189 and the extension kit is $15. Address inquiries 
to XYBEK, P.O. Box 1631, Cupertino, CA 95104, (408) 
243-0834. 


8K S-100 STATIC RAM BOARD KIT FOR S239 

Compatible with Altair and Imsai Mothers, this pre-tested 
8K static memory board has buffered address and data out 
lines, memory protect, no wait states, access time of 450 ns, 
low power consumption of only 1.3 amps, output disable 
feature, and a DIP switch, located on the upper edge of the 
board which allows address change without removing the 
board from the computer. The printed circuit board is of 
aerospace quality and solder masked on both sides. The 8K 
baby provides the most desired features in a high quality, low 
power product with a low price. 

Contact VECTOR GRAPHIC, INC., P.O. Box 4784, 
Thousand Oaks, California 91359, (213) 889-9809. 



16 KILOBYTE DYNAMIC RAM KIT FOR $650 

WWW Enterprises (Box 548, Harbor City, CA 90710, 
213/835-9417) sent us an announcement of their 16Kx8 
dynamic RAM units-$550 (kit) or $650 (assembled & 
tested). It sez they have a 270ns access, 470 ns R/W, are 
fully socketed, and are Sphere-compatible. 

NEW BIPOLAR TTL PROM FROM SIGNETICS 
FEATURES 40 NANOSECOND ACCESS, 
REDUCED CHIP SIZE 

A field programmable 4096-bit bipolar TTL Read Only 
Memory with a typical access time of 40 nanoseconds has 
been introduced by Signetics. 

Organized as 1024 4-bit words, the device is one of the 
fastest IK X 4 PROMs on the market and also has a sig¬ 
nificantly smaller chip size of 18,000 square mils, about 
30% smaller than current industry standards. 

The 1K X 4 PROM is being produced in a space-saving 
18-pin ceramic DIP package and is available with either Open 
Collector outputs (82S136) or Tri-State outputs (82S137) 
and in both commercial and military temperature ranges. 

The 82S136/137 devices are an extension of the Sig¬ 
netics family of PROMs, utilizing the same basic fusible-link 
programming techniques. They also represent an extension 
in the firm’s line of PROMs with 4-bit word organization, 
which facilitates system expansion. 

The improved speed of these new PROMs makes them 
ideal for any application requiring a large ROM, according 
to Ralph Kaplan, Marketing Manager for Memories. The 
commercial version (N82S136/137) has a specified maximum 
address access time of 60 nanoseconds, with 40 ns typical. 
Access time of the military version (S82S136/137) is rated 
at 80 ns with 60 ns typical. 

The devices, which are fully TTL compatible, include on- 
chip decoding and two chip enable inputs for ease of mem¬ 
ory expansion. 

Other key specifications include: typical power dissipa¬ 
tion of 0.15 milliwatts/bit and input loading of —150 
microamperes maximum (military) and —100 microam¬ 
peres maximum (commercial). 

The N82S135/137 devices are priced at $15.50 in 
quantities of 100 or more. This represents a 35% savings 
in cost/bit compared with 4K bits of 256 X 4 PROMs now 
on the market, Kaplan says. 

In addition, Kaplan noted that further production 
economies can result from the reduced package count and 
board costs made possible by the smaller size of the device. 

For further information, contact Signetics, 811 E. Arques 
i Ave., Sunnyvale, CA 94086, (408) 739-7700. _ 

TOSHIBA MARKETS NONVOLATILE RAM AND 
FIRST JAPANESE MICRO 

Toshiba is now offering a lK-bit static RAM that is 
nonvolatile, that is, when the power goes away, the data 
doesn’t (at least, not for a year or more). Its price is 
comparable to that of core memory. It is TTL-compat- 
ible, has a maximum write-time of 1 mics, a maximum 
access-time of 1.5 mics. and draws 600 mw or less. 

Toshiba has also introduced Japan’s first home-grown 
microprocessor, the T3444. It comes in a 42-pin pack 
that includes ALU, 16x8 RAM, 256x24 ROM, and I/O 
ports. It has only 14 instructions, but runs much faster 
than many of the U.S. micros (a 1.25 mics. cycle time). 



Hill 

Ei'H y. 



January, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 63 


73 












dr dobb’s journal of 


COMPUTER 


c 


alisthenics 


60 


rthodontia 


Running Light Without Overbyte 

Number 12 February 1977 Volume 2, Issue 2 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 

STUFF 

Free Software? Or — Support Your Local Software Vendor, Tom Pittman 3 


Symple Cyphering, David Gruhn 9 

Dr. Dobb's Apologizes 10 

Game Solutions & Notes on Segmented Memory, Ed Comer 1 1 

CONSUMER NOTES 

Raskin Misled ... By DDJ7, Jef Raskin 4 

Praise For Advanced Microcomputer Products & James Electronics, Stuart R. Fallgatter 45 

Comments on James, Advanced Micro-Electronics & SWTPC, W. B. Goldsmith 46 

SOFTWARE 

String Handling for Pittman’s 6800 Tiny BASIC, Henry L. Lee 5 

Extensions to Wang’s Palo Alto Tiny BASIC, Russ Hayden 6 

Pittman 6800 Tiny BASIC Mods for SWTPC PR—40 Printer, Mickey E. Ferguson 7 

STRINGOUT Mods for Espinosa's 6502 Routine, H. T. Gordon 8 

Modifications to Microsoft 8K BASIC 3.1 for Cromemco Z—80 20 

An 8080 Disassembler, Ward Christensen 30 

With Exquisite Documentation & Complete, Assembled Listing 
Appendices to CASUAL, Bob-Van Valzah 44 


HARDWARE 

High Speed Interaction Without Interrupt or DMA, Eugene Fisher 12 

Simple Floppy Disc Interface Detailed as an Example (from Electronic Design) 

$10 for 64-Characters & Scrolling on a TVT—II, R. Lynn Smith 
64 Char/Line TVT—II Mods, Requests & Suggestions, Gary Alevy 


25 

28 





© David Dameron 1979 































FREE SOFTWARE? OR SUPPORT YOUR LOCAL 
SOFTWARE VENDOR 

Dear Jim: January 14, 1977 

Enclosed is the manuscript I mentioned to you. Per your re¬ 
quest, it is not in the form of a letter, but I suppose you could 
publish it as “An Open Letter to Manufacturers” which was my 
original intent. 

As you can see, it is not an impartial feature article, 
but rather an opinionated analysis of the software problem. My 
big beef is the last point — the diversity of the system config¬ 
urations in personal computers. If you think it is not clear 
(you are the editor) I will gladly accept suggestions for improve¬ 
ment. 

Tom Pittman 

Box 23189 

San Jose, CA 95153 


I will be honest. What you are about to read is a gripe, directed pri¬ 
marily at hardware manufacturers. I am in the software business (ITTY 
BITTY COMPUTERS), so you know my own bias. 

Among personal computers there is a software vacuum. Tiny Basic 
was an attempt to start filling that vacuum. About a year ago PCC 
started publishing articles entitled "Build Your Own Basic", giving de¬ 
tails and general architecture for Tiny Basic, a children's language con¬ 
ceived by Bob Albrecht. The idea was to get hundreds of hobbyists 
across the country working and sharing and producing tons of free 
software. Instead of hundreds, we actually saw only about a half a 
dozen successful working programs. Why? 

My Tiny is one (or two, depending on your point of view) of that 
half dozen. I wrote it specifically in response to this software vacuum. 

It was an experiment, to see if there was any substance to the claim 
that if software were cheap enough it would not be ripped off like 
the Altair BASIC. The claim was largely valid; I have reason to believe 
the ripoff rate is less that 10%. But after nine months of business, I 
am still not selling anything bigger or better than Tiny Basic. Why? 

A quick scan of a couple of hobby magazines shows typically 40 
ads offering computer hardware and no software, 10 ads offering both 
hardware and software (in half of those the software went with the 
hardware) and only five ads offering software and no hardware (mostly 
books). Why? 

Let me tell you why. Three factors work together to cause these 
phenomena. 

One is that the personal computer market has not matured enough 
to recognize the importance of software, and there is not the demand 
for it. Obviously the readers of DDJ differ from the rest in this 
respect (DDJ is primarily a software journal), so I will not belabor 
this point. But even here the emphasis is often on bigger and better 
systems software instead of considering the system as a tool to 
achieve other ends. 

Second, and more important, is the fact that good software is 
expensive. It is incredibly complicated, laborious to develop, and 
impossible to perfect. It is a known fact that the average programmer 
output is one line of debugged and documented code per hour, so an 
8K 8080 program written in assembly language represents two man- 
years of labor, if done right. Obviously my performance has to exceed 
that average or I could not stay in business, but the order of magnitude 
is correct. Somebody has to pay for that cost. The hobbyist software 
exchange so widely acclaimed in the press (including DDJ !) simply has 
not materialized because the hobbyist is either unwilling or unable to 
expend the effort and discipline himself to the extent required to 
produce a program usable beyond his own computer. By comparison, 
hardware design is a piece of cake. I know — I've done quite a bit of 
that too. Software is not, and cannot be, free. 

The third reason is the object of my gripe. If we want low-cost 
(to the user) software in abundance, we must find another way to 
pay for it. 

One time-honored way is for the manufacturer to pay for it and bury 
the cost in his hardware. He offers the software "free" and hopes (or 
requires) that the customer will buy enough of his slightly higher-priced 
hardware to recover his investment. As I mentioned earlier, there were 
some five or six manufacturers doing this. A more subtle example is 
that of Processor Technology's "free" Software Number One. It was 
an assembler that ate vast amounts of memory, and guess who sells 
memory. 

Another approach is to produce the software on venture capital 
and hope to sell enough of the packages to recover the investment. 

For what we would consider a reasonable price, a very large volume 
is necessary. More on this later. 


The third alternative is no software. Forty or more purveyors 
of hardware consider this the way to go. Maybe they hope that 
"free software exchange" will happen. I will analyze some of this 
reasoning a little later. 

Now I will admit that the picture is not all that sharply defined 
in black and white. For example, MITS charges a stiff price for their 
software AND requires you to buy their hardware. I call them "the 
IBM of the hobby computer field." Many of the available program 
products did not cost the developers as much as they should have, 
and when you try to use the programs you see why. But I said this was 
primarily a gripe against hardware manufacturers, so let me analyze 
exactly what is wrong with each of these three software distribution 
methods. 

The best by far from the user's point of view is where the manufacturer 
provides the software with the hardware, either "free" or an an extra cost 
option. The hazards are all from the manufacturer's point of view, 
probably explains why there are so few doing this. A reasonable cost 
for 8K BASIC is $25,000. If the manufacturer expects to sell 5,000 
computers, he must add $5 to the selling price of each one (that gets 
marked up to $8 out of the customer's pocket) to recoup his invest¬ 
ment. No profits, just break even. All other things being equal, his com¬ 
puter now sells for $8 more than that of his competitor, who offers 
no software. In a market competing for beer money, price is of 
prime importance. So the customer accepts his free BASIC and buys 
the competitor's computer to run it in. Now actually, the BASIC 
probably only cost $15,000 because it was written by a moon lighter 
or $5,000 because it was written by a college student as a term project. 

The other $10,000 or $20,000 will be spent in maintaining the program 
because the moonlighter got a divorce and went to Venezuela, or the 
student vanishejd, leaving no documentation. The economics of the 
situation prevent very much software from being offered by the manu¬ 
facturer unless the processor is so unique that the higher price will not 
be noticed and the software will not be lifted to other machines. One 
of these that comes to mind is the 16-bit machine offered by Dick 
Wilcox, who has amassed a tremendous amount of software for it by 
lifting from previous projects. 

Other than these sparkling exceptions, the user should expect to 
get software from other sources as well, which brings us to the third 
catagory — the computers with no software (the competitors that the 
benevolent manufacturers in the first category have to worry about). 

Many of the buyers of these unpadded (no soft) machines have no use 
for software. Their only interest is in constructing bigger and (in some 
mysterious way) better elephants to sit in the attic. I won't worry 
about them because they represent a relatively dwindling minority of 
the computer buyers. Of the rest we have a similarly dwindling 
(though still considerably larger) proportion of hackers who like to 
build software elephants to metaphorically sit in the attic. They also 
do not need much supplied software. 

The rest of us consider software as tools to be used in the making or 
doing of other things, be it playing games or writing other programs. 

Most of us would rather not write a program from scratch if it already 
exists. This is the market for that second category. 

What about the independent software vendor? Let's look at the 
economics. Suppose he writes that 8K BASIC. That means investing 
$25,000 on speculation. Or for someone like myself without a lot of 
overhead, the cash investment is smaller, but we pass up an actual 
$25,000 job to work on the BASIC instead. In either case the value 
of the investment is the same. If I can sell it as a package to a manu¬ 
facturer, that is great: take the money and run. But they are not 
buying, or at least not for $25,000 up front. They want to offer you 
"Royalties." On what? Not on the increased value your software gives 
their computer, but rather on the $5 that they will charge the customer 
for the package. I get letters with some regularity offering me 15% 
royalties. Fifteen percent of $5 is $.75/unit; since it is priced separately, 
at least half of the customers will opt not to buy it, so they have to sell 
80,000 computers before I show a profit — if I live so long. Perhaps that 
is a little exaggerated, but I did have a manufacturer of a $1,000 
computer tell me that $5 each was too much to pay me for a customized 
version of my software. 

Along this line, I should point out that the software distribution sys¬ 
tems that KILOBAUD and others are trying to set up are unlikely to 
attract much Grade A software for very much the same economic reasons. 
But there are other problems. 

Well, then, the software vendor must go directly to the public. A 
recent census has it that there are 15,000 computers out there. If I sell 
this BASIC at $10 per copy, I might net $5 each, so I need to sell 5,000 
copies. Considering that of those 15,000 computers, probably less than 
half have 8K of memory, and of those with the requisite hardware, less 
than half will buy the program (actual experience seems to run closer to 
10%), there is already no way I can sell enough copies to recoup my 
investment. OK, so we call it a 5-year product life, and estimate 100,000 
computers by 1980. 

Let us assume further that many of those 100,000 computers still come 
with no software (though the trend is away from that), and because this 
is actually worth its $25,000 (as opposed to $5,000 or $15,000), it is 
recognized as one of the better products on the marketplace and captures 

Page 3 


February, 1977 Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 


77 



40% of the market from the other six or eight BASIC interpreters out 
there, some of which are "free". There still remains the fact that there 
are at least three different CPU chips going into those computers. 

Finally, the Gotcha: Every one of those manufacturers with less 
than cradle-to-grave software support (i.e. most of them) designs the 
hardware configuration just a little bit differently, so that none of the 
programs that work on one computer will work properly and conveniently 
on the next, EVEN THOUGH THEY USE THE SAME CPU CHIP! I can 
understand a manufacturer designing in a new bus structure to lock the 
customers into buying high-profit peripherals from the same source as 
the low-profit CPU. But considering the costs of software development 
versus the potential profit, I should think the manufacturers would try to 
make software portability as easy as possible, so that their computer 
could be used with someone else's software. An obvious exception here 
is MITS: their BASIC is generally accepted as one of the better packages, 
and it is also quite expensive. A little software incompatability (and they 
did it, too!) might conceivably reduce the chances of BASIC walking to 
other computers. 

So now the software vendor has to support different versions of 
his package for every different manufacturer. I have seven different 
versions of Tiny Basic, and there are still at least four more 6800 and 
6502 systems that I do not directly support — all different. I have no 
idea how many different varieties of 8080 and Z-80 systems there are, 
but I'll bet there are at least six. 

What can be done about this mess? First, you manufacturers can ad¬ 
here to a few simple conventions: 

1) Put your monitor in high memory, and leave low memory in RAM. 

2) Avoid using memory Page 00 for any system software or firmware, 
but if you must use some, restrict it to the first and/or last 20 

or so bytes. 

3) If the monitor needs additional RAM for local storage, or buffers, 
put it at the far end with the monitor ROM. 

4) Start the stack pointer at the highest available memory address, so 
it has the most freedom to grow without interfering with low 
memory. 

5) Provide monitor subroutines to: 

a) Read a character from the console keyboard. 

b) Display a character on the console output device. 

c) Terminate the current line of display and start a new one. 

6) Always use the A register (accumulator) to pass one-byte data to 
and from monitor routines. Avoid altering the other registers. 

7) Use a Jump vector at one end of your monitor to define the 
entry points to monitor subroutines, so that subsequent revisions 
will not affect previously developed software packages. 

8) Provide at least one standard program loading peripheral such 
as a paper tape reader or Kansas City audio cassette, even if you 
do not include a way to generate output media in the same format. 
There is more need to load package software than there is to 
produce it. Your Super High Speed Patented Data Recording 
Technique is fine for local data and program storage. 

9) Support the CPU chip manufacturer's conventional hexadecimal 
program format for that program loader hardware. Again, save 
the tricky double-checksum reverse binary format for local pro¬ 
gram and data storage. The software vendor cannot afford to 
support 23 different media standards, but there is nothing wrong 
with requiring each buyer of a package program to read it in 
slowly, then recopy it to his fast local storage peripheral. 

Those of you who are not manufacturers, you can help too. Complain 
to nonconforming manufacturers. Refuse to buy their products. (Remem 
ber, you have to interface package software to the non-conforming 
systems, and eventually the software vendors will only support good-guy 
systems.) 

If we in the software business can ever manage to concentrate on new 
products that have a reasonable chance at high volume, you might begin 
to see more and better low-cost software. And when that happens, more 
people will be willing to buy personal computers, which will make the 
software market more attractive, which in turn will result in more and 
better software. It's up to you now. 


DESPERATE KIM-I SEARCH 

Dear Sirs: January 17, 1977 

As a KIM-1 owner, I am desparately searching for a BASIC 
Interpreter to be run on my KIM-1 System. I would be most 
appreciative if you would print (I will gladly pay you to do so) 
the following notice in the next KIM-1/6502 Newsletter: 
HELP! Desparately looking for a BASIC Interpreter 
to run on my KIM-1 System. Will gladly pay! At your 
mercy! 

Edward L. Pavia 
127 Sugar Maple Drive 
Rochester, NY 14615 


RASKIN MISLED ... BY DDJ1 

Dear Dr. Dobbs, January 29, 1977 

In my position as consumer advocate for the hobbyist I 
would be remiss to not point out such things as misleading 
articles and advertisements. Thus I must object to the heading 
of a recent article in my own beloved Dr. Dobbs, due I am 
sure to misguided enthusiasm rather than intentional deception. 
The heading to Bob Van Valzah’s interesting CASUAL 
language touted “It’s a BASIC ... It’s an APL ... It’s CASUAL”. 
This letter in no way reflects on the CASUAL language or the 
article about it, just on the claim that it is in any way like APL. 

My heart beat faster when I saw the mention of an APL for 
the microcomputer, and I felt sorely disappointed when I 
read the description of the language. Certainly if I had pur¬ 
chased that issue (Vol. 1, No. 10) on the basis of the table of 
contents I would have felt cheated. APL is a very elegant and 
powerful language, and its notation and rigor far exceed what 
the hobbyist who knows only BASIC and/or assembler. 

The only APL-like feature to be found in CASUAL is its 
use of single-character keywords rather than BASIC’s many 
character keywords. There are a number of non-APL languages 
that share this attribute. The hallmarks of APL, its array 
handling basis, its strict right-to-left evaluation, its unique and 
powerful operators, are none of them in CASUAL. 

CASUAL is, indeed, very much like BASIC, with some 
neat improvements to be sure. But that is not the burden of 
my message which is: Straighten Up and Fly Right, Dr. Dobbs. 
The secret avenger of consumer annoyances watches even you! 
Jef Raskin 

Tsk, tsk — was it your enthusiasm, or ours, that misguided 
you? The “misleading” title implied, equally, that CASUAL 
was BASIC-like. —Editor 


HOW ’BOUT VISIBLE MUSIC VIA YOUR TV? 

Dear Jim, Oct. 11,1976 

I agree with Tim Bonham’s comment on p. 37 of the 
October issue of DDJ. Even though a language processor may 
accept free-form input, it is highly desirable to maintain visual 
alignment of the beginning of each field. This would not pre¬ 
clude the use of variable-width characters but would require 
the display-generating program to keep track of the current 
“dot count,” so that proper field alignment could be preserved. 
Numerals would all be assigned a dot width of 5, so that columns 
of numbers would line up evenly. 

Speaking of video displays, since many hobbyists are using 
an ordinary or modified TV set as a display device, there is no 
reason why the same TV could not be used as an audio output 
device at the same time. For example, when a bell character is 
sent to a TTY, a bell rings. When a bell character is sent to a TV 
display, nothing happens. Some commercial video terminals have 
a beeper to simulate a bell, and a similar beeper could be added 
to a TV display. But why not use the audio section of the TV 
set instead? An audio oscillator could be added to a video dis¬ 
play board or, better yet, an all-purpose D/A audio output port 
could be connected to the TV and used not only for bell simula¬ 
tion but for speech output, music synthesis, etc. The TV could 
be used simultaneously for audio and video display in such appli¬ 
cations as “visible music,” animated cartoons with synchronous 
sound, educational programs, and all kinds of games. Some TV 
sets are equipped with an auxiliary phono input jack, but others 
would have to be modified to facilitate access to the AF ampli¬ 
fier. Safety precautions would have to be taken on “hot-chassis” 
sets (e.g., an opto-isolator or isolation transformer). 

Sincerely, 

Jim Day 17042 Gunther St. 

Granada Hills, CA 91344 


Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 February, 1977 


78 


STRING HANDLING FOR PITTMAN’S 6800 
TINY BASIC 


modify contents of location 301 
change it from 0A to 0C 


Dear Jim, 


Enclosed are modifications to Pittman’s Tiny BASIC ver¬ 
sion 1.2S. These changes will enable the user to add string 
handling capabilities to Pittman’s Tiny BASIC. The additional 


options are handled through the USR verb. Although the 
changes are for a Sphere user with a V3N keyboard, they are 
easily adaptable to other 6800 systems. The Sphere version 
is relocated 100 (base 16) higher in address. 

Sincerely, 

Henry L. Kee 42-24 Colden St. 

SUBROUTINES 

Flushing, NY 11355 

ORIGIN ACO 

setup ID 

DE 33 

store 33 - 36 

FF OAEO 

areas used by TINY BASIC 

DE 35 

FF 0AE2 

for INPUT verb 

86 24 

first character of ID = $ 

97 33 

B6 OAFE 

97 34 

second character of ID 

39 

exit 

ORIGIN AD4 

restore TINY BASIC work areas 

FF OAEO 

DF 33 

FE 0AE2 

DF 35 

39 


ORIGIN AFO 

set pointers 


;rite $ 

ORIGIN AAO 

BD 0AF0 set pointers 

86 20 set for WRITE 

7E 0A78 goto entry point for READ $ 

PRINT $ 

ORIGIN A46 

BP 0AF0 
DE 18 
A6 00 
08 

DF 18 
BD 0209 
81 0D 
27 06 
96 FF 
91 19 
26 03 
96 19 
39 

7E 0A49 


INITIALIZE 

ORIGIN A64 

BD 0AF0 
96 FF 
B7 0AFF 
96 19 
B7 0AFE 
39 


set pointers 
store ACIA In AFF 

store ID in AFE 

exit 


set pointers 
load IX 

pickup character 
increment IX 
store IX pointer 
put character 
test for CR 
BEQ 

test for end of buffer 


exit 


DF 18 location 18 contains first character cf string address 

97 FF location FF contains last character of string address 

86 OR 
97 FE 
97 18 
39 

INPUT $ 

ORIGIN A00 

BD OAFO set pointers 

86 3F emit a ? symbol 

BD 0209 put 

BD 0206 get 

DE 18 load IX 

A7 00 store character in string 

08 increment IX 

DF 38 store IX pointer 

81 00 test for CR 

27 DA 

81 fB test for BS 

27 CC 

96 FF test for end of string buffer 

91 19 
26 03 

96 33 set value for next 

39 exit 

7E 0A08 goto next get 

DE 18 routine to backspace and blank out 

09 use BACK SPACE to backspace 

09 

CF 18 
DE 1C 
09 

DF 1C 
86 20 

BD FCBC change to RD 0209 if CRT is bypassed 
DE 1C 
OS 

DF 1C 

BD FCBC change to BD 0209 If CRT Is bypassed 
DE 1C 
09 

DF 1C 
7E 0A08 


READ $ 

ORIGIN A73 

BD OAFO set pointers 

86 91 set for READ 

B7 0A98 store READ or WRITE - entry point for WRITE $ 

DE 18 set start of string block 

DF 3C 

DE FE set end of string block 

DF 3E 

86 OAFF set ACIA 

97 39 
86 FO 
97 38 

BD OACO set ID 

86 FF set FLAG 

97 3A 
BD FBOO 
BD FB91 

BD 0AD4 restore TINY BASIC work area 

39 exit 


PEEK $ 

ORIGIN AE6 

RD OAFO set pointers 

DE 18 load IX 

A6 00 load A 

39 exit 


POKE $ 

ORIGIN AAA 

BD OAFO set pointers 

DE 18 load IX 

96 FF load A 

A7 00 store in string location 

39 exit 


February, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 5 


79 



EXTENSIONS TO WANG’S PALO ALTO 
TINY BASIC 

Dear Jim, Oct- 1> 1976 

I have added some extensions to Li-Chen Wang’s Palo 
Alto Tiny BASIC which may be of interest; they include 
machine language subroutine linkage, string I/O, and memory 
location examination and modification. These additional 
statements and functions take approximately 150 bytes; 
however, if you have installed P.A.T.B. as written (DDJ, 

May 1976, pp. 12-25), your program space is not reduced, 
as the routines fit into the expansion space designed into 
the Tiny BASIC program. 

Loud cheers here for Mr. Wang’s forethought in provid¬ 
ing for improvement of his program. This, along with the 
excellent structure of the execution skeleton, made imple¬ 
menting these commands a lot simpler than it might have 
been. I think anyone writing a “Tiny” language should 
provide room for other users to play with it; sometimes 
this is more fun than writing programs in the language. 

Credit is also due Erick Mueller for the idea behind the 
string handling, and MITS BASIC for the form of PEEK and 
POKE. 

There are four added statements and two functions: in 
the following descriptions, X may be any number, variable 
or expression permitted by P.A.T.B. 

CALL X: calls a machine language subroutine 

located at X. I suggest passing argu¬ 
ments, if necessary, by placing them 
in specified variables. 

1$ X*: inputs a string from the keyboard to 

successive memory locations starting 
at X. The length of the string (in¬ 
cluding delimiter) is returned in varia¬ 
ble Z. 

0$ X: outputs a string (no CR) input by the 

above statement. 


POKE X*,Y: places the value of expression Y (modulo 
256) in location X. 

Functions are: 

PEEK (X): returns the ASCII value of a single 
character. Note that 
PRINT “A” will output A 
PRINT (“A”) will output 65 

♦note: both the Tiny BASIC program and the user’s 
program space are protected; 1$ and POKE will give a 
“SORRY” message if you attempt to deposit into 
these locations. 

In my listing, I have marked as Mr. Wang did, with @@@@, 
two locations which may be changed if you are running P.A. 
T.B. in other than 8K; I have 4K and run a modified version. 

Another change to P.A.T.B. I have found to be useful is 
to suppress the carriage returns it does before and after the 
the “OK” message. To do this, change the following locations: 

00 AD 00 

00BA 00 00 00 

074E CD 0E 00 C7 (provides CR after CNTRL/C) 

This cuts down greatly on wasted paper, especially when doing 
a number of direct commands. 

Yours, 

Russ Hayden Box 139 MIT Br. P.O. 

Cambridge, MA 02139 

♦♦♦•ADDITIONS TO WANG'S PALO ALTO TINY BASIC**** 10/01/76 Rusa Hayden 

*Mods to statement table 
0181 43414C4C "CAI1" 

0185 8752 

0187 4F24 "0$" 

0189 875B 

018B 4924 "II" 

01® e764 

018F 504F4B45 "POKE" 

0193 8797 

0195 8401 

*Moda to function table 
01B1 5045454B "PEEK" 

01B5 8790 

01B7 22 • " * 

01BR 87AF 
01BA 84EC 


A sample program using the added features 


Program output ia underlined. 

LIST 

1 A*3000 

2 PRINT "STRING ONE? ", ;I$ A 
3 B e A+Z 

4 HUNT "STRING TWO? ",;I$ B 

5 FOR C«A TO B+Z 

6 IF PEEK(C)="N" POKE C,"M" 

7 NEXT C 

8 PRINT "MODIFIED AND SWAPPED STRINGS" 

9 0$ B;PRINT " ",;0$ AjPRINT 
0K>RUN 

STRING ONE? NUMBER ONE 
STRING TOO? I'M STING TWO 
MODIFIED AND SWAPPED STRINGS 
I'M ST I MG TWO NUMBER OME 
0K>RUN 

STRING ONE? AAANAAA 
STRING TV0? BBBNBBB 
MODIFIED AND SWAPPED STRINGS 
BBBMBBB AAAMAAA 
0K> 


Input 1st string to locations beginning at 3000 

B = A + length of string input to A 
Input 2nd string to next available space 

Check over entire space (Z is now length of string at B) 

Note spacing and CR after strings 


Page 6 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


80 



•Code 

for new 

statements end 

functions 

Get address of routine (** r 3) 

0755' 

DF 

CALL 

EX HI 

0753 

D5 


PUSH D 

Save text pointer 

0754 

015907 


LX3 B HERE 

Pu3h the return address 

0757 

C5 


RJSH B 


0758 

E9 


PCHL 

Jump to routine 

0759 

D1 

HERE 

POP D 

Return here; restore pointer 

075A 

K7 


FINISH 

Done (o t t) 

075B 

DF 

0$ 

EXPR 

Get address of string (dsr 3) 

075C 

D5 


PUSH D 

Save text pointer 

075D 

EB 


XCHG 

DE is now addr. of string 

075E 

AF 


XRA A 


075F 

CD3C06 


CALL PRSTNG 

Print until a zero 

0762 

D1 


POP D 

Restore pointer 

0763 

F7 


FINISH 

Done f A ST 6) 

0764 

DF 

If 

EXPR 

Get addr. to 3tore string (gjr 3) 

0765 

D5 


PUSH D 

Save pointer 

0766 

F.P 


XCHG 


0767 

2A’308 


LHLD TXTUNF 

Get low limit to DE 

076A 

FJ 


XCHG 

OB [HL-bt] (vr 4) 

076P 

E7 


COMP 

076C 

DAD005 


JC AS0HRY 

If HL less than limit, no input 

Input to buffer (no prompt) 

076F 

CDD705 


CALL GETLN&l 

0772 

44 


MOV B,H 


0773 

4D 


MOV C,L 

BC is addr. to move string to 

0774 

EB 


XCHG 

ilL is last ear. in plus i~.~ 

0775 

SB 


DCX K 

Now points at last chr.(CR) 

0776 

11371F 


LXI D BUFFER 

DE Is first chr.(Note: 8K system) 

0779 

D5 


PUSH D 

Dave to compute lenghh 

077A 

CD3D06 


CALL MVUP 

Move (DE) to (BC) until DE equ. HL 

077D 

AF 


XRA A 


077E 

OS 


STAX B 

Store zero instead of CR to end str. 

077F 

D1 


POP D 

Equ.first chr. 

0780 

23 


I NX H 

Equ. last chr. plus one 

07R1 

CD6005 


GALL SUBDE 

HL equ. HL-DE (length of string) 

0784 

EB 


XCHG 

Put in DE 

0785 

2134 IF 


LXI H Z 

Store length in variable Z ( Note: 

0788 

73 


MOV M,E 

8K system) 

0789 

23 


INX H 


078A 

72 


MOV M,D 


07RB 

D1 


POP D 

Restore text pointer 

078C 

CD9105 


CALL FIN 

Go on if was stored statement; 

078F 

C7 


START 

otherwise input zapped direct (asto) 





command, restart system 

0790 

CDF904 

KEK 

CALL PARN 

Argument is in parentheses 

0793 

6E 


MOV L ,M 

HL equ. peek addr.; get the 

0794 

2600 


MVI H 0 

byte and return it in HL 

0796 

C9 


RET 


0797 

DF 

POKE 

EXPR 

Get poke address 

0798 

D5 


RJSH D 

Save pointer 

0799 

EB 


XCHG 

079A 

2A1308 


LHLD TXTONF 

Get low limit to DE 

079D 

EB 


XCH» 

079E 

E7 


COMP 

If poke addr. less than limit. 

079F 

DAD005 


JC AS0RRY 

no poke 

07A2 

D1 


POP D 

Restore pointer 

07A3 

E5 


RJSH H 

Save Doke addr. 

07A4 

CF 


TSTC ",HC1 

Is next text a comma? x/«o+, jlf.y 

07A5 

2C 



♦o PKl (*ir 0 

07A6 

05 



07A7 

DF 


EXPR 

Yes, get expression for poke 

07A8 

7D 


MOV A,L 

Value (mod. 256) to acc. 

07A9 

El 


POP H 

Get back poke addr. 

07AA 

77 


MOV M,A 

Poke it 

07AB 

F7 


FINISH 

Done 

07AC 

C3A405 

PK1 

JMP vWHAT 

No comma in text; error 

07AF 

1A 

* 

LDAX D 

Get text chr. after quote 

07B0 

13 


INX D 

07B1 

6F 


MOV L,A 

Ascii value to TIL 

07B2 

2600 


MVI H 0 


079*4 CF 


TST’C • " • 

VTi 18 chr. followed by •> quote? 

07P5 

22 



07B6 

Cl 




071? 7 

C9 


RET 

Yes, return 

07R8 

C3A405 

ASCI 

JMP 0WHAT 

No; error 


MUCH-REQUESTED EXTENSIONS TO PALO ALTO 
BASIC 


Dear Jim: February 7, 1977 

Many readers of DDJ have asked me about extending Palo Alto Tiny 
Basic to include strings. Well, it has been done, and plus a lot more. 
Russell Hayden of Cambridge, Mass, has extend PATB to call machine 
subroutines, string I/O, and memory PEEK and POKE. (You gave me 
a copy of his letter last October, remember?) In a recent letter (to me 
this time) he also extended strings to assignment statement ex. LET 
A$ = "HELLO" and TAB(X) and CHR(X) to PRING statement. I am 
sending you a copy of this extension and a copy of the copy of his 
early letter. I think many of DDJ's readers would like to see them. 

Russell's extensions are very compact and efficient. He utilized 
a lot of the service routines in PATB and managed to put all the exten¬ 
sions but TAB(X) and CHR(X) into the 2K space as the original 
PATB. I could not have done it better. Cheers for tiny power. 

Sincerely yours, 

Li-Chen Wang 

150 Tennyson Avenue 

Palo Alto, CA 94301 


PITTMAN 6800 TINY BASIC MODS FOR SWTPC 
PR-40 PRINTER 

Dear Dr. Dobb, Oct. 7, 1976 

My system is all SWTPC: 

1. M6800 computer with 16K RAM 

2. AC-30 cassette interface 

3. PR-40 printer 

4. CT-1024 terminal 

It has been modified slightly. The computer’s clock drives 
the terminal so the terminal can be operated at any of the 
baud rates available from the computer by flipping a single 
switch on the computer! Full details if you want them. 

[Sure.] Am presently modifying AC-30 to allow tapes to 
be made at speeds up to 1200 baud — more details when 
completed and debugged [Do tell us the intimate details!]. 

Also included is a listing of a routine I have written 
that allows Tom Pittman’s M6800 Tiny BASIC to drive a 
SWTPC PR-40 printer. My routine is loaded into Mikbug’s 
RAM and one change is made to Tom’s Tiny: 

Address Inst 

0109 7E E1D1 Jump to OntEEE Tom's Tiny 

0109 7E A04C Jump to printer driver Mod. Tiny 

The B and Index Registers are used but saved and restored. 
All communication from the computer to the control termi- 
minal is printed on the printer also. When it is not desired 
to print simply turn the PR-40 off; turn it on only when you 
are ready to print. Data in A051 and A052 should be changed 
changed to the appropriate address for the I/O slot you are 
using. A064-A074 is SWTPC’s Outchr subroutine that is sup¬ 
plied with the PR-40. 

Happy computing! 

Mickey E. Ferguson P.O. Box 708 

Trenton, GA 30752 

fl04h 00 
A04B 00 
R04C FF A04A 
A04F 37 
A050 CE 800C 
A053 Cb FF 
A055 E7 00 
A057 Cb 3F 
A059 E7 01 
A05B 80 07 
A050 33 
A05E FE A04A 
A0bl 7E E1D1 
A064 H7 00 
A066 Cb 37 
A0b8 E7 01 
A0bH Cb 3F 
R0bC E7 01 
R06E bO 01 
R070 2R FC 
A072 Eb 00 
R074 39 


ABOVE IS PRINTER ROUTINE 
FOR USE WITH SWTPC Mb800 
AND TON PITTMAN'S 6800 TINV BRSIC 


February, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 7 


81 



STRINGOUT MODS 

Dear Dr. Warren, February 2, 1977 

In DDJ Vol. 1, No. 10 (p. 50), Marcel Meier presented a revi¬ 
sion of the Espinosa 6502 program STRINGOUT, cutting its 
length from 64 to 44 bytes and making it relocatable in RAM. 
The following revision cuts it to 40 bytes, allows location in 
ROM (or RAM), is compatible with 6502 systems other than 
the OSI-400 (e.g., KIK-1), and allows selection of a variety of 
subroutines to work on the character string. 

ORG $0200 
YKEEP EQU SOOE8 
AKEEP EQUSOOE9 


One possible use of the unrestricted STRINGOUT would 
be to relocate blocks of instructions (up to 256 bytes) in 
RAM. In fact, this is how I tested the program, since I do 
not have a teletype. Since the Y index (as well as the 
character) is available to ANYSUB, STA instructions 
using the Absolute, Y addressing mode can be used. 

Sincerely, 

H. T. Gordon 

University of California, Berkeley 


STRINGOUT MODS - ADDENDA 


LO EQU SOOEA 
HI EQU S00EB 


0200 84 E8 

BEGIN STY YKEEP 

0202 85 E9 

STA AKEEP 

0204 68 

PLA 

0205 85 EA 

STA LO 

0207 68 

PLA 

0208 85 EB 

STA HI 

020A AO OO 

LDY #00 

020C C8 

ALOOP INY 

020DB1 EA 

LDA (LO, Y 

020F FO 06 

BEQ EXIT 

0211 20 00 01 

JSR ANYSUB 

0214 18 

CLC 

0215 90 F5 

BCC ALOOPE 

0217 98 

EXIT TYA 

0218 38 

SEC 

0219 65 EA 

ADC LO 

021B 85 EA 

STA LO 

021D 90 02 

BCC NOCAR 

021F E6 EB 

INCHI 

0221 A5 E9 

NOCAR LDA AKEEP 

0223 A4 E8 

JMP(LO) 


(save Y index) 

(save accumulator) 
(stock pull return LO) 
(store zero-page LO) 
(stock pull return HI) 
(store zero-page HI) 
(clear Y index) 
(increment Y) 

(get character) 

(if null, exit) 

(selector subroutine) 
(clear carry) 


Dear Mr. Warren: February 4, 1977 

(This is an addendum to my letter of February 2.) 

While playing with the double-null-terminator version of 
STRINGOUT, it dawned on me that the restriction that its 
transfer subroutine pre-exist at 0100 is unnecessary, since 
it can create it from the first 4 bytes of the string. The 
following alteration replaces the LDY instruction at 020A 
in the original version by a block of 12 bytes. It 
causes the first 4 bytes of the string to be copied into 
0100-0103. These can be JSR XX XX RTS to create a subrou¬ 
tine, but if the next 2 bytes are 00 00, then STROUT (the 
routine is now so different that a new name seems justified!) 
can be used to put any 4-byte sequence into 0100-0103 
using 9 program bytes. 


(always loops back) 

(start Y offset add) 
(offset is Y + 1) 

(add to return LO) 

(LO = L) + offset) 

(carry clear, no page cross) 
(increment page number) 
(restore accumulator) 
(return to program) 


020A A0 04 LDY #04 (set to store 4 bytes) 

020C B1 EA SLOOP LDA (LO), Y (gets 1 of first 4 bytes) 
020E 99 FF 00 STA STBASE, Y (stores in low stack) 
0211 88 DEY (decrement Y index) 

0212 DO F8 BNE SLOOP (loop until zero) 

0214 AO 04 LDY #04 (reset Y index) 

0216 ALOOPINY (same as double-null 

version) 

The full program is now up to 58 bytes, but much more 


The selector subroutine ANYSUB is located in RAM, at the 
bottom of the stack where it is relatively secure. 


versatile. 

Sincerely, 
H. T. Gordon 


0100 20 XX XX ANYSUB JSR XXXXXX 
0103 60 RTS 

It allows subroutines in ROM (or RAM) to call any of several 
ROM (or RAM) subroutines, by prior setting of the address 
XX XX. Although STRINGOUT was intended for teletype 
output of a character string, ANYSUB allows it to feed char¬ 
acters to other devices. One possibility is a sequence of digital 
commands to a control system. For this purpose, the above 
version is restrictive since it excludes 00. This restriction 
can be removed by making exit conditional on a sequence of 
two 00 bytes, by modifying (with 8 more bytes) the 
ALOOP section as follows: 

ALOOP INY 

LDA (LO), Y 
BNE OUTPUT 
INY 

LDA (LO), Y 
BEQ EXIT 
DAY 

LDA (LO), Y 
OUTPUT JSR ANYSUB 
CLC 

BCC ALOOP 
EXIT TYA 


(test next character) 

(exit if also = 00) 

(if not, output the 
single-null character) 


(same as earlier version) 


P. S. Enclosed is a check for a 1-year subscription (in no way 
conditional on publishing my stuff — it has to stand on 
its own merits!). Your journal is really the best on pro¬ 
gramming 


SECRET CODES, ANYONE? 

NOTICE: 

CRYPTOLOGIA, a journal devoted to all aspects of 
cryptology, will be published four times a year. There is 
a need for a forum for the exchange of ideas related to 
cryptology in the public sector. This journal will meet 
that need with research papers, survey articles, personal 
accounts, reviews, educational notes, and problems. Some 
of the areas which will be discussed are mathematical, 
computational, literary, historical, political, military, 
mechanical and archeological aspects of cryptology. 
Further information may be obtained from 
CRYPTOLOGIA , Albion College, Albion. Michigan 
49224. The Editors: Cipher A. Deavours, Department 
of Mathematics, Kean College; David Kahn, Department 
of Journalism, New York University; and Brian J. Winkel, 
Department of Mathematics, Albion College. 


Page 8 


Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


82 



SYMPLE CYPHERING 


by David Gruhn 


8500 32nd Ave. NW. No. 1 

Seattle. WA 98117 October 28, 1976 

Jon Stednian wrote an interesting article on the Playfaire 
cypher in the October 1976 issue of DDJ, thank you, I enjoyed 
it. The Playfaire cypher would seem to have several good 
points: it does not seem trivial to break, it is relatively easy 
to use. and the only equipment required (beyond pencil and 
paper) is a small (5 x 5) table that is easily reproducible from 
a given key (so a person need not actually carry the table 
between uses). As part of his introduction, Mr. Stedman 
suggested that someone program the cypher. If the Play— 
faire, specifically, is desired, then the Playfaire should be 
programmed. If, on the other hand, a cypher (not 
necessarily Playfaire) is desired, there are easier cyphers to 
use with a computer. 

TWO SIMPLE TECHNIQUES FOR CODING AND 
DECODING ON A COMPUTER 


To encode a text in a computer, you need to take the bit 
conf igurations that represent each character, and substitute in some 
other bit configurations, using some predetermined set of rules 
that will allow you to, later, reverse the process; to decode the 
encoded characters. Say, for example, you represent the letter 
'A' in your machine with the bit configuration X'41'; you could 
substitute some other bit configuration, say X'6E for each 
occurance of X'41’. Some other similar substitution would have 
to be made for 'B', 'C', etc. One relatively simple method 
for making this kind of substitution for all possible bit configura¬ 
tions is to exclusive-or the bit configuration with some 8-bit key 
(assuming an 8-bit configuration); the resulting bit configuration 
is the encoded data. For simplicity, let us call these 8-bit con¬ 
figurations bytes like everyone else. Since the exclusive-or has 
the most delightful property that 
if A + K = C then C + K = A 

we can retrieve our original byte by exclusive-or’ing the encoded 
byte with the same 8-bit key. This gives us a simple rule for sub¬ 
stituting an encoded byte for a non-encoded byte; a rule that, in 
addition, is its own inverse. Note that this assumes that a byte 
is the easiest unit with which to work, regardless of the number 
of bits in a character. Since the text in the machine can be 
thought of as one, long bit string, there is no reason to choose 
the working unit to be on character boundries as long as you 
can reassemble working unit lengths of the encoded bit string 
when you wish to decode. 

The obvious objection to the above method of encoding is 
that, if you always substitute the same encoded byte for a 
particular non-encoded byte, you will have a simple substitu¬ 
tion cypher that is relatively easy to break. As long as the 
same key is used, there will be a one-to-one relationship between 
the non-encoded byte and the encoded byte; i.e.,a given non- 
encoded byte will always generate the same encoded byte. One 
possible solution, then is to have some predetermined (but not 
obvious) method for altering the key. We want the key to 
appear to change randomly while actually changing according to 
some predetermined rule that will allow us to reproduce the 
sequence of keys for decoding; we want a pseudo random 
number generator (PRNG). 

Now to encrypt a text, start the PRNG with some seed; this 
seed becomes the key for this text. For each non-encoded byte 
of text, get a number from the PRNG and select 8 bits from 
that number according to some rule; these 8-bits are the key for 
this non-encoded byte. Exclusive-or this 8-bit key with the 
byte of text to generate the encoded byte. For the next non- 
encoded byte, get the next number from the PRNG and use 
the same rule as before to select an 8-bit key from that number, 
then exclusive-or to generate the next encoded byte. Continue 
this process to convert the entire text. To decrypt the encoded 
text, start the PRNG with the same seed that was used to encrypt 
the text (the key for the text), and go through the same process 
for decrypting as was used for encrypting. The difference this 
time will be that we will be reading the encoded text and be 


generating the decoded text. We can use the same routine for 
encrypting and decrypting because the exclusive-or is its 
own inverse. 



Figure la — Flowchart to Encode/Decode 
Notes EOT » End-of-Text Character 



Enter: CC = Char to encode/decode 
Exit: EC = Encoded/Decoded char 


Figure lb — Encode/ilecode with Exclusive-Qr 


This technique has the advantages of being relatively easy to 
program and, with some consideration, the series of keys can be 
quite long before repeating. The latter is important since finding 
repetitions of the key sequence is an important part of crypto¬ 
graphic analysis. One possible disadvantage, however, is that the 
encoded byte can take on any value from 0—255, most of which 
are unprintable. This is no problem if the encoded text is to be 
kept on a machine sensible medium, but if it is to be printed. 


February 1977 Dr - Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 9 


83 







it will probably have to be printed in hex, which means two 
characters of the encoded text for every one character of the 
clear text. This doubling could make the printed, encoded text 
rather voluminous. 

If the doubling of the printed, encoded text is too much of a 
problem, an alternative encoding scheme is to replace subroutine 
CNVRT with subroutines TCNVRT and TCNVRTD to encode 
and decode respectively. 


TCNVRT uses a table of legal, clear text characters. To 
encode a character, its position in the table is found (for 
example 'A' might be in position 0, if you have no imagination). 
An integer, pseudo random number greater than zero is generated 
(a key) and added, modulo the table length, to the clear text 
character's position number. The character (printable) in the 
position generated is the encoded character. 

Example: 



Enter: CC = Char to be encoded 
Exit: EC = Encoded char 


I = Position no. of CC 
in Char Table 


T = Char Table length 

EC = Char in position J 
in Char Table 


Figure 2a — TCNVRT, Encode with Character Table 


^ icm 

fRTD J 

Enter: EC = Char to he decoded 

Exit: CC = Decoded char 

Generate a 

key > 1 that 

Is an Integer 




I - Pos#(EC) 

I = Position no. of EC 

in Char Table 




J - 

(l ’ key) modT 

T = Char Table length 


CC <- Char(j) 

CC = Char in position J 

in Char Table 

^Returi 

> 

n EC 

J 

) 


Figure 2b — TCNVRTD, Decode with Character Table 


Table: A B C D E 
Pos.#: 0 12 3 4 
Table length = 5 

Pseudo random numbers (in order generated): 39, 2, 16 

Clear Text: ACE 

Coded Text: EEA 

Pos.#(A) = 0 

Key = 39 

(0 + 39) mod 5 = 4 
Encoded byte = E 

Pos.#(C) = 2 
Key = 2 

(2 + 2) mod 5 = 4 
Encoded byte = E 

Pos.#(E): =4 
Key = 16 

(4+16) mod 5 = 0 
Encoded byte = A 

The decoding is performed by subtracting, modulo the table 
length, the key from the encoded character's position to generate 
the clear character's position. This technique is not as fast 
as the other since it involves a table look-up, modulo addition, and 
a table access rather than one exclusive-or, but it does guarantee 
that every character of the encoded text will be printable. It 
does, however, restrict your clear text to characters in the table. 


DR. DOBBS APOLOGIZES 


Dear Dr. Dobbs: 

Talking dirty in a cryptogram is super except when you 
and your ten year old daughter (for real) decode it. It 
lost a lot of its humor while I tried explaining it. 

(Name Withheld) Sunnyvale, California 

I wish to offer a sincere apology for this. When I scanned 
the article, it occurred to me to check the sample cypher 
for accuracy (but I didn’t). However it never occurred to 
me to check it for immature vulgarity. Such childish trash 
has no place in DDJ. I sincerely regret the embarassment 
it must have caused you. 

Jim Warren, Editor 


PERSONAL COMPUTER STORE IN SAN 
FRANCISCO FINANCIAL DISTRICT 


The BYTE SHOP is now open in the San Francisco financial 
district, at 321 Pacific Avenue between Battery and Sansome Streets. 
The BYTE SHOP features the sale of computer kits, books on 
theory, software, and the applications of computers, memories — 
both cassette, disc and semiconductor, as well as assembled 
ready-to-operate computer systems. The BYTE SHOP has a 
wide variety of operating computer systems on display pro¬ 
grammed to demonstrate games such as Life, Star Trek, NIM, 
and Lunar Lander. Business applications such as general 
ledger, payroll, accounts receivable and accounts payable, text 
editing and special purpose application software are also up and 
running. 

A computer doctor is always on hand to provide free consul¬ 
tations on your computer application. The BYTE SHOP is open 
Monday through Friday from 10:00 a.m. to 6:00 p.m. You are 
invited for free demonstrations of personal computers in opera¬ 
tion and a free copy of our new Micro-computer Recipe Book. 

For additional information contact: J. Benbow Bullock, 

BYTE SHOP, 321 Pacific Avenue, San Francisco, CA 94111. 

(415) 421-8686. 


Page 10 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


84 











NEWS FROM EE TIMES ON TV GAMES 

The Monday, February 7, 1977 issue of ELECTRONIC ENG 
INEERING TIMES has a number of interesting articles. One 
Page I is an article on low-cost video home computers such as 
the Commodore PET, with a projected price of under $500. 
National also plans to enter the games market with a $300 
machine. 

Page 2 describes I Corporation’s resistive input pad capable 
of performing functions similar to a dual-potentiometer joy¬ 
stick. I Corporation can be contacted at 906 Treat Avenue, San 
Francisco, CA 94110 (415) 285-7922. 

On Page 20 is an interesting discussion of National’s new 
MM5789 monochrome TV game chip and the new MM57100 
chip intended for color TV use. Both chips provide tennis, 
handball and hockey. 

Another article on Page 40 of the same issue outlines current 
trends in the TV games industry. 

Page 43 reports the entry of RCA into the TV games field 
with the COSMAC-based Studio II home TV programmer, which 
includes 5 games and is said to accomodate ROMs for other games 
or educational programs. The 5 standard games are bowling, 
auto racing, patterns, doodles, and a math game. 

Jim Day February 8, 1977 


GAME SOLUTIONS & NOTES ON 
SEGMENTED MEMORY 

Edward I. Comer 

Flow would you like the answers to Suding’s BRAIN TEASER 
game, and Byte ’s SHOOTING STAR GAME. Using the chart 
below, you can win every time. 

To use the chart, take the starting positions and convert them 
into a number. For example, if a star were in positions 1 and 7, 
then the number to use in the table would be 17. Take this 
number and enter the table. Enter the numbers beside the entry, 
and you will inevitably win the game. 

NOTE: You can find the rules to play in BYTE, May, 1976. 



How would you like to have SEGMENTED MEMORY for 
your Micro? 

The sketch is an idea that you niay like to develop into your 
system. This system divides memory into two sections. 

(1) KERNAL memory, which is where system programs reside, 
and (2) USER memory, where application programs reside. 
Divided in this way, if a user program crashes the system 
programs will not be harmed. 

HOW IT WORKS: When the system starts up it is in the 
KERNAL mode (F/F Port RESET). Once every second the 
555 generates an interrupt that does two things. First it 
resets the F/F out port, and it branches the 8080 to service 
a KERNAL interrupt routine. When the KERNAL programs 
are ready to release control to the USER programs, it sets the 
F/F out port. The F/F port drives the 74157 select line 
“high”. This stops the address lines from being gated straight 
through, and instead gates the output of the ADDER onto 
the address bus. The adder adds together the PFTYSICAL 
address from the 8080, and the segment offset address which 
was loaded into the 8212 upon startup. Thus if the physical 
address was 001020, the 8212 segment offset address was 
007000, then the address that reached the address bus would 
actually be 010020. It should now be obvious why user 
programs cannot reach KERNAL area, because even if the 
user program tries to address 000000, it will really reach 
000000+ the 8212 contents. Each second the interrupt 
circuit resets the F/F out port, and the 74157 gates out 


unaltered physical address to service KERNAL routines. The 
responsibility of saving the USER register contents rests in 
the KERNAL interrupt routines. 

By offsetting the low order byte, the user and KERNAL 
modes can have segmented I/O. 

If anyone implements this idea, please let me know. 

Ed Comer 4818 Ferncrest Dr. 

Greensboro, NC 27410 
(919) 294-0147 


1-1569521285 

29-954751645 

2-2153285 

34-358957285 

3-3587563465 

35-323547465 

4-4751465 

36-3231465 

5-521696359465 

37-787932153825 

6-6359465 

38-354751465 

7-7523547465 

39-359465 

8-8957285 

45-471285 

9-9541589285 

46-471826751465 

12-1417285 

47-7879465 

13-153285 

48-87563465 

14-47523547465 

49-952153285 

15-141589285 

56-639285 

16-158957285 

57-787563465 

17-751465 

58-897465 

18-156359465 

59-969521285 

19-141796359465 

67-752153285 

23-21569521285 

68-69521285 

24-41589285 

69-63587563465 

25-213465 

78-89541589285 

26-23547465 

79-957285 

27-756359465 

89-9693825 

28-213468153285 



February, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 11 


85 








High Speed Interaction 
Without Interrupt or DMA 


Simple Floppy Disc Interface 
Detailed as an Example 


(reprinted with permission from Electronic Design, 

Volume 23, Number 23) 

by Eugene Fisher, design engineer, Lawrence Livermore Labs, 
L-403, Box 808, Livermore CA 94550 

Microcomputer designs don’t require techniques 
based on minicomputer hardware to achieve high 
speeds. Though designers often employ speed¬ 
enhancing interrupt or direct-memory-access 
(DMA) techniques borrowed from the mini world, 
the same improvements can be obtained far more 
simply. All that’s needed is a microprocessor 
whose operations can be suspended readily dur¬ 
ing data transfers. Microprocessors like Intel’s 
8080 permit just this kind of solution. 

When applied to an 8080-based floppy-disc 
controller, the simple approach requires only 
about 20 ICs. By comparison, an interrupt struc¬ 
ture uses 40 to 80 ICs, and a DMA approach 
needs 80 to 100. Moreover the 8080 exercises full 
format and timing control over floppy-disc func¬ 
tions, with all of the algorithms contained in less 
than 512 words of ROM. 

The alternatives 


PERIPHERAL 

DEVICE 


© 

© 



INTERRUPT SERVICE 



1. Interrupt techniques may entail the addition of such 

external circuits as storage latches and priority encoders 
(a). Typical response time is 32 fis. However, the major 
portion of an interrupt structure resides in software (b). 
Interrupt techniques can achieve typical data rates of 
about 31k bytes per second. 


Interrupt structures often require hardware 
that is external to the microprocessor, as well as 
special programming (Fig. 1). Further, high¬ 
speed applications can easily require all of the 
microprocessor’s real-time capability. For this 
reason, other interrupt sources usually must be 
disabled during the execution of the high-speed 
routine. Also, it may be necessary to save—in ad¬ 
vance—sensitive registers to increase the speed 
of the interrupt service routine. 

After an interrupt in the application program, 
a series of vectors (either hardware or software) 
transfer program control to the interrupt-service 
routine. This routine is the actual program that 
performs the synchronized I/O transfer. After 
the servicing of the interrupt, control returns to 
the application program to prepare again for 
the next high-speed interrupt service. As many 
as 100 bytes of code may be needed to handle the 
high-speed interrupt. This doesn’t include the 
code for standard I/O that would be required 
without interrupt synchronization. 


Debugging of this interrupt service is extreme¬ 
ly difficult, since it cannot be effectively simu¬ 
lated on a separate computer. In fact, debugging 
is a very time-consuming effort, requiring the 
use of all of the system’s hardware or a trial-and- 
error method using oscilloscopes and other exter¬ 
nal hardware. This difficulty alone has discour¬ 
aged designers. The typical speed for an interrupt 
interface is approximately 31,000 bytes per sec¬ 
ond. 

Unlike the interface for a high-speed interrupt, 
the direct-memory-access interface isn’t really 
part of a microprocessor or microcomputer sys¬ 
tem. It actually is a separate hardware controller 
that communicates directly with the computer 
memory (Fig. 2). The only function a micro¬ 
processor has in these cases is to initialize the 
data channel. 

Once DMA has begun, the microprocessor must 
be able to disconnect itself from the associated 
memory, so as not to inhibit the transfer. Thus 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 










debugging focuses on the hardware, because the 
only software functions employed are those need¬ 
ed for DMA-channel controls. The typical data- 
transfer rates are limited primarily by the 
memory. For example, memories for most single¬ 
chip MOS processors operate at 415 ns to 1 /xs. So 
the data rate can be in excess of 100-k bytes per 
second. 



2. Direct-memory access, or DMA, requires a separate, 

external controller that communicates directly with 
memory. When built with standard ICs, the controller can 
use up to 100 circuits. 










MICROPROCESSOR 




L 

READY 

DATA 

- 

C 0 

— 




1_ 


OUT 




V 


© 




® 


OUT DISC-► PROCESSOR STOPS 

(TIME DEPENDS ON 
i EXTERNAL DEVICE) 

i 

• —-START PROCESSOR 




*— A ... i\ 


I 120 ns I 

P" min 


J\ 


I 120 ns I 
rMIN—1 


ready X//77/7//77X 




A simple solution 

An alternative approach—one that requires the 
/i P to halt for each transfer—takes full advan¬ 
tage of the processor. The technique can be ap¬ 
plied to any microprocessor that has Ready-line 
synchronization or otherwise allows the stopping 
of the processor for data transfers. The hard¬ 
ware to implement this synchronization appears 
in Fig. 3. The block diagram shows that a simple, 
external flip-flop can synchronize the micro¬ 
processor. 

The circuit operates as follows: An I/O in¬ 
struction—in this case an output from the micro¬ 
processor—clears the flip-flop, halting the proc¬ 
essor with the I/O data available on the 
microprocessor’s data bus. The external device 
takes the data presented by the microprocessor 
and then returns a signal. Called DONE, the sig¬ 
nal is used by the synchronizing flip-flop to raise 
the Ready line, letting the microprocessor con¬ 
tinue. The microprocessor responds to an exter¬ 
nal input within one cycle—500 ns in our case. 

Not only is this interface simple, but the micro¬ 
processor worst-case response is 1 /u.s. This re¬ 
sponse time is comparable to a DMA transfer, 
but with none of the associated hardware com¬ 
plexity. And the software is extremely simple; 
no difficult timing loops are required. 

The output instruction actually stops the proc- 


© 

3. The alternative to DMA and interrupt techniques em¬ 
ploys a microprocessor’s Ready line (a) to suspend the 
processor's operation during data transfers (b). The 
Ready line is sensed by the microprocessor during phase 
two of state T, or T w , the Wait state (c). This straight¬ 
forward approach has a response time of 1 /xs, and it 
yields data rates of 62-k bytes per second. 

essor for a time that depends on the external 
device. If the microprocessor is already running 
at 100 % utilization, there isn’t time for other 
operations anyway. Thus the time lost by halting 
the processor is of no real consequence. And now 
software for the output or input is merely a 
standard I O operation, with synchronization 
and data timing taken care of automatically. The 
data rate is 62-k bytes per second—a program- 
execution limitation. 

Employing the Ready line 

The Ready line on the 80d0 processor was de¬ 
signed primarily to interface the processor to a 
slow memory or a slow I O operation. But while 
the processor is stopped, the data bus is present 
on the processor’s data lines. On an input in¬ 
struction, the processor takes the data within 
500 ns after starting or after the assertion of 
the Ready Signal. After the Ready line is raised, 


February, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 13 


87 









4. The synchronizing circuit tor the Ready line employs 
two flip-flops, one for the output and one for the input. 

the microprocessor responds within the next clock 
cycle. Thus over-all response is about 1 /us when 
a 500-ns clock is used with the 8080. 

A typical Ready-line synchronization circuit 
appears in Fig. 4. Two synchronizing flip-flops 
are used, one for input and one for output from 
the peripheral. In both cases all synchronization 
is handled by an external flip-flop. Even the re¬ 
quirement for an external D-type flip-flop has 
been eliminated by a new clock driver recently 
announced by Intel. The synchronizing of the 
Ready line can be taken care of by the new IC. 

Programming constraints 

The program must be able, of course, to ac¬ 
cept synchronization by the external hardware. 
In the sample program (Fig. 5) the timing of 
each instruction in a critical loop has been calcu¬ 
lated. This is necessary to ensure that the next 
I/O instruction is asserted in time. The routine 
allows the maximum data-transfer rate for the 
8080 by employing the processor’s stack pointer. 

By adding the two halves of the loop, we see 


that the maximum time between instructions is 
16 /us. Also the response to an external stimulus 
is 1 jus. And the data rate for this interface is 
twice that possible in any equivalent interrupt- 
driven interface. 

Specifying the interface 

Our floppy-disc application employs the IBM 
format (Fig. 6). Note the different types of 
sector information. Each has a unique indicator 
—a Mark—for Index, Data, Deleted Data and 
Address. A Mark doesn’t contain a full set of 
clock pulses, and the missing clocks and Mark 
words, form synchronizing elements. Another 
critical item is the cycle redundancy check (CRC) 
character. This appears at the end of each data 
sector. It must be read to determine if there has 
been an error in reading or writing. 

The data rate in this format is 4 /xs per data 
bit, with the clock pulses coming between each 
data pulse (Fig. 7). The data rate of the standard 
floppy disc is 4 x 8 bits/byte, or 32 jus per 
8-bit byte. However, to eliminate any possibility of 
timing problems, the interface is designed for 
twice that rate, or 16 jus per 8-bit byte—an 
effective transfer rate of 62-k bytes per second. 
And to eliminate the need for double buffering, 
the previously collected data word is read before 
the next clock pulse occurs. This results in the 
2-/us interval at our double speed. 

Solving interface problems 

The “missing”—but implied—clock signal is 
detected by a retriggerable, monostable multi¬ 
vibrator. With the aid of a separate clock signal 
from the floppy disc (Fig. 7b), the detected sig¬ 
nal is then used to synchronize an 8-bit register 
and to generate an end-of-word signal. 

A 4-bit counter (Fig. 8) regenerates the miss¬ 
ing pulses. The microprocessor’s crystal clock 


005161 

333 011 

ROVR: 

IN DATAR 

:READ ONE WORD—5.5 

005163 

157 


MOV L - A 

SAVE -2.5 

005164 

015 


DCR C 

BUMP CNTR -2.5 

005165 

345 


PUSH H 

STORE TWO WORDS -5.5 

005166 

333 011 

DATCOL: 

IN DATAR 

:NEXT—AND CRC WORD 1 -5.5 

005170 

147 


MOV H - A 

SET UP WORD—2.5 

005171 

302 161 012 


JNZ ROVR 

AGAIN—5 

005174 

333 011 


IN DATAR 

:CRC WORD 2 

005176 

333 011 


IN DATAR 

:CRC DELAY WORD 

005200 

333 007 


IN STAT :CHECK STATUS 

005202 

027 


RAL :SET UP FLAG 

005203 

052 301 014 


LHLD TEMP 

GET THE STACK POINTER 

005206 

371 


SPHL 

RESTORE SP 

005207 

332 217 012 


JC CRER 

CRC ERROR 

005212 

311 


RET 

WE MADE IT 


5. The time of each instruction in a critical loop must serted soon enough. A portion of the read routine lists 

be calculated to ensure that I/O instructions are as- these times in microseconds. 


Page 14 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


88 








WRITE TURN ON COINCIDENT WITH LEADING EDGE OF INDEX HOLE DURING INITIALIZATION 


1 D 

ADDRESS 

MARK 

TRACK 

ADDRESS 

BINARY 

ZERO 

SECTOR 

ADDRESS 

BINARY 

ZERO 

CRC 

CRC 

0 

1 

2 

3 

4 

5 

6 


7 BYTES 
156 BITS) 


6. An IBM data format applies to our floppy-disc ex 
ample. Different sectors of information use an indicator 


DATA 

128 BYTES OF DATA 



ADDRESS 

MARK 

INITIALIZED TO HEXES 

CRC 

CRC 

0 

1-128 

129 

130 


131 BYTES 
(1048 BITS) 




known as a Mark. It relies on a series of implied—but 
not present—clock pulses for synchronization. 



\2fls 
C C D C D 


MISSING CLOCKS 


® 




C D C D C 



RAW DATA 

CCDCD D D D DCDCC 

_rm_n_ 

SEPARATE CLOCK 



7. The Data Mark has a transfer rate of 2 /us per bit (a), 
or twice that of the usual format. This eliminates pos¬ 
sible errors and the need for double buffering. The miss¬ 
ing clock pulses are generated with the aid of a sepa¬ 
rate clock signal (b) from the floppy disc. 


(2 MHz) <i> 
2 

S EPARAT E 

CLOCK 



CLOCK 

-r 8 
(9300) 

—° 

RESET 

i— 

INPUT 



A' A B C 


DATA 

CLOCK 


M I I I I I I I I I. 


J 


1 


i_r 


B 


SEPARATE CLOCK 


u 



8. A simple 4-bit counter, synchronized to each sepa¬ 
rate-clock pulse from the floppy disc, regenerates the 
missing clocks. 


provides the time base for the counter and thus, 
the floppy disc. 

The counter is synchronized with the data re¬ 
ceived from the floppy disc, thereby providing a 
clock signal that doesn’t have missing pulses. 
This counter and the crystal clock also generate 
the accurate timing pulses required for the Write 
operation to the floppy disc. 

A single IC—the 8-bit register—handles both 
the serialization and deserialization of the signal 
from the floppy disc to the microcomputer 
(Fig. 9). This register has a common I/O; the 
same eight pins are used for parallel data input 
and output. Three-state data lines are compatible 
with the 8080 microprocessor data bus. 

The Ready-line synchronizer for our applica¬ 
tion appears in Fig. 10. To detect a Mark word, 
the microproce ssor sends the input signal called 
READ MARK. This signal sets the flip-flop called 
Mark Sync, which suspends microprocessor oper¬ 
ation until a “missing” clock signal occurs. When 
missing pulses are detected, the synchronizing 
flip-flop resets, allowing the processor to read 
the Mark word collected. 

At this time the microprocessor verifies that 
the correct Mark word has been read. If it is not 
the correct wor d, the mi croprocessor loops back, 
sending out the READ MARK signal. Again, the 
processor stops until the next Mark word is re¬ 
ceived. The timing diagram shows an input Mark 
signal being sent two times. The first time it de¬ 
tects the address sector and the second time a 
data sector. 

After the Mark word has been read, the suc¬ 
ceeding data words must be read to verify the 
data format, the data transfer or the address 
se ctor. Theref ore a second input signal called 
READ DATA is sent in a manner similar to that 
of the Mark operation just described. However, 
the input-data synchronizer resets at the end of 


February, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 15 


89 







8080 DATA BUSS 


CRC-0 



9. An 8-bit shift register, synchronized by the “missing” 
clocks, provides the parallel-to-serial conversion of the 
signal from the floppy disc. The second 1C generates the 
cycle-redundancy-check character. 


READ DATA 



© 


INPUT 

MARK 


READY 

LINE 


n 


_n 

i///////////,r 


PROCESSOR RUNS 

\ 




V////////////// 


MISSING CLOCK 


n 


n 


J ADR SECTOR 


Jdata SECTOR 



10. The Ready-line synchronizer for the floppy-disc ap¬ 
plication employs only four flip-flops and a few gates (a). 
The input Mark signal is sent twice (b) to detect ad¬ 
dress and data sectors. 


each data word rather than at the end of a Mark 
word. The processor reads the data word at the 
end of each serial string- in less than 1 /as, giving 
a 100% safety factor even for a floppy disc hav¬ 
ing twice the usual storage capacity. 

The lower portion of the synchronizer controls 
Write operations for the Ready line. Three types 
of Write signals require synchronization: Write 
Mark, Write Data and Write CRC. Write Data 
simply writes the next 8-bit data word from the 
microprocessor into the shift register at the ap¬ 
propriate time. The Write Mark signal loads an 
8-bit shift register (not shown), and this gen¬ 
erates the missing clock lines for the writing of 
a Mark word. 

Also on this shift register, Data Bit 6 is pro¬ 
vided for one of the inputs, thereby allowing the 
software to create any of the three missing clock 
words required. The Write CRC command con¬ 
verts the CRC generator from a coded mode to a 
16-bit serial shift register. The latter shifts out 
the collected CRC data word. 

The control of the floppy disc functions—such 
as Head Load, Head Step In and Head Step Out 
—are handled in the usual I/O fashion, with flip- 
flops set to perform the required functions. 

Key portions of the software for the floppy- 
disc application appear in Fig. 11. The first 
routine verifies that the floppy-disc head is actu¬ 
ally on the correct track. The sequence is as fol¬ 
lows: Wait for an address Mark; read the rest 
of the address sector; save the critical words of 
interest, the track and sector addresses; verify 
that there are no errors; then drop into a routine 
that steps the head to the desired track. Note 
that no critical timing loops are required. The 
only requirement is that the program return 
within 16 /as, so it can read the next data block. 

Fig. lib shows the code used to read a data 
block from the floppy disc and to store it in 
memory at the maximum transfer rate. This 
routine uses the processor’s stack pointer to store 
16 bits or two bytes per operation (thereby 
transferring data at 16 /as per byte). Note that 
this code lists timing intervals in the comment, 
so the programmer can actually count the in¬ 
struction times that will result. 

Fig. 11c shows the code that writes a data 
file on the floppy disc. This routine is similar 
to the previous one. However, a preamble of zero 
words must be written before the actual data 
file. Also, the last CRC character must be fol- 
lowed with a zero word. ■■ 

11. Excerpts from the program, compiled by an 8080 
macroassembler, illustrate the three major routines. The 
first, a search routine, checks to see that the disc head 
is properly positioned (a). The next routine reads a block 
of data in the disc and stores it in memory (b). The third 
routine writes data into the floppy disc (c). 


Page 16 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


90 








004403 

365 



STRT: 

PUSH PSW 

SAVE A REG 

004404 

323 

012 



OUT HDDN 

LOWER HEAD 

004406 

315 

222 

Oil 


CALL LDDLY 

WAIT FOR HEAD 

004411 

176 




MOV A • M 

TRK ADR 

004412 

376 

112 



CPI 112Q 

TEST FOR TOO LARGE ADR 

004414 

322 

147 

Oil 


JNC NOADER 

:ADR ERROR—TOO LARGE 

004417 

315 

242 

Oil 


CALL SEEK 

STEP TO TRK 

004422 

315 

222 

Oil 


CALL LDDLY 

WAIT TO SETTLE 

004425 

333 

010 



IN RDMRK 

SYNC AFTER STEP 

004427 

333 

010 


TSTRD: 

IN RDMRK 

READ MARKS 

004431 

376 

376 



CPI 376Q 

WAIT FOR ADR 

004433 

302 

027 

Oil 


JNZ TSTRD 

LOOP 

004436 

333 

011 



IN DATAR 

:TRK ADR 

004440 

107 




MOV B - A 

:SAVE TRK ADR 

004441 

333 

011 



IN DATAR 


ZEROS 

004443 

333 

Oil 



IN DATAR 


SECTOR ADR 

004445 

333 

Oil 



IN DATAR 


ZEROS 

004447 

333 

011 



IN DATAR 


CRC 

004451 

333 

011 



IN DATAR 


CRC 

004453 

333 

Oil 



IN DATAR 


CRC DELAY WORD 

004455 

333 

007 



IN STAT 

:CHECK CRC 

004457 

027 




RAL :SET UP FLAG 

004460 

332 

165 

Oil 


JC ERROR 

CRC ERROR 

004463 

072 

300 

014 


LDA ADR 

GET EXISTING ADR 






:ROUTINE TO READ 

A 

DATA SECTOR 

005064 

333 

010 


READ: 

IN RDMRK 

ENTER SECTOR ADR IN B 

005066 

376 

376 



CPI 376Q 

LOOK FOR ADR MARK 

005070 

302 

064 

012 


JNZ READ 

LOOP BACK 

005073 

333 

Oil 



IN DATAR 


SKIP TRK ADR 

005075 

333 

Oil 



IN DATAR 


SKIP ZERO WORD 

005077 

333 

Oil 



IN DATAR 


READ SECTOR ADR 

005101 

270 




CMP B 

TEST SECTOR 

005102 

302 

064 

012 


JNZ READ 

WRONG SECTOR—LOOP 

005105 

333 

Oil 



IN DATAR 


ZEROS 

005107 

333 

Oil 



IN DATAR 


CRC 

005111 

333 

Oil 



IN DATAR 


CRC 

005113 

016 

013 



MVI C . 13Q 

SET UP JUNK-IN-GAP COUNTER 

005115 

333 

Oil 



IN DATAR 


CRC DONE GAP WORD #1 

005117 

333 

007 



IN STAT 

CHECK CRC 

005121 

027 




RAL 

SET UP FLAG 

005122 

332 

217 

012 


JC CRER 

CRC ERROR 

005125 

333 

Oil 


CRAPLP: 

IN DATAR 

:SKIP THE JUNK-IN-THE-GAP -13 WORDS 

005127 

015 




DCR C 

DONE? -2.5 

005130 

302 

125 

012 


JNZ CRAPLP 

NOPE LOOP BACK -5 

005133 

041 

000 

000 


LXI H •0 

CLR H AND L 

005136 

071 




DAD SP 

ADD STACK POINTER 

005137 

042 

301 

014 


SHLD TEMP 

SAVE SP 

005142 

016 

100 



MVI C • 1000 

SET DATA CNTR 

005144 

061 

000 

014 


LXI SP BUFF 

POINT TO BUFFER 

005147 

333 

010 



IN RDMRK 

WAIT FOR DATA 

005151 

376 

373 



CPI 373Q 

TEST FOR DATA MARK -3.5 

005153 

302 

213 

012 


JNZ CRERX 

NOT A CRC ERROR BUT GET OUT FOR NOW 

005156 

333 

Oil 



IN DATAR 

:FIRST WORD -5.5 

005160 

147 




MOV H ■ A 

SET UP -2.5 

005161 

333 

Oil 


ROVR: 

IN DATAR 

:READ ONE WORD—5.5 

005163 

157 




MOV L-A 

SAVE -2.5 

005164 

015 




DCR C 

BUMP CNTR -2.5 

005165 

345 




PUSH H 

STORE TWO WORDS -5.5 

005166 

333 

Oil 


DATCOL 

IN DATAR 


NEXT—AND CRC WORD 1 -5.5 

005170 

147 




MOV H ■ A 

SET UP WORD—2.5 

005171 

302 

161 

012 


JNZ ROVR 

AGAIN—5 

005174 

333 

Oil 



IN DATAR 


CRC WORD 2 

005176 

333 

Oil 



IN DATAR 


CRC DELAY WORD 

005200 

333 

007 



IN STAT 

CHECK STATUS 

005202 

027 




RAL :SET UP FLAG 

005203 

052 

301 

014 


LHLD TEMP 

GET THE STACK POINTER 

005206 

371 




SPHL 

RESTORE SP 

005207 

332 

217 

012 


JC CRER 

CRC ERROR 

005212 

311 




RET 

WE MADE IT 

005213 

052 

301 

014 

CRERX: 

LHLD TEMP 

GET THE STACK POINTER 

005216 

371 




SPHL 

RESTORE SP 

005024 

174 



OVR: 

MOV A • H 

SET UP NEXT WORD -2.5 

005025 

323 

014 



OUT DATAW 

:WAIT FOR DISC—5.5 

005027 

341 



DATWT: 

POP H 

GET TWO WORDS -5 

005030 

175 




MOV A • L 

NEXT WORD -2.5 

005031 

323 

014 



OUT DATAW 

:WAIT FOR DISC—5.5 

005033 

015 




DCR C 

BUMP CNTR—2.5 

005034 

302 

024 

012 


JNZ OVR 

OVERS—5 

005037 

174 




MOV A - H 

SET UP LAST WORD 

005040 

323 

014 



OUT DATAW 

:OUT LAST WORD 

005042 

323 

016 



OUT CRC 

SHIFT OUT CRC 

005044 

323 

016 



OUT CRC 

IBID 

005046 

257 




XRA A 

CLEAR THE A 

005047 

323 

014 



OUT DATAW 

:WRITE OFF —LAST WORD IS ZEROS 

005051 

052 

301 

014 


LHLD TEMP 

GET SP 

005054 

371 




SPHL 

RESTORE SP 

005055 

311 




RET 

FAREWELL 



-5 



© 


, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 















MODIFICATIONS TO MICROSOFT 8K BASIC 3.1 FOR 
CROMEMCO Z-80. 


ADDR 

OLD 

NEW 


ADDR 

NEW 

ADDR 

NEW 

096B 

3A 

CD 


7FEO 

CD 

7FF0 

7D 

096C 

19 

E8 


7FE1 

EC 

7FF1 

EA 

096D 

02 

7F 

* 

7FE2 

7F 

* 7FF2 

F9 

096E 

8F 

OO 


7FE3 

CO 

7FF3 

7F * 





7FE4 

3C 

7FF4 

E6 

12D1 

CO 

C3 


7FE5 

C3 

7FF5 

04 

12D2 

3C 

EO 


7FE6 

EC 

7FF6 

C3 

12D3 

C9 

7F 

* 

7FE7 

7F 

* 7FF7 

FB 





7FE8 

3A 

7FF8 

7F * 





7FE9 

19 

7FF9 

F6 





7FEA 

02 

7FFA 

04 





7FEB 

8F 

7FFB 

6F 





7FEC 

E5 

7FFC 

E5 





7FED 

F5 

7FFD 

FI 





7FEE 

El 

7FFE 

El 





7FEF 

A7 

7FFF 

C9 

* TO 

RELOCATE 1 

PATCH TO THE TOP 

1 OF YOUR MEMORY, 

CHANGE THESE 

BYTES AND 

LOAD 

PATCH THAT 

STARTS AT 

TO 

START 

AT 

THE 

TOP OF 

YOUR 

MEMORY. FOR 

EXAMPLE, 


IF YOU HAVE 12K OF MEMORY CHANGE THESE BYTES TO 2F 
AND LOAD PATCH AT 2FE0. 

NOTE: WHEN RESPONDING TO THE QUESTION 'MEMORY SIZE?', 
BE SURE TO ANSWER 32 BYTES LESS THAN YOUR 
MEMORY SIZE, TO ALLOW ROOM FOR THE PATCHES. 

FOR EXAMPLE, IF YOU HAVE 12K OF MEMORY ANSWER 
WITH 12256 INSTEAD OF 12288. 


$10 CASSETTE-ORIENTED 8080 ASSEMBLER 


November 23, 1976 

RO-CHE SYSTEMS announces a new 8080 CPU Assembler 
for use with their Multi-Cassette Controller. This new 
assembler (Assem 1.0) now makes it possible to assemble 
source code programs larger than memory. 

The Multi-Cassette Controller allows an 8080 computer 
to read or write individual records to any of four software 
selected recorders, rather than blocks of data. Normally 
with a two-pass assembler the source code from cassette 
tape record by record and builds a symbol table during the 
first pass. During the second pass the source is read again 
and the object code is created and stored in memory. Upon 
completion of the second pass the assembled program may 
be executed or dumped to cassette. 

When using the RO-CHE Assembler it is no longer nec¬ 
essary to limit the program comments (so necessary six months 
later) because comments never take up memory space as 
with a conventional assembler. 

Assem 1.0 is available from RO-CHE Systems, 7101 
Mammoth Avenue, Van Nuys, CA 91405, for only $10.00. 
Included is the Assem 1.0 and line editor on cassette tape 
with an instruction manual. 


MICROPROCESSOR CROSS ASSEMBLERS 
THAT RUN ON THE PDP8. 

RENO, NEVADA October 1, 1976 

SIERRA DIGITAL SYSTEMS has introduced a series of 
microprocessor cross-assemblers which run on Digital Equipment 
Corporation PDP8 minicomputers. According to a company 
spokesman, the group of cross-assemblers called the X8 series 
(pronounced Cross-8), fills a software gap experienced by many 
PDP8 users involved with microprocessor program development. 
The cross-assemblers run in 8K of memory under the OS/8 
operating system. 

X8 assemblers feature a Universal Assembler Format of 
common assembler directives and techniques. Pseudo-ops and 
run-time options provide for conditional assembly and exten¬ 
sive listing control. Arithmetic and logical operators are 
supported in complete operand expression evaluation. Generated 
object code may be output in the microprocessor’s standard 
loader format or BNPF format for ROM generation. 

Immediately available are X8 series assemblers for the 6502, 
6800, and 8080 microprocessors. Each X8 assembler is 
priced at $400 and distributed in PDP8 binary format on 
papertape, Dectape, or DEC floppy diskette. Cross-assemblers 
for the 2650 and F8 microprocessors are also near 
completion. Contact: SIERRA DIGITAL SYSTEMS, 1440 
Westfield Avenue, Reno, Nevada 89509 (702) 329-9548 


Page 20 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 February, 1977 


92 



OSI FLOPPY DISK PRICED AT $599 


An under-$1,000 floppy disk for personal microcomputer systems is 
now available, making possible reliable random storage of from 252,314 
to 504,628 bytes of data per disk at read/write rates of 100,000 baud 
and up. 

For $599, Ohio Scientific Instruments is selling a fully-assembled 
diskette drive including read/write electronics, manuals, mating connectors 
system interface board (bare) and 6502/6800 operating system, 
delivery guaranteed to be less than 120 days. Zilog, 8080 and probably 
PDP-8 systems can be expected later. 

OSI ciaims it has made a price breakthrough by incorporating into 
the hobbyist's own microprocessor system the disk control functions 
and interface. Further savings were realized by making user options of 
the 24v-1A power supply, case, connector cables and components for 
the interface board. 

User-supplied parts are conservatively estimated to cost an additional 
$145, bringing total system cost to as high as $744. Eight to ten 
evenings of assembly time and testing are suggested. These added 
costs are $50 each for interface parts and power supply, $25 for enclo¬ 
sure and $10 each for diskettes and cables/hardware. 

It is widely held that mass storage of programs and data is currently 
the weakest area of hobby computing. 

Everytime a computer "crashes", which may be frequent, both 
program and data may have to be reloaded. In the case of 12-K 
BASIC, this may take 20 minutes from paper tape, or almost 8 
minutes at standard cassette tape speed — but just a couple of 
seconds with OSI floppy! 

Putting such programs on non-volatile memory is one solution to 
the problem, yet EPROM from one of the leading systems-suppliers 
costs about $600 per 2-K card. 

Not only is cassette tape slow, but it is "touchy". If more than 
one program is stored on a tape, one or more programs may be destroyed 
searching for one, since stopping the tape in the middle of a block 
of information can easily result in tape stretch and the loss of a vital 
segment of data. 

Magnetic sorts, via tape, are thus at least theoretically risky — and 
further, require expensive, computer-controlled tape decks. 

To maintain mailing addresses on tape, for example, the user 
would have to re-record a whole tape just to add, delete or correct 
one address. Three tape decks would be required (unless corrections 
were being made on-line, then two), one reading the old tape, the 
Other reading new data, and the third recording the corrected version. 

The two tapes that were"merged" would be filed for two or three 
"update" generations, in case something went wrong in the 
correction process or the new tape is ruined. 

Disk systems, however, can read from or write to any block of 
data located anywhere within their storage capacity. Only one 
machine is required. 

Thus it is much easier to maintain a file on disk. Corrections 
can be handled instantly, on-line, and milliseconds later the updated 
file can be assessed by the system. 

The OSI 470-Floppy-Disk/Modem board, which occupies one 
slot in the company's standard backplane, can control up to four 
disk drives. It also can be configured to provide a 600-baud modem 
with full dial-up and automatic answer capabilities. 

With the OSI interface, all tasks that can be handled by software 
are, thus making it format-independent so that the system can read 
or write virtually any diskette format including the popular IBM 
3740 format. Of course, appropriate software must be used for each 
format change. 

Double-density recording can be used, but greater-than-1-MHz 
system-clocks are required unless a very simple disk format is 
utilized. 

The Model 470 comes with a simple low-memory-overhead 6502 
or 6800 operating system. Purchaser must specify which he wants. 

The operating system allows the transfer of 4-K blocks of memory 
to and from the floppy's 77 tracks. To perform a write operation, the 
user specifies the starting address of the source block and track 
number. For a read operation, he simply specifies track number and 
starting address of the destination block. 

Memory is transferred in eight-bit segments, with one parity bit 
and one stop bit. Software automatically performs a write/read/ 
verify test when writing and parity-tests when reading. The software 
will attempt to write three times before labeling a track unsafe and 
will attempt to read a track a user-specified number of times to 
recover data. 

More sophisticated operating systems are being written for the 
470, but this simplest one should allow the user to get his floppy up 
and running with minimum difficulty, using a small amount of 
memory and slow clocking. 

OSI says its $535 price for diskette drive, manuals and connectors 
means slim profits and therefore orders must be in writing — prepaid 
via check, Master Charge or BankAmericard — or via 20 percent 


CLASSY CARDBOARD COMPUTER COVERS, 
JAMES ELECTRONICS PRAISE, & 

PAIN FROM ADVANCED MICRO-ELECTRONICS 
& SWTPC 

Dr. Dobb's Journal etc., Dec. 30, 1976 

Jef Raskin's "Cardboard Computer Company" — I’ve had the same 
problem (money), so for a couple of bucks, I got some walnut grained 
contact paper which I use to cover cardboard, plywood, or aluminum 
chassis enclosures. If you take a little time to smooth the wrinkles and 
air bubbles, you will have the "Classy Cardboard Computer Company". 
Oh yes, I really enjoy Jefs articles — wish he had written more about 
the S-100 bus earlier before I committed to a system that doesn't use 
said standard. 

I also want to say a good word about James Electronics. I have sent 
various orders to James over the last year plus, and always have the 
parts in my hands within 7 calendar days of the time I drop the order 
in the mail box. (Considering the lousy postal service, that is really 
moving!) It doesn't make any difference if the order is simple (one 
chip) or complex (500 items — all different — totally $20), he delivers 
quickly, accurately, and as advertised. While you may save a few cents 
shopping elsewhere, we should support this supplier to let him know 
we appreciate service. 

Noticed your mention of trouble with Advanced Micro-Electronics 
of IRVINE, CA. I ordered one chip almost a month ago (4 December) 
and haven't heard anything yet. (It took two months to get a spec 
sheet, for which I had sent $1, last summer.) I notice also, that AME 
is in violation of the California law requiring mail order firms to list a 
street address in their advertisements — he even uses a P.O. Box in his 
catalog. Does he have something to hide? [AM-E has been offered the 
opportunity to tell its side of the story in a past complaint, and has 
not chosen to offer ANY reply.] 

Am in process of writing a mini-book about my troubles with a 
SWTPC 6800 — and SWTPC. Will send you a synopsis when I get the 
problem resolved — at present rates, I'd estimate that at July or August. 
In the meanwhile, I recommend the purchase of S-100 bus machines. 
[Suggest readers take this with a wait-and-see attitude. Look for Mr. 
Goldsmith's complaint and SWTPC's reply, before passing judgment.] 
Yours, 

W. B. Goldsmith, Jr. 4724 Maybank Avenue 

Lakewood, CA 90712 
(213) 423-3411 


deposit for COD shipment. Purchase orders are not accepted. 

There is a 20 per cent restocking charge for cancellation or order 
unless delivery is delayed beyond 120 days after receipt of order. 

Drives are manufacturer-guaranteed against defective workmanship 
for 90 days by General Systems International. Although the OSI 
interface is delivered with the GSI Model 105, it is compatible with 
the GSI 50 and 110 drives. OSI's $535 price is considerably less than 
GSI's 50-piece industrial price. 

Ohio Scientific Instrument products are available in Southern 
California exclusively from Barefoot Computer Company, Box 158, 
San Luis Rey, CA 92068. 



Page 46 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 February, 1977 


93 


WEST COAST COMPUTER FAIRE SCHEDULES 
PRESENTWORLD 

AND FUTUREWORLD BANQUET SPEAKERS 

PALO ALTO, CA. - The First West Coast Computer Faire, a 
major convention exclusively devoted to the subject of personal 
and home computing, will include two unusual banquets. Each 
banquet will have a “presentworld” speaker and a “futureworld” 
speaker. 

Frederik Pohl, the widely known science fiction writer and 
editor will be the futureworld speaker at the Friday evening 
banquet, April 15th. His topic will be, “Robots You Can Build 
for Fun and Profit.” Aside from being a major scifi author, Mr. 
Pohl is also well known as a lecturer. He has spoken before 
the New York Academy of Science, NASA groups , the American 
Astronautical Society, the World Future Society, and many 
other groups. 

Friday’s present world speaker will be John Whitney, an 
internationally recognized pioneer in experimentation and 
research concerning computer graphics and film-making. His 
talk, “Digital Pyrotechnics: The Computer in Visual Art,” will 
present a number of his ideas connecting the well known 
theories of musical harmony — audio art — with his developing 
theories of visual harmony — visual art. Mr. Whitney is a 
fascinating speaker, and will include exhibition of several of his 
most recent films in his talk. He has been working in this area 
for many years, including work supported by the National 
Endowment for the Arts, the Guggenheim Foundation, the 
Ford Foundation, and IBM. 

The presentworld speaker at the banquet on Saturday, 

April 16th, will actually be a “pastworld” speaker. Dr. Henry 
Tropp will discuss the early days of computing in his talk, “The 
1940’s: The FIRST Personal Computing Era.” For the past sev¬ 
eral years, Professor Tropp has been the Principal Investigator 
for the History of Computers Project, jointly sponsored by the 
Smithsonian Institution and AFIPS, the American Federation of 
Information Processing Societies. Dr. Tropp spent much of that 
time traveling nationally and internationally, conducting in- 
depth, half-day to week-long interviews with most of the pio¬ 
neers in digital computing. He has a fascinating collection of 
stories and anecdotes from the first years of computers. 

Saturday evening’s futureworld speaker will be Ted Nelson, 
the author of Computer Lib/Dream Machines and Director of 
the Xanadu Electronic Literary Project. His talk, “Those 
Unforgettable Next Two Years,” will discuss personal and home 
computing as it appears likely to evolve in the next several years. 
The flamboyant and inventive Mr. Nelson will focus primarily 
on some of the more esoteric products, projects, and applications 
that are likely to exist prior to 1980. Mr. Nelson, who might be 
described as a liberal arts computerist, has taught art, sociology 
and computer education, and is currently a Lecturer at 
Swarthmore College. 

The Computer Faire will be held in San Francisco’s Civic 
Auditorium, the largest convention facility in northern California 
It will begin with seminars and the kickoff banquet on April 
15th, and will have about 200 commercial and homebrew 
computer exhibits and 100 conference sessions on Saturday and 
Sunday, April 16-17th. At the door admission will be $9 for 
the two days for both the conference and the exhibition. A 
reduced admission rate is available to those who preregister. 
Complete details are available from: The Computer Faire, Box 
1579, Palo Alto, CA 94302. The Faire co-sponsors include 
both San Francisco Bay Area Chapters of the ACM, Association 
for Computing Machinery, the IEEE Computer Society’s 
Santa Clara Valley Chapter, Stanford’s EE Department, the 
University of California’s Berkeley Lawrence Hall of Science, 
the Homebrew Computer Club, the Southern California 
Computer Society, the California Mathematics Council, and 
other groups. 


CALL FOR PAPERS: IJPIEEE-77 WORKSHOP, 
JUNE 1977 

BENCH PROGRAMMING OF MICROPROCESSORS 

You can incorporate microprocessors into products without the 
use of expensive microprocessor program development equipment. 

This workshop is soliciting papers from people who have been doing 
just that. Three types of papers are expected — software, hardware 
and trouble-shooting (debugging). All hardware papers accompanied 
by a working board will be published in the Proceedings. 

In the 1950's the physicists gave us the transistor. Before we 
could conveniently use it in circuit design, we had to strip it of the 
theory with which the physicists had saddled it, and provide it with 
a practical engineering approach. Now the computer people have 
given us the microprocessor. Before we can conveniently use it, 
we have to strip it of the top-heavy computer approach and provide 
it with a practical engineering approach for use in circuit design. 

The purpose of the UPIEEE-77 workshop is to exchange 
experiences and learn pitfalls and shortcuts in writing firmware; 
and in trading-off firmware, software and hardware right at the 
design bench. Papers are due before February 1st. 

The workshop will take place on Friday, Saturday and Sunday, 
June 10, 11 and 1 2 in Philadelphia. Dormitory space will be 
available to out-of-town participants. Proceedings will be pub¬ 
lished beforehand and mailed to participants. There will be no 
reading of papers — only discussion, questions and answers, and 
demonstration of boards. Boards chosen for-publication-only 
will be displayed in the lobby, and authors will be given time for 
poster talks. Time will be allocated for bull sessions. 

For further information about UPIEEE-77 contact Miss Helen 
B. Yonan, Philadelphia IEEE, Moore School, Univ. of Penna., 
Philadelphia, PA 19174, or telephone K.V. Amatneek, Chairman, 

(215) 448-7951 or leave message at (215) 233-2962. 


ZAPP . . . CONVERTED TO 12K BASIC 

Dear Dr., January 6, 1977 

I have very much enjoyed the “Sapp the Moon Man” 
program which appeared in your Nov/Dec issue. I have 
converted it from CASUAL to MITS 12K BASIC, and have 
enclosed a listing. The program is set up for the standard 
VDM memory page address of CCOO (in line 3), and standard 
control port C8 (in line 8). In order to use this program with 
MITS 8K BASIC, the VDM must be set up to be addressed 
in the lower 32K of memory since the POKE command in 8K 
BASIC is limited to addresses less than 32768. 

Sincerely, 

Dan Elliott 2250 Latham St., # 23 

Mountain View, CA 94040 

ZAIP THE NOON KAN 

3 Z=-13312 

5 INPUT "HOW MANY BOLTS DO YOU WANT";S 

6 I? S ,1 OH S>99 THEN 5 

7 FOR 1=1 TO 16iPRINTiN2XT 

8 OUT 200,0 

10 U=Z+?5** ■ L=Z+864 1 K=L > F=Z+32 : N=Z-32 1 J =Z+722 

15 POKE Z, 32 1 H=0 1 1=0 1 POKE L+128,160 .L=L-f 128 

20 D=Z+592iPOKE D,90iPOKE D+l,65iFOKE D+2,80iPOKE D+3,83 

30 POKE D+31 ,661 POKE D+32.79iP0KE D+33,76 1 POKE D+34,84 

40 POKE D+35,83iPOKE D+96,?6iPOKE D-i-97 .691 POKE D+98,70 

45 POKE D-t- 99 ,84|S=S+1 iGOSUB 400 

50 E=0 1 X=Z:Y=Z+64 

100 G0SUB 3000 

110 IF INP(255)=0 THEN 100 

120 GOSUB 400 

130 POKE L+64,32 1 POKE L,4iL=L-64.G0SUB 3000 
150 IF LON THEN 130 
200 POKE P,32 

210 IF B=0 AND (X-1=F OP. X-2=?) THEN 240 
212 IF B=1 AND (X+l-P OR X+2=P) THEN 240 
220 IF S<1 THEN 5 
230 GOTO 110 

240 K=K+1 1 I=INT(H/10)iPOKE J+l,H-I*10+48iPOKE J,I+48iI=H 
242 D=Z+32i?OKE D,90iF0KE Dtl,65 iPOKE E+2,80iPOKE D+3,80 

244 POKE D+4,33iX=ZiW=C 

245 POKE X,32iX=X+l 1 W=W+1 1 IF WO50 THEN 245 
2 50 GOTO 50 

400 S=S-liL=KiV=INT(S/10)iPOKE U+l,S-V*10+48 1 POKE U.V+48 

410 V=S'i RETURN 

3000 IF 3=1 THEN 3900 

3100 POKE X-l ,32(POKE X,?iX=X+l iIF XOY THEN RETURN 
3200 X=X-1iB=ltRETURN 

3900 POKE X+l, 32 1 POKE X,?iX=X-l iIF XOZ THEN RETURN 
4000 X=X+liB=0 1 RETURN 

February, 1977 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


94 



$10 FOR 64 CHARACTERS & SCROLLING ON A 
TVT II 


Dear Mr. Warren: January 27, 1977 

I am enclosing details for a conversion I made on my SWTPC 
TVT-II to allow it to operate in a scrolling mode with 64 
character lines. I’ve been using this feature on my TVT for over 
two months now and find it a marked improvement over the 
original. The modified terminal displays 16 types lines each 
with up to 64 characters. All data is entered along the bottom 
line in typical scroll fashion. Similarly, a line feed will cause 
all typed lines to move up one position on the screen while the 
top line “wraps” around to the bottom. The additional 
circuitry fits nicely on a 3” x 3” universal P.C. board which 
I have mounted on the TVT memory board with plastic 
stand-offs. All parts are readily available and the whole 
project should not run over $10.00. 

The change divides nicely into two main sections and two 
options. Each is treated separately below. Should anyone 
have need for less than the total circuitry either section and 
the options can be used separately or in any combination. 
SCROLLING CONVERSION: 

In the unmodified TVT circuit, cursor line position in¬ 
formation comes from up-down counter, IC-34. This then 
feeds IC-41 where it is compared with data on memory 
address A-5 thru A-8. Disconnecting this feed from IC-34 
and placing the four “A” input lines of IC-41 at logic 1 will 
locate the cursor along line 16 at bottom line of the screen. 
Scrolling is then accomplished by inserting, essentially 


in series, a 7483, 4-bit binary adder, in memory address 
lines A-5, A-6, A-7 and A-8 as they feed to the 2102 
memory IC’s. 

The four outputs of IC-34 are fed into the “B” inputs 
on the 7483 full adder and used to provide a binary 
“off set”, shifting the TVT display up one line each time 
IC-34 is incremented or down if it is decremented. Since 
only 16 TV display lines are involved, one 4-bit adder is 
all that is necessary. The CARRY OUTPUT is ignored and 
input CO tied to ground. 

64 CHARACTER CONVERSION: 

In order to generate 64 character lines, the dot generator, 
IC-18B, must operate at approximately twice its normal 
frequency. To do this capacitor C-4 was changed to 15 PF. 

To address 64 characters 6 memory address bits are re¬ 
quired. Five are provided for from the 32 character lines 
in the original TVT-11. Along with an extra memory add¬ 
ress bit, one additional register to feed it is also needed. 
Fortunately, both of these are available in the TVT-11. 

One of the flip-flops in IC-14 is unused and with only 
slight wiring changes this fourth flip-flop can be used 
for the extra address bit. Although it’s a bit unconventional, 
we can use the tenth memory address line, the page 
select (A-9), as the sixth bit memory address. This works 
well and with only a minimum of changes to the original 
circuitry. 

Also required for the 64 character conversion is a 
means of keeping track of the cursor for characters 33 
thru 64. One additional stage of up-down counting has 
been added to the cursor position registers just ahead of 



February, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 









Page 26 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


96 


February, 1977 


CT-1024 TVT-H 64 CHARACTER CONVERSION 














IC-34 to take care of this. This extra counter uses essen¬ 
tially the same circuitry as the existing fifth bit counter. 

Along with the counter one additional comparator is needed 
to compare the counter output with the new memory 
address data from line A-9. A 7485 comparator has been 
added for this purpose. Only one of the four circuits on 
the 7485 is used. The others are all tied to the +5VDC. 

All comparators are connected in series in the TVT so 
this “extra” one may be tied in at any convenient point 
in the string. 

OPTION NO. 1: 

This option provides an automatic EOL erase on line 
16 with a “line feed’ so new lines will always come up “clean”. 
No attempt was made to store data in the TVT-II beyond 
what is actually on the screen. Doing this will require 
additional memory. 

OPTION NO. 2: 

This option charges the “EOF” erase circuit to a “full 
screen” erase regardless of cursor position. Scrolling 
places the cursor on the bottom line which defeats the 
normal “Home-up”, “EOF” screen erase procedure. The 
“Home-up” jumper on the comparator controlled cursor 
board should also be removed. 

Many of the circuit elements needed for the project are 
available from unused IC sections on the TVT. However, 
using them would have increased the complexity of the 
wiring. Therefore, I chose to use separate IC’s. Placing 
the extra circuitry on a small P.C. board makes the full 
conversion quite simple. A 3” x 3” “universal” PC board 
is adequate for the purpose. D.C. voltage was taken direct¬ 
ly from the TVT’s regulated +5VDC supply. The TVT 
lends itself well to modifications of this type and I 
expect there are several changes which have been made 
by others that we all could profit from. I would very 
much like to see what other readers are doing or have done 
with their TVT-II’s. 

Sincerely, 

R. Lynn Smith 

PSC No. 1, Box 7327 

APO San Francisco, CA 96286 

PARTS LIST 


Item No. 

Description 

Qty. 

1 . 

Scrolling Conversion 7483 

1 Ea. 

2. 

64 Character Conversion 


2a. 

15 PF Capacitor 

1 Ea. 

2b. 

.1 Mdf Capacitors Cermic 

2 Ea. 

2c. 

1000 Ohm 1/4 Watt Resistors 

4 Ea. 

2d. 

7403 

1 Ea. 

2e. 

7404 

1 Ea. 

2f. 

7474 

1 Ea. 

2g. 

7485 

1 Ea. 

2h. 

IN914 or Equiv. 

1 Ea. 


These beautiful, immaculate, exquisite, masterfully executed 
perfectly produced, ever-so-wonderful schematics have brought 
joy to this old editor’s heart. 0... what great pleasure doth arise 
from well-done artwork. —EDITOR 


ALTAIR DISTRIBUTION MOVES 


January 21,1977 

MITS, INC.has decided to move its subsidiary, Altair Distribution 
Company, Inc., from 730 Boston Post Road, Wayside Plaza, Sudbury, 
Massachusetts 01776 to MITS headquarters at 2450 Alamo, S.E., 
Albuquerque, New Mexico 87106. 

The transfer is in progress and is planned to be a smooth one. 

If you have any questions, please contact Mr. Robert Tinley, Vice 
President of Operations, or Mr. Robert Lindemuth, Vice President 
of Finance, at MITS in Albuquerque. 

February, 1977 


NEW SIGNETICS 8K PROM OFFERS HIGHER 
SPEED, 30% SIZE REDUCTION OF CHIP 

SUNNYVALE, California - A field programmable 8192 
bit bipolar Read Only Memory with a 2048 x 4 organization 
is now available in production quantities from Signetics. 

One of the first 8K PROMs to be marketed in large 
quantities, the new Signetics device also offers improvements 
in speed, size and power requirements over similar devices 
announced by other manufacturers, according to Ralph 
Kaplan, Marketing Manager for Memories. 

The TTL-compatible memory is available with either Open 
Collector outputs (82S184) or Tri-State outputs (82S185), 
allowing to optimal word expansion in bussed organizations. 

Key performance specifications include an address access 
time of 100 nanoseconds maximum and typical power 
dissipation of 50 microwatts/bit. 

The 82S184/185 devices also feature a significantly 
smaller chip size of 26,600 square mils, about 30% smaller 
than current industry standards for devices with this capa¬ 
city, according to Kaplan. 

Both devices are available in a space-saving 18-pin 
ceramic DIP package and offer substantial savings in costs. 
Priced at $31.00 in quantities of 100 and up, they represent 
a cost/bit savings of approximately 35% compared with 
equivalent PROMs now on the market, Kaplan says. 

The 82S184/185 devices are an extension of the Signetics 
generic family of PROMs, utilizing the same basic fusible- 
link programming techniques. They also represent a fur¬ 
ther extension of the company’s line of PROMs with 4-bit 
word organization, which facilitates memory expansion. 

Other features include on-chip address decoding and a 
chip enable input. 

The 82S184 and 185 are currently available in the 
commercial temperature range (0 C to +75C), with mili¬ 
tary grade devices expected in the near future. 

For further information contact Signetics, 811 Argues 
Avenue, Sunnyvale, California 94086. (408)739-7700. 



SINGER/FRIDEN DOCUMENTATION 


Dr. Dobbs & Readers: 

I have schematics, wire lists, and operator instructions for 
Singer/Friden Key-to-Tape terminals that were widely sold 
on the S. Calif, surplus market. I charge $20.00, which is 
refundable if it isn’t what you need. Send me your top 
assy number and plug-in card numbers. 

John Clothier, EE c/o Interstate Electronics 

707 E. Vermont Ave. 

Anaheim, CA 92803 

Page 27 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


97 





64 CHAR/LINE TVT-II MODS, REQUESTS 
& SUGGESTIONS 


Dear Dr. DJOCC&O, Dec. 29, 1976 

First, praise for the excellent product review of the Poly 88 
system. Could you arrange a comparison/evaluation of some 
floppy disc units (i.e. Digital Systems w/CPM), Processor Tech¬ 
nology’s Helios and the ICOM system. Many of us are waiting 
to buy a floppy storage system and at 2K dollars, purchasers 
are entitled to some of DDJ’s expert evaluation. 

Second, enclosed you will find an article that describes 
how the TVT-II can very simply be modified to display 64 
characters/line. It requires only one IC as indicated and it 
works. It was originally developed in the Atlanta Area 
Micro Computer Club. 

Third, I would like to compliment Marvin Wizenread on 
the interesting VDM software he has submitted to DDJ. 1 
pose this challenge to his ingenuity — how about a PONG 
game? 

PLEASE: ask him to document for a VDM at the 
Proctoc standard address of CCOOH-CFFFH, the UP and 
DOWN assembly language sequences of his programs. 

I enjoyed Marvin’s Life on a VDM but if “Life’s Like 
That” having to enter the starting configuration from the 
front panel, then why bother to use a computer? Life 
can be done with graph paper, pencil and eraser. However, 
despair not, haters of front panel switches. I am writing 
an article that discusses humane ways of putting data in 
your machines. 

I would like to suggest a new approach for DDJ to pursue in 
the area of software development. Till now, DDJ has set up 
specifications for languages that can be implemented by its 
readers. The response in the form of Tiny Basics, and 
other languages has been wonderful. I propose that DDJ 
publish specifications for applications programs that would 
serve as an impetus to program development as did the 
original specifications for Tiny Basic. For instance: 

Applications Project I: Payroll 

a) Language: ANSI Basic or ALTAIR 8K Basic V3,2 

b) Minimal Hardware: ALTAIR/IMSAI computer 


TVT-II 64 CHARACTER MODIFICATION 

This modification converts the TVT-II display to a single page 
of 16 lines of 64 characters. Operation of the cursor board, 
screen read board, parallel or serial interface is unaffected. 

After conversion the TVT-II will operate as usual with the 
cursor homing after character 64 on line 16. 

Parts Needed: 

1) IC-43 (1) one 7486 quad exclusive or gate 

2) IC-40 if needed (see Step 2) 

3) Sharp razor to cut printed circuit foils 

4) Jumper wires - insulated solid conductor smaller 
than 24 guage. 

Steps: 

You will cut PC foils (only a 1/16” gap is needed) 
and add jumpers. The notation 40-5 means IC-40 
pin 5 

1) Remove R7 (4.7K) and replace with a 1.8K resistor to 
increase the dot clock frequency. 

2) Remove IC-40. (If you cannot remove IC’s from a plated 
thru board without damaging the board then clip each 
lead of IC-40, remove its body, and desolder each pin 
individually. If you cut IC-40’s pins then you will need 

a new one to complete the modification.) 

Cut the foil between 40-6 and 40-11. Replace IC-40. 

3) On the bottom of the board cut the foil at 40-5 and 40-13. 
On the top cut the foil at 40-11 and 40-12. Cut the foil 

at 40-11 and 40-12. Cut the foil from 40-4 to 33-8 
at the feed thru near 40-14, not under the IC. 

4) Piggyback the 7486, now called IC-43, on top of IC-40 
by bending all pins except 7 and 14 out horizontally. 

Then solder pins 7 and 14 of IC-43 to pins 7 and 14 
of IC-40. 

5) Bottom of the board cut the foil at 23-10. Connect 
43-3 to 17-12. Connect 43-2 to 23-10. Connect a short 
wire to 43-1. If this wire is connected to +5V then 
video polarity is inverted; if grounded, then polarity is 
normal. You can add a switch here or solder permanent¬ 
ly as desired. 

6) On the bottom cut the foil at 27-13 and at 27-9. Top 

of the board cut the foil at 35-5 at the feed thru. Connect 
40-11 to 35-5. Connect 40-12 to 33-8. Connect 40-13 
to 27-9. Connect 27-1 to 27-13. Connect 27-8 to 40-4. 


20K RAM memory 
Tarbell cassette 
ASCII keyboard and 
VDM or other video display unit 
ASR 33 or other hardcopy printing device 
c) Objective: To provide payroll computations for a 
business with 15 to 20 employees. It should allow 
the preparation of payroll for hourly and salaried 
employees on a periodic basis. Data should be 
available as weekly summary sheets for all employees 
and also individual payroll files for each employee. 
The program should be able to produce quarterly 
and annual reports of information needed for 
filing with local, state and federal tax authorities. 

That’s all for the time being. 



Sincerely, 

Gary Alevy 

1056 Fifth Avenue 

New York, NY 10028 



Tl/T-M C* CHARACTER MODIf {CATION 


Page 28 Dr. Dobb's Journal of Computer Calisthenics 8< Orthodontia, Box E, Menlo Park, CA 94025 February, 1977 


98 







7) Bottom of the board cut the foil between 35-4 and R23. 
On the top cut the foils at 28-4,28-5, 33-9. Connect 40-6 
to 35-4. Connect 40-5 to 43-6. Connect 40-4 to 43-10. 
Connect 28-5 and 43-4 to R23. Connect 43-5 to 40-14. 
Connect 28-4 to R46 at 35-5. Connect 33-9 to R46. 

8) On the bottom cut the foil from 12-4 to 21-1 at 21-1. 
Connect 12-4 to 21-14. Connect 21-1 to 21-12 to address 
line, A9, which is the foil that was cut from 27-9. 

Connect 43-9 to A9. 

9) Connect 43-8 to 43-11. Connect 42-3 (the foil which 
was cut from 40-11) to 43-11. Connect 33-6 (the foil 
which was cut from 40-12) to 43-12. Connect 35-3 
(which was cut from 33-9) to 43-13. 

10) The modification is complete. Whew! Now double 
check everything.... 

11) Apply power. Adjust R4 and R6 to center the display. 

If the width is too large then decrease R7. After center¬ 
ing the display, if some characters lose dots you may have 
to change IC-22. Ugh!!! Some surplus 2513 characters 
are not fast enough. 

Happy Computing, 

Gary Alevy 
1056 Fifth Avenue 

New York, NY 10028 Copyright 1976 


THE TRENTON COMPUTER FESTIVAL RIDES 
AGAIN IN NEW JERSEY! 

The Trenton Computer Festival (TCF), the originator of 
amateur computer tests, will happen again, on April 31 - May 1, 
1977. 

The second annual TCF will be bigger and better than the 
original. It is being expanded to two full days, with new and 
larger facilities to house up to 90 exhibitors. There will be 30 
speakers and demonstrations galore. There will be hundreds of 
door prizes and a huge outdoor flea market. 

Computer conference sections and forums are planned on 
the following topics: Microcomputers for home, radio amateurs, 
education and medicine; consumer applications of microproces¬ 
sors; computer music; robots; graphics; speech synthesis; estab¬ 
lishing amateur computer standards; computer club convention. 

It is expected that attendance will exceed 3,000. There will 
be amateur computing contests and awards, Saturday night awards 
banquet, programming copying service, forum audio cassette 
copying service, free bus service between hotels/motels and fest, 
activities for wives and kids, and free parking for up to 4,000 cars. 

TCF-77 is being sponsored by: Amateur Computer Group' 
of New Jersey, Philadelphia Area Computer Society, Trenton 
State College Digital Computer Society, Institute of Electrical & 
Electronic Engineers-Princeton Section and the Department of 
Engineering Technology, Trenton State College. 



February, 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


99 



An 8080 Disassembler 

with exquisite documentation 


PLUS 

1. Details about how to get it on your cassette tape 
for 5 9<t 

2. Notes on an interesting though unstandard floppy 
disc with 2.5 megabit transfer rate 

3. An example and details of a “word processing ” home 
computer system 

4. More good comments on Kildall's CP/M 

Ward Christensen 

Editor’s Note: Normally , we would typeset the text portion 
of an article such as this. However, we are publishing it “as 
received’’(1) to illustrate what can reasonably be expected 
from a personal computer used for so-called “word processing’’ 
using a plain-jane I/O Selectric, and (2) to exhibit a beauti¬ 
fully-prepared manuscript , the likes of which we would be 
delighted to receive more often. 


in h 

H 

* P 
• C G 
W 0 3 
0 P 
CO H J 

co O 3 
a ^ 


u 

3 

H 

•§ 

a 


c 

•H 

p 

3 


p 3 3 a 

3 P 

3 

P O tfl 

• a 

CO 

p a 

H 3 

P 

c 

a 

p 

M G 

H 


p 


a h >, 

tT'M x 

to 

G 

P d 

3 3 

rH X 

n >i3 

3 H X C 

P 3 

y 

3 CN -H 

to p 

X 

3 C 

0 X 

d 

5 

E 

(0 



3 

0 

u 

3 3 rH 

G 

co 

Eh 

d 

G 

XX 

d g 

■H X X 

to x p d 

3 X 

p 

P in x 

3 G 

y 

X 3 

■§** 

E 

0 

d 

p 

P 


C 

p 

G 

rH rH rH 

•H 

•H 

M 


X 

Eh P 

CO -h 

•H X 

3 d 

X P 

3 

3 

as 

3 

P W 

p 


p 

•H 

c 

— 

0 

(0 

H 

•H H d 

G 

o a 

z 

3 

P 


r 

a 

P p 

H 0 

0 

a - 

d 


d 


0 

p 

co 

44 

• d 

p 


• d 


d d 3 

d 

CO 


CO 

C H 

1 

X 

•X-H 


E X E P U 
o p g o 





3 H -H CO 

E 44 3 

U -H 

3 \ 3 a 




HO H 

P 0 H 

e 

X u X P 3 





0 X 

44 CO E 

W H 
d 

P d 3 c 

S X P 


cn 

r- 

3 >i 3 CO 0 

3 3 

3 a 

O' - 3 


H 

r- 

CO 10 OH J 
CO d H 

•H CO 

p >i * 

G >i P 

p 


cv 

>iP CO 

< 0 c 

•HP - 3 

w 

o 

H 

G HO to 

CO >1 3 3 

G 3 d 

h d 

X d • P P 


SO 


d to 

X rH 

d P C\ H 

X 


- 

•h Eh a-H 

M 

0 p 

E X H 44 3 


V 3 P G 

3 

>ia Cn O h H c CP 

E 3 G >t-H -H g 

U X 

c a g — - u 

d a 44 x—* d 

3 0 U -3 0 - 

E - O Hlh 

> r-wo >, 

3 M G X a C 1 

p 3 p x o c o 

d h 
• P 4J O 

(0 O Mill C 

3 G 0 X 

C H U 

c o oh w 

a u r 


a ■ 

44 O 

O r 

u 

CP c 

c • 


> 3 

d p 


>1 C to 
<0 X 
' 3 


•3 

G 

•H 


Q.H 

H E G X 
H d 3 
•H M -r 
5 0 II 

3-h X 

3 c x x 

2," 


>i 2, 

0 OP' 
n 'jco ^ 


a o 


3 


a 

a 


CP 23 d 

d cp p 

U 32 
•H O -H 

55^ 


< a 

p 
d 
• 5 
>iP 

P 4-1 

d c 
P to 


Is G CO X PX 

0) r-l M 3 P P 

co M o 3 o d O 

co P d co Eh co 

d 4-1 • — co 

• 3 0 P P 0 
C CO 0 a H 3 U 0 

d c >i 2 : <u c 

3 ^ X CO P 

CO P CP.h\S« 
id 3 an 
Od H'-'d) 0 
h d to 0 x 

3 CO >10 
OX 


E 

O 

P 23 


X 3 
3 3 *3 

iH P 

d 5 w 
H P -H 
•H 4 -t 

d o 

> H 

d h 

r-> r-i 

a VO 
CO 33 ^ 
•H U 
< 

U 


1) a < 

22 ' 

H a 
H S-I 
•h d 
> 5 
0 
M 4-1 

O 

co w 
d 

- u 

>i 33 
H U 

P < 
U u 
a 


to CP43 3 

c o 

•H >iH 

3X3 *H 

23 CO 23 *3 • 

P H P C O- 

h a 

a CO 

a 3 p d 

C a O G P 

d 4-t d -P 

U X • 

- co o a 

tfl H 0 P 3t 

(1) 23 O d 

H rH CP G P 

>vH -H •d 33 d 

E 5 4-t c H 3 P 

QH23 3 

H 33 O 

5 d G >, 

0) d 

U 33 c 

GOO 

■H a 
to 13 
O 


O 22 

P 


H P >,0 


0 

4-1 rH 

d 

- 0 G 

: o o 


CO 


p p 

IS 

c ' 

E 


a h 

CP P 

d 5 


» 0 
i w 


5 r 


22 *22 
10 dH H 
P a H P 

a d o d 


G 3 

33 O G X 

0) H H X 

CO P P X 33 O 23 . 

0d3XdPPE 
H P O -3 O d o 
O G P P DE-* r J 
G 3 3 G 

23 E rH -h CO 

3 ^ 1PGG 5) 
O -H 2 3 O d 
0 33 H O d-G H 
33 3 '-0 >i E -P 4-i 


d 3 
P CP 
G 
d 

H 23 
<H 3 
3 X 
22 J 
P 


c 

3 

U 

23 G 
P 3 
•H 33 
5 G 
O 

CO 

d 3 


fl a. 


•H 

M 33 G O 
22 * U H S 

P 4-1 CJ 3 W 3 

^ -< 2 : - y 

i*d 3 U P O 

H n 33 

>1 4-1 

E . O 


2: >.P 
10 C0 •”1 

I ^ 4-1 O r-l 

; Q C O 3.-H 

1 a o 

1 -h 3 

I P CO 

1 d 0 

1 3 P -G 

y g 


3 2 — 

24 CO 

d p p 
3 co 


■ *3 

I O U 

2 < 

co * 

0 22 E 
o-O 

U P 


! -H 3 
• >1 U 

21 P 

22 d 
0 3 


d to 

-P VO 

to 3 
p p 
to 33 
-0 33 
d < 


3 0 
10 P 

3 3 

4J rH 

to 22 
•H d 
P >1 
X 3 
CJ 3, 


H H G d E 

33 P 3 
3 d P - P 

P G 3 3 
G O P > 
3 3 P O 

3 E 3 y 

4-1 rH 3 to 

22 y '3 

d d 0 G 
d t> p 33 d 


3 :« 

U 

h d 

> 

p p 
3 o 


0 
d p 

U 


E 


33 

3 


5 

a 


0 

>1 


'3 

3 

24 


24 5 3 33 


>i 

3 *h 3 h y 

34 -H 0 p i CP 

d p G 

P 3 3 33 H 

O X 44 3 >, 

ri PP 33 2 . 
■H 33 0 

3 * d y 

< 44 x h 10 2 . 

* CJ p P o P 


•H 33 

33 rH 

- 6 

P 5 

o 

P w 

CO 

d 

CPU 
>1 3 < 
a P H 
- 3 X 

04< 

d E 

o 

to U 3 


O 3 3 >1 O 3 d 
to r-l Q P 33 O 4 
•H 3 CO 3 

3 P 33 d P 

£P33CdPd 

d 3 X X >1 p 
u > y p a 0 3 

*-33 2.0 


3 


24 5 
y) c 


33 co 
d 

>, 0 c > 

C/3 P 44 o -H T 44 
Eh 3 H 3 H 
H >33P U 
r: -h d d 3 d »h 

r-l CP d 

3 
>133 

>1 44 33 *-H 

0*44 to C G C 3 
Q 4 0 co -h d 0 > 
d 


3 G P 

• 33 d O 


«—1 1-4 p p „ 
C 44 3 U O —» 33 

33>i3 44 d 44 O 0 - 

E x d P *h o d 

>1 5 22 3 3 CM G p 

L.C P3EPO P 

5 0 0 d 0 CO 0 

O' o ^44 33 u p o CP 


3 

rH fc; 1 
O * 

rH 31 . 
33 d C 
d 3 h 
3 33 P r 
X P 
3 

d C3 p 

>1 c 

<H M -H 

O' 0 

0^44 CO 
3 d r 
10 5 

33 

P 3 * 

3 P 3 

3 S > 

Odd. 

Oi > to 
33 

C> C3 -H • 
G Eh 33 
•H M 
33 n H 
3 
rH 

y p 3 


o 

3 

•H rH o G 3 G M 

• X 

G 

d 

p 

,G 

D 1 CO 

T M 

0 

G 3 44 H 5 d 

o a co 

•H 

x 

3 


G 

• 

>i 

G 0 3 X 

H 3 -H 

• 

3 

X 

P 

CO -H 

; «■ a 


3 5 P 0 m - • 

o p a 

r-» 


s 

CO 

•H 

c 


p oo aa> 

'J G 

X * 

P 


C 

P 

X d 

tfl 

H x H a H U 

3 H 

to a 

3 


£ 

3 

P 


H [4 G P H 

a d 

•H H 

0 



>i X 


c 
E 3 
G X 


33dOPPO«333 


-H P 
33 d 


3 d 33 

> 

-. _ c d 
p d tr> p ^ 3 -u 
1 p h 3 a a m 33 


* C 
p x 3 3 c 


■S' 3 3,3 


tfl2 Id 

E C 
33 0 0 
G 3 CJ CO >1 


P 3 
I to X 
3 P 


33 CO . 
G P 


... d d rH p 

X 3 3 3 5 d 0 
P 3 P P 33 3 
‘ ' d G H 


to x 

•r| -H P 

X 3 33 * 3 
>1 3 U 33 

p >1 G -H 3 

3 3 P X P 


0 d 

d P E O 


C3 3 
CUP 
■H H 3 
X P O 

y G 4 
d 3 
a s 

rH d 

G U 


tfl -H 


0 P 

Ch 3 


X P 
^ C 
44 


-33 44 • 

10 d 333 y 

o • y y p p 

a 3 rH G G CO 3 3 

•4H 3 X - 'H 4h 3 X 

P P M to PPPC4 * 
3 rH J Xr-333 X 

3dap cooppp 

C 3 P 3 HCOCGG 

x a 0 a a L-i h h h 


3 • G 

a y>x 
G U 
P H 3 
d G p 
3 G 
>1 3 
P P 
d 0 
to P 
>, p tfl 
rH H d 

P 3 G 
d x >< 
3 p a 

p 

cr> 0 3 


3 5 
a. -44 -h h 
yid oh 
d 3 3 
3 C0 CO 0 . 

to u \pa ^3 

•H CO-H G 

CP 3 

3 -H P 3 

X 23 a 3 C o 

UP rH >1 4 J 

•H <H 

X CO C OH rH 
5 -H 0 PH f 3 

•H P d C 

P H C O*. 
‘HH O 0 
G -H U CO 

5 E 

0 • 24 O >, 

— CO 44 uj 

Clin-rl G 3 
P Ch • a h n 
■h X CN 

3 3 P d 

X O X O 

4-> VO 44 4 J P U 

H c U o 
a c c u-i 

d p o to 

3 d 3 4J 

p p a -h 

GdaGr- 
3 p 3 d 5 

•0* H H X G 

300(1 

3 44 PG- 
P CO P P 3 

d C G P 

- d o - 

>1 co p y >, 

a 3 p x 
an p u 
0 ad >rH o 
h apH 5 

44 o d 3 u 

-44 3 3 S 

a d h p 

p ap x 
d p p s d 
a to 0 0 “ 

G 0 44 U 
d E 
H — *■ 

to a 

d 


^ u 

0 d 

44 u 

3 4J 


a a 

H H 

a 3 


G X 
G to 
3 H 

p a 


a x 
to C G H 
3 a -h x 
a o m x x u 

G O X 3 to o 

•H VO a 3 *H tO 

- h a to a - 


a 3 - d d d 

c x 44 P 

d p o ad 

p 3 a 

Pda 

_ ___ -03 a 

3 - H 30 CT'tflO d 3 

x a x c p x 

p H - H >i p 

n to - N 22 H 

x 3 • 3 s 0 5»3 ti ^ 

4- ) X U P D cs c J 

•H P P d • p O 40 H 3 G 

5 3 3 E a H . U-H 

3 x 0 a cn co 3 a 
0 co - p < h p a 
O' 3 Cn 44 POX 3 

d G 3 0 p p H 

3 y -h h x * p „, . 

Euxau^uua - 
X 0 EGG 3 — 3 • P 
3 0 H -H -H tO H 3 H 

a >1 u co p £ E 3 3 

GH CP OdlOU 

E-hx dd3PP\P 

PPG E G 44 O' CO H 
Pd-H 4 hP 0 O 3 U 
d E > 00 3 PP 

x -H x a p a >1 

p p -pc Pd xa 

ao-HC 3 P>. d 

>, e^hpp h x 3 

tp - 0 p 0 CO > 1 H CN P 

OPX u 44 H G d 

h tfl Ed cp d G P 

CP 33 P 3 .-^3 a 

C *H X H 44 p p D 02 
X 44 -P X • d -H X p 

u o d 2 p d 
3 p G p • p d 0 

4 J dH a CO X 44 4-1 440 

0 • -rl (0 H 0 «P 

- to a 3 h a x 'O 

p 3 g x h w to 
p x d p 44 3 • 

d u p p 

d 1 a x p a h 3 
□ a 3 co 3 p p p 

X 33 >HHG 5 tA 

p 3 > h a H 0 -H„ w 
xh 0 oxatr>44p 
44 p to 3 p I G 3 V) 

0 5 H x P 3 d P G P 

3 to > 1 P G 0 d 44 

3 44 G 3 0 aPP-H 

4J 3 X X y G 4 h 4 -> X 
d d to :h y g 3 h to 

x h d p x 

U 3 3 >1 XX 

- > X • 5 to to 

d h s -h d 

•H -H rH P 

x a E x d — h 

X-H 3 OH G'p * 5 a 

a X p ^ 3 G 3 O p 

vo a x h p p g 

dH h a 3 g * 5 

d 0 an 3 a 

U E E P 
3 3 C p h d 

■h E X U O p X 


3 P 
x 3 
d p 
p to 

•H 
P D> 
3 3 


to d p 


P P: 


C 


23 2 


Page 30 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


100 



23 23 - 

0)^ C J >1 U 0 

N 

n a 3 n 

2 m >-, 

u 



o 0 


a b£ 













1)0^ 

10 0 U ft S 'H jj 

0 

\ 3 tr\ 

0 rH 

•H 



*J 4-1 


3 C 













H id 

3 a < p 


04 0 rj Pu 

a c 

£ 





a — 













P >,-P 

IH -U 0 


U X XU 

o. o 

d 



x> . 


p 5 













G a a 

05 j£ G 0 O 4J 


d u 

3 >i 

c 



3 E 


4-» o 













U G 

P 4J C 0 


23 d 

G rH P 

>i 



23 d 


— ■— 













a «H 

g p 3 g 3 p m 

>, 

3 24 P 

0 rH 0 

23 



C l- 


5 - 













P 

G G > P 3 M 

rH 

PC 0 

3 d p 




3 bfi 


a o 














•H o d >1 CO u 

0 

a p O 

£ 3 




*-> 0 


p 













0 P Z) 

E 2 .c 23 a tr. 

> 

CO \ P 

0 P 3 

- 



c «- 


3 













W H ^ 

P G (0 < 

•H 

P P w p 

a a 

P 



— Q. 


a 













H f3 4J 

o 3d 0 

P 

PH d 


0 





C 3 













G .o 

■POO O 0 >1 

d 

d 24 

dap 

P 



a 3 


3 a 













'-'0 0 

-C >4 2-H c 

rH 

t/53 tn 

H OH 

•H 



— a 


a 4-» 













£4 W 

- -p 3 >,a 

0 

3 -H o 

0 = 

23 



4-1 















>i 3 

O a G a a 2 

p 

pHd\ 

P 23 

3 



4-» 


oo 













4J 

n ch o 0 0 


0 rH H • 

rH 




— P 















0 a 

O 0 —4 P 


d d to 

h d 3 




o 


U> o 



c 


•- 

P c •• 

bO 

a 


3 

- a 


•H 0 0 

rl£ CN P 


P P 3 0 

.•H 0 

* 

S3 . 2 




C p 



O 


3 

0 3 3 

C 

c 


p 

3 — 


p X P 

- a • p c c d 

0 

to to era c 

G d u 

P 



• 3 


— 4J 





r“ 

P a r— 

— 

0 



— 


a a P 

o d -h d 


PC G P -H 

3 a 

3 

a ^ <o 


a 23 


> c 



■O 


a 

d p a 

w 

— 


a 

a 


U 4J 

n *• U3 H d 0 

5 

P P P pa 23 

rH 



E O 


d o 



3 


— 

- E 

d 

p 



d X 


3 c u 

a U 3 3 P P 


X 0 3 

2 0 

a 

% 


d U 


a u 



a 


a 

3 , d 

p 

u 



P X 


P 0 0 

h -h cn 24 a 


er23 d co o 

>i0 

E 

CO j3 i-4 ** 


p 





d 


a 

E x 

3 

3 



X 


0 P 

P P 0 II P o 

G 

C G £ 3 p 

*■ 3 Cn 

3 

P U a 


bO ^ 





a 


O 

3 sLU 

C 

P 


fn 

X 


cd c 3 

'O p 3 n^-HH 

•H 

•h d d 

z a 

a 

3 -a J 2 


O *-» 


O V) 





a 

U r-4 

3 

4-1 



• 


0 CO 

COO 2 W 


5 PUP \ P P 

a 

0 Sg-3 


P U 


oo a; 

1 


a 



U U 

tc 

a 



0 


P 

d o d p d 

3 

0 - G 0 0 

<x d 

< 

>1 ^ >o O 


a 3 


O J= 

1 


3 



d P 


G 


UJ 


a o 

rH CP 

c 

p a o a 24 

u a 



•• 

•—» 


00 u 

1 


4-1 



3 • 


— 


4- 

t 4- 


23 P 0 

-OP - C 23 

>, 

?U 2 0 

- 2 



h- 

*-> -Q 


4-1 

1 


o 


p 

C — 

P 



3 

>% a; 


C CO -H 

CO CO 0 o p 0 0 


P to rH P 

c a 



z 

CJ O 


— 

1 


3 


— 

d — 

o 

3 


> 

a a 


G 0 a 

rH P rH 0 24 p 

4H 

3d rH 24 

o g - 

• • 


UJ 

3 ^ 


C J 

1 


CT 



c_> 


4-i 


3 

5 


04*^ 

d - .3 4-i >1 d 

0 

a o to d 

2 23 

23 U 


Z 

•n 


d a 

I 





-to 







o 

GO 3 «2 a P rH 


53 to d p o 

0 

0 P 


z 

a 3 



1 


G 


— 

•- a —< 

25 

a 



3 X 


a 

•H U H H -H CO 

rH 

3 5 to a 

P P p 

0 3 


o 

0 c 


3 

1 


a — 


p 

X — O- 

d 



3 

a x 


~ G 

£ C X -H 23 C 

rH 

o a c p 

G H 3 

3> 


cc. 

•— 


c a 

1 


c 


d 

3 O 

3 

m 


u 

P X 


P -C • 

P 3 G G tr G 

d 

p 3 H 

3 er 



— 

O -C 


o c 

z 


o 


a 

a g 

4-i 



d 

X 


fT3 2 23 

3 23 P > 3 G P • 


rH £ 0 

i £ -H 

G 


> 

co U 


3 

o 


— a 


u 

C 3 

cn 

p 


' 

— J 


£ 0 

P C P d a -H P P 

0 

0 d H 0 p 

£ 3 P 

>i 0 


z 

O d 


a 



4-i P 


“ 

30 a 

C 

o 


Q. 

G 


P G > 

o d p o c 

P 

£ P P P 

0 P 

P H 


LU 

OO E 


3 

u. 


CJ 3 



4-i — P 

— 




— P 

3 

0 P P 

o 24 > to a o d 


G -H CO 

u a 

3 P 





*J QJ 

— 


3 P 



d p — 





0 

3 

0 0 

2< co d h d P 2 

P 

G tr 3 >4&j 

>1H 

> d 


o 

P 3 


d a 


p 

P U 


a 

v- U > 


a 


1 



3^0 

>,0 rH 3 d 

CO 

•h a co a 

a 

u 


z 

O -C 


1- 3 

zz 

o 

P d 


Q 

3 3 Z - 

X 

DD 



25 3 

d 

0 0 

PPtfldO M 5H 

0 

>,a Pda 

S' 

0 


— 

P *-* 


3 a 

UJ 

E 

a p 



C P W x 

X 

G 



G 3 

> 

a P 

P H J H H P 

a 

E o 

G 3> 3 

a rH 


h- 



ap 


3 

c d 



3 P 3 - 

X 

d 


3 

d ■— 


23 a 

- 0 P 4-1 H 


£ 4H a 

•h g a 

•H rH 


< 

a 


O 

< 

E 

•— a 

• 

3 

fefi a a o 

X 

P 

• 

r- 

P d 

X 

0 P to 

rH u (N 0 P 0 rH 


-3 0 0 >i 0 

P -H 3 

d 


QC 

tf> 4-» 



H 


o 

3 

P 

c 

a 

3 


a 

3 > 

3 

'O 'b -h 

T - CO C 0 3 d 

• 4 

23 P rH 

a p d 



UJ 

•— •— 


• 


o 

p 

O 

d 

- •— - 


u. u. 

d 

a 

a 

0 

r- rH >, P x 

P 

d p >i o co 

3 d u 

P X 


Q. 

5 


O tn 

z 

4-i 

o 

CN 

P 

3 3 a 


O 

— 

4-< 

o p 


'J >ik 

<N d rH ,-H 3 p d 

0 

P > O 

P P 3 

•H to 


O 



p in 

o 

c 

c — 


3 

a p 3 o 

a 


*3 


•“ 

a 

0 0 

— d G 0 0 P 

•» 

0 P H H P 

33 a 

H 



P to 


CN 

— 

— 

— 

a 

G 

— p d p m 

r~ 




3 

— 

X V 

O a 0 >,rH 3 0 


p -H P P P 

P 24 

23 


QC 

3 G 



p 


X O 

u 

3 

j - d x 

3 

P 

- 

1 

P IQ 

u 

> to > 

r 3 

0 d 3 

G 0 

a 


LU 

— O 


23 4-i 

o 

bO 

a to 

p 

C3 

P 25 P < 

a 

O 

— 

o 

O M- 

p 

p g 

5 d 0 >1 to 3 0 

0 

3 23 -r-i rH CO 

•H — 

•H U 


_J 

a — 


3 D 

< 

C 

- <t 

— 


3 3 3 

(0 

p x -a 

— 3 

d 

G p 

0 a P P -G H P 

0 

X 0 d 3 

a 23 

•H 


CO 

E d 


c a 

1 

— 

a 

2 


■-* p “ 

— 


— i 


4-i 23 

p 

C 3 

4-i 5) fl 3 .2 H d 

3* 

•H to £ P d 

a o 

P 


Z 

3 


bO C 

1 

4-» a 

a 


4-i .. E 3 > 




>* 

U 

3 

•H • ^ 

3 P [h a 


rH d 

G H P 

a d 


LU 

to - 



1 

a 

3 


•• 

OP— W) 2 


- 

- 

a 

3 d 

a 

-3 0 

0 P 3 10 5 

0 

a a to 

d "3 a 

P £ 


to 

a O 23 

a 

1 

— 

3 P 

3 

G 

P 

3 

— 

O 


P 

o 

— 0 

d >4 P P P 0 


23 O 3 d G 

3 

3 0 


to 

d oo 

3 

3 d 

1 

r— 

4-1 fQ 

a 

O 

O 

P 

X 

_ 1 


4— * JZ 


0 4J 

3 0 • a 0 

P 

- p a 5 

>1 ^ 

P P 


< 

V) o 

r— 

23 — 

1 


d P 

c 



d 

X 

— 

25 

a p 

3 

2 g 

4H 3 a P 3 P 


w 3 Eh p 

d 2 3 

P 3 


to 

— oo a 

> 

1 

3 

P 3 

3 



P 

x a 

— 

c — 

a 

a o - 

>iH 24 P P o d 


24 P 3 

P 24 P 

d 


— 

23 

E 


1 

4J 

3 C 

a 

a 

a 

3 

X 

w 

— 

•- 5 

4-i 

U 23 2 

rH d P O *3 

3 

H 0 

d 0 G 

3 


o 

3 

3 

a 3 •• 

1 

— 

G 3 


o 

o 

G 



3 



£3 3 

G P -a P 3 0 


M 

3 rH -H 




a 

a 

— — a 

1 

P 

3 O 


CN 

CN 

3 



a 



C 3 

o • h:< ojp 

2* 

• • P 

a p 

P P 



a 4-» 

a 

a c 


3 

'J 




CD 






24 0 

Q G P G 

3 . 

a to • h 


3 



•— 

d 

— o 

LU 












* CO 

U 3 G rH 

3 • 

. . >,PH 

d p 

w» 



a c 

a 

m a — 

P 3 

3 








_ 

— 



05 0 T3 

3 a 0 -H P - CO 


a a d -h 24 

M 

• 3> 



h- — 

— 

— a 4-» 

_ _j 

O 

o o 




a 



j- 



3 P 3 

rH P £ • to rH G 

P 

pa a 

3 G 

= 3 




23 

3 u 

a < 

oo 

CN rH 




o 



o 



£< P to 

•HOPPOPrHd 

d 

3 P 

o a 

o a 



c 


u c 

> 












>i o d 

G G P O G P d P 

0 

a 0 a 

o d 

r" 3 



3 

3 

O 3 













U UJ 

3P 0P O'M JP 

>« 

3 a p -h 


O- -3 



p a 

d p 














u 

• G 

u 

>H 


p 3 >i 0 a 

23 3 >, 


E p 3 a 

3 

P 

0 G 

>1 a 


1 a 










G O' 

P 

-a - 

3 

a 3 0 c 3 

W >4 >4 


a 

a a 

• 

a cn 

3 

3 a 

3 

C 


3 > G E O' 3 

3 24 £ 


0 C O' u 

G 

3 

a 0 

p 

•iH 


G 










G G 

3 

u a o- 

c 

c a a 0 u 

U p p 


p 

c P 

a 

u 

a 

^ G 

rH 

a 


rH G ‘H a 

a >, 


p.P G p 

0 

2 


3 



p a 










•H 

a 

p < c 

0 

G • 3 p G 

p P W 



G 

a 

P G 

p 

G 23 

rH 

u 


a a a c u r-» 

c a 


p h a 


a 

3 

> 



3 










a a p 

CD L) p 

1 

E - G a £. 

J3 G p 




p 

C P 

d 


0 

3 


£ 3 0 >1 p a 

G 3 


p 2 a 

0 

c a 


3 


a 










•H 3 

< 

< - E 

p 

E a p 3 a 

2 • a a 


a 

a a 

p 

0 


E 3 

u 

a 


3 M u rH G -H 

3 p > 


a cr p 

c. 


0 H 

G P 


a a 












c 

0 

0 3 3 • U 

x 0 a 


c 

G £3 


P 3 

to 

o a 

a 



a 3 o'a 3 a 

0 G 


P C G 

•H 




a 


3 u 










a 


a 

UH 

u a a up 

- £, a c 


G 

2 CPP 

a £ 

a 

u a 

c 



a x c G a a 



3 -H U E 

P 

2 

a 

a 

2 


p p 










•H * 


G 

1 

ip a a a 

ad £4 


3 

3 

0 

u 0 

a 


0 

3 


G • 3 -h a 3 

M J*,**" 


> a g 

24a 

G 3 

3 

a 


a 










u 

• 

2 3 

3 

P G 3 P P 

2 p 


t; m O 


3 u 

■H 

3 

u 

C 


25 X 0 « £ 

a 0 


C -H P P 


•H 

> 

er 



23 2 










a p 

a 

•h a £ 

C 

3 P 0 

0 er a 



W 

a 

p 

23 

23 CO 




3 P P 0 

3 a 


0 G 0 O' C 

2 

a g 




3 










U CD 

3 

G 0 

0 

2 : u p - a 2 

23 G p 23 



0 

p 

3 a 


C 3 


3 


H 23 25 C 0.rH 

CN H 


U 3 0 

G 


u a 

p 

3 


a 










•H < 

£4 

0 a 


a a a 3 

p p p 


X 

a 

0 

u 

CN 

G G 

3 

a 


23 G ^ G a 

O' P 3 


23 P 

U 


3 

p 

a 


a - 










a a 

a 

- -H 

,2 

- -a -r-i 

2 3 3 


u 

H 


p 


U 

a 

a 


g G a a 

G G 24 


0 23 C 2* 


C 

a G 

•H 

G 


G P 











3 

a a 

U 

tr 3 a 

- £4 a 0 


•H 

* 

<*> 

G P 

3 

3 

a 



3 S 23 -H 3 

•rH > 0 


a c 3 

M 

0 

G 

a 

P 


£ C 











0 

p p 3 

3 

3 3 G p 3 a 

p 5 


X 

'U 

0 

£ ^ 


to a 


0 


C'U o rH cr a 

a 2 


G 



- u 

a 

a 


p a 










a a 


0 3a 

£ 

£jp P 0 

a g 



3 • 

■*r 

0 U 

G 

a 

0 

a 


G > ' G 3 -H G 

3 23 • 


p ad 

0 


a 


G 


0 a 










U co 


0 > c 


>, >4 G £4 £ 

c 



a u 


3 

24 

CO - 

a 



a < a o Q P 

G • 


3 ' u 

a 

O' 

£ p 

c 

G 


p 3 










3 

3 

a c u 

>, a 0 p 3 5 a 

0 a 0 23 



c a 

a 

P P 

B 

•H H 

G 

a 


U co E £ 5 

M G 


> U 3 


G 

G 

G 

p 


u 










a 

.2 

0 

a 

a P J£ p a 

> 0 a G 


- 

3 3 

3 

P 3 

c 

23 3 

•H 

u 


G G G 23 3 



-h a a 3 

«. 

■H 

P >1 

U 

a 


>1 c 










0 to 

a 

er u 

a 

a a a 3 

3 3 G 

• 

3 

p 

C 

3 CD 

u 

a 


G 


&4 23 p w c a 



p 3 3 > 

>4 C 

ep g 




£ P 










P E-< 


c a 

3 

G 3 05 P 

P 23 G 

X 

P 

p - 

X 

X 


a 

a 

a 


2 er a g a 

G >,a 


23 23 G 

P 

er 0 2 ■» J 



24 










£<H 


•h 2 

p 

G p 3 G 

£4 G U 

c 

-£ 

0 a 

G 

a 

0 

a g 

a 



G 0 3 ' 

a 0 


' a 

0 


p 

3 

3 


a 











er 

era 3 

£4 

UP-ma 3 

3 3- 

•r-vH 

23 


• 

a 

a p 

3 

3 


>, p a g a p 

3 -H O' 


3 a 0 * 

£ 

3 

24 a a 

p 


3 










a 

G 

O' u a 


a XXX 
g 0 a a 

W W 


a 

0 P 

P 

a a 


0 

•n 

a 


ctq O 4 -h a 0 

P rH -H 


p a a 

3 P 

G 


G 


0 - 










- 

•H 

3 2 

a 

0 3 a 

P 

G 

P 0 

0 

£4 3 


^ c 


•H 


0 < - G -H P 

g g a 


G P 0 

2 

■h p a 

- 

3 


a a 










r: 2 

a 

a a 

p 

p 0) 3 P P 

a - p 

G 

£4 

G G a 

G 0 

E 

3 

a 

p 


rH 023 O' O'23 

5 3 


3 -H ^23 


2 

0 a 

a 

a 


G 24 










a h 

c 

3 0 


XX u 2 X 

a 2 23 p 

E- 

> J 


P 23 

G 

> 

3 

5 


C a 3 C G 

a era 


a a c 

G 

2 


X P 


•H 










H 

•na a 

a 

a 2 a 

er 0 

3 

U 23 P 

3 



23 3 

a 



C rH -H — • 

p cn 


p a 0 

•H 


>H 1 

G 

0 


er p 


3 









p 

er 

p 

a op 

can 

er u 

P C 

U 


O' 

G 


G 


a 3 a a p a w 

0 a < 


0 c h a 



a 

G 

a 


c u 


G 








p a 

£■ 

g: c a 


G a a -G P 2 

p g a 3 

3 


3 a 

P 

C C 

0 

3 a 

- 


• 

u rH £ a 3 p • 

a c 


a 3 a 3 

a 

• 

3 £ 

P 



•h a 


•H 








3 H 


WPG 

3 

0 G a G 

>4 3 3 

p p 

.2 

a 

3 0 

u 

Vh -h 

u 

2 

3 

3 -H 3 G > G C* 

•H G 


c h a 

p 

u 

•h g a 

< 

• 

p - 


P 








a 


£, a a 

a 

a ,2 3 O' p a w o’ 


■=T 

X 

P 

w a 

2, 


3 

3 

U 

[h p a 24 0 O' 

O' P G 


G 23 23 

3 

a 

p p 


a 

3 






a 




p 

- 

a 3 

p 

a a 2 £4 G 

a p p p 


>^a 

0 

a 23 


c >, a 


•H 

a 33 

G 24 


23 ' 

a 

3 

G O' 

>4 


P 23 


X 


>1 


2 




G 3 

3 

CD P 

? 

X 05 3 £.p 

0 * G 

£ CN 

p p 


0 


a a 

3 

53 


3 g p 0 a a 

•H >*, 


P - G >1 U 


> 0 

P 


P 

C >4 


G 


P 


£ 




a p 


p 

U 3 G J£ 3 a 

a a 3 


“ 

3 2 

G 

- u 

G 

0 

04 



p u 3 '0 to a 

a a p 


0 a p 

G 

- 

P 

G 


G 

0 £ 


G 


•H 


3 




* 0 

•H 

3 *• 

3 

3 P P 5J p 

• a a 

-C 


> 

a 

n g 


3 u 

1 

» 

>, 

c p O'a 

c a 3 


a 3 a 

P 

£ 

G 24 

a 

• 

a 

5 


P 


a 


p 




p p p 

P P • 

a 

a 23 d 

CJ P P 

a 

- 

er 

G 

C *3 


a 

C 

X 

P 

a 3 c 3 0 3 

•H -H p 


a p p u 

G 

G 


a 

O' 




a 


a 


0 




0 2 


G O - 

a 

23 * -JO a 

• 23 >. P 

u 

a 2 

23 

M 

3 

3 2C 

u 

3 

3 

a c -h E a a 3 

p a 


a -H G 3 

2 

P 

3 P 

3 

£ 

3 

3 G 




3 


u 



a 

a 


P O 

0 

- 3 g a u a 

P >4 t 

2 

p 

0 p 

G 


a 

c a 


3 

> 

3 a > G c co 

24 P 


a a 2 p 

U 

O' > 3 

u 

•H 

24 p H 


0 


•n 





- 

a >, 3 

a a 0 


a 0 a p 

J3 


p 

G u 

3 

E G 

0 

•H H 

3 

a 


u g p a 3 —' 

0 £ 


•H a 23 H 


0 

G P 

3 

a 

>1 

3 


G 




a 



p 

0 P 

U 

3 £ 0 

a 

3 p p 3 .2 a 

* P 

a 

a 

G 

P 

0 0 


£ Q 



0 a cn g h rH 

Pa 2i rH 

23 *P G 


a 24 P 23 

a 

P 

-*£ 

a 

a 

a 

2 




a 


p 


c 

0 

U P 

P 

er 3 cn 

3 

£4 0 a p 2 x 

a 3 0 0 

05 

u 

£ a 

L-M 

p a 

5 


a 

5 

• 

G 


G 3 G 

CO 

£4 

G 

•H 


23 


- 


_ 


3 


•H 

u 

0 G 

3 

G a 

a 

g a 3 c 

3 g a a 

3 

3 

3 P 


a p 




3 

P 

5cH P 23 3 • 

G ' M 


0 a a 



H 5 

3 

P 

a 

3 


,2 


2 


p 




P G 

0 

3 a a 


P U U 3 G 

CP G 

P P 

3 

p 

3 


• 

0 

G 

3 

23 O 3 G U 71 

P 


UP -H 

0 

u 

a 



2 

3 a 


2, 


0 




a 

G 

£ 4-2 

a 

er g a 


OP -G - P 

2 aafl 32 

pap 

3 

o 

h a 

G 

a 23 

H 

a a 

a 


a P P rH - X 

p 3 a 

• 

0 >. 

a 

w 

a 

0 

>4 3 

0 a 


G 


a 


a 


- 

r4 

O' 


G w 

- 

p 0 

a 

to 

2 

U 

U G 


3 3 


G 

a 

0 a 24 3 G, 

3 a g 

>1 

£ 3 


CD 

G 


P 

p 

>1 3 


P 




2 


p 


[“* H 


G 0 


a a a 

P G G 

G 


P 

c 

P 


0 a 

•H 


■H 

a £ £ m U 

a h 

G 

3 3 — > 

24 < 

• 


a 

3 

p 


O' 

3 

a 


G 


0 

a 

£4 P 

a 

p 0 a 

:< 

p G p E p a 

G 23 

H 

n 


p 

P 


a >, 



O'an’j-H 

G P ' 

23 

P P -H 

3 

a 

O' G 


c 

p 

3 


G 

23 

3 

3 


3 

u 

c a 

P 0 

c 

a - 


23 .2 0 -G 23 

G a 3 


£5 

• a 


a 

• 

g a 

23 

3 

3 

a 3 a a p a - 

H 3 


G G 3 P 



G 3 

a 

3 

p 

' a 


P 

| 

a a a a 


3 a 

« 

3 

3 

p 

a £4 p 2 23 

0 0 p a 

a 

H 

3 u 

3 

u 3 



G 

3 

p 

a a h - £ 

24 24^ 

3 

2 3 P 23 

P 

- 

•H 

a 

a 

•H 

G c 


g a 


•H 

2 

•H 

2 

a O' 

a p 

23 

> a 

a a p 0 a 3 

O' 3 

0 


U 3 

x 

3 w 

rH 

a :4 

3 

a 


•h >,a £ 3 


a 3 

3 

a — 

•H 

a 23 

0 H 


24 3 


p 

2 

O' 

2 

2 

2 2 

ID 

•H 

pad 

3 

23 a 

a £ p 
. p a g O' a 

G 

3 P 

a 

p p 

-2 

3 O 

U 

a 

a 

a •* a a r-x 0 a 

>, 

op O' a a 

P 

2 

-h a 

5 

G 


•H 


2 

a p 


P 



•H 3 


a 

a p a 

0 

G 2 a a a 

G 

a p 

£ 

3 a 

G 

J4 r- 


•H 

p 

C £ h n. a a 

p a >, 

a 

0 G 0 3 

P 

•H 23 G 



O' a 


2 H 

3 

■H 

a 

P 

a a 

G 

P 

• 

3 

3 

p 

23J‘i0>i03P3 

u 


p '0 

a 

U 

G CN 

3 


•H 

0 3 G 5 cd a >1 

0 p 


a -h p « 

3 

a 

3 £ 


P 

2 

a >1 


3 rH 

a p 

2 


a u 
2 3 

•H 

2 

G P 

p 

P u 

a a £ g 3 

2 p o' a 

p 

a 

3 

0 


3 

a 

a 



u a 0 >1 a 

U P 


a 3 h 

a 

a 

3 

P 

0 

•H 

3 p 

•• 

2 

a 

— ' 

£ 


O' 

£4 3 

0 


a a w 

3 

P 3 0 G 2 

0 2 

p 

p 

a w 

p 

D W 

23 



- 

”a 

a 2 < q co 

a h g 

M 

g a 


•H 

P 

P 


a 

3 a 

a 

— 2 

G 


3 

>1 3 -r-i P 

G O' 



P 3 CD 

a a p a p a p 

23 P P 

a 


G 0 

a \ u 

•H 

a a 

0 

U 


I) >,3 O' 

p p p 

< 

pa 3 


p 

P 0 

3 

3 

3 

0* G 

G 


£ a 

P 

P 

p 3 

2 

P G 

a a 

G 

3 a < 


3 WPG 

23 P £4 

2 

p 

P 3 


H 3 

CO 

•H H 

a 

3 

3 

Pa 3 a G 

0 a 3 

[H 

3 a £ 

0 


0 u a 

u 




a 3 

p 

3 

0 

•H 

0 

£ 

er £4 

P 01 


a p a 


P W 23 3 

P 0 

0 

3 

a 

>4 

E 




a 


G £ >s i-H -H 

a u u 


a ' u 0 

a 

- 


H 

p 

2 

0 

a 

G U 

0 


u 

a 

U 3 


G 

a 


G 3 

a 

223 O' > X 

23 2 E-* - 

u a 

a 

p 

a 

0 

23 

3 

:o 

53 

3 G Q G a 

3 H 


g a a a 


p 

0 

G 

3 

0 

p p 

u 

0 G P 

P 


a 

O' a 

p a 

a 

0 

p > 3 

3 

3 2 P U 

Gi *3 

G 

_ 

< G 

a 

>4 

u 

G 

> 

•H 


a a 24 g a g 

a p a 


H CJ H 


3 

O' a 

C-* 

0 p 

3 24 

3 

P 24 

2 

0 

G 

3 

G 3 

•J 

G 3 

p 3 

a 

G P 


•• P P P 

3 H 3 

p 

H 

u 

3 - 


G a 

G 

O' 

es 

p g a -HP 

G 3 P 

3 

p a 2 h 

9 

a 

G G 


a 

P 

0 

a 

a c.d a 

a 


a 

2 CU 

CD 

£4 C.D 

p a 

2 

0 3 


U G 23 23 - -2 

h p £4 a 


p 

w 0 

3 w a 


•H 

2 

3 

0 

C 3'-' O' 3 

a a g 


2* -0 


a 

•H -H 



G 

>4 










G 

•H 

o' u a 

a 

H GP 23 2 

0 'U 2 

a 

.£4 

a 

p 

p 

H 

'23 


P 

p 

a £ >, .-h 2 , 

12 24 

a 

0 0 
a p • 


3 

E — 

P 

3 


3 

a 









U P 


G 1 2 

2 

05 23 3 

2 CD 3 

2 



p 

3 

3 

o* 

a 


p 

2423 a CO 25 0 

2 



p 

£ 

0 

p 

0 

P 23 



c 


2 


2 

G G 

£4 


p a 

0 

< [h £4 a £ 

p £ 

3 

3 

G O' 

23 

a 

P 

G 

- 



>4 C 3 O 

— a ' 

2 

>1 U G 

a 


g a 


a 

a 

G 3 

2 

2 




2 


2 

G G 


O' G - 

p 

£3 £. G 3 

• a >4 3 

05 

.2 

G 2 


3 23 

to 

•h a 

2 

a a 

n rH o' a p 

CN H a 

0 

T1 H -H P 

2 

- 

P G 


2 


H 2 

2 

a -d 

D 




a 

2; 

£4 a 

p 0 

CD 

O' 3 O 

a 

HP a 3 P 

a no 

3 

;h 

P 


23 G 

c 

>. u 

a 

p 

2 

3 23 —— .2 3 

p 


M £ 3 

2 

3 

er* £ 

a 23 a 


£ 

• • 

• 

• 


• 

• 

• 

• • 

p 

;' 

3 a 0 

u 

£ K 3 > O' 

ad 0 

P 


P 

23 

C 3 

G 

a g 

3 

•H 

O' 

> 3 3 c a i, 

p 

- 

u a 

P 

p 

0 p 

a 

G 

3 

3 










£1 


a 0 

2 

0 CJ G 3 0 

P 23 

£4 


05 P 

3 

3 0 


o a 

0 

2 

•H 

OP a 3 -H 3 

G G 

2 

CD 3 

P 

•H 

p 0 

■H 

3 

a 

0 

0 









E 

£3 

O CN 

3 

p CD P p p 

p a 3 

a p 3 

3 


3 H 

05 

P P 

a 

U 

23 

a 

P 

"Oa a 0 5 a 

g a 

0 

< 3 P 

G 

P 

24 P 23 

P 

3 

>1 

u 









•H £4 

a p cd 

a 

a - p £4 £4 

P 


W 2 

3 

[H 3 


February, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 31 


101 




X > IT) 
ft) — 

X — 60 . 

W ID C . 

U — 

in — > _ 

a u- ft) E x ■ 


bO 3 X) 

c o — 

— > 3 
c o 


— u 
3 a > 
cr a. .a • 
a* m 


> xX 

— X X 
U CJ~ 

E — GJ 

01 X 

in E x 
in a oj 
ft) in c 
in in — 

— ft) ft) 

■am*-' 

— x 
4— *a o 
o 

bO 

OJ C dJ 

a —Q 

a a; 

— X 

C > 

x E it) 
u ft) E 
0) x 
x hO 

O in 
O x — 
x 3 X 
OJ H 

— 0) 
a x 
E 

O 

o m- m 
o •— 

x OJ 
max 
O to <t) 
E xj — 


a 


o x 
a a x 

— in 
a a in 

c E a 

ft) ft) x 

x x 

<D X 


a 


ft) 


O x x 
U O ft) 


bO x X X 
C > <D C 
— — a ft) 
4-» X O 
• => E x c 

'-x x a a o 

in — in — 

— *-< m *-> 

a; m it> a ft) 

^ J WX u 

ft) 3 •— x 

— m x 4— 

c — 

a — — x 

*■» X ft) O 

> 0J C X E 

_o ■— .— CJ 

X 4- x X 

LTl ft) ft) O 


1 a 


0) 

a a 
0) m 
bfl ft) 


<u E m x 

— <U ft) ft) 

x m a 3 

m x 

> it) ft) ft) 

c • 

O - 

X 

a - 


bO i 

Z i 


> 
m v. 
o «t) 


m x c c 
m m — — 

i x X 
> 3 
X O O 


X 5 0) 
C o-c 
(t) c W 


E O 
o 


a to 
0) >x 
_r ft) a 


o E — 
o — 
in cj 


4- < 
E O 


X — 
ft) o 

E X • X 

E in ft) 

0) >«— X ft) 

> in a; ft) 

ft) x x in 

-c re ft) 

0) — £ 

J_3 X QJ 

* <U x x — 

) — —5-3 

-O 3 ft) 

; E x !t) x m 

- 4) — 4- c 3 

■» m X a» ft) 

3 m a; x oj 

) ft) X X 

- m x in — 

— x X — 3 

x oj x a x 

bO X X 

0) X —l It) 0) 

XI) — -3 
*-» — 0) 

5 X — > 

C O ■*-* 3 ■— 

— C 4- — 
X X bO ID 

m © c u 

— 4- — 0) 

a) m c c 

_£3 •— in ft) 0) 

ft) .3 — a to 
.— *-* U E 

^ -3 — 

tO ft) 0) — 


3 O 
O C 
> X 


to — 

C .3 

— ft) 
4-i 73 

in ft) 

— o 


c c cd — o 2 

O ft) o m C 

— CO 3 — > 

4-f < 3 0) X <— 

U X C 4- X C X 

ca)uj)tj* j oE 
3 > — — c — a 
4-o h- — to 4-> in 
u — c c ft) in 

am— a •— u a 

x — it) a m o ci 

4-*x a E 3 — x 


u '-x m 

-4-1 U 


to 


— It) 
x 4- 

— 4-j n o 
5 — o x 
o ~ 

— O X 

— 4-1 c 

o x ft) 
4_ x a 
a *-» dz 
m — a 
c m x ft) 
3 ft) a .3 
o 3 

o 


m 


a to 


a.a a 
x c — 
E a a x 
ft) E ox: ft) 

TO 4-» 4-1 4-1 

to X 

o ft) X — 
x a— a o 

a o — -o 

H J3 _o e 

E rc > 

a in > x m 
x a m 
4-i m a a 

3 X X 

bC 4-1 4-1 4J 

c E in 

ft) 1- 4- bO 

in x — o c 

3 bfl 4- — 

O 4-J 4-1 

XI- -- 

a o. a ft> x 

4-i x 3 a 

— a *j 

x — 4.* a 

a i- 4- — 3 

ox c 
m a> — 

— XX 

• a o c 

a 4 - x) 4 -j o 

— — E o 

.0 0 3 
ft) m c 3 c 

4-1 4-J O o 

— fl) >X 

— > *J 

o 

_3 v- x m x 

E o a) 3 > 

> — — O — 

m -O o — -O 

a i_ — e 

o E ft) o 

x m o m 

1 — in x m 

«t) 4-* m <t) 

m — m 

x — P x 


— ft) 

o — 

-O 

E 

> re 


* C 3 
— o 


ft) 

O X 

o c 
o o 

-3- u 


O ft) 

x a 


C 4- 

o o 
a 


— u 4-* 

— X ft) 

2 — 

2 

m X 

to o 
c o -* 

— mo 
*-» c o 
mo¬ 


rn- ft) o m c 


CM 


o 


m 


4-» a > 

m *-» X) 

v- > 

X) 


O -Q "■** 

> E 2 
ft) o o 

x: m — 

m o 

ft) -O 

m m 


2 < 

m ex 



o 



ID 

O 4J — 

^x •— 


4- 

cm a — 


X 4_ o 


4-1 



o 

ft) 3 

4-* m 

o 


4J x o 


4-J 60 X 

c 

m 




3 O 

mo — 

X 

O 4_ 

> o 


O 4-* 

o 




ID 

m 3 

O E E x 


X o 

4-» x c m 


x 4- 

X 

c 



a: 


4-< l_ ft) 4-J 

4- 

4-j -C 

X o ^ 


— 3 x 

~7 

o 



ID 

<U t—i 

>o^- 

o 

4- 

O X 


O X 


X 

m — 


U- 

X E + 

X 4- 604- 

> 

o o 

c -D- 2 m 


4- O 


4-* 

c o 


LD 

4J ft) U- 

o — 

o 

N 

m 


4J m 



O x 


cr 

i- X 

- 4- 

c 

— 

— o 


C O 3 



ft) 

o 


to cc 

CM 4-* 3 


- 2 

O 4-J — 4- 

• 

O X 

m 

o 

4-J »— 


< 

4- O CO 

m 

— 

ft) 0 

x m o x 

X 

(J 4-J 4- 

j* 

3 

o 

X 

h- 

o *- 

4- X C 

•— 

•— — 

4J ft) co x 

1 

— 

i_ 

r— 

o o 

ft) 

< 

3 X 

4-»— O O 

— 

4-J - 

— < ft) 

•— 

m 

o 

ft) 

v- x 

4J 

Q 

c 

m 4- •— 

2 

— 


o 

O X 

2 

> 

0 1-4-1 



m o ft) 

4 - x m 


c 

m x 

4- 

> 4- C 



D O 

f— 

-J 

m x 

— o E — 

ft) 

— o 

o o c — 

4-* 

— o ft) 

\_ 

X 

— O O 

o 

< 

O 4-» X 

4- 4-» a 

o 

co 

m x — u. 

c 

o 

O 

o 

ft) m 

X 


i_ X 

> m in 

4_ 

3 O 

3 1- — 

o 

U X 

4-J 


> L ID 

E 

2 

X 4- O 

X m r-i 

ft) 

O co 

Z! 

u 

a Li- 



0 u 

> 

ID 

X — X 

o o < 


> 

X 


4- 4-J ZD 

X 

m 

— 4- 

m 

J— 

ft) 

x 4_ m 

m 


4- . o O 

bfl 

4- CO 

o 

— 

O X 


X 

x O 

1- o — X 

•— 

1 z 

O 4_ 4- X 

c 

4- ft) X 


4-J 

X^ U 

o 

ID 

O O 

x x a 

X 

— 

— o o *-* 

— 

a 4-* 


o — 
o 


o o 

4-1 

a 

x c 
a o 


ft) x — 

-2 
>- o 
O l_ c 

4-J 4-J • — 

o c 

ft) O X 

a c 

It) w 
X 3 

U o 4-* 
u o 
in ft) v- 
3 

O m o 

4-J bfl 

a o 

H (fl 


X x 
o o 

•— 4-* 

X ft) 

2 c 
c E 

X — C. 

o o 

bf x 4-J 

z x 

ft) i m 

u o 


bO 

4-J 4-1 X 

o c — 

C o 4J 

a — 
m x 
— < o 


O lO 
to — 
c a 

ft) - 


x 

E 

o 



3 

c 

o o 



o 


S.E 

m 

60 a 

X 


(tJ 

. 

m X 


4-* 

E 


• X 


4- 

4. 

m 


c 

4-J 

E 



UJ 

m 

o 

4-J 


ft) 

ft) 

It) 3 4-J 

m 

o 

ft) 

m 

m o 


— 

c 

o 

o 

o X 

o 

c 

It) 


X 

4-J 

o o 




o 

m 3 

4- 

4-J 

o 

m 

X 

X 

— 

m 

•— 

4-J 

m 

o 

c 

4_ — X 

o 

o 

o 

4_ 

a) 

o 

4-J 


M 

h- 


IX 

— 

•— 

c 

c 


o 

ft)- a 

m 

c 


X 

max 

— 

4- 

ft) 




X 

XJ 

o 

— 

4_ 

o 

■— 

c 

0 

>x 

•— i— 

E 

X 

0 

m 


4-» 

4-J 


o 

E 

o 

o 


O o _c 

o 

c 

X 

ft) 

x — 

3 


4-J 

•— 


m 

ft) 


0 

3 

4-« 

u_ 

X 

4-J co 5 

m 




4- 

C 

o 

O 

X 

• 

3 


o 


u 

c 



>o 


c 

CO 

to 



4-J 

4. 


X 

E 

o 

X 


o 

o 


3 

X co o 4- 

o 


c 

O 4- 



o 


o 


X 

4-J 


X 

o 

• 

o 

4-J 

— 



•— 

x o 

o 

o 

3 

a 

N 




m 



X 


00 c c 


4-J 

c 

4-J 

1- 

c 

3 

O 

X 

— 

X 

4-J 


ft) 

- 


) -0 X 
. E C3 
J O CD 


u_ m v c 


CO X — x 


a x 
~ o 
X *-» x 


X X 

> o c 

i- o 

o m o 
E ci 


o ex 

2 *-* 

* to 4J o 

> X in X O 

) — O 4-4 

: c-4J 

. C to 3 O 

) 3 — X 3 

. u x m x 


» — o in o 

ft) — 3 4-» 3 

— X E 3 id 

4-j E u in H 

•— o u o boss 

c in o x c o 

I/) 4 J uj x 
vc 4 -» — 

m — 4-j > 











o 

O 

> 



• /tfi m 

c 

X 

a 

_ 



X 

c 

> 

X 

X 

X 

4- 

c 

bfl 

> 


E 

a 

* 


3 

> 


bfl 


. 


O 

— 


'X 

X 

a 

X 

a > 

a 


a 

a 











XJ 

4-1 

X 



> x — 

ft) 

X 

X 

< 

*— 


m 

ID 

O 

O 

0 

o 

o 

o 

c 

*— 


ID 

w— 

ID 


O 

X 

h- 

c 

> 

60 

c 

X 



O 

m 

X 

< 

x x 

X 


X 

X 
















i_ 

c 



X 

x 

_ 


i_ 

O 



4- 

3 






X 

X 

X 


> 


cc 

— 

•— 

c 

•— 


4- 

• 


3 

3 

H- 

X ID 

X 


X 

fD 











o 


% 



X 

ft) 

in 



CO 

3 







m 


X 

a 

ID 


bO 

E 

ID 




CJ 

2 

X 

•— 

ID 


— 

CJ 


•1 

U 

CO 

C 















r— 

X 

ft) 



E 

x it) 


c- 

s 




4- 

> 


— i 


w 

bC 

a 

X 

3 


O 

a 

X 


V 

c 


o 

E 

x 

bfl 

(J 


00 

a 


a 


— 



a 












X 

o 

4-J 



o 

a xj 


X 

C 





a 

4- 

% 

m 


C 

3 


m 


X 

m 



b£ 

o 

ID 

*— 

a 

— 

ID 

CO 


X 

X 

X 

X 

X 

c x 

a 

• 

m 

m 











ft) 

X 

ft) 



m 

3 ft) 

X 


O 

> 

X 



X 

o 

X 

X 

O 

•— 

X 


3 


3 

m 



C 



*— 

m 

fD 


X 



3 

m 

a 

< 

— 

X 

■a 

3 

ID 













X 



m 

o x 

_ 

3 


O 

X 


a 

X 



<D 


X 

X 

X 




ID 

X 


•— 

X 

m 

o 

m 

2 

O 


bfl 

c 

■a 

•— 


CD 

o 

3 

a 


a 











4-J 

3 




ft) 




X 




X 


X 

> 

a 

O 

X 

m 

3 

F— 



m 

O 


X 

u 

ID 

4- 

fD 


CO 


C 

ID 

CJ 

X 


X 

X 

U 

X 

0 

X 











•— 

X 

X 



m 

X 

m 


03 

_ 

a 


X 

1 

O 

o 

3 

X 

m 

c 

O 



a 

— 

4- 


m 

3 





X 

a 

— 

X 

o 

X 

■a 


•a 

a 

fD 

X 

fD 












o 

c 



_ 

a c 

m 


U 








3 



— 

X 



X 

X 



•— 

X 

X 


a 

4- 


m 

bfl 

X 

o 


c 

> 

a "a 

X 

a 













o 

X 

ft) 



X 

x a 

a 

X 

0 


4- 



a 


—- 

ID 

X 



X 

3 


X 




>— 

X 

u 

a 

X 

O 

bfl 

3 

C 


X 

O 

fD 

X 

u a 

a 

•— 

X 












cz 








a 


m 



4- 

X 

ID 



a 

fD 

»— 

— 




3 

3 



m 

3 

X 

X 


C 


fD 

X 

3 

■a 


a 

ID X 

i 

u 

C 

fD 











ft) 


m 




X 3 

c 

X 


ft) 



0 

0) 


m 


X 


ID 

2 




O 

3 


> 

c 

m 

X 



— 


X 

a 




> 

— ID 

a 


o 

X 











E 

m 

c 



m 

a 

3 

ft) 



0) 




m 

m 

X 

ID 


3 


• 


C 

> 



»— 

•— 



C 

z 

X 

C 

u 

X 


o 

X 

a 

3 a 

X 

a 


<D 












— 

O 



m 

X 


X 

ft) 

X 

X 



m 

ID 

a 

o 

a 

m 

m 


(J 






X 


X 


•— 

0 

3 

ID 


X 

a 

h- 

a 


•— 


— 

X 

■a 











0 


— 



ft) 

x • 


a 

c 

u 

ft) 


X 

(D 


,— 

CM 


fD 

3 

X 

X 



m 

X 


E 


a 

a 


— 

r— 

O 

X 

O 

> 


— 

4- 

a u 


X 

f-4 



> 

O 

m 

m 

C 



O 


4-J 


XJ 



3 

/> 

m 

c 


3 

X 


J 

a 

m 

bC 


u 


C 

•— 

a 



fD 

u 


a 

c 

u 


— 

X 

u 


u 


o 


X 

o 

X 

c 

ID 

O 

a 





ft) 

o 

0 

0 

r* 



X 

U 

■ 



a c 

c 

a 

bO 

m 


• 

3 

X 

a 

C 



3 

3 

ID 



a 


X 


m 

ID 


ID 

UJ 

3 

c 


X 

> 

X 

• 

fD 


a 

ID 

X 


X 


X 

4-J 



X 

0 

X 

4-J 


E 

O 

3 

o 



o 

o 

bO 




m 

X 

fD 

»— 

— 

CO 

m 

3 


3 

% 


X 

E 

•— 


m 


> 

E 

c_ 

O 

•— 

— 

— 

a 

ID 

m 

X 

m 

o x 

U 


X 

X 


E 


4-J 


3 


E 



ft) 

4-J 

X 

E 


H 




X 

m 

_ 

0) 

a 


X 

c 

CD 

— 


m 


zi 


fD 

a 

2 


ID 


a 


>- 




2 

cz 


•“ 


■a 

X 


— 

o 



o 



o 



> 



X 

ft) 

4-J 

•— 



X X 

X 

a 

O 

c 

_ 

2 

O 

fD 

E 

ID 



2 

ID 


CO 



X 

m 


m 

C 

X 


H 




m 



a 


c 

X 


0 

X 

a 


m 

4- 


E 

% 


m 

m 


to 

X 

m 

4-J 



X 00 

u 

jo 


o 

CJ 



X 

a 

a 


X 

0 


X 

K> 



X 



•— 

o 


— 


a 

> 

X 


a 

a 

X 

<— 

fD 

x m 

3 

X 

■— 

X 


m 

o 

4- 

fU 

o 

X 


ft) 


o 

o 

c 




— o 

3 


m 


CO 

> 

a 

ID 

m 

E 

x 

u 

X 

3 

a 



m 




X 


X 


X 

X 

a 

m 

a 

E 

X 

fD 

0 

X 

X 3 

O 

E 

2 

a 


o 



c 

m 

m 

o 



X 

3 

■— 

X 


> 

3 

X 


— 

X 

< 


X 

X 

m 


o 

— 

m 

3 

X 

% 


ID 

a 

a 




m 


X 

X 

cz 

3 

m 

O 

x 

’ — 

X 

a 

< E 

> 

> 

m 

X 


m 




— 

X 

X 



3 

O 


O 


X 

X 

X 


X 

u 



X 


ID 

bfl 

m 

X 



m 

X 


a 

m 

m 

• 

a 

m 

fD 

> 

< 



X 

c 

m 



E 

3 

CJ 


m 


2 



m 



< 

c 

XJ 

r— 




X 

3 


X 

(J 

m 



3 


ft) 


a 

m 

C 

— 

2 

*— 

2 

— 

o 


X 

3 

c 

m 

X 

a 

4- 

fD 

CJ 

a 

> 

1- 

a 



U 

> 

o 

a 



a 



x 

m 

• 



it) 


O 


O 


o 

O 



% X 

c 

3 


X 

c 

c 

X 

X 

— 

— 

< 


•— 

o 

bO 

tn 


(D 


a 

a 

X 

X 


E 

• 

> 

c 


m 

m 

a 

— 

m 


X <— 

X 

a 

m 

c 



o 

O 

0 


X 

C 

X 


X 

o 

•— 

X 


X 

>— 



X 

X 

ft) 


fD 

a 

X 

a 


fD 

— 

X 

a 




X 

m 

X 


u 

ID 



<D 

ID 



m 

c 

•- 



o x 

fD 

x 

c 

o 


4- 

X 


X 

• 

O 

— 

ft) 


XJ 

X 

X 

3 



— 2 


X 

ft) 

m 


bfl 




X 


a 

2 

m 

X 

S 


ID 

c 


O 

X 

X 




X 



a 

a 

•— 

c 

a 

a 

ID 

X 

x 

a 



o 

X 

X 

E 

c 

3 


— 



4-J 

E 




x m 

m 

X 


c 




*3 

0) 



X 




T~ 


X 

ID 

co 

c 

O 

— 

a 

% 

a 


m 

• 

m 

X 

X 

X 

X 

X 

a_ 4-j 

X 


m 

m 



X 

ft) 

> 

o 

O 

X 



4- 


o 

O 

•• 

X 

O w 

ft) 

X 

X 


E 

X 

O 


X 

3 

• 

fD 


■— 


O 


<D 


O 


4- 

2 

> 

zz 

c 

3 

m 

X 

•— 

3 

E 

E 

X 

X 



bO 


a 


o 

ft) 

4-j 

m 



c 

bO 


O 


m 

X 

LD 

c 

a 



a 


o 

O 

o 

a 

ID 

a 



a 


X 

CM 


X 

* 


X 


m 

fD 

G 

♦— 

O 

a 

a 

u 


0 

> 



*3 — 


C 

X 

X 


c 



4J 

C 

3 

C 



m 

m 

4-» 

or 

ft) 

x m 

X 

CO 


a 

X 



c 

X 

4- 

LD 

C 

X 

— 

O 




C 

a 

3 

a 


X 

> 

X 

> 

X 

— 

a 

X 

o 

m 

■a 


o 

0 

•— 

x 

O 




_ 

bfl 

o 

o 

o 



o 

•— 

o 


Z) 


x x 

a 

Q 

X 

X 

4- 

X 





x 

< 


2 


% 


a 

2 

X 

O 

u 




3 


3 

— 

X 

m 



>— 

a 

— X 

m 

> 

•— 

c 


_ 

o 

o 

C 

3 


4- 

X 


4-J 



XJ 

Q 

J* 

o c 

X 


E 

i- 


_ 

o 

’e 

_ 

(D 

CD 


X 





J z 

O 

X 

> 



3 


O 

X 


ID 

3 

3 



— 

m 

<D E 


ID 

2 




X 

X 


X 

4-J 


c 


— 


c 

ft) 

UJ 

o 

U ft) 

a 

ft) 

a 




X 

X 

_ 




X 

fD 

X 

O 


X 

X 



> 

a 

c 

> 

X 

X 

— 

a 


—» 

X 

4- 

3 

3 

c > 


X 


X 


ft) 

4-J 


X 

4-J 

u 

4- 

0 


X 

m 

o 


O 


X 

X 


m 


X 

m 


a 

CJ 

a 

>■ 

•CM 

bO 

X 

a 

rH 




C 

c 

a 

m 

> 

60 


a 



bfl 


> 

0 

X 

ID 

C in 

m 


X 

3 




> 

c 

m 

3 

•— 

3 


2 

— 

o 

in 

o 

3 

a 

3 

a 

m 

• 

a 

fD 

m 

X 

CO 

X 

O 


— 

fD 

X 



a 


X 

0 

X 

c 


o 


X 

C 


C 

— 

— 



O 

•— 

— 

> 

> 

0 


o 


m 

o 


X 


m 


o 

X 

2 

bfl 

or 

X 

3 3 

X 

m 

ft) 

> 

X 



a 

< 

— 



E 

X 

in 

4- 


X 

E 

3 



a 

4- 

F— 

X 

c 

a 

a 

•— 


X 


o 


X 


— 

— 

> 


X 

3 


3 


4-J 

X 

o 


X 

H- 

4-J 

C 

a. 

• 

3 0 

<U 

ft) 

a; 

*— 

ft) 

X 


X 


3 


• 



•— 

0 


d) 

<D 

X 

X 

X 

in 

•— 

0 

3 

•— 

X 

X 

2 

X 

E 

a 

X 


— a 


— 

X 


• 

o 

3 


m 


m 

c 

X 




o 

•— 




X 

u 

X 

X 

X 

m 

a 



CT 

> 

ID 

ID 


60 



r~ 

X 


a 

3 



c 

3 

X 

2 

X 

0 

■a 

3) 

in 


»— 

•a x 

m 

(D 

E 

a 

> 

4- 


o 

o 


c 

ft) 

X 


X 


X 

4-1 

>- 

ft) 

a 

c 



a 

a 

3 


X 

H 


X 

X 

a 

X 

a 

m 


3 

X 

V 

m 

3 


x 

X 

X 

3 



r— 

a 

m 

3 


>— 

C 4-J 

•— 

U 

a 

m 

— 

o 


X 

X 

o 



0 


O 



4-* 

X 


2 a 


X 


a 

c 

•n 

X 

c 


X 


fD 

X 

a 

x. 

- 




a 

ID 

X 

a 

X 

u 

3 


i 

0 

— 

a 

in 


ZI 

•— 

0 

x 

•— 

m 

3 

a 

CO 

X 


X 

X 


x 

o 


•n 

• 

o 

o 

CO 

0 

0 >* 


a 

4- 

X 

a 


E 

fD 


X 

X 

X 

(D 

X 


co 


X 


E 

X 

3 

x 

a 

a 

O 

m 


X 

ID 

u 

(D 


-J 

2 

u 

t— 

X 

m 


x 


o 


0 

4-J 

o 

O 



ft) 

m 

XJ 

m 


X 

X 4-J 



— - 

X 

bfl. 


a 


• • 

— 

a 



X 

fD 

C 


a 

a 



0 

X 

> 

H 


•— 

3 



0 

m 

X 

O 




ID 

fD 

X 

fD 

1 

o 


O 


4-J 

3 

o 


E 

o 

0) 


ID 


m 

0) 



0 


o 

m 

v 

m 

2 

2 

— 

-V 

O 




c 

X 

X 

s 



a 




0 

m 

X 

X 

•— 

X 

VJ 


-a < 


E 

m 

O' 

•— 



c 



> 

i— 

X 



X 

— 

X 

if) 

o 

X 

X 

3 


a 



m 

X 

> 


O 

— 

X 


bfl 

o 


— 

.— 


m 

2 


2 

X 

a 

or 

X 

c 

bfl 

3 

■a 

— 


m 

c z: 


0 

— 

m 

X 

o 



o 

4- 

X 

ft) 

4-J 


ft) 

u 

4J 

u 

CO 

X 

X 





> 


fD 

a 

ID 

2 


CJ 

O 


C 

m 


E 

X 

m 

c 

O 

a 

O 

O 

x 


m 

X 

C 



2 

X 

— 

fD h- 

• 

X 

•a 

e— 

3 


% 


X 

O 


> 




4-j 

c 

4-J 

< 


— X 


c 

• 

a 

*— 

ft) 

m 

b— 

3 

O 

*— 

CO 

2 



r— 


X 

3 


0 


bfl 


m 

X 

o 


3 

•— 

O 



u 

X 


•a 

3 


< 

0 

X 

X 


4-J 


m 


4-j 


O 


o 

•— 

CO 

m 

— X 

(— 

■— 

a 

— 

in 



X 


X 

0 

< 


m 

X 

fD 


a 


X 


in 

c 


m 



O 

X 

X 

X 

X 


X 

h- 


a 

ID 



X 

ft) 

o 

c 




X 

c 


X 

3 

X 

2 



--1 



3 

X 

3 

m 

X 

E 

m 


4- 


X 


(D 



X 


l- 

X 


fD 


a 


ID 

X 

a 

m 


a 

X 

•— 


X LO 

m 


a 


3 

4-J 

4-J 

o 

o 


to 

o 



— 

m 

o 

m 

Q 


2 


x 


2 

O 

ft) 


a 

3 



a 

0 


0 


• 

a 



O 

(D 

X 


o 

> 



X 

— 

> 

X 

m 

2 


X h- 

3 

x 

X 

• 

3 


ft) 


m 

o 

c 

*~ 

X 


3 


4- 



> 

X 

3 

C 

0) 

a 



0 

m 

o 

ID 

UJ 

X 



•— 

m 

m 

X 

X 


3 


o 

• 

o 

4- 

a 

> 


— 

«— 

X 

ID 

m 


< o 

bfl 

3 

X 

a 

fD 


X 

4-j 

3 

X 



3 

• 

X 


4- 

o 

X 

ft) 

0 


o 

> 

in 

c 

a 


m 



x 

X 

X 

• 


X 

fD 


a 

• 

X 



m 

X 

•— 

E 

a 

a 


X 

0 

a 


• 

CJ z 

0 


— 


0 

O 

u 


ft) 

4-J 

o 


X 

O 

O 

•— 

m 

< 

2 

in 




in 

o 



fD 

X 


CD 


a 

m 

m 

ID 

a 

a 

•— 

c 

X 

a 

o 

— 

C- 

X 



c 

> 

E 

X 

X 

a 

X 


C 

X 


X 

X 

X 

c 

3 



ft) 

x 

s 

c 

X 

m 

X 

c 

or 


C 

X 

X 


ft) 

X 

X 

> 

m 

(D 

C 


C 

4- 

c 

fD 

0 

X 

> 

X 


in 

> 

X 

m 


0 

X 


— 

£ 

a 


fD 

m 

a 

% 

•— 

X 

O 

fD . 

O 

E 

o 

X 

X 


X 

4-j 

O 

ft) 


c 


o 

ID 

X 

O 4- 


O 

a 


X 

E 

fD 

_ 

> 

— 

> 

— 

4- 

o 



V 

fD 


fD 

c 

ID 


fD 

o 

' 


CJ 

X 


in 

c 


c 

— 

CL 

a 

•— 

■a 

X i 

CN 

> 

to 

XJ 

c 


o 


r— 

X 


o 


m 

z 

m 

— 4- 


3 

X 

X 

a 

a 

3 

X 



O 


3 


X 



X 

a 

bfl 

— 

_c 

a 

X 

X 


X 

co 

3- 

m 

a 


a 

X 

s • 

X 

2 

i 



m 

m 

3 

o 

c 


X 

o 

X 

m 

3 


UJ 

O 

x 0 


X 

> 

•— 


in 



X 


T~ 


X 

X 

a 

C 

(D 


m 

ID 





X 


o 

X 

0 

3 

ID 

> 

fD 

m 

c 

-3 a 

a 


a 

a, 

X 


m 

c 

o 


o 

3 

ft) 

3 

— 


4-J 

o 

'J 

— 

U 

% 

X 

X 

3 


m 

X 

a 

a 

m 

w 

a 


o 

3 

a 

X 

3 

m 


X 


•— 




(D 


X 

a 

m 

a 

X 


a 


X 

X 

X 

o 

o 



4- 

4-J 

to 

3 

4-J 

O 

3 

4-J 


X 


m 

3 — 

X 

in 


O 

a 

ft) 

a 


N 

c 


u 

X 

3 

m 

a 

ID 

O 

fD 

E 

O 

3 

X 

c 

X 


V 

a 


X 

— 


ID 

a 

m 

%x 

X 

a 


x 

X 

m 









O 

3 


XJ 


O 

X CO 

a 

c 



X 



X 


o 

a 

fD 

3 

X 


2 

X 

> 

m 

<D 

4- 

0 


0 

o 

c 


X 

X 

m 

■a 

c 

"3 

X 

m 

Q (D 

0 




■— 

x 









3 

O 

o 



O 

X o 

X 

__ 

0) 

m 

a 

> 

X 


c 


> 

3 

a 

X 

m 

X 



— 

X 


> 

a 


X 

0 

X 

X 

3 



fD 


x 

fD 

X X 

4- 

X 

x 

c 

2 












c 

bfl 



m 

a 


X 


3 

— 

0) 

4- 

bO 

X 

— 

m 

c 

m 

a 

a 

a 

C 

X 

bfl 

c 


> 

X 



!D 


3 


a 




m 

ZZ 

0) 

E 

C 

— 

m 











XJ 

o 

z 


o 

C X 

X 

X 

ft) 

E 


X 

X 

O 

O 

o 

X 


— 

c 

u 

X 

X 

a 


O 

2 


ID 

u 

— 

X 

X 


X 

a 

X 

i_ 

bfl 

z 

•— 

CO 

X 

a 

a 



— 









4-J 

— 

> 

— 



— u 

C 


X 

0) 


O 



a 

3 

•— 



— 

c 


fD 



X 

O 

4- 

X 

3 


in 

X 

a 

3 

■— 

X 

0 

C 

0 

■a 



m 

x 

m 

x 

i—i 









— 

3 

X 

bfl 


i— 

X 

3 

f— 


X 

X 

a 

< 


a 

X 

X 

> 

c 


a 


U 

~7 

bfl 

3 

X 

— 


X 

in 

a 


m 

0 

W 


u_ 

•— 



' O 

m 

m 

Y- 

— 

a 

o 











o 

c 




o 

ft) 


6fl 

u 

X 


m 

X 

X 

a 

X 

0) 


3 

X 



c 




F— 

4-J 

fD 

-0 

X 

3 


c 

X 


-3 

c 


Q X 

0 

fD 


a 

m 











c 

XJ 

a 



a 3 

a 

> 

a 

o 


X 


m 


m 

3 

a 


ex 

X 

a 

X 



a 

X 


F— 

m 


bO 

U 


a 

— 

c 


C 

X 

a 

X E 

X 

m 


X 












3 

c 

x 



x m 

c 

c 


X 

X 

0 


(D 

a 

c 

a 

> 

m 

o 

a 

m 

c 


a 

X 

c 


— 

c 

X 

3 

3 


X 

m 

fD 


•— 

3 

X 

X > 

a 

•— 


<D 

O 











X 


a 



1- w 

a 


X 

3 

2 

U 


3 

X 

— 

X 

a 

fD 

11 

m 

3 



X 

X 

fD 


2 

— 

O 

m 

m 


x - 

2 


4- 

X 

X 

x m 

N 

■a 



X 

Page 

32 






Dr 

. Dobb’s Journal 

of Comput 

er 

Calisthenics & < 

Orthodontia, 

Box 

E, 

, Menlo 

i Park, 

CA 94025 







February, 

1977 


102 


3 v U 0 —I 

T 3 3 L ca 

1 C L (Ch 

l 03 3 z 

J W 3 

C 1/1 

!*■> — om¬ 
en Q. O 
: oo o >* 

JlA *J u I/I 


2 c 4 

- T 0-0 

J in — -O 

- in ro 3 03 

: 0 u 

: 1. in 3 jj 

S 3 0 4 2 

'T 3 WWW 
< 0 Z 3 in 
U ^ 0 c % 
: o — W) 

c 

r 0 0 
) — 4 0 3 
4 2 0 2 in 
> (Dlh- 


• o — c x o *-* » 

1 -m o 0 «-» 3 < 

3 — 4 2 

J in *J O O l 

) 3 W o 4 - — < 

) C E 3 0 bfl x 1 
. 0 0 i_ O ' 

1 4 4 3 0 *— E 

0 bfl in 2 0 t 

a o c h- — 4 * 

NO*- X to I 

a -1 o i 


W . *J (0 • 

> 4 0 C 3 4 

0-3 • 0 I 

» > 0 -O — 3 X 

3 0 7 0 

0 — V 0 -C ' 

. 3 4 -O tn in 

1 in 0 E 02 0 1 

. 4 C 0 U 3 *-> 
— 0 W C W 0 

> 4 - bfl w 0 4 1 

I 0 3 0 1 

in cr 4 c 1 

I > 0 — 00 o j 

> E -O S 3 in 4 - bfl 4 


0 3 0 > 
X VIXO 
w 0 4 J 2 


4- C -C • 

o - 

O N 

3 "OS 
C C S3 0 
O — C 0 > 
OOO 

4-» 0 0 2 

3 0 0*- 

0 - in o in 
0 X 3 0 

X 0 0 h- 
0 3 3 CO 3 
10 D 0 
EZ-D 
4- a o 

o o 0 3 o 
-*.0 3 0 
O 2 3 
-O 0 3 
0 — — % 0 
0 3 0-0 

a O *- 
in 0 2 o •— 

2 in e — 

3 — 

0 > 3 5 

2 00 

3 bo 2 in in 
c 3 c 

— X O 
bCLWW- 

c 0 in o ■*-* 

— 3 0 c u 

in l 0 3 

0 O — m 4 

0 — 4-* 

i_ 3 in 
O 0 < H C 
C 3 -I — 

— in 2 


< < co co 

iX 2 2 CO 2 

I 0 a co uj uj 

h- < O CL X CO 

_ Q_ U_ UJ O CO 

« ♦ « 3 > I- < 

(J UJ >- UJ — ^ 

CL * ZZ -10 U -j to is — 

_ _I C — Z Cl D 

UJ * K— 0 0-10 O 

00 2 — O — UJ Lti 

_i « — < < k z a: h wi 

ja <iui u z h 

CO * <3 COQ-O—j D 0 

qo uj 2 cu co a: W 0 

O 2 * UJ CL h O H 2 »— o 

h- CL — O UJ CO >- 

00 uj * z cl a: co z co z 

__ h- 2 xO co — o 

o co * cl o >- co < o — 

Q- UJ >- O' CO O 0 H 

00 CO * ~3 _ J O UJ 00 Zh3 

co co • —J 2 O 1 —OO 

< * UJ O Uj < LU o CO h 0 0 

o o z2a:-i <-ix 

to* 3 z < C < ex UJ UJ 

q< a — o uj co 

— * o o hh0O Z UJ 

q; 0 H CLZXZ UJ tO I 
Q * Q- O CO O — H < O — H 

**************** 





d 


d 




O 

• 

LU 




a. 

< 

2 





UJ 

CD 

0 



i— 

z z 

1 _ 

l/) z 



2 


LU 


• 

CL 

CL 

H 

CO 

CD d 

a: 

0 

z 

d 2 

CO 

0 2 

UJ 

H 

— 

< 0 

< 

O 

2 

C£ co 


x ca 

CO 

CO 

CO 

G 

< 

0 

— 

2 CO 


0 c 

H 

H 

a 

CO UJ 

LU 

< 1 - 

< 

— 2 


d x 

co 


a 

— CL 

i_ 

LU O 

CO 

I- bX 


O \~ 

c 

> h- 

< 

CL O 

Q 

CO 2 

CL 


to 

O UJ >- cc. 

< O 

LL 

1/3 3 

— 

CL X CL < 



Z CO 

0 

0 c 0 

UJ — 

I- 


0 

h- 

21 CD 

CL — 

— LU LU 

2 

XUJV 

>- l_J 

1 — 1/3 2 

a. 

1 2: cu 

1 - CO 

O Z K 

z 

2 bL 

< 

2 UJ 

— 

1 - O 

C 

CL CO LL 


O J— 

h- 

1 - 0 

0 

Z 


1/3 >- 

d 

CL — 

UJ 2 

Z CD Z 

< 

O 

z 0 

— O 

0 

U- LU 

— at 

O — 

CD 

2 

1 - 0 


>00000 
I H M KU Ul 


0000 
10 N 00 01 


3 0 0 0 0 0 1 


33 003 3 

C fCf uj Z O' UJ O' UJ 

ujuj z o •— cij z uj z 

— uj »- — — 

U_ CO — u- U- 

UJ 3 O' CO UJ UJ UJ 

3 Ow 2 >- Q CL. q 

COO. LU >- 

* CL CO **** 1 L**H** 

00000 00000000 

in^NCOOlOHN 

CNjtVICMCMCSI NNN NNlOKim 

0000000000000 


00000000000000000000000000000000 

00000000000000000000000000000000 


O E N 0 
J 0 1/1 X ■ 


0 bfl 

u o 0 
o *- *- *-* 
— a 0 0 


0 3 

. 2 > 1 

. 00—0 


o u 4 - 0 2 in 

00 — — JZ 

XI 3 4-* bO 

2 5 0 - c 

U E 2 

3 <n o > 


3 2 

• 0 o m E 


■ > 4 - bo 2 •• 

I — coil 

) — — O ( 

0 O'- CO' 

I 3 2 3 CM 

in 4-1 e 

13 0 

in o - 

— 0 in *-> ; 

I 4-» 0 

» — in 1 

J I- — a I 

I 2 3 3 1 


3 JZ 2 in 

— U U SO 

U_ --C 

— 2 2 0 

222 

0 3 > 

b02 0 »- 
CO o 
0 j in E 
2 uj in 0 
uca 0 E 


0 3 3 0 
o c 0 *-• 
o — c 
0 0 0 — 
Q. bO 

3 0 c 

0 Q. 0 

0 3 

0 2 0 *-* 


) bo in 

■ c — % 0 

L — L. 

! 3 0 c 

I-12 0 

: u — 32 
) 2 LL 0 2 
— a: 

2 in 

. 0 a. 

1 i_ 3 o 

.00 .3 

2 am 

3 o 

3 3 >* 

• c lu in — 

* 01- 2 . 

o E <u 

z > 0 g, 

u_ 2 in X 
u- . E 0 
01 0 m y 
u-ll in— ^ 

. 1 0 in 3 X 
) 00 0 73 

: o m 0 

1 O Q — 2 2 : 

| 0 u> 3 3 “ 


3 3 0 

0 (J 

4-0 0 

— o a 

• — in 

0 1 

o 

0 0 in — 

in —20 

— 3 co 

— < 


> *- — 0 

2 0 "O "O 
3 3 0 
c in 0 o 


3 2 *■* M 
0 L. c 

0 00 

U 0 0 — 


>, 0 in 2 

— 3 

3 o 

O O 0 

0 — 

4 2 

— ci 0 in 

3 O -u* — 

0 0 
C 0 "O — 
0 2 0 2 
3 3 0 0 
3 3 

O Q. 

bfl 4- O 0 
o -o 
0 O 
in 20 


— 000 

bfl 2 0 2 

O 3 o 3 

— 0 

x 2 C 

4 — 

E O ' 

0 > 2 > 

4 0 3 4 

bo 5 a 3 

000c 

4 2 S3 0 •• 

a in 

c 2 5 

.— 00 

0 bo 0 — 

2 C x LU — 

3 — 0 O 

3 4 4 - 

W 0 • 

4 - — 2 4 in 

o — 00 

3 3 2 0 

3 0 0 E 4 

in 3 c 0 0 
O c — in 

El 0 0 in in 
E — 0 0 
E Q. in 3 
O x — >* 
u a 3 2 


3 m in 

— 3 0 • 

2 — — 2 

2 4 0 " 
C 0 *-* 

0 3 3 0 

— c m E ■ 

3 0 — 

O 3 bfl 0 C 

O C 0 

4 0 4 4 C 

3 Q.- O v 

in 0 4- 

C S 3 0 


0 0 C 4 

2 3<y — 

3 m 4 0 1 

— 0 tfl < 

- bo a 0 .. 

o 0 E * 
z 4 o c 1 

< 00 : 

- 0 — 1 

3 o -*-» 4 

o 0 o t 

3 — 3 1 

0 0 4 •• 
J<£ 3 13 3 

in — m i 
0 o 0 c j 


c c 

•• 0 0 • 
in 2 in 

2 3 QJ 3 

O -- 

— in 2 2 

— — 0 

O 33 
4-3 C 
C 0 0 

in 0 3 3 

0 o c 

X O 0 
S 3 cc 2 

0 j- a 0 
in h o S3 

3 ro 

c *- 
in in 0 0 

— in 3 

0 in 
44- — 
0 3 o bO 

— 3 aj 

2 0 4 

0 0 


February, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 33 


103 





: cc x 

■ UJ UJ 


CL X CL 


C3U I HCL 


< h- : 
c_ x 2 c 
co < to 


■l-< 

: uj or lu < 
. d cl oc < 


- >- 
'h H i 
< M I t 


< 

.K 


O 

C 


> > — M 

o o z z z 

z z — < o 


— M X > 

:zzdo 

■<OQ.Z 


o 

o 

* * 


0000 

O H CM fO 

0000 


o o 

-3- in 

o o 


OOO 
o N M 
OOO 


: uj co 
cc — 


. x cc 
o 

* UJ 
1 CL > 
l Z < 
■ < CO 


o 

I- 

< 


00 

0 


X o 

o 

H- H- 
< X 
2 : UJ 

z 

c 

z o 


cc c~ 


O K 

X — O Z 

h-Z < co — 

UJ < UJ • O 

d X >- • O- 


— < < 

X O CL 


) < Z) o < a. o_ 

% C ' x — 1 — 1 

. X—JCOQO—lu. <U3 o D m D 

X 

< > x < a. > — > o cc a. 

IZOZQZMOQOZZZ 
: < Z-iooZ<Z 3 — oin 


a. uj 
>- a. 
uj h > 
a. h- 

>- UJ 
K Q CC 
O h- 
O O CO 
I- Z 
a. — 
h* o 
z uj 
— > 

O UJ < 

X d X 


X < < ( 

z o k : 
-1 co t 


o 

K 


O I- 
< 
CL 

o o 


X 

< >- 

< cl o _i — 
j — z o -j z Q. 
j x < o 00 


< < 0 cl < — H 
X < CL Z t- > 3 
uj c < - w z o 

CO 


Z "0 

o 


c 

- 1 

X x 


o 

z o 
o cc 


M M 

-3 CL 


z z 

o o 

h- > 

CO O 

a z 


— * c 

a m f 
o . 
< • 


< o ■ 
% % 
uj a : 


a. 

z 

o 


■ Q Q 
: < < 
1 c c 


< X 

a. 

>- ^ 

• • cc 

I-1 

Z X 
UJ 

UJ 

uj cl 
X o 

CO h- 
1 Q Q < CO 
K uj 
CL - 

QUO. 

< o z x 

c a. o v: 


I- < d 

Z <1- UJ 

< a < *o: 

cc uj \< o q; a uj % 

UJZOO oh- xOOZKO 

CLOUJliJCCUJ<aClOOtOUJ 

ozoLacxcLOx<<zcLcL 

z 

UJHHHHCNCNfOfOfAHHH 


OHNfO^intON00O)<CQ 

HI III III 111 III III 111 til 111 til Ul III 

ClQ_Q_Q_Q_Q-ClCl_Q.Q-Q_Q_ 

hhhhhhhhl-hhH 


IhD Q.Q.Q.Q.Q.Q.Q.CLQ.CLQ.Q. 

f-uja zzzzzzzzzzzz 

XttUJ 333333300303 


* * * 


0000000000 

ciOHMro^tinio^co 

OHHHHHHHHH 


CM O X 

C2) O 

* * * * u 

•OOOOOOOOOOOOOOOOOOOO OO OOO 
OHNfAJin^NCOOlOHHN^^miDMO CDO H CSJ fA 
I CMCMCMCMCMCMCMCMCMCMmmOOO OOOO O O rH rH tH rH 
I HHHHHHHHHHHHOOO OOOO OOOOOO 


< 
X K 
CL CO 


OOOOOOO 

j* in 10 r** co ct> o 
»H tH tH »H tH rH CM 
OOOOOOO 


X * 

OOOOOOOOOOOOOOOO 

H(MrA^inU3NCO(J|OHNK>J^lO 

CMCMCMCMCMcMCMCsJCMmmrnmmmfn 

OOOOOOOOOOOOOOOO 


. 0 c- 
. cm 00 


1 o cm in o 
i uj a uj id 


mmmmmmmmm 


tH < 

O O CO 

IfMjMMOlClOIClUC 
> J J J 

■ r-i r—i H i-H H H H tH tH H 

mmmmmmmmmmi 


:j-um<Q<tT>oucMj-m m < cm 

1 Ccooocoor^-CJJ'QOO 00 m 

1 HNmJiniOCl<UOOrl4JJJJin(fl 

• ininminininininininioiocooiDiocococo 

I rlHHHHHrlHHHHHHrIHrHrlHH 

1 mmmmmmmmmmmmmmmmmmm 


m m m m m m m r 

o 10 < t-h < m c_> 00 ( 

o r-~ cn < < x X O ( 

U- 10 H <D o> at H 
inHNHHHO 

cn << <<CQQOHNfO. 

ID UHO COlfilOlflrsNNNfsNNNNNNNNNOOOOOOOOOOOtOlOJ 

1 —I «—ItH HHHHHHHHHHHHrlHHrlHHrlHrlHHHrlH 

m mm mmmmmmmmmmmmmmmmmmmmmmmmmm 


X a co 

co uj uj co 


cc 


cc 


CC 


UJ 



z 

CC 

X 


X 


T~ 

z 


X 


r-N 




>- 














\— 


CC 











X 









0 


CC 

• 


O 

c 

— 


CC 


0 

X 


X 


X 



CO C 

< 
















X 











K 









CO 


C. 

>- 


— 

h- 

X 


CL 


— 



u_ 


X 



K K 

X 
















X 


T~ 









z 









— 


c. 

CC 


H CO 



CL 


h- 

~"C 


3 


CO 



— Z 

cc 














O 


< 


X 









— 









> 


< 

0 

1 

< 


u 


< 

1 

< 



CC 


3 



CC — 

X 














H 




< 


>- 







C 









cc 



z. 


O 

CO 

0 




c_> 

c 








> 















CC 

X 

CL 

X 


X 



• 

X 



CL 









UJ 


UJ 

X 

tH 

c 

— 



X t- 

tH 

0 

X 

— 

Z 


u 



00 X 

c 













h— 

X 

CL 

z 

X 

— 


cc 



X 

DC 












D. 


z 

z 


X 


00 


X CL 


X 

CL 

X 

cc 


— 



X 














z 

X 

X 

X 

X 

X 

X 

CL Z 



X 

\ 


CC 

X 









X 


K 


UJ 


X 

00 


h— <t X 


C 

X < 


w 



X — 

K 



cc 










< 

< 

< n- 


< 


z 

X X 



iZ x 

O 


X 

z 









CO 



z 

d 

Ul 

X 

X 


k a 

X 

h- 

X 

X 





X u 

z 



0 







o~ 



2 


h- 

1 - 


c 

— 

CL X 



Z X 

• 


1 - 

— 








z 



co 

— 

< 

~T~ 

— 

CL 


00 00 < 

X 

00 

X 



X 



— 

X 



u. 



* 

* 

* 


X 




0 

1 - x 

X 

X 

V— 

_ 1 

c_ X 



_ jr 

\CC 


z 

X 








0 

c 


z 


X 

K 

X 

c 


z 


K 



>- 


X 



X < 

> 






11 

II 

II 


X 


X 

3 

h- 

X — 

X 

X 



0 < 



1- X 

x h- 


— 










h- 


— 

K 

0 



CL 


— c 

O 


00 

2 

cc 


cc 




X 



z 



II 

II 

II 


X 


X 

C 


< 3 


_ 

CC 

rH 

H X 

< 

X 

Z X 

Z X 


c 

LL 








00 



< 


< 

X 

t— 

< 


< K < 

% 

— 

2 

< 


< 

X 


. x 

cc 



0 



11 

II 

II 


< 


X 

>- 

X 

K X 

1 - 

X 

CL 


X — 


X 

— X 

— z 


a. 

O 








0 

cc 


h- 

— 

Q_ 

in 

z 



H 

Q- 

CM 


> 

z 


h- 

X 


X z 

X 



— 

O 


11 

z 

II 


K 


< 


< 

X 

• 


X 

X 

X 

X 

x c < 

X — 











00 

CL 


z 

X 


4- 

X 

LL 


z 00 


■f 

X 

5 

— 



cc 


• — 




K 

— 


11 

c 

II 




h- 

X 


d 

z 

X 

< 

X 

X 

_ 

X 

CL X 



H 

H 








X 

Cl 


c 

CO 


UJ 

o: 

O 


0 — 


X 

X 


cc 


X 

< 


— K 

0 



< 

cz 


11 

— 

II 


T~ 



— 

z 

x z 

c 

0 


02 

— u_ 


< 


X h- 


3 

CL 









< 


CJ> 


z 

X 

cl 



0 

X 

X 

X 

O 



c 

J— 


'— — 

1 — 



t— 

c 


11 

1 - 

II 

2 

>- 


21 



X 2 — 

X 


I- 

T 

K O 

X 

0 

x 0 

Z X 


CL 

< 






X 


X 




UJ 

O 

— 

X 

00 


>- 

O 

cc 

X 

X 

u 


cc 



cc 




z 

X 


11 

z 

II 

00 

CO 


>- 

X 

3 

— XX 


X 

cc 

X 


y 


X 

1- X 


z 

y— 






X 


_ 

z 


X 

0 

Ul 

u 

(_> 

00 


X x 

X 

cc 


X O 


T~ 

X 


00 2 

% • 



X 



11 

0 

II 

CO 



CO 

cc 

X 

u xx 

0 

z 

< 

X 

3 X 

_ 

X 

X 

z 


— 

X 





CC 

X 



cc 


0 


h- 



X 


ucah 


CL 

X 



>- 

0 


CO 

z < 



z 

z 


11 

X 

II 


X 


0 

X 



00 

X 

h- 

X 


1 - 

CD Z CD 

X 






K 

X 

0 



X 

X 


— 

z 


>- 

u 

CC 


— Z 


>- 

X 

— 

cc 


CO 

cc 


X X 

2 K 



3 

< 


11 

X 

II 

X 

X 


1 - 

T 


x xx 



X 

< 

0 - — 

3 


1 — 

K K 


X 

Q 

X 


Z 

T 

c 

z 


X 

H 


X 

< 


X 

O 

CL 


X X 

• 

X 

t— 


Q 



T~ 


cc 0 

0 < 



C_) 

cc 


11 

X 

II 

< 

— 


K — 


X 

< < X 

% 

K 

II 

X 

O X 

C 

>- 

— 0 

z < 


> 

< 

> 


_ 

y— 

< 

— 


X 

UJ 


y 

0 

C_) 

X 


c 


2 co 

0 

X 

X 

CL C 


cc 

>- 


X — 

X X 



c 

3 


11 


II 

X 

3 


X z 

z 

X 

0 X — 

0 

X 

X 

_ 

C 

DC 

< 

2 H- 



< 

C 

< 


cc 

• 

• 



< 

cc 




0 

< 

K 

< 


co 0 

< 


z 

< 


c 

CO 


X X 




X 

c 


n 

z 

II 

cc 

X 


e: — 

0 

t— 

X CC X 

z 

X 

z 

X 

—’ < 




CL X 


X 

X 

X 


Q. 



4 


1 - 



z 

Ul 

c: 

z 

cc 



z < cc 

X 

< 

< 



u 



< 3 

h- cc 




cc 


11 

< 

II 













X 



CL X 














c 

-J 

CL 

K 

< 



0 co 

X 

K 

CC 

T~ 







3 O 



0 

X 


II 

cc 

II 





K 

5~ 






K 



Z C2 












y 



— 

— 


C_J 

K 



— _ 


<_5 

< 

Z 



z 

z 


X )— 

X 



z 



11 


II 





3 

>• 



CM 



Z 

- 7 - 

X <x — 

x 2 



CM 








O 

X 



u 

u 

< 

co 

X 


y— a 

X 

< 

X 

c 

z 


0 

CM 


0 < 

CO 00 



— 

X 


11 

0 

II 



*~ 

X 

O 

X 


a 

+ 



z — 

p 


CL 1— 

y 



+ 

0 







CL 

x 


< 


0 



in 


< 

0 



0 

00 


— 

O 


< 

z 



>- 

z 


11 

cc 

II 



>- 

1 — 

X 


X 

K 

X 

X 

X 

< CL 


_ 

d d 

_ x 



X 

< 







X 

r-i 


0 

Ul 


CO 

X 

0 


O x 


CO 

X 


X 



O 


X r-N 

c < 

X 


z 

< 


11 

X 

II 



CO 

T~ 

X 

> 

X z 

X 

X 

3 

z 

X 0. 

K 


O 3 

K X 



X 

z 


X 


X 

CO 



O 


0 

X 

CO 

— 

X 

00 


0 x co 

— 

x 

X 

00 


< 

O 


co 

1 - cc 

0 


< 



11 


II 

iH 


0 

>- 

X 

X 

— rH 0 

c 

— 

CL 

— 

_ 

< 

v 

CL CL 

3 Z 



_ 

— 


X 

0 

' 0 


X 

J* 


X 

y— 

cc 


1 - 

m 


XhCL 


K 

z 

m 


0 

O 


x co 

0 

m 


X 

CO 


11 

X 

II 

1 

-3- 

z 

< CO 


DC 

LL Z 1 CO 


X 

CC 

X 

C c 


X 

0 - h- 

O CL 


X 

LL 

X 

z 

< 

X 

< X 


X 





Ul 

< 





X 

< 


K 



0 



X X 

00 0 




z 


11 

0 

II 





\— 

X 






H 

P 


X 

CL 3 











X 



< 

UJ 

CO 

X 

X 



< X CO 

X 

X 




X 



1 - cc 

— cc 



O 

0 


II 


II 





cc 


X 


X 

O 

X 



_ 

>- 2 

CD \— 


X 

Q 

0 



X 


X 


< 

X 



cc 

X 

cc 

0 

X 


CL X 

cc 

O 

X Z 



3 


CL 

X 

3 


<_> 

— 


II 

H 

II 


— 


< < 

< 

X 

XX — 


X 

X 

X 

Q. X 

X 

h- 


3 X 


X 

X 

X 

CL 

> 

X 

> X 


X 

a 


UJ 

Ul 


< 

— 

a 


X X 


< 

— 

00 cr 


X 

a 


X 0 

> 

a 


CJ 

K 


11 

CC 

II 

z 

z 

M 

cc \— 

K 

X 

X z z z 

NJ 

z 

X 

< 

21 Z 

1 

3 

< 

X CL 


3 

z 

z 

O 

0 

< 

0 < 



UJ 


z 

x 

Ul 


z 

X 


Z X 

X 


X 

z 

X 


z 

X 


z < 

cc cc 

X 


< 

< 


11 

< 

II 

— 

< 

3 

X 00 

00 

X 

X-< 

3 

co 

X 

0 

“2 _ 

1- 

0 

y 



CL 

X 

00 

CL 

~~ 

C2> 

T~ 

0 


H 



— 

2 

h— 

co 

3 



— ZL 

h- 

CO 

3 




— 



— 

0 x 




X 


11 

K 

II 






iL 






h- 

1 

cc 

z < 

X Z 














u 


0 

— 




X 

0 

— 


3 



u_ 

cc 


U X 

jr ^ 

X 


X 

X 


11 

CO 

II 

K 




A 


T~ 



CL 

z 

3 

c 

CQ 

0 

— X 











_ 

cc 


UJ 

u_ 

z 

T 

K 

X 


X X 

z 

X 

K 

O u 


X 

K 


x x 

X H- 

— 


X 

X 


11 

II 

II 

cc 




1 

O 

>- 



h- 

< 

O 

1 

2 

CL O 

X X 


X 









CL 

> 


a 

0 


K 

< 

X 


0 0 

w 

K 

< 

>- 3 


Q 

Z 


X K 

Z O 

X 


CO 

0 


11 

II 

II 

< 




1 

K 

X 



X 

X 

CL 


X 

X 1— 

1- h- 


z 









CL 

o_ 







— 







cc 



>- 




— 





11 

II 

II 

h- 




1 


0 



0 

















CO 

* 

« 

* 

* 

* 

* 

X 

* 

* * 

* 

* 

* 

* 

cc 

* 

■k 

CO 

« 

* * 

* * 

— 

« 

* 

* 

* 

* 

* 

* 

00 




* 

* 





X 

* * 

* 

* 

■k * 

■k ¥ 

■k 

X 








■k 

* 

0 

0 

0 

0 

0 

O 

O 

0 

0 

0 0 

0 

0 

O 

0 

0 

0 

O 

0 

0 

0 0 

O O 

0 

0 

0 

0 

0 

0 

O 

0 

0 

0 

O 

0 0 

O 

0 

OOOO 

O 

0 

0 

0 

OOO 

0 

0 

0 0 

0 O 

0 

0 

0 

0 

O 

0 

O 

O 

0 

0 

O 

m 

J- 

in 

10 


00 

CD 

0 

rH 

cm m 

X 

in 

O 

r^. 

CO 

cn 

O 

rH 

CM 

m jJ- 

in 0 


00 

0 

0 

rH 

CM 

m 

J* 

in 

ID 

r*s. 

00 CD 

O 

tH 

pm m Lt x 

ID 


CO 

CD 

O tH CM 

m 


X CO 

c* 00 

CD 

0 

tH 

CM 

m 

Lt 

X 

ID 


00 

CD 

m 

m m 

m 

m 

m 

m 

X 

X 

x- X 

X 

X 

X 

X 

X 

X 

in 

in 

in in in 

in in 

in 

in 

in 

10 

ID 

ID 

ID 

ID 

ID 

ID 

ID 

to ID 

f'* 

r>» 

r-*. r^. 



r-'. 


00 CO 00 

co 

00 

00 00 

00 00 

00 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

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 

O 

O 

O 

O 

0 

O O 

O 

0 

OOOO 

0 

0 

0 

0 

OOO 

0 

0 

0 0 

O 0 

0 

O 

O 

0 

0 

O 

O 

O 

O 

O 

O 
































rH 

O 



CO 

rH 

co 

00 

rH 

rH 







OO 

X 



CM 


CM 


































m 

O 



rn 

m 

m 

m 

m 

m 







m 

m 



m 


m 
































X 

j r 

cc 

CM 



X X 0 

CD 


00 

CM 

O 








rH 



rH 


X 
































X 

0 

0 

O 



0 XX 

rH 

0 

ID 

CM 

tH 







0 

X 



X 


X 
































cc 

ID 

< 

X CM 



< m x id 

< 

CM 

< 

X 

m 






X 

< 

CM 

rH 

O 

0 

O O 
































X 

X 

0 

< m 



CM CM X X 

O 

CM 

CM 

0 

O 






X 

CM 

CM 

X 

r>. 

0 

c* 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 

O 

O 

0 

CM 


r^~ co 

X 

X 

X X X rH 

m 

ID 

CD 

0 

U. CM CM 

CM 

CM 

CM CM 

CM CM 

CM 

CM 

m 

ID 

CD 


co 

X 

X 

CM CM 

0 

0 0 

0 

0 

0 

0 

0 

O 

0 0 

0 

0 

0 

0 0 

0 

0 

0 

OOO 

0 0 

0 

0 

0 

0 

O 

O 

O 

O 

0 

O 

0 

0 0 

O 

0 

O O O rH 

rH 

rH 

rH 

rH 

rH CM CM 

CM 

CM 

CM CM 

CM CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

m 

m 

tH 

rH 

H 

rH 

rH 

r-H 

I - 1 

rH 

rH 

rH rH 

rH 

rH 

rH 

rH 

rH 

rH 

iH 

iH 

rH 

rH rH 

rH iH 

tH 

iH 

iH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH rH 

rH 

rH 

tH tH rH iH 

rH 

rH 

rH 

rH 

rH iH tH 

rH 

rH 

rH rH 

tH rH 

tH 

rH 

tH 

rH 

rH 

rH 

rH 

r-H 

tH 

tH 

rH 

m 

m m 

m 

m 

m 

m 

m 

m 

m m 

m 

m 

m 

m 

m 

m 

m 

m 

m rn fT» 

m m 

m 

m 

m 

m 

m m 

m 

m 

m 

m 

m 

m m 

m 

m 

m m m m 

m 

m 

m 

m 

m m m 

m 

m 

m m 

m m 

m 

m 

m 

m 

m 

m 

m 

m 

m 

m 

m 


Pa 9 e 34 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


104 



'-x LU X 

uj —J x 

—I co x 



UJ 



LL 


to 






< 

CO < 

o 








O 



CC 


< 


1 - 





in 





C 

o 

< LU 1 - 









2 



N. 


o 


C 



X 







—J 

_J 

h- -1 

% 



1 — 

h- 


-J 

UJ 

< 



o 


-J 


X 



LU 


LL 

cc 


1 - 


X 

UJ 

co z: 

LL 



m 

— 


—J 

c 

cc 





LU 


a 



*T* 


_ 

< 


WCC h 


_l 

cc g 

CD < C 

LL 



cc 



< 

O- 

UJ 



% 


CC 








T 


cc < — 


w 

2 

2 H- CC 

O 



— 

1 — 


o 

o o 

UJ Gu 


2 

LU 




CD 



H- 


_ 1 

o 

cc 

— X 



x< 

— LL 


X X 


LL 

! 



— 

G O 


LU C 

o 


% 


2 

LU 


2 


CO 


<U.UH 


c 

LU CL 

to 2 

LL 

LU — 


LU 

Q. 


cc 

CL 

O 


C. — 

O 


LU 


_ 

2 




1 -' 

K 

X 

X 


2 

G LU X — LU 

— 

X LL 

UJ 

h- C. 

1 - 


o 

O CC 

O h- 

zc 

O h- 

o 


G 


CO 

— 


CC 



co 

UI-hCL 


< 

o o. 

X 


LU 

h- 

>- 2 

X 



O 

T~ 

cc 

O — 



C 


C 

—i 


Q. 


CC 

cc 


— CO h- 


CC 

o o 

1 — LL < 

x 2 

m cc 

>- 

CO CM 

o 


CL 

O 

b- O — 

X 

c 

Q- 


o 


—1 




c 

LL 

— 

C 

CC X 


LU 


0 — 0 

X CO 

< Q. 

CC 

h- 



X 

H- - 

— 2 CC 

h- 

CL 2 

O 




o 

U. 


m 

2 


Li. 

2 

1 -o 


CL 

CL LL 

2 

X CO 



O K to 

2 


X 

X 

C CL 

LU 

O O 



CL 



O 


>- 

< 

H 


CM 

X LL 


O 

o o 

h- -1 

X 

h- -J 

h- 

z X «H 

LU 


X 

H- 

LU O 

cc 

O 

1 - 


o 


LU 



< 

CC 

2 

LU 


Q- 2 




LL 2 LU 

-1 o 

2 UJ 

co 

O CL 

X 



2 

CC 2 


1 - 

2 




Ol 

G 


3 

LU 

—. 

> 

h- 

1 — 1 — LU 


CC 

1 — Q_ 

-CO 

< 

— CO 

cc 

Ol-t-h 

cc 


-hOhUJ 

-J 

— h- 

— 


h- 


>- 

2 


—j 

CL 

CC 

< 

UJ 

X LU X 


O 

CC X 

CC < K UJ 

cc < 

_ 

UJ X LU 

• 

\ 

< 

O LU 1 — LU X 

< 

2 LU 

CC 

-*>s 

oc 


y— 

LU 

>- 

< 

O 

Q. 

to 

CD 

O CD H 


O 

Q. X 

LL Q- 1 

2 CC 

CL _J 

LL 

CO o CD 

• 

o 


Q- CD tO CD 1 — 

2 

— CD 

CL 

>- 

CL 




—J 








< 

O 

LL 

— 






o 



o 



-J 





2 


X 







O 

O 

cc 












2 


_ 



C 


LU 






UJ 

-J 


Cl. 






»- 



h- 



O 


m 

LU 


w 

< X 

X 

O 





h- 


>- O 


X - LU 







o r- 

— 

- O 

O 

w 


• 

Q. 



CL X LO 


00 





>- 

CL LU 

cc co 

v 

CM _l Q. 





O 


O UJ 

Q 

CC o 

LU 


O. 

^ — 

>- 

H- 

— 

O X X o. 

LU 

X h 

S 


O CO 


CO 

o-iaih 

2 

1 ->- 

T~ 

M 

B 


1 - 

2 


HhQ. 

2 

- r-H |_ 

Q- 

1 - 

o 

CO 

N 1 - 

LU 

X 

CC xc: c >- 

H 

>- LU 

% 

X O X O 

US 


cc co 

< >- LU 

O rH 

CC Xh 

v 

xO X O 

UJ 

o 


O LU >- 

O 

x O UJ 

>- 

to 

oc 

Q. < M 

CC 

_l 

CL < X O H 

>- 

m cc 

X CO x 

< X < X 

1— 

CM 

CL < O CO cc 

• 

8 

P 

A 

Z 

H 

B 

H 

< X < 

X 

X CC 

o 

CO CO O CD 1 — 

O 

< O CD 

1 - 

CC 

CL 


—I > —J —I D. 

< o < < x 

0 x 00-3 


X>X>-J>—JO. 
J20Z0<0<X 
3-I-IUIU “3- 


—1 O - —I CO — — —IX>X>—l> 

<Qh<UWZZNXZ0ZC<0' 

O LU O “3 

o cc u_ 

NC w — 


X < < J Q. 
Z C h < Z 
-1 CO O -3 


— < —I Q- 

> i- < x 
z wu -3 


1-0. 0-1— Q. CM I- Q. * * * |— Q. 1-0. 1-0- 

>- CC >- Z2> >- * * * >- >- 3- 

* * HI- * * * Q. h- * * * * 1- * * * * * * H- * * * I- * * * 1— 

OOO o o ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 

ID N 000)OHN(O^ini3NWaiOHNfOJiniDN00J)HNrA^inU3NC001OHNlAJinON0001OHNr^Jini0S000)OHNMJini0NC00lOHN^ 
OOO o o HHHHHHHHHHNCMNNNNNNNNOOOOOOOOOHHHHHHHHHH(NNNCMNNNNNNrO^MKlK\^^^I^^J^J^ 
rHrHrHrHrHrHrHrHrHrHi-MrHi-HrHrHrHrHrHrHrMrHrHrHrHrHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 


o o ns o o 


rs to H UJ US rH <_) LL rH N HO LU HH HOOlOUlO rHfHr-l U3 CM < CM U3 CM < LU 

NN rH fO CO H Q lO LL G rH OS U.OHJS LL LL LL CO CM LH LL CC OS rH 

H UIO ^ Q LU O G NS O < KllD KUU O CO Q O O <. CQtO<UJOKUO' / MiJQOOQKMO < CM Q ^ LU CM Q NS Q 

lir^O U UNOOU UQN JNSONUU O O O OIUU^UCMJCMNUNUNO CD O NS O O NS NS CJ O O 

OHNMOO)C1010UOOKMflU3U3U)mUQLUU.Ort4N<<<<<DQDOKSrCMnN<OU.OHCMcA(flS<ffllULJUJUJU.OlCMDmCJlCiaiCOLUHJJJJ 
OOOOOOOOOOHHrlHHHHHHHHNNNN(MN(MCMCM(MNN|CMCU<SWrC\K\WKSifitJJJJJJ^ifitJ^UUnincninirunirtUSlDOlDU3LO 
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 <s| CM CM CM CM CM (M CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM 
NSNSf^^NSNSNSNSNSNSNS^NSNSNSNSNSNSNSNSNSNSNSNSrOKNNSNSNSNSNSrONSNSN>N>r^VNSNSNSNSNSNSNSNSNSNSN>NSNSNSNSNSNSNSN>NSNSN>NSNSNSNSN^NSNSNSNS 


a 

% O 

< o 

< 

o cl 

w o cc 

< 

03 QX 

G < O 

z o 

< uh 

CL LU X 

uj cc lu i 


o 

% _ 

• 

n cd a 


x CD -x. 

X 

xOCM 

CD < LU 

* 

G X 


CL O —1 

• 

CL LU CL 

to 

CL LU O 

• 

Q- X O 

LU X X 

LU 

O LU 1 - UJ 

o 

O I’¬ 


o cc 

— 

O CC 

• 

O 

CC X 

1 - 

1 - X X X 

2 

LL 

z 

X 


X 


2 x 

O 2 

< 

X o- 


i—i—o 

— 

y- >- x 

CD 

1 - 1 - X 

2 

1 - UJX 

1 - O LU 


l- 1 — cc 

% 

2 Z 


2 Z 

LU 

2 2 

— 

z X 

z X 

G 

2 X O 

UJ 

-D 

CD 

-X 

or 

-X 


— f- X 

— < h- 

UJ 

-hOli 

K 

aoz 

UJ 

CL CL 2 


CL CL 2 

CC 

a: »2 r-x 

cc • • 

X 

O LU • 

>- 

Q. CL LU 

oc 

CL 0 - 

rH 

0.0 _ 

X 

Q- •— >- 

a. • • 


Q. CD .X 


a o. 

z o H- 

— a: lu 

CO 0- X CC 


I >- LU CC ' 

I I- Q. X 1 

I >- X 

* * * * I-* ■ 

ooooooooc 
NCOO) OHNfO^l 
NSNSNSJ-J-^OJ-J-- 

ooooooooc 


Q. Za >- 

o a x co 

CC LU X 

Q-- CC — rH 


O 

w < 

o. x x 

— o a x cm 

> CC LU O us 

X Q-auh 


< < < X 

0 0 0-3 


O LU CL LU LU CL • 

Dl- >- a. cl x : 

C < »->->-( 

— »- I- x 

z o J— Ol 

— LU LU LL LL < l 

X CD — — CO t 


UJ rH 2 Z CD 

: O. + — < _l 

>- X < X co I-- f— - h- u. »— h- X 

sh x 'HO - LU LU M LU CC CO >- UJ UJ % 

C n < x co co i i-h<coqc- cc - or <— h a: ld a x <: 


-j x: 

US < 2 C 

o —: 


I— O. CM 

>- in 

* * I— h- 


-IX OC£ 

- —I > X CO > — > CL _ — O h- 

*<0ZX0Z200MCL0CL2 h- CO 

:OX-Q-Z-<XO-00000 x z 


I- < — — O X > 3 

h- CO 00.00.200: 

X 2 -IOXOXCX- 

Q. — 


>0000000 oooooooooooooooo 

iSCOfflOHNfOJlrtlO^ OOOIOHNN^ it LTI Ifl N M Ol 

■j»^^tiniAinmusmmmususioiOLOLOLOLOLOOu3LO 

* o oooooo oooooooooo oooooo 

NS NS rH NS NS H NS NS rH NS NS CM H 

NS NS NS NS NS NS NS NS NS NS NS NS NS 


ooooooooooooooooooooooooooooooooooo 

OHCM^4l/SiflNMCnOHCMI<SJU3OS0001OHNK>4l/SU3S00CTiOH C*/A 

sssssssssscocooocococococacocooicnoioiOHnaioicncriooo o o 

O O O O O O O O O O O O O O O O O O O O O O O O OOOOOO rH rH rH rH H 


O G G NS 

o o o o 


Q>AUiOlUDLUKSUSNCaiDOOH<UJ<LUN 

OCMSONSOr-.CMOj’OLUSOOU.OlJ.Q 


< LU < LU CM CO LU NS US C 
NSILQU.OCMNCMU.O 


<<<<<QLUHHH 

0I0)0>0>01010><<< 


NS NS NS NS NS NS NS NS NS NS 


H JS<<<< O O NS NS NS NS LS OS O O O O LL CM US OO 
<<<<<<< <COCOCO COCOCOCQCOCOCOCOCOOOO 
rHrHrH»—IrHrHfH HHHHHrlHHHHHHHHHH 
NS NS NS NS NS NS NS NS NS NS NS NSNSNSKSnSNSNSNSNSNSNSnS 


00 00 C0CQOCONUSlDN050lCQQLIli.(MJNOOOOOOLLH4i00'<CCOC 
OOOOOOQQOOQQOOOQQLULULULULULULULULULULLLLLLLLU.LLLLLL 

HHHHHHHHHHHHHH HHHHHHH r-H rH rH rHHHH H H rHi-HrHrHi-H 
NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS 


February, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 35 


105 





c 

o 







3 

UJ 









y- 

y— 









Ul 

o 







UJ 2 


Cd 

3 





H 

X 

uj -J ad 



c 





— 

UJ UJ 

-J CO 3 


K 


UJ 

X 



O 

X -j 

co co H 

X 

< 

CD 

__J 

1- 

oo uj 


_ 

CO 

CO — Ul 



2 

CO 

CD 

< o 


Q 

< < 

— 2 Od 

< 

2 

— 

< 

2 CdCd 

cd 3 < 

I- 


X I- 

2 


— 

to 

H 

UJ I- < 

< a. 


y— 

Q- 2 

h" % 

CO 


o 


JQ.X 

X UJ to 

cd 

X 

—1 — 

HI- Xh 


Cd 

-J 

X 

o y- 

LL O O 


a 

< Cd 

li— uj a — 

< 

< 

O 

o 

UJ UJ — 

— o < 

o 

_ 

cl 

UJ a - 


X 


Q£ 

coo. 

1 - o 


oc 

UJ 

-JhO a h 

>- 

o 

2 

U_ 

C O o J- n- 

uj co y- 

y— 


CD UJ 

U1 2 1- 2 

CO 


UJ 


O O 2 UJ 

o o < Q. o 

u. 

h- 

O X 

> 1-CO 1- 


X 

~T~ 

UJ 

1- — 2 

2 < -J O 2 

UJ 

UJ 

3 < 

< LU Cd Ul Ul cd 

o 

Ul 

I- 

O 

a. a. uj cd o 

. a. • • . 

_l 

CD 

U- 21 

UJ CO CJ Q- OC O o. 

UJ 

1- 


O 

O O 0 0-0 

• to • • • 


2 

o 


ZNZUQ.Q.HZ — 


Cd CL 
X >■ 


Q_ - CL l 

>- >-2 : 


_ _ 



m . 

cd 

CD 

OHIN. 

1- 

lOXNlflXN 

1- 

X < M 

< 

CL < N < N Q- N 

< 

M < M 

>- 

Q O CO CO M D 

a. co - 

< rsi 





UJ 



3 


3 


CL 


X 


CO 








> 



a. 

X -J -1 -J 

o_ 

-J 

CO 

X -J -» 

O 



X X -l 

X 







Cd Cd 

cd cd --y~ 

I- 

CO —1 -1 CL -j CL 

y- 

-1—0- 


in-1- 1 cl a_ 


—1 — 0. 

J- 

co — x < -1 cd 

IMl < — 

— M 

UJ 2 2 

3 2 3 2 


2 

o 

< < 

<<2CLt_>OOLU 

3 

3 < < O < X 

3 

ox 

1- 

3 > < > < o X 

y- 

OX 


3 > 2 O < O 

zoo. 

> 2 

COQ 



C 

o 

cd cd 

CdCd<V-*<<Cd 

O 

CL O O 0. O 3 

O 

O X 3 in 

3 

cl o X o a. 3 

3 

O x 3 

y- 

Q- X — —1 O C 

3-10 












i 

a. 


Q- 


2 








X 


2 

X 


X 

o 

y- 


I- 


— 

—I 



< 




Ul 

—i 

Cd Cd 

UJ 


LU 

ID 

3 


3 


Cd 

Q_ CL 



y- 




X 

X 

X X 

X 


X 

CO CM 

o 


O 


0l 

O O 




o o o o o o o 

1AU5N COOlOH 
HHrlHrlNN 


UJ UJ LU O O CD O' 

* * * X X X * * * X * * * X * * * * o 

o oo ooooooooooooooooooooooooooooooooooooo 

CM IfliDNOOOlOHMfO^UUflr'COOlOHN^^^aSOOOIOHH^^^^lDMlOOlO 

CM CM CM CMNCMCMNKM'M^K>K>^lOMWMJ4^JJ^d4-tJlAinOOOOOOOOOH 
i-» HH HHHHHHHHHHHHHHHHHrlHHHHrlHHH rHOOOOO OOOOO 


a 
* o 


ooooooooo 


oooooooooooo 

OHN^Jl^UJNCOCTlOH 

CMCMCMCMCMCMCMIMCMCMfnm 

OOOOOOOOOOOO 


CM 


NO 




m 


O © ul o m 


CMJ<UJK\OOI 

u jifl j juuni 

OHKunsoiffl 
o o o o o o o 

CM CM CM CM CM CM CM 


U_ U- UL U. to l 


o U. H r -i r—i 
Q Q UJ UJ UJ 
CM CM CM CM CM 

K\ mm m m 


O U. 

HCMWJinNO)OUJOHHHHNin« 

U. LL 
CM CM 


O m 
O O 


C UJ fO 

U(AO 


O1Uli.U.U-U-tMJ'NI^Nr^Nc0<QU.CM^a3U3^lDaiCnUJLiJ 
UJUJUJUJUJUJUJUJUJU.U.U.U.U.U.U.LLU.U.U.U.U.LLOOOOOOOOOOOHHHHrtHHHHH 


in (A ja<qu\ cm < lj uj j 

Ot-COOOrHOOU.fAO 

UJUJHHCMKUflrs<mQLL 
rHH H CMCMCMCMCMCMCMCMCM 
^rAKlK>K>KMAK\rOK>KMO 

mmmmmmmmmmmm 


O 

O 


CC Cd 

X M 

3 UJ C_> 

2 -J 

CO H 

H < 2 

CO I- — 
a 2 QC 
— I- CL 
uj a - 

H CL % 
< H- X 
J UJ 2 
O X — X 

co < a: 2 

— X a. — 


uj h- w 

a. a: 

- >- x 

o X 
• - Isl — 


csl cd - -iq. 

< < < 2 Cd < 2! 

e: o: cc < o o 3 


o 
< < 
O l 



UJ 

X 

< 


i co i 








C2. 

X 

X 

X 

1 UJ 1 








O 

X 

X 

CL CD 

1 2 1 








o 

• 

o 

O Ul 

1 — 1 









• 

o 

Cd 

i y- i 








CL 



O 

1 3 1 








o 

y- 

y- 

< y- 

1 O 1 









2 

2 

O 2 

1 Cd 1 








y- 

— 

— 

—1 — 

1 CO 1 








Cd 

Cd 

a: 

Ul Cd 

1 3 1 







>- 

CL 

CL 

a. 

Cd Q- 

i in i 







-J 





i i 







2 





1 Cd 1 







o 





1 UJ 1 







w 



< 


1 -J 1 


- UJ 


- UJ* 

Ul * UJ 



CL 

X 

X 


1 CO 1 


x CL 


O CL CO 

Q- Q_ 


> 

o 

CD 

X 

X CO 

i X i 


- >- 


- >-- 


X 

o 

a: 

Ul 

o 

% H 

1 Ul 1 

< 

xH 


x y- x 

1- x y— 

T-i O 

2 

cl 

Cd 

o 

< y- 

1 to 1 

X 

< M 


X < rsi < 

i 

A 

Z 

H 

i m 






1 CO 1 

X 






1 

_i 

_l 

_l 


1 < 1 

o 


CO 

—1 

—1 —1 



—1 

—1 

_l 

> Q- 

1 CO 1 

o 

— a. 

o 

CL — -J — 

-J - -J X 

_ 

CO 

< 

< 

< 

O X 

1 — 1 


> X 


O > O 

<"> < o 

2 2 


O 

o 

o 

X 3 

1 o 1 

1- 

X 3 

1- 

0- X O X 

oxoo 

— < 

Ul 





1 1 

2 


2 




Q. 

CO 




— 

— 

< 

— 

CL 



> 

Ul 





Cd 

X 

Cd 

CO CO 



y- 

CL 





CL 

X 

CL 

a a 




>- 






o 


cd cd 




o 

3 

O' 


X CM X 
o m % 


Q. 

2 

3 


a: 

< 

x 


CM - CM 
IO N IA 

1 — hxxa 


• N X > X — —OXXCL 

-2200Q-OQ.Z2 2 X 
>3 — X00303-“3 







O 


Ul 

UJ 





o 

a 

UJ 


Cd 


o 

o 

-J 


UJ 


o 

o 

CO 


y- 




< 


u. 


2 

• 

y- 


< 


o 

c 





— 

2 

o -J 


w 


y- 

o 

O X 




— 

o 



UJ * 


Q 


o o 


o 


2 

Ul 

i- y- 


< 00 


O 

y— 



CL < 


o 

< 

y- < 


to 



_j 

2 


Ul 

Ul 

y- 

o 

— O 


1 - > 

o 

UJ 

tn 

o o 


Ul < 

o 

CD 

_ 

Q- < 


CD to 

o 









co 


H 

2 



< 


1 

o 



I- r-l 

CM 

H — 

— 



o ♦ 

■f 

O 

H 

X 

X 

O Q X -H 

XH 

O - CO 



UJ 

x O x O 

xO 

x xO 

O 

< 

O X 

X < < O X 

< O X 

CO < o 

2 






o 


X 

—i 



o 

> cd cd 

— CO 

-1> < X 

XtL 

-< 


o < < 

2 3 

X<OI-2 

O H O X > H 

H 

X cd od 

< CL 

-1 OX CO — 

X 00 CL 

-j x to 


O 

o 


* * * I— 




* * * Q. Q. 


« « « CD 


OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 

jJlAlONOOfflOHNKMniaNOOCntMfAJlA^NcOOlOHCMrA^iniflNOOOIOHN^Jl/MflNcOOlOHNfArfirtlflMJOOlOHCMfA ^'lAJON CO OIO H N IA ^ 

jjjjjjiAininiflUMninuMniai,oiflioifiiflu5iosNSNSNNSNNoooo oooooocowoooocoaioiaioioiotoiai9ioioo o oooooooiHtHfHr-«.H 

OOOOOOOOOOOO OOOOOOOOOOOOOOOO OOOOOOO OOOOOOOOOOOO OOOOOOrHrH rH HHHHHHHHrHHrlH 


m 


in 


in 


in 


in 


O Q Q ui m 
o o o r-x c_> 


O O CO O CO CO CO o 

m m o cm o in o u. 

i-iujoujouJococoioujcMrnujcouj<ujcMmmfn 

uimomomotM Quju.un\nu.ollocm(mu 


□ in u. 


MaO)<OLlJHJJJJN<OUJHHHHHHHHKUDlOiOlIlNOlUlllH^(XlNailOOOHCMKUnc»<QUJLLCMCMtMCMlAJinNcomUJli.tM^JI— OOCOQ 

iaifllDlOlflUJf s NSSrsNNrvNC0C0C000(J000c0C0C000C0C0c0C0000000W{JI01(JlO>OiCTi<<<<<<<<<<C0CflCQC0CQC0in£flCflC0C0C0UUUUOOO 

CMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCM CM CMCMCMCMCMCMCMCM CM CM CM CM (M CM CM CM CM CM CM CM CMCMCMCMCMCMCMCM CM CM CM CM 


Page 36 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


106 












K 



o 

X 



3 

>- 











or 



t- 

K 


o 

z 

or 











< 



z 

O 


z 

— 

o 











k 



—. 

z 


3 

_1 

x 











to 




Ul 



or 

3 












♦ 


1- 

3 


O 

O LL 

X 



3 








X 



z 



H- 

o o 



3 

to K 






X 

C3 

o 

Ul 


Ul 

Ul 



< 

z 


3 

tO 3 






K 

Z 

or 

z 

UJ 

X 

z 


X 

k 

— 

or 

CO 

3 






o 

— 

LL 

— 

% 

Ul 

— 


1 

o or 


H 

< 

3 3 

LL 





z 

h- 


_l 

% o 

3 

3 


3 

o < 

or 

3 

H 

G 3 

LL 


or 

H- X 


Ul 

o 

rx 


h- 

CL 



t- 

or h- 

< 



C % CQ 

O 


K 

X c_> 


_J 

< 

CM 

LL 

— o 

X 

C 


O 

0 - co 

X 

C 

3 

< X 



3 

Ul < 



or 

•f 

O 

1- 

o 

Ul 




o 

3 

3 

3 3 

CO 



z co 


UJ 

H 

Ul rx 


1- 

t_> 

K 


X 

3 o 


h- 

— 

=% Z Z 

— 


UJ 

or 

or 

z 

00 

-J- 

H or 

Z K 


3 

c- 

o 

o H- 

3 

< 

3 

__ 



3 

< o or 

< 

— 

3 

— Q 

Z Q 

Ul — 

to 

CL 

>- 

3 


O 

O 


3 3 3 

in 

UJ 


X K h- 

X 

3 

to 

u. < 

3 Q 

X 

» 

X 

or 

X 

G CL 

3 

3 

O 

z z 

T—i 

-J 

LL 

O CL 

o 



Z 

O < 

Ul o 

H 

o 

o 

o 

Z 3 


3 

K 

— LL — 

to 

— 


►— 


UJ 

>- 

z — 

O 

-1 z 


t_> 

X 


3 

X 



3h3 

to 

LL 

or 

Ul Z Ul 

UJ 

1- 

CO 

— _l 

UJ 

Q_ — 

z 


Ul 

1 

X 

o 

3 

QT 

>- 



or 

> — > 

CL 

< 


— 

H > 

X > 

or 

K 

X 


K o 

— 

> 

3 

H CO — 

LL 

Z 

3 

< o < 

>- 

o 

X 

Q 

Ul < 

o o 

3 

UJ 


o 

3 < 

J— 

< 

3 

3 X 

— 

“ 

O 

CO Q- 00 

h- 

CL 

H 

UJ Z 

O to 

o X 

1- 

O 

LL 

z 

O 00 

to 

CO 

X 

O -3- 


3 > 3 < 

: < o o : 

■ or X 3 ■ 


-j < 

X 3 X 

X Q 

co -J > 

i? 


X U- 10 t— 10 X 


j a — 
: o 
j H o 
j co uj 

W cc 

J O 

: uj \- 
■ z co 


o X 
< ^ 


♦ o 
uj < 
< -»z 


o X ■ 

: —| co 

_■ x D 1 

0_I I - (.0 Q. i 


. CL 
> O 


— M CO 
CL Z 3 
O CT 3 


CL 
X £ 
o : 


x < -i < -J - 

—I—»X<<Q<<UJOu.Q<-JXXu.—IXU- < 

O Q O O O O O 

-*-JX><>><>X-JQ>-JX>-J-JX-J> 

XXOOXOOXQZX<OXOOXXZXO 
JCOQXOXXOX — -JQXJQX-JCO — COX 


O 

H 

3 


3 

CC 


— X 

X X o 

— 3 M 
CL O Z 

o a. -3 


3 x X 3 

a o 

—ix-- 

X c_> > x 
-IQS W 


UJ 

X -l 

3 — 

z -*3 
—i co 0 
a 

_j- 

X > X 


> 

o 

X 


o o o o 
OHNW 

o o o o 


o o o o 
jumon 
o o o o 


oooooooo 

OOCnOrtNW 

OOrHrHrHrHrHrH 


O O O 

co rx oo 


o o o o 
oiohn 

rH CM CM CM 


o o 
m -* 

CM CM 


O O 
in us 
CM CM 


OO oo oooooooooooooooo o ooo ooooooo ooo ooo o ooo 

NOOCTlOHcMtr\4UMosoOO)OHC«(K»JimONOOO)OHNIAJiniOM100lOHNKl^UUON 

NNfMK\tOKM^MKMOK>K>^JJ^J^JJ4JJMnUMnuunininininUMOlOU5U)lOU5lD(0 


QH\UQ 


ujocn <cMcoou.r^Qu.u_m<CT>Q<cor^<<MmcMO ujhcm < co lo cm < ioh 

LLUUJ CMNCMNNinNNlAHNHrscMCMNCMNCMNN LL L) U CM N fO CM CM OH 

inNc001<QQQQUJHCMKUflN<aJUUUOUJU.OOOOOOKMflNoO(ji<(flUQUIHNKMON(Oa3UJti.NWfAK(rOl/UOOUnOHJlUQU.CMNCMCMinN 

Nsr«»NNrNSNSNoooooooooocooooooococooococnaioHncnc7imo>ai(Dato>ounoio><<<<<<<<<cocflcQcocoa5cacQcflc2ca£flcflcQOUUUUO 


Ul 

3 

>- 


CL 

o 



OC X 

3 UJ X 

»-G X 

UJ O • 

or c_> 



or 

CL > h- x 

O O UJ 

3 X CT H- 


or 

CL 


* * * 


O O O O O o 

cMro^iniflN 

333333 

O O O O O o 


h men 
Q o 

cm 3 ^ in in in 
333333 
333333 

3 3 3 3 3 3 



















3 

CO 








X 



















M 























< 








o 



















O 























1- 








H 



















H 









3 















3 


























Z 









Z3 














O 

X 







>- 










O 









— 









3 














3 

X 







cr 

X 









— 












3 • 



. 


X 

< 














3 


CT 






cr 










O’ 









3 



— 3 



, 


X 

> 















c 

3 






< 

o 









3 









3 


3 

Z 





X 















O O 

h- 

3 






o 

1- 









or 









< 


Z 

or o 



X 

3 


3 














h- 3 



























3 


— 

o o 



X 

3 


X 





• 






X 



3 

«fc 

— 


*-x 


X 

X 

o 

>- 









3 











X 




X 

H- 



c- 


1- 


• 



1— 



X 



3 


— 


3 


< 

O 

z 

or 









— 









X 


or 

xCO 




to 


3 

3 

3 



• 



3 



X 



X 3 

o 

O 


*T* 



< 


or 


















or 

< 

3 

I- — 



• 



H- 





X 



X 






1— 

3 

to 


w 


Z 

cc 

3 

< 









o 







3 


Xx 


h- 

_1 




o 


< 

CO 

< 

h- 


X 


h- ”3 






1- < 

3 

< 




— 


— 

o 
















z 


o 

CO 

3 

— o 



3 

3 

c 

3 

— C 3 


Z 


X 


X c 






Z 3 




o 



3 











o 







— 



LT 

O 

3 Z 



> 

3 

h- 

o 

Z 3 1- 

_ 


• 


O < 






— o 

Q 

H 


1- 


Q 

> 

H 

o 









z 







1— 


H- 

e 


CO — 



G 



CO 

3 • 

3 

3 


• 


_ 

• 






O 3 

O 

3 




C 

o 

3 

o 









_ 







z> 


3 

c 

o 





s 

• 


— • 3 G 

3 




3 

• 






3 — 

< 

O 


r-x 


< 

X 

or 

< 









c 







o 


cr 

3 

h- 

o to 







O 




3 






3 







< 














< 







cr 





z — 











h- 






h* 





















3 










1 

3 

— 3 







■y 










_ 



CO 


















3 







z 




rH 

3 







3 


3 


CO 






CO 



< 


3 


o 








3 










— 

3 


or 



3 

< 

CQ Q 







3 

3 

3 











h 


3 


o 








3 


m 

_ m 



X. 


x 


O 

CL 


X 


3 

Z 


3 







3 

• 

>- 


z 






z 



3 

Q 

X >- 


< 



< 





CO 


CO 

o X 

X 


2 


o 

2 

— 

>- 2 


h- 


rH 

— 

X 

to 1 — 







3 3 

v 

1- 








— 



X 

Q 

% H- 





X 





< 


o 

3 3 

< 




< o co 

x 

1-3 0 


3 


x 

H- 

o 

— z 


CO 



x 

3 

6 

R 

01 

A 

M 




v 

% 





X 

X M 

< 

A 

H 

Z 


o 


3 

3 

X 

X 



)- 


— 

_ _ 



»- 


o X 

CL 

< 

M CL X 


or 


< 

3 

h- 

— 






3 




o 






o 







y- 














3 










O 

— 

3 or 











3 






3 


x 


3 











or 






CL 



X 


—1 


3 



or 

2 

3 3 


X 

3 

3 

3 

_ 

— M3 

_ 

3 


3 


3 

3 

3 


3 


3 

— — 

3 

>33 


3 


o 

> 

O 

or 

h- 


3 






h- 


— 

co 

— 

_1 CL CL 


O 


— 


CO 

— 


to 

< < 

< 

Z 

3 Z 

> 





< 

< 

< 




3 

X z 

< 

OCX 


z 


o 

o 

z 

z 

3 


l- 


2 

2 2 



3 


CL O 3 

> 

< O X 


< 


> 

H 


LL < 


3 

3 

3 

3 

< 

U1I- 


^5 


1- 


3 

3 



\— 


3 

3 < 

o 

X £L -D 


— 


< 

X 

cr 

— 

cr 


co 


o 

C C 

c 


O 


O “3 

CL 

XT 

O CL -3 


— 


x 

3 

3 



3 





Z 




Z 






z 







h- 








— 













or 



3 

CO 

< >- 











_ 






— 







o 








O 






X 







or 



H 

z 

3 


3 





3 




3 


X 




3 







o 








3 


CQ 




3 







< 



3 

3 

3 Z 


3 





3 




3 


o 




3 


3 





or 


o 






or 


< 




X 


o 





o 


h- 

O 

CO 

— O 


>- 

3 










3 






3 







o 








h 






o 







3 





1- 

X 




* 



* 

* 

* 

3 



* 

« 

« 

3 




* 

* 

* 

< 





« 

* 

* 

or 



* 

* 

* 

X 




* 

« 

« 

or 

* * 

* 

* * 

* 

M 

o 

O 

O 

o 

OOO 

o 

o o 

O 

o 

O 

O 

O 

O 

O 

O 

O 

o o 

o 

OOO 

O 

o 

o 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o o 

ooo 

O 

o o 

O 

o 

OOO 

O 

o 

O 

O 

OO 

o 

OOO 

O 

co 

CD 

o 

3 

cm 3 3- 

in 


OO 

CD O 

rH 

CM 

3 

■AJ’ 

3 

3 

oo 

CD 

O rH CM 

3 J- 3 

3 

r-x 

oo 

CD 

o 

rH 

CM 

3 

3- 

3 CO 

Cx 

00 

CD 

O rH CM 3 

J* 

3 3 rx. oo 

CD 

o 

rH 

CM3 

-a- 

3 u3 rx 

oo 

3 

3 

3- 


Jt J J 

J- 

j* -a- 

-3- 

J- 

m 

in 

3 

3 

3 

3 

3 

3 3 

3 

3 3 3 

3 3 

3 

3 

3 

3 

3 


M 

r-x 

Cx 

M 

r-x r-x 

Cx 

r-x rx. 

00 

00 oo 

OO 

oo 

3 3 3 

3 

3 

CD 

CD 

CD CD 

CD 

CD CD CD 

CD 

o 

o 

O 

O 

ooo 

o 

ooo 

o 

o 

o 

O O 

O 

O 

O 

o o 

O 

OOO 

O 

o 

o 

O 

O 

O 

O 

o 

O 

o 

o 

O 

o o 

o o 

O 

O 

o o 

o 

o 

OOO 

O 

O 

O 

O 

oo 

O 

OOO 

o 





3 


m 











3 

3 

3 


















CM 



3 CM 














m 


m 











3 

3 

3 


















3 



3 3 













3 

3 r^. 

3 

rn 











< 

3 

3 












3 

3 O 

rH 




O rH 


o 

3 rH 




o 









O 

o 3- 

m 

r^- 











3 o 

3 

C- 













3- 3" 

3- 




< u 


3 

rx 3 




o 






3 

3 

3 

3 

3 CM 

3 

m 




3 

3 

3 




3 

r-t 3 

O 

3 3 3 




3 

LL 

o 

J- 

<D 




CM 

3- CO 

o 




3 < 3 

3 

Q rH 3 




3 





3 

3 

3 

3 

3 

3 O 

m 

O 




H 

H 

rH 




3 

CM 3 

C_> 

r-» 3 o 




OO 

3 

o 

CM 

O 





J- ^ 

-3- 




LL Q LL 

3 

0 3 0 




3 





O 

in 

3 

rx 

OO 

<03 

3 

H 


J- 

J- 

J- 

in 

3 

f*. 


r>- 

r>. 

O0 CQ 

o 

O 3 CM 

3 3 

3 

3 

3 

r-x 

0OtD<< 

< < 

C_> 3 

o 

CM 

CM 

CM 

CM -A* 

r-x 

OO 

< Q 3 rH 

rH 

rH 

rH 

33 

3 

3 3 

3 

3 

3 

3 

3 

3 

m m m 

rn 


j- j- 


J- 



-i t 

-3- 

-3- 


-A* 


3 3 3 

3 3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3 

CO 

CO 

lO 

10 

3 3 

3 

3 

3 3 3 

rx 

rx 

rx 

rx 

fx px 

rx 

rx rx 

rx 

rx 

m 

3 

3 

3 

m m m 

m 

m fn m 

tn m 

K> 

3 

3 

3 

3 

3 

3 3 

3 

3 3 3 

3 3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3 

3 

3 

3 3 

3 3 

3 

3 

3 3 3 

3 

3 

3 

3 

33 

3 

3 3 

3 

3 

3 

3 

3 

3 

m m 

Kl 

m 

m m 

m 

m 

m 

3 

3 

3 

3 

3 

3 3 

3 

3 3 3 

3 3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3 

3 

3 

3 

3 

3 3 

3 

3 

3 3 3 

3 

3 

3 

3 

3 3 

3 

3 3 

3 

3 


February, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 


107 




CO 

< 


UJ LUUJO>-—I 
I- h CC I- Q < 

>- >- o < 

CO CO 3 —! A LL 

A X A — 
C — LU .3 • 

3 X A • < . 


LU < 

CC 3 3 

O X 

LU LU h UJ LL 

-J JMZO 

CC CO 

< < 'LL C 

I- 3 o o z 

or uj 

2 X LU |— 

— 2 — X CC 2 

— o < c 

J X LU 3 UJ < 3 X 

- CC CC CO C/5 

JHO hOI- 

- LU h LU h LU t“ C 

’ c CO C (/) u < (- 


— CO DZ X 

Z < —I LU 

I- < 3 z 

I— z > X 

U- CD O 

LU CC U-hh 

3 A CC CC — 

O 3 

> O h>UJZ 

Z 3 CO z > — 

o • UJ O < O 
o • aoioo. 


U T CO I I J 


> X > X X —I u 

o z o o o < z 
Z - : c c u c: 


< A A 
« * * * * 


- CO </) CJ A A CJ 00 2 X 2 x 

X ' >- ' >- V v CO UJ CO LU 

<OQ<CO<CO<QQ<Q<QQ x x O C-XQQQ-XQQ 

3 

x — 1 — 1 X X X X -j X —I x 

~~ <X> —J>_J>< X > < < X < Oh LU CO J < X A -J < X 3 

>hZ0<0<0hZ0Hc:Z|-f-LU Z D<hZO<hZUJ 

Zw —ruzozw-zwx-wcoa — acja — aoa—a 

i— 

ID X 

O 3 

CC CO 


A 3 a. Q ( 

—i co LU ; 
co z cc : 

< X CC o < 

l-LUDhl 

X I- CO 

_J LU LU | 

o ii cl cl ( 

co 

ZULU J 

>- X X X l 

CO CO Q X - 


O ' ( 

Z Q 
ID LU 

I Q CO Q —I I Q U 


: < o. x M < < a. I 
: Q 2 z z 2 Q 2 : 

—I CJ — ~D —I O ■ 


OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 

rOJ-iruorxcOOTOHNfO^iniDNcOOlOHMfri^LniaNOOOOHNKUUUONCOcnOHNfAJ’UMOSMcnOHMrOJUUONCOOlOHNrOJMniONOOaiO 

AAAAAAALOcocoLOLOLOcocOLOLDrxrxrxrxr^rxfxrxrxrxoooooooooooooooooooo<DCDcDCD(DCDCDOcncDOooooooooo3333333333cM 

00000000000000000000000000000000000000000000000333333333333333331-IHHH 


lu rA lo co co Q o ujcvifoooQoiQoocNrAcncMLLfOMrxO) LnONr'iHQNiooi 3 < rx rx oo rorororOfO<oorocN < cd cm 

4M4MNOQ r^HHNUNUSHHNH<HHK>a LlUHHLlCJHHU HrltOMU HHHHHHCOHU H[2 U 

M^jifior>-<aoa£2a2caQUJu.oio4'Nootn<cauQuu.oHHHHNinior'cocouQUJUJULULLiuJLUiuuJHNro^iftinu3r^oooi<couQooHN 

33333333.S--3-3333333333333333333333333333333333333333333333333333333333 



-J -J 

LU 


00 LU 

CO 


_l CO 

< 


< 


3 

1- -J 



_l 

—1 cc 


UL 3 

CO < 

1- 

Q CC 

-J x 


D 

< LU < 
CC CC 3 3 
O Cl CO 


LU CD —j 3 
: h o tu» 

■ zee: z>- 


LU 



O 





O 

3 


< -1 

CO 



0 < 2 : cc 

3 


LU 

3 


CC 


3 

»- 

— CL < (O CC 






3 

A 




A 

CD 




< 

U-1 








Z 

3 


X c 

_1 


Q 

CL 3 0 z < cc 


A 

A 


LU 


X 

X LL OC 

3 < CC 


A O 


1 


CD 

3 O 



3 

O 

13 




A 

O co 



1 






_ 


1 Q CO 

LU 


-J 

CL 

CC — CJ ID 


< 



CL 

UJ 

LU LU 

LU 

— CL CL 


2< 


— 3 




Z 

— 



— 


— 




A 

< 



1 





1 

CC 


_i t* r 

CC 


_ 


LU LU 

3 


_J 

O 


O 

3 

z 3 

3 

O 

1- 

O 




A 


A 

Z Q 



Z 

Q 

3 




A 

3 3 



1 





1 

< 


3 <3 

< 


ID 

LU 

A 3 O LU 



3 



3 

>- 


—J LL LL 

3 

A 


A A 


3 


3 

O Z 

CC 


O 

Z 

Z 




O 

— 



1 



3 


1 

A 


o to 

—1 


SCO > ID LU CC Z 

CC 


3 



O 

A 

C A 0 CO — 

— 

ALL 


A — 


A 



2 A < 


2 

A 

— 





CD Z 



1 


3 

CC 


1 

r-s 


Q 



to 

< 

A 1- 



3 

Q 


3 


3 

1- 

-1 CL 

CC 

IDLl 

h- O 


< 


3 

2 A 





A 




O 

— — 



1 


CC 

c 


1 

LU X 


LL —1 Q 3 


too: 

X 

O O * Z LU Z 


Q. 

LU 



— 

O 


z 3 a. <0 

— 

Z 


\— 


A 

0 


2 

A 

A 




3 

Q 

P~ 


1 


o 

2 : 


1 

3 


_ _I 

z 


LU 


3 * LU CC UJ 


1- 3 


3 

X 

3 -J 

H- h- CL 


CJ 


>- CC 




3 

CD — 



CD 

— 






LU 

LU 


1 


CO 

LU 


1 

LU 3 


Z) — 

_ 


QX 

1 

• * ID 

~r 


3 

z 


Z 


z 

Z 

Z 3 X 0 

LUZ 

Q 

cc x 


3 



A 

A 


A 


A 




A 

3 > 

Z 


1 


< 

2 


1 

-I 3 


Q CO X 

cl 


<3 


O A 1— A 3 


O 

— 


— 

3 

— 1— 

— 

- h O h ACL 

Z 

CC h- 


O 


X 

3 

A 



3 

O 




2 

LU < 

o 

O 

1 





1 

LU CJ 


z CO 

CL 


UJ — 

c 

LU LU LU 3 Z 

• 



0 


O 

LU C LU 

C CC UJ < 

• 

• z> 

_ 

< A 


A 


< 

C A 

3 


O 

A 

O 




ID 

Q co 

Q 

Z 

V 


o 

T' 


\/ 

Q w 


LU C 



A LU 

z 

CC 3 A A LU 

• 


0 a. 


a. 

O 

o. 0 a. 

CL CL A 

• 

.1- 

A 

0 CL 


2: 



A CC 

3 


A 

CC 

3 


Q 


A 






3 

— 





1- 1 

1 




< 



1— 













>- 










3 












~r 











Q 












CO 










— 








X 

LU 



o 


LU Z 

T* 




A 



3 

Z 






















ID 





z 



1 

—1 



3 


zoo 




CO Q 



A 

< 






A 



ID 



z 




A 




A 


A 





_J 

CC 


_1 

— 


CO 

1 


_ 





3 —1 — 1 



LU 

a 






3 



X 



— 




A 




3 





2l 


> 

> 


o 

LL 


3 

*T~ — 


Q 1—0 

OO 




Z LU CO 



3 

LU 



T~ 

T~ 


1- 



O 





A 


3 




A 


A 



x 


o 

a 


CC 



UJ 

LL X 


Z ID r “* 

O 


rH 


cl a 3 



a a. 



x 

x 


CC 



O 



Q 


x 


3 




3 


3 



A 

D 

H 

Q CO Z 

CO 


3 

LL 



rx - 


LU O CO 

CO 


1 A 

x 

H LL < A < 

X 


LU 

O 


31 

O 

X A 

*7~ 

a. x x 

X 

H 

A 

3 

X X 


Z 


A Q Q < 

x x M 

CO 

X 

X 

A 


A 


X 






Z 

O 





cc CO 

CO 




-J 



a: 













Z) 










< 



X 





o 











—1 




3 






3 



3 



c 


X 


3 






3 



xxxeNQ. 


o 

CD 



_ _ 

M 

0- 1 



_ 


— NJ Q —1 < 3 


2 

O 


X 

> 

X > 

X 

3 X 

X 

X < 1- 3 (J CJ 


A 


— < X < 0 

3 A 

CJ 


A 




X 

O 3 Z 

Z O Z 

2 



z 


z 

z Q- z 




z z 

M 

Z Z —1 < CC LU 


< 



z 

O 

z 0 

3 

<00 

CJ 

O CL A < 2 3 




> Q Z CC 

3 N < 

CJ 3 

N 

2 


3 



2 CO - 

— Q 

“D 

“D 


X 

— 


— 

< CJ cc 

“D CM O 



—<e<o-oc 

cl 


cc 

Q 


— 

~ 

— ^2 

— 

CJ CL Q 

Q 

CO CC CJ O CL 


3 


X 3 — c 

A CC 

CJ 

Q 

A 

CC 

~D 


O 


— 






o 

cc 





1 CD 





3 



0 LU 












A 










A 



z 





LU 

O 





o s 



o 


A 



O A 


A 







A 



A 


A 








•*r 


Q 

-J 





X 

3 





OO 3 



CO 





CC 

< 


3 







3 



< 


3 








3 


3 

> 





o 

co 


X 



CM (O 



2 : 


* 



A 

A 


2 







3 



3 


A 








A 


A 

o 








X 



32J 



3 


* 






A 







CL 





>- 










3 

V 




* 

* 

* 

* 

CJ 



* * * * 

* 

* 

A 


* 


* 

* 

* 

* 

LL 







A 


* 

* 

* 

to 







* 

* 

« 

A 

o o o 

o o 

o 

o 

O 

o 

o 

O 

o 

o o 

O 

O O O o o 

o 

O 

O O 

O 

OOOOOOO 

O 

O 

O 

O 

O 

0 0 

O 

OOO 

O 

OOO 

O 

O O 

O 

O 

OOOOO 

O O 

O 

O 

O 

0 

O 

O 

O 

O O 

CO oi o H N 

A 

3 

A 

LO 

fx 

00 

CD 

O rH 

CM 

A rH CM A -J 

A 

LO 

rx 00 

CD 

O HCM A J 

A LO rx 

00 

CD 

O 

rH 

CM A 

J- 

A A rx 

A 

CD O 3 CM 

A 3 

LO 

LO 

rx 

OO CD O 3 

CM A 

3 

A 

LO 

rx 

CO 

CD 

O 

3 

CM 

lO tO N 

rx rx 

rx 

r*x 

rx 

rx 

rx 

rx 

rx 

00 OO 

OO 

00 O O o o 

o 

O 

0 0 

O 

H HHH H 

rH 

rH 

rH 

rH 

rH 

CM 

CM 

CM CM 

CM 

CM CM CM 

CM 

CM A A A 

A A 

A 

A 

A A A 3 3 

3 3 

3 

3 

3 

3 

3 

3 

A 

A 

A 

H H rl 

3 3 

rH 

rH 

rH 

rH 

rH 

rH 

•—i 

rH rH 

rH 

rH O O O O 

o 

O 

0 0 

O 

O O O O O 

O O 

O 

O 

O 

O 

O 

O O 

O 

OOO 

O 

OOOO 

O O 

O 

O 

O 

OOOO 

O O 

O 

O 

O 

0 

O 

O 

O 

O 

O 



A 

O 








A 





A J* 










A 



3 







A 




3 







A 

3 








A 





A A 










A 



A 







A 




A 







< 

LL 





r-H 

LL 00 


CD 



LL A 


rH LU rH 










CJ 



A 





A 


A 




A 







CJ 

3 





O 

rx rH 


CO 



LU O 


O UJ rH 










LL 



A 





O 


rx 




O 





LU CM A 

IA LA 

CS| 

A 





CO 

LO LU 

O 

A 



CO LO 

00 

LO CM Q rx 

CD 





A 

LU 

A lO 

A 

Q CO A 

A 

A rx CD CD 

A O 




LO < A rx 

rx 00 

Q 

A 

rx 

A 

A 




A 

IX H M 

i—1 O 

o 

O 





Q 

LU LU 

CJ 

CJ 



Q LU 

O 

LU CJ O A 

CJ 





CM 


CM J- 

CM 

CJ Q CM 

CM 

CM A O O 

A Q 




0 3 3 A 

A CJ 

O 

O 

A 

O 

O 




CM 

< COU 

Q LU 

LL. 

CM 

A 

A 

A 

A 

A 

rx cn 

CO 

(J LL LU LU LL 

LU 

LL 

LL rH 

Aj-LOCDCDCJQLULU 

LU 

LU 

LU 

LL 

O rH 

CM 

A A rx 

CO 

CD < A CJ LL O 

3 

rH 

3 

3 A 3 A 

lo rx 

00 

CO 

CJ 

Q 

A 

rH 

rH 

3 

3 

uuuuuu 

Q 

Q Q 

Q 

Q Q 

Q Q 

Q 

Q Q Q Q Q 

Q 

Q 

Q LU 

LU 

LU LU LU LU LU 

LU 

LU 

LU 

LU 

LU 

LU 

LU 

LL LL 

U_ 

LL LL LL 

LL 

AAA 

A 

A O 

O O 

O 

OOOO 

0 0 

0 

O 

0 

O 

O 

rH 

3 

3 

3 

rA fA IA 

IA fA 

A 

A 

A 

A 

A 

A 

A 

A A 

A 

A A A A A 

A 

A 

A A 

A 

A A A A A 

A A 

A 

A 

A 

A 

A 

A A 

A 

AAA 

A 

AAA A 

A 3 

3 

3 

3 

3 3 3 3 

3 3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

A fA fA 

rA A 

A 

A 

A 

A 

A 

A A 

A A 

A 

A A A A A 

A 

A 

A A 

A 

A A A A A 

A A 

A 

A 

A 

A 

A 

A A 

A 

AAA 

A 

A A A A 

A A 

A 

A 

A 

A A A A 

A A 

A 

A 

A 

A 

A 

A 

A 

A 

A 


Page 38 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


108 





o 


> z 

O X 


CO 

a 

LU 

LU 

o 

LU 

CC 

CL 


> 

o 


Z 

LU 

> 


—1 CC 

X C- 


X 

- - - - XO- - X- - X- - 

UU X X H O .3- X > 1^-30. cn o' I— 

X H IO U O CO O tH O X H C_> LU 

- - 1 - 00 - - 1 r-- - 1 o - - 


X - - X- - X- - x- 

00—1 CO— rA x 

U < J H □ □ rH Q Z HUJ h 

- - 1 un - - 1 lt> - - 1 o- 


Ci Q. X 

LU O —J r-t __ 

O - - I O- - 


CO LU 
H U. - 
I O - - 


X- - X- X- 

OICOX CO < — LU < 

HU.D-I r -1 C_> O fHOO 

I O - - | LA- - I LH - 


CO CO 
O ZD 
LA - 


X- - x 

LU CO — CO 

O CC rH LU 

LA- - I LA 


22C0222CQ222C0222C1 

ooooooooooocooo 


2 2ta2 22ca2 22cQ222tfl2 2 2cC2 22tti222ca222iC2 22ffi 

OOOCOQCOCOOOCCOOCIOOOCCOCOOOOCOOOOOCOC; 


222 CQ222C0222££1222“2 

COOOOCOCCCOOOOOOCIO 


00000000000000000000000000000000000000000000000000000000000000000000 

NC001OHNKlJ'lAlflS00mOHN^^lAiaN00OOHCMK3ctlAlflNM0)OH(N^JlAiDSC00lOH(Nl^^inc0NC001OHCN^4'lflC0rxc0CnOH(N^^ 
LAlAinLDlDiDlOlDDlOlDlDLJ^r^Nrvr^NNrsNI— cOCOCOMCOWCOaJCOCOaiOlOiaiaiOiaiO'CT'CTlOOOOOOOOOOHHHHHHHHHHNCSNCNtN 
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO'-H'—< rH '—I i"H 1 —1 I-H I—I H rH »-H »-H r—I r—t rH rH rH rH I—I H H H I—I H 


OO OOO CQ LL O 
-3 CM OU-CM O CM 


SQO O LA O 
O JN O -3 CM 


r-t O LA LA O 

O J J O LA CM 


LA LU O 0 3 0 
O J- CM O LA 3 


O rA 
O 3 


OOO 
O 3 CM 


OOO 
O 3 CM 


OOO 
O IA 3 


LA30 

03CM 


la m o 

O J CM 


LA LA O LA CM O LA 
O LA CM 04CM O 


fC|MLLCOCOJOoOlDLL^<OU.01CM3 
33LLN3LAU33LAU.03 1ALL01ALA 


Ql^OL.KUL3LLtaO)OLLrc>ooco 

UJ3U.Q3LALLQ3CMU.LU1A3 


(71 O CO LL 
LU LA 3 LL 


MjoiLcainoLL 

Ll_J CM LL LL 3 CM LL 


CO 

o 


LU H (71 LL CQ 
U33U.Q 


lAcnLl_LOrACnU-lO 

L^J-U.QlAJ'LLLU 


LL. H IA 3 CO 
COOOCOO 
3 3 3 3 3 
fA hA (A (A K1 


CO < CO Q LL 
OOOOO 
33333 

IA rA IA IA fA 


H CM 3 CO OO 
OOOOO 
33333 

rA fA (A fA IA 


cn CO Q LL O 
Q O O O LU 
3 3 3 3 3 
rA rA rA rA rA 


CM3lOS51Cfl 
LU LU LU LU LU LU 

333333 
rA rA rA rA rA rA 


Q LU O CM -3- LA 
aiLUU.LLU.LL 
3 3 3 3 3 3 
rA rA rA rA rA rA 


N CT) CQ O LJ 
U_Ll.U_Li.U_ 
3 3 3 3 3 
rA rA rA rA rA 


O CM rA LA N C71 
OOOOOO 
LA LA LA LA LA LA 
rA rA rA rA rA rA 


< O LU O rH rA 
O O O rH rH 1 —I 
LA LA LA LA LA LA 
rA rA rA rA rA rA 


LA S CO < O LU LL. rH 
HHHrlHHHlM 
LA LA LA LA LA LA LA LA 
ia ia rA rA rA ia ia rA 


rA LA CO 
CM CM CM 
LA LA LA 
IA IA IA 


CO < O O LL H (A 3 
CMCMCMCMCMfArArA 
LA LA LA LA LA LA LA LA 
IAIA IA IA IA IA IA IA 


* 

0 * 1 - 
Z * X 
X LU 

O I- 2 

U_ X 


>- 

CC 

CC 

< 

o 


o 

UZ 


* 

* 

* 


00 LU 

— <cc 

X — h- -JX 

O CJ CC CO 

<0-0 W < U.Z 
CQXh < Q. OLU 


MZO 

LU 

- Oh 
—1 I— err 
CL < 

X l-K 

— Z CO 
— 

>- OOO 
CC o-h< 

CC CQ 

< I h- 
O Z CL 
X — o 
0000 

Z h— Q-I 

< 

Si 


ooooooo< X — o—l 


- - - - - - — x- - - - x- - - - x- - - - x- - - - x- - 

Z Q. CC o X CC O X cc-i CQ X X Hi CC CC CM CQ _l X O < < —I _l X O < CM CO < XWO < -J < 

rH O rH _J H U_ CC HN < H LU O O rH LL < r( CM I O H S < rH CM X O H Ll X HfA|— rHf^J— HrAQ 
I o - - I - -- | o- - I rH - - | O - - I rH- - 1 - - I CM - - I - - 1 cm - - | - - 1 fA - - 1 r*«.- - 


>-XXXXXX< h 

ccooooooo: LU 

I—OOOOOCO CC 

z 

LU 


* 


>- X Q- 
KZZ 
I-X IA 


CO 2 2 

OOO 


LU O CQ 

o < < 

* Z CM I— 

* x cs) a. 

* -I * * o 


2 cq 2 2 2 cq 2 22 C0222C0222CQ222CQ222C0222 

0000000 00 ooooooooooooooaooooo 


CQ222C0222C0222CQ22 

oooooocooooocoo 


2 CQ 2 
OOO 


00000000 0000000000000 

HCMIA^LACOrxOO 0lOHCMHCMrA31AcflN0001 
CM CM CM CM CM CM CM CM CMrAlArAOOOOOOOOO 
rHrHi-HrHr-HrHrHrHi-HrHrHi-HOOOOOOOOO 


OOOOOOO 
O rH CM fA 3 LA LO 


OOOOOOO 


00 o o 
rxoo cn o 

i—trH r-H CM 
OO O O 


OOO 
rH CM IA 
CM CM CM 
OOO 


OOOOOOOOO 
3 LA CO CO J1 O 1 —ICM 
CM CM CM CM CM M IA IA IA 
OOOOOOOOO 


OOO 
rA j- LA 
rA tA rA 
OOO 


000 

CO rx CO 
rA rA rA 
OOO 


OOO 

07 O rH 
IA33 
OOO 


OOO 
CM rA 3 
3 3 3 
OOO 


OOO 
in id s 
333 
000 


000 

00 cn o 

3 3 LA 
OOO 


OOO 
rH CM IA 
LA LA LA 
OOO 


OOO 
-3* LA LO 
LA LA LA 
OOO 


CQCQCQCQCQCQrxO rA IA 
rHHHr-HHHCOO HO 


O U_ o 
O 3 CM 


OOO 
O -3- CM 


O CM O 

O LA CM 


HO 
-3-CM 


IA 

-3- 3 


o i—t o rxoo 3 o 

03CM 0-3-3- O 


O N CO 3 
CM 0 3 3 


OOO 
03 CM 


.3 o 
O LA CM 


O j- O 
O LA CM 


r-^ 3 o 

O 3 CM 


O 

o 


LL O LU O LL fx. CM 
LL O 3 LA LL O LA 


LL CM IA LL 1^ CMO U. CQ OO OO 
O LA 3 LL H LA-3- LL LU LA 3 


U_CMCMU.CMrAUlLN3Hu_<OU 
rH LA LA LL- CM LA 3 LL. CM 3 3 LL CM 3 3 


LLrAHU-NrAHlLSrAIA 
CM 3 3 U_ rA LA 3 U_ IA LA 3 


< OHLL LL 
rA 3 3 LL IA 


LA LA LO OO CT1 < CQ O 
LALALALALALALALALA 
333333333 
rA rA fA rA rA rA rA rA rA 


OOLUHHHCM3 LO 
LAlALALOLOLOLOLO LO 
33333333 3 
rA rA rA rA rA rA ia rA ia 


OO cn CQ O LU O CM 3 LO 
lOiOLOLDto^xrxrxix 
333333333 
rA rA rA rA ia ia ia rA ia 


rx. cneQ O LU 
rx rx.r-* rx. 

3- 3-3- 3- 3- 
rA rA rA ia rA 


O CM 3 LArxcnCQOLUOCMrA 
000000 cocooooooooocncncn 
3 3 3 333333333 
rA rA ia ia rA rA rA rA ia ia rA rA 


in rx 01 
cn cn cn 
333 

rA rA IA 


< O LU 

cn cn cn 

3 3 3 
ia rA rA 


O i-H IA 
< < < 
3 3 3 
rA rA rA 


in rx co 
< < < 
3 3 3 
rA rA rA 


<UID 
< < < 
3 3 3 
IA rA IA 


LL rH IA 
< CQ CQ 
3 3 3 
rA rA rA 


LO LO 00 
CQ CQ CQ 
3 3 3 
IA IA IA 


<00 
CQ CQ CQ 
3 3 3 
IA |A IA 


February, 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 39 


109 






3 

o 


Cfl I CQ < K 

< I <UJ O 

I— I I CD X 

I X < 3 

LU I O X 

ciaw 

I — UJ 


Q_ </) U5 

3 X O O 


3 2 CO 3 
C C C D 


- - X X 

2 : — u. m 
> o o 

- - on 


— x u. 
z O 


X- - X 

OlCCLL 

o < O 

m - - O 


x- - xx- - xx- - xx- - z;x- - xr-*-- 

C3 3 X I s * CM ”D .r-J-O .U.H J-Noa .NOttl- 

oo oo • • o o • . o o X oo • •u < w 

m - - o oo — - O oo - - OO- - OO- - o O-O 


3 3 cc 3 : 

CCQCi 


»333CC333CQ333CC333CQ333^333C0 

:333333333333333333333333 


< ca ^ 

2 UJ 
U UJ —I 

ca cn ca 
o co < 
3 < H- 
I CO o 

I — LU 

I 3 h- 

I o 
i •• q: 
i lu a. 


i o H co 

I Z W — 


ooooooooooooooooooooooooooooooooooooooooooo 

fAjtlfliaSOOaiOHNrAJiniOM»OIOHNr^JinWNMCnOHNr^JinWN»OlOHNWJW 

^SSmmfflOOOOOOOOOOHHHHHHHHHHNNNNNNtMNNNlAr^^^ 

SSSSSSSSScMCMCMCMCMCMCMCMCMCMCMCMCMCMOJCMCMOMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCM 


OO UJ UJ 
O CM CM 


OO LU LU 
O CM CM 


cn uj lu 

O CM CM 


< K\ O 
O in CM 


inoo j-oo m 3 o m *-h o rnrno 

in J OWN OJ-CM o -J- CM OJ-CM 

SKESSSuSSSoSaJOOJUlUUaMOOJNUOJJUUIANUOlAWO 

^iMj(3oQTimntLOWJlOr'OiaClJJON4i^NClCilOUJOMI r lirtP'01<UlUOHi 

SiSS-SSSSgSSSoSuSSuuQQDDCCQQCLJUJUJliJluuluJLilu:^^ 

inininininininininininininininininLnininininLnininininLninLninininininininininin 

mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmr 


ca ca 
3 o 
c o 
< < 


i ca a 

lu x 
• x c 

o 

J 3 

LU CD 

ca z 
j o — 

LU I— 3 
: 0.(00 
3 >- -I 
> h- Z —i 

o c 

. LU — LU 
3 3 h- 
O — X 

O O z 
z < 
a. o —i 
o o co 


CM CNI H m H 


O X CD 
< 3 -J 
ZZU.HCO 

->- o o 

J J h-uu 

o o o o o 
o r* oo 03 o 
m m m m 3 

CM CM CM CM CM 


r-i m in co 03 


1 - 

X 




o 

< 




UJ 

ca 




3 

CD 




3 

O 




O 

ca 





Q. 




ca 





LU 

3 




—1 

3 




3 

3 




X 

3 




3 

x 




3 • 

3 




3 3 

3 




< 3 

3 




3 3 

< 




— 3 

3 



v 

3 X 

— 



O O 

3 

3 



o o 

3 3 


21 


rH 3 

X 3 

3 

< 


m m 

t- < 

X 

ca 



3 

h- 

CD 

3 

o o 

3 — 


o 

3 

H- 1- 

Z 3 

3 

c: 

CL 


— 

a: 

a. 

x 

3 3 

3 3 

< 


< 

3 Z 

3 CD 

c_ 

3 

X 

3 — 



o 

3 

CD \- 

1 O 

o 

a: 


2 3 

h- 

o 

3 

3 

3 C 

x 


O 

— 

3 a: 

3 X 

o 

3 

X 

3 

ca < 

H 


H- 

< l- 

ca 


3 



3 o 

3 

< 

cc 

3 3 

3 o 

O 

X 

O 

— 3 

o_ ca 

>- 

— 

3 


X CL 


CD 


ca 3 

< 

3e 

— 


3 3 

3 3 

o 

ca 


3 CD 

~T~ 

_J 

o 


CD < 

ca h— 

3 



X 1- 

3 

< 

3 


3 

3 3 


x 


3 3 

3 < 

3 

i- 


3 O 

T~ 

3 



< CD 

3 X 

— 

i— 


3 X 

3 < 

3 

3 


— >- 

3 ca 


X 


3 3 

< cd 

3 

— 



3 O 

— 

< 


3 3 

— ca 

T* 

CD 


X X 

3 Q. 

I— 

< 


h- h- 

* * 

« 

« 

* 

* * 


- - x- - x- 

< — LU X — CO O 

X H LU DC HU. o: 

- - i in - - i in - 


X-- X-X-X-X-X- - X-- X- - X--XX--XX-XX--XX--XX--XX 

LU O— 0<tO «<U O CO co OO CO co O <c OO x < O O <C cooas^ - QrNinQau.CM(0<LI.<U<LLHQ.fl.LLin 

U. Q. oo OO O CO CO Q 00033 00 03 CQ OO < Z co < q: OO CO q: oo CQ Z OOZ OOO UJOh XLUOQXOOO OO 

in-- I rH - - I «-l- - | rH - - | rH - - I r-t - - I rH - - | r-i - - | r-i m. - O CM - - O CM - - O W- - om- - OKU - om 


33CD333CQ333C0 

33333330303 


3 33 C0233CQ333CQ333CQ333CQ333C022 
3 33 33333333333333333333333 


333333333033003 


2 2 CO 2 2 

3 3 3 3 3 


2^2 2 2 0 22203 2 

33333333333 


oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 

UUQNWaiOHNW^iniONWOTOHNW^iniflNCOOlOHNW^iniflNOOfflOHNWjfiniOScooiOHNfO^iniONOOcnOHNWUiniONcOOlOHN 
cMCMCMCMCMmmmmmmm mm muuuuuu4-uuj , Lnininininininininmiou3u3io(oioiou3U3ioh.rNr'r*r*r*r*rsr*r*cocx3oococoooc»cococoa)cncn 
HrlHHHHHHHHHH rlH HHHHHHHHHHHH H HHHHHHHHHHHHHrH H rH rH r—4 rH rH rH *-H rH rH rHHHHHHHHHHHHHHHHH 


m cm o 
o in cm 


in cm o 
o m cm 


in oo 
o in cm 


r-i Jt Q 
O uj- CM 


H JO 
O J- CM 


h in o 
o in cm 


rH CM O 
O J N 


rH LU O 
O uj CM 


rH CM O r-H CM O rH 3 O 
o in cm o in cm o jn 


CM UJ O 
O -J- CM 


cm m o 

o -J- CM 


m j co 
o m in 


m j- oo 

O JlA 


m Li_ o m 

o cm ® 


H Ol U. UJ OO Ol 
J J LL UJ m J 


LO Li. CD 
U_ -Zt -J- 


m cn oo o r-i j* oo oo 
LU CO J J Lu oo 


mooomcMoooomcMoooH 

JLUCTlinjLUCTl(nJU.<J 


COCOcOHOOOLUHOOOOmONJJOlNMn^NlLNW 

u.<inju.(fljju.cojinuojinoojinujoin 


LU < O 

LU O J 


LL rH o O LU lA 

O O in in O O 


lOOO<fc03LUrHCM^-lO 

in in in in in in in in in w 
mmmmmmmmmm 


COOlCfiCU-ONJlflN 

-j- -=r uj-j- juumninin 
in in mmin in in in in in 
m m mm m m m m m m 


oicoouiON jini*oi 
inimniniowiowiou) 
in in in in in in in in in in 
mmmmmmmmmm 


a ouo Nm muoi<u 
UJiDlQNSNNNNNN 

ininininininminininin 

mmmmmmmmmmm 


uJOHKiinuwMoiii 

r*oooooooooooooooooo 

inininininininininin 

mmmmmmmmmm 


ui. rH r-o tn oo << O A Li_ 

oOdOTClOIOlOTOOTO} 
in m in in in in in in in m 
mmmmmmmmmm 


<<55335 

in imninin in 


Page 40 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


110 




z 


* 



lO K> 

K> 


Z IALUN OO Nrl 

O O O O O LO rH r-H 
Z UiCOHoO oo HH 
X ^ wro to Mto 
* LO —I —• —t —I —I —I 


CL 

O 


2 


2 

O 


O. 

3 


< 

o 

< 


3 Z 
CO — 

03 —I 

X X 2 

in aso-ij 

OO 2 h- O —I —1 < X 

o oo u.iw«x<ww 

rH m LL O O -J O — 3 

m x o co x O cl 

O O CL X 

o -J x — -j »- < a. UJ 

oxzzzNiXtnio2Z 

rH _J-<-)WO - 3 — 

hi z o —i 


X 

o 

00 

00 

co 



CO — 
CO -J 


X XX 

in a n Q -J X 

OO x h- O —I -j < 2 

O CO LLXlO»X<C0t0 

H K1 LLOO^-JO — 3 

hi x o oo z o a. 


o oaz 

> -I X — -Jh <CLLU 
HZZZNXWWJZ 

« —I-< “3 CO O — 3 — 

' Z O —j 


UOIO JlflCOCOWH JN 

LUOOOOOOOfHrHrH 
X H 1 —I H rH H H H i—I H H 


ujmmtntntnmmmtntnm 


OOtO4U)00OUJH 
LUOOOOOOOrHfHrH 
XHHrlrlHHHrtHH 
LJ KMO K\ M MKMO IO IO W 










X 




c:x 


2 










ui 


X 


HfN 

LL LU 

< 










o 


LL 

X 

too 

3 Z 

to 










co 


LL 

o 

O°0 

CO — 











HI 

— 

O 

oo 

z Hi 

CO —1 

O X 

.. 








O 




o 

Q -J 


— 

□ 








-J 

X 


— 

-J 

-J -J 

a. 

to 

LU 






LU 


X 

z 

x 

x 

NIX 

X < 

2 3 

»- 






—1 


—J 

— 

— 

< 

3 CO 

-J O 

3 

a. 

< 






— 










LU 






LL 







CL 2 



CL 













H- < 


LU 

O 






LU 







to to 


z 







X 







o — 


— 

to 




LL LU 


K- 







z o 


-J 

3 




3 Z 









3 



X 




CO — 


LU 


o 

HI 

-4 

LO 

OOCO 

LU r-i 


N» 

K 




CO -J 


_J 


o 

o 

o 

o 

oo 

O rH 

rH 

fH 



T 

X 


x 

CO 


1—1 

rH 

rH 

rH 

rH*H 

rH rH 

rH 

fH 

LU 


in 

cl rN 

Q -J 2 


2 


HI 

hi 

m 

hi 

HI HI 

Hi HI 

Hi 

HI 

—J 


o 

X 1-0 

_j _i < 

X 

LU 










— 


oo 

LL X to oo 

X < to 

to 

to 


oo 




fH OO 

O r-i 

rH 


LL 


hi 

ll o o hi 

—1 c_> — 

3 

to 


H> 




Hi HI 

O HI 

H 





X O OO Z 

o 

CL¬ 

< 










LU 


Q 

o 

CL 2 


1 


u~i 


LL 

o 

LUtN 

O N- 

rH 


x 


_j 

X — —1 

1- < Q_ 

UJ 

LU 

o 

O 


LL 

00 

OO 

O rH 

fH 


1- 


X 

Z Z Z Nl X 

to to 2 

z 

oc 

o 











—J 

-< 3 CO 

0—3 

— 


rH 

< 

HI 

CO 

LO 

<t CM 

< Q 

Hi 

in 

LU 




Z O 

-J 

% 

HO 

CM 

CM 

o 

LU 

CJCM 

Csl O 

U 

LU 

I- 






z 










o 

1- O 104 (O OO CQ 

LUH 4 

n. 

o 

2 

o hi 


to 

ooca 

LU rH 

J' 

N. 


to 

o o o o o o 

OHH 

H 

z 

to 

o o 

o 

o 

oo 

O rH 

rH 

rH 


— 

rH 

rH r—f rH rH r—1 

H H H 

H 


to 

rH 

rH 

rH 

rH 

rHiH 

rH rH 

rH 

rH 

* 

—i 

HI 

hi hi hi m hi 

HI tA HI 

hi 

* 

< 

HI h\ 

H"» 

HI 

HHl 

Hi Hi 

Hi 

HI 


X 


< 

CO 


t> 

L 

* 1 
t * 
5 5 


H 2 

CL. O 
< O 


»- CO 
00 LU 
CL X 
— O 


* 


V * 


LU CO 
-J z 
CO LU 

2 CO 
LU w 
00 

to CO 
< CO 

to 


Vo- 


XN OONX 
OO X LU o U)HH 
I O 03 CO HH 
ILOHfOftMAHI 

oo hi hi 

Q O -J x 
'o _i x — -J-J-JQ.W 
OXZZZMXX<2 d 

rH -I -<-3W JO-5Q. 

hi 

UO^4lDC0OLUH4rs00 
LUOO OOO O OHHHH 
XHHHHHHHHHHH 
LUHitnHiHiHiHiH\HiHiH\Hi 


0. 

3 


LU 

< in 

CO o 

O oo 
lu o hi 


NOON 
LJ O LO H H 
X O CO CO H H 
U- x rH HI HI HI rH 



O OO —I -J 



— < 


M X X < 2 
”3 C0 —10 3 


CO 

3 

CL 


OOmj-OOOCOLUrH 

LUOOOOOOOt-H 

XHHHHHHHH 

luhihihihihihihihi 


fN 



hi hi 


to 


LU 

CO 

< 


o 

z 

o 

H 

X 


to 

CO 

3 

to 


CO 

Q 


> in x n con x 

OO X LUOOHH 

>000 U.XOCOCOHH 

> fH Hi HOH WKIKIHI 

m x o co hi hi 

N Q O o _J X 

: o —i x — —i —i —I cl to 
>OXZZZnIXX<23 
: *-H -J- <0(0 JUTCL 


oomj-oooccuHj-Noo 

LUOOOOOOOrHrHrHiH 
XHHH HHHHHHHH 
lu hi hi hi HiHiHiHiHiHitnHi 


O 

O 


< 

h- 


lO l 
OO r-i 
hi hi 


o LJOQ JHI 

O CO x o oo —I —I rH to 
o hi u.Xr-*mx<»-«3 
r-i _l LLOtn_J_JOK>Q- 
Hi x o oo _J -J 

O Q LU H N~ 

O—IX — J O H H H 
OXZZZNlXr-trHX*-* 

r-i _J-< “3 CO HI "3 Hi 

hi —I —I —» 

OOKI41000C0LJH4N00 
LUOOOOOOOrHrH HH 
XHHHHHHHHH i—Ii—< 

luhihihhihihihihihi hi hi 


February, 1977 


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


Page 41 


111 



3 

< 


XU h-JO 

uni c: cr 
x co < <c_ll»- 

x x 3 o cr 

zc u u < 

— h- -Jhl- 

3 D ZK (/) 
Kh- Z Z < 

Z Z O O^HLU 

-o uuw> 

CtO UJ u< • < 

C.C. (/) U)U • to 


21 X CO 1 

X ' C 'O' 

u<x=<xqci 


J-> -IX > —I — o 00 
xc<xc<x<3 
— no— z u jcc. 


000000000000 
r-coCTOHrNjt^jmo^M 
j 4 jinm imflini/u/un 

0000 00000000 


u a — uj 

3 < x 

< x c'» x h- 

3 o X cr 

I X UJ 

X H —J I— > 

< UJ »— LU < 

X c u aw 


— 1 
>- - 
uj x 


< Q. 
o C_' 


cr co 
< ^ 


LU w O IT 

x 3 

h- C'* rH O 

cr o 

I- uj < Q- 

— cr x o h- 

00 co 

Oh- O ^ 3 

x co —1 x 00- 

U U UJ • <0 

UJ CC O • 3 < C 


C_) 

< < 

I— co a. 

QC UJ co co £ 

03Q-2Xhs£ 1 

CO CO >- CO LL O O 1 

<Ql|-£i.sz<:di 

3 

ZI —J 

co— iq. — Nwxa 

NZ<CC.ZWUZ 

"LUiUTUC- 

o 


H 

UJ 

o 


UJO 
—I— 
COh- 
— J < — 
UJ J—co 
3 O 
< OQ. 


O uj J— 

CC X UJ 

3 < O 

x x o 

UJ Oh- CO O 

a o 

I UJh- < 
p” OCX X I 

cr co c— o 

\ UJ h-O o 

o >- coo. u> x 


co o 

DC O 
< 

x —I 

O UJ 

3 
in < 


u_ < 
— z> 


: o 

> o UJ 


o uj 
o 3 
< —J 
< 
-j > 


— < o —1 cr 


cr o~: 
o uj c 
i— o - 
00 X « 
< 


UJ UJ 
CO CO 
< < 
-J —I 
I 

h- h- 

'XX 


— CO — 

o - CO 

CO O UJ 

< \ a o- 

2 O -I 

h cc h- cr co 

LjXCUliJliJO 

OU<ON>-2 


o uj 
co 
< 


> o 
< cr 

UJ UJ 


o x 

h- 

X o 


UJ UJ t 

cr cr t 
o o 


-lN-hZZu Jh 


O cr 
o 


1 < 

CO h- 
UJ UJ 

>- o 


o — 

I- o 

CO c_ 


— o 

h- h- 

co co 


o cr 
h- o 
CO u. 


— o 
o o 
a. _j 


- cl z cl 
' >- ' >- '>- z 

< h < h < I- 


0-0. O < 


UJ —1 —I -J -J LL. 

O-1 > —I-1 CL — >X1TN-1 O > < 

><0<><XO-ISI 02 O X > < c cr 

h-XOXOHOOO-S x— o 3 2 o o X c 

7 X 


CL -J CC CO CO —1 

j m uj uj <C < -J UJ 

Q.HQ.QQ —J —I < O f" CO 

X ' >- < ' O O ' < '< 

:3 — <h-3<<XinX<X:Z30.X333 


— <>XCrp'ICL — OQ. 
MCLrjcrcxoxox<X 
303 XX— 330-333 


h- 

O 


« o 

* X 


— CL 
> X 
S Z) 


x x 
< — 
-j cr 

C0 CL 


1 - o 
X x 


X -j 
UJ < 
X o 


3 

o 


***(/> 


X I CO 


o o o 00000000000 00000 000 00 00000000000000000000000000000 
cti OHcsim4*inior''<»CT>o , -«cMmcfLniot''ooa>o »h<m K\4ifloM»cnoHN^4iAiflsoocnoHN^4mijjsooooH 

m o 10 oooooooo^f' f' r^> r-. r^- r^. NMooococoMMeocoooeoCTcicimwcictcicioiooooo o o o o o 3 3 

O O O OOOOOOOOOOO OOOOO 0000000000000000000000333333333333 


C10)<QLJU.N^O^' srs 
cMCMCMCMCMCMmmmmmm 
tOtOLO tO LO ID tO tO CO LO to o 
mmmmmmmmmmmm 


o 3 uj < in 3 3 lu cm 

*-* U- U LL U LL LL U 


CM 3 


uj Q Li q uj o r'UiJ < r>»m in cm uj 3 
rnor'omoou.o f'CM HUr^ U 


<N<UJ<lLMCimNHHO' 

NOUaU<NNHC3UHH 


o 


p' CTO UJHNLTOMOOUQCLLNIOOM COL-JO mjf UMjaiOUUJU-OfALTC0CT<OUU.O^4NNNNaiOUUOO 
r^K\rA^44444444JJ-J^inininininO OLD IfliOOlflOUJONNr'NNt'NNNOOMCOOOCOCOCOCOOOOOCOCOCO 
O CO O tOlOlOlOlOlOlOlDlOtOlQ LOLOOCOlO LOO 10 LDlO LOIOIOLOCOIOIOCOLOLOLOIOIOCOCO CO CO CD CO CO CO CO CO CO CO CD CO CO CO 
m m m mmmmmmmmmmm m m m m m mm m mm mmmmmmmmmmmmmmmmmmmmm mmmmmmmm 


o >- 

UJ -J 

x co 

LL UJ 
UJ CO 
C CO 
X < 
3 

UJ 
LL X 
3 h- 
CO 

CO o 


CC X 

O — 


x a 
< o 
< 


LL X CO 
LL O O 
: o 00 x 


o 3 

CO CO 

m co 


Z 

. LU < 


— — CO 


O O 
CC h- 


< 

h- >- 

co cr 


OO—I x 


: x x m 
• — < 3 


X X * 
CO -J < 


) CO UJ 

> o o 


m m m m m m m r 


H4NO 


3 UJ 

a _i 

UJ CO 


3 CO 
CO CO 
CO < 


X o m . 


co 

< 


j h 4 rs co 


mmmmmmmmmmm 


< O 




uj * 

1 _j 

CO * 

X UJ * 
h- OO 
— CO * 
I 3 < 

1 CO * 


— o 

O CO 
CO < 
< 


o 
cr 3 o 

LL o LL 
>- 

cr uj 
uj x X 
03 Oh 

5 x$ 


j x < uj cr 


co < 
< a. 
h- 

O 
U- u 
O h- 


co x 

—I < UJ I 
O h- 
O UJ < 
Z h > I 
>- UJO 
O CZ 


* iO h' 

) co co 


h h ll o cr 


: Z 2 Z-h- 3 h- 




> o uj : 
. Q- c: I 


-j uj cr 
x uj co c. 
h- cc < 

o < —J lu¬ 
ll -J C O h 

UJ h- < X 

-j ll cr o x uj 

C O X O X 

X uj 

* LU OC CO LU O 

* CO < I x h" 

< X LL h- 

—I -> O O OO h- O- 

LU LU LU X UJ 

COXh-OO-Z 
< < LU X • >- O O ( 
JZOL) . h- Q- O ; 


O 

cr cr 
cz < < 


h- < o * -j Xl 


< 

3 


CO 


X >- o 

cr o u_ cr < 

3 < — cr c. 

—J 'CO < co 

lu x 00 

co h- £2 < 

< o — < x 


1— 3 > — 3 — 

cuoor cc; 

O < X CO < CL 


O LU 
CT OO 
O O 
0 4 4 


>- I-- 

cr < h 


X LU ZZ LO 




* 

h- O 


* 


LU < 

Q_ CO 3 



LL 

00 



X h- 

2 3 0 


* 

—1 


* 

3 3 3 

1- 

-3 Q. LU 



C 

0 


a a cr 

3 


H 

* 

3 


* 

LU UJ LU 

UJ 0 




x 

00 



O 3 

UJ LL 

O 

« 

>- 


* 

X 

< X 

X 3 

O 


O') 



LU — 

3 >- 

_ CO 

CM 

* 



« 

3 Q- >- 

Q. CO 

_ 1 co 

3 





CO >- LU 



« 

« 

* * 

* 

« 

a- u. * 

* * 


OU. IT >- 

O 3 X -j h- CO x 

U CO ' ' X ' ' 

oca c ujujxcx qdc<< 


Q. lu 

CO m X C3 Q- 

— ' ' X >- 

'XCO<<LUh-XCO 


J o 3 

w cr 


3 -j > 

cr x c 


J c c 
O- < < 
— 33 


Q Q — Q > < I->< -IXCT 

<<x<ca;N2>oa:N<xu 
C3-I£ZXCX — XS330 — Q 


— CO CO < < 

cr < ' ' o o. 

o-1 < —I —I 2 X CO 


no>o>uq:-j 
X CCC2X< 
3CX<X3 — O 


* CO * CO 


* £Z 

* X 


OOO 
r-» CM m 
OOO 
OOO 


000 
4 in o 
000 
000 


0000 

f'OO QO 
O O o r-t 
OOOO 


OOOOOO 


OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 

P'OOOOHCMm4LniOf^OOCTO»-lrMm4inoP'OOCTOrHCMm^inLO 

f-Hi-ii—icMCMCMCMCNicMCMCMCMrMmmmmmmmmmmj-j-j-j-^j-^f 

0000 00000000 OOOOOOO OOOOOOOOOOO 


o 


to 


in 

o 


* CT 


<r j- 3 CTCTCTCTrHO^CUr'CO OCJS<CmntM 
CM in L^ NHNHHHNCU ONC3UUMOU 

oooooooooooooooooom4rininiop'30CTOauj«-v_.w 

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.—Ir-I.-I.-I,—Ir-i,—I,—IrHCMCMCMCMCM 
tOtOtOtOtOtOOtOtOtOtOtOtOtOlOtOtOtOlOtOtOtOtOtOtOtOOtOLOtOOtOtOlOOiOtOtOtOtOtOlOlOiOlOtO 
mmmmmmmmmmm mmmmmmmmmrnmmmmmmmmmmmmmmmmm.nmmmmmmm 


CO in LL CM 4 3 
N CO J Q CM O 

JaOOCNm4N<OUU-UOHCNL”lO 


Pa 9 e 42 £)r. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


112 



o 

rH 

N 

Ul 

N 

CJ 

OJ 

OJ 

CO 

UJ 

u 

M 

© 

N 

0J 

’T 

H 

© 

© 

CO 

’t 

A 

© 

CD 

UJ 

© 

CJ 

0J 

O 

Cl 

*t 

M 

© 

N 

n 

© 

iA 


© 

© 

’t 

’t 

05 

Cl 

X 

© 

X 

Cl 

rH 

U -> 

M 

(A 

’t 

IA 

M 

OJ 

rH 

Cl 

(A 

O 

© 

n 

u 

A 

(J 

CJ 

u 

0 J 

01 

© 

© 

(A 

CJ 

M 

U 

rH 

rH 

rH 

Ul 

O 

OJ 

© 

Ul 


in 

H 

in 

Cl 

ci 

ll"l 

© 

M 

CTi 

01 

UJ 

CO 

OJ 

iA 

cn 

OJ 

iA 

(A 

© 

N 

CO 

’t 

© 

UJ 

© 

rH 

Cl 

Cl 

H 

CO 

O 

M 

O 

rH 

rH 

CJ 

O 

rH 

’t 

© 

© 

’t 


M 

Q 

UJ 

© 

H 

CO 

iA 

n 

N 

Cl 

N 

a 

Ul 

(A 

iA 

Jl 

O 

© 

OJ 

CJ 

j- 

Cl 

A 

© 

Ul 

© 

OJ 

OJ 

a 

© 

o 

M 

’t 

■Z 

rH 

H 

O 


OJ 

OJ 

’t 

Cl 

Cl 

u 

rH 

© 

CJ 

CO 

OJ 

© 

’t 

cn 


© 

OJ 

OJ 

05 

N 

OJ 

o 

© 

K 

’t 

N 

Ul 

UJ 

0J 

01 

Cl 

rH 

o 

M 

u 

© 

iA 

rH 

rH 

© 

© 

Ul 


© 

© 

C.J 

lZj 

CJ 

rH 

Cl 

CO 

N 

UJ 

CO 

rH 

f'- 

M 

Q 

cn 

0J 

Z 

© 

© 

H 

© 

I 

’t 

O 

Ci 

© 

N 

ci 

© 

K 

rH 

rH 

© 

M 

Cl 

N 

(A 

rH 

rH 

© 

’t 

OJ 

OJ 

Ul 

© 

H 

© 

n 

N 

x 

CO 

UJ 

Cl 

© 

M 

’T 

iA Ul 

iA 

© 

N 

OJ 

OJ 

© 

u 

Cl 

o 


U1 

© 

0J 

(A 

U. 

O 

01 

N 

M 

H 

© 

rH 

H 

© 

Ul 

Ul 

© 

•t 

UJ 

CO Q 

© 

■I 

Cl 

CTi 

u. 

iA 

© 

Cl 

© 

OJ 

Cl 

iA 

© 

© 

© 

rH 

© 

OJ 

Cl 

N 

CTi 

0J 

OJ 

Cl 

© 

N 

iA 

0J 

O 

M 

H 

O 

rH 

rH 

© 

© 

rf 

OJ 

© 

Ul 

K 

Cl 

o 

N 

in 

rH 

^0 

UJ 

© 

05 

Cl 

© 

rH 

iA 

© 

© 

N 

01 

rH 

d 

Ul 

rH 

u 

f'. 

N 

Cl 

rH 

UJ 

UJ 

OJ 

O 

U 

r- 

© 

rH 

H 

0J 

rH 

Ul 

rf 

© 

OJ 

© 

in 

CO 

CO 

OJ 

’t 

rH 

OJ 

CO 

N 

© 


iA 

M 

© 

© 

© 

© 

rH 

'£> 

Cl 

© 

© 

0J 

01 

o 

Q 

© 

O 

Cl 

(A 

OJ 

iA 

rH 

rH 

rH 

Ul 

© 

© 

*t 

ui 

rH 

05 

CO 

in 

in 

rH 


CO 

rH 

iA 

N 

© 

rH 

OJ (A 

© 

© 

© 

© 

’t 

co 

U. 

d 

ci 

Cl 

Cl 

UJ 

© 

Ci 

© 

iA 

© 

OJ 

iA 

rH 

rH 

rH 

rf 

OJ 

H 


Cl 

a: 

N 

N 

Cl 

rH 

© 

UT 

© 

■0 

(J 


© 

Cl 

CJ CO 


© 

01 

© 

© 

Cl 

Ci 

’t 

© 

© 

© 

n 

M 

A- 

UJ 

Ll 

rH 

’t 

O 

iA 

O 

n 



© 

© 

ci 

© 

ui 

01 

0J 

x 

UJ 

iA 

IL 

CO 

Ci 

a: 

M 

0 l 

rH 

f'- 

Cl 

© 

OJ 

N 

N 

N 

x 

o 

CJ 

C>J 

01 

u. 

U. 

rH 

CJ 

O 

rH 

OJ 

N 

© 

iA 

in 

© 

Ul 

’t 

OJ 

Cl 

UJ 

Ci 

Cl 

ui 

Cl 

o 

>r 

n 

in 

M 

111 

© 

rf 

Cl 

r-- 

OJ 

© 

OJ 

CO 

© 

o 

© 

© 

0J 

ci 

N 

N 

0J 

o 

© 

OJ 

© 

1 - 

M 

O 

© 

CJ 

© 

in 

"T 

© 

rl 

rH 

UJ 

r- 

rH 

U. 

CO 

co 

iA 

u> 

© 

© 

iA 

rH 

in 

c 

cn 

© 

© 

M 


© 

’t 

Cl 

N 

© 

rH 

(A 

M 

\A 

UJ 

'i- 

© 

OJ 

M 

© 

rH 

© 

© 

© 

•t 


UJ 

d 

0J 

CO 

x 

05 

r-- 

N 

cn 

u. 

(A 

© 

’t 

Cl 

© 

© 

i 

’t 

© 

CO 

<J 

N 

’t 

ci 

Cl 

OJ 

Cl 

© 

© 

o 

Ll 

OJ 

d 

n 

O 

o 

O 

rH 

M 

© 

Ul 

rj- 

© 

Q 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

O 

© 

© 

© 

ID 

© 

N 

05 

m 

X CO 

o 

a 

Ul 

© 

© 

rH 

OJ 

iA 

•t 

Ul 

'L' 

N 

CO 

<Tl 

Cl 

Cl 

ci 

Cl 

ci 

M 


M 

M 

M 

n 

’T 

’t 

’t 

't 

•t 

’t 

't 

’T 

•t 

’t 

iA 

Cl 

Cl 

Cl 

tA 

Cl 

M 


(A 

n 


M 

M 


iA iA 

(A 

n 

01 

n 

M 


N 

1L 

0 

(•'I 

UJ 

0 

I 

Cl 

i 

UJ 

J 

CO 

1“ 

5 

i/i 

i/i 

i 

in 


ID 



N 


'J5 

© 

Ul 

01 

© 

© 

01 

CTi 05 

rH 

© 

© 

Ul 

CJ 

01 

© 

05 

•55 

© 

© 

“T 


•55 '55 

d 

Ul 

d 


r- 

H 

(A 

X 



M 


Ul 

© 

© 

’t 

OJ 

o 

Ul 

A- © 

© 

A 

OJ 

© 

A 

Ul 

CJ 

© 

Ul 

OJ 

© 

im 


CJ r- 

(J 

X 

CJ 

© 

LU 

UJ 

CJ 

d 



© 

© 

© 

© 

© 

© 

© 

© 

Ul 

OJ © 

© 

rH 

rH 

N 

01 

in 

© 

OJ 

CJ 

A 

© 

H 


N '0 

UJ 

X 

Ll 

UJ 

X 

'0 

'■l5 

X 



© 

© 

’t 

OJ 

Cl 

Ul 

OJ 

© 

© 

Ul OJ 

cn 

A 

A 

CJ 

© 

Ul 

OJ 

CJ 

A 

Ul 

© 

f- 


uj Ol 

f- 

CJ 

OJ 

IL 

N 

iA 

Ol 

© 



© 

© 

Cl 

’* 

© 

© 

CTi 

© 

© 

CO CTi 

05 

H 

OJ 

© 

X 

© 

CO 

N 

© 

01 

© 



UJ OJ 

01 

CO 

UJ 

<0 

© 

X 

OJ 

UJ 



OJ 

01 

rt 

Ul 

© 

© 

•t 

OJ 

Cl 

Ul 

© 

© 

Ul 

OJ 

© 

Ul 

Ul 

CJ 

© 

Ul 

© 

J 


f - rH 

OJ 

rH 

Ol 

IA 

•t 

N 

Ui 

ti¬ 



rH 

© 

CD 

Ul 

© 

cn 

Ul 

cn 

© 

Ul © 

© 

© 

© 

OJ 

© 

01 

© 

© 

rH 

OJ 

© 

o 


Ul OJ 

•o 

UJ 

A 

Ul 

CJ 

CJ 

d 

ll. 



’t 

© © 


OJ 

UJ 

’t 

rt 

© 

© Ul 

OJ 

X 

A 

in 

© 

© 

A 

OJ 

© 

Ul 

© 

LL 


H CJ 

01 

U 

H 

01 

Ul 

CJ 

U 

© 



V 

© 

© 

OJ 

*T 

© 

© 

rf 

© 

© Ol 

01 

•55 

rH 

© 

05 

Ul 

•7i 

05 

© 

I 

© 


© Ul 

OJ 

© 

LU 

01 

d 

Ul 

© 

'0 



Ul 

OJ 


Ul 

Ul 

© 

© 

t 

OJ 

© A- 

A 

© 

© 

A 

Ul 

CJ 

A 

Ul 

CJ 

© 

© 



CJ © 

Ul 

t 

OJ 

CJ 

CJ 

H 

rf 

UJ 



01 

rH 

© 

© 

Ul 

o 

© 

rH 

CTi 

© Ul 

A 

© 

© 

Ul 

rH 

© 

Ol 

01 

© 

N 

© 

h 


OJ 01 

d 

UJ 

•o 

© 

d 

01 

CJ 

H Ul 


Ul 

’t 

CJ 

© 

in 

’t 

© 


’t 

© © 

A 

OJ 

Cu 

A 

A 

CJ 

© 

A 

OJ 

CJ 

© 

H 


© oj 

O 

05 

Ol 

A 

© 

OJ 

Ui 

U. 

CJ 


0- 

rf 

© cn 

© 

•55 

© 

Ul 

Ul 

© © 

rH 

OJ 

05 

OJ 

A 

© 

M 

A 

© 

N 

© 



rH © 

UJ 

d 

UJ 

•J 

UJ 

f- 

Ol 

'j5 

rH 


© 


OJ 

CJ 



© 

© 

Ul 

OJ © 

A 

A 

© 

© 

Ul 

OJ 

© 

A 

OJ 

CJ 

© 

U 


H ’t 

N 

CJ 

in 

Ui 

01 

r-. 

CJ 

01 

UJ 


OJ 

U 

’t 

© 

Ul 

’t 

Q © 

01 

Ol © 

rH 

OJ 

© 

A 

01 

© 

© 

01 

© 

© 

© 

ill 


Ui U 

•0 

Ul 

OJ 

d 

'£> 

U. 

© 

LU 

© 


01 

*r 

Ul © 

© 

Ul 

OJ CJ 

Ul 

A’ © 

© 

A 

OJ 

© 

Ul 

in 

CJ 

© 

OJ 

OJ 

© 



H Ul 

01 

© 

CJ 

CJ 

01 

I 

OJ 

Ul 

A 


© 

© 

o 

© 

01 

05 

© 

© 

Ul 

© © 

CO 

(A 

rH 

N 

01 

© 

Q 

CO 

01 

© 

© 

III 


Ul d 

N 

•J5 

u. 

u 

Ul 

'0 

u 

d 

CJ 


© 

© 

’t 

OJ 

Cl 

Ul 

OJ 

© 

© 

’t OJ 

•55 

Ul 

A 

CJ 

© 

A 

OJ 

© 

A 

OJ 

© 

UJ 


OJ CJ 

05 

H 

N 

OJ 

Ol 

01 

(A 

CJ 

Ui 


© 

X 

© 

o 

© 

© 

CTi 

CJ 

•0 

rH cn 

CO 

rH 

CA 

© 

OJ 

© 

CTi 

© 

CO 

© 

© 

J 


Ul ' 0 

d 

Ul 

UJ 

UJ 

OJ 

IL 

'■0 

Ll 

01 


OJ 

01 


Ul 

© 

© 

’T 

’t 

Cl 

A" A 

© 

© 

in 

OJ 

© 

Ul 

A 

CJ 

© 

OJ 

© 

LU 

iT 


rH Ol 

•u 

UJ 

U. 

Cl 

CJ 

r- 

Ol 

H 

•J 


H 

© 

© Cl 

CJ 

01 

’T 

CO 

© 

Ul OJ 

© 

CO 

05 

© 

© 

01 

© 

© 

A 

OJ 

© 


Ul u 

’t 

Ul 

rH 

© 

Ul 

x 

d 

Ll 

© 


A- 

© 

© 

’t 


© 


rj- 

© 

© Ul 

OJ 

cn 

Ul 

Ul 

© 

© 

Ul 

OJ 

CJ 

Ul 

© 

LL 


OJ H 

OJ 

rH 

U. 

rt 

H 

•j 

© 

rH 

01 


Cl 

© 

© X 

o 

© 

© 

© 

© 

© © 

A 

05 

rH 

Cl 

© 

rH 

Cl 

A 

N 

Ul 

© 

h 


d X 

■0 

U. 

© 

CJ 

01 

Ul 

01 

U. 

'•j5 


rf 

OJ 


T 

’t 

© 

© 

Ul 

OJ 

© A 

A 

© 

© 

A 

OJ 

CJ 

A 

A 

CJ 

© 

© 



in cj 

Ol 

u 

A 

Ul 

OJ 

© 

•J 

H 

O 


01 

01 

© 

0- 

H 

© 

01 

01 

cn 

© Ul 

A 

© 

05 

01 

OJ 

© 

A 

rH 

© 

© 

© 

i 


A ! ■- 

'•0 

X 

CJ 

d 

r- 

UJ 

Ul 

U. 

N 



’t 

© 

© 

-t 

OJ 

© 

Ul 

T 

© © 

A 

OJ 

X 

A 

Ul 

CJ 

© 

A 

OJ 

(J 

© 

J 


Ul Cu 

OJ 

u_ 

Ul 

CJ 

r- 

u. 

rH 

rH © 

© 























X 











© 

© 

’t 

© M 

01 

© 

© 

© 

01 

© ' ll 

rH 

OJ 

CO 

H 

01 

05 

•0 

A 

© 

0- 

© 

U 

X 

•55 UJ 

OJ 

H 

d 

UJ 

■j5 

'J5 

© 

Ul 

'•J5 

n 

© 

Ul 

OJ o 


OJ 

© 

© 

rf 

OJ © 

A 

A 

© 

© 

A 

Ul 

© 

A 

OJ 

CJ 

© 

111 

• o oi r - 

d 

rH 

CJ 

r- 

01 

01 

© 

Ll 

•J 

M 






















Ol 












© 

fl 

01 

© 

0- 

© 

u 

CTi 

rH 

CTi © 

rH 

Ul 

© 

CO 

A 

rH 

N 

(A 

© 

© 

© 



•55 Ul 

u 

'0 

Ul 

© 

UJ 

U. 

N 

'•j5 

'■j5 

© 

01 

Ul 

T © 

© 

’t 

’t 

© 

t 

A © 

© 

Ul 

OJ 

CO 

A 

A 

CJ 

© 

OJ 

OJ 

© 


3 •£' © 

•0 

f^1 

Ll 

’t 

'■0 

N 

© 

01 iA 

X 






















* 

9 











T 

© 

© 

Cl 

© 

Cl 

cn 

05 

© 

Ul 

OJ © 

© 

01 

H 

05 

OJ 

A 

CO 

Ul 

I 

•71 

© 

jp 

• J5 X CO 

Ul 

CJ 

'•J5 

CJ 

X 

X 

H 

N 

A 

M 

© 

© 

rf OJ 

u 

’t 

’t 

© 

© 

A OJ 

•55 

Ul 

A 

© 

© 

A 

A 

© 

A 

A 

© 

'ii 

01 OJ © 

05 

CO 

01 

Ul 

CJ 

CJ 

rH 

•55 

X 

© 

© 

© 

© © 

© 

© 

© 

© 

© 

© © 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

VI 

Cl 

© © 

© 

© 

© 

© 

© 

© 

© 

© 

© 

ZZ 

r 

ffl 

CJ 

Ci 

© 

© 

© 

rH 

01 

01 A 

Ul 

©' 

0- 

CO 

cn 

Z 

CO 

CJ 

d 

© 

Ll 



© H 

OJ 

01 

A 

Ul 

u 

r- 

•55 

Ul 

X 

5 

’t 

■t 

•t 

-t 

"l- 


in 

Ul 

Ul 

Ul Ul 

Ul 

Ul 

U1 

in 

Ul 

Ul 

Ul 

Ul 

Ul 

Ul 

Ul 


D 

•j5 'j5 

*J5 

'£> 

'0 

0 

'J5 

-15 

u 

'•J5 

'•D 

Ci 

Ol 

01 

Ol 01 

01 

Ol 

1^ 

01 

01 

Ol 01 

01 

01 

01 

01 

iA 

01 

Ol 

Ol 

Ol 

01 

01 


d 

01 M 

01 

Ol 

01 

iA 

iA 

A 

f-1 

01 

1 


O 

UJ UJ 

CC -i 

CD 

< CO 


o UJ 



»- o 


UJ h- u. h- UJ 

x uj u. uj Z Z 

H >-« — H- 

. <z • • • 

. 00 l/) . . ■ 


UJ h- 
o ZD 
< Q. 

o- y- 

(/) ZD LO % % % % 

o __ 

o. x to cc a: cc cc 
z uz<<< < 
oziaocaco: 

A 


I O 
* X 


o o o o o o o 
(N ro J ia io r«* oo 



lo 

rA 


r-. 

co 

rA IAU.LLU.LL 
C_) U.HHH H 

U. CN OJ ro J IA U) 

co cr> ci cd ot cn cn 
io io ia lo io to io 

rA K> fA fA IA IA rA 


X CC 

UJ 3 

UJ x h- 

_j uj a: 


cc 





< 


o: 

X 

Ul 


































cc 



Ul 


X 

Ul 



—1 



OQ M d 

(A U5 

rH 

rH 

M 

© 

H Cl 

d 

Cl 

X 

© 

Cl Cl 

© 

Cl Cl X CJ Cl 

A 

Cl H 

Cl 

CJ 

Ul 

d 

© d 

d 

© 

A 

© 

iA 

— 



—J 


CL 

-J 

% CD -J 

III 


d U 

O 

M © 

M 

iA 

(J 

A 

N Cl 

(J 

Cl 

CJ 

© 

Cl Cl 

r- 

ci cj © m n 

X 

r - ci 

(J 

Cl 

n 

A 

M 

o 

o 

rH 

u 

Cl 

Cl 

z o: 



CO 


-J 

CO Ul 

Ul < 


































< 



CO 


< < -J X CJ 



M H 

d 

<A X 

O 

© 

rH 

Cl 

Cl A 

ci 

CJ 

rH 

Ul 

N 

Ul 

M 

© Cl Cl d d 

Cl 

d CO 

Cl 

© 

Ul 

© 

© 

Cl 

c- 

Ul 

© 

Cl 

Ul 

y- x 



— O" 

ac 


1- CD 

CO 


|i 


CM iA 

N 

N O 


N 

Cl 

O 

(J A 

M 

© 

CJ 

iA 

© Cl 

CJ 

d Ci © CJ u 

CJ 

U CJ 

CJ 

C- 

© 

CJ 

O 

Cl 

CJ 

d 

CJ 

Cl 

Ul 

U- O 


UJ 

Z X 

ui ex 

z co 

3 O 

IL 

































UJ 


1- 

Ul 

co c 

— 

— 

Q- h- 

n 


CO 

CJ 

CJ 

d N 

CJ 

rH 

X 

CJ 

Cl d 

© 

d 

CO 

in 

d d 

© 

d Cl Cl Ul © 

© 

CJ CJ 

Cl 

C1 

CJ 

© 

N 

Cl 

© 

Ci 

© 

N 

d 

_J Ul 


>- 

UJ X 

2l u 

CC 

z 



u 


iA 

CM 

n 

O © 

d 

CJ 

X 

Cl 

CJ o 

rH 

CJ 

N 

© 

CJ 

<J 

A 

ON MCI Cl 

N 

A (J 

CJ 

Cl 

Cl 

Ul 

© 

N 

Cl 

Cl 

Cl 

A 

O 

o: 


CO 

h 

3 


CL 


Ul 

z 





























1- o 

UJ 


<< 

Z LU 


1— K CC 



Ul 

d 

rH 

© X 

Ll 

© 

Cl 

X 

Cl Cl 

d 

© 

© 

X 

in 

© 

M 

Cl d rH © © 

CJ 

© © 

H 

Ul 

© 

Ul 

© 

Cl 

Cl 

Cl 

© 

CJ C- 

Z h- 

_J 

< 

-J X 


O UJ z 

UJ 3 

j 


© 

O 

U. 

CM © 

A 

© 

(J 

CJ 

Cl Cl 

CJ 

N 

rH 

ci 

© 

N 

CJ 

Cl CJ N © © 

Cl 

Cl Cl 

Cl 

in 

CJ 

A 

Q 

u 

Cl 

C- 

CJ 

O 

© 

— CO 

CO 


O CL 

% 

o 


— 


1- 

n 

































a; uj 

CO 

U. 

i/i -J 

od<ccujuj 



X 

© 

d 

UJ t 

© 

© 

rH 

Cl 

© © 

rH 

Cl 

© 

M 

Cl 

Cl 

Cl 

© CJ Cl CJ N 

rH 

Cl © 

© 

d 

© 

© 

CJ 

CJ 

Cl 

C1 

© 

© 

© 

a. cc 

— 

—1 

— < 


U. X 

LL 

Q O' 



OJ 

n 

u 

M (A 

© 

rH 

(A 

CJ 

rH rH 

Cl 

CJ 

© 

Cl 

CJ 

Cl 

Cl 

rH A CJ Cl © 

CO 

Cl © 

o 

o 

Cl 

Ul 

Cl 

Cl 

C- 

u 

© 

© 

© 











111 


© 

•55 

o 

(A 

rH 

© 

IL 

rH 

CJ 

d d 

d 

Cl 

© 

H 

© 

© 

H 

d © Cl cj © d 

Cl © 

CJ 

CJ 

in 

© 

© 

Ul 

d 

N 

X 

© 

Cl 


X 











■o 

U5 

N 

iA 

© 

(J 

Ul 

X 

Cl 

CJ CJ 

Ul 

Cl 

© 

N 

N 

rH 

N 

o Cl C J Ul © 

(J 

N Cl 

d 

ci 

Cl 

A 

© 

© 

o 

CJ 

© 

© Cl 

_j 

UJ 

i/i 


3 






u 

































CO 

X 

— 


Z 



Ul 



/r 


CM 

X 

rH 

U 

H 

cn 

Ul 

Cl 

Ul 

CJ rH 

Cl 

© 

© 

CJ 

© 

d 

X 

rH CJ CJ © © 

Cl 

d © 

© 

rH 

Ul 

Q 

X d 

© 

© 

Cl 

© 

X 

CO 




X 


— 

Q. 



\1 


© 

CJ 

UJ 

Ll 

© 

N 

d 

O 

© 

Cl Cl 

CJ 

rH 

d 

d 

CJ 

CJ 

d 

M M M Cl rH Ci 

O UJ 

in 

d 

© 

Ul 

d u 

CJ 

Cl 

Cl 

© 

Ul 

» 

iH 

UJ 

Ul o 

UJ 


o 

>- 



ft 

































Z LO 


—J 

rH »H 

X ^ 

• 

r- X 

% 

IL 


CM 

© 

in 

A 

© 

rH 

Ul 

rH 

Cl 

A d 

Cl 

d 

N 

© 

Cl Cl 

Cl 

© © rH (J © 

A 

A © 

© 

H 

rH 

© 

X rH 

© 

Cl 

rH 

© 

rH 


1- 

CO 










n 

iA 

n 

U 

© 

M 


Cl 

(J 

N Ul 

Cl 

(J 

A 

Ul 

Cl 

Cl 

Cl 

d H © Cl H 

A 

A © 

© 

CJ 

Q 

CJ 

© © 

Cl 

Cl 

CJ 

© 

CJ 


z 

CO 









































_l CL 

— 

—- 

— — 


— 

— 

CL 

CL 

\- 

iv 


Ll 

N 

rH 

rH 

Ul 

A 

in 

X 

rH 

Cl Cl 

in 

rH 

Ul 

© 

rH 

rH 

© 

Cl X d X © 

d 

© CO 

rH 

Ul 

rH 

Cl 

© Cl 

Ul 

Cl 

CJ 

© 

in 

< O 

cc 

~T 

Z Q. 

CJ a 

CD 

X o 

Ul 

II 


X 

© 

U. 

© 

UJ 

© 

U. 

Ui 

Cl 

o o 

Cl 

Cl 

CJ 

© 

N 

C- 

d 

CJ O O CJ H 

O 

Cl d 

Cl 

© 

© 

A 

© 

Cl 

© 

c- 

Q 

H 

© 

o o_ 

Cl. 

w 

<o 

“D < 

< 

“D 

CL 

CC 

III 

































LU 


H 

CJ 

CJ 

© 

CJ 

X 

CJ 

Cl 

© 

CJ Cl 

d 

© 

Cl 

Cl 

CJ 

Cl 

d 

CJ CO 05 Cl Cl Cl 

rH CO 

© 

© 

Ul 

Cl 

© 

Cl 

Cl 

d 

Ul 

© 

© 


/\ 


—I 



3 


h- 


i 



C*J 

CJ 

UJ 

iA 

o 

Cl 

o 

CJ 

Cl Cl 

U 

CJ 

CJ 

ci 

d 

CJ 

O 

Cl © C- CJ Cl 

Cl © C J 

O 

© 

Cl 

A 

© 

N 

Cl 

o 

rH 

H 

H 


1 


CO 



Z 


oc 


J 































1 


03 



X 


o 


rfl 


Ul 

rH 

© 

IL 

N 

d 

X 

Ui 

Cl 

A N 

Cl 

Cl 

© 

rH 

© 

Cl 

CJ 

H © CJ CJ © 

© Cl Cl 

X 

© 

05 

© 

© 

d 

(A 

Cl 

Cl 

© 

© 


1 


— 



UJ 


CO 


UJ 


© 

iA 

iA 

U. 

05 

© 

© 

CJ 

CJ 

© 

Cl 

CJ 

N 

N 

© 

Cl 

Cl 

© © Cl Cl rH 

rH 

Cl Cl 

d 

© 

© 


© 

O 

C- 

r-i 

Cl 

H 

rH 


* 

■» 

zz 



X 


< 


T* 











































d 


X 

Ul 

N 

CO 

CJ 

X 

iA 

Cl 

rH 

Cl d 

© 

Oi 

C1 

X 

© 

Cl 

u 

d © H CJ d 

d 

Cl Cl 

© 

© 

CJ 

© 

© 

CJ 

C1 

Cl 

Cl 

Ul 

© 

o o 

o 

o 

o o 

o 

o 

o 

o 

o 

o 

III 


(J 

rH 

© 

d 

O 

© 

© 

© 

Cl 

CJ CJ 

H 

Cl 

Cl 

d 

© 

r-- 

rH 

(J © © CO (J 

O 

r- r- 

CJ 

rH 

Cl 

CJ 

rH 

Cl 

o 

c. 

c- 

O 

rH 

Ol o 

rH 

CM 

rA 

Ul 

LO 

A- 

OO 

Ol 

o 

UJ 

































«H CSI 

CM 

CM 

CM CM 

CM 

CM 

CM 

CM 

CM 

rA 

IA 


A 

X 

X 

d 

© 

n 

H 

rH 

(J 

CJ Cl 

d 

rH 

Cl 

© 

Cl 

d 

Cl 

05 CO d d rH 

rH Cl d 

© 

© 

© 

X 

© 

rH 

© 

Cl 

d 

© 

Cl 

rH rH 

rH 

rH 

rH rH 

rH 

rH 

rH 

rH 

rH 

rH 

VI 


© 

O 

CJ 

A 

CJ 

© 

M 

d 

© 

Cl M 

CJ 

05 

r- 

CJ 

Cl 

CJ 

o 

N d CJ U Cl 

Cl O CJ 

© 

H 

N 

Ul 

H 

© 

CJ 

o 

(J 

C- 

Cl 

LO 




LO 



O 



l/l 

cn 

ID 

© 

Ul 

A 

© 

lL 

U 

Ul 

Cl 

Ul © 

rH 

d 

d 

© 

rH 

C- 

CJ 

Cl Cl © Ul X 

d 

C 

0 

© 

© 

C1 

X 

© 

d 

© 

rH 

X 

H 

Cl 

rA 




rA 






I 

’t 

UJ 

05 

UJ 

A 

LU 

© 

A 

rH 

(J 

Ul rH 

Cl 

CJ 

Q 

© 

N 

CJ 

Cl 

Cl Cl N Cl Ul 

Ui 

CJ CJ 

CJ 

C- 

CJ 

Ul 

rH 

Q 

Cl 

© 

© 

d 

N 

CO 



LL < 

-a- 

PM 

O 

o 



IA 

IL 

•D 

rH 

CJ 

U. 

A 

iA 

Ul 

rH 

Cl d 

d 

Cl 

•55 

Cl 

X 

© 

rH 

CJ H Cl © Cl 

Cl © © 

© 

H 

Ul 

© 

© 

Ul 

CJ 

Cl 

Cl 

Cl 

Cl 

Ol 



o o 

< 

O 

rA 

Ol 



VI 

© 

9 

rH 

lL 

UJ 

iA 

(A 

U. 

X 

U 

rH 

Cl 

CJ CJ 

Ul 

Cl 

A 

Cl 

d 

Cl 

05 

© C- CJ © CJ 

CJ 

Cl Cl 

K 

Cl 

Cl 

A 

rH 

© 

Cl 

Cl 

© 

iA 

O 

Q rH 



LO UJ 

< 

LO 

LO 

rA 

rH 

Ol 

H 

LU 

IL 

L) 

U. 

© 

CJ 

A 

Ul 

Cl 

C J Cl 

Cl 

A 

© 

rH 

A 

rH 

d 

d X © CJ CJ 

Cl 

H Cl 

Ci 

(J 

c- 

Ul 

© 

Ui 

rH 

Cl 

A 

Cl 

© 

O LL 



UJ LL 

o 

CJ 

CJ 

CJ 

Ul 

CJ 

Q 

M 

d 

U. 

rH 

U. 

d 

M 

© 

rH 

© 

Cl Cl 

CJ 

A 

Cl 

N 

© 

© 

•J 

CJ d A Cl Cl 

Cl Cl Cl 

CJ 

© 

© 

u 

CJ 

O 

© 

c- 

© 

N 

M 

< 

CO 

CO 

CO Q 

LL 

CM 

■A 

LO 

Ol 

< 


LL 

© 

Q 

© 

© 

© 

© 

O 

Q 

© 

© © 

© 

© 

Q 

© 

© 

© 

Q 

© © © © © 

© 

© © 

© 

© 

© 

© 

Q © 

© 

© 

© 

© 

© 

Ol Ol 

Ol 

Ol 

Cl Ol 

Ol 

< 

< 

< < 

< 


El 

© 

rH 

CJ 

i i 

A 

Ul 

© 

C- 

CO 

Ui X 

© 

CJ 

d 

© 

© 

© 

H 

CJ Cl A Ul © 

N 

05 Ul 

X 

flQ 

(J 

d 

© © 

© 

rH 

CJ 

iA 

A 

LO LO 

LO 

LO 

LO LO 

LO 

LO 

LO 

LO 

LO 

LO 


D 

H 

H 

rH 

rH 

rH 

H 

rH 

rH 

H 

rH rH 

rH 

rH 

rH 

H 

rH 

CJ 

CJ 

CJ CJ CJ CJ CJ 

CJ CJ CM 

(j 

CM 

CJ 

•*-j 

CJ 

CJ 

Cl 

Cl 

Cl 

Ci 

Cl 

fA rA 

rA 

rA 

rA rA 

rA 

rA 

rA 

rA 

rA 

rA 


d 

M 

iA 

M 

iA 

M 

M 

(A 

Cl 

Cl 

Cl Cl 

Cl 

Cl 

Cl 

Cl 

Cl 

Cl 

Cl 

Cl Cl Cl Cl Cl 

Cl 

Cl Cl 

Cl 

f-1 

Cl 

Cl 

Cl Cl 

Cl 

Cl 

Cl 

i-l 

Cl 


February, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 43 


113 



APPENDICES TO CASUAL 


Dear Jim, January 15, 1977 

Thank you for printing CASUAL in your Nov/Dec issue. 

From one of our early phone conversations, I got the impres¬ 
sion that there was a deadline to meet in order to get CASUAL 
printed. I sent off the Finalized source code at that time. I 
reluctantly sent along the partially completed documentation. 
Within a week, I sent the finalized documentation which either 
missed the deadline or it was not clear that it superseded the old 
documentation. In any case, it wasn’t printed. 

Fortunately, most of the errors in the early version were 
spelling and grammar. The biggest change was the addition of 
seven (7) more appendices. A copy of these appendices is en¬ 
closed in the hopes that you can find room for them in a future 
issue. If they are printed the same size as the first ones, they’ll 
take about 1.2 pages. 

The printed version was unclear in Appendix G about the 
address of USRL. Double indirect addressing is used. Memory 
locations 3 and 4 hold the address of the bytes where you put 
the starting address of your routine. This is so the address of 
USRL may change from version to version, but its address will 
always be held in locations 3 and 4. 

Another error occurred in Appendix H. An ASCII tab 
character is 9 (decimal), not 11 as printed. 

I would be interested in hearing from any readers any other 
errors or bugs. 

I hope that aspiring authors can learn from my mistakes: 

1) Don’t send in anything until it is finalized. 

2) Put aversion number and/or date on everything sent 

in. In this way, corrections may be sent in labeled “this super¬ 
sedes version ... ”. 

Thanks, 

Bob Van Valzah 1140 Hickory Trl. 

Downers Grove, IL 60515 
H-(312) 852-0472 
W-(312) 971-2010x231 

APPENDIX I 


COMMANDS 
NEU COMMAND 

THE NEU COMMAND CLEARS THE CASUAL PROGRAM BUFFER OF THE 
CURRENT PROGRAM. IT DOES NOT CLEAR VARIABLE VALUES. IT 
MAY APPEAR IN A PROGRAM, THOUGH IT IS SUICIDAL. 

FORMAT: N (CR) 

SAVE AND TAPE COMMANDS 

THESE COMMANDS ALLOW THE CONTENTS OF THE CASUAL PROGRAM BUFFER 
TO BE SAVED 0N A MASS STORAGE DEVICE AND RECALLED FOR LATER 
USE. R0GRAMS MAY BE GIVEN A SINGLE CHARACTER NAME AT THE TIME 
THEY ARE "SAVED". THIS NAME IS THEN USED TO RECALL THE 
PROGRAM. BY USING DIFFERENT NAMES, MANY PROGRAMS MAY BE SAVED 
ON THE SAME TAPE (CASSETTE), AND CASUAL WILL SEARCH FOR THE 
REQUESTED PROGRAM AT LOAD TIME. IF NO NAME IS GIVEN IN THE 
TAPE COMMAND, THE FIRST PROGRAM FOUND ON THE TAPE WILL BE 
LOADED. THIS FEATURE IS USED TO LOAD PROGRAMS WITH UNKNOWN 
NAMES. IF NO NAME IS GIVEN WHEN THE PROGRAM IS SAVED, IT 
MUST BE LOADED WITH NO NAME. ANY PRINTING CHARACTER IS LEGAL 
AS A PROGRAM NAME. WHEN LOADING, CASUAL WILL PRINT THE 
NAME OF THE PROGRAM WHICH IS BEING LOADED AS SOON AS LOADING 
STARTS. BOTH COMMANDS MAY APPEAR IN A PROGRAM, BUT WILL 
RETURN TO COMMAND MODE WHEN DONE. AN OUT OF MEMORY ERROR IS 
POSSIBLE DURING LOADING. 

FORMAT: T<NAME> (CR) 

S<NAME> (CR) 

OS COMMAND 

LEAVES CASUAL AND GOES TO AN OPERATING SYSTEM ROM. WHEN 
LOADED, CASUAL WILL JUMP TO 374 000 (SPLIT OCTAL) WHEN THIS 
COMMAND IS FOUND. 

FORMAT: 0 <CR) 

RUN COMMAND 

THIS COMMAND CAUSES CASUAL TO START INTERPRETING THE PROGRAM 
CURRENTLY IN THE CASUAL PROGRAM BUFFER. IT MAY OPTIONALLY BE 
FOLLOWED BY A LINE NUMBER WHERE EXECUTION IS TO START. IF 
NO LINE NUMBER IS GIVEN, EXECUTION WILL START AT THE LOWEST 
NUMBERED LINE. THE LINE NUMBER MAY BE AN EXPRESSION. THIS 
COMMAND MAY APPEAR IN A PROGRAM. 

FORMAT: R <EXPR > <CR) 


LIST COMMAND 

THIS COMMAND IS USED TO LIST THE CONTENTS OF THE CASUAL 
PROGRAM BUFFER. IT IS OPTIONALLY FOLLOWED BY A LINE NUMBER. 
IF A NUMBER IS PRESENT, LISTING WILL START AT THE FIRST LINE 
WITH A NUMBER GREATER THAN OR EQUAL TO THE NUMBER GIVEN. IF 
NO LINE NUMBER IS GIVEN, LISTING WILL START AT THE LOWEST 
NUMBERED LINE IN THE BUFFER. LISTING MAY BE STOPPED AT 
ANY TIME BY TYPING A CONTROL C <+C). THIS COMMAND MAY 
APPEAR IN A PROGRAM, BUY WILL RETURN TO COMMAND MODE 
WHEN DOME.. 

FORMAT: L < NUMBER) (CR) 


APPENDIX J 


STRINGS 
STRING INPUT 

STRINGS MAY BE INPUT FROM THE TERMINAL BY A STATEMENT OF THIS 
FORM: 

)C <EXPR>3 

WHEN CASUAL FINDS THIS TYPE OF STATEMENT, EXECUTION WILL STOP 
AND THE STRING INPUT PROMPT IS PRINTED ON THE TERMINAL. 

THE PROMPT IS A MINUS SIGN AND SPACE <"- "). THE USER NOW 
ENTERS THE STRING TERMINATING HIS INPUT WITH A CARRIAGE 
RETURN. YOU MAY CORRECT TYPING ERRORS WITH THE RUB-OUT KEY 
AS LONG AS YOU DO NOT RUBOUT MORE CHARACTERS THAN 
YOU HAVE TYPED. CONTROL U (+U) SHOULD NOT BE USED TO 
DELETE THE LINE BEING TYPED. ANY PRINTING CHARACTERS ARE 
LEGAL IN STRING INPUT. WHEN THE INPUT IS COMPLETE, CASUAL WILL 
PLACE THE STRING IN MEMORY AT AN ADDRESS COMPUTED BY 
ADDING THE VALUE OF <EXPR> TO THE SINGLE BYTE ARRAY BASE. 

THE STRING WILL BE FOLLOWED BY THREE NULLS (000) IN MEMORY. 
SINCE YOU MAY NOT INPUT MORE THAN 72 CHARACTERS, THE LONGEST 
STRING POSSIBLE IS 75 CHARACTERS. 

STRING OUTPUT 

STRINGS MAY BE OUTPUT USING THE PRINT STATEMENT. A 

STATEMENT LIKE THIS WILL PRINT A STRING WHICH HAS BEEN ENTERED 

EARLIER. 

?)C <EXPR> ] 

CHARACTERS WILL BE PRINTED STARTING AT A MEMORY ADDRESS 
COMPUTED AS IN STRING INPUT, AND CONTINUING UNTIL A NULL IS 
FOUND. 

INDIVIDUAL CHARACTERS OF A STRING MAY ACCESSED BY USING THE 
SINGLE-BYTE ARRAY. SEE SAMPLE PROGRAM BELOW. SEE ALSO 
APPENDIX 0. 

10 '=2048: )C 0 ] 

20 ?>C0], ?)[ 2 3 
30 7' [ 0 3;'[2 3 
. R 

- TEST 

TEST 

ST 

84 83 


APPENDIX K 


SAMPLE PROGRAMS 

THIS IS THE SHORTEST NON-TRIVIAL PROGRAM. IT 
IS A DESK CALCULATOR. THE USER TYPES IN MATHEMATICAL 
EXPRESSIONS, THE RESULT OF WHICH IS PRINTED. THE "4■" OPERATOR 
IS VERY HANDY IN THIS MODE OF OPERATION. 

10 ??:R 


FOR GAMING, HERE IS A ONE LINE RANDOM NUMBER GENERATOR: 

65000 R=R*32771.R = R* ((R>0)-(R<0))+l,.= * 

CALL THIS AS A SUBROUTINE WITH THE SEED IN R THE FIRST 
TIME. THE RANDOM NUMBER IS RETURNED IN R. RANGE 
IS 1 - 32767. 


THIS PROGRAM PRINTS A "BARBER POLE" PATTERN. 

50 Y=32:X=64:Z=X 
60 N = 0 

70 ?>N+X+Y-(N+X)/Z*Zi:N=N+1:.=.*(N#64) 

80 ?:X=X+1:.=60 


THIS IS A SILLY PROGRAM TO SHOW HOW STRINGS ARE 

USED. 

107/TYPE IN A SENTENCE/; : )C 0 3 
20 A = 0 

30 A=A+1= .=. *<'l A3#0) 

40 7/HERE IT IS BACKWARDS/; 

50 A=A-1 : ?>'A;:.=.*(A#0) 


Page 44 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


February, 1977 


114 






APPENDIX L 


BINARY TAPE FORMAT 
DATA BLOCK-. 

377 START CHARACTER 

LOAD ADDRESS LOW 
LOAD ADDRESS HIGH 
NUMBER OF DATA BYTES IN BLOCK 
DATA BYTE<S) 

CHECKSUM/ SUM OF ALL DATA BYTES <IGNORE CARRY) 


END OF TAPE: 

277 EOT MARK 

OPTIONALLY FOLLOWED BY A TWO-BYTE START ADDRESS. IF 
THIS ADDRESS IS PRESENT, IT MUST BE PRECEDED BY A 100 PUNCH 


PRAISE FOR ADVANCED MICROCOMPUTER 
PRODUCTS & JAMES ELECTRONICS 

Dear Dr., Dec. 28, 1976 

Enclosed is a copy of the letter Advanced Microcomputer Products 
sent me. I returned the AY5-8500 as requested and received the New 
chip Dec. 10. Installed in its socket it worked right the first time power 
was applied. 

I would recommend James to your readers; I sent them an order on 
a Monday for $40.00 and received it Saturday the same week. 

Thank you for the help; your magazine is the only one I read from 
cover to cover. 

Stuart R. Fallgatter 7910 Rio Vista Dr. 

Goleta, CA 93017 
Nov. 22, 1976 


THIS IS A DESCRIPTION OF THE DATA ON THE CASUAL 

TAPE. 


1 . 

2 

3 

4, 

5 

6 
7 


8 

9 

10 . 
1 1 . 
12 . 

13. 

14. 

15. 

16. 
17 


BINARY LOADER IN BOOTSTRAP FORMAT. LOADS AT 
ADDRESSES 007 000 - 007 301. 

BLANK TAPE 

CASUAL I/O ROUTINES IN BINARY FORMAT, ADDRESSES 
000 040 - 000 047 AND 005 106 - 006 153. 

BLANK TAPE 

THE I/O PATCH OVERLAY IN BINARY FORMAT, ADDRESSES 
000 100 - 001 124. 

BLANK TAPE 

END OF TAPE MARK AND TRANSFER ADDRESS MARK. ADDRESS 
OF I/O PATCH ROUTINE ENTRY 000 100 THIS EXECUTES 
THE I/O PATCH OVERLAY. WHEN DONE POKING, IT RETURNS 
TO THE BINARY LOADER TO CONTINUE READING CASUAL. 
BLANK TAPE 

CASUAL ADDRESSES 000 100 - 005 105. 

BLANK TAPE. 

CASUAL ADDRESSES 006 154 - 007 346 
BLANK TAPE 


CASUAL ADDRESSES 000 050 - 000 077. 

BLANK TAPE. 

CASUAL ADDRESSES 000 000 - 000 037. 

BLANK TAPE 

END UF TAPE MARK AND TRANSFER MARK. TRANSFER ADDRESS 
IS 000 000, THIS EXECUTES CASUAL. 


APPENDIX M 


[From Advanced Microcomputer Products to Stuart Fallgatter] 

In reference to your letter to Mr. Dobb's, we wish to advise that if 
you have a malfunctioned AY-8500 Game Chip that we shipped you, 
please return it to us and we will be more than happy to send you a 
replacement. If we may be of further assistance to you in the future, 
please do not hestiate to call upon us. 

Sincerely, 

Kimm Cornett P.O. Box 17329 

Advanced Microcomputer Products Irvine, CA 92713 

(714) 968-3655 


APPENDIX N 


DECIMAL "POKE" ADDRESSES 

THE ADDRESSES BELOW MAY BE USED TO MODIFY CASUAL 
AFTER THE INITIALIZATION DIALOG HAS BEEN COMPLETED. 

TO USE THESE, SET THE SINGLE-BYTE ARRAY BASE EQUAL 
TO THE NUMBER ON THE LEFT. THEN TYPE "C0 ] = <EXPR>", WHERE 
<EXPR> IS THE NUMBER YOU WANT TO INSERT. 

1279 THIS IS THE ADDRESS OF THE ADDRESS WHERE CASUAL 
WILL PLACE IT'S STACK POINTER+1 POKE HERE TO ALLOCATE MORE 
OR LESS MEMORY TO CASUAL AFTER INITIALIZATION <EXPR 

SHOULD NOT EVALUATE TO AN NUMBER LESS THAN 1700. 


CASUAL "BNF" SYNTAX DEFINITION 
I MEANS "OR" 


1403 THIS IS THE ADDRESS OF THE ADDRESS AT WHICH CASUAL 
WILL EXPECT TO FIND THE OPERATING SYSTEM. REMEMBER: DECIMAL. 


< CASUAL > 

<CASUAL LINE> 

< CL 1NE > 

<LINE NUMBER> 

< NUMBER > 

< DIGI T > 

< STMT > 

< ? S T M T > 

< PL I ST > 

<PEXP> 

<LITERAL> 

< STRING> 

< CHR > 

<CHR*> 

< EXPR> 

< SUM > 

< TERM) 

< F ACT > 


< VAR > 

< SVAR > 

<LETTER> 


<AVAR> 

< SUBS > 

< SEXP > 

< )STMT > 
<=STMT> 

< LEFT PART > 

< COMMAND > 


< CASUAL LI NE > I <CASUAL LINEXCASUAL> 

< LINE NUMBER><CL INE> 

<STMT> I <STMT>:<CLINE> 

< NUMBER > 

<DIGIT> I <DIGITXNUMBER> NOTE 1 

1 I2I3I4I5I6I7I8I9I0 
<?STMT> I <=STMT> I OSTMT) I <C0MMAND> 
?<PLIST> I ? 

<PEXP> I <PEXP>, I <PEXP>; 

<EXPR> I <LITERAL> I <CHR*> I XSUBS> 

/< STRING >/ 

<CHR> I <CHRXSTRING> 

NOTE 3 
X EXPR > 

<SUM> I <SUM>=<SUM> I <SUMX<SUM> 
<SUM>XSUM> I < SUM >#< SUM > 

<TERM> I <TERM>+<SUM> I <TERM>-<SUM> 

<FACT> I <FACT>*<TERM> I <FACT>/<TERM> 
-<FACT> I <NUMBER> I <VAR> I I ? I * 

Z I ! I 6 I ♦ I + I 0 I s I +<FACT> 
<<EXPR>) 

< SVAR > I < AVAR > 

<LETTER) 

AIBICIDIEIFIGIHIIIJ 
KILIMINIOIPIQIRISIT 
UIVIWIXIWIYIZ 
"<SUBS> I * <SUBS> 

< SEXP > I C < SEXP > I <SEXP > ] I C < SEXP > 3 
NOTE 4 

XSUBS> 

<LEFT PART>*<EXPR> 

< VAR> I.I*I!!AI4>IQI + 

R I R<EXPR> I L I L<NUMBER> I 0 I N 
T I T<LETTER> I S I S<LETTER> 


TO SET THE ADDRESS OF THE MACHINE LANGUAGE ROUTINE 
CALLED BY "0" UNDER PROGRAM CONTROL: 

"«3."«"C03:"C03* DECIMAL ROUTINE ADDRESS 

APPENDIX 0 


ARRAY USE 

BOTH THE SINGLE- AND DOUBLE-BYTE ARRAYS OF CASUAL WORK 
ON THE SAME PRINCIPLE: FIRST AN AREA OF RAM IS SET 
ASIDE FOR ARRAY STORAGE THIS IS USUALLY DONE AT 
INITIALIZATION TIME THEN THE ARRAY BASE ADDRESS IS SET 
SOMEWHERE IN THIS RAM AREA. WHEN A REFERENCE TO THE ARRAY 
IS MADE, THE MEMORY ADDRESS TO USE IS COMPUTED BY ADDING 
THE SUBSCRIPT TO THE BASE IN THE CASE OF THE DOUBLE 
BYTE ARRAY, THE SUBSCRIPT IS DOUBLED FIRST. 

MANY ARRAYS MAY BE KEPT AT THE SAME 
TIME BY CHANGING THE BASE ADDRESSES. CARE MUST BE TAKEN 
NOT TO SET THE BASE ADDRESS TO A VALUE LESS THAN 
THE NUMBER TYPED IN RESPONSE TO "MEM SIZ?", OR YOU MAY 
WIPE OUT ALL OR PART OF CASUAL 

MULTI-DIMENSIONAL ARRAYS CAN BE SIMULATED LIKE 
THIS TO SETUP A TWO-DIMENSIONAL ARRAY WITH 
DIMENSIONS 4, 5: 

1 SET THE BASE ADDRESS AT LEAST 20 BYTES LESS THAN 

HIGHEST ADDRESS AVAILABLE FOR ARRAYS FOR THE SINGLE BYTE 
ARRAY, 40 FOR THE DOUBLE <4*5*2) 

2. DEFINE THE USER-DEFINABLE FUNCTION LIKE THIS: 

t- = J * 4 +1 


NOTE 1. 
NOTE 3: 
NOTE 4: 


UP TO FIVE DIGITS IN THE RANGE 
0 - 65535. 

ANY PRINTING ASCII CHARACTER. 040 - 176 
(OCTAL) INCLUSIVE. 

< SEXP > IS IDENTICAL TO <EXPR> EXCEPT 
THAT <AVAR) IS NOT A LEGAL ELEMENT 


3. THE SUBSCRIPTS, I AND J, NOW RANGE FROM 0-3 

AND 0-4, RESPECTIVELY REFERENCE THE ARRAY LIKE THIS: 


THIS PRINCIPLE CAN BE EXPANDED TO AN ARRAY OF ANY 
NUMBER OF DIMENSIONS. 


February, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 45 














dr dobb’s journal of 


COMPUTER 


C 


alisthenics 


60 


rthodontia 


Running 

Light Without 

Overbyte 

Number 13 

March 1977 

Volume 2, Issue 3 

A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


SOFTWARE 

Extended Accuracy Arithmetic Routines, M. G. Dineley 15 

8080 Disassembler Written in MITS 3.2 BASIC, Jef Raskin 25 

M6800 Disassembler, Gordon Stallings 30 

A SC/MP Subroutine Supervisor, Richard K. Peterson 36 

Tiny Linkage Editor for “relocatable code” on 8080’s and Z-80’s, Dan M. Shaw 8 

Algorithm for computing square roots, James A. Hinds 23 


HARDWARE 

The Selectric Typewriter as An Output Device, Rod Graves 41 

SYSTEMS 

Graphics on the Poly-88, Harvey A. Cohen 12 

MODEST PROPOSALS 

Proposal for Standard Z-80 Code, Peter G. Formaniak 10 

Proposed Tiny PILOT, Dennis Allison 34 


AND THE USUAL PROFUSION OF MISCELLANY 

notes, remarks, comments, fixes, announcements, new products, computer club notes 




© David Dameron 1979 


ACM FOUNDER COMMENTS ON COMPUTER KITS 
STORE 


FAIRE CONSUMES EDITOR - DDJ LATE 


Dear Sir: March 11,1977 

I would like to report an interesting experience. After 
considering a number of possibilities for acquiring a micro¬ 
computer system, we chose Computer Kits (Pete Roberts) 
1044 University Ave., Berkeley, CA 94710, and gave them 
an order on Dec. 20. The order consisted of an Altair 
8800A computer with 32K of memory, an ADM 3A 
cathode ray and keyboard input-output, a cassette record¬ 
er and a connecting cable for a teletype, all to be 
assembled. The promise was 6 weeks delivery, assembled 
and guaranteed for six months. I was able to operate 
the system on Feb. 3 and start checking it out. But I 
found some bugs and some difficulties, including a 
procedure for removing the case, changing a toggle 
switch inside, and putting the case back on. On 
Feb. 10,1 left my system unfinished, and went back 
to Massachusetts not happy. 

When I came back on March 4, every part of the 
system was working excellently. Computer Kits had: 
arranged to put every operation on switches on the 
front panel; had modified the monitor and the editor 
to fit my system with the least amount of trouble; 
had arranged a cable for teletype input and output; 
so that a very simple and clear alteration of my tele¬ 
type in Massachusetts could be accomplished; and 
had provided half a dozen other conveniences. 

What they did was above and beyond the agree¬ 
ment. I am most pleased to recommend them for 
giving me an integrated and properly working system 
— and making this customer very happy. 

Yours sincerely, 

Edmund C. Berkeley 

Editor, Computers and People 

President, Berkeley Enterprises, Inc. 

815 Washington St. 

Newtonville, MA 02160 


COMPUTER MAGAZINE STARTS 
MICROSYSTEMS SECTION 

Computer Magazine, published by the IEEE Computer 
Society, has initiated a regular section devoted to small- 
scale computing, a term which includes microprocessors, 
minicomputers, hobby and personal computing. This 
section is a response to the rapidly changing nature of 
computing due to the impact of cheap memory, inex¬ 
pensive processors, and a rapidly expanding application 
and user base. 

Potential authors are solicited. Articles should be 
aimed at a broad technically based audience and should 
be tutorial or survey in nature, though specialized treat¬ 
ments of topics of general and timely interest are also 
desired. Scientific American is a good stylistic model. 

Most any topic related to computers and computa¬ 
tion might be suitable, but there is a particular interest 
in the economics, sociology, psychology and applications 
of personal and hobby computing. Authors interested in 
submitting manuscripts may contact the section editor for 
more information: Dennis Allison, 169 Spruce Ave., Menlo 
Park CA 94025,(415) 325-2962. 


What more can we say? DDJ's entripid editor involved him¬ 
self as chairperson of the First West Coast Computer Faire and 
discovered it to be an infinite sink of time. And he was spread 
much too thin before he started. Xeroxing editors failed. The 
natural consequence is a late issue. 

Because of Jim’s overwhelming commitments to the Faire, 
the March and April issues of DDJ are being guest edited by 
Dennis Allison (who is only slightly less busy than Jim). 
Hopefully he will be able to maintain the past flavor and qual¬ 
ity of DDJ. 



PITTMAN OFFERS TINY BASIC 
EXPERIMENTATION KIT 


Tom Pittman, the implementator of the $5/copy version of 
Tiny BASIC for the 6800 and 65 OX is now offering an experi¬ 
menter’s kit for those folks who want to modify and extend 
his Tiny BASIC. The kit includes an assembled source listing 
for the IL (Intermediate Language), and IL assembler written 
in Tiny BASIC, a detailed description of the virtual machine 
implemented by the IL, instructions for incorporating a new 
IL into the Tiny BASIC system, and finally some practical 
hints about debugging and extending the system. About 40 
pages in all. The cost is $10 from Tom Pittman, Itty Bitty 
Computers, P.O. Box 23189, San Jose CA 95153, (408) 
578-4944. 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 3 


119 



A SPHERE 6800 USER COMMENTS 


Dear Jim: Nov. 29,1976 

What a super magazine you publish. The emphasis on 
software has been verv useful to me. 

I thought the Sphere owners amongst your readers 
would be interested to know that the “Space Voyage” game 
offered by Technical Systems Consultants, Box 2574, W. 
Lafayette, IN 47906, can be easily modified to run in a 
sphere system. The game is an excellent version of Star 
Trek with very complete documentation (a complete list¬ 
ing with comments, hexidecimal dump and symbol table). 

To rewrite the program for a Sphere system.: 

1. Move all the temporary storage from locations 
20-D4 to 40 F4. Of course change all the ref¬ 
erences to those sites within the program by 
adding 20 hex. 

2. Move the program origin from 10016 to 200 16 
by adding 10016 to all program addresses and 
references. 

3. Move the jump table and random number gen¬ 
erator to the high end of this program. 

4. Write the very simple routines to substitute 
sphere PDS routines for those in Mikbug. The 
properties of the Mikbug routines are given 
with the TSC literature. 

By the way, the STRINGOUT described in Dr. Dobbs 
Vol. I, Number 8, Page 33 (1976) but rewritten for 6800 
works fine to substitute for the Mikbug PD AT A1 (print 
string). However, I recommend using the ASCII code 04 
(message terminated) instead of a null to terminate the 
string. 

This rewrite of the game is quite easy since one can keep 
all the flags on page zero and hence need not alter any of 
the commands or relative jumps. 1 was able to make these 
changes and track down those I missed on the first pass 
in four evenings. 

I am quite pleased with my Sphere System (20K, built 
in monitor, keyboard, cassette board, SWTP printer and 
Oliver tape reader). The system has been up continuously 
and the Sphere System is no exception. The weak points 
I have experienced are: 

1. Negligible documentation 

2. No current user group 

3. TV display wavers 

4. Mounting hardware is inferior 

5. Connecting cables instead of mother-board. Ugh! 

6. Not SI00 bus compatible 

7. No advertising! 

. The strong points I’ve liked are: 

1. Excellent repair service (also fairly fast!) 

2. The system works reliably. This is a hard point 
to ignore. (Two months now.) 

3. Some independent hardware support (Oliver, 

SWTP) 

4. Some independent software support (TSC, Data 
Center, 136 N. Maryland Ave., Glendale, CA 91206, 
Pittman’s BASIC) 

5. A complete integrated system — not so crucial with 
other systems SI00 compatible. 

Yours, 

Marshall Hall Edgell 9901 Broad Street 

Bethesda, MD 20014 


P.T. INTEGER FIX FIX 
Dear Jim, 

Just a short note and an apology to anyone who tried 
the “integer fix” to Processor Tech BASIC 5 ( DDJ , 

Vol. 1, No. 10). 

Here is the corrected version which should clear up any 
confusion: 

XRA A Existing program 

MVI D,5 
AINT3 STAX B 

OCX B Insert after addr 0BB0 

DCRD 

JNZ AINT3 

STAX B Existing program 


Adolph P. Stumpf 


5639-A Ute 
Glendale, AZ 85307 


A FLOATING POINT CHIP QUERY 

Jim, 

What are the chances of a manufacturer making a micro¬ 
processor compatible floating point chip? Pocket calculator 
chips are available but inelegant to interface with. 

Such a chip, of course, should have arithmetic, logarithmic 
and trigonometric functions. Nice if it had a couple of 
constants, too (Pl,e). 

Warren Leach 


PERSONAL COMPUTERS & NUTRITION 
PLANNING : . . SOMEDAY 

Gentleones: Feb. 28,1977 

A few weeks ago on “All things considered,” National 
Public Radio’s news show, I heard David Ahl, and various 
others discussing uses of home computers, among which 
was its use in nutrition planning and food inventory. 

Since you do serve as an interchange of much personal 
level software and software ideas, I was hoping that you 
could either put me in contact with people who might 
have such software, tell me where such software might be 
found, or just publicize my interest in it to perhaps 
attract other people to work on this field. Thank you very 
much for your help. 

Yours truly, 

Reba Silterr 
401 S. Coler Avenue 
Urbana, IL 61801 

[It’s a good idea. I think it will happen sooner or later. 

I know of no one currently working on it. Ask Dave. 

— Jim W.] 


SPHERE BOOTSTRAP FOR SWTPC BASIC 
Dear Jim: 

The number of SPHERE users among computer 
hobbyists is very small. SPHERE users seeking BASIC 
to run on tneir system may be interested to know that 
I have written a bootstrap loader which will read and 
patch ready for execution for SWTPC 8K BASIC 
Version 1. Since there aren’t enough SPHERE users 
to warrent the space in DDJ I will make available doc¬ 
umentation and loader on cassette for anyone inter¬ 
ested. Send $10 to cover my cost of tape, documen¬ 
tation, postage and handling. 

Siiicerely, 42-24 Colden Street 

Henry L. Kee Flushing, New York 11355 


Page 4 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


120 



JEF’S ADDENDA TO NOV/DEC DDJ 
Jet Raskin January 11, 1977 

As happens from time to time even in the best of publica¬ 
tions, a few items got garbled between my typewriter and 
your publication. For example the fourth paragraph origi¬ 
nally explained that the switches on the IMSA1 are spaced 
so close together that it is all too easy to hit two at once. 

The PDP-11 has similar switches with this small difference: 
the tips are tapered so that there is a small space between 
them, making hitting two at once less likely. A few gliches 
(editing late at night again, eh, Mr. Warren?) [You mean 
there’s another way? — JCW] made it come out funny in 
the magazine. 

The sentence that reads “More screws than an X-rated 
movie, and then there are wires screwed onto the board.” 
should have had the word “screwed” replaced with the 
word “soldered”. I wonder what I could have been think¬ 
ing about to make an error like that. A type that slipped 
through is at the end of the very next paragraph: “base” 
instead of “case”. 

Here’s a coincidence. As I was typing this letter I got 
a call from Polymorphic systems. They tell me that a few 
of my complaints have been corrected. Especially with 
regard to the manual. As usual, I’ll believe it when I see 
it. Tune in again next issue. Similarly, the people at 
IMS admitted (as described in the article under discussion) 
that I got the cold shoulder when trying to communicate 
some of the errors in their manuals, and told me that they 
would be good to me and their other customers in the 
future. The next time I test one of their products I will 
also test their response, and use a disguised voice so they 
won’t know it is the fearless equipment reviewer (heh, heh). 

Another error (oops) is that in the paragraph on the 
CROMEMCO Bytesaver, the reference to the 2708-8 
PROM came out as a reference to a 2707. At the end of 
the paragraph the Editor put in the comment that having 
no sense switches is a possible impediment to man-machine 
interaction. I claim that I can duplicate and even better 
sense switch interaction with the keyboard that inevitably 
goes with a front-panel-less computer. Room for your 
comment here.... 

On the differences between the Poly and the Altair and 
the IMSAI busses. Poly and IMS have put out documents 
detailing the differences. Bravo folks. I have been both 
documents and they are avilable from the manufacturers. 

Lastly, thanks for the supportive letters and calls about 
my articles! And also thanks to the manufacturers who, 
like Mr. Tarbell, respond to constructive criticism from their 
customers and improve their product and/or documentation. 


COMMUNITY INPUT FOR DESIGN OF A GOOD 
ASSEMBLER 

Dear Mr. Warren: February 18, 1977 

I read some of the back issues of Dr. Dobbs Journal last 
night and I found a letter from Jim Day dated 6/27/76 
calling for a good assembler for the 8080. I too feel that 
any serious work with a computer is hampered by a crummy 
assembler and, worse, the lack of a standard set of mnemon¬ 
ics, pseudo-ops and coding conventions. We all know that 
manufacturer A wants colons after his symbols, mfr B 
doesn’t and mfr C wants comments to start with asterisks 
etc. This leads to a certain confusion which annoys 
experienced computniks and frustrated many inexperi¬ 
enced ones. 

So, before the contract goes out for a good assembler, 
let’s all conduct a poll as to what we want to see. I will 
be glad to serve as the collector. Keep in mind that 
long symbols mean a lot of memory, short ones are 
frequently too distorted to be meaningful. 

Let me know your ideas. I have a rough idea for 
an assembler which incorporates many of the features 
of Jim Day’s want list. Write a note, preferably in 
list form (as Jim Day did it) to: A. L. Bender, M.D., 

400 Old Hook Road, Westwood, NJ 07675. I 
promise to tabulate the stuff and write it up for 
approval. (Please don’t send material to my home, 
an address ambiguity results in loss of mail.) 

Very truly yours, 

A. L. Bender 

O’course, Don Knuth sez we should never have a 
really GOOD assembler. Otherwise, people will 
keep using assemblers to do major software develop¬ 
ment, instead of using good, efficient, high level 
language compilers ... like they oughta. (Hope I 
haven’t butchered Master Knuth’s views too badly.) 

-JCW 


NIFTY DISASSEMBLER FOR SWTP 6800 
WITH TVT-II 

Dr. Dobbs: March 27, 1977 

Thoroughly enjoy your publication. It definitely provides a 
media for information exchange among us hobbyists. 

That is why I would like to inform your readers of a nifty 
piece of software I recently developed for a SWTP 6800 with 
TVT-II. It’s a very compact dis-assembler (300 hex in size) 
that generates output similar to that below: 

A020 A1 00 CMPA $00,X 

A022 26 53 BNE SA077 

A024 BV A004 CPX $A004 

A027 27 03 BEQ $A02B 

A029 08 INX 


ECD’s MICROMIND yM-65 QUERY Note that relative addresses are reso lved to absolute ones 

for ease of reference. The program is currently assembled at 
I am looking for an objective opinion on this product 1D00-1EDF with opcode tables at 1ED0—1FFF. 

and its manufacturer. Can anyone help me? For a SASE I will send anyone a more complete description 

Rick Fence including actual sample output and information on how to 

811 E. 58th Avenue obtain a source fisting or AC-30 compatible cassette of source 

Vancouver, B.C. and object. For $4.00 I will return a copy of the object pro- 

CANADA V5X 1W6 gram in hex dump format with instructions for memory relo¬ 

cation and other useful changes. 

We also would be interested in your comments. - Editor I will have as an extension to this program the capability of 

defining symbols that will replace the $hhhh addresses in the 
output. This extension will automatically be sent to all those 
who are sent the original program. 

Robert Dembinski 12 Richard Rd. 

Medway, MA 02053 

March, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 5 


121 


Tiny linkage editor for “relocatable code” 
on 8080 ’s and Z- 80 ’s 


Aloha, February 7, 1977 

I got so tired of reassembling subroutines so that 1 could 
move them that I figured out a way to write relocatable code. 

It works a lot like the relative branch instructions on the Z-80. 

I also have a “tiny linkage editor” which lets me call sub¬ 
routines by name instead of by address. 

I have a Z-80 system from the Digital Group, but I’ve 
written everything in 8080 for compatibility. I use a one- 
of-a-kind cross assembler, so I’ve redone source listings in 
more readable mnemonics. It's all double-checked. 

Dr. Dobb’s is fantastic. Keep up the good work. 

Sincerely, 

Dan M. Shaw 

2182 Round Top Drive 

Honolulu, HI 96822 

Have you ever tried to move a subroutine from one part of 
memory to another? It’s a real hassle. You have to find all the 
branch instructions and all the loads and stores that refer to 
specific locations and then reassemble the code so it will reflect 
the changed locations. Even if you have a text editor and an 
assembler, it’s a hassle. 

One way out of this mess is to write “relocatable code.” 
What does that mean? To put it simply, relocatable code con¬ 
tains no absolute addresses. The Z-80 has branch instructions 
which use relative addressing. For example, the instruction 
28 DE is an unconditional branch with a relative displacement 
of DE. The displacement (which in this case is negative) is 
added to the program counter (which always points to the 
next instruction.) The resulting address is the address that is 
branched to. This instruction would execute just as well any 
place in memory, because it is relative, not absolute. Unfor¬ 
tunately, the Z-80 does not have relative load and store instru¬ 
ctions. If it did, we could write subroutines that would execute 
anywhere in memory without modification. 

On my Digital Group Z-80 system, I use the “EF” instruc¬ 
tion (restart to location 0040) to generate three-byte relative 
instructions. This is how it is done. The first byte is the re¬ 
start. The second byte is the opcode of the instruction that I 
would have used. The third byte is the displacement from the 
next instruction to the actual address. 

Figure 1 shows the code which does the work. The re¬ 
start instruction is a one-byte subroutine call, so it puts a 
return address on the stack. This address points to the opcode 
and the displacement. The displacement is used to calculate 
an address, which is combined with the opcode to generate an 
instruction stored at OP. After all the registers and flags are 
restored, this instruction is executed and control is transferred 
back to the calling program. By changing the branch at MODE 
from SLOW to FAST, you may add a section of code that 
copies the generated instruction back into the calling program 
(the generated instruction takes three bytes, so it just fits). 

The next time through, it will be executed directly. Of course 
once this happens, the instruction is no longer relocatable. 

The restart instruction is really a subroutine call, but I 
prefer to think of it as a new opcode, a new machine instruc¬ 
tion which I have added to my system. With it, I can write 
three-byte relative instructions that give me relocatable code. 
There’s another neat trick: the instruction EF 21 FD (21 is 
the opcode for “load HL immediate” and ED is the 


displacement which points to the byte where EF is stored) 
will load the HL register with the instruction’s own address. 

This enables a subroutine to find out where it is. 

Now that I can write relocatable subroutines, I still need a 
way to call one subroutine from another without knowing its 
absolute address. You might say I’ve solved the internal 
problems but not the external ones. On dinosaurs, they have 
things called linkage editors to handle the linkage between 
subroutines. I am proposing a “tiny linkage editor.” 

On my system, I use the E7 instruction (restart to loca¬ 
tion 0038) to implement a “call by name” instruction. Figure 
2 shows how it works. The first byte is the E7, and the next 
two bytes are the name or identification of the subroutine. 

A subroutine can be named anything you want. Each sub¬ 
routine in the system has a six-byte header containing the 
length of the subroutine (my cassette read and write routines 
use this information), the name of the subroutine, and space 
for the address of the next subroutine. The address pointers 
are set when the subroutines are loaded, and the last subroutine 
in the list has zeroes in the address bytes. The restart instruc¬ 
tion follows the pointers from one subroutine to the next, 
looking for the named subroutine. When it finds it, it restores 
the registers and calls it. Figure 3 shows the code which acc¬ 
omplishes this. Once again, a fast mode is provided, which 
changes the “call by name” instruction in the calling pro¬ 
gram to an ordinary call with an absolute address. 

I wrote a fancy “Life” program using this scheme. It 
really encourages modular programming and saves a lot of time. 
I broke the problem down into a collection of subroutines. 

I wrote one subroutine at a time, starting at the “bottom” 
with subroutines that didn’t call anything, then the sub¬ 
routines that called only routines that I’d already written. 

Each subroutine was relocatable, and after I debugged it, I 
stored it on tape. The whole thing took about a dozen 
routines. When I had the program working like I wanted 
it (a little bit slow, I will admit), I patched the SLOW modes to 
FAST and ran the program to get all the relative and “call 
by name” instructions fixed. Now my program runs at 
normal speed. As an added bonus, some of the subroutines 
will come in handy for other applications. 

If you have a floppy, you might try this idea: change the 
code so that the “call by name” instruction looks through 
memory for the desired subroutine, and if it’s not there, 
fetches it in automatically from the disk. You could also 
use the same idea to fetch blocks of data by name. 


I/O SELECTRIC INTERFACE (NOT FOR AN 
OFFICE SELECTRIC) 

Interfacing a Selectric to your microcomputer? The Center 
for the Study of the Future, a religious information networking 
organization, has just released a Selectric interface card for any 
of the Dura of Itel Selectric terminals with 24 volt solenoids 
(Dura 1021, 1040, etc.) as well as for the Tycom adaptor. Input 
is RS-232 seven bit ASCII at 110 or 134 baud. 

The card is available in a kit form without power supplies for 
only $325, but is also available with power supplies as well as 
assembled. Some Dura units are also available as completed 
systems. Send SASE for brochure — Center for the Study of 
the Future, 4110 N.E. Alameda, Portland, OR 97212. 


Page 8 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


March, 1977 



E7 AB CD 


CALL 'ABCD' 



LI 

1 L2 1 

AB 

CD 





subroutine 'ABCD' 


[uj 

1 L2 1 

1 DE 

L^J 

00 

1 00 1 


subroutine 


* 


this is the last one 


'DEAF * 


^RELOCATABLE CODE GENERATOR 
* 

*EXAMPLE: EF C3 60 IS A RELATIVE JUMP 
*TO NEXT + 60 
* 

*PATCH LOC 0040 TO BRANCH TO 0600 







ORG 

0600 

E3 



REL 

XCH 

0601 

F5 




PUSH 

0602 

C5 




PUSH 

0603 

E5 




PUSH 

0604 

7E 




LD 

0605 

32 

30 

06 


STO 

0608 

23 




INC 

0609 

06 

FF 



LDI 

060B 

7E 




LD 

060C 

4F 




LD 

060D 

B7 




OR 

060E 

FA 

12 

06 


JN 

0611 

04 




INC 

0612 

23 



SKP 

INC 

0613 

22 

34 

06 


STO 

0616 

09 




ADD 

0617 

22 

31 

06 


STO 

061A 

El 




POP 

061B 

2B 




DEC 

061C 

C3 

2D 

06 

MODE 

JMP 

061F 

3A 

30 

06 

FAST 

LD 

0622 

77 




STO 

0623 

23 




INC 

0624 

3A 

31 

06 


LD 

0627 

77 




STO 

0628 

23 




INC 

0629 

3A 

32 

06 


LD 

062C 

77 




STO 

062D 

Cl 



SLOW 

POP 

062E 

FI 




POP 

062F 

El 




POP 

0630 

00 



OP 

DEF 

0631 

00 



ADDR 

DEF 

0632 

00 



ADDR2 

DEF 

0633 

C3 



JMP 

DEF 

0634 

00 



RET 

DEF 

0635 

00 




DEF 


0600H 

HL,(SP) SAVE HL, GET RETURN 
AF SAVE REGISTERS 

BC 
HL 

A,(HL) GET OP CODE 

A, OP STORE 

HL POINT TO DISP 

B, 0FFH FIRST BYTE FOR NEG DISP 

A,(HL) GET DISPLACEMENT 

C, A MOVE TO C 

A TEST A 

SKP IF NEGATIVE 

B FIRST BYTE FOR POS DISP 

HL POINT TO RETURN 

HL ,RET STORE FOR RETURN JUMP 
HL,BC CALCULATE ADDRESS 

HL ,ADDR STORE 
HL 

HL POINT TO OP CODE 

SLOW JUMP IF SLOW MODE 

A,OP GET OP CODE 

A,(HL) STORE IN CALLING PROG 

HL NEXT BYTE 

A,ADDR GET ADDR 

A,(HL) STORE 

HL NEXT BYTE 

A,ADDR2 GET ADDR2 

A,(HL) STORE 

BC RESTORE REGISTERS 

AF 

HL 

0 GENERATED OP CODE 

0 ADDRESS 

0 

0C3H JUMP FOR RETURN 

0 RETURN ADDRESS 

0 


*CALL BY NAME 
* 

*EXAMPLE: E7 AB CD CALL SUBR ABCD BY NAME 
* 

*PATCH LOC 0038 TO BRANCH TO 0636 







ORG 

0636H 


0636 

E3 



CBN 

XCH 

HL,(SP) 

SAVE HL, GET RET 

0637 

D5 




PUSH 

DE 

SAVE REGISTERS 

0638 

C5 




PUSH 

BC 


0639 

F5 




PUSH 

AF 


06 3A 

E5 




PUSH 

HL 


063B 

56 




LD 

D,(HL) 

GET IDENT 

063C 

23 




INC 

HL 


06 3D 

5E 




LD 

E,(HL) 


063E 

2A 

81 

06 


LD 

HL,PTR 

ADDR OF 1ST BLOCK 

0641 

23 



CHKID 

INC 

HL 

GET IDENT OF BLOCK 

0642 

23 




INC 

HL 

INTO BC REG 

0643 

46 




LD 

B,(HL) 


0644 

23 




INC 

HL 


0645 

4E 




LD 

C, (HL) 


0646 

78 




LD 

A, B 

COMPARE IDENTS 

0647 

BA 




CP 

D 


0648 

C2 

50 

06 


JNZ 

NXTPT 


064B 

79 




LD 

A,C 


064C 

BB 




CP 

E 


064D 

CA 

5F 

06 


JZ 

FOUND 

IF IDENTS SAME 

0650 

23 



NXTPT 

INC 

HL 

GET POINTER 

0651 

4E 




LD 

C,(HL) 


0652 

23 




INC 

HL 


0653 

46 




LD 

B, (HL) 


0654 

78 




LD 

A ,B 

TEST FOR ZERO 

0655 

B1 




OR 

C 


0656 

CA 

5E 

06 


JZ 

EOL 

END OF LIST 

0659 

60 




LD 

H,B 

MOVE BC TO HL 

06 5A 

69 




LD 

L,C 


065B 

C3 

41 

06 


JMP 

CHKID 

TEST NEXT BLOCK 

065E 

F7 



EOL 

R30 


*SNAP SYSTEM 

065F 

23 



FOUND 

INC 

HL 

FOUND IT 

0660 

23 




INC 

HL 


0661 

23 




INC 

HL 

EFFECTIVE ADDRESS 

0662 

22 

7F 

06 


STO 

HL,JCAL 

STORE IN CALL INSTR 

0665 

El 




POP 

HL 

RETURN ADDRESS 

0666 

C3 

69 

06 

MODE 

JMP 

SLOW 

MODE SWITCH 

0669 

2B 



FAST 

DEC 

HL 

GENERATE CALL INSTR 

066A 

3E 

CD 



LDI 

A,OCDH 

AND STORE IN 

066C 

77 




STO 

A,(HL) 

CALLING PROGRAM 

066D 

23 




INC 

HL 


066E 

3A 

7F 

06 


LD 

A, JCAL 


0671 

77 




STO 

A,(HL) 


0672 

23 




INC 

HL 


0673 

3A 

80 

06 


LD 

A,JCAL2 


0676 

77 




STO 

A,(HL) 


0677 

2B 




DEC 

HL 


0678 

23 



SLOW 

INC 

HL 


0679 

23 




INC 

HL 

GET RETURN ADDRESS 

067A 

FI 




POP 

AF 

RESTORE REGISTERS 

067B 

Cl 




POP 

BC 


067C 

D1 




POP 

DE 


067D 

E3 




XCH 

HL,(SP) 

SET RETURN 

067E 

C3 



JUMP 

DEF 

0C3H 


067F 

00 



JCAL 

DEF 

00 


0680 

00 



JCAL2 

DEF 

00 


0681 

00 

00 


PTR 

DEF 

0,0 

POINTER TO FIRST SUBR 


COMPUTER CENTER, INC. IS APPOINTED 
DISTRIBUTOR FOR THE DTC MICRO FILE IN 
NORTHERN CALIFORNIA 


Computer Center, Inc. owners of the BYTE SHOP of San 
Francisco, 321 Pacific Avenue, San Francisco (415) 
421-8686, and the Berkeley BYTE SHOP, 1514 University 
Avenue, Berkeley, (415) 845-6366 have been appointed as the 
exclusive distributors for the DTC Micro File in the San 
Francisco — Oakland Bay Area. The DTC Micro File is a 
sophisticated word and data processing system based on the 
8080 microprocessor. 

For additional information: J. Benbow Bullock, Vice Presi¬ 
dent, Computer Center, Inc. 321 Pacific Avenue, San Francis¬ 
co, CA (415) 421-8686. 


March, 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 9 


123 







PROPOSAL FOR STANDARD Z-80 CODE 


Dear Sir: February 14, 1977 

MOSTEK has developed a standard for Z-80 object code 
which is upward compatible with the current Intel hex for¬ 
mat. The format handles relocatable and linkable programs. 
We are suggesting that this format be adopted for Z-80 
software products to produce some standardization in the 
industry. This information is not proprietary and is not 
copyrighted. You may use the information at your dis¬ 
cretion. 

Sincerely, 

Peter G. Formaniak 
Microprocessor Applications Group 
MOSTEK, P.O. Box 169, 1215 West Crosby Road, 
Carrollton, Texas 75006 


3.0 Definitions 

An “object module” is the output from an assembler. 

One or more object modules can be placed into memory by 
a loader. The output from the loader is called a “load 
module”. 

A “relocatable” program is one which has extra informa¬ 
tion in the object module. The extra information allows the 
loader to place the program anywhere in memory. A non- 
relocatable program can be loaded only in one place in mem¬ 
ory in order to work properly. 

A “position independent” program can be placed any¬ 
where in memory. It does not require relocating informa¬ 
tion in the object module. 

An “internal” symbol is a symbol which is defined in a 
program and whose location is made known to all other 
programs. It is also called “public” (Intel), “defined”, 
“global”, or “common”. 

An “external” symbol is a symbol which is used in a 
program but which is not defined in the program. Such sym¬ 
bols must be defined as internal symbols in other programs. 

A “linkable” program has extra information in the object 
module which defines internal and external symbols. The 
loader uses this information to connect, or link, external 
references to internal symbols. 

4.0 MOSTEK Object Output Definition 

Each record of an object module begins with a delimiter 
(colon or dollar sign) and ends with carriage return and 
line feed. A colon (:) is used for data records and end-of- 
file indicator for Intel compatibility. A dollar sign ($) 
is used for records containing relocation information and 
linking information. An Intel loader will ignore such infor¬ 
mation and allow loading of non-relocatable, non-linkable 
programs. All information is ASCII. 

Each record is identified by a “type”. The type appears 
in the 8th and 9th bytes of the record and can take the 
following values: 

00 - data record 

01 - end-of-file 

02 - internal symbol 

03 - external symbol 

04 - relocation information 

3.1 Data Record (type 00) 

Byte 1 Colon (:) delimiter 

2-3 Number of (binary) bytes of data in this 
record. The maximum is 32 binary 
bytes (64 ASCII bytes). 

4-5 Most significant byte of start address of data. 

6-7 Least significant byte of start address of data. 

Page 10 


8-9 

ASCII zeros. This is the “record type” 
for data. 

10 

Last two 

data bytes 

bytes 

Checksum of all bytes except the delimiter, 
carriage return, and line feed. The checksum 
is the negative of the binary sum of all bytes 
in the record. 

CRLF 

Carriage return, line feed 

3.2 End-of-file Record (type 01) 

Byte 1 

Colon (:) delimiter 

2-3 

ASCII zero 

4-5 

Most significant byte of the transfer address 
of the program. This transfer address 
appears as an argument of the “END” 
statement of a program. Although we will 
not be using this facility, it may prove useful 
in higher level language programs. It is an 
Intel standard. 

6-7 

Least significant byte of the transfer address. 

8-9 

Record type 01. 

CRLF 

Carriage return, line feed 

3.3 Internal Symbol (type 02) 

Byte 1 

Dollar sign ($) delimiter. 

2-7 

Up to 6 ASCII characters of the internal 
symbol name. The name is left justified 
blank filled. 

8-9 

Record type 02. 

10-13 

Address of the internal symbol, most 
significant byte first. 

14-15 

Binary checksum. 

CRLF 

Carriage return, line feed. 

3.4 External 

Symbols (type 03) 

Byte 1 

Dollar sign ($) delimiter 

2-7 

Up to 6 ASCII characters of the external 
symbol name. The name is left justified, 
blank filled. 

8-9 

Record type 03. 

10-13 

Last address which uses the external symbol. 
This is the start of a link list which is 
described below. The most significant 
byte is first. 

14-15 

Binary checksum. 

CRLF 

Carriage return, line feed. 


The SDB-80 assembler outputs the external symbol name 
and the last address in the program where the symbol is 
used. The data records which follow contain a link list 
pointing to all occurrences of that symbol. This is illus¬ 
trated in Figure 1. 

1. The external symbol record shows the label (‘LAB’) 
and the last location in the program which uses the symbol 
(212 AH). 

2. The object code at 212A has a pointer which shows 
where the previous reference to the external symbol 
occurred (200FH). 

3. This backward reference list continues until a term¬ 
inator ends the list. This terminator is FFFFpj. 

This method is easy to generate and decode. It has the advan¬ 
tage of reducing the number of bytes of object code needed 
to define all external references in a program. Intel defines 
each external reference explicitly. 


124 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E. Menlo Park, CA 94025 


March, 1977 


3.5 Relocating Record (type 04) 

The addresses in the program which must be relocated 
are explicitly defined in these records. Up to 16 addresses 
(64 ASCII characters) may be defined in each record. 

Byte 1 Dollar sign ($) delimiter. 

2-3 Number of sets of 2 ASCII 

4-7 ASCII zeros. 

8-9 04. 

10- Addresses which must be relocated. 

Last two 

bytes Binary checksum. 

CRLF Carriage return, line feed. 

4.0 Assembler Object Output Sequence 

The SDB-80 Assembler will output object records in the 
following sequence: 

1. Internal symbols (type 02) in alphabetical order. 

2. External symbols (type 03) in alphabetical order. 

3. Data records (type 00), interspersed with relocation 
records (type 04). 

4. End-of-file record (type 01). 

Internal symbol records will be output only if internal sym¬ 
bols are defined in the source program. The same is true of 
external symbol records. Relocation records always will be 
output by the assembler. 

Figure 1 

External Symbol Link List 
$ LAB)ffi#03 212A defines last reference to 



Object Data 


HELP DESIGN A HEX CALCULATOR 

Dear Jim: January 3, 1977 

As one of several current projects we’re working on a hex 
calculator for program debugging. Before “casting the design 
in concrete,” we would like a little feedback from potential 
customers on our choice of operations, number of digits, etc. 
Tentative price for the 1601 complete and tested is $350 
with a kit version priced somewhat less (we don’t know how 
much less yet). 

Thanks, 

Ron Tipton TDL Electronics 

Route 7 

Fayetteville, Arkansas 
72701 (501)643-2191 


Model 1601 Hexadecimal Calculator — Preliminary Specifications 
December 1976 

GENERAL 

The 1601 is designed around an RCA 1802 microprocessor and the 
operating program is contained in permanent read only memory 
(ROM). Preliminary performance specifications are listed on an 
attached sheet and your comments are invited. 

KEYS 

The keys are mechanical switches with a 3/16 inch keystroke. Key- 
tops are 3/4 inch square and are permanently marked by being 
double-shot molded of ABS plastic. 

DISPLAY 

The display consists of ten characters plus overflow, decimal and 
negative indicators. The characters are 0.3 inch high easy-to-read 
5x7 dot matrix type. 

CABINET 

The 1601 is housed in a type SEE1-2 cabinet made by The Enclo¬ 
sures Group — see attached drawing. The printed circuit card is 
1/1 6 inch thick glass-epoxy (G-10) material with plated conductor 
pattern. 

POWER 

105 to 135 volts AC, 60 Hz, 10 watts. 

PRICE 

Tentatively pi iced at $350 each fully assembled and tested. The 
1601 will also be available in kit form at a lower price. 

LIMITED WARRANTY 

One year parts and labor to original purchaser. 

1. By our convention the most significant bit stores the sign: logical 
"1" for negative and logical "0" for positive. Thus the range of 
the calculator is +7FFFFFFF to —7FFFFFFF in hexadecimal. 

2. Performs addition, subtraction and double precision multiplication 
on two 8 digit hex integers. When the multiply operation ("x" key) 
is performed the most significant 8 digits of the product are dis¬ 
played. Pushing the key labeled "N" displays the least significant 

8 digits of the multiplication result. 

3. Chained operation is provided but nesting is not. 

4. A separate 8-digit memory register is provided. Numbers are stored 
in memory by first pressing the "=" key and then pressing the "M" 
key. 

5. Both clear "C" and clear entry "CE” clears only the number cur¬ 
rently being entered. 

6. A complement key "CM” is provided to calculate the two's comple¬ 
ment of any hex integer within the range of the calculator. The 
result of performing "0 - n" is identical to the result of entering 

"n CM" where n is the hex integer to be negated. 

7. A hex to decimal conversion key is provided to convert any hex 
integer of 8 digits or less to decimal. A ten digit display is pro¬ 
vided for decimal numbers and a lower case "d" lights at the far 
left side of the display to indicate that the number is decimal. 
(7FFFFFFF.|0= 2,147,483,647 ^q) The calculator clears its 
accumulator after displaying a decimal number so that chained 
calculations "mixing" decimal and hexadecimal numbers cannot 
occur. 

8. An indicator light (LED) comes on whenever the content of the 
accumulator is negative (i.e., the leading hex character displayed is 
8, 9, A, B, C, D, E or F). An overflow indicator "o" comes on 
whenever the result of a data entry or an arithmetic operation ex¬ 
ceeds the calculator range. If a negative hex number is converted 
to decimal, the LED remains on (indicating negative); the display 
indicator flag shows "d” (for decimal) and the decimal magnitude 
of the number is displayed. (The two's complement of the nega¬ 
tive hex value is converted to decimal.) 


[Texas Instruments used to make a hex calculator but withdrew it 
because there was no market. Now everyone wants one! —Ed.] 


March, 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 11 


125 




GRAPHICS ON THE POLY-88 

Harvey A. Cohen 

OZNAKI Project, La Trobe University, Bundoora Victoria, 
Australia 3083 

In the Nov/Dec 76 issue of DDJ Jef Raskin gave a careful 
review of the Poly—88 personal computer. However this re¬ 
view was rather hardware oriented and did not seek to evaluate 
the graphics capacity of the Poly—88 which is a bonus (i.e. 
free) feature of this system. 

A Rose by any other name. . . 

To start discussing graphics, it helps to distinguish between 
interactive graphics, dynamic graphics and data graphics 
(though in particular set-ups the distinction may be blurred). 

In interactive graphics what’s on the screen can be varied 
substantially (including partial erasure) by an input from the 
user. Thus interactive graphics requires a facility for updating 
pictures and a convenient representation of the current state 
of the screen. In dynamic graphics substantial shapes move 
about the graphic screen to give a coarse grained cartoon 
effect. Speed is of the essence in dynamic graphics, and the 
capabilities of Poly for such performance requires a demonstra¬ 
tion. (Read on!) Finally there is what I call data graphics, 
where a long string of data just gets output to the screen. Of 
course any device that calls itself a graphic system can perform 
data graphics. 

Background to this evaluation 

In the OXNAKI Project we’ve used the SWTP 6800 System 
(also a SC/MP and a DEC—10 as mousetrap variations) as a 
controller for our rudimentary robot ZONKY which is pro¬ 
grammed by kids. (Educationists interested should write for 
my paper “The OXNAKI Robotics Language OZ” for a fuller 
description. The SWTP 6800 has also been used as the con¬ 
troller for another kids’ (i.e. 6 to 12 year olds) programming 
system — WHAM. In WHAM a pseudo robot called a NAKI 
crawls about a TV screen, where the robot is represented by 

V, > , or < depending on whether the NAKI is heading 
North, South, East or West. As the NAKI moves about a 
bounded area of the screen (the rest of the screen is used for 
program storage, etc.) he/she/it leaves a trail of asterisks, 
forming various patterns. Originally we used the South West 
Technical Product terminal kit CT1024 to generate the gra¬ 
phics, so that the largest NAKI territory possible was 13 by 
13. Clearly the pictures kids can create using the CT1024 are 
extremely coarse grained, and the finer mesh of graphic char¬ 
acters on the Poly—88 would improve resolution. It is clear 
that for our purposes the Poly—88 would represent an improve¬ 
ment as far as interactive graphics was concerned. However 
we plan to implement a dynamics graphics system to extend 
the creative possibilities for older kids. Would Poly—88 be 
capable of dynamic graphics? Our answer, as you’ll see is a 
guarded YES. 

Interactive Graphics 

A first question is whether the Poly—88 is suitable for 
interactive graphics. In Version 2.2 of the Poly monitor a 
keyboard stroke generated an interrupt, serviced by the PROM 
monitor. In other words a single keystroke would stop the 
program running, and the key depressed would be handled as 
a monitor command. However the latest Poly-88 monitor, 
version 4.0, is rather smarter, and a keyboard interrupt causes 
a jump to a “wormhole” location on CPU board RAM. On 
RESET the monitor writes into this wormhole a call to the 
monitor keyboard service routine, followed by a RET. 

However the user can plug into the wormhole the address of 


his own service routine. So the answer to the first question 
is YES. 


Data Graphics 

On TV graphics screens the screen area is divided into a 
grid of squares which may be white (STUNG) on black. For 
instance, the Poly-88 has a 48 by 128 grid, the SWTP gra¬ 
phics system has a 96 by 64 grid so that for both mere are 
6144 screen squares that may be stung to produce a coarse 
grained picture. If one loads into the computer a long list of 
squares to be STUNG to produce a picture, one is indulging 
in what I call data graphics. Of course even to output “data” 
to a screen (whether peripheral or on bus) requires some gentle 
massaging by the processor, but the distinction I’m making is 
pretty sharp. A prime example of data graphics is given by 
the program included in an article on the SWTP Graphics 
System in Byte, December, 1976. (In that program the stung 
points required to outline the USNS Enterprise are listed as 
data.) 

STINGING Poly 

The Poly—88 displays 16 lines of 64 alpha-numeric or gra¬ 
phic characters on a screen. Each screen location corresponds 
to a unique location in memory starting at 8800H (Monitor 
version 2.2) or F800H (Monitor version 4.0). If bit 7 of the 
memory byte is 1, the Poly treats the other 7 bits as ASCII and 
uses a slightly unusual character generating ROM for a conven¬ 
tional dot matrix display at the character position. If bit 7 of 
memory location is 0, then Poly displays a graphics character 
based on bits 5 to bits 0. For a graphics character, each charac¬ 
ter position is divided into 6 squares. Whether a particular 
square is stung or not depends on whether the corresponding 
bit is 0 (for sting) or 1 (for off). 

bit 5 bit 2 

bit 4 bit 1 

bit 3 bit 0 


TARGET SUBROUTINE 


How can one sting a particular square in the 48 by 128 grid 
on the Poly screen? One needs a subroutine that will take the 
x, y coordinates of the square of interest, and then determine 
the screen address. As at that screen address some of the other 
5 squares may be already STUNG, one must generate a sort 
of mask. All of which suggests quite an amount of processing. 
If one uses standard 7-fold loops for the division (by 3) algo¬ 
rithm then the amount of processing will become quite ridicu¬ 
lous. However the infinite series 


1/4 + 1/16 + 1/64 + 1/256 + 1/1024 + . . . 
whose sum just happens to be one l/3, inspired me to devise 
a far shorter division by 3 algorithm. Pruning code elsewhere 
I’ve written a useable subroutine TARGET. TARGET takes 


x and y in B and C respectively, returns graphic character masjc 
in A, and screen character address in HL. Thus to STING the 
x, y position in BC requires the minimal code 


STING: CALL TARGET 
CMA 

ANI ~B01111111 

AND M 

MOV M, A 

Likewise to unsting one would use the 8080 code 


LISTING: CALL TARGET 

ORA M 

MOV M, A 

Now the crux of our discussion is the TARGET subroutine in 
the box. The TARGET subroutine doesn’t include any loops 
or jumps — it is a piece of in-line coding optimized for run 
time. In fact execution requires up to 220 machine cycles 
which takes 110 micro seconds. 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


126 



IS DYNAMIC GRAPHICS POSSIBLE? 

Suppose one utilized the TARGET subroutine to UNSTING 
100 points on the TV screen, and then STUNG another 100 
points. These operations would take rather more than 200 
times 110 microseconds (i.e. just for the TARGET calls alone) 
which is about 1/40 second. Thus even though TARGET is 
very economical of processing time, it isn’t the whole story. 
However by careful coding a system could be devised. There 
are several routes to further economies of processor time, 
a) Organize lists of squares to be stung or unstung by row, 
so that only for the first square in a row would one need 
to run through the TARGET routine in full, 
b ) Organize lists of squares to be stung with mask charac¬ 
ter appropriate. 

c) Erase whole screen by very simple routines, rather than 
particular squares. 

d) Update screen more slowly than the screen refresh rate, 
perhaps updating every 1/15 sec. But one would then need 
to take great care to avoid big light flashes, so this strategy 
incompatible with a rapid total clearing of screen as per (c). 
All things considered, a crude dynamic graphics could be 


TITLE TARGET 

OC00 LOC ”006000 ;LOCATION 0C00H 

;; TARGET SUBROUTINE 

;; LOCATABLE ANYWHERE IN MEMORY 

;; START CONDITIONS AS FOLLOWS 

;; (B) - X ; (C) ■ Y ; 

;; X,Y BOTH VALID SCREEN POINTS 

;; 0=<X<48 ; 0-<Y<l28 ; 

; ; START SCREEN ADDRESS 88H 

;; REGISTER DE NOT USED 

;; END CONDITIONS AS FOLLOWS 

;; (HL) - SCREEN ADDRESS (ASSUMING START SCREEN IS 8800H) 

;; (A) HAS EXACTLY 7 ZERO BITS AND 

;; HAS 1 IN STING LOCATION 


implemented, with about 50% of processor time available for 
computation of new positions of screen objects. 


SUMMARY 

The graphics capabilities of the Poly—88 are a bonus feature 
with this personal system. Because of the peculiarities of 
screen addressing, if one used the standard division algorithms 
anything other than data graphics would be out of the ques¬ 
tion. However by careful coding — as exemplified by the 
TARGET SUBROUTINE listed here — a useable graphic 
system could be developed. I hope I’ve also indicated at least 
part of the story as to what must be considered when contem¬ 
plating graphics: one needs to consider what are the basic 
macros needed as building blocks. 

Footnote: TARGET works on the Intel 8080. Polymorphic 
systems are however switching to the NEC processor, so some 
modification is probably necessary. (Someone has “bor¬ 
rowed” my copy of the December DDJ so I don’t know the 
difference). 


0C2C 

0C2D 

0C2E 

0C2F 


17 

17 

17 

C9 


RAL 

RAL 

RAL 

RET 

;;EXPLANATION OF GENERATION OF STING CHARACTER FROM REMAINDER STUFF 
;;STEP BY STEP CHANGES IN (A) 


; INITIAL 

DCR A 

SUI 1 

GARRY? 

SB I 3 

(A)LOWER 

CM A 

; 0 

F 

E 


FB 

“B10I1 

“B100 

; 1 

0 

F 

YES 

FB 

“B1011 

“B100 

; 2 

1 

0 


FD 

“B1I01 

"B010 

; 3 

2 

I 


FE 

“B1110 

“B001 


END 

Permission to reproduce for any non-commercial purpose 
granted provided source quoted. Elsewise copyright 
retained by author, (c) H.A. Cohen 1977 


ocoo 

78 TARGET: 

MOV 

A, B 

0C01 

07 

RLC 


0C02 

07 

RLC 


0C03 

80 

ADD 

B 

0C04 

47 

MOV 

B, A ;(B)=X + LS.LS.X ;LS«LEFT SHIFT 

0C05 

IF 

RAR 


0C06 

IF 

RAR 


0C07 

IF 

RAR 


0C08 

IF 

RAR 


0C09 

E6 

ANI 

“OI7 ;0FH ;<A) - RS.RS.RS.RS(B) ;RS-RIGHT SHIFT 

0C0A 

OF 



0C0B 

80 

ADD 

B 

ococ 

C6 

ADI 

“05 

0C0D 

03 



0C0E 

47 

MOV 

B,A ;(B) IS IN THREE PARTS AS FOLLOWS 



;; BITS 

1,0 ARE GARBAGE 



;; BITS 

7,6,5,4 ARE THE INTECER PART OF X/3 




ARE ROW NUMBER 



;; BITS 

3,2 ARE 1 + REMAINDER X/3 UNLESS 




BOTH ZERO WHEN REMAINDER IS ZERO ALWAYS 

0C0F 

E6 

ANI 

“B11110000 

0C10 

F0 



0C11 

6F 

MOV 

L, A 

0C12 

26 

MV I 

H,“BOO100010 

0C13 

22 




;; FOR 

SCREEN START ADDRESS F800H REPLACE PREVIOUS LINE 



; ;BY 



;; 

MVI 

H,“B00l11110 

0C14 

29 

DAD 

H 

0C13 

29 

DAD 

H ;; (HL)-ADDRESS OF COL 0 IN OK ROW 

0C16 

78 

MOV 

A, B 

0C1 7 

IF 

RAR 


0C18 

IF 

RAR 


0C19 

E6 

ANI 

“03 ;03H 

0C1A 

03 



0C1B 

3D 

DCR 

A 

0C1C 

D6 

SUI 

1 

0C1D 

01 



0CIE 

DE 

SBI 

“03 

0CIF 

03 



0C20 

2F 

CMA 


0C21 

47 

MOV 

B, A 

0C22 

79 

MOV 

A,C 

0C23 

37 

STC 


OC24 

3F 

CMC 


0C25 

IF 

RAR 


0C26 

F5 

PUSH 

PSW ;STORE CARRY 

0C2 7 

83 

ADD 

L 

0C28 

6F 

MOV 

L,A 

0C29 

FI 

POP 

PSW 

0C2A 

78 

MOV 

A, B 

0C2B 

D8 

RC 

;ALL DONE IF Y IS ODD NUMBER 

March, 1977 


Dr. Dobb's Journal of Computer Calisthenics 


TIME FOR SUPER VIDEO? 

February 26, 1977 

Almost any function that can be performed by a few 
dozen MSI chips can be handled equally well by a single, 
special-purpose LSI chip. Custom LSI chips are expensive 
in small lots but fairly cheap when produced in quantity. 

Now that the hobby market has grown to respectable 
dimensions, I hope that more manufacturers will begin 
to heed the needs of that market. Although improvements 
can and no doubt will be made in MPU design, the immedi¬ 
ate need is in the peripheral area. As I see it, there is need 
for a one-chip video generator, a one-chip floppy controller, 
a one-chip cassette interface, a one-chip DMA controller, 
and a real-time vectored interrupt chip. LSI chips for 
some of these functions already exist and should find 
their way into the next generation of personal computers. 

Perhaps the most urgent need is for a good $25 video 
chip. Although video displays are often used in personal 
computer systems, present designs for video boards are a 
throwback to the Paleozoic era when video displays were 
used mainly in time-sharing terminals. In that context it 
made sense to use on-board RAM for the display, but in 
a personal computer this is simply a nuisance. A video 
generator could, and should, be designed to access any 
part of memory directly. Further, it should be possible 
to select the type font, graphics set, character size, line 
length, number of lines per display, color, etc. dynamically 
under program control. No technical breakthrough is 
needed to any of these, but they would be expensive to 
add to existing video boards. A custom chip could 
handle all of these functions at reasonable cost and with 
silicon to spare. Now, if someone would only convince the 
people at Intel, Mostek, or Motorola, we might soon see 
super video chips coming off the assembly lines. 

Jim Day 

& Orthodontia, Box E, Menlo Park, CA 94025 Page 13 


127 









MICROCOMPUTER CLUBS IN JAPAN 


NEGATIVE NOTES, BASICALLY SPEAKING 


Microcomputer clubs are sprung up in Japan, too, these 
days. I’d like to mention some notable clubs. 

(1) Japan Microcomputer League 

This loosely knit club was organized by student com¬ 
puter-freaks. They started publishing a small hobby-elec¬ 
tronics magazine called I/O in October, 1976. To amaze¬ 
ment by bookstore owners who understood I/O as “one 
and zero”, the magazine is selling well in Tokyo and the 
number has reached an astounding (from Japanese stand¬ 
ard) 8000 in the second month. The success seems to be 
that the magazine has a special focus on micro-computers 
and also carries articles on laser hobby, music synthesizer 
and TV-game kits, etc. The editor of I/O is Mr. Nishi, 
a sophomore at Waseda Unrversity. He wants to convert 
a sonosheet (thin plastic) record player into a cheap read¬ 
only disc memory and distribute Tiny BASIC on sono- 
sheets. Has anyone tried this? 

(2) Japan Microcomputer Club 

Organized by university professors, research engineers 
and vendors, this club started in October, 1976, has some 
600 members and publishes a newsletter bimonthly. I am 
complaining that this club is head-heavy — too many com¬ 
mittees whose members have never touched microcomput¬ 
ers — and suggesting that they resolve committees and 
purge figure-head members. The sole activity of this club 
is to hold lectures monthly by vendor spokesmen and mem¬ 
bers mostly just listen and have not started their own 
microcomputers. 

(3) NEC Microcomputer Club 

The NEC (Nippon Electric) is a big computer and 
semi-conductor manufacturer and is second-soucing 
Intel 8080A series and other chips. NEC also sells KIM-1- 
like 8080A kits (TK-80) with hex-heys and 8 digit LED 
displays (but no peripheral kits). The NEC club was or¬ 
ganized as a fee-free club by NEC to promote their own 
sales. NEC claims they received 3,000 postcard applica¬ 
tions, which shows high interest toward microcomputers 
among Japanese. The only activity NEC is planning is 
lectures by NEC personnel. 

(4) Microcomputer Classroom 

This is my own no-fee club with 100 members 
set up at the University of Tokyo to promote the use of micro¬ 
computers in experiment control (in physics, chemistry, medi¬ 
cine, etc.) and personal intelligent terminals. We have about 
ten microcomputers (of all kinds), two teletypes, a jet-ink tele¬ 
type, an IBM typewriter converted into an intelligent terminal, 
a floppy disc, a TV display, two cassette interfaces (one is 
high quality), a PROM writer and an eraser. So my lab is a 
kind of showcase for Japanese microcomputers with contri¬ 
butions from many vendors. We are holding monthly meet¬ 
ings for exchange of experience. 


Of course, there are many small computer clubs in Japan¬ 
ese universities and elsewhere. Although interests are very 
high, as indicated by the fact that 24,000 copies of my 
first microcomputer books has been sold, our trouble is 
that chips and kits are still very expensive in Japan. There 
are only two or three computer stores in the Tokyo area, 
where U.S. made kits are sold at the rate of ¥ 500 - ¥ 550 


(sometimes ¥ 1,000) for a dollar (regular rate is ¥ 300/$). 
This means that microcomputers are about twice as expen¬ 
sive here as in the U.S. So we are now trying to design 
cheap peripherals and pursuading small businesses to sell 


good kits at low prices. 
Haruhisa Ishida 


Computer Centre 
University of Tokyo 


Tokyo, Japan 


Gentlemen: 1977-01-25 [Top-down Date] 

As I understand from the first volume of the journal, you 
call yourselves Dragons, [Not all of us; only the more con¬ 
servative ones] and that’s about the only sensible notion I 
managed to find in the entire project. It is true that my 
acquaintance with Dr. Dobb’s Journal is merely casual so 
I don’t know about the background, but provided that you 
don’t want to express the opposite of what you print, I 
have the following principal objections against your 
handling that Tiny BASIC business, however tiny or basic 
it may be. 

1. There are two kinds of so-called high level program¬ 
ming languages: those making the programmer think 
as the machine does - and one or two others. BASIC 

- along with FORTRAN, ASSEMBLER, and COBOL 

— decidedly belongs to the first category. [We 
couldn’t agree more.] It’s no more nor less difficult 

to learn and applicate than home computers’ instruction 
codes which are easy enough. [True for us pros. Not so 
for novices.] 

2. The only remaining positive aspect is portability, 
and I refuse to accept this until there is some construc¬ 
tive method for making different Tiny BASIC interpre¬ 
tive systems (there exist dozens, don’t they?) running 
on different machines (dozens again) react equal to the 
same program. (You ought to be happy anyway to 
have to do with feelingless machines. An interpretive 
routine or compiler for a home computer sounds as 
disproportionate as a bicycle with automatic gear- 
shifting, [Why?] and I’m sure if your machines could 
scream, they would.) 

3. A language design frequency of almost one Tiny 
BASIC version per month is certainly impressive. Pro¬ 
grammers ought to have realized that God invented 
many different languages in Babylon not to enjoy but 
to punish mankind, and, after all, he never intended 
implementing all of them for the 8080. 

So why not write — and if necessary publish — programs 
in an informal and ad-hoc-language fitting to the problem, 
not the computer? [You write ’em; we’ll publish (maybe).] 

And have every programmer do the compilation by hand 
in, say, half an hour. By that one would achieve 

— a readable program (the original one) 

— a fairly effective and small machine program 

— and no pre-fabricated code of which nobody 
— except the author, miles away — knows 
exactly how it behaves in special (e.g. error) 
cases. 

What I really like about the Journal is the Elvis-Presley- 
era-disc-jockey-style I found in a few lines (e.g. “Do, do, 
do tell me about... ”), and some humorous passages 
(e.g. “Biblical Mathematics”), but there are better ones in 
the ALGOL68 Report. 

Theory of formal languages tells us there are infinitely 
many of them, so don’t despair when publishing the 
(n + l)-th and even then not coming to an end! 

Thomas Alexander Matzner HeBstraBe 64 

D-8000 Munchen 40 
Bundesrepublik Deutschland 


Page 14 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


128 



Extended accuracy arithmetic routines 


Dear Sirs, 

Much to my pleasant surprise and amazement I received a compli¬ 
mentary copy of Dr. Dobbs and I am very impressed by it. 

I enclose the source paper tape and limited documentation for an 
x "Extended Accuracy Arithmetic" package that I wrote. It's written 
for an 8080, is 776 DEC. bytes long and will handle positive and 
negative numbers of up to 10**308 magnitude; the larger numbers 
being a little slow. It works excellently with numbers in the range 
40 - 80 bits. 

Maybe you know of enthusiasts who are interested in solving 
combinatorial and permutation, or any other problems that require 
large "crunching" power; this package will handle 170! with its 


capacity for up to 2K bit word lengths. 

I’m very impressed with "Tiny Basic" and would like to know 
more about it. 

Any criticisms, bugs, praise or correspondence to me at the 
following address. 

Yours sincerely, 

M.G. Dineley B22, Digital Processes Lab 

Dept. E.E. 81 E. 

University of Manchester Institute 
of Science and Technology 
Manchester M 6 O 1QD England 



129 








CD 







X 



z 



X 

Z 



G 






X 

X 



G 


5 - 

H 



h- h- 




X 


Clj 

X 




x 

CO X 


z 




CO 


X 0 

X G 

X 0 

l/l 

CO 


X 

X 



X z 

X X 

X 




0 


0 

G 

x - 


X X CO 

0 

X 

X 




X 

X G 

0 

Z Z X 





1 - 

.. L— 

1 - 

X LU 

X CJ 

0 Z h- 

h- 

0 Z X 


X 

X X G 

X 

- Z 

Q 



— 0 X 


o 

X X 

X X 

0 

G 0 

Z l/l 

X h Z 

X 

CO X 

z 


G h- 

CO X 

0 

G 

X 0 

X Z X X z > 

0 

X H 


O U. 
ix O 
UJ 


<E 

O G 
- UJ 


LO 

Z X 
0 CL 


ix — 


UJ 


0 X 
CL Z 
X 

X 

in uj 
X G 

“* 10 


: i— q_ : 
i o . 
. CL » 

:■ to u. *; 
: uj ; 

' Q 111 » 
Z> LU f 


‘.0 UJ 
ix X 
UJ h- 


G 'X 0 3 Z 

Li li I- I Z ( 


X UJ 


Z X X 


1 UJ H 

I X I I. 

>21 


Ll O UJ l 

o uj : 

uj z i 

l.i'l X + IX IX 

Z h > i.O 0 D *—» »—i j— 

O X UJ Dh 

- Z Z 0 G X UJ 

h- x z uj a x 

X X CL G h- CL UJ h- 
,v i— i.j uj h T' 
i CL LLj l.O 


-J UJ > G * 

G Z — * 

X Ul H CD CSJ 

Z G X Z 

i.O Cl 3 — u. 

X UJ > o 
X O Z CL 
U X CO 


it h > UJ l.o 

UJ - l.o z 

muihio 
z i - o - 

X h- CO X 

z a g z 

X Cl X Cl 

UJ I— X CO 
>HUUJ 
^ Z LU Z UJ 

h- x UJ X 


N CO 

X 

x 6 

X CO z 

— x 

h- 

> 0 

CO G Z 


o 




O X z 

0 Z X 0 



0 C£i 




X CO 

> 3 

G Z 

Z 0 H X 

G 

G h- 

Cl — x 

X z 




G 0 

X z 


X 


h- o 

h- - 


X h- 

X 

G Z 

IhX 

1 - CO , X 

X 

X CO 

X X 



X 

X X 

X 

1 - - X 

X X z 

X 

O X 

0 X z 


X 

h- 

CO 1 

— G 

Z h- 

- x r- j o 

LL 

X X 




X z 

X 

h- G 


XX- 

r: 


X 0 - 



0 X 

X X 


X h- 

CO h- CO G 


CO z 

GUh 

X X 


Z l/l 

X 


z z 


0 

Z G 


X 


X X 

X X 


X 

h- K z X 


X X 

X > G 



X X 

X 

X 

X l/l 

I X 0 

G 

1 - X 

G G 

X X 

1 


I UJ UJ 3 I — Ul UJ 

I h X H h h > It 

I X X X CJ • *—• 

I UJ UJ l/l X K X 

I X X G UJ D H a 

0 Z X UJ l/l UJ 


X 1.0 
Q X 
3 UJ 
G X 
X X 


X X 


X X 

0 

0 X - X 0 X 


X 

Z X 

Z X 



XI- Z X 


h- CO 

CO 

1 - G 

CO 0 

h- 

0 0 G X = 


Uj hh 

x :■ 

- X 

X - 

X 

G Z X 0 X 0 

0 X 


X 


3 X 

X 

CO X — X 0 Z 


l/l 1 - 


0 0 

X 

X 

h- CO K X X — 

AL — 

X 


X X 
X o 
o 

X X 


X X 
I X L— 
I h- I/I 
• LU > 

X CO 


XXX 
X Z h- 
x o g ; 


' g x ; 

X X < 
■ X X 
: g g i 

'-XL 


: co c 


‘ p Z G X L 


• X X h- 
•X X 
■ X h- 

: x z z 

J X O X 
i I - CO 
J I- CO X 
— X 
> X 
J — X 
G X 


O I- I Z h 

z u o 

- X X I z 

I- X I - 

(.'Hh 

X G CO CO 

CO I X 

X h- X 


.XX X 
Oh- G 

- X X 
L— h- Z X X 

G G 0 - X 

J j >- ll 

CO CO h- X 

X X X CD X 

X X I- Z X 

Z — I 
XXX CO h- 
X CO Z 
I- 1.0 X l/l 

X X Z X 
> X X h- 
- X I > 
3 CL Z X 


X Cl 


o z 

X 
X > 


O G X 
X Z I- X 
XX X 


3 1.0 X 
X o 
X X 
XXX 


i Z X O Z 

: co o — 

X I- I 

CO Z CD 


j X X Z X 
■XEOh 

< flo x a 


X o o 
IX Z X 

' CD CO - X 

: x x x 

X O h- X 


: x - g 

. X O X 

i X Z I- X 

'IX z 

z x r 


• CD Z 
X — 

1.0 CO 1.0 — 
X - h- 
XX 


X 

I CO h- 

: x z 


X o 

I X I— 

: x 

■ O X 
o 
X X 
O X 
G 

o o 

- o h- 

hl-G 
X X 
Z 1.0 I 

- X 


> X 
Z h- Z 
X G — 
I D > 
I X l/l Z 
' o X 
; x x x 


X 

I 

h- 

X 

l.o Q CO 

X Z X X 
Z X CJ 

— h- z z 

I- X L 0 X 
Z I Z I 
O I- X 
X G 
CO G Z 
CJ X Z X 
-XX 
CO h- = 

X Z Z CD 
X X X z 
XI- 
X X t— X 
X Z X 
O CD O h- 
Z I- G 
I- — 

X Z' X X 
X LU G - 

h- z 
X X X 
I- X X o 
CO G X 
CD X X Z 
Z Z O X > 
p p Z h- 

X ” Z Z X 
X - - X 
= X I- Z G 
X O h- X 


J Z Z X X l 

i X X O X O _ 

IXX-ZhZ Z O 

: — x h- x x g x > o 

) CO Z I Z CD Z Z G 

J X CO X 3 O - X l/l Z G 

j X X > - G O Z 

X Z K G X X X 

CO 0 CO Z X X X X 

— X 0 ZXH 3 0 XX 
Z O > Z 0 X - M 
- j x r 


h- CO 

z 

O x 

CJ X 


X X 
h- h- 

— CO 


X 

o 

0 

h- 

co 


X z 
XXX 
X Z X 
0 X h- 
G 
CO X 

X c 


X XX 
CO X I- 3 
X X CO 
X LU Z' X 
X Z >• CO 
X Z G X 
X Z X CJ 


UJ t 
X 0 


- lu 
CL Z 

X CO 


X CD h- 
G Z Z 
Z - X 
I- I- CO 
— XX 
Z X X 

a • j x 


X X - 
h- h- I 
I 

CO I 


X 0 
CD G 

1 — z 

X X 


X - X X 
X X X X 
Z = I— t— 


H 

G 

z 

CO 

X 

X 

X 



6 j 

Z X 


h- 

X 

1 - 


1 

— 1 - 

0 

h- 

o 

r 

CO Cu G 

CO 


X 


10 


| 



X 

G Z 



CO Z 1 - 

X 


h- 



1 


X 


u 


X 



1 -i 


X 

G 

h- 


X 


G h- 

+ 

co 

x z 

3 

—f 


X 

X 

1 

CO U 

X 



X 

- G X 



h- 

X X 


X 


X 


X 


z 

h- G X 

k 

"i 

X 

z 

CJ 

1 

Z X 

0 


Ul 


X X 


X 

X 

X 

h- 


X 


h- 

0 

X 


X 

X X > 


Ul 

1 - X 


1 

0 X 

1 - 

<_> 

X 


X X CO 





CO 




CO 



1 

X 





G 

cr 

1 


cu 

1 ) 

h- 

1 

0 - z 




i/I CO 


CO 

1 - 

CO 


Ul 

CO h- 

X 

1 - 

- Z X 

•—i 




X 

1 

h- CO 




X 

z < 


h- 


X - 

0 

X 


X 0 


X _J 



G X CO 


1 - 



X 

1 

I 

z 

3 


Cm 

0 G — 




CO 0 

UJ 

10 

UJ 

10 

UJ 

l/l 

CO X 


X 

X CO — 


•J 

X 

n 


1 

X X 0 

U 

h- 

LL 

G X 1 - 

1 - 

0 


i UJ 

X 




X 

X 



X 

Z X G 


X 

u 


X 

1 

X 0 


-i 


X 

X X 


X 


X 







H 


1 - 

0 X 



I 



1 

U X 

CO 

li 

X 

XX X 

z 


I 


G 


o 


10 

0 

■ LLI 



CJ X X 

7 


1 - 



1 

0 X 


LL 


CO 

U CO X 


X 

1 - 

CO 

X 


G 



z 



X 

X 0 



Ul 



1 



X 



— LL 

X 

fl 

CD 



C-J 

G 

H 

X 

X 

(VJ G 


X 

> X >• 

t— . 


n 

X 

X 

1 

G 






LL 



«G X 


u 


X 

0 X 

X 


X 

G X 

1 - 

X 

u 



1 

X Cm 

X 

U 

G 


- 


z 

X G 0 

LU 

G 

CO 

G 

G 


lj Cm 


X 
G h- 


x a 

h- X 

Z X X 
X CO 

CO z 

X X X 
X X 


X 


■ CO 


X L 0 h X 
N X > G 
KILZ 


X 0 0 
0 X 
X z 


X 
0 
G X 
X z 
X 

x a 

X X 
0 

X 
X > 
X - 


X 

X 


»-) 


X 0 

0 CO 

X 

X X 

Z 0 

X 

1 - 

X 

— X 


X N 

CL 

0 

X 


X X 

H 


0 

G h- 



X 

CO X 

X 

® 

X 


CO 


N 

0 0 

0 

II 


CJ 2 

X 


X 




0 

X h- 




X X 



X 

X G 

X 

CO 


0 

X 


G 

UJ X 

X 


X 



X 

> 

3 

CO 

X 


CO X 

X 

X 


X z 

I 





X 

X 

X 

0 

0 


0 

X 


X . 



I X 
CO I G 
X I Xi 
X I X 
Cu I X 
Z I X 

z i a 

Z I 







Z 0 0 

CO 






G — CO 

Ul K 






X 

CJ 

X 














C'J 


_i z z 

X 






-h- 

X O 






— 

-J 

— 

CO Z 






I— 

- 0 

^1 

X 




II 



X 

'•d r- 





> 0 > 

X 0 


o 





G 








X 


2 

0 




X 


X G G 

G 







G 


1 - 






G 

h- >J 






X 

X 

X 




1 



XXX 




i- 



G G G 

Z 


1 * 





LL 


CO 






N 

- G 





1 

X 

+ 

0 0 

X 

h- 






X * 


0 





X 


X X 



h- 







iT 


CO 1 

CO 

h- + 

X 3 3 

I 

0 o 


0 



XXX 

X * 









x — 



n 

f- 




0 



X 

21 1 

X 

0 + 

X 

1 - 

3 0 



o 


XXX 

C'J 

* 

© 

X 



X 

X 

X 

G 



0 

“i 

II 


X 0 



0 

II 

X ! 

u 


1 - X X 




0 

ii 


h- 1 — 1 — 

* 

C'J 


II 


* 


-L 

± 





n 



X 

CO 



1 - 

H 1 


X * 


X 

U 



h- 



UJ c • 

+ 

A 

h- 

> 

* 




X 



© 




N Z 




-1 


CO 


XXX 

CO X 

V U X 

X '. 'J > 


G 


XXX 

CO V 

0 H C'J H 

V 

_J 

G 





I X 

>T 

'••■I 

II 







U 


X 1 


X + 

XXX 

0 + 

X 1 + 

i \ \ 

X 


X * 

XXX 

O X 

1 + * 1 

z 

z 

X 

* 

X 

X 

X 

1 - 

+ 

♦ 





lL - 




Ul 


X 

X * 


0 p 


X 


CO 



0 

X X X z 


CO 


*■ 

UJ 

UJ 

X 


UJ 

X 



CO 

h- 

' ' h- 



X 

X 

0 1 

1 - 

X * 

X X o 

X II 

X II II 

II II li 

X 

X 

— * 

X X u 

X X 

II II II II 

X 

X 

1 - 

* 




CO 

II 

li 

X 

n 

X 

X 

X 

X 

X 


X 

G i 





- X CJ 

CJ 0 X 


CL 



(J — 

X X X z 


CL 

G 

* 


LU 



UJ I 


0 

CL 

1 - 

X 1 - 





X 1 


G ■S’ 

1 — 






— * 

h- 





Z 

















1 


l/l + 

X 






G * 

X 





Z 

* 

1 — 









X 

> X 

X 

X 






G 







G 
















CO 

1 - CO 

X 

CO 



X 1 


























X 

- X 

0 

X 



X 1 


























X 

Z X 

X 

X 



Z 1 


























X 

0 X 

1 - 






























X 

X X 


X 

U ' 

CD 

X 1 




H C-J 

r 'l > li" 

vo r - x 

cr, 

H 



H Clj 

nir< '■£> 

N 

X 






H 

■ ■•j 

i v i 

't 

U 

X 

X 

Z X 

— 

X 


I X 
I I 
I h- 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


March, 1977 


130 







o 

01 


01 * L - 

G G 




UJ 

3 

i-t 

4 

HH 

4 

HH 

4 

i-i 

4 

HH 

4 

HH 

4 

HH 

4 

HH 

4 

HH 

4 

HH 

4 

HH 

4 

HH 

4 

HH 

4 

HH 

4 

HH 




L0 

0 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 



II 



1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


l 


1 


1 


1 






b- 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 

10 

1 


1 

L0 

1 



01 

0 




1 


1 

r- 

1 

Ul 

1 

0 

1 


1 

u*' 

1 

0 

1 

Ul 

1 

0 

1 

01 

1 

•11 

1 

01 

1 

i-i 

1 






1 

r-- 

1 

CJ 

1 

CJ 

1 

-t 

1 

0 

1 

0 

1 

N 

1 

'.0 

1 

H 

1 

I-- 

1 

u > 

1 

’t 

1 

0 

1 


1 



X 



1 


1 

H 

1 


1 


1 


1 


1 


1 

CJ 

1 

t 

1 

Ul 

1 

IT, 

1 


1 


1 

Ul 

1 



b- 

0 

0 

1 

ui 

1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 

CJ 

1 


1 



*—i 

0 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 



3 

HH 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 




1- 






4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 






0 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 









UJ CO 



1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 








1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


l 


1 

L0 

1 


1 


1 






1 

CJ 

1 


1 

N 

1 

Ul 

1 

n 

1 

N 

1 

Ui 

1 

0 

l 

0 

1 

0 

1 

01 

1 

U.' 

1 

L0 

1 


1 



U UJ 



1 


1 


1 

CJ 

1 


l 

0 

1 

0, 

1 

r-- 

1 

I-- 

1 

CJ 

1 

N 

1 

0 

1 









U -1 


CJ 

1 

0 

1 

H 

1 


1 


1 


1 


1 


1 

CJ 

1 

’t 

1 

U* 

1 


1 


1 


1 

1 

1 



1 _J 



1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


l 


1 


1 

•'-.j 

1 





01 UJ 

o 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 



1- 





1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 





01 z 

1- 


+ 


4 


4 


4 

HH 

4 


4 


4 


4 


4 


4 


4 


4 


4 


4 





01 - 





1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 



Ul 

0 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 

01 

1 

10 

1 


1 


1 



0 z 

0 






1 


1 


1 


1 


1 


1 


1 


1 


1 

in 

1 

U • 

1 

L0 

1 


1 


0 

Z 0 

h* 

z 

1 


1 

't 

1 


1 


1 

f-1 

1 

H 

1 

0 

1 

0 

1 

0 

1 

0 

1 

H 

1 

f-- 

1 

Ul 

l 


1 


UJ 

3 

CD 

+ 



1 


1 


1 


1 

0 

1 

0i 

1 



CJ 

1 

N 

1 

1'- 

1 


1 








CD 


0 

z 

1 

1-1 

1 

0 

1 

CJ 

1 

*t 

1 


1 


1 


1 


1 

’t 

1 

0 

1 


1 


1 

CJ 





UJ 

o 

01 


1 


1 


1 


1 


1 


1 


1 


1 


1 


l 


1 


1 


1 


1 




1- 




1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 







Cl UJ 



1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 




hh 

z b- 





4 


4 


4 


4 


4 


4 




4 


4 


4 


4 









o 0 

? 


1 


1 


1 




1 


1 




1 




1 






1 


1 




0 

Ul Ul 

0 


1 







Ul 



1 

Ul 

1 

CJ 


Ul 

1 

0 

1 













Oi X 

1- 


1 

0 

1 

in 

1 

in 

1 

u> 

1 

0 

1 

Ui 

1 


1 


1 


1 

CJ 

1 

r-- 

1 

0 

1 

CJ 

1 

0 

1 



~ UJ 

HH 

1 

1 

CJ 

1 

i-i 

1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 





0 



1 


l 


1 


1 


1 


1 


1 


1 


1 


1 

CJ 

1 

CJ 

1 

f-i 

1 


1 

0 




0 p 

G 1- 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 




01 

HH b- 

0 o 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 




UJ 


o 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


b- 

LO 

UJ 0 


4- 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 






> 

z u 

0 


1 


1 


1 


1 


1 


1 


1 


1 


1 


I 


1 


1 


1 


1 


1 


III 


0 UJ 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 



X 1 



0 


1 


1 


1 


1 

1-1 

1 


1 

Ul 

1 


1 


1 


1 

U" 

1 

u*< 

1 


1 


1 


1 

<0 1 

U 

Ul 1- 

01 0 


1 

ll* 

1 


1 

ui 

1 


1 

U" 

1 

U ' 

1 

ui 

1 

U*' 

1 

CJ 

1 

I-I 

1 

I-- 

1 

CJ 

1 

Ul 




H 1 

O 0 0 


+ 

1 

'••J 

1 

i-i 

1 

i-i 

1 


1 


1 


1 

00 

1 

0. 

1 


1 


1 


1 


1 


1 



1 1 


0 o 



1 


1 


1 


1 


1 


1 


1 


1 


1 

tH 

1 


1 

H 

1 

CJ 

1 

nj 

1 



4 1 

0 

0 

HH 1.0 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 

1 

UJ 

01 

b- 




1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 

1 

CCI UJ 0 

0 Ci 




1 


1 


1 


1 


1 


1 


1 


l 


1 


1 


1 


1 


1 



01 1 



0 Z 

HH 

4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 


4 



0 1 


- Ll 

Ui 0 




1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 

0 1 


b- 

0 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 



0 1 

II 


O 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


l 


1 


1 










1 


1 


1 


1 


1 


1 


1 


1 


1 


1 


1 





0 


X 1 




z 

1 


1 

CJ 

1 

’t 

i 

0 

1 

0 

1 

0 

1 

in 

1 

0 

1 

u*< 

1 

0 

1 

0 

1 

0 

1 

0 

1 

0 

1 

y ! 













1 



H 


H 


CJ 

1 

CJ 


I-I 


't 

1 

Ul 


0 

1 

H 


LlJ 1 







1 




1 




1 








1 










1 

UJ 1 













1 




1 












1 


1 


1 


UJ 

3 

x 


r 

0 

G 


UJ 


CL 

x 


(j 

0 

«T. 

Oi 

0 

K >Ti 

0 

H 

Ci 

Ul 


m 

0 G 0 

Oi 

m 

0 



r-. 

G 


H X 

f"l 

'I 

0 

0 

’t 

H 

’T O i 

•JJ 

•X 

H 

I-- 

N Ui 

i-i 

0 N CJ 

0 


'S' 

'S' 

G CJ 

'■£} CO 

Ul Oi 


G N 

r-- 

Ul 


Ul 

0 

LU 

r - ui 


U • 




U' 

N 

•T. G 

u 



«r 





0l 0 



H 

N 

I-I 

CJ 

0 f-| 

U 

0 

CJ 

H 

0 0 

Ul 

*t 

0 G 

•r 




Ul H 




'S' 

G X 0 


0. 

(T. 

0 

r- 

0 H 

tH 

0 

H 

0 

0 H 

U ' 

U 

0 

i-- 

CJ 


CJ 

CJ 0 


Ul H 

01 

CJ H X 


H 




r-- 0 

0 


0 



G 

H 

0 G 

I-. 

i 1 

0 

0 

G Ol 

g r-~ 

0 

0 

CO 

0 0 G 



I-i 

0 




•Ti 




1"- 

U 

U; H 

in 


'L> 

U' 

H 'I 


CJ Tf 

X 

Ul N 

N 


G 

i-i 

U 

CJ 

O 0 


u 

0 

CJ 

0 0 

1'- 

f-1 0 0 

L0 

0 


i-i 

Oi H 

© 'M 


CJ 

Ll 


CD 


H 

i-l 

UJ 

0 

0 U* 

H 

H 



H l-l 

X 

r- 

0 H 

ll 

CJ 

I-i 


H i-i 

cj 




UJ 


i-i 

•1 


CJ Ul 

0 

U 


0 

0 •_• 

H 

H © G 

CJ 

'S' 

CJ 

• j 

0 H 


Oi 

U 

X 

i i i 1 

r-. 


*_' 

0l 




0i 

U • 


H 

1- 1- 

O' 

0 '•£' H 

CJ 

0 

•■■J 

Cl 



<r 

CD X 

CJ 0 

CJ 


H 

'_' 

u 

0 

f"- 



0 


0 N 

• > 

f- 

0 0 

0 


0 

0 

r-- 

0 CJ 




H 0 H 


LD 

X 

tH 

U 1 

tH 

1-1 0 

0 

U ' 

H 


Cl U 

(•- 

Ul Ul H 


•r 

CJ 



f-i 



Tf 0 0 



0 


0 

CJ 0 


0 

0 

0 

G H 

r- 


0 U 

H 

G 


i-- 


r-- r-. 


© u. CD 0 0 


H 

o 

•H 




H 


i-i 

Ui UJ 

rH 


U ' ' . J 

CJ 

u.' 

' J 

0 

Ul 01 


CJ CJ N 

X H 


Ul 

0 

H 

0 


U CJ 

0 

0 



G 1- 



UJ G 


0 


0 



0 

I 

f-1 

G CJ CJ 



•1 

u 

'1 



0 



H H 

Ul 

tH 

H G 

Ul 

(••- 

CJ 

X 

Ul 'X 

f-1 N 




H Ul 



0 

i_i 

CJ 


0 N 

’t 

!'•- 



0 0 

0 

0 0 0 

0 

!-- 

0 



CJ f-- 

CT-, 

G 0 U 0 

G 

UJ 


—4 

•J 

U 

0 0 


Oi 

T 

H 

H ll 

G 


0 0 


UJ 




cj U 


X Oi Ul 


_J 


0 

u 

*t 

r- cj 


0 

l-l 

0 

0 Ql 

G 

0 

.v, H 

Oi 


CJ 


0 0 


G CD X G G 

0 

UJ 

Ol 

Ui 

H 

N 

■X 0 

0 

0 

l-l 


U T 

•7. 

0 

G 0 


X 

CJ 

f-i 

r-- © 

lTi U 

H X 

f-1 

h ui r-- 

c- 

U 

0 

0J 

0 

o r- 


0 

CJ 

>_• 

CO G 



G CJ 

0 


y 

CJ 

0 01 

in f-i 



o 

0 0 





0 

0 


•X 

0 

ri 


•1 G 

H 

CJ 

■S' H 

0 

l-l 

u > 

o. 


CJ N 



0 0 


01 

0 


u 

N 

f-1 CJ 


0 

0 


Cl 0 

U 

G 

G 0 

0 


0 

> 1 

G I G rl 

0 

0 X 

0 X ( j 


u 


0 

0 

H 0 

’T 

U • 

U. 

U 

H 0 

H 

U' 

01 G 


l-l 

i-. 

0 

Oi f- 




'T | 

G X CJ 

X 

•t 


1- 

0 

0 t 

1-1 

0 

LO 

H 

•i' CJ 

0 

0 0 U 


c.| 

I"- 

UJ 

u r-- 

0 r-. 

N 

0 





u 

r- 

0 

0 

O l-l 

U.< 

u 

•i. 

G 

g r-- 

’t 

N 

U CJ 

U ' 

'•J 

0i 


H 0 

CJ Ul CJ 



CJ U ' 

0 

u 

H 

0 

C- 

0 

f-1 CJ 

u 

•t 

U 

U 

Ui T 

CJ 

N 

H G 

0 

0 

0 

0 

G 01 

0 G 



III 

0 0 

0 


0 



U ■ 



•JJ 

’-i 

H 

CJ (■'- 

0 

X U 0 Ul 

0 

0 

u 

H U 

UJ Ul 


X 

CO 




*t 

u 

u 

0 




0 

G 1- 

G 

H 

f-| 0 

G 


r-- 




0 


0 

LU X. 




u 

0 

«T. 

Ci U 

<T. 


0 

H 

G U. 

U 

I-i 

N X 


X 

i-i 


CJ CCi X H 

N 

CJ 


•I' U\< 



H 

H 

'J. 



G 

0 

0 

0 

0 H 

u 

CJ 

H H 0 


•■j 

G 

© 0 

O 0 

f- 

0 0 




0 


•t 

'J 



0 


0 

r--- 0 

0 

1-1 

•I 0 r - 

■S' 

cj 


G CJ 

G CJ 

CO X '•£' 


iM 

1— 


0 



CJ G 






u 

H 

H 0 O 

01 

0 


CJ © 


01 

CO 

'll 

U. L’ 



0 

0 

0 

0 


0 

0 

0 

0 

0 0 

■S' 

0 

0 0 Q 

0 

0 

(S' 

0 0 




0 

0 0 

0 


0 

0 

0 

0 

•S' © 

0 

0 

0 

0 


0 

0 0 0 0 

0 

0 

0 


0 

_l 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 © 

0 

0 0 0 0 

0 

0 

0 




0 



tH 

CJ 

i-i 

rf U .i 





•X 0 



0 U 0 


CJ 


T U.i 

• r» r-. 

01 

0l 

■X 

CO G 



H 

H 

tH 

H 

•H tJ 

■H 

H 

H 

H 

H H 

H 


H H 

CJ 

CJ 

CJ 


CJ CJ 

CJ CJ 



CJ 

CJ CJ 

CJ 


0 

0 

0 


0 0 

0 

0 

0 

0 

0 0 

0 

0 

0 0 

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 



H 

tH 

H 

H 

H rH 


vH 

H 

H 

H H 

H 

■H 

H H 

rl 


H 

H 

H H 

H ri 


H 

r-i 

H H 

H 


•- o 

O -J 
UJ 0 
CL Cl 
1.0 UJ 

i* 6 


UJ b- 

_j x 
i.o o 

UJ L0 w 
10 J— Cl 
X* Z Z 
UJ >h 

•• z 

UJ z 
Z Cti 0 

CC CJ h 

Z Z l/i 


UJ z 
CL 

01 
I z 

CL 
LO D 
Cl k 
UJ UJ 
I- CL 
01 


0 I- 
CL UJ 
01 


'J z 

UJ •-< . 

CL O 

LO Z CL 
0 Ul 
CL w N 
0 01 
I- Ll 

X U 


C Z CL 
Z Ul Ul 

- > w 

UJ 

I u 

I- 0 0 
0 0 
Z UJ UJ 
. UJ N Cl 
_l O 
01 UJ Q 
UJ L0 b- 
01 I- 0 Z 
DZ JO 
UJ 0 H 
Z 01 b- 
Ul CQ »—• 
Z CL 'I Ci 


Z CL 
O UJ 
_l I 


X 

0 

UJ 0 
CL Z 
0 
x _j 
_ x 

h o 01 

O CL Ul 
C U I 


Hi 01 CO . 
-J UJ lL 
-1 01 0 
J- =■ «z 

0 01 u 


UJ 


0 . 


0 _1 UJ I 
G I 01 
UJ 01 Z > 
Ci Cl *-< CCi 


O 

UJ 

LL 


W 0 I- 
0 CL > 
Cl U CO 


> X 
L0 CO b- 

u o 
lo x 


z 

H 0 
U CL 

c u 


I/I CO . 
UJ 0 
01 0 •-< 
0 0 
01 0 
■ b- 
CL _J 
I UJ I 
I 01 

01 z > 

CL *-h CO 


z 

CvJ 0 
O 0 
c u 


I 0 
0 Z 
0 UJ 
0 0 


00 

> 

h-I- 


b- X 
0 UJ 
_J _l 


•-H 01 

Z 0 
0 0 
Z Cl 


0 0 
z 

UJ HH 
0 > 


0 

UJ UJ 
I 0 
I- LU 
UJ 0 
0 G 
0 

I- 0 
UJ 

10 0 

UJ z . 
Z UJ z 
»-H 0 

I" UJ M 
O _l H 
O 0 0 
0 0 h- 
0 0 
0 0 0 

0 ’ 0 
U UJ Z 
0 0 
Ul G 
L0 UJ 0 
UJ 0 u 
X ■“• 

b- 0 U 


UJ H UJ 
0 0 CO 
0 0 Z 


L0 . 

0 

i in 

o UJ 01 


CJ h- 

u > 

0 01 


I- CO 
U 0 
UJ O 
0 0 


o UJ 
0 b- 
0 > 
CO 


CO UJ 
0 b- 
0 > 
CO 


0 I- 
b- 0 
HH UJ 
Z 0 


0 0 
U 0 
0 
0 O 


H > 0 
G CO 0 
0 1-10 


L0 0 
UJ 0 

01 z 
01 

0 

in 

> UJ 
0 

0 0 


0 UJ 0 0 

~ 10 0 

0 01 UJ 
UJ N 
0 

0 in 


CO 0 
0 b- 
0 0 


rH 01 
0 0 
0 0 
0 0 


CO CO 
0 0 
01 01 


01 0 
I/I UJ 


UJ LO 
I b- 
0 L0 G 
*-• Ul 0 
X 01 0 
0 I- 
I 01 


1-0 0 

Ui 01 z 

Z 0 
X 


0 X 

01 

0 CJ 

Ul b- 
b- 0 

X <*} 

>0 z > 

HH 10 H 


> in 

.0 UJ 
10 CL¬ 


IO 

UJ 01 
01 UJ 


LO 0 0 


■0 0 0 


~ 0 G 
0 0 0 


CJ 01 

b- UJ 
0 


01 0 

0 L0 

01 UJ h- b- 

Ul 0 *0 0 

01 0 <0 0 

0 0 

0 I— 

0 Ll! 0 0 
cl I— Ci 
I- Z 0 0 L0 

0 0 h- 

G G '0 01 

01 01 01 0 

II II 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 17 


131 

















o 


E I ill 
-. H X 
•I •» >x : 
-J 

> >-i i 


•I H ► 
I Cl X _J : 
. : : cl i : 


) Z Cl 

j ii a 

Cl 
O O 
J H U 

:■ z ii 


0 Ui 'X LU 
Cl l— > 
CD > - 'I 


■_< CtC G 
ID 

0. 05 'I 
Z> Z II 
j H J 2 
a. I '/I C 
J -J Cl 
X C 
ll 05 I 
II ’ 


•X H 
. 0 

: x u x i 


x 0 

Ui 

0 »- 


CL' 0 
U O 
0 II 
CL Z 
0 l/l 


* it II 


X X Z I I 

0 Z 0 (j 'J 

Z -• Z ill £ 


O-l_ 

I 

Cl N Cl 
ZZN 


Z X Cl I Z I 


x x : 

0 z o •: 

x - z i 


> X 
0 H 
Z X 
ID 5 


I II 


*-* X 

o 
. o 

0 II 


z z 




X _J -v X - - 'D 

0 X X X O I X X X X Z X U _l I Z X 
X I 

> X > 05 X > X > X > X X N X X > h- 

* II O X N 0 =' z o Z O 0 0 Z O Z 0 U 0 UJ 

- •Z0XZX*-<Z-'Z0Z-«0^>X0ZX 



u. 




X 05 

I X 



o d 



I 

X 

1- 0 

2 


0 X 



1- 

X ^ 

0 x 

X 



X 


0 X 

(J 

Z X 



z - 

1— 

1 

Z H 

Z X 

XXI 

I 


o 

> 

1— 

X > 

o 

0 1- 

0 

X 

XXI 

X 

1 X 

0 X 

x • 



h- 

x y- i- 


X Cl 


X 

H- Q Z 

I 

I 

> 0 

X 

0 

1 — z 

X 

Z 0 X 


ill 

X X z 

> 

X z 

Z X 

X h- 

X X 0 

i 


K II X 

0 

X z 

X 0 

1— > 

Z X 


X 

> X 0 

z 

0 0 

Z 1- 

> X 

XXI- 

K 


X 

X 

I G 

X X 

X II 

x :=• x 

X 


h- 

X 

1.0 

X X 

X 

(j o n 

0 

' 1 

05 X 


1 

10 

10 

Z 



X z 
II X 
J I X 

I ; 

X X 

II X X £ 
HDD; 
•> X X - 


X >0 N 

*T 

X 

X 

X 

Q 

X 

(J 

X 

X <0 Xi 

0 

x r-- 

0-J 

H 

X 

r- 0 

iT, 

0-i 

X 


’t 

H 

r-- 

X 

CO 

X Xi 

M 

'£• N 

05 


H r- H 

U” 

r. 

X 

'-•J 

r- 

r-5 

x 

■£• 

H 

H W 

X 

h r -. 


0 

01 

0 X 

Ci 

K 

t 

0 

'D 


0 

X 

X '0 M 


X X 

i0 

0 

IT, 

i-O n 

f‘5 

X 

M 

If 

'"■J H 

X 

'•-J 

x, 

ri g 

,-i 

H X X 0 

q, 

r . 0 

0 

r-- 

0 

*r 

X 

i0 

G 

H 

>0 

0 (J 

10 

o r -- 

X 

0 


0 Oj 

X 

'£• 

•55 



H 

H 



H X 

H 

X H 


E 


CO H 


X 

M 

Lj 

0 

0 

0 


X X fJ 


X 0 

0 


H 

X '*■] 

X 

X 

O.J 

M 

H 

X'. 

X 

H 

X 

'•-■J 0 

X 

*t X 

r-j 

0 

0 

■0 Ci 

X 

r-- 


0 

•0 

IT. 


H 

X 

X 0 

X 

G X 0 

0 

x x r-- 

H 

0 

G 

'£ 

H 



X 

X 

f - x 

H 

U'l G 

0-J 


X X 0 

'X. 

H 

H 

in 

0 



X 

X 

i -j r- i o 

X U 


0 

u 

•7 . X 

H 

0 

H 

X 

X 

•”j 

If 

H 

H N N 

X 

'“'•J H 

H 

0 


•0 X 

0 


0 

G 

X H X 

X 

0 

X U”> 

X H 0 


0 

•'j 

«:-.j -I 

X 

H 

O'J H 

G 

0 

M 

H 

r- 

X li” 


0 'I X 

0 

0 

H H 

0 

OJ 



i_i 

0 

© 

0 

•0 

H G 

i i 

0 X 


0 

G 

0' If' 

Cl 

X 

G 


0 

H 

X 

X 


If H 

•~J 

H G 

G 

lj> 


00 X 

X If) 
ID ID 
X X 


LD ill 


C-.J 
0 If.' 
0 U 


H H >1 O'- I'- H H '"-I © 


1 0 -1 f'J >_• 0 


' 0 r 

-i r - H x /.J H X X 

x 0 o H f -1 r j r-. x 

—I I ' 0 ll~' X ll” ill ll" 

X Q 0 U X u 0 

'jii-uxh if- >\i r 


; 0 r-j 

10 

’t 

0 

G 

H 

0 


Q5 

iT. 




0 

0 X 

i a x 

U ' 

1- 

1- 

—i 

-I. 

111 

|v; 

X 

X H X If 

U ' 

U < 

iT, 


' G I X 


•J 

G 

0 

0 

0: 


i 

X 0 

H 

X 

’t 

i„i 

0 

n n 



i-l 

••J 

H 

: •' 

H 

l'-'i 

h r- ii, 


H 

i - 

CJ X 

’ •_• 0 

n 

i-l 

i - 

’t 

•*-i 


’T 

0 

0 

f' < • 

0 

0 



I-- 


0 






•E' 

0 

0 

•I 0 

0 




0 




'1 

0 



0 

©• 

0 

■:.< 0 

© 


0 


0 



0 

0 



0 

0 


0 

0 0 

0 

0 


0 


1 X 0 


0J 

ri 

*T 

ll 1 


r- 

iVi 

n, 

X X 

1 ! 


X 

X 


1 OJ r , 

n 

1'. 

r-i 

1 j 

05 

n 

i-j 


r i 

0't l-i 


l-i 


r i 

r* 

' 0 0 


0 

•1' 

0 


0 

0 


|V| 


'I 


0 

0 


' 0 0 

0 


0 

0 

©i 


0* 

0 

0 

0 0 

0 

•E- 

0 

0 

0 



H 

H 

H 

H 

—t 

H 


-j 

H H 

H 

—i 

H 


—1 


r- o x r - h r-.j •: 

g c-j r-- f 'i 0 cd cd t f - 

|_' H i -l OJ H 111 111 0 CQ 

f.j 0 r-i —| 0 If H i"i X 

H 05 0 f- 0 0 0 0 X 

_ _ 05 H H X X H 

X © X X H H X X G 0 

X H X l-i 0 i'I f.J 0 r-i 0- 

X OJ -i •_! © 0 0 (J X u 

- I 'I I , r- H X If X H 0 

x 0 0 X ''J X T X X 


+ Z 05 
•/I a i- 
05 ►- 

X l/l X 
X 

0 H '55 
0 '/I 
X O 


X 0 
X 

►H l/l 

Z< X 
G X 
X 0 
X X 
H 

10 z 


~ X 
H X 
X > 


0 11*| 
in z h- 
i/i x *- 

XXX 

X 

0 z r-- 
0 0 1 - 
r - h 
L_ l */l X 


U -J 

•-* -J 

-. X X 

n *_ x 

HZ X 

+ 0 l/l z 

l/l HH K X 

l/l l/l *-• 0 

X X 
XI- X 

0 05 X X 

0 x <x 

■i x 


x 

x 

X 

X >5 


•X 0 X X 
XIX l/l 
X Z X 
'X 0 - x 
Z X 
•I 'I H X 


X *-« 

X l/l 

l/l X z o 

X •— 0 X 
IlNX 

l- X 05 N 


CO X 

■I 0 

X X 

• Z X z 


O 05 
■*& X 
X X 
0 
CO 0 
X 'I 
X o 


J 05 X 
. Z 0 
X »- 
■ 0 'I 


X 0 

:• n z 

X 

: i 0 


— x 

05 •- 
X X 


X Z O X H- 


X Z H 
X 0 *-• 

■r - 0 

'0 1.0 z 
•0 o 
XX >0 
•r - 0 
XXII- 
0 »- O X 
•0 05 0 05 


I I 
I 0 0 

0 0 0 Z 

0 0 •-■] 

H H H I 

l| 0 0 0 

II X G G 

- 0 X X 


X 0 
0 0 
I- I 
X '0 


- 0 <1 X > X H 
:• x x -i g x x 
: x x z *0 x 


0 i 

0 h- 

•i r -j x 


•r 

CD X 


: 0 I x 

- i x -r 

1 X 0 X 


Page 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


March, 1977 


132 





I 


a > w i w 
: z 2 UJ _J 
lu x y- > 


> i- > in x 

■ uj o -r i o 

O I Z O X 

I Z Cl 


© X X CC H 

l —J % d Cl I © . © 

Z Z Cl X Ziu Jlu 
_l XXI X 

_J > X > I/I W X X X > X N XXI- 

X o N © O J J Z Z u O U Z O O UJ 

u Z Cl J Z Cl Cl H H J E C H Cl a. 


UJ X (J If I rf 

UJ Ci II Z X Ci© H H 

X UJ ^ -v Ci JIG - Ci © © 

X © I © © ©©© ZJluUJuI 

X * X -1X10 0 X 

* II >JOX>IJUX£L N _J I/I I/I H G I G I I Q. N X X X N XXI- 

* * HOXZXOClXi-XZZXX I- X X '_' © Z Z 'J Z © © 

•- ZXOXZ-JX'-' XOXOXXZCi X Ci X _J <J **:• Ci C, Ci *“ Ci. ll X 


: _i x x _ 

_i '/. 0« _ i 

x x X' x : 

X X O I 


■ x C, : 

; u. © r_j z ; 


> x :> i/i ~ © > x I/, x x i- i- 

4 II O X N 'X- X' > X O O © U O HI -j 
- - IC'XZXZCiZXXCiXXI 


Ci •t © © —i z 

I X J © © © - 

©XZJO-IXZX 

X -I _J _i 

I/i _i X n N X N X -< X _l r 

X X f-J Z Z Z u z Z > O X L 

X j •*' H H Ci ^ H t X U £ 


Z X © t 

I X - - © © 

XX Z _l © X 

I X _| 

! lt* :> ■■ z~_ — > x r j x k 

■ X Z X <_■ >_■ Z © 
X'-ZXZC'-'-XCl 


i © x z © x 'j ' 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 19 


133 



MOV ft, M 

CMfi ■ COMPLEMENT BVTES 


-J LU 'I 

x <3 ■ 

CL Z Z 
UJ X '.0 
Z II Cl t 
LU UJ 

'3 GU'I. 


'/l I X Ui U. L'l •- _j I I iL m j u. m u. J i 

•r -Ml CL J i J v i it h o x x o x o a. n x : 

Cl-1 X G. Cl Cl J X l/i G_I O CL J Z O *-> (J . 


> X 

O'J O <X >3 ■ 

1-0 K Z 3 h| 

Z , r - Cl 

X ill I I I O 
-I _l _l 


H IP 
C Qj C 

<r i.n _j 


i 11 u z CD j j : 

I X > > Cl f . I 

zoo o z z : 


h Z -x 'Xi ® m z o o fjj >x ip r- c.j cu oi z x x >r 

*“• i_j O ' *J II J I u J O 0*J O Ct CM © il O X G ■ . u. . 

z O X I O GO Z U J © X G I/I UJ <_> _l Z Z I uj 0X0 Z © Cli J X G X Z U J I X Z N (J 

_ _ — £ X -J O _J I X _J G 0-1 X X -I XIX 

^ it t = 4- x X X .> Cl N Cl Cl l- _j '/• i/i J Cu U I (L ■_ > (L O X X X I lu I Ct Cl f-J X X > Cu X Cl N Cl 10 10 > _| £_< CL > *-« > O 

j o ,r iJi z z u u z o >_• uj ♦ ii x _• _■ x _• z <_■ zgouci u n z z o cu >- r j uzzzocqi- «_■ z o o z< o x z x o z o i- 

^ 0. il L .'. li M H j 1 z U ^ 1—1 X u. CL - O CL CL CJ '/• X O X Z X X X _J l/i I/I O *-■ G *- •- -I Z I/I I'’. G (L Cl CL Z i CL Z X Z I/I 


Page 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


March, 1977 


134 



I 


G 


CM ( 








to 






X 


X 





z 

X 







~l 

N 


X 



X 





X 




I/I z 

X X 

X 






G 

X 

0 


1- 


0 

X 

O X 

L- V 


H 

to 




z 

O 1- 

X 


z 


to 

o 

X 



o 




l- 

XI- o 


1 

1- 



X 


X X 

X o 



0.J 



\- 

+ Z' 

o •-* 

X 

C-J 

K 



X 

l/l > 

X I- 


K 



X 

“1 

X X G X 

X 

o 




0 

l/l 

O XXX 

> X 

ill 

X 




X 

X 1- X 

X X 


0*1 



X 

X 

II X o 

X X 

5 



H C-J 

I 


x X Z' 

X o 


X 

(4 

1- K 

0 

X 

Z G X X 

o 


X 

h- 

+ 



- XX 

X 

X 



X H 


o 

K ^ o X 

h- I: 


1- 

UJ 

X 1- 



□ X 

X X 

p 



X II 



O II G 

to to 

X 


X 

X H 



X Z X 


X 



(J 1- 



X I 








*z 5 







M 


I O 


x x 


_ 2 oo co to -r in in »- 2 2 

Qj _i G '/' <J I G X X '?• '/> - *-• 0*1 

X ill _I G CL G X 'Ii G X ll 

'/ *-» _i LL LL ll li. 10 _l *- 4 — X X *-• ►-* ‘X •"« X X X 'I LL {- 

-• : • X O Z O G E Z j 'I N X O U X Z N Ci CL H X u LL _ LU 

Cl _j CL *-■ ll 0. *“• •“» 0. *“• _ O ll X _I *1 • —I O tO (_) X X ll CL 


ll u ll h 
O I— O lu 

Cl tO Cl Cl 


Q (3 1 
Cl Cl 
I : 
X II 1 


. -I x 
ll •! Cl L 


Cl G C 

•I r 

XX ^ 

LO X 'X O Cl I— —• 
Dfl(kh£LOlU> 
Cl X to *“• Cl Cl Z 


_J H X 

OJ X G H G ii' 2 H CM 2 H 

H h U (j I G tO G h- G *1 0*i CO 2 H- 1.0 G 

• -■ - - Ci ■ Cl H - Cj X CL 0. Z' 01 Ci Cl CL 

I Z I Z Li I I Cl X Cl Cl 10 CL I 'I 

X _J X JO JX ICI 

- *-4 > :>■: > to > x x cl n - x _• x ll x o'i u x to x *- to o 
X O Z C X O > X Z X I— X O O X X Z O X X X z 

J Z H z Cl Z F Ci U Ci h J w (J X Cl G Cl O il ll X j Cl O 


ll C 
G ri 
to -J 


nj Ci 

I- ll o 
to z 

UJ 1-0 V 
X CL 

X O 111 
UJ O G 

t ~ 

H- O.J X 
_l M Z 
Z I UJ 

tO CL 


CL 


UJ UJ ‘ 
f— ^ 

O > 


X Cl Iwii- 
O o X Ci CL u; 
X X X _J X to X 


X' tO h- -■ 

O -I Ci 

CL O X- 

Z l/l to 

*> UJ X 

UJ X H 

X > X 

G I UJ O 

> =* ^ G 

G UJ 

x 

- + O I- 

X to *-« 

G X X 

- O > X 

> IL w 

G X II G O 

Z J X 
XHlhl- 

to f x UJ 

x 5 x 

CL X G X > 

X- Z C X 

X G IL |J Ii 

-j G li X 

JX'H o u 
X G > CO 

X O -I - 

X Z G 2 * 

Z II l/l ll 

~i X X 


O 


> X 
X (J 
X 

X X 
U X 
X 
I- X 
X u 

to 


I— X 
X' > 
X X 


0 

z 

X 


X to 

X O X 

z > 


HrH 5*—J X H X X 

H H 2 M 2 G 00 rH O I ’"■J rl X X C*J O H 0 

X CO 00 tO 00 2 t'l O Z O Z XX X h- Z X X O tO 00 X G ►— X CM j I- Z h h 

G G G I X G G tO u_I I— X f- G X G X G ^ X ^ Z W Cl G G X - X (Ti tO -< - X 

X 00 X X XX Z XXX X OX X Xl O N I X T s - Z I 1-0 X X O ffl G X G I X 

XXX IXXXXX XX X 0 X x XXXXXXX 

II X ►- X X X X 1.0 to X I U U X X l/l X XX tfl X > > 10 I h I I h > m > x I XX X X N > > X tO tO *- X X — _ — X X X 

- X G Z X l- Z X Z G G X X Z O Z Z X N X j Z j Z C* ODGZHUXOZOXX H O X Z O G O Z' Z X X (J X X X X X O U 

'' I b X I/' h X Q. fl_I X X *-■ X H LL U *-1 O to X »-• Z Z X X X to X X Z X Z G X to X 0 G *“■ Z Z X X X X X G X X G 




n n ’t 

or , - <3i 

G X G 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 21 


135 




UJ 

© CT i X 

V A 1.0 


© 

H 

> 

Qj 

CM 


> 

_J 

0. 


0 

X 

UJ 

N 


Q 

UJ 

in 

LL 

X 

UJ Ci 
CD ill 
Z X 



UJ o 


II 



UJ 

I 

10 


UJ 

F 

> 

LU 

I 

|/l 

51 


IX 

UJ 

N 


0 

1.0 

x 


D 

LL 


X X 
X X 

LL I 

(j o 

CL I- 
Ul 
O 0 


CM 

CM I CL 
cl x cl 

CL M UJ 
UJ 

O 0. 


I X 
© © I 
I © H © X 

© in Mi Q I 

© - CM © ir. 

i N Ci X N i-i ’ 

Ml H H J I „ ■ 

> X X I Cl 111 [ 

. 1.0 X X 0 X 1.0 * 


X LL 
■ ul CL 
J i-i LU 


I I 
© © 

© © x 

CD in H 
© 

0 I N 


I X 

Cu in 

•••■j «r 


r - cm *1 r 

'■••J 

■I - ( 

Ui Cl N i 


X X 

: h i h 

' © If.' © 


H I '£> CO CD 0 Z 
© X © • 

r- cm i-i 2 


X - 

i Ci Cl n i 

1 J (j u . 


lie XX 00 K Z I. 
-J _l 

- — x :••• x — > » 
j o x o cu cl z <-<: 


i i 
: © © 
i in © 

i oo 


■ —i •— cc •: 

• x e i 

: u -J _i >: 


i 

© x 

H CD 


' I 
1 X 

i : x 


x 
© 
i © 


i 
i © 

M'J © 
f' i OO 


© X 

c.j r - 

H 


X - _ 
Ci X c 
-J _l c 


- M O 


J X X X o o 


l in 


I II 
X © X' UJ 

UJ U~| H 0 MO 

T X X 0 hOlLX 

H © - M D i v i i-i © 


-I X X X IT' 

_l _l _J -J J J 

. > X N H J 0. H > X _l - _j Cl -j _J - 

: c cl z > x z x o cl r- j x Ci o x z x x x 

I Z O •“* Z O 1-1 J Z C* •“> X Z Cj *-> (J (J u 


CJ 

X 

X 

X 


0- 


X 



10 

I 


X 







X 

10 





H 

X 

X 



© 


J- 


1- 



H 


it 


0 





© 

X 

3 




Q 

rl 

Q 

X 



X 

X 


31 

X 




X 

0 





H 

N 

F 

X 




1- 



I/I 

X 



H 

Ci 

j- 



X X 


> — 



X 

3 

X X 


X 0 

X 

0 

X 


X I 


X — 


M 


K 

U 0 


- Ci 

h- — 

Ci 


X 



J- 




n 

X h- 


X 1- 

Z J- 



X 

\ X © 

iT, 

=• X 

0 D 



X 

O 0 V 


Z 0 

Ci X 

X 









X 

X 


II 


z 

o 

X 


z 

X 


c- 

\ 

X 

o 


LU 

X 

10 


X 

z 

I 

o 

h* 

X 

0 




0 0 

0 



H 


X 

CM 

0 O 



X 

© 

I 



H 





© 


CM X 

© 

z o 




H 

H 

rH 

i/i 

CD 

X X 

X 



H 

1.0 

© X 

H 

— z 





H 


X 




X 

X 

X I 

X 

tH 

X 


X 


cr, 

X 

r- 

X 


1.0 

0 X 0 X 

X 





X X 


0X0X0 







X 


XXXX 

X 


X 

N X 

X 

X 

0 

I X I X X 

X 

1— 

0 

t_, 

x 


o 

0 

0 X 0 X 

X 

O 

X 

Z •_! 

I 

0 X 

2 

0 X 0 X 0 

X 

UJ 

z 


j- 


X 

0 

o: 0 x 0 

( ’-l 

z 

o 

—. x 

X 

—. 0 


X 0 X 0 X 

0 

X 


Z 

i/i 

Z 


: I 

, © 

I CM 

. r- x 

: x x 

■ j- x 

i u*. x 


X X 

00 X 

I I I 0 H 

© © © X I H X X 

© © © i v i ii © XXX 

Xi in ■£' M x i v i x 
xx x 
x x x x x 

J— K ►— x x 

I.o I/I 10 u 


11 
© © 
: © h 

• X N 


© I 
© X 
CM © © 


x c- 

h r-. 

cm . 

h r- i 


: x 0 x : 


• x x - 
: x e : 

l O X L0 


N J— X X Z X 


I 
I © 

x in x x 

I X X I X X I M U H © 
Ci X X in Ul i -i © © H M © © © 

CM CM CM CM CM CM •‘■J C.J C.J f-1 M C*J H * H CJ X f- X 10 
XXXX JXXXX 

- - - - - - - -XX XXX 

N X N x N X r j X N X N X N X N > I Z K X I- 

-■ 0 *“■ 0 •“> 0 0 *“> 0 0 *-> 0 *“< Z 0 •"> 1.0 X l/l 


I 

UJ 

I 

© X I 
© fO © 
'£> M 
X 

XX- 
J- X X 

L0 0 0 


Page 22 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


March, 1977 


136 



AN ALGORITHM FOR COMPUTING 
SQUARE ROOTS 


Dr. Dobbs: Dec. 21,1976 

I have only recently dug into your exercises and teeth moving and 
am impressed. 

I do have one negative observation (a complaint). Super Classy Text 
Editor "A" for 8080's is hunky dory (and deserves space, no dung!) but 
is impossible to translate for a TMS 9900. This is because machine to 
machine conversions are less than humane. Since your readers often re¬ 


mark with pride about the plethora of computer systems in their club 
they might be interested in human understandable techniques in addi¬ 
tion to machine readable stuff. 

A fine example of what I would like to see more of in your journal 
is on the line of the algorithms such as the somewhat inactive tech¬ 
niques and pracniques [Dr. Dobb's No. 1, Vol. 1 ]. If any of your 
readers think that they have anything to submit for that forum I urge 
them to do so. To show that I practice what I preach I am enclosing 
this algorithm (first shown to me by Dr. Will Brown, Western Wash¬ 
ington State College in 1967) for extracting square roots. 

Thanks, 

James A. Hinds 7240 Davenport Rd, No. 101 

Goleta, CA 93017 


ALGORITHMS FOR TAKING DECIMAL SQUARE ROOTS 

0 is input quantity (all arithmetic is base 10) 

Result in N 

SI: [initialize and scale 0] N-l, fraction digits - 0. 

R-“first digit(s) of 0”. [This is easy to do with a computer 
but hard to express] If greatest integer (logio (0) is even 
then R-first digit of 0 
else R-first two digits of 0 

[This is exactly what you do when taking square roots by 
hand] 

GO TO S3. 

S2: SET N- N-2. 

S3: SET R- R-N, IF R> 0 THEN GOTO S2 
S4: R-R + N, N-N-l, 

If (fraction digits > “ENOUGH”) or (R=0 and 0 exhausted) 
then N-N + Z [no remainder possible] STOP; 

S5: SET N- N * 10 + 1, R-R * 100 + “NEXT 2 DIGITS OF 0” 
If “THESE 2 DIGITS OF 0 ARE IN THE FRACTION” 
then set fraction digits * fraction digits + 1 
GOTO S3 


A WORKED-OUT EXAMPLE 
Square root of 121 ie 0=1’21 

Step 1 R-1;N-1; fractional prec is none *0. 

Step 3 R-R—N=l—1=0 (R not less than 0) 

Step 2 N-N+2= 1+2=3 

Step 3 R-* R-N=0—3=—3 (R less than 0) 

Step 4 R- R+N=(—3)+3=0 
N-N—1=3-1=2 
Termination test fails 

Step 5 N-N * 10+1=(2) * 10+1=21 

R=R * 100+Next Digits of 0=(0) * 100+21 

Step 3 R- R—N=(21)—(21 )=0 (R not less than 0) 

Step 2 N-N+2=21+2=23 

Step 3 R- R—N=0—23=—23 (R less than 0) 

Step 4 R- R+N=(—23)+23=0 
N- N—1=23—1=22 

Termination test succeeds (R=0 and 0 exhausted) 
There when result=N/2 with no fraction digits 


rH 

LL 

LL 

U 


X 

x 


1 =' - 



LD 












M 

'I 

© 

CT. 

F- 

00 

in 

A 

in 

X 

U. 

u 

CO 

Ll 

Cl 

T 

I 


00 

o 

O GJ '£) 














(T, 

© 

Ch 

If’ 


IA 

UJ 

LL 


in 

H 



'.li 


F- 

F- 

••■J 

in 


lL A i_i 














© 

x 

F- 

© 

r- 

X. 

UJ 

© 

'ii 

IT 

G 

in 

© 

•0 

'0 


© 

•r 

© 

© 

© FI © 














© 



<■•1 

F- 

© 

© 


© 


FT 

a 


© 



© 



© 

© X © 














GJ 

© 

© 

rH 

X 

F- 

•X 

Gl 

IM 

© 

UJ 




•1, 

'T 


F- 

c. 

GJ 

© Ci © 













'X 

fA 

fA 

H 

(‘■I 


K 


lA 

IA 

FT 

Ll 

c 

u 


© 

© 

GJ 

UJ 


(A 

© o © 














U. 

UJ 

H 

F- 


■I 

•l< 

U- 


Ul 


Ul 

'1 

ll 

F- 

•X 


Ul 

•T 

CT-. 












2 


O 

<r 

LL 

Gl 

© 

G| 

O 

in 

© 

© 


© 

: 

GJ 

GJ 

U. 


© 

F- 

© 

© 








1-1 






o 

k 

U. 

UJ 

H 

UJ 

D» 

>1 

© 

UJ 

F- 

H 

UJ 

Ul 

UJ 

GJ 

■r 

•'■1 


•i 

1'- 

o © © 














© 

i v l 

© 

(VI 

u 

(VJ 


© 

'1 

© 

>.U 

Ll 

,i 




IA 

© 



Fi Q © 











lL 


LL 

© 

111 

© 

(M 

X. 

UJ 

© 

(M 

(VJ 

© 

Ft 

F- 

F- 

F- 

F- 

F- 


© 


G| 















gj 


© 

(A 

© 

u. 

A- 


G 

© 

U 

© 


© 


CO 


© 



li' rH © 














GJ 


H 

CT-. 

r- 

CT. 

UJ 

U 

£ 

'1 

1 4 




UJ 

•X 

U' 



•J 

Cl O © 













I/I 

Ft 




F- 

© 

U. 

IX 

FT 

; t 

© 

© 


© 

(■•- 


© 

GJ 

fA 

fA 








o 






UJ 

F- 

U 

1- 

■X 

•r 

r- 

'.L 

F- 

UJ 

Gl 

b". 

•I 

•1 

T 



© 

CT. 

© 

Ul 

CO© 















IA 

© 

rH 



© 

© 

u. 

© 

a 

FI 

(•I 

Fi 



© 

•li 


u 

Fi in © 










LL 




© 

00 

© 

'I 

UJ 

>1 

(JO 

-H 

Kh 

© 


Li 

F.J 


F- 

© 


F- 


a. 

UJ c © 















u 

© 


GJ 

u 

a 




o 

© 

© 

© 


© 

Gl 

U 


© 

© a © 











LL 


UJ 

'M 

Cl 

Gl 

© 

UJ 

L 

a. 

Gl 

UJ 

c. 

i 1 - 


■ L 




CO 

IA 


i- 

CT. G © 













_l 

Fi 

u 

(A 

(A 

ll. 

•M 


Fi 

•1 

u 

© 

© 

a 

© 



© 















I/I 


CD 

rH 

•l* 

0. 

'•0 

CT> 

UJ 

IA 

CT. 

•I 

!•- 

© 




CO 




© 

•r 

X UJ Q 














Q 

•V 

© 

i.'i 

© 

U 

GJ 



© 

■.••j 

Gj 



© 

fA 

© 

© 

(A 


GJ © © 













UJ 

UJ 

© 


I-- 

•X 

a-. 

UJ 


© 


•H 

CLJ 


ll) 

il) 

© 

<1 

F- 

U) 

© 

fA X. © 













'/I 

Fi 

© 

A 


•H 

© 

lL 

© 

FI 


(VI 

© 

«•■! 

'•■1 


in 

FI 

U 


FI 

U © © 













W 

r- 

C'J 

Gl 

© 

Fl 

F- 



UJ 

H 

F- 


UJ 

UJ 



GJ 

0 


UJ 














x 


f v l 



u 

F- 

© 

U 

u. 

'•1 

© 


u. 

U 


u 

© 

() 

© 

lL 

© UJ © 














H 

in 

x 

Cl 

'•) 

'X 

H 


U. 

ll ' 

rH 


N 

F- 

'.0 

Ci 

CO 

Gl 

UJ 

u. 

© Fi CTi 











X 


u. 



fi 

IA 

© 


UJ 

n 


© 

'•1 


© 


© 

<■1 

U 




© 0 © 













o 

GJ 

© 

UJ 

GJ 

U • 

■I 

c 

© 

UJ 

© 

gi 

iT. 



© 



©' 



GJ F - 










© fA 



M 

© 

u 

© 

•1 

•‘■J 

t_i 

u 

‘■V 

© 

FI 

© 

© 


© 

© 



r i 


F i © Ul 









(J 

LLi *1 


0 

■X 


-T. 

© 


UJ 


di 



(j. 

u 

(1 

'.1 


F- 

!•- 


■r 


U. r - Fi 














IA 

© 


(J 

Ll 

Fi 

i_j 

1-1 


© 

■£' 

r-T 

lA 

GJ 

F- 



© 


X X 













UJ 

LL 

i- 


N 

|T| 

Ul 

u. 

1 

F- 


GJ 

••I 




© 




F- G fA 











-J 


f- 



A 




Ll 

It 

© 

© 

'.■j 




|TT 








lL u. 







-1 

— _J 

llllllllllllllllllllllG 

i/i 


© 

© 


© 



© 

© 

© 





© 



© 



© © © 



4. 







■1 

X 'I 

Z 0 O O O 0 O 0 0 O 0 2 


© 

© 

© 

© 

© 


© 

© 

© 

•1' 



© 


.r-i 



i+-i 

|T-. 


© © © 



* > 


u 



•—> 


U 

_l •_' 

h| ZZ2222Z222lil 

j 

© 


© 

© 

© 

© 

© 

©i 

© 

© 

© 

© 

© 




© 

|T| 


© 

© © © 















■H 

• •1 


A 

ll ' 

'-L' 

1- 

in 

iT, 

•:r 

UJ 

i i 


u 

U 





A U ■ '•£> 














■T> 

iT 



iT. 

CT. 


CT’. 

a 



■T, 

CT. 

il. 

It, 

iT, 

•r 

•X 

-r 

•X 

X X X 














© 

© 

© 

Q 

© 


© 


© 

>1' 

© 


•1 


© 

© 



© 

© 










— 





© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

Q 

© 

© 

© 

© 

© 

© © © 









_1 





rH 

H 

rH 

rH 


rH 

ri 







rH 


.4 

rH 

rH 


rH 

rH H H 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 23 


137 





AN IMSAI GLITCH FIX 

Fred Pfafman 
353 San Roque Drive 
Escondido, California 92025 
(714)747-3630 

The IMSAI RAM-4A memory board may generate a min¬ 
or annoyance on your front panel. When the address is 
selected for 0000 thru 0FFF the memory protect LED is 
turned on while performing an input instruction. This prob¬ 
lem does not affect the system operation and will be seen 
on an IMSAI only if the front panel memory protect modifi¬ 
cation has been incorperated. 

Correction of the problem may be accomplished through 
an unused gate, three jumpers and one circuit cut on the 
board. An unused section of AND gate Cl is inserted 
between the output of C4 pin 8 and BDENA BAR signal. 
The other input of Cl is connected to C4 pin 2. The cir¬ 
cuitry to pin 8 of C4 should be cut. This will AND the 
address decoder output with the NOT input signal and 
disable the output driver for pin 69, which is the memory 
protect indicator. 

The partial schematic shows how the circuit is modi¬ 
fied and will aid in following the above description. If you 
have any questions please get in touch with me. I am 
interested in your ideas also. 


PERSONAL COMPUTERS & COMMUNICATIONS 

Dear Sirs or Madams as the case may be: Dec. 17,1976 

With regard to Lee Felsenstein’s idea for 10-watt FM 
broadcast stations as one-way data buses: I don’t think this 
will work in this form. A 10-watt station has a reliable in 
each area is limited by the FCC. This is for non-commercial 
as well as commercial. One could get into a situation where 
the only available channel is in the commercial part of the 
band, and engineering and program requirements for that 
frequency are much stricter. 

I would give a serious look at two-way data communi¬ 
cations in the 1215-mHz amateur band, or in the business 
communication segments of the 470-890 mHz TV band, or 
one of the educational closed-circuit TV channels. There’s 
an outfit in the Bay Area that makes reasonably priced ham 
gear for this band. A good article appeared in the Decem¬ 
ber 1975 issue of QST. Similar equipment can be developed 
as add-on gear to 144 or 432 mHz ham gear or public- 
service surplus or even police-band scanner receivers. Any¬ 
one who can build a Data Handler and have it work with 
minimum de-bugging can get a Technician Class ham license 
with very little trouble. There is a nationwide push on not 
only to get more hams licensed but to expand usage of the 
amateur bands between 1215 and 10,500 mHz. Since the 
engineering restrictions are minimal the service area prob¬ 
lem is also minimal. You could pilot and debug the system 
on the ham bands and then (having found appropriate 
technical standards, move on to a co-op or non-profit 
installation on a commercial channel. One reason for stay¬ 
ing above 1215 mHz is there’s more space to paly with, 
and less chance of interfering with someone else on an 
adjacent channel with high-baud-rate transmissions. 

Sincerely, 

Mike Fern 1046 So. Westlake, Apt. 1 

Los Angeles, CA 90006 


PUSH & POP THE PSW IN P.T.’s ASSEMBLER 
Dear D.D.J., 

I was reading through Vol. I, No. 8 and noticed a com¬ 
plaint in the article by Jef Raskin concerning Processor 
Tack’s SYS8:. The missing instructions PUSH PSW and 
POP PSW caused me to go into a rage too. So I dug into 
the assembler and discovered that the codes for the double 
register operations like INX, DAD, etc. assemble the same 
way as the PUSH and POP instructions. The PSW register 
pair has the same code as M. Therefore PUSH M and 
POP M will assemble properly for PUSH PSW and POP 
PSW. 

Raymond F. Jurgens 1421 Curran St. 

La Canada, CA 91011 


COMMENTS ON LANGUAGES FOR MICROS 

Dear Sir: October 12, 1976 

I wish to comment on a few things mentioned in recent 
issues. First, the BASIC controversy: BASIC, in its extended 
versions is indeed a powerful language. However, for us 
micro types the extended ones are oft promised and 
seldom delivered. (ALTAIR is the exception but they have 
other problems.) Besides even the most powerful imple¬ 
mentations I have heard of still retain two of BASIC’s most 
insidious drawbacks: line numbers and NO LOCAL VARI¬ 
ABLES. Line numbers can be lived with, having all variables 
global is a great pain, as is its concomitant no subroutine 
parameters. The problem is even worse when, as in most 
cases, there are only 260 (or 26) variable names. 

On the other hand, it is easy to use, though I think ease 
of learning is overrated. Once you have learned to think 
in the appropriate manner, the whole FORTRAN-ALGOL- 
PL/whatever bunch of languages is very similar and easy 
to move between. 

My second comment is that the small memory assump¬ 
tion is becoming questionable. Admittedly, the processor 
and terminal still represent a big investment for almost 
all of us. Once you’ve got that though, the incremental 
cost of another couple K of memory is no longer that 
great: $25 for a board and control chips and $ 15/K byte 
for 2102’s is within reach of most of us. Six and eight 
K software is certainly reasonable, and sixteen should be 
reasonable soon. 

For similar reasons I don’t think much of the suggestions 
you occasionally publish for timeshared micros: share mass 
storage, and even power supplies if you’re hard up for cash 
but it’s not worth the money, or the performance penalty 
to timeshare machines this small and cheap. 

End of diatribe, 

Frank Richards 
414 Bradford Way 
Norristown, PA 19401 


1802 BASIC? 

Sirs: Feb. 22, 1977 

Do you have, or know of anyone that has, a BASIC system 
for the RCA 1802 microprocessor? I have a homemade job 
that could use BASIC. If you have such a system could you 
inform me of the costs and memory requirements. I would 
prefer to get a listing of the program. I don’t have a paper 
tape reader and my tape cassette system is non-standard. 
Sincerely, 

R. Alan Parker 9660D Barrel House Rd. 

Laurel. MD 20810 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 7 


138 



8080 DISASSEMBLER & TRACER . . . 

FOR $250 EACH 

8080 DISASSEMBLER 

Designed to run on an 8080 based machine, this program 
disassembles 8080 object code, producting a "source" listing in for¬ 
mat identical to that produced by an Intel Assembler, as well as 
an ASCII listing of the object code and a symbol cross reference 
listing. Also produced is source file on floppy disk or punched 
paper tape which may be input to an assembler with little or 
no editing. Up to 10 known data areas may be specified which will 
be treated as DB statements. 

8080 TRACE 

Designed as a teaching and trouble-shooting aid, this program 
resides in memory with the subject program, which is executed 
under trace control. The machine condition is displayed after 
each subject instruction is executed. Display includes instruc¬ 
tion address, instruction in machine code (hexidecimal), and 
mnemonic, contents of all registers, and latest stack entry. Dis¬ 
play may be reduced to only instructions causing branch opera¬ 
tions. Modes of operation (single step, branch, continuous, etc.) 
may be changed during execution by operator. 

Both the CYPERGRAFIX Disassembler and 8080 Trace programs 
are available on iCOM Floppy Disk or punched paper tape in 
Intel Hex-ASCII object format at the cost of $250 each, or 
$400 for both. Programs are specialized to run on user's equip¬ 
ment and updates resulting from continuous program improve¬ 
ments are automatically sent to purchasers of CYBERGRAFIX 
Software. 

For further information, contact Sheila Clarke at (213) 243-5179, 
or write CYBERGRAFIX, P.O. Box 430, Glendale, Calif., 91206. 


AN 8080 DISASSEMBLER WRITTEN IN 
MITS 3.2 BASIC 
by Jef Raskin 77-Jan-ll 

I was pleased to see this program, since it enables one to 


disassemble all kinds of obscure software. In particular, 
MITS BASIC itself. The author of this well-written program 
is rather a perfectionist, and wishes to remain anonymous. 

I think she or he is altogether too modest — it seems to be 
well organized and has been tested carefully. The program 
is designed for a CRT such as the Lear-Seigler ADM-3. You 
may have to modify the well-marked CRT terminal specific 
control characters (such as “clear screen” commands) to 
make it operate on your system. If you are stuck with a 
teletype, still more modification will be necessary, but the 
program is quite clear, and readily adapted. 

There are some especially interesting features incorpor¬ 
ated in this dissassembler. To use it you merely type an 
(absolute) hexadecimal address. Illegal addresses are not 
accepted, nor are those above the first 32K. If you type 
an illegal character, it is merely echoed and then erased, 
allowing you to put the correct character in its place. 

This feature should be incorporated in all interactive pro¬ 
grams. After the first address is typed, merely pressing 
the space bar will dissassemble successive lines. For con¬ 
tinuous listing replace line 230 with GO TO 500. At any 
time entry of an address will cause the disassembler to 
start disassembling at the new address. For conditional 
and unconditional branches and subroutine calling instruc¬ 
tions another option is available. Typing the letter “J” re¬ 
sults in the word “JUMP” appearing, and the disassembler 
will disassemble the instruction referred to in the branch 
or call rather than the instruction that immediately follows 
it in memory. 

I cannot supply this program in machine readable form 
for less than an exorbitant fee, since it is a nuisance to 
have to load it into the computer and then have to wait 
while a cassette is written. I do not have a paper tape 
punch. Even if I did, or had time to write lots of cassettes, 
they probably would be to a different standard or in a 
different format than yours. Tough darts. 


os 

w 

u 

cn 

E 

M 

W 

CO 

< 

co 

FH 

Q 


OO 

S 

OO 


Cb 

£ 

s 


* 

* 

* 

a* 



© cj 

r co 
w < 
CJ I 
co - 


© 

© 

CN 


x x 
H H 

0> Cx-i 


II 

V 


& 


8 8 


8 u 

S 

CJ © 
© 
CN 
ID 

FH 

t X CQ 

cu o 


£ 

u 

e 


8 



2 




= © 

a © 

vy 

§ 

e 

© 

8 

3 


© 

s 

s 

© 

< 

p 

Z 

X 





u 


x 

s 


kO 


X 


— 

x 

© 

•w' 

VD r 



X 

© 

Eh 

CJ 

H 

M 


CO 

a 


■K 

* 

* 

= 1 

H ! 

n 

XI 

'll 

</> 

Eh 

X 

§ 

II 

A 

</> 

V 

</> 

8h 

PS 

CN 

CN 

a 

< 

LT 

CQ 

1 II 

A 

1 </> 

'll 

A 

ify 

CN 

rH 

II 

Eh 

PS 

i-H 

CO 

* 

ID 

i—1 

Z 

H 

z 

FH 

Cb 

II 

© 

II 


s 

z ; 

FH ( 

5 

u 

•"> 


CJ 

o 

O. 

2 

i 

o 

X 

» U 

i 

CJ 

CJ 

a. 

2 

£ 

PS 

Oj 

os 

cx 

OS 

Qj 

Ci_i 

a 

X 

X 

§ 

□S < 
a* i 

3 

Cn 

FH 

Cl. 

FH 

s 

X 

w 

r -b 

FH 

X 

FH 

8 

A 

g 

i Cb 

1 FH 

Cb 

FH 

Cb 

FH 

Cb 

FH 

8 

A 

in 

s 

© 

lf~? 

© 

■52 

© 

© I 

s 

© 

in 

© 

© 

in 

S' 

S' 

S' 

s 

© 

S 

© 

© 

© 

© 

© 

rH 

CN 


in 

*23 

c» 

«— 1 CN 

ro 

CO 


in 

in 

ID 


s 

rH 

1 CN 

CO 


in 

id 

© 

r—I 

rH 

r —1 

1—I 

rH 

i—1 

CN 

CN CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CO 

CO CO 

CO 

CO 

CO 

CO 



os 

(H 

CO 

z 


& 

o 

PS 



< 

+ c 

5 H 

V-/ 


U 

rH C 


3 

as 

a 

& 

& s 


s 


8 

FH 

B 


co 

2 



March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 


139 



r—f 

s 

CS> 

X 

r—1 

o 

S' 

S' 

S> 


S' 

o 

p 


s 

s 


o 

s> 

S> 

s 

S3 H 

s 

S> 

s 

r—1 

s 


vd 

VD 

S' X 


VO 

vo 


'O 

<s 



S> X 

S 



S3 



CO 

X 

VO 


CQ 

CQ 


CQ 

s 

X 

X 


r—i 


ZD 

2 % 

3 


X 

(/> 



z 

S3 

S 

ISy 

z 


S) 

CO 

^5* 

sc 

X 

X 


CQ 

X 


Qj 

X 



CM 

V 

CQ 

- 


— 

5 

p 


2 

■~Y, 

p 



O 

2 


II 

II 

II 

CQ 


S 

II 

II 

s 

2 

s 

n 


2 

CO¬ 

CO¬ 

» 

Q 

X 

9 

CO 

CO¬ 

X 

CQ 

CQ 


X 

X 

LO 

CO 

O 

05 

2 

CQ 

CO 

05 

2 

2 

CQ 

t—1 

x 

KTj 

s 

s> 

S' 

s 

S' 

s> 

o 

S 

o> 

S3 

«S 

s 

s> 

*3’ 

in 

m 


00 

S3 

'—1 

CM 

CO 

0 s 

S3 

rH 

CM 

CO 

CM 

CM 

CM 

CM 

CM 

co 

co 

CO 

CO 

CO 

*3* 




CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 


3 p 2s 

CO P 2 2 m 

8 I S 3 i 



co¬ 

CO¬ 

s> 

co 

CO 


—T 

2 

►H 

X 

X SJ 

CQ 

DC 

32 CD 


IH 

Eh o 

a 


vO 

§ 

o 

rH 

il 

II CQ 

2 

2 

2 p 

II 

X 

X Q 

2 

M 

M 0 


o 

<S 

S 

CV 

s? 

S’ 

s 

S' 

o 

S> 

s 

*^r 

in 

vo 

cr, 

s 

r—1 

CM 

CO 

rr 

in 

CD 





in 

in 

in 

in 

in 

m 

in 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 


05 

05 


2 

U 


1—i 

CD 


S> 

rH 


S' 

SJ 

M 

r—i 

rH 

"ll 

CO¬ 

CO 

2 

2 

2 

2 


S 

2 

§ 

x 

S3 

s> 

&H 

S< 

SJ 

*^r 

ll 

X 

2 

2 


CQ 

CQ 

Cu 

2 

05 

M 

S' 

CM 

S' 

s 

S 

r—1 

CD 

VD 

VD 

CM 

CM 

CM 



X 

CQ 

X 

a 

rj 

CQ 

X 

S' 

M 

X 


s 

X 

2 

y 

r—H 

8 

§ 

| 

s 

w 

H 


s 

Q 


IQ 

in 

0 

CQ 

X 

■^r 


CO 

P 

in 

in 

X 



vD 

X 

Eh 



Q 

2 

5 


co¬ 

CM 

Q 


co 

CO 

<1 

s 

X 

II 


o 


V 


CM 

H 

U 

Eh 


2 

X 

2 

O 

2 

X 

hH 

X 


X 

M 

X 

0 

s 

S- 

s> 

S' 

•“H 

CM 

CO 


m 

in 

in 

in 

Page 26 




_ u z 

2 M 

w II « 

a x x 


p 

2 

X 

Eh 

2 

CQ 

o 

Z 


w 

H 


X 

Eh 

9 


<C 

x r- 

m 

H 

M | 

1 

CQ 

X VD 

co 

= 

X CQ 

CO 

2 

X Eh 

X 

O 

Eh m 

M 



X 

X 

8 s 

2 

X 

Eh 

S « 

a 


Ei •• 



s 

s 

S3 

S3 

in 

ry 

s 

S 

S 

S> 

C5 

S 

m 

s> 

CM 


S 

• — i 

CM 

CO 



in 

S3 

pH 

CM 

CO 


uo 

in 

VD 

VD 

VD 

r- 

s> 

S 

S3 

S3 

s. 

s 

S> 

Si 

S' 

Si 

S3 

s> 

S3 

S’ 

S> 


s 

r-H 

r—1 

r—1 

rH 

rH 

f-H 

(MU 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 


S) HH 

X 

s 2 ^ 

S S i 


S 

S 

S 

SJ 

Ov 

S 

S 

o0 


in 

‘D 

(Tv 

S' 

i —1 

>—1 


f—\ 

i-H 

i-i 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


140 




rH 

</> 

z 


rH 

s 

rH 

- 


rH 

£m 



p 


U 

y 

V 

e 

s 

r 

’ll 

2 

’ll 

'-jj 

co¬ 

3 

9 

CjJ 

CO¬ 

w 

CO¬ 

a 

co 

IX 

* 

a 

CO 

ex 

CO 

© 

© 

© 

C\ 

IS 

© 

© 

© 

vo 


CG 

O 

© 

rH 

CM 

m 

m 

in 

in 

un 

vo 

vo 

VD 

VO 

ro 

ro 

on 

ro 

ro 

m 

m 

m 



CX 

»"3 

r —1 

© 

2 

»H 

© 

© 

8 


VD 

• • 

© 


© 


CQ 

in 

"2L 


CO 


& 

on 

2 

O 

O 

P 

S 



| i s v 

Cl, y aj </> 


© 

© 

© 

© 

2 

© 

© 

© 

© 


»H 

•VT 

rH 

CM 

rH 

VO 

in w 

3 2 

VO 

in 

tC 

5 '— 1 

CQ 

CQ X Q 

l CQ 

cc c 

2 

2 

3 fe* P 

3 3 

a c 

D 


cq ^ a 

Q Cl, uJ 

a ^ a 


© 

<!? 

© 

© 

is 

© 


in 

S' 

ss 

IS 

© 

IS 

<s 

© 

CS 

© 

IS 

m 

cs 

© 

•H 

CM 

ro 


in 

VO 

VO 

r- 

© 

rH 

CM 

© 

rH 

CM 

CO 


in 

in 

vo 

00 

CO 

CC' 

cc 

00 

cc 

oc 

00 

00 

o 

O 

O 

© 

IS 

cs 

© 

IS 

cs 


© 

cn 

CO 

ro 

m 

ro 

CO 

co 

CO 

ro 

CO 

CO 

CO 

'SJ' 






*vr 




© 




© 

© 


rH 

© 

© 

© 



© 

© 

VD 

© 

rH 

© 

VO 


© 


VO 


CQ 

© 

rH 


CQ 

3 

VO 


CQ 

ID 


CQ 

2 

S 

Q 


3 

2 

a 


g © to- g cs 

S £ s 9 S ss 

s 1 a a § § 


VD 

© 

VO 

rH 

© 


© 



© 



© 


VD 


CQ 

© 

CQ 

rH 

VO 



ZD 

VO 

ZD 



CQ 


CO 


C£ 

© 

03 

2 



o 

CQ 

O 






o 

ZD 

o 

rH 

55 

2 

O 


• • 

CQ 



o 

o 


(J 



Q 


rH 


© 

2 

o 






© 


• • 


rH 

z 

© 

2 

i—i 

CO- 

- 



6* 



VO 


g Sr J 

2 X 

£( 2 'll 


II ? E S 

CO- CJ u u 

cn 2 2 a, 


o s 
s CD 
E O D 

z ca $ 

o e> 


2 0 § 

E ii 9 e 

W u> (ft q 

2 co w 2 


© 

O' 

© 

© 

© 

© 

© 

© 

o 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

O' 

© 

© 

© 

© 

© 

O 

© 

© 

© 

© 

© 

© 

in 


© 

rH 

CM 

ro 


in 

O' 

© 

rH 

CM 

© 

rH 

CM 

ro 

H’ 

in 

vo 

in 

vo 

O' 

© 

•—i 

CM 

ro 


O' 

© 

H 

CM 

ro 


in 

vo 

VO 

r** 





n* 

r^* 

00 

00 

00 

© 

© 

© 

© 

© 

© 

© 

rH 

rH 

rH 

CM 

CM 

CM 

CM 

CM 


in 

in 

in 

in 

in 

in 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CO 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

CO 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 

ro 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 27 


141 



C/) D CQ 

< in o 

CN CjQ 

x ^ 8 

S b x 

M 2 •* 

<X M VO 

o< ll in 


a < 


i 

2 

X 

l 

Eh 

H 


2 

2 

Eh 

M 

CJ 

V 


2 

2 

2 

a 

cj 

ji 

II 

II 

_i_j 

Cu 

ud 

< 

Cl. 

if) 

s 

CJ 

Id 

S 3 

X 

X 

H 

X 

X 

a 

X 

X 

2 

HCd 

fA 

u 

a 

X 

2 

X 

© 

© 

© 

© 

53 

o> 

© 

© 

© 

m !2 

© 

O' 

s 

© 

© 

co 

in 

ID 


cc 

c> 

© 

rH 

CN 

cnO 

CO 

O' 

53 

»—H 

CN 


■^r 

•^r 



n- 

m 

in 

in 

in 

in 

in 

ID 

ID 

ID 

m 

in 

in 

in 

in 

in 

in 

m 

m 

mX 

in 

in 

in 

in 

in 


y [i. ^ 
x *-h x 


© 

© 

© 


© 

IS 

© 

© 

S' 

© 

o> 

© 

© 

© 

© 

rH 

CN 

CO 

cr 

rH 

CN 

© 

*H 

CN 

O' 

© 

r-H 

CN 

53 

© 

© 

IS 

rH 

rH 

rH 

CN 

CN 

CN 

O' 

O 

© 

© 

<D 

V;* 

ID 

ID 

VO 

VO 

D 

ID 

VO 

D 

CC 

O' 

O'. 

ON 


© D-< 

CQ © 

P >D Z 





O 






g5 

< 

© 






in 




Eh 


'cr 




2 

< 

in 



p 

Z 

X 

X 

X 

X 




2D 

Ji 

4 


Ld 

X 


8 

X 

X 

• • 

Eh 

hH 

o 



X 


X 

• • 

© 

© 

X 

X 

cu 

o 

© 

© 

* 

P 


© 

© 

© 

ID 

JH 

Q 

CO 

in 

in 

in 

JJ 

2 

in 



CN 

CLi 




cH Z II 

CxJ W V> 

x a co 


2 S 2 

uD CJ CJ 

» a 2 


© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 


© 

© 

© 

© 

cn 

© 

© 

o> 

© 

© 

© 

C\ 

© 

© 

© 

© 

© 

© 

a> 

© 

© 

© 

© 

rH 

CN 

CO 

rj- 

in 

a 

rH 

CN 

co 


o> 

© 

rH 

CN 

CO 

O' 

© 

rH 


© 

rH 

CN 

ON 

© 

rH 

CN 

co 


in 

O' 

© 

rH 

CN 

rH 

r-H 

rH 

rH 

rH 

rH 

CN 

CN 

CN 

CN 

CN 


© 

© 

© 

© 

© 

rH 

rH 

rH 

CN 

CN 

CN 

CN 

CO 

CO 

CO 

CO 

co 

CO 

co 

■^r 

N’ 

N" 





TT 

■*r 

T 


■*r 

•*r 


■^r 

m 

in 

in 

in 

in 

in 

in 

in 

in 

in 

m 

in 

in 

in 

in 

in 

m 

in 

m 

in 

m 

m 


Page 28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


March, 1977 


142 



1 

a 

CJ 

s 

CO 

a 

o 

s 

ca 

H 

2 

□ 

u 

REM 


a X 2 
u u u 


O < oj 
a Q X 


o © © 


CJN O Ch 


s 

£ 

'iC 

a 

IS 

£ 

s 

s 

X 

IS 

a 


X 

o 

< 

a 

a 

X 

O 

s 

a 


a 

a 

a 

a 

(X 

Q 

a 

a 

© 

© 

© 

© 



© 

55? 

© 

© 


CO 

<n 

©• 

r*H 

CM 

co 


m 

vo 

■^r 


•sr 

in 

in 

in 

in 

m 

in 

in 

cn 

cn 

<n 

ON 

cn 

<n 

ON 

ON 

cn 

cn 


2 S 
g a V? 


X 




Jl 


VO 


.. 

© 

CM 

X 

O 

< 



a 


1—1 


00 

CM 

rH 

| 

y 

s 

s 

jr 

a 

A 

£ 

a 

A 

A 

A 

a 

Q 

X 

X 

X 

2 

X 

X 

a 

u 

a 

© 

© 

© 

•S' 

© 

© 

•s 

© 

IS 

© 

IS 

© 

rH 

© 

i—H 

CM 

CO 


in 

VO 


cc 

vO 

VO 

00 

00 

CO 

00 

00 

X 

00 

cc 

00 

<n 

<n 

O' 

O' 

<n 

cn 

CT 

cn 

O' 

<n 

<n 



L 


CM 





a 





M 





z 



CJ 


a 



q 


a 




X 

HH 

*» 







cn 





< 





HH 





HH 





c 




a 


— 


a 





HH 





a 










X 



X 


CJ 





in 

VO 


o 


HH 



O 










u 



X 


a 



X 






a 

2 



a 


H 



a 

X 


£h 

X 



X 

a 


H 



HH 

H 


X 

P 


a 


X 

o 




a 


5 

2 

in 


X 


2 



Eh 


a 

2 



Ph 

a 


2 





5 * 

a 

< 

X 


a 


2 

X 

X 


§ 


a 


HH 

X 

,_ K 





2 



HH 


•« 



HH 


2 



X 


2 

X 


2 


2 

X 


X 


2 


O 

HH 



Q 


• • 

cc 


a 


„_ 





k« 



X 





O 


•• 





• • 


a 


- 


a 


,._. 

CM 


i 


HH 



a 


^> 



X 



< 


HH 



HH 


X 



2 

X 

CO 





t-H 

r—1 


cc 


wp 



X 


HH 



X 


X 



X 


HH 

2 


p 


X 

■*• 

X 

x 










yj. 








c 



•5! 


O 


•w' 

2 


a 



X 

a 


~ *. 


a 


X 



a 





a 


ifr 





ifr 

■. 


P 


CO- 





YK 


2 

X 

— 


a 


a 

vo 


X 


UJ 

< 


X 


X 



X 


HH 

a 




VO 

X 


a 


O 

a 

X 


co 


X 


a 



X 


X 



EH 


X 



p 


< 

a 


X 


U 

a 


a 


U 

X 


Q 



a 



CM 





2 










a 


a 



a 


Q 




a 

2 

*. 




Q 

CO 


a 


Q 

•k 


a 


Q 



< 


Cj 



2 


fO 

» 


O 


9 

O 

o 

a 

s 


a 


2 

*k 


o 


<r 

a 


O 


< 



a 



a 


X 


2 

HH 


CJ 


2 

X 


X 

CM 


o 


a 

VO 




a 





a 



a 


a 

a 




Cxj 

a 




a 


a 






X 

rH 


a 


X 

a 


a 


X 



s 


X 

a 


a 



a 


z 


X 

u 

a 

in 

w 


>H 



«. 


a 


-• 



a 


■» 

X 


p 


.« 



tH 


«• 

w 


Q 


•» 


X 

x 

2 


S 



00 


^T* 

*—* 



a 


2* 


CO 

a 


o 





< 


r** 

X 


HH 



u 

X 


r—l 


X 



k. 


2 



k> 







CJ 



rj 


X 



CJ 


X 



2 

a 

O 



X 

._. 

Q 



2 


P 

Q 


2 


p 

X 


< 


P 

<? 


Q 


Q 

< 


X 


Q 


a 

X 



< 

r- 

irH 

*k 



'-r 

H 

*«■ 



CO 

H 





EH 



a 


X 



Q 


X 

(SI 



s 



* 


CM 


a 

CO 


U 


a 



Q 


a 



Q 





X 


2 



** 

a 

© 

3 


2 

a 

© 

k. 


;r 

Q 

© 



ac 

co- 

© 



X 

cn- 

© 

Q 



co¬ 

© 

9 


o 

Yk 

© 

© 

a 

II 

2 


2 

hh 

II 

pH 


Eh 

a 

II 

CO 


P 

X 

II 

a 


CH 

X 

II 

2 


HH 

ve 

n 

2 


CJ 

u 

n 

2 

X 

H-1 




a 

X 




X 

HH 




X 

HH 




< 

HH 




U 

HH 




CJ 

X 




< 





< 





< 





< 





< 





< 





< 


X 

X 

2 

2 

s: 

X 

Eh 

2 

2 

2 

X 

Eh 


2 

2 

X 

Eh 

2 

2 


X 

X 

2 

2 

V 

X 

X 

2 

2 

v 

X 

X 

2 2 

O 

< 

a 

a 

X 

o 

< 

a 

a 

HH 

o 

< 

a 

a 

HH 

O 

< 

a 

a 

X 

O 

< 

a 

,J 9 

HH 

o 

< 

a 

a 

X 

p 


a a 

a 

a 

X 

X 

Q 

a 

a 

X 

X 

Q 

a 

Q 

X 

2 

Q 

a 

O 

X 

X 

Q 

a 

Q 

X 

X 

Q 

a 

D 

X 

X 

Q 

a 

Q 

X X 

c_- 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

© 

c 

© 

© 

© 

© 

© 

© 

© 

© 

©• 


© 

© 

© 

© © 


m 

VO 

r- 

CO 

cn 

© 

»—i 

CM 

co 

•*r 

in 

vo 

r~ 

CO 

cn 

© 

rH 

CM 

CO 

M" 

a 

vo 

r- 

CO 

O' 

© 

rH 

CM 

CO 


in 

vo r- 

o 

© 

© 

© 

© 

© 

rH 

rH 

rH 

rH 

rH 

rH 

r —1 

rH 

rH 

rH 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CO 

CO 

CO 

CO 

CO 

CO 

CO CO 

O' 

cn 

O' 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

<n 

cn 

<n 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

cn 

<n 

<n 

cn 

cn 

cn 

cn 

cn cn 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


143 




M6800 DISASSEMBLER 


Gentlemen: January 20, 1977 

Enclosed is a listing which I feel is worth publishing. It is a 
disassembler for M6800 machine code. It was written primar¬ 
ily to help document programs that were originally done in 
machine code. 

The first page is a listing generator which calls the disassemb¬ 
ler as a subroutine. 

The disassembler subroutine itself stores enough information 
on exit that a cross-reference could be performed, if desired. 
Note that any invalid op code is treated as a one-byte instruc¬ 
tion. This subroutine also serves well as the first half of a 
mnemonic-oriented memory-examine-and-change monitor. 

The references to EXBUG are easily adapted to other mon¬ 
itors. 

Yours truly, 

Gordon Stallings, Research Development & Engineering 
Division, Applied Automation, Inc., Bartlesville, OK 74004 


NEW ELECTRONIC ADAPTER MAKES A 
SYNTHESIZER POLYPHONIC 

A new polyphonic synthesizer adapter has been introduced 
by Electronic Music Laboratories, Inc. of Vernon, Connecticut. 

The EML POLY-BOX is a versatile one octave keyboard which 
which gives a monophonic synthesizer a unique polyphonic 
capability. Digital memory allows the programming of any 
: chord or pitch combination into the POLY-BOX which can 
| then be played through a symthesizer. Pitches follow the syn¬ 
thesizer oscillator through portamento, vibrato and keyboard 
transpositions and can be produced from one octave above to 
three octaves below the synthesizer oscillator. Manual tuning, 
variable phasing and a low pass filter help make it possible to 
play bass lines or harmony on the POLY-BOX keyboard while 
playing melody on the synthesizer. 

The POLY-BOX is a durable, lightweight instrument using 
digital and analog technology. It weighs 15 pounds and is 19” 
wide by 12” deep by 5” tall. Output is adjustable from 0 to 5 
volts nominal and the frequency range is 5.5Hz to 8324Hz. 

There are up to 26 pitches at semitone intervals simultaneously 
available. 

The EML POLY-BOX can be added directly to any patchable 
synthesizer or to smaller instruments with minor modifications 
and is available directly from the factory and from selected 
dealers. The POLY-BOX sells for $475. For literature write to 
EML POLY-BOX, P.O. Box H, Vernon, Connecticut 06066. 

For more information contact: 

Electronic Music Labs, Inc., P’O’ Box H, Vernon, CT 06066 
(203) 875-0751 


: Ct x x 

O UJ III 
> ul X 1 


. LjJ txJ 'U 

; r- r. 
I o o o 


! I - 

'88 


I o xO 

, t 


u 0) 

a <r 

( 

<r a ; 
a: <£ ' 

pi x; 

o u : 

<li X 


iii t nj o x u 

x .1 iii ~ Co o 

_j / /. ix x it 

T '.1 U X 

r x x i- c. x 


ci: 


li. u. t- o u. 

\ \ - <E 

_! -J 0 1,1 

> -i ' ' <3. '.I i . j 

i o □. or i- o 

• l \ \ <t x (J 


■T. X X U 
T iii r 
©ox 

'c; tj i 


i i 5 § 


f- D t t 

161P 5 

ct -i x ix ix j -j v x 

U.OHJ.O.UOOH 


D h- 

_a. b 

!■— t— I— Cl 


¥ - 
P 9 

Q X 

Z ft 

xa 

ui o 


i-g 

X (- 


h- X 

lb 

u x 

Ct > 

<r 

t.j x 

if ■- 


§8 


t.17 Q 
<E U 
U X 


3 

lL 

m o 


Ct LJ 


<L LiJ 

a i.o 
o U 

p 

Lx. X 
0. Lxi 

LO ^3 


fa f s 


3 - 


tj r. ui 'i u k an/i co ci uj h t n <t t t h l «r co in x o 

u o '• « w o h h w h h o] tu nj nj vt -o p- ij *-< nj x © o 

Cl cn r -I ix lx 

lx. 1. L li. lx lx lx Lx. lx li. lx. Ll L li. L L L L Ll li lx U. lx U. 

W «.n t*. li U* 0* «l li pi H U MO » jj| w ID Ui -H (X UI I ft 


' -I n 3 D 3 j n D -I -J D : 

-• O O O >0 O O V 

ILilLJLjJUlxJlxJUlxilxJlxllxJlxJl 


fd 01 T liJ ID N M O «h (U fl V L‘ sO N CO Cl 


'C 9 v (l in i 

S ui 5 x x ft i ^ i i j : 

X ■!' (..■ lij UI C. ■. ) O t >- * 

x id ui r i ci v ^ 3 -_j : 


iCZHZ 

J h h r.n x-i 

ct <r ct i- a. 


fv j <r ; 

O O t- I 
© i.fl X \ 


> Ci- X Ui X L. . 


% ft ?: s a 1 

- : -j _j ■ 


> ct < x ex x c <r 
X- .n X. .- .- ,r. X: C x 
t j u t a j j j 


t Qj - ... J 

H U i> x -.0 

li' ct -l *j -r i <r x 

...- .cieij-xnoa 

O O h J -.T Q Ci O D ui z u r. 
a.a.inoi-<i<EOoxHuiuj: 


^ LJ 




Ll U 

<fl CO 
lL UL 


: ct <z 

> O Ik. 




S rl QJ n t to I s - w 5? 5* *-< AJ ro m- m ;jd p- m Oj © ■ 
waifuruftjfufuiuiuiurjrifn to ch to to co m v ■ 


® ru r8 __ 

njiriMwxoo 


3 d d g x <t <r 

O O O Q Ct Q 
IxJ uJ Ll IxJ _1 _) _I 

o a _j 

t x E 

UiuEIE 

> Ci u i i7) :7i 

m ui i-. l n 

DILI x O O Cl 

i h nj k t ui to n 

. t-. p. tv r- ft 


L 




'S' O L 

Ui Ci O 
ill <1j UJ 


vV rn u; ^ o ii. io uu: j id •-* t n <r t h I, v a it -T o © .x m n. ., :x ‘o 
© <v ® o © .i -1 .h nj m ru m <r in r- ci -h ru -r © S <5 • o 

© © © © © © O © © © © O © c; © Ud rjt U> -7». <E <E L Ix Ll O U U L. C ... v L 

^.LLU. LLL. LLxlxLxL.lxLxLxLLlxLlxLLlxLx O u h h . i . i „ 



O O 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


144 



® r o o e. t 
oci > o co ru z 
^ E9 D. w or 1L 
# I O # O L 


> *. n. ti_ f— 

i u a: Z - 

1 o. iu CL • 

<•* U. > a. > 


<X lD Q Q O ^ 
a III <L C Q O 

♦♦ u Cu U C U 


fe & & 

il u_ o f- ® h- 

<r a. il ra z: n z 

-* - Cu v, if; O' & 2 

4***<E4+**Q-**CL 


CD OJ K O « Z T K 5 H II a H. I'lJ 
K h- o ui o: z f- o j) a cl 51 cl ?_ 
IDI-ChEDhitl-EI-CSLJE 
i-Oifl«incLOU)Hinuu)i»>iL 


<t (T >T K Q C <7 K U bj O -I 
OHQ JZI.ICiO Z. Z Z Ci 
JUll-OCiJJliJ<UlHj 


<i m c. c u ri !•! >: t <t ■t ? 

Ci Z Z UI Z r. /. / j 1- % 

jcosnono _j -ji w 


:cLOCLacQQO<r 
. /i 'JLPbJdZul- 
I’lwnui-flicin 


?n,hg,uax«jExxxaxocc h-ujx«ix<r<ri-(-Qcx>:a.<ttt:xxKxaxi-t-H 
u/.ji.v.jCjQiOQzzinhzj cn o u n: a p h tn cun i- q juk ui I- q ul a S q ut c 1 ai 

JufflUWUJJCQOJHHTLOHO HPJJWJJu'/hKntflJTW-lU'jJTJTJhUlh 


t uuo n co ct. o *-< ru "i m- ui lo r- co cn o »-« .‘u ri a n rj cr. o h oj n t in to n oo m ® ^ nj n 'ti/uo cm 
uj ld ui ui ui a uj co «Xi c n r- u; co oi oo co co co co co cc u> cn cn c* o> <t> cr. cr> 65 o> < 


O > CL > Z 

Era to Eq c 

£ § £ £ £ 

X K t- 0. t- 0. 

lajniri/UDMXioio^rufn’ruucNcooiG.-'ajm'rinuiNwa. 

I O Q G- C' •-< .-I OJ nj 1J Oj ICJ OJ oj nj nj ru 

i ru ru cu ru ru ru cu nj ru ru ru ru ru ru ru ru ru rj oj ru oj cu ru cu cu oj ru oj 


co nj s o' ru o o • 

10 • i a .H rg Ci • 

r.j r- Mi t [v l. iji •; . 

coa-tJicocuwMtu. 

0 K uJ II O fU V N O' i 

Q Q o Q ci j cu u uj i 

O&SS&OGi&C;' 


. O O O 00 

. f'J n n H 

I', -I Q rl o i 

.■ co cu co ru i 


r o n ui r- o oo 

i '7i ru a oj a a 

j iu o ru ® nj ru iii 

' Il -I II -j -» <V 


O -r X 
o u t F 

O' U fj (- 
o o 5 :ci 
u. o o 
ui 

X J L Q 

cn a o uj 
<c <1 O N 

Z H _J 3 


as- §a 5 

D'OQT'CU. O U CL <X O Q <S> ' > 

'j'l Q Q X O C X O H O X i O 1 7 Q (n 

j. q <r u. c- u -n 3i- .(i l <r » ui <r 

D<r«ix>®ooLnooox:*zuj 


L Q <r II. i- U 'll Df- >L L <r til 
o<xwxx>®ooui©oox:* 


r a cn hq 

Q C— L 0 5 h ® 

Ll CD UI O O U O ^ OJ Q 

tcf-A:'i<xooof*<r 
?M! tt W B *t Q E tt W 


Q <E IT d 
UJ ' *> L.J 


CfJ d C- CC Q . LC O Ci 

Ll Q <S UOh<T^cu i U i 1 ’) M Cl. Z Pi t 

w n c 3 o o ' « ~i to & —> - z il w -i 

« « cq i *♦ a x ** *♦ x <i«x«zm«x 


:<ni:xxx€Hiijja 

it-cnh-QC-QEZOZ 
i un in j in j ffl o ffl t 


oxcrurociocot-o 

Z Q D UI liJ CmJ) Id h yj 

<c_jj-)mvinwww 


KI-C5QI-OQOliJ(IlhO<E3(C 

jHuizMUJZidUQrjZhOQ; 

oaoi'-rcQW'-HQMjL-.iai-tuija 


>uioaauiaoacLf- 


:C.OIL<rQUJl-Ld 

> 7 ui o a t. z >-i z 
j<r«ue-<rwMm 


i W 01 t W 'Ji M» (7) i 


r-. 0J 01 'T 1/1 (Ll N W CTi O --I 0J 00 T L0 CD M CO C 1 ! O *H ru 01 'T UI CO I s - CO (7 j O OJ CD 

cu iu ru ru rj iti ru cu cu oi oi oi oi oi oi ci oi cu i • r t v -r t d -j ^ %r v cn ui u« ui 


in Q o q co oo 

UJ O O ru l.: ,u 
--I ru ru r oj 'ii 


00 rn CQ <T. O 01 Cl 

iu ro nta mm cs 

u nj o oj ® cu cu % ‘1> oi -■« 

—• U 1 • : Il »-i '1»' '•r OJ '4 -v *-i 

x U' r- n U. M Ll C£i CO vi > j oi 

[" U. -1 CU iiLdUU 0J C-J ■ J C'- 


u m n h co ^ <r -h o •-< ru a i^- nj cu co ca -• r^- co u. o oi ru d 

O ® OJ Q Cl ri G •; V O H 0J Q O' 'I L 1 .' I.M cr.' CO Ul II II O O UI 

J r; o-a c a q u. lo • o n h ui cd r- c <-* m l~> uo co t n co nt co lo co 

co co ru iu S' co lu cu o w ru ui ll co cu o u. cu co iu oi —i w co ru o co ru o cu 


. n w <r o uj 15 ^ co ld r> 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 31 


145 






O O f- Q, CL CD Q, < 

^ s ^ ^ d s S i 


WgSgCSf 

n <r <r 'r ru -« ( 

to w w >** w <» > 




ItA^WtA^WWWi 


i » t/t a * m <* Vi «* 


co lowcncMflcOH^ 

Ui © G <1 LD U 1 Oi l\J Q Q 
-< n 7 ol U1 U1 -i oi 'J- T 

««£ 2 &$ 3 S 3 $ 


ru h i/i q ^r o u ill iu ^ q 
mmwo^cQ'rrnoon 
01 a> S 01 n h to cr< o <'.■ at 

» »* 


n 'tt cocoincjDCO'-^Tin-tr^CTiO'n. 

U III U d Q T CJ Ul eg ' I T IQ CO CO CU SO 

t n o o m h m t n r;i q a co co w Q 

to oi S o a> cu <r ui -* o* o> <s> — to o> 


CO CQ CO CD 
Q a Q Q 
U U U U 


CQQQCOCQCQCQCOffiCQCQCQCOCQCQCOCQCQCOCQaiCQCOCOCOCQiIirOCQCOCQmCQCQCQCC 
QClGaQQQQQQQQQQaQQOOijQQQQOCiriOQppCii3QMi 
GGGGGGGGGGGUGGGGGLlGGGGGUGGU GGGUUGUUl 


ma.COCOCQiXlCQCQCOCOCaraCOCOCQ.XlCOCOCQCDCjCCOj 

e QQQdQpQOQOOQDQOuQOOQQG 
GGGUGU.GGGGGGGGGUGGGGGG 


OhOJPI 
888 8 


^■| 1 rKONWOio-'(\jn’ri;iixiMwCD&-<ojn^i/)iONCpgi®^nj( T iTmiONM2iGHtur r )'ri/uDNMOi®wm(nTUniiMMOiOHry 

s o o o § o h - h h ^ h h ru a; nj ni ry ru nj i\i l\j ai ' n ri n pi m pi n pi oi t <r ^ t t t <r t 'i -r i/i ui u] uuri in uno iri lp in m d 
n n n (i n n n n n t'i ,T i cn n n n co n n i') n n pi hoi n h i"i pi n n n n n n rn f 1 ) oi n n cn n n n n n r 1 ) ci n n n ri n n ri ri n n 


o g nj s © y o id ( j) nj ra co rg ro nj tu oj ci! co cino <r nj co co w nj a at co <r g ifi o w <r ^ «j oi nj ru u <r *r v -f co o.i 15 y) w h t ip n 17. cn n 

IJ <0 -_v OJ N .11 tO G> *T •< J. o.: CO *3 '•) 1 CO CO •’ 'll O hi W 0.' M C - U> O >11 UJ © U <t IP w Q CO U Cl CU ^ IP C. V Jj UJ Ul Ul G G T M UJ G Oj T >L\ CJ •" G O © 

rH ^ -4 i\j m p» c i ^ n w i f ' <v -i to .h a* g cq d> cu i\ co co <: ^ co v uj cy © q o -f ip ir> t r> n «■* ” •■r u in m ui v t m m co ui -• g •; o. . * o ro -• cu -r co a q £ .0 w u -• u 

HrtHHHnjIiiainjooooNifftWHartfeHciioiH^'xfiioh^HHHrtriHHHHH-t^Hoivw u.ai c m w oi 01 m oi n •*4 o> o © 01 w y 4 w h 01 .< a o h to o 

h nj n v ltuo h co o <r m o a w © oj t id co -i o ui "i t 10 eti <r o w s m v ip ro o ui o w ▼ co co : o ui <5 ru v to co <r o 10 © cu 'r co 00 <r o i.».s ofuycooocoitiooj'Tioooc 

ru cu ru >u cu ,0 0.1 oj oj oj ij j a, ij ru a* -u cu ru ru rj co ■ m >cj iu i<j ru ai tu .u .0 i\j cu u .u 01 nj iu cu ru cu cu 1 cu ru cu ru ru cu ru fu cu aj oj »u ru cu ru cu »u .u cu ru cj iii ru ru cu cu cu ru ru cu cu ai 


£0 x t 

I I 1 


£ X X X 

: Q. o «-* o' 


Dj I I J ^ Z ^ 


* * t- to ce 

■ O LU D o a, CU o 
|_J Z Oly XhZLH 

. -J H li • -ul E w IP 

i<r # oo^<e«»*<i 


Oj X X X X 
ift *r .... 
*4 « © ^ cu n 


t- u 
Ui Li 

01 U. y x x .: x 

U. G--' 


<i<i £0 <r w d c <t co<r <r m<rco<r<xcoffc:c£icci^£Q co cca-iri 

S^st52£»8i6iSS|28il! fey£d2£S!*!& 12 2rf8^2?22oidd«JE2£!j;522ggS?2g?dSSP 5£2S:if22P 

fflQJiflOHBmhffljTQ: oEq»-.qcohu: _i<r-j_i!ji/)_j_j<rai 2 min*-«o£OQ._i_iir)yiu)U 5 <r! 7 »c/>a._ji--£ o y. j c c o i J a 


J ru rj ru cu ru ru ru 


cr. ® - ru co t ui ui msi 
ru TT'r , T'r-3-T'r , r 
lururufurucucuaicuru 


to * o z u. 

9as>B{aSt{?fSDig!glSsajaai2'i![pSSgSHfOSpSfigR:g^^ 

cu cu cu ai cu cu ru ru ru cu cu ai ru ru ru cu cu cu cu ru cu cu ru ru cu cu ru cj ru cu ru -j ru ru 


•*'■■ t /i o c - ro a 
c:« :o m •;:• •%; co 
• U cu cu • u lu i j ru > 


3 t co n a- 

h h u <r ru 

o n o -« © ai <r <r ru in cu © 

p o p o s* u. u -h o -• u. 

auuiMiMOQwQoucin 
lU CU <E <Z U3 © CU CO £0 C^ CU G CO H 


© © U —' 

«-i u. <r co <r g . j >2 
<c cu v © ui ru ft 


S co ui -i t ip c? o Qii.Hnjn'nfloi 

CO W 01 OI K Oi O) (J)Oi<Z<Z<L<L€<L 


ui o ai o o to 

i h o ^ nj Mj ft] cu n, 5 oj u o •r o ru ai *r io ru 

• . —i o © -< u. u. Q -I iu ru © o o © © 

i co uj ip io r- ui -j ‘Xi j. tfi ui r- c.) o to r- <p g o- r- cu i t- co r, -■ 
- \ ui ui u to o co p- ui ru <l o co ru co co o <r <c u z. *-• c u o to _r, r, 


Page 32 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


March, 1977 


146 



cu ru 

Eo 


81 


! EC K? 


S <7) 00 O)*-tCTi®ti)C0giC^T® OJ (U T IDTHO) IflHCDrtiOsnNnjHOg 

n ^ ^roHj2ajS cr)TrTr ^ 2 u ’ 01 jfl^^cowftuinTLnffl 


a s x; 


v O' r.;, I , (S. 
i S' f 'i O '-» —• 

5j —< —< —' -u 


HmpoQcni^nruHcoswpinji/. i 

‘ n teasS«R M ^ 0, aRssKi}a; 


) r- rn co ca <s> v 


T-HUlCOnjOOO'CO^UDfUfTT(OMOl/l*H'Tl£i'TNf\jnonj.H^ia, •} .D *r . ; 7 . T 1 fj ■ 

m co r'- co C7i n oo n *h tt. ro to n oj ro n t 'r i/) n ro ru .'u l/i ru o> ■-< v !/• •-• r. *-< o ; - n 

cu •-* «-< «h ru «-« *h •-* -< *-* *-< *h --. -h h ri ?; /, ,o ri rt Jn n 01 . 


5^35|SSS5jjs8SfS88ff8g8a8§g5¥RS2RgS8Si§|Sffl^E55SSagSSiaS5|Sarf!“iiyg3!r.?s,: 

K. - j^ri(uninici)ft8fti(iJiB©Hr(rti L 5H8o8H©OHHriu,HSi®Ho8i®o®o8®Hios®C'0 0 ^(fj •'•j Co ru c o ru ru ru ru 

(—ho t iu t 'z o w h _j i- q v o. .» q -r .i n. ct /: r .it o. a. n r 

Z > > J LU Z O Q ►-< !- z IlI u 3 tj) Z X I -1 (H Q &i <f •.j Q. (*) J) Q A C h jfl) UJ Z (J) t7> J 

a 5 “ “ a o 8; S ;l & S S ° g a § § S o i o ui S o £‘ ii ?> o c 3 ^ S a! ^ @ t 3 o - n. n m y 5 5 y S r... S S f? It, § ,*533i? 3 

gPfgiiifeisssjiiesaasa^ssisaxaaBasgasciisisssssasssssiii^iitffcifil&fe^giet 


^ <r Ci x or 1 ■ ■ co 

1 g S 8s sj b S 


III O CO *> I 

m at o o) ' 

a of-o 

U» £. W 


cn in m cd i 

u Ci Q Q l 
U. U. U. U. I 


I lj ru 
• T *h 
. Lfi (H 


r* nj rU ■? S rU CU 

tM «*<***<* <0 ’ 


\ «r \ w 'r 


iMCQCDCJCQajcaajocncQQcnocQai 

.QOOOOOOOOOOOOOOO 

.U.U-11-U.li.li.U.lJ-U.li.u.li.U.U-U.li. 


m t in o r^- co c7j 

n n fi n n n n 


<s *-< 

H £ 

n fa 


i LO 8 s * 
i 10 'T 

\ 8 s? 

: z z 
h ro 


s 

I 

SK* 

n n r 


i ft 8 c 


x tu H 

§ *3 

O _) o 

co Gi o —• oj 

^ Pi ft 8 8 8 




acacacDcoaDcaixifncnQ 

--. j- 0 } - _ j- - r 

" • i or ct a: oc u 


oiCtiucoiteioiuic 


o uj Q h ( 

lu .j Ci z z ; 

tr. li w K 2 CD i 

o k u o u: n,. . 

i ft O Z ■ 




8 A; 


! a n ; 

1 fi r» i 


O OJ m ; 


> bl cO 

i £ 8 

: o <i 

i N W 


5 8 ?. 8 $. % 8 V t 

j rj ru tu ru oj nj .u oj ru 


ll. O H 

r.. <r 'I -* * 
ru ru ru a* ru 


u ro !/■■ <o r- i 
’ T r. <r <T ■ 
'U ru ru ru ; 


88S28aSS88fe: 

ru ru ru ru ru rj ru j iu f u ru r 


m 


§ $8SS*I8«8S#I 


8j ^5 
8 Diffl 




S *8 

Hp)HCQMHO)QO)no)nco 

iflTr^rririjcU'rHnc>r^U)j)rl 
*-*rucu^rururu»-i ru 


»685# 5 8S s|! 8*88« ffl 8 SBI!ia S88!S88aF8 ffl 


\U 


Mau.u.wcooiD'rcDQ'rcQUJCOSH 
McaoooPinjuujinS^HHH^-' 

®n0ipjr3oo^^fonj€oo®_ _ _ 




ilEeiiieililiiSe&Si 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 33 


147 



PROPOSED TINY PILOT 

by Dennis Allison December 3, 1976 

169 Spruce Avenue, Menlo Park, CA 94025 (415) 325-2962 
0. INTRODUCTION 

This note describes a proposed syntax and semantics for a 
programming language based on PILOT 73 but suitable for a 
minimal resources implementation on a microprocessor. The 
language is embedded in a program creation and editing facility 
suitable for interactive program development. 

1. PROGRAMS: INFORMAL DESCRIPTION 

A program in TINY PILOT (TP) is a collection of numbered 
lines. The line numbers impose an ordering on program state¬ 
ments and must be in the range 1. . 32767. Line numbers 
serve as names for program statements in exactly the same 
fashion as they do in BASIC. 

All program statements begin with a single letter keyword 
which determines the statement type. The statements 
supported are: 

T Type text from terminal 

A Acquire answer from terminal 

M Test answer for match 

C Compute 

U Use as subroutine (GOSUB) 

J Jump (GOTO) 

E Return (or terminate) (RETURN/END) 

All statements have an identical prefix syntactical form: 
line-number keyword condition? colon 
where the condition is either a parenthesized expression or the 
special conditions Y or N. The special conditions test the 
condition of a global flag which indicates whether the last 
match was successful. A condition is true if it is non-zero; 
statements with conditions are executed only if the condition 
is true. 

TP provides 26 numerical variables and 26 string variables. 
String variables are dynamically allocated storage from a com¬ 
mon pool. 

Numeric variables are represented as #A .. #Z. String 
variables are represented as $A .. $Z 

There are two kinds of strings in TP: open strings and 
closed strings. An open string is simply a sequence of 
characters. A closed string is enclosed in quotes. There are 
significant differences in interpretation. 

In an open string any instance of a variable (string or 
numeric) is replaced by its current value. Default values are 
zero for numeric variables and the null string for string 
variables. In a closed string, no replacement takes place; all 
characters are printed literally. A quote mark in a closed 
string is represented by two immediately adjacent quote 
marks. 

Closed strings may be catenated to open strings by simply 
writing them adjacent. For example: 

NOW IS THE TIME TO PRINT “$A” WHICH 
CONTAINS $A 
would print as 

NOW IS THE TIME TO PRINT $A WHICH 
CONTAINS HI 

if the current value of $A was “HI”. 

Type Statement 

The type statement has the form: 

line-number T condition? colon string carriage-suppress? 
and causes the string to be output to the terminal. The car- 

Page 34 


riage-retum line-feed which is usually produced may be sup¬ 
pressed by using a terminating at-sign. (The at-sign was chosen 
because it will probably be little used in most TP programs) 
Examples: 

100 T:HI THERE 

200 TY: “$ A$ AS AS AS A$ A$ A“ ABCDEFGHIJ 
300 T: WHAT’S YOUR NAME @ 

400 TN: I DON’T UNDERSTAND, TRY “$A”@ 

Answer Statement 

The answer statement has the form: 

line-number A condition? colon variable 
and causes either a string value to be read from the terminal 
and stored in the string variable or a numeric value to be read 
and stored in the numeric variable. 

Syntactic errors on numeric entry cause a diagnostic (“I 
NEED A NUMBER”) and a retry. 

Examples: 

100 A: #S 
200 A: $Q 
300 AY: #T 
400 A(X=) : #U 

Match Statement 

The match statement has the form: 

line-number M condition? colon pattern-strings 
It causes each of the pattern-strings (see below) to be tested 
for substring match against the most recently entered answer. 
If a match is found the flag is set true (=1), if not, it is set 
false (=0). 

Pattern-strings are lists of open and closed strings; pattern 
strings are delimited by commas, therefore a comma cannot 
appear in a pattern except in a closed string. Leading blanks 
are ignored in open strings. 

Examples: 

100 MY: DOG, PUPPY, KITTY, HORSE, LION, PIG 
200 MY: “DOG” , “PUPPY”, “KITTY” 

300 M:: 

Compute 

The compute statement has the form: 

line-number C condition? colon numeric-variable equals 
expression 

The expression is evaluated and the value stored in the numer¬ 
ic-variable. All arithmetic is integer with values in the range 
—32768 . . 32767. Overflows result in an error message 
(“NUMBER OUT OF RANGE”) and a return to program 
mode. 

All the usual operators (+, —, *, /, AND, OR, XOR, NOT, 

. =, =, =) are provided with the usual precedence. Partial 
evaluation depth caused by parenthesis or operator precedence 
is limited to 6. 

Examples: 

100 C: #X= #X+ 5 

200 C(#A 0): #A = —#A 

300 C: #A = #A+#B+ (#C+#D) / (#E+#G*8976) 

400 CY: #B = (#A=3) or (#V=9) 

Use 

The use statement has the form: 

line-number U condition? colon line-number 
Execution of a use statement causes the line-number of the 
current statement to be placed into a subroutine return stack. 
Program execution continues at the line number specified. 

An attempt to use a non-existent statement number is a 
run-time error and causes a diagnostic to be output and control 
to revert to program mode. 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


148 



Examples: 

100 UY: 25 
200 U: 750 
300 UY: 7 


proach. 

Comments and counter proposals are solicited. [See 
PCC Newspaper Vol. 5, No. 3 and Vol. 5, No. 4 for more 
PILOT information.] 


Jump 

The jump statement has the form: 

line-number J condition? colon line-number 
Execution of a jump statement causes the program to begin 
executing statements at the line-number specified. 

An attempt to use a non-existant statement number is a 
run-time error and causes a diagnostic to be output and control 
to revert to program mode. 

Examples: 

100 JY: 79 

200 J: 1000 

300 J (#X = #Y): 88 

End 

The end statement has the form: 

line-number E condition? colon line-number 
Execution of an end statement causes the program to begin 
executing statements at the statement following the statement 
whose number appears at the top of the subroutine return 
stack. That number is deleted from the stack. If the stack is 
empty, the system reverts to program mode. 

2. EDITING AND CONTROL: INFORMAL DESCRIPTION 
TP programs are built and modified in program mode. They 

are invoked by commands available in program mode which 
initialize and convert to run mode. 

The several commands which are available are: 

RUN Run a TP program 

LIST List the TP program 

LOAD Load a TP program from external media 
SAVE Save a TP program on external media 
DEL Delete lines specified from TP program 
SEE Display value of a TP variable or expression 
CONT Continue after interruption 
Lines with line numbers are inserted or appended to the 
program. 

At line entry time, the usual backspace and line delete 
functions are available just as in BASIC. 

RUN takes an optional line-number parameter to indicate 
the starting line. 

LIST and DEL both have the possibility of specifying a 
range or line numbers or a starting line-number. 

SEE displays a single string variable or an arbitrary numeric 
expression. It is provided as a debug aid. 

3. PROGRAM INTERRUPTION 

The program can be interrupted (returned to program mode) 
by typing a break-character at any time. This produces a 
diagnostic message (“STOPPED BEFORE LINE nnn”). The 
program can be edited and continued following an interruption. 

4. IMPLEMENTATION 

One needs a slightly different interpreter mechanism than 
that used for Tiny BASIC because of the presence of strings, 
but the same interpretive intermediate language approach 
would be a plausible implementation strategy. Alternatively, 
one might use a procedural approach or a table-driven ap¬ 
proach which would be somewhat faster. 

More on this later as the language firms up. 

5. CONCLUSIONS 

A very simple version of PILOT has been defined together 
with some simple editing facilities for program development. 
Some of the features of PILOT 73 have been eliminated in 
favor of what we feel is a more consistent and simpler ap- 

March, 1977 


ATTOFILE IT, PLEASE March 2, 1977 

From time to time, over the past twenty years or so, 
there have been predictions that we will soon have inexpen¬ 
sive mass storage devices capable of holding the entire con¬ 
tents of the Library of Congress in a $19 desk-top unit. 

These chimerical devices are usually based on some far-out 
technology involving proton resonance, magnetic bubbles, 
or holograms. Well, I’m still waiting patiently for such a 
device to materialize but I’m not holding my breath. Still, 
it’s fun to speculate on the possible applications of a 
truly inexpensive storage device of Brobdingnagian capacity. 

One possibility is the gradual conversion of all library 
books to the new medium, let’s call it an Attofile (“atto” 
implying a reduction factor of 10 to the -18th power). 
Assuming that copyright problems could be worked out, 
there might be no need to have more than one copy of any 
any document, or more than one Attofile, since presumably 
any number of people could access the same Attofile copy 
simultaneously. 

Obviously, there are certain hazards in such a lack of 
redundancy, since a single accident or act of sabotage could 
conceivably wipe out the totality of recorded human know¬ 
ledge. The consequences of such a calamity are dealt with 
in Hal Draper’s delightful SF story “MS FND IN A LBRY,” 
published in the December 1961 issue of The Magazine of 
Fantasy and Science Fiction. 

Use of a machine-readable Attofile could facilitate the 
development of some novel forms of literature. Computer¬ 
ized document retrieval and display is not new, but in 
most cases the static format of the original printed matter 
is retained. With an Attofile it would be possible to create 
and reproduce text, line drawings, halftones, and animated 
illustrations, as well as accompanying sound effects, music, 
or narration. For example, children could learn to read by 
viewing an Attofile version of Go Dog, Go with simultaneous 
narration, text display, and full-color animation, perhaps 
with computer-generated background music. 

If an Attofile document included a word outside the 
reader’s vocabulary, the reader could stop the display temp¬ 
orarily, indicate the unknown word with a light pen, and 
get an appropriate definition. A reader who wanted to 
browse could request an abstract of any document or could 
ask for a digest version of a book rather than the entire text. 
The computer accessing the Attofile could provide a co¬ 
herent condensation of any desired length or could generate 
an expanded or annotated version of the original. 

A full range of bibliographic and cross-indexing services 
could also be provided on demand. For example, in the case 
case of scientific journals, the reader could request a list 
of references cited in a specific paper and could also 
ask for lists of references cited in those publications, etc. 
Perhaps of even greater utility would be the ability to com¬ 
pile and list forward citations referencing a given paper. 

An Attofile computer could perform other, less passive, 
tasks as well. For example, it could produce a version of 
Pilgrim’s Progress rewritten in the style of Art Buchwald 
or James Joyce, or perhaps an iambic tetrameter version of 
War and Peace. 

Doubtless many other possibilities will occur to the reader 
reader. But when are we going to get that $19 Attofile 
with Altair interface? Sooner than we think, perhaps, but 
I’m still not holding my breath. In fact, I’m willing to 
settle for a good $300 floppy disk. 

Jim Day 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 35 


149 



A SC/MP SUBROUTINE SUPERVISOR 

Dear Dr. Dobbs: February 5, 1977 

Having enjoyed your fine magazine for a year now, I am fin¬ 
ally getting around to making a contribution. Attached is a sub¬ 
routine supervisor for the SC/MP which provides the jump-to- 
subroutine capability enjoyed by users of the 8080 and other 
CPU’s. (It goes them one better by allowing unlimited depth 
of indirect addressing.) Please note that the storage locations 
shown are completely arbitrary as all addressing is program-or 
register-relative. 

My system (SC/MP board, TV Typewriter, cassette interface, 
and 4K memory) is built into an attache case, which simplifies 
the logistics of computer club meetings. I would like to hear 

***************★*■********★***★★****: 


from anyone else who is using this CPU. My first project will 
be an interactive assembler, followed (possibly) by a BASIC 
compiler (not interpreter). 

I am intrigued by the concept behind the FORTH language, 
if not the actual implementation being marketed. The ability 
to teach a computer gradually and interactively sounds like an 
ideal approach for the hobbyist. However, I have found very 
little written on this subject, other than a rather brief article 
in Interface Age which apparently was never followed up as 
promised. Do you know of anything being done in this area? 

Keep up the good work. I still consider DDJ the only 
computer hobbyist magazine for grown-ups. 

Richard K. Peterson 
323 W. 63rd Street 
Davenport, Iowa 52806 

* *********************************** 


* "SCMPCALL" IS A SUBROUTINE CALL/RETURN SUPERVISOR FOR THE SC/MP. * 

* IT SUPPORTS INDIRECT ADDRESSING, NESTING, AND RECURSION. REGISTERS * 

* AND STATUS ARE NOT AFFECTED. MEMORY REQUIREMENT IS 75 BYTES, PLUS * 

* 2 BYTES FOR EACH LEVEL OF NESTING. REGISTER P3 IS RESERVED. * 

* A SUBROUTINE IS CALLED BY AN "XPPC P3" INSTRUCTION, FOLLOWED BY * 

* A 2 BYTE ADDRESS SPECIFYING THE SUBROUTINE ENTRY POINT, OR, IF THE * 

* HIGH ORDER BIT IS 1, THE LOCATION OF ANOTHER DIRECT OR INDIRECT * 

* ADDRESS. IF THE FIRST ADDRESS BYTE IS ZERO, CONTROL IS RETURNED TO * 

* THE MOST RECENT CALLER. THEREFORE THE "RETURN" INSTRUCTION IS 2 * 

* BYTES LONG INSTEAD OF 3. "CALL" ADDRESSES MUST BE IN THE RANGE * 

* ’0100' TO '7FFF'. * 


* THE STACK POINTER MUST BE INITIALIZED WITH ITS OWN ADDRESS, AND * 

* P3 WITH THE CALL/RETURN ENTRY POINT MINUS 1. P3 RETAINS THIS VALUE * 

* AT ALL TIMES OUTSIDE THE CALL SUPERVISOR. "SCMPCALL" RESIDES IN * 

* HIGH MEMORY, AND THE STACK EXTENDS DOWNWARD AS NECESSARY. * 

* EXAMPLES: * 

* 3F 04 EC (CALL A SUBROUTINE WHOSE ENTRY POINT IS '4EC') * 

* 3F 84 EC (CALL A SUBROUTINE WHOSE ADDRESS IS AT '4EC') * 

* 3F 0 0 (EXIT FROM SUBROUTINE & RETURN TO CALLER) * 

kkkkkkkkkkkkkkk-kk-k'k'kk-k-k-k-k'k'k-k'k-k'k'k-kic-k-k'kic-k-kic'kic'k'kkicic'kk'kk'kic’k'kic’k’kic'k'kic'k'k'k'k-kic'k’k 


0000 


SCMPCALL 

CSECT 



0000 


* 

ORG 

*+X’FA1’ 

POSITION BELOW MONITOR WORKSPACE 

0FA1 

0000 

STACK 

* 

DC 

X’0000 ’ 

STACK POINTER 

0FA3 

00 

CALLAC 

DC 

X’00 ’ 

ACCUMULATOR SAVE 

0FA4 

00 

CALLEX 

* 

DC 

X'OO ' 

EXTENSION SAVE 

0FA5 

C601 

CALLRET 

LD 

@1 (P2) 

UNSTACK RETURN ADDRESS 

0FA7 

37 


XPAH 

P3 

INTO LINK REGISTER 

0FA8 

C601 


LD 

@1(P2) 

REPEAT FOR LOW BYTE 

0FAA 

33 


XPAL 

P3 


0FAB 

C7FF 

CALLGO 

LD 

@-l(P3) 

ADJUST LINK ADDRESS FOR XPPC 

0FAD 

C0F3 


LD 

STACK 

GET SAVED P2 CONTENTS 

0FAF 

36 


XPAH 

P2 

RESTORE P2 HIGH BYTE 

0FB0 

C8F0 


ST 

STACK 

SAVE NEW STACK POINTER 

0FB2 

C0EF 


LD 

STACK+1 

REPEAT FOR LOW BYTE 

0FB4 

32 


XPAL 

P2 


0FB5 

C8EC 


ST 

STACK+1 


0FB7 

C0EC 


LD 

CALLEX 

GET SAVED EX CONTENTS 

0FB9 

01 


XAE 


RESTORE EX REGISTER 

0FBA 

C0E8 


LD 

CALLAC 

RESTORE ACCUMULATOR 

0 FBC 

3F 


XPPC 

P3 

LINK TO PROGRAM & RESTORE P3 


Page 36 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


150 


0FBD 

C8E5 

CALL 

ST 

CALLAC 

** CALL/RETURN ENTRY POINT 

0FBF 

40 


LDE 


SAVE EX REGISTER 

0FC0 

C8E3 


ST 

CALLEX 

SAVE EX REGISTER 

0FC2 

CODE 


LD 

STACK 

GET STACK POINTER HIGH BYTE 

0FC4 

36 


XPAH 

P2 

P2 IS STACK REGISTER 

0FC5 

C8DB 


ST 

STACK 

SAVE PREVIOUS P2 CONTENTS 

0FC7 

CODA 


LD 

STACK+1 

REPEAT FOR LOW BYTE 

0FC9 

32 


XPAL 

P2 


0FCA 

C8D7 


ST 

STACK+1 


0FCC 

C301 


LD 

1(P3) 

GET SUBROUTINE HIGH BYTE 

0FCE 

98D5 


JZ 

CALLRET 

IF ZERO, RETURN REQUEST 

0 FD0 

01 


XAE 


SAVE HIGH BYTE IN EX 

0FD1 

C70 3 


LD 

@3 (P3) 

ADJUST RETURN ADDRESS 

0FD3 

C3FF 


LD 

-1(P3) 

GET SUBROUTINE LOW BYTE 

0FD5 

33 


XPAL 

P 3 

SET LINK REGISTER 

0FD6 

CEFF 


ST 

@-l(P2) 

STACK RETURN LOW BYTE 

0FD8 

40 


LDE 


GET SUBROUTINE HIGH BYTE 

0FD9 

37 


XPAH 

P 3 

SET LINK REGISTER 

0 FDA 

CEFF 


ST 

@-l(P2) 

STACK RETURN HIGH BYTE 

0FDC 

40 

CALLSUB 

LDE 


GET SUBROUTINE HIGH BYTE 

0FDD 

94CC 


JP 

CALLGO 

IF HIGH BIT ZERO, GO 

0FDF 

D47F 


ANI 

X' 7F 1 

INDIRECT ADDRESS IN P3 

0FE1 

37 


XPAH 

P3 

ZERO HIGH BIT & REPLACE 

0FE2 

C300 


LD 

0 (P3) 

GET INDIRECT ADDRESS 

0FE4 

01 


XAE 


SAVE HIGH BYTE 

0FE5 

C301 


LD 

1(P3) 

GET LOW BYTE 

0FE7 

33 


XPAL 

P 3 

SET INDIRECT LINK 

0FE8 

40 


LDE 


GET HIGH BYTE 

0FE9 

37 


XPAH 

P3 

SET INDIRECT LINK 

0FEA 

9 0F0 


JMP 

CALLSUB 

GO CHECK NEW ADDRESS 


HI? . . . NOT YET 

HI to all on my mailing list, January 20, 1977 

Enclosed are TINY HI specs for your use (not for publica¬ 
tion — I want the next appearance of TINY in DDJ to be in the 
form of real live executable, testable code — KERNEL). 

These specs aren’t worth $3. I’m sending them free to my 
first customers and returning their money. I’ll charge a buck for 
expenses if I get many queries. 

Sorry I’m 5 days late on these specs. 

I am not going into great detail on how to build a dynamic 
allocator or link programs with an OS call, because I’ll have a 
working model for publication in a couple of months. 

This is the second anniversary of my first real encounter with 
computers, and the first anniversary of my obsession with pro¬ 
gramming languages. It feels good to start coding after a year 
of design (not that design stops, but is has reached the point 
where it needs data from a working system and real users). Also 
waiting to be coded are a preprocessor to translate NICE BASIC 
(my design — structured programming — mnemonic names — 
more flexible comments) into BASIC, and a tiny LIST interpreter. 

TINY has been simplified in several ways. Programs can no 
longer be nested (no real reason since data cannot be inherited 
from your surrounding block as in ALGOL or PL/I), and program 
references must include an argument list, even if empty. Programs 
may be directly or indirectly recursive (something I knew only 
after I designed the allocator). Input has been drastically simpli¬ 
fied. Deletion has been simplified. My vocabulary has changed 
somewhat. One concept I’m proud of is program oriented text- 

March, 1977 


editing functions which make indenting to show structure, and 
also commenting, easier. One design problem I’m leaving open 
(I haven’t found a solution that satisfies me) is program entry - 
how lines are ordered, listed, deleted, inserted, etc. 

I want to back down on a couple of points. TINY will have 
a virtual memory in that everything will appear to the user to 
be in main memory — but in actuality, the storage available to 
the active process (in main memory) limits the size of file that 
can be processed. I have no paging scheme, and I don’t believe 
microcomputers are the right place for that sort of scheme. My 
dynamic allocator also does not keep a record of who owns 
storage that it allocates, counting on processes to return it. 

One consequence is that the allocator cannot eliminate fragmen¬ 
tation by compacting allocated areas. The second point I was 
wrong on is my offhand attack on the “multilevel approach” 
in systems software — which can also be interpreted as top-down 
development, hierarchial layering of virtual machines, etc., which 
I favor. 

I want to make clear that some of the weaknesses of TINY 
(no arrays or real variables) are not inherent, but simply com¬ 
plications I wish to avoid in my first attempt at such a compiler/ 
interpreter. These considerations may not worry more exper¬ 
ienced programmers who will want to add these features. 

All feedback is appreciated. Special thanks to Dr. Dobbs 
Journal and my correspondents for previous help. 

Martin Buchanan 2040 Lord Fairfax Rd. 

Vienna, VA 22180 

As requested, we are deferring publication of the specs, 
and eagerly await KERNAL. —Editor 

Page 37 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


151 




THE SELECTRIC TYPEWRITER AS 
AN INPUT/OUTPUT DEVICE 

Rod Graves 

Anderson Jacobson Inc., 521 Charcot Ave., San Jose CA 95131 
(408) 263-8520 

The first true Input/Output device based on the electric 
typewriter was introduced in the 1940’s. Small solenoids were 
developed so that forty-two of them could be placed beneath 
a standard 814” keyboard to operate the forty-two letters on 
the standard electric typewriter. For transmitting there were 
also forty-two switch contacts struck by the keys so that each 
key triggered a signal from the typewriter to the reader of the 
tabulating machine. Logistic problems such as cables large 
enough to house 56 connecting wires were not important 
because the distances were never more than a few feet. Trans¬ 
mitting data from place-to-place around the country was done 
either by mail or by teletype, then reproduced at the tabulat¬ 
ing center. This concept was successful until the mid-fifties 
when the first UNIVAC computer was introduced. This event 
spurred IBM to introduce its first truly electronic computer 
which was released at about the same time as their first 
“Selectric” typewriter. Actually, the Selectric was devel¬ 
oped as an I/O device for the System 360. In this case it’s 
the Selectric we’re interested in because of its basic operating 
theory of “single element” typing. 

For the first time an electric typewriter was logically 
coded to produce a single character from a spherical element 
containing 88 characters. Each keyboard position was 
mechanically coded to operate a selection mechanism capable 
of moving type element into position for the desired charac¬ 
ter. The keyboard was a MECHANICAL input device to a 
BINARY LOGIC system accessing the forty-four characters 
in each hemisphere of the type element. Rotating the element 
180 degrees made another forty-four characters available in 
“upper case”. To those people seeking a computer terminal, 
this provided access to and from the unit on 38 fewer cables 
and was adaptable to encoding in an Extended Binary Coded 
Decimal (EBCD) system. 

Let us now get a look at the mechanics of the Selectric 
typewriter to better understand what’s needed to operate it 
electrically to and from remote locations. 

Aside from printing data characters, the terminal must be 
capable of performing five additional functions, viz: Carrier 
Return, Tab, Line Feed, Backspace and Shift. Each of these 
functions must be coded as a single character for transmitting. 
For receiving, a single solenoid is used to operate each of the 
various functions. Each function uses one or more switches 
to encode its operation for transmitting. Either of two types 
of switches are used (by Anderson Jacobson, Inc.). They are 
MICRO switches or REED switches. Micro switches are used 
wherever direct physical contact will not interfere with the 
mechanical operation being monitored. Reed switches are 
used wherever direct mechanical contact would possibly inter¬ 
fere with an operation. They are operated magnetically and 
so we avoid direct mechanical connection. Beyond this, they 
are hermetically sealed, extremely reliable and quite small. 

Each of the operational functions requires more time for 
completion than a single typed character requires. Because 
of this we must stop incoming data (or store it somewhere) 
until the longer function has ended. The upshot of this is 
that we DO require feedback data to signal every completed 
operation. It’s time now to take on the more complex idea 
of encoding and decoding the character selections mechan¬ 
ically. 

To gain a basic idea of how characters are selected and 
printed by a Selectric typewriter, lets observe Figure 1. De¬ 
picted there is a type element (or sphere). Note that each 

March, 1977 



band around the element contains eleven characters per half. 
The normal or “HOME” position of this element is such that 
the center character of each band is directly opposite the 
next typing position on the page. By tilting the sphere we 
may move any of these character bands to the writing line for 
printing. Consider the TOP band of characters as “BAND 
ZERO” and succeeding bands as “ONE”, “TWO” and 
“THREE”. The mechanical selection was evolved this way 
to reduce the number of possible selections to THREE. 

Making NO mechanical TILT SELECTION will always cause 
a character from the top band (BAND ZERO) to be printed. 
There is one mechanical tilting mechanism which provides 
ONE increment of TILT MOTION. A second tilt selection 
provides TWO increments of TILT MOTION. Operating 
these selections together provides THREE increments of 
TILT. Hence, TWO mechanical inputs provide FOUR mechan¬ 
ical selections. We can now see that this is compatible with a 
BINARY ENCODING SYSTEM. 

In the same manner, the sphere may be ROTATED to any 
of FIVE positions on either side of the zero-rotate (HOME) 
position. To do this, the rotational position of “zero” is 
“balanced” so that a single rotate selection will rotate the 
element FIVE character positions in the CLOCKWISE direc¬ 
tion. This is accomplished by spring tension. It is called 
“NEGATIVE” rotate. 

Positive rotate is accomplished in steps. There are three 
mechanical selections available for positioning the element in 
the positive direction. The first provides ONE unit of charac¬ 
ter rotation. Each of the other two selections provide TWO 
units of positive rotation. As with tilt, these selections ADD, 
providing THREE, FOUR, and FIVE units as combined. 

Algebraically, the machine will add any value of positive 
rotate selected to the negative-five selection to provide any 
negative rotate character between zero and minus five. 

For speed and control purposes it was advisable to operate 
the “spacebar” as a non-printing character, but all 88 charac¬ 
ter selections were accounted for. The character ZERO (on 
EBCD machines) occupies the zero-tilt, zero-rotate position 
of the element and is normally selected by making “no 
mechanical selection”. By re-coding this character as a 

Page 41 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


152 



“plus-five, negative-five rotate combination” the “no selection” 
combination was available for the character zero as a non¬ 
print selection. Hence we have expanded the character selec¬ 
tion ability to 89 combinations. 

Selecting these 89 characters and five mechanical functions 
is accomplished remotely by electrical solenoid operation. 

There are six solenoids to make the selection and one to 
cycle the printer for each printed character. The print cycle 
and all selection solenoids may be operated simultaneously — 
as happens when the keyboard is the printer’s source of opera¬ 
tion, but practical timing makes this inadvisable. Getting all 
these solenoids to operate at nearly the same time requires 
parallel wiring and is called “parallel data” when the seven 
signals are transmitted to the terminal at the same time. 

When the printer is operated from the keyboard, each of 
the mechanical selection components is monitored by moving 
a miniature magnet in close proximity to a magnetic “reed 
switch”. The switch opens or closes indicating which selec¬ 
tion component is being used. When the mechanical selection 
is near the apex of its operation, a sample switch closes and 
electrical current passes through each closed switch directly 
to the parallel transmission lines. 

To handle such data required encoding it to a standard 
system for recognition. Extended Binary Coded Decimal 
values were assigned to the bit configuration of each char¬ 
acter, function and control signal required. This was a seven- 
bit code. 

To transmit the data over a single pair of wires, the dimen¬ 
sion of time was added and each bit comprising a character 
was “clocked” out of a storage buffer. This conversion 
serializes the data for transmitting. A start and stop bit were 
then needed to demark the beginning and end of each char¬ 
acter transmitted. We now have a nine-bit code. The nine 
“bits” of each character code are (Figure 2): 


TAB 

INTLK 



* = CORRESPONDENCE WIRING 
- EBCD WIRING 


TIME 

DURATION = 


S 

T 

A 

R 

T 

I ^ 


B A 8 4 2 1 


66 


52.21 


S 

T 

O 

P 


7. 43' 


66. 30 milliseconds (4 1.25%) 


BITS FUNCTION 

1 START: This bit is defined as a transition from a 

“MARK” (+) condition to a “SPACE” (-) condition 
on the DATA TRANSMIT LINE. 

2-7 DATA BITS: The next six bits are the encoded char¬ 
acter bits. They are expressed in the hexidecimal 
format as B A 8 4 2 1. 

8 CHECK: An ODD-BIT PARITY is employed wherein 
all data must be comprised of an ODD number of bits. 
Whenever an even number of bits comprise a character, 
the printer adds the “check” bit with the encoding to 
insure the validity of transmitted data. The check bit 
is derived mechanically along with the character selec¬ 
tion. 

9 STOP: The ninth bit is the “stop” bit, signalling the 
end of one character by restoring the transmit line to 
a “mark” condition. The minimum time duration of 
a stop bit is one character time. (Same as one bit 
time.) 

There are two types of operation that have been used for 
I/O printers. They are “CLOSED LOOP” and “OPEN LOOP” 
(synonyms are “Asynchronous” and “synchronous”). Let’s 
get a look at a “closed loop” as recommended by IBM for 
their Selectric I/O. (Figure 3) 


COMMENTS ON THE CONDITIONS ILLUSTRATED IN 
FIGURE 3: In this diagram, “TRUE” conditions of READY 
and BUSY exist when a logical “ONE” appears at the output 
of a logic block. A “LOGIC 1” is generated when a logic 
block INPUT is conditioned by I/O contact closure BETWEEN 
the block and power common. (Anderson Jacobson, Inc. uses 
the absence of a “READY” condition to indicate “NOT 
READY” for character transmission and “BUSY” to indicate 
the operation of the various functions. This is possible be¬ 
cause we’ve incorporated DTL logic into the printer base and 
use simpler “single-pole, single-throw” switches.) 


READY (R): Defines the period of time when any of the 
I/O magnets may be addressed. Those ad¬ 
dressed should be held operated for the full 
duration of the “R” condition. This allows 
the selected operation to control the duration 
of the solenoid pulse. The “R” condition 
obtains when all selection interlock switches 
are in their normal (non-transferred) condi¬ 
tion. 

BUSY (B): Defines a period of time during which NO 

I/O SOLENOIDS ARE TO BE ADDRESSED. 
The break-before-make contacts used here are 
not used by Anderson Jacobson. Our Reed 
switches used in conjunction with “filter” 
switches and DTL logic allows us to control 
“BUSY” and “NEXT CYCLE” by degree of 
camshaft rotation, providing much more re¬ 
liable operation. 

FEEDBACK and CHARACTER SELECTION CONTACTS: 


During an INPUT (transmit) operation, the 
purpose of contacts C-l (and C-3 through 
C-6) is to GATE the sampling of the transmit 


Page 42 


Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


153 





contacts. The N/O contacts shown here 
should make AFTER the transmit contacts 
CLOSE and should open BEFORE the transmit 
contacts re-open. This control of transmit con¬ 
tacts provides the condition where voltage is 
never applied to contacts while they are being 
transferred. 

FIGURE 4: Once a print command is issued to the terminal, 
its cycle shaft begins to rotate. When it has rotated 10° the first 
feedback switch (FILTER 2) opens indicating the terminal is 
now “BUSY”. It will remain busy until this contact closes 
again near the end of the character cycle. 

CHARACTER TRANSMISSION in 
DEGREES OF PRINTER ROTATION (ACTUAL) 


O’ 



FIGURE 5: If a FUNCTION command is first issued, the 
operational shaft is set in motion. Depending on which func¬ 
tion is selected, the feedback contacts open at approximately 
60° and “busy-out” the terminal. The duration of the “BUSY” 
line is determined by the completion of the selected operation. 

CONTROL DEVICE COMMANDS: Commands from the 
control device are released to the I/O in relation to the degrees 




—T—1- 

1 1 


1 1 

' ' 

■Ml 


§— 

— 





>52- s Election 

A 

A 

% k> 

e 

c 

i 

c 

c 

%» 

A 

_ 

_r 



-q 

—1 

_ 

_d 

b— 

-V 

—d 



Sy FILTER SAMPLE 



i— 

-c 





i— 

-r 


9 

So FILTER 2 

L—. 





_□- 

,—, 







i—, 














P* 




- 

PRjhT/SFpCE SCL 


_ 

_ 

_ 


_ 

_ 


PRINTER cr "/ 

k-1 




* v ’ r 



mm 

■■■ 



1 






■ 

■ 




TAB /A ID 

— 

— 

1 | ' 


_ 



3'/ BS sec 




S/2 TAB SEL 


s 

—id 

b_ 

_ 

_ 


- 


b 


3S TAB SOL 

_ 

_ 








-~“ 


PfiJNTTA CY -4 



=3_ 

b— 






5/3 BET /A/D 

— 

r 1 ” 





5/7 ret SAMPLE 




d 

si— 






~ L -* 

RET SOL 

















PRINTER CY “/ 






— 










5/5 CASE SWITCH 


3- 

CASE SAMPLE 


_c 

cm. 

—c 

_ 

_ 

UP SHIFT SOL 

A 

A 

— 

-4*- 



_ 

PRINTER. CY '/ 


- <SZ 

b— 

_c 

— 













c 


5/6 case Sample 

i— 


-C 

jm— 


DOWN SHIFT SOL 




— 


PRINTER. CY -/ 


i_b— c 

—i— 








of camshaft rotation rather than on a time-interval basis. This 
prevents the time required for any given operation from being 
a factor in reliable operation. 

FEEDBACK CONTACTS: These are timed to permit 
initiation of “next cycle” prior to the conclusion of “current 
cycle”. This avoids stopping the I/O between succeeding 
characters or repeat functions. It has the effect of increasing 
terminal longevity, providing maximum throughput speed, re¬ 
lieving “full-power” stop and start of printer clutches. 

EXPLANATION OF “CLOSED-LOOP” PREFERENCE: 
Operating an I/O device in a system where the control device 
issues commands on a time basis is NOT RECOMMENDED. 
Such an approach is referred to as “Open Loop” and is 
shunned because an I/O device of the Selectric nature should 
receive its commands in relation to the dynamic location of 
the terminal as measured in the number of degrees rotation of 
its current mechanical operation. A closed loop provides 
TOTAL INTERLOCKING between terminal and control de¬ 
vice. Without total interlocking, the control device must 
assume the ability to synchronize the I/O at line speed. Such 
an approach requires that the time necessary to complete 
each individual machine cycle be an unvarying constant. 

SELECTRIC I/O TIMES ARE NOMINAL, NOT CON¬ 
STANT. They can be maintained in a closed loop system 
because of the total interlocking provided. Occasional 
losses of machine cycles would be inherent in an open loop 
operation. 

PARITY CONTACTS: Parity provides a method of 
checking the character selection to assure it is valid. This 
does not insure that the correct character has been selected 
or printed; only that a valid selection was made. The check 
is mechanically encoded by keyboard interposers for all 
characters comprised of an EVEN number of selection 
latches. When EVEN, the parity latch is operated, closing 
the parity contacts so the bit configuration transmitted 
will be comprised of an ODD number of bits. Logic for 
Odd-Bit Parity is standard. Even parity may be provided. 


SOL.I \OIlG M.U1NI1 COIL 
Cl I- 1C A I IONS 


WHERE 

RATED 


VLSIS l‘.\NCL IN 

OHMS 

MAX 

USED 

Volume 

(LOW) 

R.V! ED 

(HIGH) 

M.V 

KLD 

•18 

3-10 

3=>8 

3‘>7 

1 lo 

Lck 

24 

1 JO 

IUd 

1 10 

240 

L PPLR 

43 

2 J1 

240 

25'; 

2 1 7 

SHIFT 

24 

ol 

05 

68 

337 

NO 

48 

31h 

395 

155 

13S 

PRINT 

wssm 

125 

137 

150 

192 

ALL 

m'wrn 

432 

475 

51b 

'111" 

Others 

n 

122 

128 

133 

197 


^Theoretical maximum current (in Milliampores) at rated voltage-- 
computed as a ratio of Rated Voltage to Low Resistance. 
lOOTo Duty Cycle. The Duty Cycle of all other magnets is described 
as "sufficient to provide continuous machine operation when magnet 
pulses are gated by the Feedback and Interlock Contacts. 


COMMENTS ON SOLENOIDS: 

Solenoid coils may be found in both 24 and 48 volt 
operating ranges. Solenoids used for UPPER CASE, 
NO PRINT, and KEYBOARD LOCK operate within 
12 milliseconds when used at their rated voltage. They 
may be operated at 10% above this rating but the 
operating speed will vary. 

ARC SUPPRESSION: 

All magnets and solenoids use (for best results) the 
diode method of arc suppression. The standard for I/O 


March, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 43 


154 













wiring is NEGATIVE GROUND, therefore arc suppres¬ 
sion requires that the ANODE of such diodes be com - 
mon. Both methods are illustrated below. 


Negative Ground 

Solenoid 

[b 


C A 
Diode 


Positive Ground 

Solenoid 

[t 

_T~TI_ 

A C 

-U — J 4 

Diode 


ARC SUPPRESSION 


SWITCHES, FEEDBACK 
Terminal Ready 
Terminal Busy 

Busy (Function Interlock) 3 ea. 
Case Sample (upper/Lower) 


SWITCHES, TRANSMIT 
Character Select (6ea) 
Parity Check 
Character Sample 
Function Sample (3ea.) 
Shift Sample 
End of Line (optional) 


The next decision to be made is which of these two printers 
should you select as an I/O device. To bias your selection, let 
me say now that for price, effort of conversion, longevity and 
reliability, I recommend the Selectric I/O mechanism. It is 
designed with the following features, and to devise your own 
for adaption to an office selectric you must design similar 
features and create them yourself. 


CONTACT SPECIFICATIONS (As recommended by 
IBM): 

GENERAL: Contacts must operate within 10 to 300 
milliamps at 10 to 48 volts, DC. 

WIRE CONTACTS: 

200 to 300 mA only if used in steady, non-switching 
state. 

40 to 200 mA if adequately suppressed. 

10 to 40 mA if not arc-suppressed. 

10 mA (or less) NOT RECOMMENDED. 

REED SWITCHES: 

200 to 300 mA, non-switching. 

40 to 200 mA if not arc-suppressed. 

Contact bounce is not a problem with magnetic reed 
switches. Open switching contacts and wire contacts 
bounce. Switch-bounce may be present for a period 
of one to five milliseconds on either of these. The 
fast acting solid-state circuitry of any control device 
must be protected against contact bounce or discon¬ 
tinuities greater than 200 MICRO-seconds. Bi-stable 
switches (or reed switches) must be used. 

CHOOSING A PRINTER: To provide output and/or 
input you must first have a printer adaptable to Binary 
Encoding. The most compatible printer available is IBM’s 
Selectric mechanism. There are two basic choices: The 
OFFICE MODEL or the I/O (Heavy Duty) MODEL. 

Office models are available in one configuration only — Cor¬ 
respondence. I/O’s are provided in either Correspondence or 
EBCD. 

NECESSARY COMPONENTS TO OPERATE A SELECTRIC 
AS AN I/O 


FEATURES 

OFFICE SELECTRIC I/O SELECTRIC 


MOTOR/DRIVE 

SHADED POLE MOTOR CAPACITOR START MOTOR 
(torque) 

CENTRIFUGAL CLUTCH DIRECT DRIVE 
CYCLE SHAFT 

3 SELECTION CAMS 3 SELECTION CAMS + 2 Txm Cams 

SMALL BEARING AREAS LARGE BEARING AREAS 
UN-TAPPED SHAFT TAPPED FOR TIMING EXTENSION 

CHARACTER SELECTION 

ONE PIECE LATCHES LATCHES + EXTENSIONS for TXM 


KEYBOARD 


MECHANICAL LOCK 
ONLY 

SHIFT/CHARACTER 
INTERLOCK 
ALL SELECTIONS PRINT 
NO PARITY ENCODING 
MECH. TAB, POWER 
SPACE 


MECH + ELECTRO-MECH LOCK 

SHIFT/CHAR + CHAR/SHIFT 
INTERLOCK 

NO-PRINT SELECT PROVIDED 

PARITY ENCODED 

POWER TAB, NO-PRINT SPACE 


OUTPUT 

(Universally needed) 


INPUT 

(add to basic needs) 


SOLENOIDS for: SOLENOIDS for: 

Character Selection (6ea) Keyboard Lock (2ea) 

Print Cycle (start) Non Escape (optional) 

No Print Selection 

Upper Case Shift 

Lower Case Shift 

INITIATE Lower Case 

Carrier Return 

Index (Line Feed) 

Tab 

Backspace 

TOTAL OUTPUT SOLENOIDS= 15 
TOTAL INPUT SOLENOIDS= 3 


OPERATIONAL SHAFT 


LIGHT (small) BEARINGS HEAVY (large) BEARINGS 
LIGHT TORQUE LIMITER HEAVY TORQUE LIMITER 
(CR) 

COMMON SPACE/ BACK- COMMON TAB/BACKSPACE CAM 
SPACE CAM 


SHIFT 


MECHANICAL ONLY 
MECH SHIFT LOCK 
ONLY 

SMALL SHIFT CLUTCH 


MECH & ELECTRO-MECH SHIFT 
MECH & ELECTRO-MECH SHIFT 
LOCK 

LARGE SHIFT CLUTCH 



Page 44 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 March, 1977 


155 







dr dobbs journal of 


COMPUTER 


C 


alisthe 


mcs 


60 


rthodontia 


Running Light Without Overbyte 


Number 14 


April 1977 


Volume 2, Issue 4 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 

(BE IT E VER SO LA TE) 


Washington Club Offers Free Access to Their On-Line Journal 3 

Pros & Cons of Modems for Cassette Recording 6 

Using an Acoustic Coupled Modem as a Bulk Storage Interface 6 

SOFTWARE 

MITS Basic, Poly Basic, and NIBL — Product Review by Jef Raskin 8 

Screen Image Hard Copy for the VDM-I, Dan S. Parker 10 

Here, Now: A Micro APL for 8080’s, Erik T. Mueller 12 

Guide to 8080 PILOT, Version 1.1 ,John A. Starkweather, Ph.D. 17 

Complete User’s Manual (complete source code to be published in the May issue) 

A 650X Program Relocater, Ralph Sherman 30 

A KIM-I TV Sketch Program, Stan Ockers 32 


DESIGN CONCEPTS 

The Characteristics and Decodability of the Universal Product 

Code Symbol, D. Savir & G. J. Laurer 36 


.. . and, a more-than-usually confused potpourri of interesting tidbits 




© David Dameron 1979 






WASHINGTON CLUB OFFERS FREE ACCESS 
TO THEIR ON-LINE JOURNAL 

The Washington D.C. Amateur Computer Society is proud 
to announce the publication of the first “Electronic Journal” 
available to the general public in the United States. 

The Journal of the Washington Amateur Computer Society, 
now in its second year of publication, is available via a com¬ 
puter link, to anyone possessing a computer terminal and tele¬ 
phone coupler. 

NO “PASSWORD” OR ACCOUNT NUMBER IS NECES¬ 
SARY. 

Our Society Journal is written, edited and published once a 
month on the DECSystem-10 of the Catholic University of 
America, and recently we were granted permission to store the 
Journal as a “Free Access” text file. Your readers may obtain 
it by dialing 202-635-5710 for a 110 Baud line, or 202-635- 
5730 for a 300 Baud line. The DECSystem-10 will respond 
with its answer tone. Activate your modem and then type the 
following: 

C 

(i.e., “Control-C”: Hold down the control key and type a 
“C”). The computer should echo an Up-arrow and a “C”. If it 
does not, try doing it several times, if nothing happens you 
may have picked a bad time to call, when the computer is 
either “Down” for maintenance, or has “Crashed” because of 
some problem. If this is the case, try calling again later. If you 
get the proper echo (The Up-arrow and the “C”), type: 

I 

followed by a carriage return. The System Monitor will re¬ 
spond and tell you who, what, when, and where it is; some¬ 
thing like this: 

CATHOLIC U. 507B20 19:39:01 TTY60 SYSTEM 95 
which is something like a Radio Amateurs Callsign. After 
typing this, the monitor will type a period on the next line, in¬ 
dicating that you are conversing with the Timesharing Moni¬ 
tor, and that it is waiting for your instructions. To get the 
Journal, type: 

HELP WACS 

followed by a carriage return, and the computer will proceed 
to type it out. 

The Journal is rather lengthy (The April issue came to 16 
pages), and is set up to fill pages 60 characters wide with 66 
lines per page. If you are going to read it on a TVT display in¬ 
stead of printing it on a hardcopy device, we recommend that 
you tape the telephone output so that you can replay the 
Journal at your convenience. You can stop the output at any¬ 
time by typing a “Control-O” (Hold the control key down and 
type an “O”), which instructs the Monitor to stop output. 

We believe that this is the first such electronic “Mail Ser¬ 
vice” or Journal. You will not be working with a recording, 
but will be running a program on the Timesharing System that 
moves information stored in a Disk “File” to a serial commu¬ 
nications port. We would not be able to share this new adven¬ 
ture in communication with you, if it were not for the kind as¬ 
sistance of the Computer Center of the Catholic University of 
America. Since this service uses computer time, slowing the 
system down slightly, and ties up a communications port, we 
ask that you use it only during non-business hours; late at 
night or weekends would be ideal. 

Our Journal is also available in printed form, that differs 
from the “On Line” version only slightly (If we have 
“Snoopy” on the cover page it is omitted from the electronic 
version). 

We hope that this will be the first of many such computer 
hobbyist communication Nets, and that the age of electronic 
mail and newsjoumals will not be far off. We appreciate the 
fact that Long Distance telephone rates will make our service 


FIRST MICROPROCESSOR-COMPATIBLE 
ANALOG INPUT COMPONENT ANNOUNCED 


With Burr-Brown's new MP20, microprocessor system designers now 
have a complete, bus-compatible solution for analog data acquisition 
tasks. 

This hybrid, quad-in-line package consists of a 16-channel analog 
multiplexer, high-gain instrumentation amplifier, 8-bit A/D converter, 
plus all necessary address, data- and control-bus interfaces. 

The MP20 is timing and logic level compatible with 8080A and 
8008 type microprocessors. No external logic is needed. And gain and 
offset are internally laser-trimmed, eliminating the need for external ad¬ 
justments while providing absolute accuracy better than +.0.4% (1 LSB) 
on the ±.5V or 0 to +5V ranges. 

Low-level signals such as thermocouple outputs can also be handled 
directly with reduced accuracy. The instrumentation amplifier can be 
programmed with a single external resistor to provide input signal 
ranges as low as +.10 mV FS. 

To simplify programming and allow for unlimited channel expan¬ 
sion, the MP20 is treated as memory. Each analog input channel occu¬ 
pies one memory location. Any memory reference instruction can be 
used to access data. Thus, one LDA instruction will input data from 
one channel to the accumulator. Two adjacent input channels can even 
be acquired with one LHLD instruction. Alternately, the MP20 can be 
interfaced as I/O. 

Housed in a 1.7" x 2.1" x 0.15" ceramic package, the MP20 is spec¬ 
ified over a 0° to +70°C temperature range. Power requirements are 
+ 15VDC and +5VDC. 

Price of the MP20 is $195 (1-9) and $140 (100's). Delivery is from 
stock. 

For more information, contact C. R. Teeple, Product Manager, Burr- 
Brown, International Airport Industrial Park, Tucson, Arizona 85734. 
Phone (602) 294-1431. 



rather expensive for the individual, let’s say, in California, but 
perhaps that is where hobbyist clubs can show their worth, 
and make use of unused business “WATS” lines late at night or 
on weekends. We wish you all luck in your endeavors, and 
hope that a second such “Electronic Journal” is in the works 
out there. Perhaps this is just the kind of justification for the 
adoption of “ASCII” as a legal transmission code on the Ama¬ 
teur airwaves that the FCC will recognize. We computer hob¬ 
byists need access to quick, efficient and up-to-date communi¬ 
cations media to enable us to grow and exchange ideas. Why 
can’t we have access to radio communications in the code that 
is a national standard not only to our hobby, but also to 
ANSI? Computer hobbyists unite! Petition the FCC to allow 
us to communicate in our “native tongue”. Meanwhile, find 
those fallow WATS lines and make them serve the hobby. 
Sincerely, 

Robert Jones, Director Thomas Crone, Asst. Director 

Richard Bonanno, Editor William Stewart, Assoc. Editor 
Washington Amateur Computer Society 
4201 Massachusetts Avenue, #168 
Washington, D.C. 20016 

Page 3 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics 8< Orthodontia, Box E, Menlo Park CA 94025 


159 


LETTER TO THE EDITOR ABOUT AN EDITOR 


FASBOL, ANYONE? 


Dear Sir: December 9, 1976 

Enclosed is a preliminary copy of the operating instruc¬ 
tions for EDIT. [Indeed it was. And a reasonably hefty 
rough draft, at that. -Ed.] EDIT is a versatile text 
editor which I have developed for the 8080 microprocessor. 
EDIT is very similar to ‘big machine’ text editors, but 
more powerful than existing editors for hobby and small 
business applications. EDIT may be used with any type 
console, and simple patches may be made to interface 
video module handlers. The input to, and output from, 

EDIT can be directed to any peripheral with appropri¬ 
ate handlers. Complete peripheral interface details are 
included in the EDIT manual. I plan to sell this soft¬ 
ware for around $25 a copy (not including source), 
but would like to hear your comments, suggestions, 
offers, etc. before proceeding. 

EDIT is now up and running and available for dem¬ 
onstration. I should soon have a simple Tarbell cas¬ 
sette interface handler available. 1 hope to have 
floppy handlers for the more popular systems. 

The EDIT manual enclosed is not for public distri¬ 
bution or reproduction. [How sad. - Ed.J 
Regards, 

Lorin S. Mohler 
219 N. Sweetwater St. 

Anaheim, CA 92806 

SUPER VIDEO CHIP AVAILABLE 

Jim Day 4/8/77 

Standard Microsystems Corp., Hauppauge, NY 11787 
(516/ 273-3100) recently announced a new user-program¬ 
mable video timer-controller chip containing all of the logic 
for timing and formatting video displays. This 40-pin NMOS 
chip, designated the 5027, allows program control of such 
parameters as characters per line, lines per frame, raster scans 
per character, etc. Control of the chip is via seven 8-bit regis¬ 
ters that can be loaded from a parallel I/O port, using four 
register address lines and a chip-select line to provide complete 
control by a microprocessor such as the 6800 or 8080. The 
5027 will sell for about $26 in OEM quantities. 

FORTHCOMING ISSUES OF SPECIAL INTEREST 

IEEE Computer Aug: Microprocessor applications 

Datacomm User Jul: Small business systems 

Sep: Intelligent terminals 
Dec: Specialized terminals 
Data Management Dec: Mini/Micro update 

Datamation Jul: Personal computers 

Digital Design Oct: Microcomputers 

EDN Nov: Microcomputer directory 

Electronic Business Jun: Microprocessors 

Electronic Design Jul: Microprocessors 

Oct: Microprocessors 

Electronic Engi¬ 
neering Times Aug: Microprocessor update 

Electronic Products Oct: Microprocessor power supplies 

Nov: Microprocessor software 
IEEE Spectrum Jun: Microprocessors 

Dec: Microprocessors 
Infosystems Jun: Word processing 

Aug: Voice recognition 
Minicomputer News Jun: Personal computers 

Sep: Word processing 
Oct: Small business systems 
Mini-MicroSystems Jun: NCC issue 

The Office Jul: Small business computers 


Dear Dr. Dobbs: 

I'm looking for a hard copy of both the program and documenta¬ 
tion for FASBOL II, a SNOBOL compiler for the PDP-10. This 
is available from DECUS only on magtape (at a price of $40.). I 
don't have a PDP-10 anyway and my interest in the program is 
to rewrite it for a smaller system which I'll share with DDJ 
readers, if successful. I hope someone can help me and I'll 
answer all letters. 

Thanks, 

Ron Tipton 
Route 7 

Fayetteville, Arkansas 72701 
(501) 643-2191 

P.S. Permission is granted, of course to publish this letter! 


PRAISE FOR WAVE-MATE & RAINBOW 
COMPUTING 

Dear Mr. Warren: February 19,1977 

As a recent convert to computer mania, I have read and 
heard many stories of real horror concerning people who 
have waited months for delivery, spent weeks trouble¬ 
shooting, and who have gathered grey hair and ulcers 
corresponding with uncooperative manufacturers. 

Perhaps my experiences, rather different, will be of inter¬ 
est to you and to others, and at least will give credit where it 
is due. After visiting several computer stores, where, in the 
main, I was accorded treatment usually reserved for a ment¬ 
ally deficient, I started correspondence with several manu¬ 
facturers, and finally made the acquaintance of Dennis 
Brown of Wave-Mate in Gardena. Alone of the persons I 
contacted, he answered patiently and fully my many quest¬ 
ions, showing me anything I wished to see, from parts to 
assembled boards, from manufacturing facilities to opera¬ 
ting systems, even introducing me to customers who had 
computers up and running. I learned a lot fast, and rela¬ 
tively painlessly. 

After helping me get my rig going, mostly by building 
it and doing all the troubleshooting, he turned me over to 
Gene Sprouse of Rainbow Computing, Granada Hills. 

Gene, Dick and the gang are enthusiastic, immensely know¬ 
ledgeable, and about the most helpful people I have ever 
run into. They took about a month to bring me from be¬ 
nighted ignorance to the point where I am writing useful 
programs for my business. I am also enjoying what could 
easily be an expensive and frustrating hobby, and associa¬ 
ting with people who are alive and enthusiastic. Everyone 
associated with Wave-Mate and Rainbow Computing has 
been helpful “far beyond the call of duty” and has earned 
my gratitude and recommendation. A list of the things 
they have done would prolong this letter unbearably, but 
for example, they have stayed late at night to tutor me, 
come to my shop to deliver a memory board, and answered 
at length questions that would have taxed a saint’s patience. 
Frankly, I would rather eat a copy of DDJ than write a 
letter, but such integrity certainly deserves comment. 

I am more than pleased with my Jupiter II. It will be a 
useful and labor-saving adjunct to my business, as well 
as an interesting and educational avocation. I hope to 
use it not only to do paperwork, but also to carry out 
some experiments in computer music. 

I will be glad to answer any questions concerning 
either my system or experiences, and to talk with busi¬ 
nessmen or musicians concerning applications. 

Sincerely, 

M. J. Kreinik 4323 Melrose Avenue 

Aeolian Music Los Angeles, CA 90029 


Page 4 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


160 



“SERIOUS APPLICATIONS IN PLEASANT HILL” 

November 1,1976 

Diablo Valley Junior College in Pleasant Hill, California, 
is home base for an unusual microcomputer group, an 
association of professionals interested in “serious” applica¬ 
tions for small computer systems. Serious means wanting 
to make some system in society work better, smoother, 
more safely, with less loss, pain, frustration, energy expen¬ 
diture, or delay. It can also mean any computer application 
which increases one’s personal income. 

We hereby extend an invitation to like-minded people 
across the country to join in a network of professionals 
dedicated to information exchange re small systems and 
their “serious” applications. 

We are not particularly interested in organizational 
clap-trap but rather in DISSEMINATION OF BOTH HARD 
DATA AND INNOVATIVE FANTASY, REGARDING 
TECHNICAL FEATURES OF SMALL COMPUTER 
SYSTEMS - HARDWARE AND SOFTWARE. 

As an example of innovative fantasy, let me tell you 
about Dick Maus’ project. He’s a computer science teacher 
I met in Minneapolis this summer. His project: to regard 
the game of “Life” as a subset of what Dick calls “Super¬ 
life”. This algorithm will treat growth and decline phenom¬ 
ena in cell arrays. Dick sees applications for his simulation 
studies in such diverse fields as auto traffic flow, patient 
queueing lines in a medical clinic, interaction of arrays of 
businesses in a given market, wave phenomena analysis, 
and nerve impulse transmission in neural tissue, just for 
starters. (Dick plans to communicate soon with Dr. Dobbs 
re the above. Of special interest is his plan to offer a 
$100 prize for the best program readers come up with.) 

In conclusion, let me happily report that we’ve got 
Jim Warren’s interest in this network thing, so please 
use this publication as a clearing house and sounding 
board. Do NOT write to me — I’m up to my ears in 
(computerized) alligators. Address all correspondence 
to: PROFESSIONAL USERS GROUP, Dr. Dobb’s 
Journal. 

William J. Schenker, M.D. 

POTPOURRI FROM ZHAHAI 

Dear DDJ: 

1. I like the IL approach. It is very similar to the 
method that has been evolving for some software I’m work¬ 
ing on (a monitor and assembler for the 6502), and not I 
begin to wonder if I cannot make the two compatible, 

i.e.: use the same IL interpreter for TB and the monitor/ 
assembler. There are some different ML calls, but there 
is plenty of room to define more in TB’s IL (and almost 
unlimited room in Whipple & Arnolds’ version). Will let 
you know how this works out. It seems to me that a 
well developed master IL (MIL) might be possible which 
would allow developement of editors, executives, assem¬ 
blers, languages, maybe loaders, etc. Is this blue-sky? 

2. How much slower should the two level approach be 
as compared to a one level approach? (Factor of 1.5, 3, 
10,40?) Any rough ideas? 

3. Calculator chip extended function units are too slow! 

4. I agree: ’nuff BASIC, SMALL PASCAL would be 
much interest. CASUAL and TINY HI are intriguing. 

5. More references to trade & professional sources 
(literature). 

6. Re using an acoustic coupler for cassette tapes: this 
may not work very well. See the analysis in The Computer 
Hobbyist, No. 5 (Box 295, Cary, NC 27511). Briefly, 

the “scuzziness” of a cassette recorder and of a phone 
line are of different natures. Also, who needs another 

April 1977 


300 bps cassette standard? One major problem with the 
KC standard is that it’s too slow, so everyone wants to use 
something faster for themselves (and two cassette inter¬ 
faces is awkward to ask of folk). And for higher bit rates, 
you can be pretty sure that high speed modems (IF they 
work on a cassette at all) will be much more expensive 
than other (self-clocking) techniques, e.g.: Digital Group 
& Tarbell. And a final note for those who go ahead 
anyway (which I encourage as long as nobody forks out 
too much dough until this is tested): standard acoustic 
couplers transmit on one frequency pair and receive 
on another pair, i.e.: they won’t read what they write. 

On some modems, the “self-test” mode will allow 
transmitting and receiving on the same pair. I believe the 
Motorola MC 14412 universal modem chip will allow this, 
also. (Likewise, the MC 6860 of the 6800 family has self¬ 
test). Good luck! It should work (at 300 bps on a decent 
cassette unit. Exchange may be pretty hard tho. 

7. Considering the number of mods, errata, and replies 
in DDJ, an index is badly needed. Is there any plan for 
one? [Yup.] Also, how about deliberately prefixing 
articles with some keywords? [Good idea. We’ll try. 

In the meantime, use the headlines.] 

8. Good articles on double density for floppies in 
Sept., Oct., and Dec. issues of Computer Design. Re 

HLL, see A general-Purpose Macro Processor as a Poor Man’s 
Compiler-Compiler by Andrew S. Tanenbaum in IEEE 
trans. on software eng., Vol. SE-2, No. 2, P. 121 (June, 

1976). Of special interest is his description of SAL, a 
PASCAL-like systems programming language. I think it 
could be Tinied cleanly. P.O. Box 1637 

Zhahai Stewart Boulder, CO 80306 

RASKIN REJECTION, COPYRIGHT COMMENT 
& PRODUCT TESTING PROPOSAL 
Dear Jim: January 5,1977 

Please do not “serialize” (Jef Raskin’s product review) 
or use the stream of consciousness style of writing that is 
apparently “in” in computer magazines. As a literary 
work, such articles are atrocious. As a source of informa¬ 
tion, they are even worse, forcing the reader to wade 
through oceans of words to find the pearls of wisdom. 

Please do not print any more about copyrights 
(“Postscript to ‘Copyright Mania’ ”, p. 11). There is 
too much free interpretation of the copyright law 
around already, e.g. an unfortunate article in a recent 
BYTE. Copyright protection for software is a force 
fit at best anyway. The result is that there are as 
many opinions as there are lawyers or pseudo-lawyers. 

While I sympathize with the victims of corporate 
supposed fail-safe mechanisms, I think the ideas 
should not be spread around. 

As a matter of interest, the National Commission 
on New Technological Uses of Copyrighted Works 
(CONTU) has issued a preliminary report. If you want 
information or would like to testify at or attend their 
hearings, contact Robert W. Frase, Assistant Executive 
Director, National Commisision on New Technological 
Uses of Copyrighted Works, Washington, D.C. 20558. 

Concerning your new product testing program, 
instead of a voucher from the manufacturer, would you 
accept a certified check for the price of a piece of 
equipment chosen by a reader (and not previously 
evaluated)? [We would certainly consider it.] After 
testing, the equipment is forwarded to the reader. What 
if the equipment were in kit form? [ Ditto ... if we can 
find someone we feel is qualified, whom we can afford.] 

Very truly yours, 165 Hurd Road 

Paul F. Wille Aurora, OH 44202 

Page 5 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


161 



AN 8080 RESIDENT FORTRAN COMPILER . . . 
FOR $750 

A resident Fortran compiler for 8080 microprocessors 
has been introduced by Unified Technologies, Inc. of 
Islington, Ontario. 

The compiler runs on most 8080 systems using 16K 
bytes, handles a subset of ANSI Fortran IV. The program 
produces a formatted output, handles one to thirty-one 
character symbolic names and will perform single or double 
byte integer arithmetic. A floating point package is also 
available. 

Priced at $750, the compiler is available on an IBM 
format floppy disc, paper tape or PROM. Documentation 
including both reference manual and user’s manual, is 
available. 

Linkage may be made between the firm’s FORT-80 
programs and assembly language subroutines. In addition, 
functions such as ABS, RANDU, and SQRT and included. 

The compiler is being distributed in Canada by Datamex, 
Inc. U.S. customers may contact UTI directly. 


RASKIN RANTS: ACOUSTIC COUPLER & 
CASSETTE RECORDERS 

In Volume 1, Number 10 (you know, the one two issues 
after the famous mystery issue) Steve Moore suggested, 
through our beloved editor, that an Acoustic Coupler be 
used as a cassette interface. Steve’s right, of course. But 
here I am in the middle of reviewing the Pennywhistle Mo¬ 
dem for this very rag. Said Pennywhistle incorporates a 
feature handy for using the Bell 103 standard as a cassette 
interface. To wit: a pair of mini phone jacks from which 
and into which may be placed audio signals. First of all 
I have been happily using modems as cassette interfaces 
since long before the hobbyist computers were in gestation. 
The scheme works with a wide variety of acoustic couplers 
and cheap cassette recorders. I have often read in the 
hobbyist publications that the reason the Bell 103 FSK 
conventions are not used is that inexpensive tape record¬ 
ers will not hack it. Well, they will. Anything over $50 
that I have tried over the last six years does the job. 

Now, as is my custom, for some snags in the grass. 

If the batteries in your tape recorder are dying and its speed 
is slipping a bit then the 103 recording won’t work. Nor 
will any of the other methods even if they have a bit more 
speed tolerance. The Pennywhistle modem is particularly 
good in accomodating frequencies off standard. It tracks. 

But the 103 convention is really two conventions. One 
pair of frequencies goes one way and another pair of fre¬ 
quencies goes the other way. This is fine when you want 
to full duplex (go in both directions at once) over a 
phone line. But it causes a problem in that we must all 
agree as to whether our cassettes are recorded in ORIGINATE 
or ANSWER mode. I used to have an old Prentiss 
Electronics coupler that could handle both. The Penny¬ 
whistle is a bother in this regard. But see the article on that 
gadget for more details. 


ACOUSTIC COUPLERS & CASSETTE 
RECORDERS: FANTASY REALIZED 

Dear Jim Warren: January 9,1977 

I have already realized one of your fantasies — using an 
ordinary modem to generate tape bulk storage. It repre¬ 
sents the fact that I had (and still use) a modem to 


access a few IBM 360/91 computers, a pair of tape decks, 
an XR210 that didn’t work out in a related project and no 
money. Together, these spelled either no storage or your 
fantasy. While I don’t think it’s a great solution, it fit my 
budget since I already had everything. The enclosed pages 
should allow anyone to more or less duplicate my effort. 

With the wide variety of surplus modems around, it would 
be hard to be more specific about the modem connections. 
The modulator could also be connected at the computer 
end of the link and this might be easier since most hobby¬ 
ists probably have circuit diagrams and drawings to locate 
voltages and signals. Also, some noise problems would be 
reduced if the playback signal were electrically connected 
rather than acoustically as outlined but this requires finding 
a suitable spot in the modem circuit and may also disable 
the telephone usefulness. One more detail, computers and 
modems are usually both wired with a DB25S connector so 
to connect them together, you need to make an adapter 
cable with DB25P connectors on each end wired at least 
for the following connections (by pin numbers): 1-1,2-3, 

3-2, 7-7. Note the connections can also be made: 6-20,20-6, 
and 8-8. This crosses the two ready lines and allows the 
computer to sense carrier detect if it has the signal (MITS 
2SI0 does). With this cable, both the computer and modem 
will be connectable to the terminal as well as to each other 
by preserving all the standard wiring connections to the 
plugs and sockets. For 20-ma current loops the same kind 
of thing can be done, again wiring a cable to crossover the 
data lines when connecting computer to modem. 

Helpfully yours, 

Darrel J. Van Buer (and Hymie, my computer) 

1516 Electric Ave., Apt. R 
Venice, CA 90291 
(213) 823-6016 


USING AN ACOUSTIC COUPLED MODEM AS A 
BULK STORAGE INTERFACE 

There are only a few problems with doing this. The first 
problem is that the technique used to store the information 
was designed for telephone circuit characteristics. For all 
the bad things about a telephone link, it gives very little 
frequency distortion. The data is encoded by frequency 
shift keying between two frequencies less than 10% apart so 
that a cheap recorder may have enough flutter and wow to 
deceive the demodulator. Depending on the circuit details 
of the demodulator, it may not reliably tolerate more than 
1 or 2% errors. The solution of this problem is to use a good 
recorder. A good discussion of this issue can be found in 
The Computer Hobbyist, Vol. 1, No. 5. 

The second problem is that the modem transmits on one 
set of frequencies and receives on another. It would be 
possible to retune the transmitter frequencies, but this would 
disable the usefulness over the phone, and still require dis¬ 
abling the answer-back delay. The easiest solution is to build 
build the modulator shown in the attached circuit diagram 
(for about $10). 

This modulator circuit is taken from the Exar application 
notes for the XR-210 IC used. Opening the case of your 
modem, you should look around for a place to put the cir¬ 
cuit (it easily fits on a two inch square bit of perf board). 

A little bit of poking around in the neighborhood of the 
power supply should yield a place to steal the +12 volts) 
and +5 volts for the RS232 receiver and inverter. If the mo¬ 
dem uses TTL, DTL or RTL, the signal for the XR210 may 
also be there but might be hard to find. Both ground and 
the transmit data are easy to find as both are on the 25 pin 
socket. Ground is on pin 7 and the data is on pin 2. In most 


Page 6 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 April 1977 


162 



cases, the filter/attenuator will be needed because the raw 
output is supply voltage square wave which will badly over¬ 
drive most tape decks. In any case add an audio output 
jack to a handy spot on the modem case. This output will 
be active whenever the modem is turned on, and should be 
connected to the recorder input. The simplest way to get 
the recorder output back to the modem is to wire a small 
speaker to the earphone jack of the recorder, then set the 
speaker in the modem earpiece cup. 

Tuning the modulator can be done either of two ways. 

By far the easiest way is to connect a frequency counter to 
the output. The output frequencies are keyed by using 
your computer or terminal, high frequencies normally, low 
frequencies when you send a break condition. The fre¬ 
quencies should be within 10 cycles of 2025 Hz and 2225 
Hz. An alternate adjustment method is to use the tape re¬ 
corder monitoring circuit to feed the modulator output to 
the demodulator and adjust the frequencies until they acti¬ 
vate the carrier detect circuit and give the same data received 
as sent. Note that one of the adjusting potentiometers 
adjusts both frequencies so the low frequency should be set 
first, then the high frequency set separately. 


General comments: If you don’t have (or want) a modem 
to talk to remote computers and a good deck already, your 
money would be better spent on one of the speed-tracking 
interfaces (Tarbell, TCH, Kansas city standard). The original 
version of the Altair ACR interface used this 2025/2225 mod¬ 
ulation but they have since widened the shift to better discrim¬ 
inate them despite speed errors. The data rate possible will vary 
somewhat with different modems but most were designed to 
operate reliably at 300 baud. Any higher rate would depend 
on a top rate modem and recorder. I have been getting ade¬ 
quate results at 300 baud but I would recommend generation 
and checking of parity on all data recorded and the playback of 
new recordings to ensure their readability, at least until you 
have a good feeling for the reliability of your setup. If you use 
a three head deck, it is possible to use a full duplex modem 
setup to verify the data a fraction of a second after it is record¬ 
ed by reading and writing the computer port simultaneously. 

It is also a good idea to record at least enough leader of no data 
to activate the carrier detect circuitry as some modems inhibit 
the reception of data until there is a carrier for several seconds. 

I have successfully used this method for about six months, 
mostly due to the usual student poverty situation, but a high 
speed alternate is slowly nearing the top of my priorities. 



April 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 7 


163 






M1TS BASIC, POLY BASIC, AND N1BL 
A Review by 
Jef Raskin 

It takes a while to do a software review. Many pieces of 
hardware can be built and checked out in a few hours. The 
instruction manual has to be gone through but once, and any 
problems or good points noted. The device can be objectively 
tested against the published specifications. The reviewer can 
note any conveniences and difficulties in operating the device. 
The case size can be measured with a ruler and reported. All 
nice, sensible tests. But software is another matter entirely. 

To be truthful there is software that is easy to review. 
Software that doesn’t work at all is trivial to report on. A 
short program that does floating-point division can be tested 
quite readily for example (although there are tricky points). 
But a compiler or interpreter, an operating system or a text 
editor — these require having the system up and running for a 
while. Sitting around and using the program for a while. There 
are sure to be corners of the software under test that just don’t 
get observed. A decent BASIC manual is not a pocket size 
pamphlet, and testing every feature, in every combination with 
every other feature, is just not possible. Even just testing every 
feature may be prohibitively time consuming. 

My method has been to get the software under considera¬ 
tion up and running, and use it for a month or more. Occasion¬ 
ally I jot down a comment or two, and gather a general im¬ 
pression. After familiarity has bred some contempt I start to 
get nasty, and pick at the weak points. Some software can be 
brought crashing to its knees by doing operations that seem to 
be permitted by the manual, but in fact don’t work that way 
at all. Sometimes software is just wrong. 

After looking at the software from the user’s point of view, 

I try to look (at least a little) at the implementation itself. 
Occasionally a few things will reveal themselves at that point. 
Such as obscure coding that might make it difficult to modify 
a system for future use, such as bad documentation, such as 
clever system design that makes it easy to add your own 
flavors to the basic recipe. 

In reviewing personal computing languages, one would be 
negligent in not paying part of the debt we all owe to MITS 
BASIC. Written by a firm called MICRO-SOFT, this was the 
first widely available BASIC for personal computers. It wasn’t 
(and isn’t) perfect but was very well thought out for personal 
computer use, and brought with it many significant innova¬ 
tions that have set the tone for all following BASICs for home 
use. 

MITS BASIC is not slow. One of the first systems I sold to 
a commercial user [I do systems integration and software 
design for microcomputers professionally] was an original 
ALTAIR running MITS BASIC. One day a customer wanted 
to run a benchmark on it against the IBM 5100 (at $20,000) 
and the similar Tektronix machine (at about $12,000). 
“Fine,” I said, not knowing whether I was going to win or 
lose, having never run such a test myself. The customer typed 
in the 200-odd line program that did statistical analyses of 
stock market data. The IBM machine had run the job in 112 
seconds. The Tektronix in 113 seconds. When the program was 
entered I made a small handful of changes to make it run on 
the MITS computer. It took a few minutes. No longer than it 
took, according to the customer, to change from IBM to Tek- 
tronix’s BASIC. So I was still in the running. With stopwatch 
in hand he typed “RUN” and the program began. He sat back 
to wait and was startled when results started printing out. 
The answers were correct. And the program had run in 57 
seconds, beating the more expensive competition very handily. 
I had a customer. 


This alone should establish that MITS BASIC is no toy. 

But it was some of its unique features (at that time) that origi¬ 
nally attracted my admiration. Improving on most earlier 
BASIC’s, Micro-Soft had invented (with wonderful aptness and 
memorability) the PEEK and POKE keywords. These allowed 
direct memory access in BASIC. For the first time, one could 
write an assembler in BASIC! In fact we quickly wrote a dis¬ 
assembler in BASIC to find out what the BASIC interpreter 
looked like. Some other BASIC’s use “EXAM” and “FILL” 
for these functions, but MITS’ terms are the better and should 
be adopted universally. Polymorphic System’s BASIC original¬ 
ly used “EXAM” and “FILL” but by their released version 
they had decided to use the de facto standard. Bravo. NIBL, a 
version of Tiny Basic concocted by National Semiconductor 
for their SC/MP system uses a strange notation for this func¬ 
tion. An at sign (@) before an expression means the contents 
at the location whose address is the value of the expression. 
(An expression is a variable, a constant or some arithmetical 
combination of variables and/or constants that can be evaluat¬ 
ed to a single value). While this accomplishes the same goal as 
PEEK and POKE it is not in keeping with the design of 
BASIC. BASIC is a keyword style language, and does not use 
obscure symbols to do functions. In this reviewer’s opinion 
NIBL makes a very wrong choice at this point. 

For memory mapped I/O, where putting a value in a certain 
location in memory automatically sends it to a peripheral de¬ 
vice (and the device transmits to the computer by having a 
word or two in memory that it can control) PEEK and POKE 
would serve for explicit control of input and output. On less 
elegant architectures (such as the 8080) there are separate I/O 
instructions and thus MITS BASIC has the IN and OUT in¬ 
structions. These are excellent additions to BASIC, and Micro- 
Soft did it well. On the other hand the WAIT instruction 
(which waits for a device to be ready, as indicated by a bit 
going on or off in a status byte) is rather clumsy. But it is use¬ 
ful, and MITS was the first to provide it, again doing the per¬ 
sonal computer field a true favor. In Polymorphic BASIC the 
user has to write the wait loop themselves. Considering the ob¬ 
scurity of the WAIT instruction (when three arguments are 
required) it is often a good idea to write out waiting loops ex¬ 
plicitly in MITS BASIC to improve readability and to make 
them interruptible! 

Polymorphic BASIC, which came out much later than 
MITS BASIC has the advantage of hindsight and is generally 
more powerful in consequence, having many useful features 
such as plotting and a real-time clock. On the other hand one 
of the most important features of MITS BASIC was copied 
only superficially and is a major problem to the serious user of 
Polymorphic’s version. One of the most useful innovations in 
MITS BASIC was the bit-wise AND, OR and NOT. These treat 
a number in terms of its binary representation. For example 
9 (base 10) in binary is 1001. 10 (base 10) translates to 1010 
in binary. So, 9 AND 10 evaluates to 8 which is merely the 
bitwise ANDing of 1001 and 1010. Similarly 9 OR 10 yields 
11 . 

1001 1001 

1010 1010 

AND === OR === 

1000 1011 

This may seem a bit strange, and useless: unfortunately for 
some readers (and fortunately for others) this article is not the 
place for a tutorial. The other operation NOT merely turns all 
ones into zeros and vice versa. These operations are vital for 
many control applications. Polymorphic BASIC, while it has 
.AND, OR and NOT, does not do them properly bit-wise, thus 
destroying much of their utility. This reviewer called up 


Page 8 Dr. Dobb's Journal of Computer Calisthenics 8< Orthodontia, Box E, Menlo Park CA 94025 April 1977 


164 



Polymorphic Systems and they have the change to true 
bit-wise operation “on the back burner”. NIBL does do these 
operations bit-wise. But there is a disastrous error in NIBL. 
False relationals (such as 4)9) evaluate to 0. True relational 
evaluate to 1. This seems reasonable, but in a bit-wise system 
with twos complement arithmetic, true must (as it does in 
MITS ville) evaluate to —1 (which in binary is all l’s). Thus, in 
NIBL, while negating something false gives something true - 
which is correct — NOT (true) gives true instead of false. Oops. 
I called up National Semiconductor about it, and they didn’t 
think that it was important enough to make the necessary 
changes, although one of the implementers said that it was “an 
easy patch”. So, NIBL users beware. The statement 

IF NOT (2 = 2) THEN PRINT “TWO DOES NOT EQUAL 
TWO” 
prints 

TWO DOES NOT EQUAL TWO 
just as though the computer believes its. Poly and MITS BA¬ 
SIC both give the right answer. [Kudos to Doug Wyatt for 
this neat formulation of the problem with NIBL] 

MITS’ BASIC has proved to be fast and reliable, with very 
few bugs. On the debit side is the manner in which it was 
coded. The programmers (Bill Gates et. al.) were into tricky 
coding. This has come back to haunt them as MITS BASIC is 
one of the few programs known that will not run on the newer 
Z-80 CPU’s. Also their I/O routines are not localized. They 
tend to be here, there, and everywhere. This makes it quite 
difficult to modify the code to work with input and output 
devices not specifically provided for by the designers. Poly 
BASIC is just the opposite, being extremely clean in regard 
to I/O handling, and the coding (what I have seen of it) seems 
quite straightforward and not at all convoluted. 

Another advantage Poly’s BASIC has is arithmetic preci¬ 
sion. Besides a few more decimal places, the routines were 
done with their numerical analysis straight. There are many 
occasions when MITS’ BASIC loses precision unnecessarily. 
Your faithful watchdog called MITS on the phone, and 
followed it up by a letter to inform them of the problem. The 
only reply I got back was that the loss of precision is “nor¬ 
mal.” The examples were additions of four significant digit 
numbers, two digits of which were to the right of the decimal 
point. The sum was non-zero in the third decimal place. 
Another example was three to the fourth power, which was a 
smidgen over 81. Sure, in digital arithmetic there will be 
rounding error due to the finite precision, but many algori¬ 
thms published quite a number of years ago do better than 
MITS’ BASIC, given the same internal precision. Poly BASIC 
does it right. NIBL only has integers, so there is no problem. 
Now for something Poly BASIC has got that everybody oughta 
have got. Bad English to introduce some Good Computer 
Language. Many full flowered BASICs have the ability to 
define functions with a DEF statement. So does Poly 
BASIC. But! The functions are genuinely re-entrant. This 
means that they can call themselves. Is this useful? Some¬ 
times. Consider this function that calculates the factorial 
of an integer. (Old Hands at computer science will recog¬ 
nize an old standard example here). 

100 DEF FNF(X) 

110 IF X=1 THEN RETURN 1 
120 RETURN X*FNF(X-1) 

130 FNEND 

It works like this. One factorial is one. So if X=1 line 110 will 
provide the correct answer. Say X=2. Then line 120 comes in¬ 
to play. There, X (which is 2) is multiplied by this very same 
function applied to X-l (which is 1). But FNF applied to 1 is 
1, and 1 times X (which is 2) is 2, which is returned (and is the 
correct answer). Try it yourself for X=5. 5 factorial should be 

5*4*3* 2 *l or 120. 


Avoiding the temptation to make this a tutorial (there, 
that was easily done) I will just mention that variables used as 
arguments are local to the function. Any other variables are 
global, which means that they behave just like the BASIC vari¬ 
ables you are used to. Thus a program that will work in non- 
Poly BASICs will work in Poly BASIC unchanged. But the 
astute programmer knows the advantages of having local vari¬ 
ables in a subprogram. If you are not so astute then ask some¬ 
one who is. Local variables in subroutines would be a nice 
addition as well, but that has yet to be implemented in any 
BASIC that I know about. 

Poly BASIC has an INPUT statement that allows printing a 
literal string instead of the usual automatic question mark. 
That is a fine feature, but their keyword is “INPUT1”. Not 
very mnemonic. It is also unnecessary: INPUT “MESSAGE”, 

X should suppress the question mark. INPUT X would behave 
as always. The quote would tell BASIC what to expect. 

PLOT is another feature that I like, but it depends on hav¬ 
ing the Polymorphic Systems video interface, with its graphic 
feature. The statement 

PLOT X, Y, 1 

puts a small rectangle at location X, Y on the screen. 

PLOT X, Y, O 

deletes such a rectangle. PLOT can be used to position text 
anywhere on the screen as well. 

Both MITS and POLY have a good selection of string hand¬ 
ling features. The CHRS, VAL, STR$ and ASC functions are 
handy. CHR$ returns the character corresponding to an ASCII 
code. ASC returns the ASCII code of a given character. VAL 
returns the value of a character string that represents a num¬ 
ber, and STRS, given a number returns the character string re¬ 
presenting that number. These form a necessary basis for seri¬ 
ous string handling in BASIC. 

The Poly-88 includes in every system (unlike the other 
manufacturers) a real-time clock. BASIC can access it with the 
TIME function. Thus BASIC can be used for doing accurate 
timing. The clock is useful in computer assisted instruction, 
games and real-time control applications. It is also easy to 
write a digital clock that appears in big numbers on the screen 
when the computer isn’t doing anything else. 

Ever since MITS showed the way, BASIC has had to have a 
way of linking to a machine language subroutine. But Poly’s 
format for the linkage is neater, and is easy to describe: 
CALL(X,Y). The second argument is optional and is converted 
to an integer and put into the DE register. X is the address of 
the machine language subroutine. When the machine language 
return is executed the current value of the HL register is re¬ 
turned to the program. 

One of the greatest deficiencies of BASIC is the unmne- 
monic quality of variable names—A through Z and these letters 
followed by a single digit. Yech. MITS’ BASIC allows names 
up to eight characters in length albeit that only the first two 
are checked (that is the names NEAT and NECTAR refer to 
the same variable). This is better than one-letter names, and 
makes programs easier to write and read. Longer names should 
be allowed in all future BASICs. Note that existing BASIC pro¬ 
grams would still run verbatim if this change were made. But 
this article isn’t supposed to proselytize for new BASIC fea¬ 
tures, just report on existing ones. 

To sum up, then: MITS’ BASIC was a valuable addition 
to the personal computist’s arsenal, and some of its better 
features have yet to be picked up by the other companies. 
Poly BASIC has most of the advances that MITS introduced, 
added some of its own, and missed a few. NIBL, as a Tiny 
Basic (National Semiconductor’s manual references Dr. Dobbs 
as the original source of Tiny Basic—even the big companies 
read this magazine!), is nowhere near as powerful as big 
BASICs. It also has one annoying flaw as mentioned. To be 


April 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 9 


165 



fair to NIBL it has an innovation that might become popu¬ 
lar—a DO ... UNTIL construction. Whatever statements are 
between the DO and the UNTIL instructions get executed 
repeatedly until the expression following the “UNTIL” 
becomes non-zero. The manual has this neat program for 
finding prime numbers: 

10 PRINT 2 
20 1=3 
30 DO 

40 J=I/2:N=1 

50 DO 
60 N=N+2 

70 UNTIL (MOD(I,N)=0) OR (N J) 

80 IF N J PRINT I 
90 1=1+2 

95 UNTIL 0: REM THIS REPEATS OUTER LOOP 
FOREVER 

This is presented mostly without REMarks so that the avid 
puzzle solver can figure out how it works. 

So even a Tiny Basic can have something that the bigger 
versions can learn from. And the full microcomputer BASICs 
are already better than the prototypes from the large compu¬ 
ters and the minicomputers. The personal computer movement 
is not only proving how much less expensive computer power 
can be, but is showing the way in new language ideas as well. 
Look out, IBM, look out, DEC. Or better still: Look and learn. 


4K BYTE MEMORY CARD AVAILABLE 
FROM NATIONAL SEMICONDUCTOR 


Santa Clara, Calif.— A compact, low power series of NMOS semicon¬ 
ductor memory cards offering system engineers a ready-made alterna¬ 
tive to the expensive design-prototype-test cycle is now available from 
National Semiconductor Corporation. 

Known as the NS 400-N series, this self-contained 4K-byte memory 
utilizes the model MM2102 1,024-bit static RAM as storage medium. 
According to Don Miller, OEM memory systems marketing director, 
these storage elements eliminate the need for clocks and refresh sig¬ 
nals, and keep the power consumption low. The cards are available in 8, 
9 or 10 bit versions and in 550 or 300 nsec, access times. 

"Simple interface and high performance make the NS400 series 
ideal for microcomputer and microprocessor applications where over¬ 
all cost is an important consideration," Mr. Miller said. The space-saving 
(3.93 x 6.3 x 0.5 in.) 4K x 10-bit, 550-nanosecond version of the NS 
410 sells for $200 in quantities of 100, and is available for immediate 
delivery from National Semiconductor Corporation, Santa Clara, 
California, or from National's franchised distributors. 

( All that is needed to use the NS 400-N cards are memory enable, 
address, read-and-write, and data, all of which are TTL compatible, and 
a single 5-volt power supply with one Ampere for each card. Independ¬ 
ent 3-bit addressing for each card permits plug-in expansion to an 8 
card, 32K word memory system. The card address is programmable via 
the connector wiring. 

Data in and data out have the same polarity and the read operation 
is non-destructive. The TRI-STATE® outputs simplify busing by keep¬ 
ing impedance high when the card is not being addressed, and allow 
easy expansion of bus interfacing. 

Mr. Miller explained that all of National's memory systems are sub¬ 
ject to the same stringent quality and test standards, and are designed 
to guarantee fast, adjustment-free maintenance and high reliability. All 
components are burned in, and the systems undergo extensive diagnos¬ 
tic testing before shipment. 

According to Mr. Miller, the NS 400-N series complements Na¬ 
tional's expanded family of static memory systems, which provide a 
wide choice of memory speed, size and power consumption, including 
the ultra low power NS 400-C, CMOS series, which is available with 
4,096 words of 8,9, or 10 bits each. 


NATIONAL WINS MICROCOMPUTER 
CONTRACTS IN EXCESS OF $267,000 

SANTA CLARA, CA—The Microcomputer Systems Group of National 
Semiconductor Corporation, here, announced the receipt ot three 
IMP-16L microcomputer contracts, totalling $267,500, from Sono-Mag 
Corporation, Bloomington, IL, from Princeton Applied Research, 
Princeton, NJ, and from 3M Company, Minneapolis, MN. 

The Princeton Applied Research contract, for $100,000, includes 
IMP-16L/300 cpu application cards and IMP-16L/006P random-access 
memory/programmable-read-only memory (RAM/PROM) cards for use 
in their medical electronics equipment. The contract runs for ten 
months with renewal options; deliveries begin in April. 

In unrelated events, Sono-Mag Corporation purchased, for $72,500, 
IMP-16L/300 cpu application cards and IMP-16L/006B RAM cards for 
use in remote radio broadcast stations controls. The $95,000 3M con¬ 
tract is for microcomputer cards used in the firm's facsimile equipment. 

National's IMP-16L/300 cpu card is a general-purpose 16-bit micro¬ 
computer designed expressly for the OEM user. Using a bit-slice archi¬ 
tecture, the cpu application card has a control read-only memory chip 
which provides an extended instruction set for convenient program¬ 
ming. A high-speed asynchronous bus and control logic affords direct 
memory access. 

The IMP-16L/006P memory cards have 2048 by 16 bits of static 
RAM and 4096 by 16 bits of ultraviolet-eraseable PROM. All cards 
include timing and control logic for direct interfacr to the IMP-16L cpu 
application card. 

National Semiconductor Corporation, 2900 Semiconductor Drive, 
Santa Clara, CA 95051. 

For more information: 

Mktg: Bob Pecotich (408)737-6115 

PR: Roy Twitty (408)737-5287 

or Jim Rose (213)883-9884 


SCREEN-IMAGE HARD COPY FOR THE VDM-1 

Dear Dr. Dobbs, March 18, 1977 

I have found the short screen image copy routine to be very handy 
and perhaps the method of calculating the top screen line's position in 
memory might be useful to your readers. 

Thanks, 

Dan S. Parker 1007 3rd St. No.3 

Davis, CA 95616 

P.S. I'm presently working with John Moorhead, also of Davis, CA, 
to submit a software scroll VDM-1 driver based on LiChen Wang's 
driver that does everything PT's VDM-1 driver does (except turn cursor 
off completely) in about half the number of program bytes that PT's 
takes: approx 240 compared to PT's 450 byte program. We have it 
working, just need to complete the documentation. Hope you'll be in¬ 
terested when we submit it. [yup] Our driver should also work directly 
with Solid State Music's VB-1 board. We will check to make sure when 
I finish building a VB-1. 

SCREEN-IMAGE HARD COPY FOR THE VDM-1 

Dan Parker 
March 18, 1977 

A convenient feature of using both a video display device 
such as Processor Technology’s VDM-1 and a hard copy device 
in an operating system is the ability to edit text, list, or run a 
program using the high speed and versatility of the video 
device and then produce a hard copy of the final product. Un¬ 
fortunately, producing a hard copy usually means rerunning 
the program, or reassembling it with a listing, this time with a 
sense switch in another position to get the hard copy. 

The following program called SCRPY, which is modified 
slightly to “stand alone”, serves as a nice subroutine addition 
to an 8080 monitor to produce a hard copy “image” of what¬ 
ever is currently displayed on the screen. A nonprinting con¬ 
trol character, which doesn’t modify the contents on the 
screen, produces a call to the subroutine. 

A few notes about SCRPY: The software assumes the 
VDM-1 is being driven by Processor Technology’s VDM-1 driv¬ 
er with the screen memory addressed at C000-CFFF. PT’s 
VDM-1 software takes advantage of the hardware scroll capa- 


Page 10 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


166 



bility of the VDM-1. As a result, the topmost line of text as 
seen on the TV screen is not necessarily stored in the lowest 
portion of the screen display memory. (Of course, if a soft- 
ware-scroll type of driver is used, such as Lichen Wang’s driver, 
DDF, Volume 1, No. 6, then the task is much simplified to 
merely scanning the screen memory and outputting each char¬ 
acter.) 


The program listed below uses the variable BOTL (Bottom 
of Text Line) generated by PT’s VDM-1 driver (located at 
09B5HEX in PT’s VDM-1 driver source listing) to calculate 
where the top line on the TV screen is stored in memory. 
The program then continues to output the screen memory one 
character at a time, with the B and C registers keeping track 
of the 64 characters by 16 lines, respectively. 


0000 




0010 * 




0000 




0015 * SCREEN IMAGE HARD COPY 

FOR THE VDM-1 

0000 




0020 * 




0000 




0025 * BY 

DAN PARKER, 1007 3rd ST. #3 

0000 




0030 * 

DAVIS, 

CALIFORNIA 95616 

0000 




0035 * 




0000 




0040 * 


" SCRPY " 


0000 




0045 * 




0000 

31 

FF 

OF 

0050 SCRPY 

LXI 

SP,0FFFH 

{SET STACK POINTER 

0003 

21 

00 

CC 

0055 

LX I 

H.CCOOH 

{SCREEN MEMORY ADDRESS 

0006 

3A 

B5 

09 

0060 

LDA 

BOTL 

{GET BOTL FROM VDM-l DRIVER 

0009 

01 

40 

00 

0065 

LXI 

B,004OH 

{PUT CHARS./LINE IN B&C 

oooc 

09 



0070 CONTI 

DAD 

B 

{ADD TO H&L 

000D 

3D 



0075 

DCR 

A 

CONTINUE UNTIL START OF 

000E 




0080 * 



TEXT LINE IN MEMORY 

000E 

CA 

14 

00 

0085 

JZ 

CONT 

START OF TEXT IN H&L? 

0011 

C3 

OC 

00 

0090 

JMP 

CONTI 


0014 

01 

11 

40 

0095 CONT 

LXI 

B ,4011H 

CHARS & LINES*1 IN B&C 

0017 

CD 

36 

00 

0100 NXTLN 

CALL 

CRLF 

GET CARRIAGE RET & LF 

001A 

7C 



0105 

MOV 

A,H 


001B 

FE 

DO 


ono 

CPI 

ODOH 

STILL WITHIN SCREEN MEM? 

001D 

cc 

32 

00 

0115 

cz 

RESET 

RESET H&L IF NOT 

0020 

OD 



0120 

DCR 

C 

DECREMENT LINE COUNT 

0021 

CA 

00 

CO 

0125 

JZ 

MONITOR 

RETURN TO USER'S MONITOR IF DONE 

0024 

06 

40 


0130 

MVI 

B ,04 OH 

RESET CHARACTER COUNT 

0026 

7E 



0135 CONT2 

MOV 

A,M jGET CHARACTER 

0027 

CD 

41 

00 

0140 

CALL 

WRITE 

{AND OUTPUT IT 

002A 

23 



0145 

I NX 

H 

-INCREMENT MEMORY POINTER 

002B 

05 



0150 

DCR 

B 

•DECREMENT CHARACTER COUNT 

002C 

CA 

17 

00 

0155 

JZ 

NXTLN 

•START ON NEW LINE IF DONE 

002F 

C3 

26 

00 

0160 

JMP 

CONT2 {OTHERWISE CONTINUE OUTPUT 

0032 

21 

00 

CC 

0165 RESET 

LXI 

H,CC00H {RESTORE H&L TO START OF SCREEN 

0035 

C9 



0170 

RET 

{MEMORY 

0036 




0175 * 




0036 




0180 * USER 

•S I/O 

UTILITIES 


0036 




0185 * 




0036 

3E 

OD 


0190 CRLF 

MVI 

A,0DH 

"CR" 

0038 

CD 

41 

00 

0195 

CALL 

WRITE 

OUTPUT IT 

003B 

3E 

OA 


0200 

MVI 

A ,0AH 

"LF" 

003D 

CD 

41 

00 

0205 

CALL 

WRITE 


0040 

C9 



0210 

RET 



0041 




0215 * 




0041 

F5 



0220 WRITE 

PUSH 

PSW 

SAVE CHARACTER 

0042 

DB 

00 


0225 STAT 

IN 

00H 

STATUS PORT 

0044 

E6 

02 


0230 

AN I 

02H 

CHECK TBE 

0046 

CA 

42 

00 

0235 

JZ 

STAT 


0049 

FI 



0240 

POP 

PSW 

RESTORE CHARACTER 

004A 

D3 

01 


0245 

OUT 

01H 

OUTPUT IT 

004C 

C9 



0250 

RET 



004D 




0255 * 




004D 




0260 BOTL 

EQU 

09B5H 

BEGINNING OF TEXT LINE (FROM 

004D 




0265 * 



PT'S VDM-1 DRIVER GLOBAL RAM) 


April 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 11 


167 




HERE, NOW: A MICRO APL FOR 8080 s 

Dear Mr. Warren: May 18, 1977 

I have just finished a micro APL for the 8080. It is com¬ 
pletely debugged and operational. I am enclosing the docu¬ 
mentation for publication which covers all of the operators 
and gives examples that thoroughly explain how to use it. 

Since I hand assembled the language, I don’t have a source 
listing available for publication (Manual typing of a 5.25K pro¬ 
gram is impossible!) 

I am selling Tarbell Cassette tapes of EMPL 1.0 for $10 
each. The tape comes with a user’s manual, including complete 
information on implementing EMPL on any 8080 system, de¬ 
tails of EMPL’s operation (such as workspace organization), 
tape loading software, etc. Any improvements I make in the 
meantime will be included and completely documented. I 
hope this will be of interest to your readers. 

Sincerely, Britton House 

Erik T. Mueller Roosevelt, NJ 08555 


E M P L , an 8080 APL 

Britton House 

Roosevelt, NJ 08555 

©Copyright 1977 by Erik Mueller 

8K EMPL is a micro APL for the Intel 
8080. The current version fits in the 
first 5,376 bytes of memory. All the 
special symbols and operators of APL have 
been adapted to the ASCII character set. 

The following description explains 
EMPL. Examples are used to clarify all 
operations. 

EMPL has two modes: The normal Execu¬ 
tion Mode in which all instructions are 
executed immediately, and the Definition 
Mode which permits the user to enter 
functions. 

When in Execution Mode, the computer 
indents five spaces and waits for input. 

Type an arithmetic expression and EMPL 
will respond with the result. 

2-6-3 

-1 

(Computer responses are underlined.) 

All expressions are evaluated by the 
right-to-left rule. That is, each operator 
takes as its right argument everything to 
its right. For example, in the above 
problem, EMPL first evaluates 6-3 which 
equals 3, then it evaluates 2-3 which 
equals -1. 

The range is +32767-- double-byte integer 
arithmetic is used. 

Variable names may be any length of 
alphabetic characters. They are assigned 

Page 12 


values with the (typed as Control I.) 

SPEED:=2059 
SPEED - 59 
2000 

One dimensional arrays are called vec¬ 
tors in EMPL. A variable may be specified 
to be a vector of any length provided 
sufficient memory is available. 

A:= 5 -4 2 33 
A 

5 -4 2 33 

A+l 

6 -3 3 34 

A*4 3 2 0 
20 -12 4 0 

A Dyadic Operator (such as "+""?", etc.) 
takes two arguments, one on either side of 
the operator; as compared with a Monadic 
Operator such as "!" (absolute value), or 
"?" (random), which takes only one argument 
to its right. 

Constants may be numeric or string vec¬ 
tors. Since the internal representation of 
both is the same, operations may be per¬ 
formed between the two types. To print a 
vector as a string, type "$" before it. 

X : = 1 STRING' 

X 

83 84 82 73 78 71 

$X — 

STRING 

$X=1 

TUSJ0H 

A description of some of EMPL 1 s unique 
operators follows: "\" is used to create a 
vector of consecutive integers between 1 
and the right argument. 

\ 5 

1 2 3 4 5 

'V gives the length of the right argument. 

/s' HELLO' 

5 

23 

23 

returns the smaller of two numbers; 

""" returns the greater. 

-1'2 

4 1 9"3 2 56 

4 2 56 

gives the remainder when the right 
argument is divided by the left. 

2.5 

1 

"(Control Y), (Control N), 

"=", and return a 1 if the condition 

April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


168 



is true, otherwise they return a 0. 

5<4 

0 

7 3 4# 3 

1 0 1 

chains together two vectors. 

HI:= 1234 
WN:=419 512 
XX:=HI,WN 
XX 

12 3 4 419 512 

A: =' CATE' 

B : ='NATION' 

$A,B 

CATENATION 

18,2,10*4 
18 2 40 

18 2 10*4 
7 2 8 40 

"\" selects elements of the left argument 
at the locations given by the right argument. 
A:=2 17 -3 4 
AH 1 2 
2 2 17 

$ 1 ABCRST 1 1 3 1 6 
CAT 

"f%" performs the Dyadic Scalar Operatorf 
from right to left on all the elements of 
the right argument. Thus, it treats +%\5 as 
if it were 1+2+3+4+5. 

To find the largest element in a vector, 
type "^VECTOR. 

To write a program (or function), the 
user must enter EMPL's Definition Mode. 

Type followed by the new name of the 
function. 

&PAS 

>_ 

The computer now prompts with a ">" indi¬ 
cating that it is in Definition Mode. 

Editing is now like a BASIC editor: Type a 
line to insert it in the function; type the 
line number alone to delete the line; type 
an old line over to replace the old one. 

Type to list the function; type "$" to 
renumber by a specified amount. 

For example, the user types in a program 
to print the first N rows of Pascal's 
triangle. 

>_10 P : = 1 

>_20 =: PRINT*N >=<nP := (0 ,P )+P ,0 
H5 PRINT: P 
)_$ 10 
> @ 


&PAS 
[ 10 ] P :=1 
[20] PRINT: P 

[30] =: PRINT*N>=*P: = (0,P)+P ,0 

_>_ 

Note that ":=" can be used inside any ex¬ 
pression. "PRINT:" is used as a label in 
line 20. Upon exiting Definition Mode, 

PRINT becomes a variable whose value is 

20 . 

"=:" (Control H)' is a branch to the line 
given by the expression which follows it. 
Branch to a null vector is no branch (com¬ 
puter proceeds to next line), and branch 
to an undefined line is the end of program. 
The user now types a to leave Defini¬ 
tion Mode. 

To execute a program, type its name. 

N :=4 
PAS 

1 


1 

1 



1 

2 

1 


1 

3 

3 

1 

1 

4 

6 

4 1 


Conditional branches are accomplished by 
the following: 

=:LINE* \TEST 

If the condition TEST is true, the computer 
will branch to LINE. Otherwise, the compu¬ 
ter will proceed to the next line. 

Strings inside double quotes may be used 
to print comments. 

"N=" ;N 
N-4 

Note that semicolons are used to separate 
items, and a semicolon at the end will 
suppress CRLF. 

is used to execute a string as 
if it had been typed in execution mode. 

STR : = 1 A:=5*\5' 

%: STR 
A 

5 10 15 20 25 

Specific elements of a vector may be 
assigned values. 

A:=\6 

A [3 4]:= 17 18 
A 

1 2 17 18 5 6 

When is assigned a value, the value 
is printed on the terminal. 

A:=5*@:=5 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 13 


169 




When "$" is assigned a value, the value is 
printed as a string on the terminal. 

A: = $ : = 'TESTING 1 
TESTING 

If is used as an operand in an expres¬ 
sion, the computer first requests input 
from the terminal. "$" enables string in¬ 
put to be used. (The input is taken as a 
1iteral.) 

&TEST 

[10] "WHAT IS YOUR NAME?"; 

[20] NAME:=$ 

[30] "HI," ;$NAME 

[40] "INPUT AN EXPRESSION" 

[50] EXPR:=@ 

[60] "THE ANSWER IS";EXPR 
& 

TEST 

WHAT IS YOUR NAME7RACHEL 
HI, RACHEL 
INPUT AN EXPRESSION 
@j_5*5 

THE ANSWER IS 25 

User defined monadic or dyadic functions 
are possible. Here is an example of a user 
defined monadic function to take the fac¬ 
torial of the right argument. 

&F:=FACT VL 
10 F:=*%\VL 

& 

"FACT" may now be used as any EMPL monadic 
operator can be used. 

FACT 3 

6 

When FACT 3 is typed, a function called 
FACT is searched for. When it is found, VL 
is set equal to 3 and the function is exe¬ 
cuted. Upon completion of the execution, 
the computer uses the variable specified 
to the left of the assignment operator 
as the result. 

Here is a user defined dyadic function. 

&RS:=SZ RH0 VTR 
[10] RS: =\0 

[20] =:20*\ (aRS: = RS,VTR)< SZ 
[30] RS:=RS[\ SZ 
& 

This function is used to restructure the 
vector on the right such that it has the 
length indicated on the left. 

4 RH0 5 2 3 
5 2 3 5 

$3 RH0 'ABCDEFG' 

ABC 

To reenter Definition mode of an old func¬ 


tion, just type its name. 

&RH0 

_>_ 

Parentheses are used to override the 
normal order of evaluation. 

(3-5)+7 
5 

The following commands may be used inside 
a program, or in Execution Mode. 

)CLEAR - Clear the workspace. 

)FNS - List the names of all functions 
in the workspace. 

)VARS - List the names of all variables 
in the workspace. 

)ST0P - Return to execution mode. 

)ERASE object - Erase the specified varia¬ 
ble or function. 

)SI - Display the State Indicator. 

)PUR - Clear the State Indicator. 

The State Indicator is the stack of the 
return addresses of all programs whose 
execution is pending. 

Suppose a program is written, PROG, which 
calls for the execution of another one, 

ASK: 

&PR0G 
[10] ASK 
[201 "OK" 


&ASK 

[10] HI THERE 
& 

PROG 

ASK[10]HI THERE 
ERROR 2810 

The computer prints the program (or func¬ 
tion) and line in which the error occurred. 
)SI 

ASK[-1] * 

PROG [20]a 
2210 FREE 

An error has occurred in line 10 of ASK. 
Since the execution of ASK hasn't been com¬ 
pleted, the computer still has the return 
address saved. (Line 20 of PROG) Now when¬ 
ever a =:0 instruction be typed, execution 
will continue at line 20 of PROG. 

The program with the "*" to the right of 
it is the current suspended program. All 


Page 14 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 April 1977 


170 



(branch) statements refer to this 
program. Line -1 indicates that it is cur¬ 
rently in execution mode. All programs 
with to the right of them are pending 
execution. The program to return to next 
is always on the top of the list. It is a 
good idea to clear the State indicator 
often to prevent excess garbage from tak¬ 
ing up memory. The State Indicator is auto¬ 
matically cleared when entering Definition 
Mode, and after ERROR 5097 (workspace full.) 

Here are some sample functions to illus¬ 
trate EMPL's use. 

(1) Generate n prime numbers: 

&P:=PR END 
[10] P:=1+T:=1 
[20] TEST: =:0*\END<=*P 
[301 ADD: =:ADD*\+%0=P.T:=T+2 
[40] P:=P ,T 
[50] =:TEST 
* & 

PR 10 

2 3 5 7 11 13 17 19 23 29 

1 + PR 3 

3 4_6 

(2~) Compress a vector: 

&ANS:=SLCT COMP VCTR 
[10] IDX: = 1, ANS:= \0 
[20] BK: ANS:=ANS,(VCTR[IDX)*\SLCT[IDX 
[30] =:BK*(IDX: = I DX+1 )< = -.VCTR 
& 

10110 C0MP\5 
1 3 4 

JT) Sort a group of numbers: 

(This function uses COMP) 

&0RD:=S0RT UNS 
[10] 0RD: = \0 
[20] LB: =:0*\&*UNS 
[30] WHICH:=UNS='%UNS 
[40] 0RD:=0RD,WHICH COMP UNS 
[50] UNS:=(&WHICH) COMP UNS 
[60] =: LB 
& 

SORT -21-102 
-2 -10 12 
14) Reverse avector: 

&RV:=REV VC 
[101 VC[(l+-VC)-\-VC 
& 

$REV 1 HI THERE' 

EREHT IH 

(5) Refise the left argument to the right 


argument. (They must both be single 
numbers.) 

&E:=BSE RAIS NUM 
[10] EX:=*%BSE*&&\NUM 
& 

2 RAIS 5 
32 


E M P L Language Summary 

Monadic 

Scalar Operators 

-Y 

Minus Y 

! Y 

The absolute value of Y 

&Y 

Not Y 

?Y 

Random from 1 to Y 

Monadic 

: Mixed Operators 

\Y 

Vector of consecutive integers 


from 1 to Y 

*Y 

The length of Y 

Dyadic 

Scalar Operators 

X+Y 

X plus Y; X or Y 

X-Y 

X minus Y 

X*Y 

X times Y;X and Y 

X/Y 

X divided by Y 

X 1 Y 

Minimum of X and Y 

X" Y 

Maximum of X and Y 

X.Y 

Remainder of Y/X 

X< Y 

X less than Y 

X< =Y 

X less than or equal to Y 

X >Y 

X greater than Y 

X> =Y 

X greater than or equal to Y 

X=Y 

X equal to Y 

X#Y 

X not equal to Y 

Dyadic 

Mixed Operators 

X.Y 

Y catenated to X 

X [Y 

Elements of X at locations Y 

Composite Operators 

f%Y 

The Operation f performed from 


right to left on all the elements 


of Y 

Special Operators and characters 

X:=Y 

Assign Y to X 

$X 

Print X as a string 

"TEXT" 

Print literal text 

%:X 

Execute a string 

= :X 

Branch to X 

VAR X 

Indexed variable assignment 

@ 

Numeric Input/Output 

$ 

String Input/Output 


April 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 15 


171 



'TEXT 1 String vector 

(X) Expression in parentheses 

Function Definitions 

&(function) Niladic function; no result 
&<result) :=(function)<rightvar> Monadic 
function with result 
&(result) :=<leftvar) (function) (rightvar) 
Dyadic function with result 


Definition Mode Commands 
@ List function 

$ Renumber 

& Return to execution mode 


EMPL Range = ±32,767 


Commands 
TCLEAR 
)FNS 
) VARS 
)PUR 

)ERASE o 
)SCN 
)SI 
)ST0P 


Clear Workspace 
Display function names 
Display variable names 
Clear State Indicator 
b Erase function of variable 
Clear screen 
Display State indicator 
Return to execution Mode 


Special Control characters 


Control 

B 

Backspace 

Control 

C 

Stop 

Control 

F 

Forward space 

Control 

H 

=: 

Control 

I 

: = 

Control 

N 

> = 

Control 

Y 

( = 


Error messages 

412 String is too large to execute 
885 Object already erased 
1082 Unknown operand type in expression 
1469 Length of vectors doesn't match 
2268 Illegal Operation in reduction 
2495 Variable not present in indexing 
2529 Length of index doesn't match length 
of value to be assigned 
2559 Index greater than length of variable 
2628 Unknown assignment operand type 
2690 Function not found 
2810 Variable or function not found 
3503 Backspace less than beginning of line 
buffer 

3521 Forward spacing greater than end of 
line buffer 

3542 Input over 72 characters 

3737 Bad syntax in function definition 

3827 Illegal command in definition mode 


Page 16 


MANUAL A VAILABLE FROM THE DISE REPOSITORY 
A COMPUTER SCIENCE HARDWARE LABORATORY MANUAL 

Professors B. Carey and M. Barber 

Electrical Engineering and Computer Science 
University of Connecticut 
Storrs, Connecticut 06268 
(203) 429-4816 

This manual presents a sequence of nine experiments involving 
the design, construction, and testing of digital hardware to be com¬ 
pleted in a fourteen week semester. Each experiment requires four 
hours of lab work per week. The laboratory is physically organized 
around a number of general purpose, digital, bread-boarding modules 
to permit a convenient structuring of experiments and the implemen¬ 
tation of problem solutions. The experiments consist of a logical 
sequence of problems which start with the design of combinational 
modules, progress to standard sequential functions such as shirt 
registers and binary counters, move on to multifunction modules, 
explore the transmission of information between and synchroni¬ 
zation of two digital networks, look at the design of an arithmetic 
function in a digital computer, and ends with the design and pro¬ 
gramming of a complete general purpose computer system. The 
experiments involve the reasonable range of SSI, MSI and LSI 
devices seen in the 7400 logic family and may directly concern 
themselves with other logic families if appropriate. 

HOW TO OBTAIN: A single copy will be provided without 
charge to any individual involved in teaching or in the development 
of digital systems education. Requests should be made on the 
letterhead stationery of the individual's organization and include 
the individual's title. Please send requests to: DISE REPOSITORY, 
School of Electrical Engineering, Purdue University, West Lafayette, 
IN 47907, 


MUG OFFERS MEDICINE FOR MUMPS 
1976 MUMPS Users’ Group Meeting is a Huge Success 

The fifth MUMPS Users' Group Meeting was held 9/29-10/1 in Madi¬ 
son, Wl. (MUMPS stands for Massachusetts (General Hospital) Utility 
Multi-Programming Systems. It is a FOCAL-like language with exten¬ 
sive file-handling facilities for tree-structured files as a major feature. 
Notable aspects from the hobbyist viewpoint are (1) it's in the public 
domain, and (2) it runs on a PDP-11. It was originally developed for use 
in hospital and biomedical applications.—Editor] The meeting was 
packed with exciting presentations and live demonstrations of interac¬ 
tive applications developed using the MUMPS computer language. 
Among the topics of special interest were voice-computer interfaces, 
medical information systems, radiology systems, patient counseling 
by computer, patient appointment systems, computer-aided instruction, 
on-line cataloging for the National Library of Medicine, and the forma¬ 
tion of the MUMPS Users' Group Application Library to facilitate the 
transfer of MUMPS applications. 

An introductory tutorial on programming in MUMPS was given, and 
was attended by administrators and physicians as well as programmers. 

A tutorial and a workship on advanced MUMPS techniques were held 
for experienced MUMPS programmers. There were other workshops 
on such topics as computer-aided instruction and MUMPS application 
transfer. 

Seven vendors of MUMPS applications and implementations par¬ 
ticipated in a vendors' forum. Two of the vendors that exhibited at the 
Meeting (namely, Artronix, Inc. of St. Louis, and Digital Equipment 
Corporation of Maynard) announced their completion of implementa¬ 
tions of the NBS-defined Standard MUMPS which is now seeking ap¬ 
proval as an ANSI Standard. 

There are now about 400 institutions around the world that use 
MUMPS, and this total is growing by about 80% per year. A variety of 
computers are used, including DEC'S PDP-11, PDP-15 and PDP-10, 

Data General's Eclipse and Nova, Artronix' PC-12 and PC-16, Bur¬ 
roughs' B6700, and IBM's System/360 or System/370. For informa¬ 
tion on MUMPS, future MUG meetings, and MUMPS applications, con¬ 
tact the MUG Executive Secretary, Dr. Joan Zimmerman, Biomedical 
Computer Laboratory, 700 S. Euclid Ave., St. Louis, MO 63110, 

(314) 454-3364. 


4058 Illegal redefinition of monadic func¬ 
tion header 

4083 Illegal redefinition of dyadic func¬ 
tion header 
5097 Workspace full 
5302 Division by zero 


172 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


GUIDE TO 8080 PILOT, VERSION 1.1 


Copyright© 1977 by John A. Starkweather, Ph.D. 

February, 1977 

INTRODUCTION 

PILOT is a programming system for controlling interactive 
conversation. PILOT stands for Programmed Inquiry, Learning 
or Teaching. It has most commonly been used as an author 
language for Computer-Assisted Instruction. It was first de¬ 
veloped at the University of California in San Francisco and 
has been implemented on a variety of large and small com¬ 
puters. This guide provides a description and operating pro¬ 
cedures for a version of PILOT that will run on computers 
using the Intel 8080 microprocessor. It is an interpreter writ¬ 
ten in assembly language that requires less than 4k bytes of 
memory for the interpreter code. Total memory requirements 
depend on the space required for PILOT program text and will 
often be no more than 8k bytes. 

PILOT is designed to be simple in its syntax so that those 
without prior computer experience can easily learn to control 
its features. Dialogue programs can be rapidly constructed and 
tested. 


The program mentioned in this article was developed via a 
contract from the National Library of Medicine, Lister Hill 
Center, Bethesda, Maryland. 


The source code for 8080 PILOT, Version 1.1 will be pub¬ 
lished in the May issue of DDJ. —Ed. 


Requests for PILOT-8080 in machine-readable form should 
be directed to: 

PI LOT-8080 

Computer Technology Branch 

Lister Hill Center for Biomedical 

Communication 

National Library of Medicine 

8600 Rockville Pike 

Bethesda MD 20014 

(301)496-1647 


Now that you know about PILOT, it is a reasonable idea 
that you may want some programs in PILOT, who else is using 
it, etcetera. In fact, the sort of services provided by the 

PILOT INFORMATION EXCHANGE 

which maintains a library of materials in PILOT, source code 
in several languages, and a membership list with a brief note as 
to who is doing what.. . 

So, get in touch with: 

Gregory Yob 
PO Box 354 
Palo Alto CA 94301 

Paper tapes of the 8080 PILOT will be available shortly .. ., 
the details are being worked out now. 

If you have Tarbell or Cutts, sufficiently loud and repeated 
requests will motivate availability in this medium as well. 


O* 

O 

i—l 

oo 

< 

tXl 

X 

o 


•H U C T1 t. 0) «l 


H 00 
O <C 


r-l C O 0- X 


J ffi C ID H 
X H H M G 

Q- W ro L < o 

ID O Oi 
X, X U) 

O £ 0) ID (D C 

to 


at c 

Q. b0 *H 
ta <*-. X X C X 


co t»o a> 
x ro to 


I XJ 

I c 
(0 
• -C 
ct 

X 0) 
<0 -C 


X C Q. 0t 


3 X X -H 


ID O N - 


at *o *o o 

E C L ID 
E ro O X 


ID -rl h O X 


a. - 

(O to 


x a. to x 


X a. -h -h c 


x: c o x 


- to x: E 
bo at x *h 


X o ~ —3 

x> o. z 
•h x 
(0 3 a; 
w ah 

O VC 


GO 0) , 

o -u 

a, x ro ■ 


o x) at 

X. jO 


C X X E 


(OX ~ X O O X (0 

•h<l> «• id id p a o a*j 

C _J 3 3 10 X E CD 

4-><dcl.xocoqj c *-«ox: 

•-I bO X 4-> X u 0, o 4 -> 


>» 

a> 3 xi 

x -a o E- 

x <o x x o 

3 X _J 

W a) X ID H H 

a -H o 3 (Q CL, 

at > c 

0t 0t Ct T3 O X-. 

JtL'HIOID'HON 
b0 tH H +J I—I 


T) ID O TD O 10 D 

C £t X E—' C 3 C C 

CO O (0 X O 0t 

C <D J X 4-> -H X 

>i (D X I—I 10 CO X 

(0OXCLCCX3 

ca o *h at ct 

0t X C *H > C 

•H *H » X >> O 

GO T3 (0 C ID O 

C X X at X <0 E 

•Hcac0X3EOc0 
CO X dJ C CL CO 

to x x at e x x 

at at to o o x x 

Ct a> X at Ct U. 3 -H 

O X C X X 3 

X X *H Q. X » 

CL Ct3 O • - bO ID 

*o >» at CO X C bO 

UlDl,XlOIDID'HlD 

o at ro -o bu x e 3 

XEOCCOXEbO 
Tt X X 3 CO (0 C 

X >, X ^ bo E L (D 

•H r-1 CL 10 C bO f—l 
2* X "H X TO X O 

CTO ID X rH 

to at x c cl ro 

•H -H SZ c x at co x 

roxatotoatxa) 
X-H-HXOOOOC 
X. 3 C Q. Q. T3 at 

(0 X O X X bO 

<D30tO>»DX-H 
^ CO C H Q. (D E at 

co o at at x rH 

EEatb0>xxro-O 
<o E to x ro ca 

E-X03XX ~ 3 x 
OUJCObOlDOtlflOH 

-J o c x c at x ro 

HX>,(DIDajIOH> 
cl ax h x uj 3 id ca 


U* 

x 

UJ 

C/3 

CC 

3> 

O 

>H 


>-< 

CC 

E- 


E- 

o 

X 

X X 
CL X 


C - X 3 

o a c to 

•h at x o co 

x by z: >» 

c ia ia h a ca 

at x x o at 3 

4-* at 3 x x » 
x a o h co ex. 

•h o ct a. -h at o 


x c x x 

3 x at x. co >, 

C O E >» X 

at <a to ta to at 

x xcx X 

at bo o bo at x 

x c x x o jc ro 

q. x at x xx > 

E E to ta a. 

o E 3 x x ca 

ct ca at x 4-> 

x at cl co -h c 

at bo x o at 3 -h 

> o H x 

•h x x a a 

to cx ca at at at 

• 3 x x to 

o E— *- X X 3 X 

x o • ct x at 

X T- <a bO X X 

co h c x at 

x cl c at x x x 

cl o x to to at 

E X X O 3 X 

at 3 to »-i "o at 

X o X CL >, X 

x x at x x -a 
ca ca >• at c c • 

to ta ta E 

^ c - o c ct ta 

ta o o x o xt x 

3 H CO X tO b0 

CXO ~ X X c o 
co ca co x ct x o x 

ee i at 3 xj x a. 

X E- > X C X 

toooatxatctto 

■h x, _j 3 w a. c -h 

XCHHOCCL3X 
E-* •H CL X H <t X, 4_> 


E— 

O 


CL 

O 


CC 

O 

o 

CC 

CL 


be at 
c x 


o 

o 


X CO (14 

co o —i at 

x at co to c 

c x x c x 

at x at o x. 

E a. at at 

Ot X T3 

x ca ca 

co x at ~ • 
x 3 x x c c 

co x o c o 

L Tl O ,—I X 

X- O 3 Ox 

O COO 

X X O C 

CO O O ~i CC 3 

at x n x 

X X X o >« 

X CL at 3 -C CO 

at x x x 

CO X C x T3 X 

o x co a- 

to CO C 3 CO 

v c x o a; 

X T3 X —« c 

O C —( X 

a x «a: o e 

co at Or xx 

x X T3 at 

to co x * co X 

x » o a x at 

to >i x at -a 

c x c ca x 

o i x o x -o 

o cl x at c 

0) o NH ID 

E X T3 It 

ca to j* at at 

x x x a. 

bo co to to o >» 

O 3 Ex 

x at fc x 

CL > to X X 

XX o c 

e- be at to at 

o x c at e 

X 3 h C O 

Xt O CL X Ox 

cl x e x ta 

x o x x 

■*3 0 CO O CO 


at 

x x 
ca to at 
x x 
x at x 
a> 

co x at 
c x x 
o x to 
x x 

x - X 

O 0 t to 

3 CO C 
x at x 

X X £ 

co 4 ’ at 
c u 

X O-i 

O O •• 
= x E 
at ca 

x • a x 

G k— Clt bt 

O O CO o 

= X 3 X 

*H Ou 

a; a. at 
C X E— 
XX. O 

X. O C -J 
at ca x 
•o co o cl 
c 

to o T3 at 
at x c x 
■a co to a 
ox E 

o at - x 

> X CO 

x c 
at x ta ro 

XXX 

x ro x x 

at o o 

x c CL 

x e be 
at x c 

r-l X X 

be 3 4J x 
c o to x 
X rj o X 
'/) O E 3 


z 

O 

E- 

C'- U 

E-< 3) 

O CJ • 

X O 3 

x E O 

LL aj t-r 

3) Z 

E-* E H E 

3) E- O 

O CO b. 

0G - x 

■* E- X c/3 

X E— x 
^ O 

O X CL z 

z ac X O 

US X 

* 1/1 h 

>-• a- u 

Q W Z 3 

•* >-* C Q 

UJ o o 

CC ~ CC. 

-J UJ 33 E— 

■E CC O Z 

3D X X 

=3 CO 

O Z co 

>-. - UJ x 

CO X X 
O UJ t- f- 

Q 

.. z 

l- < z: E- H 


X 

at 


x c 
x ro 

0 t 

X X S 
CL X 

at 0 / o 
Q. at x 
>, O (0 

x ro e 

S £ £ 


XXX 

o o o 

.. <X, X. C-. 

at 

.. 

ro E-* c zc. 

to 

at 

-o 

o 

o 


at 

at 

x 

JC 

X 


at 


E- 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 17 


173 





X Cm 

Q. X 

C 0) 

0> CO 

X CO X 

X I X 

co < co 

CO >» 

X X XI 
CO CO 73 

(0 W 0) •• 

X X 3 Z 
CO O 

II H H - 
SZ X L. 

X 0) CO 0) 

x: c •• 

c x oo c z 

O H (O H 

SZ E 
T3 X Cm Cm 

C X X 0) O 
0 3 0).* 

CL 10 X E 

H CO *J H L 

T3 C ’H O 

L- C X 

c at >, x 

0) X £3 -o 

.c x c 

X CO •• CO 

a x x: 

X •• X 

H+J X Q 
■H C » H O 

3 at a> sz 

E CO ^ CO 

c at c o 

GXO CO 

■H CO Q. E 
P P «0 L (0 

CO W 0) O CO 

L I t- O-. 

a 2 : -o 

cl x -a at 

O SZ C C 3 

O 0) CO O 
x e x: X 
* ffl 4) H 

Ot E X L. CO 

T> CO O 

o o x .c co 

OX CO CO -H 


c o o at 

o at o x: 

0.0 co x 

3 CO lit 

r t SZ O 0-. 

rl |J o 

CO 

c c at 73 at 

o o L. 01 3 

X *H O X rH 


a> i x 

E o a. 

a e 


X T3 
(0 4) 4) 

X X ■ 

at o x 
x c 

bflX . 


CO at 
at jo 


•h o at o 


at a at 

X X) 3 


o x c co a; 

at to 
at 

■o x c 
co co O 
BOX. 

•H X 

at o<j o 
X o 3 


f-c co X O 
X X > X at 


, O X 

3 


X 01 CO X 

at x • 

E x> 


E 

at at 


at at 
co co 


CO X CO X H S3 3 

rH O C X co X 


CO 

o 

C X 
CO X . 

o at • 

E 

X X 


E at 
at e 


x x 

CO X 


>, 

co at 


E x x, 

at <o co 


O X X 
X C -H 


at at c 
co x o 

3 an 

at at -h 

XXX) 


3 
O 

at 

p (0 id at (0 o x 
at at 


co c co co x 


o x at -h at x 
-j at c x x x 

x 3 at x at at x 

CX rH X E 0- rH 
co CO C 3 at -H 
<1 > Q. 1-* C X 3 


o 

Cl H x H 
E X 


at 


c h 


xh ato 
<0 X X c 
x <0 co o 
co > ex at 


w 

3 


H 


00 

at • 
x ^ 
<0 2 
O 

X X 

•a o 
c 


X 

at 

c - 
x H 


CO X 

c 

a, at 

O E 

at 

to x 
C CO 
X X 
C CO 
c 

X X 
00 X 
at at 

X X 

at co 

x 

X X. 

O 

X 

co a> 
co 

3 

w x 

at 

c 3 
o c 
x x 
o x 
o c 
o 

<c at 


Q X 

uj ex 

X CQ 


CO UJ 
x m 
Q 

O 
UJ co 
CQ J 


-J -J 
X J 
3 X 
3 
H 

X CO 
UJ X 
8- X 
8 - 
CO 

X Q 
X 2 
E- < 


tn ox 

x x co x 

at at x x 

at x x co 3 

X (0 h 

X J >*00 

CO c 

O • E X 

x at • tc x 

X CO C X (0 

s- x co at c 

o o c x x x 

x x at x co E 

l. e x l. 

ex x at co at 

ex «=c x 

x at co x 

at e x x 

x at oo x • at 

co x 3 co c 

H (O ^ L. X 

x •• -o at x 

(0 CO 33 C X 

W a; o (0 . 

at at <o c 

■o x cu -o t. c t. 

3 X CO 3 CO x 3 

X 33 (0 X X 

o co o x at 

C 3 L. C L. 

x o o * c at 

x w at e at 

x x x at oo 

10 <0 •• JC X (0 

e -3 co a- at x 

x W X o l. 

x o l. x l. 

c x cl, at Ex co 

at x 2 : x 3 c o 

E 3 33 CO E O 

at *3 co x at 

x at x at c 

<0 ■o >» c <o x x 

x o x co e x x 

co o 

•O X (0 <0 <M 

t-* c at x co o 

OOOX4) 

-J X C 3 > 73 n 

x x at <o at c 

ou co t. c x co at 

L 4) X 3 

x at a-, bo x at 

c ex at at to at x 

<c o t* x e x x 



3 


at 

l. at 

CO O 

c 

at at 
L. 3 
at cr 
x at 
x co 


Cm c 


"U 

at x at 
o co o 
<o t- c 
E x at 
a_ l. 
co at 
x at a_ 
x at 

XXL. 

c 

X X CO 
CO X X 

x c 
ex o x 
E at 
o xx 

r J 3 ID 
X X 
O 

c - at 
to x 
~ x x 
E at 
at x c 
x co at 
to x x 
X 3 
to at 

X T3 

co to c 

X o 3 
X X o 
x x a* 
ex 

c 3 at 
x -o x 


UJ 

►J 

a. 

< 

X 

UJ 


X 

X 


I r-J a. 

» uj co 

I CQ X 
I «C Q 
I J •• 
I * 8- 


^ » 
at i 

> i 

o » 

x i 

CO I 

I 

at i 
x i 

X » 
I 

o » 

X I 

• 

CL I 

E I 
3 I 

•n I 

i 

to i 
at i 
to i 

3 I 
(0 I 

"J » 


CO 

W 

J 

CQ 


as 

«c 


o 

2 


X 

CO 


n 

CL. C C • 

o at <o x c 

x .*-> oo e 

x <o co c at 3 

co x x x x 

l. a- at 

at O X c 4) L 

x at o e 

o > at x to at 

at to o c oo 

^ x c o <o 

•• l. o at x 

•x x ex at x e 

waiwxcoL. 
i. at x x co 

E-* L. ID O 

a. -u l. x 

u c at at l. at 

c_> co x x <o c 

u X Oh > X 

<00 co X 

c at oo 
cx>ccv- 
co l. <o at x o 

X CO X L. 

O CO X X T3 

X X X CO C 

l. x c at 

at at x 3 < 

oo x 3 at 

co ms: 

O (0 H X • X 

ex C O X 

to <0 j at c £ 

atxxEat^ 
L. O a- co B X 

c at 3 

at co x 

sz •atcot- 

X CO E X X o 

CO CO X CO 

00 t. CO 

3 T3 00 X * C 

o at o l. •• co 

X > L. <0 < X 

x co a. > w sz 

CO CO 

at oo 8-* to 

x 4i £ c a. 

O X X X CQ X 

X L. O X 

X o C X o x 

CX. X X 10 < 3 


X 

c 
>» at 
C E 

to at 

x 
C (0 
X X 
CO 
CO 

L. ^ 
(0 •• 
at 2 
a. w 
a 

to o 
2 
at 

E L. 
(0 O 

c 


at ^ 

x >- 

to 

x 

L. CO 
CO U 
> >* 

00 - 
C 

X •• 
L. H 

X ■—' 

to 

UJ 

at a. 
x x 

x x 

Cm CO 
X 

«M 

- o 

c 

o c 
o 

L. X 
at x 
X L. 

(0 o 
-J ex 


L. 

o x 
c x 
L. T3 at e X 

Cl' > CO 3 

X X UJ 

at a oo x s <t 

C > E s 

at x at l, 33 

x x x co at co o • 

3 oxx 3 "O X X 

at (0 X CO Lr 3 * 

x 'm X C O cr X 2 

to x x (0 3 C co •• O 

x at co a- u. to to x 

x co x at at at3 o- x 

4) x y x X CO O O X U 

£X CO x X W O X O 33 

CO 0/ 3 x X 33 

L. O X 2 X C0Z CO O x O 

at x x < x CO <m a. as 

C o XXX X 

c x >, ro x o co x z 

XX C 3 x *j U C fC 3) X 

X O C C 33 O 

XGtCOXOOOCOOt CQ CO 

•a co co o c eo x c x 

C30tZT3 CT. 3 X 

O to 0 ) U3 at X X x 3: X 

oooxaozxx o 

£ 3 X >» -3 X O 00 2 Q. 

ateo£Xx xx ^ x 

at -a cq co co e ^ 

e o at x at xe x co 

CO O SZ X x X X C C3 

x a» 3 x at o < z 

2 L. X X o S X X UJ <C 

ate xx xx os cj 
•oxoatxcox to j 

cxax3 X L-t l. «t x 
to o 3 x c at x at o 

C £ ox CL 3) * X 

X to to - • x >*o oo 

c tn z x at x xqz 

C0 OX 30 COX CX UJ 

L.XT3XX0IXOO O UJ X 

at CXX3 Q X x 

X O 41 OCT T30t 3) 

x at a 33 • at cj co 

at o 4t • q at s ex c 

xcr)XOXUJ>,a) X 

at Ct os x os x 3 

at ex x x x x cr 

■ccLOtozocoatat 
X to C E x x £ £3 CO 


CO 

UJ 

CO 

2 

o 

a. 

CO 

UJ 

X 


u. 

o 

CO 

X 

CO 

X 


<s 



CO 

1 >* 

at CO £5 -O 

at c l. 
L. O - O 

*«m ex at 3 
<0 > 

?M>*atOL. 
O -I L. JO O 

1 CO 

X > L. CO 

c x at at T3 

at x m —. e 

E CO 3 Ci. O 

3l — E 3 

C 4 *• ID 

—i L. C X O 

i at x 

>33 
i c c at x 

3-' X Ct 

X X X 0t 

at c x a 

sz c c CO 

X X t£ X 

CO L. 
3 £ Ct O O 

OX O 0t Cm 

x X x 

x CO CO CO 

co E ct at 

co • x co 

O L. L. -O C 

x t£ at c o 

coxo. 
T3 L. 3 to 

a. o. co at 

C O co L. 


c • 

X 00 

c 

cr x 
•o c 
L. CO 

o at 

3 E 

at co 

L. * 

O Or 
E Ct 
c 

L. Ct 
O x 


a 


- sz 


X c^ 


CO 

c c 
x <b 


X s: T 3 +j 

x co x ~ at l. a- 

CO C O £ C O 

4t O >1 4) X 

rz — 1 x: co 

x co bo Hi Cl 

CO to Ot X c c 

x co co x x at 

L. C CX £ • X 

8- It O E Ct co C 

0>aol.L4- 

J C (0 o 10 4 CO 

x o at o at x 

X 'J L (8 it) V, ID 


•o 

c 

CO 

at • 

£ 3 10 CO 

o c at 

o x o o x 

X X X X X 

~ to X Q. 

co s: co to at 

T3 co c at >* L. 

t. x co 3 at 

o 3 o ate 4t 

3 J3 

at co at x 
at 3 l. a; l. 

CO O X CO Cm 

o x s: c o 

£ (0 x Ct £ 

X £ 3 CO O tJL' 

x <o a. x c 

at t. ^ x 

c co e ex 3 x 

x ex CO -O 

Cm 3 L. L. CO C 

at o tu x x <o 

o t- o o c j3 

bu L. £ I 

O a- x E -o 

X o o c 

L. O — CO 

■a o • x at 

at 3 l. c 

co at co t? o 

3 C 3 at L. X 

O CO X O x 

CO C X 3 X 

X - CO ex c 

CO at Cm bO 

X TJ C L- O O 

C L. (0 O 

at o x x at 

E 3 C co co L. 

at x c x 

X Cm o x at 

to o -a x x 

x at x co co 

CO CO N co X 

CXOTQ.L. 
• • O C L. O CL 

z x bo at x o 

x o > at t. 

ot t o c > a 

sz o at o a> ex 

h a l o tj (0 


CO 

8— 

2 

UJ 

s; 

UJ 

X 

< 

X 

CO 

X 

o 


CQ 


■a 

c x at 

bC ID l. £ 

C (0X0 

X S o. 0) 

CO Q. C ^ 

3 E L. X L. 

3 Ot CO 

- -X JC X E 

co * x at 
X O £> co 

C L. C co 
at o co x co 

E Cm Ot 

at e co m 

x co o 3 

ID O L >i ID 

X C Cm SZ o 

LO <0 

X w O "O 

£ iO 3 4) C 

Or L ^ ID 

L. -3 X L. 

C X 10 £ 

O CEO) 

£ • O CO 

as o co 3 

'm X £ 

o -a o c 
c x at l. 

co co E o 

at e at <m 

CU «.(0x 

>.U L ID n 

X box O 

~ O CO C 

at uj l. co 

L. CX Cm X 

O ~ O CO 

E 3 X 

o at zd 

at * j ct 

> *3 x c 
x CQ at • 

Cm CO 3 X 

l. at cr c 

at at sz at at 

e x x co E 

co x at 

at co at x 

at x at £ <a 

e co x ♦-* 

at at 3 co 

£ £ (0 4- I 

X X *-J O *3 


^ bo 

at C Cm 

at c x x o 

.c x c c 

X X at (0 T3 

3 e at c 

e o at e at 

x l. x 

jO CO - O' 

X 3 X X SZ 

C CO CO C X 

x i at 

O ID 3 E L 

ex at o 

r 4t x 

X 41 £ ID at 

CO X X X C 

si X co x 

X co C I X 

1 x UJ 3 

X '*■' O 

CO T3 41 L. 

co at sz Si 

£ +-> E X 3 

O C ID CO 

at at c 

co e • co 

3 at co x 

£ X X C Cm 

co at o 

at x £ e 

£ 51 'J at o 

•H X C 

O 4. £ ID 4t 

X O 3 x 

co at 

co ex x i xz ‘ 

x 3 at uj x e 

C O SZ CO 

at L. CO C CO L. 

E «x (0 41 DO 

Ot x O 

x at co sz co l. 

CO SZ X o ex 

X X SZ X X 

CO X 3 73 0) 

X C L. 

Cm • 3 CO X X 

o e -D X 

CO <0 c - c 

ex l. c at £ at 

3 Ut X 3 

o o bo -a c at 

L L. 4t C 41 £ 

bf> CX S3 (0 £ X 


at . . 

£ O (0 

CO XXX 

x at co c 

C £ C < 4) 

CO X X CQ E 

co x at 

C CO OX CO X 

X c X C CO (0 

co o at x 

X O X E SZ co 

c c at o 

o o at x 3 x 

O X E co CO C 

l at x at 
x at x co a> E 

C E co bo C 

4t 3 x at (i tn) 

E C CO X 3 x 

at » at u. « 

X Cm o x c co 

CO O Q. ID CD 

x at e x 

<0 C £ O C 

I OX O X 

ox c 

X Cm CO -- TJ 

co to o u a> 

X CO E x 

T3 3 C C <0 x 

c a. o x e e 

CO EX CO bo X 

o X X O X 

£ O L. C L. 

a> o o ex co 

X L. O. O X 

3 0 X 

ex Cm at c co E 

E £0 1 - 4 ) 
O bflh H at x 

O C O C 10 

£ x o at >» 

X • bO CO 

l. x to at 

O ID 41 £ ID P 

Cm O X X C 

£3 Cm at 

CO C CO Cm O CO 

ooxo at 

C x L. XL. 

co x co x co ex 

X (0 > £ x 

co x bo c at 

O L. X >* SZ 

O C O t- 10 8- 


c 

X CO 
X o 

at 

x sz 

o • 

10 X L. 

c sz o 

X 3 .C 
CO X 
X X 3 
C 3 <0 
O Q) 
o E 
C CO 
X O L- 

c x bo 
at p o 
E co L. 
at l. ex 
x at 
co ex at 
X O JC 
<0 X 

i e 

cr re O 
L. X 
C bO 

«x o c 

L. O 
CX X 
• X 
£ X <0 
UC O E 
l. at t. 

(0 «M O 
E Cm Cm 

at co c 

L. X 
£ X 

o m 

L C ID 

o 

<m X X 
X 3 
CO X Cm 

-o 3 ex 
c x 
id £ at 
♦J o sz 

10 X 

.c at 
er 3 jo 


at ct 

.C j£ 
X X 

X o 


ex 

ex 



3 3 

c 


O X 

O C 

at 

at e 

l. at 

2 CO x 

O cc 

x 2 X 

X co 

=3 73 

o c >» 

UJ C 3 

X CO 

UJ >4 

Cm 

_J co o 

< L. 

2 0/ C 

O x O 

X XX 

x at x 



z at at 

O sz CX 

O X o 


Page 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


174 



o 

X 
H E- 

rH O 

H J 
3 n 
a. 
c 

u c 

3 U 
x a 

0 ) X 

u a> 

<d 

be -a 
to c 

•H (TJ 

u 

u c 
(0 o 
y h 


CO CO 

>» y 

X X 
O 

>» 

H E 
<U (0 
X fc. 

CO bO 
H O 
TJ Ih 
O Cl * 
E X 

E X C 
H C H 

y o 
ota 
<U L. 

3 3 bO 

o o c 

H H 

h y x 
O X U 
<M *J CO 
X 

N *J W 

I U 
H O CO 

X X 4-1 

U CO -H 


CO 

z 

O 


t- 

x 


cc 

u 

CO 

uj 

Q 

E- 

Z 

uj 

2 

uj 

e- 

«« 

t- 

CO 

t- 

o 


x 


0 ) 

X 

X • 

y <0 

l. £ «J 

E - * O £-< rH 

O X X 
-J E 

M £-« • CO 

X O X 
-J «- 4 ) 
0 ) t—I • 

x: x *- tj 

x c 

c . V.' C0 
X 

o -* - 
v: v. c 
X >■: t- O 
y -h y h 

<0 CO > X 

a> u y 
0 / - c 

to > O 3 

0 ) CO x 

xi to o 

H H QD - 

C. X IX 

y *j h co 
to O X 
y C _J C 
•a h h >» 
CL, to 

c -a 

o y y 
H "C U TJ 
X H O 3 
O > CO rH 

<d o to y 
to u a> c 

X y H 

bo o 
c to u to 
H c x c 

3 0 0 0 
O H U H 
rH X O X 
>4 rH y H Qi 

0C O 3 E H 

<C XU U 

2 : x o y 

2 ; a) to co to 

=> x coo 

CO t-« -H <X) -O 


t- to 

O X 

t- c 

u a; 

O E rH 

a; co 

>* x E 

c co u 

co P o 

to X 

Cm » 

one c 

■HO H 

C rH H 
D (0 JJ C 

> > CO O 

H C U H 

bC H Qj 4-1 

o. a 

to >, O H 

■H £ £. 

u y 

C TJ H tO 

O 0 ) <U y 

•h 4 _) x: tj 

(0 D 

CL C. X 

•H 1 ) o CO 

U C X X 

y 0 ) c 

to bo <u >, 

O CO CO 

tj y c 

£ O CO 

CO CL 

X to to 

~ x y x 

t) bo L c 

X H 0 ) 

<0 E S- to 

h y y 

£. X CO U 

a co 3 a. 

o x: 

t< +J o <c 

CL H • 

a to h x c 

to <U CO HO 

b 0 > TJ H 

( 1 ) CO C C 4 -> 

L W H <U CO 

CD CO XX 

X <D C. CL O 

3 E O <t C 


TJ 

U 

o 

3 

>» 

0 ) 

-* 

co 


U 

0 ) 

TJ 

C. 

o 


be 

c 

H 

3 

O 


a> 

-C 

4 -> 


z 

T 3 

C 

CO 


to co 

a> a) 

x> x> 

3 3 


•o 

<v 

XJ 

H 

c. 

y 

to 

<D 

T 3 


CD 

CO 


y y 

c c 

H H 

to w w CxJ 

C E- t- ^ 

O CL- X 3 > CC 

H UJ UJ O Q- a. c 

♦JQ.UHZUQIZ 
y>-uocozow 

JH<5:T3UUK 

L. 

*-> 

co 

C 


.. 

LH<Z^3WUK 

O 

y 

E- 

o 


Cl 


10 4 -> 

coy 
y o t. y -o 

h h o u e y 

be x> to y 3 e 

c co co o o c. 

h c 4 -> «« >» x> y 

to h c y o h 


> y £* 
CO H 3 
I TJ Q. 

• CEO 
CO H H 


E y 

y O tj tj 

to c co c 


y tj 
c y 


i C 3 

^ y y o 
l. c y 

> co y be 

. co 

j n c u 
C H C 
) o TJ (0 
: h > 
)*->>, TJ 

i o c to 

» 3 CO 

> c e y 

J 4 -> c 
. co c o 

> c o <— 

) H Cl, y 

: c 

t y c y 
to o x: 

> y H 4 -> 

. x: h 

> F-* to oo 

) £- H 

y 

> » a -*-> 

: co o h 

> y 

TJ TJ 

> O C * 

i y ton 
: o 

> C. X _J 

y co h 

i *j l> a. 

* 4 -> C 

> y 

: h to o 


•*-> y bo y y 

H X) C 0 C C 

3 3 co y 

o be c 
y ■*-> c to y 

rH to y C-. 

XJ B) H TJ Cm 

H l_ OH 

to y y y tj 

CO £ £ 

o j-> h s, y 
ex o y x: 


(0 £ D D 

co to y x: 

H CO H 00 

H 3 C I H 

CO O H 3 

H 3 H H bO 

C O tO H C 

y >, C 3 H 

♦-» y e -*-> 

m <m D 10 

E H X -H 

y oo tj 


E to 


TJ 


to c c y o 

c o y y ■*-> 

b0H£ C 
O 4 -> 3 CO 


x: x> .* y 3 

y to c y >> 

3 c o ex y 

E H 3 C 0 Jb£ 


tO CzJ 
C J 


C H 

y j 

H 

X E- 
y 3 

CL. 
TJ Z 
£. H 
O 

3 

>» •• 
y x 
JjC «< 

2 : 

o z 

OO CH 


I to <c 
: uj cc 
: —J U 

: cq o 

<c ex 

! H Q- 

I ex 

<C {-« 

> z 

UJ 
O OC 
z ex 

►H ZD 

cc o 
E- 

CO >H 
«*; 
UJ lJ 
CO CL. 
<C 00 
CX H 
UJ Q 


2 : 

2 < 
< ex 

(X o I 

o o 

2 O ex 
< ex ex 
(X ex 

o t- 
O E-* Z 
ex z UJ 
ex uj ex 
ex ex 

3 K D 
U 3 O 

z o 

E- 

QUZ 
«x 5 * H 
O < (X 

J to X 


o 

o 

ex e-h 
ex o 

-j 

h-> *H 

z ex 
UJ 

ex 2 
ex o 
zd ex 
u u. 


Q X 
UJ UJ 


^ Q UJ Z H •• 
» > H H U 

UJ CL O < (X Q X 

z q j to ex uj ea 


i 

H 

O 













t 



• 

















1 


m i 


c 







TJ 




1 



1 


o 

<0 




O 










1 


C\J 1 


y 


bO 





y 




f 



1 


X 

y 

Cl. 

y 


z 

y 


• 







1 


I 


> 


C 





4 -> 




1 



Z 1 



E 

O 

X 



X 

y 

y 



H 




1 


CO 1 


H 


H 





H 




t 

TJ 


3 » 


TJ 

C 0 




t- 


3 

3 



to 





TJ 

►H I 


ex 


C 





E 

4 -> 



1 

y 


o » 


y 

c 

X 

>» 

y 

o 

>. 

•—1 

rH 



c 




1 c 

y 

1 




4-1 





H 

CO 




u 

E- 

Z 1 


X 


00 

co 

H 


to 

CO 

(0 



o 

X 



• o 

L. 

UJ 1 


y 


oo 

y 




H 




» c 

y 

cc 

X 1 


H 

y 

H 

E 

Q 

- 

E 

> 

> 



H 

c 



1 H 

y 

3 1 


to 



X 


c 



TJ 



1 o 

X 

UJ 

Z 1 


E 

rH 

(0 


y 







X 

y 



1 X 

X 

lJ 1 


c 


co 

4-1 


y 

y 

CO 

y 



1 H 

c 

CQ 

3 1 


H 

X 

c 

CO 

E 


>> 

3 

3 



H 

E 

• 


I 3 

c 

< | 


o 




• 

4 -> 

X 

H 

3 



1 X 

y 

o 

V» 1 


H 

CO 

o 

y 

3 

>H 

y 

y 

y 

<0 


TJ 

y 

TJ 


i y 

y 

> » 


ex 


C 

c 

TJ 


E- 


O 



1 3 


cc 

1 



H 

y 

L-t 

C 

'—r 

X 

c 

c 

H 


C 

X 

y 


i y 


1 


co 


o 

y 

y 

Cl. 


y 

rH 



i o 

s 


eo » 


y 

U 


X 



E- 





o 

(0 

co 


1 X 

s 

UJ 1 


y 


Cl- 

X 

>» 

O 


H 

«H 



• y 

E-* 

- 

•H 1 


t- 

C 0 

TJ 

CO 

CO 

CO 


CO 

CO 



o 

X 

3 


» y 

m 

X » 


c 



4 -> 

CO 


• 

X 

CO 



1 X 

cc 

O 

» 


fO 

> 

C 

H 


UJ 




o 



CO 



i —- 

eg 

E- 1 




TJ 


rH 

E 

C 

CO 




i y 

UJ 

X 

CO 1 




CO 

t- 

3 

>4 

• 

UJ 

Cl. 

lJ 


CO 

t 

X 


i 

e 

1 


*-> 


y 

•* 

X 

3 

b 0 H 





CQ 

X 



to 

y 


co 

O 


>. 

c 

O 

L -1 



o 

o 


i 


1 


to 


> 

4 -> 

to 

t: 

H 

u 

• • 



» 

O 

UJ 

X 1 


y 

H 

—-N 

> 

r-l 

L 

<0 

H 


X 


c 


c 


• 


• 


y 

• 

«o 

c 

H 

H 

(0 

CO 

C 



i 

CC 

I 

E- I 


rH 

t- 



rH 

N 

<—i 

u 

X 



-T-. 

cc 



i 


1 


*-> 

4 -> 

CO 

y 

TJ 

X 


> 




i 

£ 


• 


X 

y 

W 

y 

co 


X 

y 

C 

4-1 




CO 


i 


» 


<0 

H 


E 


a 

L. 





i 



1 


to 

E 


H 


E-* 

to 

4 _> 

y 

(0 


CO 

c 

H 


i 


1 


rH 


y 

y 

y 

E 

CO 

bO E-r 



i 



» 


H 

3 

u 

U 

o 

—. 

H 

c 

E 

X 


L. 

H 



i 


1 



3 

to 

4 -> 

X 


rH 

c 

CL¬ 



t 



» 


u 

Z 

y 

y 

4-1 


TJ 

y 

c 

X 


CO 


u 


i 


1 


y 

y 

c 

CO 


CO 

H 

H 

UJ 



i 



1 


to 


X 

E 


UJ 



bC 



y 

U 

y 


i 


1 


X 

c 

o 

4 -> 

.H 


o 

u 

o 



» 



1 


> 


y 

3 

4-1 

X 

TJ 

X 

H 

y 


X 

o 

X 


» 


I 


4-1 

H 

ex 

CO 

rH 

0 ) 

TJ 

4 -> 

u 



i 



1 



• 

CO 

Z 

c 

>- 

C 

c 

CO 

E 


X 


o 


i 


1 



CO 

CO 

• 

H 

> 


to 

«s: 



• 



1 


y 

CTn 

u 


y 

E—■ 

to 

y 

CO 

■H 


CO 

r-^ 

(0 


i 


1 


X 

4-1 

y 

z 

3 

(C 

y 





» 



1 


H 

CJN 

(0 


E 



E 

co 

X 



o 

u 


i 


I 


4 -> 

c 

c 



X 

X 

CO 

o 



i 



1 


U 

■f 

X 

• 

y 

CO 

r-t 

y 




y 

-J 

C 0 


i 


» 


H 

o 


c 

<L- 


4-1 


4 -> 



i 



1 


y 


y 

—N 

4-1 


ea 

X 

be 

y 


E 

-J 

X 


i 


f 


3 

y 

c 

o 

rH 

>> 


CO 


» 


• 



Z 1 


E 

o 


N 

CO 

c 

> 

CO 

c 

X 


to 

UJ 

o 


» 


» 




o 


y 

ea 

o 

co 

y 

E 


» 



3 1 


3 

X 

c 

1 

4 -» 

t-r 

y 

4 J 

H 

X 


c 

X 



i 


X » 


TJ 

X 

H 


co 

E 

4 -> 


00 

co 


i 



O » 


C 


bo <z 

10 


H 

T. 

CO 







i 


=**: • 


y 

y 

c 

>4 

4 -> 



TJ 

c 

s- 


* 



Z 1 



o 

H 

—^ 


TJ 

U 

1 

3 

x 


y 

r-N 



i 


1 


y 

H 

cx 


H 

y 

c 

y 

o 

bO 


i 


UJ 

X 1 


e» 

cr> 

00 


r-s 

c 

X 

«r 

CO 

CO 


H 

X 

y 


i 


CO » 


CO 

X 




E 

o 

t- 

X 

O 


i 


2 

Z 1 


E 

i 


U 


co 

y 


a 



X 

— 

X 


i 


H I 


rH 

3 

o 

E- 

y 

cc 

H 

o 

n 

U 


» ^ 


< 

3 1 


y 


TJ 

y 

«t 


u 

c 


o 


CO 

f- 

X 


i ■"> 


1 


ex 


c 


E 

c 

4-1 

H 

y 

X 


1 E 


z 

-*» 1 


X 

E 

C 

X 


TJ 


CO 

X 

L. 


H 




1 E 


UJ 1 

Z 

y 

4 -> 


co 

co 


H 

CO 

u 



» co 



1 


co 

O 

H 

X 


y 

u 


C 

y 


C- 

co 

— 


» to 


ZD 1 

O 

c 

c 

c 


C 

y 

TJ 



y 


1 L 



CO I 

CO 

>. 

u 

O 

y 

E— 

t~ 

o 

>» 

y 

N 


to 

to 



I u 


_J 1 

H 


y 

y 

c 


.H 

TJ 

bC C-. 

X 


1 bC 


“■ 

H 1 

UJ 

to 

Cl. 

X rH 

a. 

y 

Cl. 

X 

E 



> 


CQ 


1 be 


«« 1 

E -4 

y 

E 

y 

H 

y 

X 

CO 

c 

o 

4 -> 


» O 

UJ 

O 

1 

X 





UJ 

4 -, 



y 

o 



X 



1 O 


> I 

«< 

X 

y 

X 


H 

CO 


H 




1 u 

2 

X 

CO 1 

X 

X 

CO 

y 

co 

o 

c 

X 

u 


X 


o 

r J 

«C 


1 L 


1 

(X 


4 -» 


y 

X 

■H 

C 

U 

X 

c 


1 X 

«X 

X • 

• M f 

< 

c 

y 

X 

X 

o 

y 

c 

y 

to 



H 

3 

It 


• X 


UJ 1 

UJ 

H 

co 

CO 

E 

CO 

u 

H 

4 -> 

4 -> 

H 


1 '— 

z 

UJ • 

• X 1 

M 

y 

3 

X 

X 


y 

X 

X 

X 

• 

t- 

CO 

X 


f — 

X 

X 1 

X 

H 

4-1 

to 

C 0 

H 

CO 


co 

bO 



1 


X • 

• E— I 

CC 

co 

H 


H 


y 

E 

X 

CO 

y 

TJ 

y 

— 



» 

3 *. 

E- * 

O 

H 

co 

X 

C 

L. 

> 

CO 


C 

4 -> 


1 


• • » 

• •• 1 

<« 

y 

CO 

X 

CO 

c 

X 

y 

H 

1 

co 

y 

E 


c_> 


I 




3 

f 



CO 


U 

L. 

a> 

C 


I 

■< 

E- • 

• E- 1 

> 

t, 

> 

X 


co 


4 _J 

y 

o 


N 

3 

X 



1 

<c 

E -4 1 

UJ 


<c 

y 

y 

> 

bfl 

y 

y 

H 

H 


1 



1 


X 


H 

y 


o 

CO 



y 

H 

C 

c 

CO 


1 


1 

E- 

4 -> 


c 

rH 


C 

4-1 

4 -> 


O 

UJ 

f 



1 

o 


U 

3 

H 

c 

4 _> 

X 

T) 

CO 

u 

rH 


y 

CO 

UJ 

1 


1 

<S 

H 

y 

y 

X 

b 0 

H 

o 

o 

y 

X 

-J 

1 



» 

►H 

y 

y 


bO H 


co 

y 


to 

CO 

to 

E 


J 

f 


1 

H 


X 

X 

CC 

c 

t- 

(0 

c 0 

X 


a- 

1 



i 

CC 

X 

b 0 

C 

C 


<D 


u 

>» 


H 


y 

X 

X 

1 


1 

a 

c 

4 -> 

4-1 

H 

H 

4 -> 

t- 

L- 

4 -> 

4-1 

2 

» 



i 

UJ 

X 

y 

H 

H 

TJ 

3 

—v 

y 

X 

>. X 

c 

X 

o 

2 

1 


• 

UJ 

y 



X 

U 

00 

C 0 

C 0 


co 

-< 

I 



1 

2 


X 

be 

00 

y 

H 

•• 

X 


y 

H 

y 

<0 

3 

<z 

1 


» 

2 

X 

O 

Cl. 

co 

4 -> 


X 

X 

>» 

X 

X 

1 



1 

ZD 

c 

c 

y 


co 

tO 

z 

rH 

u 

X 

C 

X 

X 

CO 

X 

1 


1 

2 

4 -> 

4-1 

►H 

> 

CO 

•a: 

o 

o 

X 

4 -> 

UJ 

1 



1 

Z 

H 

H 

X 

co 

3 

> 


<0 

o 

t— 

H 

3 

CO 

—' 

UJ 

I 


1 

fH 


E c x> y o ^ 

E TJ H to u e tj 

h y *-> h y 

x>HTJ tOHMTJ y 
wtotoynco i cc 


o o y >» y 

H c — C Cl. 


C -*-> 

(0 CO <0 


i to o - y x» y 
.H h _j *j a y h 


o y 

E 

- y 
E 


C O y Cl C X> 


y +j ex y 


E y x to 


c y jc y 


+-> c y h 

h y > to 

3 -c y +-» t. 


E O 

y to 


3 c co y 


d c u, e 


C H 
y c 
E y 
y e 
x> y 

10 3 H TJ 


c c y y 


co.ccxyHEt-y 


E- uj oo h 
3 H 


o y 
-j .c 


x> t- 

o 

>* j ■ 


co o y o e ex 


c o y y c y 

h h bo <o y x> 
tj x» co c e y 

y 3 h o y h x: 
y y c cl ul> 

y y c oo co E 


>» h 

y co 3 • 

eh y 
id at c 

10 CQ J H 
H UJ H 

y tj en 


<c o 

-j c 


y x> o O H •• 3 
exyyceoyx»3£3to 


April 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 19 


175 






















y 





1 





1 



1 

A 

A I 
























c 

» 




1 





1 



1 

C 

C 1 













y 





O 






0 

y 

y 



1 





I 



1 

X 

X 1 



X 





c 



x 







OO 



y 



X 

E 

0 



1 








1 

y 

y » 

«. 


c 


y 



y 








y 





X 

• 

y 

y 

y 

y 



1 





1 



5 

X 

x 1 

y 


y 


c 



o 



x 


o 



x> 


o 




ON 


y 

c 

X 



1 





1 



1 

X 

X 1 

y 


E 

X 

X 

X 





o 


a 





4-3 



43 

ON 

X. 

X 


y 



t 








1 

y 

y » 

c 

• 

y 

y 

y 

O 


X 

• 


CL 


0) 



H 




y 

y 


X 


y 




t 








1 

CL 

CL » 

0 

X 

X 

X 

X 


<* 

3 

j* 


E 


y 


1 

iH1 


tj 

tj 

X 

3 

-O 


c 

rp 

X 



• 








• 

V 

V 1 

CL 

c 

y 

X 

X 

bC 


X 

c 


y 


x 


C 

•H 

• 

y 

X 

X 

E 

c 

y 

X 

X 

c 



» 








• 

at 

< 1 

y 

y 

X 

3 

y 

C 



y 

.c 

-*-> 




O 

3 

tj 

4-3 

o 

X 


y 

X 


y 

y 



1 








1 

• 


y 

E 

y 


CL 

X 

• 

•o 

X 




y 


c 


y 

•H 

3 


y 


3 

•0 

X 

X 



1 





1 



1 

• 


X 

y 


E 


"O 

c 

y 

X 




x 



y 

4-> 

E 

X 

c 

y 

0 

y 

y 

X 

y 



1 





1 



1 

• 



X 

x 

y 


y 

X 

X 


r-i 



4-3 


y 

bC 

CL 

•H 

y 

X 

c 


0 

X 

y 

X 

• 


1 





1 



» 

/\ 

A 1 

X 

y 

0 

X 

• 

y 

y 

0 

bo 

■H 






y 

y 

H 

j* 


0 

c 

0 

X 

> 

<x 

y 


1 








* 

c 

C » 

y 

X 

X 

X 

y 

X 

X 

c 

c 

3 



C 


y 

y 

y 



C\J 

CL 

y 


E 


cx. 

bO 


• 





» 



1 

X 

X 5 

y 

y 

<c 


3 


X 

bo X 




CD 


c 

y 

o 

y 

y 

c— 

y 

y 

t 

y 

y 

3 

y 


1 





f 



» 

y 

y 1 

3 


2: 

>» 

X 

X 

y 

X 

X 

y 



x 


y 

y 

y 

•H 

X 


y 

3 

a 

X 

X 

y 

X 


1 








1 

X 

X 5 




c 

X 

X 

CL 


X 

03 



4-> 



E 



4-3 

X. 

X 

X 

UJ 

X 

X 

c 

0 


1 





I 



5 

X 

X I 

X 

aa 

y 

<x 


X 


y 

y 

c 

x 



• 

y 


y 

y 


o 


y 

cc 

y 

y 

X 

X 


1 





» 



» 

y 

y p 

y 

«X 

X 


X 

3 

y 

X 

X 

o 

o 


tj 

y 

y 

X 

X) 

y 

X 


y 

X 

X 


E 


y 


» 








1 

CL 

CL 1 

y 


X 


y 


X 


X 

CL 

x 



»—i 

y 

o 


c 

X 

y 

X 


X 

y 

3 

y 



1 





» 



1 

V 

V- 1 

X 



• 

y 

at 

X 

E 


03 

03 


y 

jQ 

3 

x 

i—< 

o 


3 

X 

X 

0 

X 

C 

y 

y 


1 





1 

0 


1 

a* 

< P 


X 

X 

y 


y 


y 

y 

y 



3 

y 

r—C 

x 


CL 

X 

X 

y 

y 

UJ 



X 

X 


» 





1 

2: 


1 

1_1 

1_1 P 

y 

a. 

0 

y 

y 

y 

Xh 

X 


x 

tj 



•x 

y 

y 


y 

y 

y 

X 

be- 

CK 

>» 

X 

(0 

X 


» 





1 

v_^ 


1 

A 

A 1 

X 

UJ 


c 

X 

E 

0 

X 

X. 


c 


y 

x 

c 


3 

y 

y 

> 

X 

y 


X 

X 

y 

y 


1 





» 



I 

C 

C P 

X 

O 

"O 

0 


E 



0 

o 

CO 


c 

y 

■H 

c 


X 



y 

X 

>4 

X 

X 

X 

X 


1 





1 

■a 


1 

X 

X P 


O 

•—p 

CL 

0 

O 

X 

X 





•H 

> 


y 

y 


X 

X 

> 

c 

cc 

c 

3 

•0 

X 


» 





1 

c 


1 

y 

y p 

X- 

«c 

y 

y 

X 

y 

X 

y 

y 


bO 




y 


y 

y 

X 

y 


X 

(r- 

y 


c 

y 


I 





» 

y 


5 

X 

x 1 

0 


X 

y 



y 

y 

y 


c 


y 

bO 

■H 

«. 

c 


E 

X 

0 


Z 


X 

X 

> 


1 



O'* 


» 



» 

X 

X P 


X 

X 

X 

X 

>> 

a 

X 

c 

c 



■H 

C 


y 

o 

x. 

X 

X 

X 

X 

UJ 

0 

X 




I 



UJ 


o* 1 



• 

y 

y p 

c 

y 



y 

X 



y 

y 

x 



•H 

y 

y 

CL 

o 

X 

X 

X 

X 


X 

y 

s 

bO 


1 



2: 


UJ 5 

M 


5 

a 

a p 

y 

y 

c 

X 

X 


T3 

y 

y 

x 

4J 


y 

X 

E 

u 

y 



c 

y 

bC 

c_> 

X 

y 

2: 

C 


1 



«< 


O 1 

2: 


• 

V 

V P 

y 

X 

0 

y 

X 

■o 

y 

X 

y 

4-> 

03 


E 

X 

y 

y 

y 

x 

X 

X 

E 

X 

X 

y 

y 

O 

X 


» 



z 


< 1 



• 


p 

y 


X 

y 

3 

y 

x 

X 

X 




y 

y 

c 

4-3 

X 

4-> 

y 


3 

-0 

cc 

E 

y 

O 

X 


1 





1 



• 




y 

y 

X 

y 

X 

y 


CL 

tj 

x 


c 



c 


be 

3 

c 

C 


UJ 

3 


cc 

X 


1 

o* 


cc 


oc 1 

X 


1 


1 

y 

X 

y 


• 

y 

■0 

y 


c 

y 



y 

y 

y 

X 

c 

O 

y 


y 

2: 

C 

c 


y 


1 

CD 


3> 


X 1 

0 


1 

1—1 



X 

y 

y 

z 

X 


y 

y 

C0 

4-> 


y 

x 

H 


y 

y 

X 


< 

> 

X 

» 

y 

0 



1 

O 


0 


0 t 

E-4 


1 

A 

A 1 

y 


X 

X 

>4 

y 

y 

X 

X 

x 

y 


i-H 

4-3 

X) 

y 

X 

H 


y 


X 

z 

c 


z 

X 


1 

>H 


>4 


>4 | 

•X 


1 

TD 

TD > 

y 

>> 

CL 

X 


CL 

c 

y 

X 

y 

y 


£3 


y 

•H 

4-> 


y 

y 


4-3 

tt 

0 

0 

* 

0 


* 





1 

X 


1 

C 

C P 

y 

X 

X 


y 

y 

0 

c 


CL 

x 


y 

c 

•H 


O 

y 


X 

• 

X 

s 

c 

X 

B 

X, 


1 

UJ 


CO 


CO I 



» 

O 

O P 

3 


y 

X 

X 

y 

y 

X 

y 

o 

C0 


•H 

*H 

x 

y 

c 

x 

o 


H 

y 







1 

OC 


PP 





I 

y 

y p 

y 

TJ 


X 

X 



E 

X 


x 


x 


y 

y 

y 

E-* 

X 

X 

O 

0 







1 

<c 



UJ 

I 



1 

\/ 

V » 

0 

y 

y 

X 


y 

y 

X 

y 

o 

y 


y 

y 

> 

c 




«< 

X 

CL 

CO 






I 



fr- 

2: 

E- » 



I 

■_1 



> 

X 

3 

y 

X 


y 

y 

c 


■ 

> 

y 


o 

•a 


X 

2: 

X 


UJ 






1 

0 


• < 

■< • 

» < » » » 



• 


p 


X 

X 


y 

y 

c 

X 

X 


y 

x 


x 

y 

a 

c 


o 

X 

CL 

O 

0 






1 

X 


• X 

z • 

• X « » • » 



I 


0 1 

a. 

y 


-O 

y 


y 


•0 

CO 


y 

bO 

o 

•H 

y 

y 

CO 


0 


3 

<£. 






» 



• 3 

-*f> * 

• 3 • • 1 



1 

2: 

2: p 

z 

y 

c 

y 

3 

X 

X 

X 

c 

—! 


x, 

C 

4-> 

X 

y 


Z 

y 


X, 

X 

CO 






1 



• •• 

• • • 




1 


p 

0 

y 

X 

X 

y 

y 

X 

0 

X 


y 

X 

■H 

y 

y 

X 

tj 

O 

X 


0 


CO 






» 

(-> < 


» E- 

< • 

• £_«:• . 1 



1 

•—1 

1—1 1 

X 

X 


y 

y 

X 


X 


y 


3 

X 


E 


y 

t—4 

y 

• 


X 

UJ 





•• 

1 





l 



» 

A 

A P 

X 


y 

CL 


X 

bO 

X 

0 

x 

-o 

X3 

4-3 

y 

3 

y 

X 

E- 

X 

c 

c 

0 

2: 





UJ 

I 





f 


• • 

• 

X 

X P 

CL. 

y 

c 

E 

y 


c 

3 

X 

y 

y 


y 

x> 

C 

•H 

y 

C 

o 


0 








1 





1 


X 

5 

y 

y p 

X 

c 

x 

O 

y 

y 

X 



x 

4-) 

X 




X 


t-4 

y 

X 

X 

y 

cc 





CL. 

1 





• 


<« 

5 

X 

X P 

CC 

0 

y 

y 


X 

X 

y 

y 

-<-> 

y 

X 

y 


y 

y 

CL 

M 

X 

*3; 

y 

c 

0 





JL 

1 





1 


H 

5 

y 

y p 

0 


X 


y 

X 

X 

B 

> 


y 

4-3 




E 

y 

2: 

y 

2: 

X 

0 

oc 





<« 

1 





1 


z 

5 

X 

x 1 

CO 

y 

X 

y 

X 


y 

B 

X 

V- 

x 

c 

x 

•H 

X 

3 

■H 

p-t 

x 

X 

y 


oc 





X 

5 





1 


>4 

I 

V 

v 1 

UJ 

X 

y 

x 

y 

c 

x 

O 

y 

H4 

4-> 

y 

M 

3 

PH 

C 

TJ 

—j 

o 

0 

> 

y 

UJ 





UJ 

1 





1 


CO 

1 

< —1 

—' p 

£3 

X 

0 - 

y 

E 

X 

X 

y 

y 


"O 

c 

co 


X 


CO 

UJ 

X 


X 

Ou 

X 

E-* 




1 

p 

p 



X 

y 














X. 









1 

1 

1 



1 

1 






1 

«e 


y 



y 

X 









bo 


0 









I 









p 



X 

c 

X. 

y 

X 

• 

y 



TJ 



X 

c 











1 









1 



0 

X 

O 

E 

X 

s 

E 



X 

y 


0 

X 


bO 



s 






1 









p 

• 


y 



y 

3 


X 



r-% 

X 


c 

X 


c 



• 



£ 



1 









p 

X 

a. 

X 

TD 

y 

c 


£ 

0 



y 

X 



X 


X 



UJ 



» 



1 









p 

y 

bO 

y 

y 

y 


bC 


X. 



> 



y 

y 


X 



2 : 






1 









p 

y 

c 

sz 

y 

3 

X 

c 

X 





>> 


y 



X 



<x 



y 



1 









p 

3 

X 

0 

3 

X 

X 

X 

X 

-0 



>» x 


X 

y 


y 



z 



E 



1 








A 

A 1 


X 


■0 

y 

y 

c 

X 

y 

c 

>, x 




X 


a 






y 



» 








y 

y p 

E -4 

X 

X 

0 

> 

X 

c 

3 

X 

X 

-0 

c 

y 


X 

X 


y 






c 



1 








bC 

b0 1 

O 

y 

H 

X 


X 

X 


y 


y 

0 

X 


y 



y 









1 








y 

y p 

X 


<c 

CL 

y 


bC 

bC 

X 

X 

y 




X 

X, 


X 



0 



TJ 



1 








y 

y p 

X 

X 


y 

X 

X 

y 

c 

> 

c 

X 

y 

E- 


X 

0 

y 

E 



X 



y 



p 








y 

y p 

CL 

y 


X 

X 

0 

X 

X 

y 

y 

X 

X 

O 




c 




X 



X 



p 








y 

y p 


X 

» 



X. 


c 

X 

X 

y 

X 

_J 


y 

>. 

0 

y 



UJ 



y 



1 








E 

E l 

y 

0 

y 

y 

X 


>> 

c 

X 

y 



X 


.X 

y 

TJ 

X 



X 



X 



p 








V 

v 1 

X 

y 

y 

X 

y 

y 

X 

X 

X 

> 

y 

«t 

CL 


X 

X 


y 



£ 



c 



1 









l 

X 

X 

X 

y 

X 

X 


bC 

y 

X 

X 

c 



y 

CL 

y 

0 






y 



1 











y 

X 


X 

c 

•0 

y 


3 

y 

0 



X 

y 

X 

X 



>4 



—■ 



1 









P 

O 

X 

y 

c 


y 

y 

X 

y 

cr 


X 

O 


X 

X 


TJ 



«X 






1 








1—1 


X 

y 

X 

0 

c 

E 

X 


X 

y 

y 

X 



y 

TJ 

y 

c 



X 



- 



1 








N 

a—t 1 



X 

■ —1 

0 

y 

X. 

>> 

y 


X 

X 

c 


> 


y 

X 



CL 



0 



p 







A 

A 

A P 

y 

1—1 

y 

0 

X 

y 

X 

X 


>. 

c 

TJ 

0 



y 

X 




CO 



X 



1 







y 

y 

y p 

bC 

y 

> 

y 

X 

y 

X 


y 

X 

y 

c 

X 


y 

y 

3 

c 



X 



X 










bO x 

x 1 

y 

X 



CL 

X 

c 

y 

X 

y 

E 

0 

y 



3 

0 

y 



Q 



X 



CO • 







y 

X 

x 1 

y 

y 

y 

y 

y 

CL 

y 

y 

c 

X 

y 

0 

X 


0 

y 

0 

X 






X 



=?* » 







y 

y 

y p 

y 

X 

X 

X 

y 

y 

•0 

E 

y 

X 

X 


y 

• 

X 

0 


X 



X 



£ 



1 







y 

X 

X 1 

y 

X 

X 

X 

X 

X 

X 

y 

E 

X 

y 

0 

> 

y 



X. 

0 



X 






CO 1 







y 

X 

X P 

E 

X 

y 


y 



c 

y 

c 

X 

z 


X 

y 

X 

0 




X 



•• 



M » 

. . 






E 

y 

y p 



E 

X, 


y 

y 


X 

y 

y 


y 

X 

0 

X 


X 

» 


3s 



X 



1 

Cl 






V 

> 

> » 

y 

y 

3 

0 

y 

y 

X 

y 

y 



CO 

X 

y 

c 

X 

>> X 

y 





m 



X 1 

- 




1L 




p 



C 


X 


y 

X 

X 

y 

y 

UJ 

X 

X 

y 

3 

y 

X 

E 


X 

» 



» 


CC 1 








0 

y » 

y 

X-. 


X 

X 

TD 


X 

y 

X 

y 

>4 

X 

X 

X 


E 

3 

y 


z 

UJ 


X 

X 


0 p 









x 1 

>» 

0 

•O 

sz 


y 

y 

y 


y 

y 



y 

y 

y 



c 


X 

2 : 


X 

2: 


0 1 







1—1 

X 

X P 

y 


c 

bO X 

X 

y 

X 

a-v 


X 

y 

c 

> 

X, 

3 

y 

X 



X 

<c 


X 

« 


CO 1 







A 

y 

y p 

H 

X 

y 

X 

X 

X 

E 

X 


■0 

X 

X 

X 


y 

X 

X 

X 

y 



z 



z 


1 







TD 

E 

E P 

CL 

y 


X 

X 

y 

y 

y 

z 

c 


X 


0 

oc 

y 

X 


X 


H 






3 1 







C 

3 

3 P 

y 

X 

at 


3 

y 

c 

> 


y 

y 


c 

X 


> 

E-4 

X 

X 


X 



>4 



X P 




2 

1 - r- 


O 

.c 

C P 

X 

y 

y 

y 


c 





0 

c 

0 

X 




3 

y 


UJ 



< 



z * 





a% as 


y 

V 

N/ P 

Q 

c 

y 

X 

c 

X 

y 

0 

O 


c 

0 

X 

y 


y 


X 

X 


1 z 

0 

X 

X 

O 

*— 

p 







V 

w 

___ 


0 

X 

X 

0 


X 

X 

z 


X 

CL X 

E 

co 


• 


X 



X 

2: 

CL 

X 

+ 

CC » 




I 

.y.. 


1_1 

._, 

1 _ 1 1 


y 

X 


X 

y 

X 

X 


z 

CO 

3 

X 

3 

UJ 

TJ 

y 

at 

y 


1 UJ 

X 

«c 

CO 

X 

CO 

CD p 




■ 





p 



y 

0 

X 

X 

y 

y 

TD 

E-4 



TJ 

C 

0 

y 

E 

>> 

> 


X 

UJ 

z 

M 

X 

II 

0 » 







E-» 

>4 

z 1 

Z 

c 

X 

X 

y 

y 

X 

E 

C 



X 

C 


<s 

c 

y 

X 



E-« 

X 


X 

CO 

>4 P 









1 

O 

y 

X 


y 


X 

3 

y 

tj 

» 

y 

O 

y 

CO 

bC 

c 

y 

to 


•• 


aa 

•• 










1—1 

1 - 1 

1—1 | 

X 

y 

y 

y 

X. 

y 

y 

C 


c 

c 

c 

O 


co 

X 


X 

c 


E -4 

E -4 

<x 

E- 

E -4 

0 

E- ( 







A 

A 

A 1 

t-* 


> 

c 


y 

> 


^t 

y 

0 

0 


X. 

UJ 

y 

y 

y 

X 








1 







r-p 

X 

X 1 

CL 

y 


0 

X 

X 


-O 



X 

X 

X 

0 

2 : 

y 

X 

X 

X 

UJ 







P 




1 



y 

y 

y 1 

X 

bC 

bC X 

y 

X 

b £ 

c 

>4 


X 

X 

y 



y 

X 

y 

X 















X 

X 

x 1 

OC 

y 

c 

X 

X 

y 

C 

y 

—a 

>4 

y 

X 

X 

y 

cc 


y 

X 

y 

CL 







P 









y 1 

c_> 

y 

X 

X 

y 

X 

X 



H 

X 

TJ 

X 

3 

0 

c 

X 

X 


2 : 







1 





to to 



X 

x 1 

CO 

y 

X 

y 

X 

X 

X 

£ 

CO 


y 

C 

X 

iX 

cc 

y 

X 

■—1 

y 

< 







P 







V 

\/ 

V 1 

UJ 

y 

X 

0 

X 

y 

X 


UJ 

X, 

CL 

O 

3 

y 

cc 

y 

y 

y 

X 

X 







P 







•— 

L - i 


Q 

E 

y 

CL X 

> 

CO 

£ 

>4 

0 

O 

O 

X. 

> 

UJ 

X 

> 

TJ 

X 

UJ 







1 


CO 

1 

lI. 

1—J 



X 

y c 

(O 0) 

h H H £ I) 

O 0 ) 3 -H 
x y o 

H £ C 51 H 

tl P B D 3 

O P H 

OJ fH CtJ cd 

£ 1) T) C > 

X O C -H 

C <0 B 

X y XX 

O O X <U < 

x. 3 x 2 : 

X O 2 

CD CO XI y H 

O E 3 C 

•H X -H CD 

> X r-t SZ 

(D CD t. X 

•O 03 O CD 

3 XZ X. 

CD H -H 

rl 1) O 

O £ X 

51 H P • O 

C X X 

O *H t TJ 

o • x: r-c y 

QJ5)PL 

<d co y CD 

SZ C X 

xoy.cc: 
ap p y 

51 51 y -H 

c y «h 3 0 ) 

y x y *h 

a -ay 

o co c c 

x -h x 

x x »H 3 

•• y -h +3 

z 41 3 x y 

o c c x 

m y x y 

t-. y x y • 

a. o p l too 

h p y 3 b y 

cc m y p £ 

out x o 
co y co y u y 

uj oi £ x co y 

q 3 o x o x 


Page 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


176 
















(0 


o -a 
c c 
(0 


x 

z 

M 

8 - 

=> 

O 

cc 

CD 

ZD 

to 


1 



to 

• 


03 












1 


» 



•H 

rH 

E 

XJ 














1 

<0 



<0 

3 















1 

s —' 

03 

P 

c 

E 

r—i 














1 


P 

C 

o 

■H 

'—1 














8 

C 03 

P 

03 

•H 

X 

•H 














8 

O P 


E C 

P 

<0 

3 


to 












1 

•H P 

o 

03 <0 

a. 

E 



3 












I 

P 

p 

p 

o 


XJ 


<0 












• 

<0 03 


<0 03 


<0 

c 


o 












8 

C 03 

c 

P 03 

to 


3 














8 

■H > 

L 

<0 C 

•H 

o 

o 


•“< 





to 



UJ 


1 



P <0 

3 

03 


p 

0-. 






• 







1 

tO 03 

P 

^ L. 





•H 








'— 




/\ 1 

0) 

03 

.. 03 

to 

XJ 

03 


3 












C 1 

TJ XJ 

u 

UJ 0- 

•H 

03 

P 














O 1 

C 


w a> 

L. 

P 



to 




8- 

o 








XJ to 

c 

u 

03 

to 

P 


p 




to 








p 1 

03 

to 

Q 

P 

03 

o 


c 












<0 » 

■H E 

03 

Z -t~> 

<0 

c 

c 


03 




UJ 




o 




C 1 

0- <0 


x to 

CO 


c 


E 




3 

to 







-H » 

•H L 

.H 

3 


03 

<0 


03 












p 1 

C3 bL 

o 

C E 

bo 

XJ 

o 


P 












<0 8 

03 O 

u 

<0 

c 




<0 




DC 








03 1 

Cl L. 

p 

c 

•H 

>» 

p 


P 

B 



UJ 








tj » 

oo a 

c 

c o 

XJ 

<0 

<0 


to 

CD 







UJ 




V 1 


o 

03 —1 

(0 

E 

x: 



UJ 



3 

UJ 






• » 

03 P 

03 

P P 

03 


p 

s 

UJ 

CD 











* 1 

£ c 


3 CO 

H 

to 


CD 

CO 

UJ 



CO 




*-* 




>—‘ 1 

P 03 

P 

c 


03 

r—| 

Z 

=3 




►_( 








1 

u 

to 

UJ -H 

03 

c 

03 .. 

3> 


O 




O 







•• 8 

o u 

P 

X P 

P 

•H 

P >, 

O 

0-. 

X 



to 








• 

p 3 

p 

ZD <0 


P 

<0 P 

u. 

o 

UJ 



►H 

UJ 

►H » 







o 


03 


3 

H 







O X 

* 






A I 

(0 

o 

Uj XJ 

P 

O 

XJ 

8- 

bo 

zc 



8- 


• • • 






TJ 1 

CL 03 

to 

c 

3 

u 

<C 03 

O 

c 

8- 











C 8 

E p 


■H 03 

P 

XJ 

3 

z 

•H 

a. 



8- 

T 

A 

M 


• 8-* • • UJ 1 





O 1 


c 

3 P 


3 

O 


P 

UJ 










O 1 

-3 

o 

O 8- 

«. 

to . 

• • .—1 

J 

CO 

Q 









1 o 


V » 

C 

•H 

rH 

H 

c 

to •—< 

UJ 

03 




8- 








> — 1 1 

•H 

p 

H 

03 

03 

UJ o 

CD 

c 

UJ 











1 

•• 

<0 

o • 

XJ 

.. > 

O 0-r 

c 


CO 



<« 






1 >—< 


ZD 8 

Z ^ 

03 

o- XJ 

to 

to 03 

<« 

p 

ft 

P 









1 UJ 


8 

O 03 

O 

03 

H 

z to 

to *» 

• 


* 



CO 







r-> I 

*H C 

■H 

P u 


o 

CO XJ 

r 

p 

B 



* 








/\ 1 

8-* -H 


C 03 

bO 

►H 0_ 

UJ 03 




.. 








1 r—% 


<-i 8 

a. p 

P 

03 P 

c 

8- O 

2C >, 


03 


UJ 








I A 


03 1 

►H 3 

c 

E C 

•H 

«S 

<0 


L. 









•• 



P 8 

cc o 

03 

03 3 

P 

8- p 

IX r-l 


bo 












CO » 

o c 

u 

P O 

CO 

fH P 

O Q. 




X. 










rH 1 

CO P 

u 

<0 03 

•H 

2 : cl 

cc to 











8- 

1 to 


V 1 

UJ 3 

3 

P C 

X 

H 03 

CC -H 


O 









z 



<—• 1 

Q CO 

03 

tO 03 

03 

-J XJ 

UJ XJ 


8- 


UJ 








1 V 






















03 

P bO 

P C 

•H 03 

C 3 C. 03 

O O 0) TO P 

rH p to 

J) H *3 J) C 

CO C -H 

•H O 03 E 

P P P t- 

3TJ P 03 

oo-o P 

U U 03 X 

D 0) (0 H H 

3 P OT r-i .. 

(0 C <0 -HO 

3 a. • 3 bfc 

(0 O P <0 

CJ 03 C E <0 

C P 0) (0 CO 

o o> e t- o 

h U bfl E 

TJ 6* r-4 P O 

C H *H TO l. rH 

o 3 p a. to 

to -H 

03 • «H 03 P 

£ E O X P -H 

P (0 S- CO P C 

C P O *rl 

tO bO C 

03 O O 03 bO CO 

p c cj p c p 

<0 0. P -H *H 

CJ TJ 

•H P P bO C >» 

TJ C C C 03 <0 

C 03 03 3 0. rH 

►H U E O Q. 

L CJ H (0 10 

3 p j P -H 

•• CJ tO O C TJ 

Z P 03 

O 03 tO E —I 

I—< JD P 0) H 

fc-» P --n C P *H 

a. •• 0) <o J 

►H =3 E P 

CC O w 03 to 8-. 

c_> P O 

co -a uj (0 u j 

uj c to p to H 

CD 03 3 B3 3 ft. 


QC 
— O 

• O 

r- CC 

a. 

O 3 

CO UJ 
O Z 
CO 
8 <r. 
E-h 

O Q 
J <C 
M O 
0- _J 


03 

C 

o 

• o 

• O P u 









03 

c 


P 

O 



1 








1 


1 1 








8 













C 

03 

TJ 

CJ 




1 








1 


1 1 








8 







03 



c 



o 


03 

<0 

XJ 



1 








f 


1 1 

03 







8 







P 

00 


to 




P 

O 

03 

c 



1 








1 


• 1 

P 







8 







P 

<0 





o 

CJ 

3 


3 



» 


CQ 






1 


1 1 

P 


• 

03 




8 






u 




00 



p 

to 

XJ 

P 

o 



1 


O 






1 


1 1 



rH 

P 




8 






o 

U 

<0 


to 




63 

0) 

P 

c- 



t 


-3 






1 


1 1 

c 

c 

<0 





1 






0-. 

o 

E 





XJ 


u 

■H 




1 








1 


1 1 

•H 

<0 

c 

rH 




8 







<p 

E 

to 

to 



03 

O 


3 

00 



1 


U 






1 


I 1 



0 

rH 




1 






p 


O 

■H 

p 



CJ 

P 

<0 


•H 



1 


o 






1 


1 1 

C 

0) 

H 

■H 




1 






CJ 

p 

CJ 

P 

c 



3 


-X 

03 




1 








1 


1 1 

O 

CJ 

P 

3 




8 






u 

a 


P 

•H 



XJ 

XJ 

c 

10 

P 



1 


UJ 






1 


1 1 

«H 

c 

CL 





8 






<0 

o 

03 


u 



03 

03 

to 

c 

CJ 



1 


o 






1 


1 1 

P 

03 

O 

XJ 




8 






03 

CJ 

P 

03 

Q. 



u 

XJ 

rH 

o 

p 



1 


M 






1 


1 8 

to 

u 


B 




8 




• 


to 

X 

P 

CL 





XJ 

p 

CL 

to 



t 








1 


8 8 

C 

03 

to 

3 




8 




3 



03 


>* XJ 



to 

CO 


co 

E 



» 


•a: 






1 


8 1 

■H 


•H 

O 




8 




O 


to 


0* 

P 

c 



.X 


03 

03 




1 






8-h 


8 


8 8 

P 

03 


X 




8 




X 



rH 

o 

03 

to 



c 

Jit 

rH 

U 

CO 



1 


c 

X 





O 1 


8 /N 8 

to 

u 

d: 





8 


Z 




to 

<0 


rH 




to 

c 

CL 





1 


o 



X 

X 


1 


8 C 8 

03 


to 

03 




1 


3H 


CC 


3 

CJ 

03 

03 

z 



rH 

to 

-H 

03 

1. 



» 



u 


o 



c 1 


8 O 8 

TJ 

p 

•H 

P 




8 


O 


0 


O 

H 

CJ 

P 




P 

rH 

P 

P 

03 



1 


8- 

o 


fH 

u 


0 » 


8 -H 8 


to 

&. 





1 


X 


X 


t—i 

P 

to 


p 




p 

rH 

P 

P 



1 


<C 



X 

o 


1 


8 P 8 

TJ 

3 

03 

P 




1 


X 





C 

rH 

<0 

tp 



03 


3 


P 



1 


X 

8- 


•< 



X 1 


8 <0 8 

03 

E 

P 

O 




1 




z 


to 

03 

a. 


■H 



H 

to 

E 

<~ 

•H 

• 


1 



z 



X 


1 


8 C 1 

•H 


to 

C 




1 


0 


0 



XJ 


c 

P 



CL 



o 

03 

XJ 


1 


c 

UJ 


u 

o 


L I 


8 -H 8 


C 

to 

c 




8 


H 


►H 


p 

•H 

c 

o 

to 



■H 

to 

to 



03 


1 


O 

8- 


o 

*3 


O I 


8 P 8 

■H 

O 


to 




8 




t- 


CJ 


•H 





P 

<0 

<0 

c 

•H 

p 


1 








1 

• • 

8 CO 8 

CJ 

•H 

bO 

CJ 




8 


X 


X 


*H 

to 



>. 



rH 

P 

p 

<0 

•H 

(0 


1 


X 

P 


X 

p 


< 1 

*3 

8 03 8 

03 

P 

c 





8 


Q 


X 


P 

H 


• 

p 



3 



CJ 

P 

3 


1 



CJ 



o 


1 


8 XJ 8 

CL 

to 

•H 

p 




8 


< 


ZD 


3 


« 

CO 




E 

03 

03 

00 

C 

to 


1 


U 

P 


u 

p 


>. 1 


8 V 8 

CO 

C 

XJ 

to 




1 


X 


Of 



P 


c 

XJ 




00 

0) 


3 

p 


1 


o 

to 


o 

to 


•H 1 

X 

8 8 


•H 

to 

p 




8 


X 




C 

JH 


u 

03 



QJ 

c 

c 

3 


X 


1 



E 



E 


C 1 

2: 

1 »—• 8 

03 

P 

03 

p 


e 


8 




«c 


o 


P 

03 

CJ 



> 

o 

o 

o 

to 

03 


1 


< 



c 



O I 

ZD 

8 * 8 

P 

00 

rH 



CD 


8 


ZD 

E-> 



•H 


03 

P 

3 



<0 

CL 

CL TJ 

L. 



1 



P 



p 


• 

•3 

8 •—i 8 

P 

03 


( 


Z 


8 

H 

O 

X 

X 


to 

» 

u 

P 

XJ 



P 

00 

to 

c 

3 

00 


1 


CO 

O 


(0 

o 


00 1 


8 8 


XJ 

03 

03 


13 


8 

CC 

>H 

X 

z> 


c 

00 

to 

<0 

o 




03 

03 

■H 

CJ 

•H 


1 


03 

c 


03 

c 

•» 

03 • 


8 •• 8 

O 


P 

P 

>. 

O 


8 

<C 

X 

13 

«t 


03 

to 

CJ 

CL 

c 



CO 

u 

u 

3 

CJ 



1 


P 



p 



p 1 


8 8 

P 

0) 

P 

to 

p 

X 


8 

E- • 

• X X 

cr • 

• X 


P 

E 



CL 



c 




o 

P 


1 


CJ 

to 


CJ 

<0 

o 

0 1 


8 r-. 8 


p 


rH 




8 

X • 

• X >H 

* 

• 


X 

E 

03 

c 




t- 

p 

p 

bO 


3 


1 


P 

03 


p 

03 


p ( 


8 /\ 8 

CO 

E- 

P 


XJ 

E- 


8 

* 

• < 

• • • 

• *H 


03 

O 

P 

03 

00 



03 

CO 

to 

C 

c 

CL 


1 


to 

o 

O 

to 

O 


to 1 


8 XJ 8 

CL 


3 

«t 

03 

O 


8 

• • » 

1 .. >■ 

X • 

• •• 



CJ 

P 

03 

■H 



p 

<0 

to 

•H 

u 

c 


1 


2 : 

CD 


2 : 

Q 


2 : 1 


8 C 1 

E 


JD 


3 

Z 


8 

3 • 

T 

A 

M 

3 » 

• H 


XJ 



3 




p 

rH 

rH 

> 

03 

•H 


1 







X 

1 


8 O 1 

3 

• 



0 



8 






U 

bO 

P 




<0 



o 

p 



I 

o 



X 




1 


8 O 8 

3 

E 



rH 

-J 


8 






O 

c 

o 

03 

X 



CL 

03 

03 

E 

p 

03 


1 







•k 

• 


8 V 8 


<0 

r-i 

X 


UJ 


8 


H 


E- 


3 

•H 


JD 

UJ 



1 

P 

p 


to 

P 


1 

CO 



•» 




1 


8 *—1 8 


U 

03 

X 

0 

X 


8 


CC 


X 


>> 

C 

c 


IP 



2 : 

8-* 

6- 

< 

Q. P 


1 




«< 



«< 

I 


8 8 


bO P 

0 

Cr-r 

<« 


8 


c 


X 


03 

■H 

o 

U 

—' 










1 

«< 







1 


8 3 8 

Z 

O 

to 

< 


-J 


8 


E- 


13 



CO 

•H 

o 




• 

» 

* 

• 




1 







•• 

1 


8 1 

O 

U 

rH 

X 

■. 

8 


8 


X 


O' 



P 

p 

p 

u 

» 

Z 


CM 

m 




t 

2 : 



2 : 



2 : 

1 


8 r— 1 | 

H 

Cl 


X 

XJ 

s 


8 


• 


* 


to 

c 

3 

<0 

03 

3 

o 







to 

1 








1 


8 A 8 

E- 


bO 

UJ 

03 



8 







o 

P 

u 

p 

O 

►H 







UJ 

» 








1 


•• 8 rH 8 

X 

P 

C 

2 : 

>* 



8 






to 

CJ 

■H 

to 

CJ 

u 

H 







-J 

1 








1 


X 8 03 8 

t_1 

C 

•H 


to 


-J 

8 






•H 


P 

Cl 

to 

u 

«< 







X 

t 








I 


4 10 1 

X 

03 

P 

cc 



X 

8 







p 

to 

03 

c 

<0 

QC 







2 : 

i 








1 


t— • 8 <0 • 

0 

u 

to 

0 

X 


2 : 

8 







X 

P 

(0 

to 


UJ 







c 

• 








» 


Z 8 rH 8 

X 

u 

•H 

X 

<0 


<c 

8 






O 

03 

3 


p 

CL 

a, 







X 

i 








I 


>« 8 >✓ 8 

X 

3 

X 

X 

-H 


X 

8 






2 : 

P 

CO 

to 

CJ 

3 

O 







UJ 

I 








» 


c/J 1 >—1 I 

CD 

CJ 

03 

X 

XJ 


X 

8 







April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 21 


177 















LIMITATIONS: Subroutines may be nested to a maximum EXAMPLE 

depth of seven. See USE ( U :) for potential error _ 


CD 

in » 

♦ •< 

ii 

ii 

x 

X 

o u 





1 

1 

1 

1 

1 

1 


c 

p 



• 1 

• 1 

• 1 



1 





1 

1 


p 

CO 



• 1 








f 

1 

P 





• 1 








1 

1 

P 

c 

e 



• 1 








1 

1 


Q 

3 


• m 

• 1 








1 

1 


P 

O 


• t~- 

• 1 



i 





1 

1 

• 

P 

CJ 


• s 

• • 








1 

1 

P 

CO 

o 


• c\| 

• 1 

• • 







1 

• 

c 

E 



• s 

• 1 

X 







1 

1 

0) 

C 

>> 


• T— 

• 1 

<c 







1 

1 

E 

o 

to 



• 1 

X 


i /\ 





1 

» 

OJ 

X 

E 


• o 

• 1 

z 


0J 





1 

1 

p 

c 



• X 

• 1 

p 


p 





1 

1 

to 

p 

P 


• ’“3 

• 1 

w 


1 £> 





1 

1 

p 


c 



• 1 



i CO 





1 

1 

n 

p 

0J 


• >-< 

• 1 



1 P 





» 

1 


3 

E 


• CQ 

• 1 

CO 


c 





1 

1 


X 

0) • 



• 1 

X 


CO 





1 

1 

X 

OJ 

P 0J 


• Z 

• 1 

UJ 


1 > 





I 

1 


n 

CO QJ 


• UJ 

• 1 

H 


A. 





1 

1 

X 

3 

P c 


• H 

• 1 

U 


C QJ 





1 

1 

C*2 


n o> 


• H 

• » 

«*: 


0J P 





• 

1 

X 

>. 

3 


• P 

• 1 

X 


i bC C 



• • 


• 

1 


P 

^ cr 


• X 

• 1 



1 QJ QJ 



OC 


1 

1 

QJ 

P 

X OJ 


• 3 

• 1 

X 


P E 



■w 


1 

• 

P 

CO 

< to 



• 1 

o 


1 C 3 





I 

1 

P 

P 

X 



• 1 



i H C 





1 

1 


P 

UJ E 


• O 

• 1 

X 


V \/ 



X 


1 

1 

n 

c 

x <o 


• 3 

• 1 

o 





oc 


1 

1 

0J 

OJ 

e 


• H 

• 1 



I .. .. 



<< 


1 

1 

c 

p 

0J bO 



• 1 

X 





X 


» 

1 

o 

o 

P o 


• Z 

• 1 

UJ 


r-,r-. 



w 


1 

1 

c 

CL H e 


• o 

• 1 

CQ 


A A 



cx 


1 

1 

bC 


a 


• co 

• 1 

X 


•o "O 





1 

1 

P 

bC 



• co 

• • • 1 

=3 


c c 





1 

A 1 


c 

• H 


• UJ 

• • • 1 

Z 


I o o 





1 

P 1 

H 

p 

bO O 


• _J 

• • » » 



1 QJ QJ 





1 

X 1 

O 

e 

C P 


•• •• 


X 


1 V V 





1 

0J 1 

-J 

o 

P P 


X X 

X • » 1 

X 


1 V_« l_. 





1 

p 1 

P 

p 

P X 



CM • 

X 







1 

V » 

X 

n 

n 



Z 1 

p 


X X 





1 

i 



P CO 



O » 

X 


i <»: <c 





1 



Cm 

P 



CO 1 



1 X X 





1 

i 

• • 

o 

c 



CO 1 

X 


z z 





I 

X 1 

z 


E P 



UJ » 



p p 





1 

1 

o 

to 

CO 



—J 1 

H 







1 


p 

c 

e p 



• 1 



1 «—■ < 





1 

A 1 

H 

ca 

bfi C 

•• 


1 

X 


A A 




• • 

1 

P » 

X 

0J 

O P 

UJ 


1 

z 

M 

1 P P 




X 

1 

0J 1 

p 

E 

c o 

_] 


1 

p 

X 

0J 0J 




«« 

» 

P 1 

X 


a cl 

X 


1 



1 £2 JO 




H 

1 

C0 1 

C_J 

ca 


X 


» 


H 

co C0 




z 

1 

P 1 

CO 


OJ >, 

<0 


1 


Z 

1 r—i p 




X 

1 

\/ 1 

UJ 

n 

jC c 

X 


» 


X 

1 V V 




co 

1 

» 

a 

p 

P CO 

UJ 


1 


CO 




T3 P 

0) Qf 

p n 

Q. 

D 1CJ CJ 
CJ P P 
O C 
«0 P QJ 
P B 
n E 3 
C P C 
OJ P 
P CO 
O 0) 

<0 £: u • 
U H O C 
(0 o 

SZ —' -I 

o • o o 

^ oo o 

Cm .. I 

O C *— 0) 

^ ^ .c 
e p 

one 

.O *3 01 Cm 

E C bO O 
3 QJ Q> 

C E P P 

qj c s: 

ai h bo 

J3 CO P 
P P C C 
CO (0 

co a; 

O h L £ 

■h a. qj p 

E [l] £ 

P O P O 
J O P P 
«t qj 

ai 

•• bO 60 E 

z c c ca 

O P P C 
H J O 

H O P CD 
ft. H > H 

p p o p 
oc o e (0 

U Cm CL P 
CO C 

X >» >» <0 
Q U £ > 


to 

CO C 

P 

t- a» w 
o p n 

X 01 

p i. 

p a 

• P 

■O 3 £ 

QJ 3 

x: p o 
a 9 jc 
ra a£ 

QJ C P 
e P 3 

CO - -o 
•H *- C 
CO 

P o 
P P C 

e qj 

•H £ £ 

r-l QJ O 

oo (0 

QJ C 

x: to «o 
p p jc 
o 

C X 
QJ «* 01 

x: x p 

3 Z bO 
P c 
•o P 

qj cm n 

P P 
CO CO 

c - 
■h a) x: 

E H £ 

C CL P 
0) E 3 
P CO 

X 0) * 

CO 4) £ * 
P <0 C 
P P t~ 
P 3 T3 3 

3 Cm 0J P 

a V E 4i 
C CO E t. 
p 3 P e 


•O <m 

C O 
C0 



C <0 
0) 

01 0) 

3 -a 

p 

cj co 

JO 

x: 
p p 
Oj P 
CO 3 

0. co 

X3 P 
t- 

T3 co 
•—« p 
3 CO 
O 

sz 

C0 — 

co •“ 

0) 

3 C 

Ml O 

CO -H 
> 00 
(. 

X Qj 

c > 

X 

z - 

P O 

co 

o 

.. GO 
CO I 
z p 
o o 

P _J 
H P 
<c a. 

H 

M 

X • • 

H O OJ 
J CO S 


QJ 

b0 

<0 

CO 

CO 

0) 

E 


X 

_J 

a. 

X 

< 

X 

X 








1 

1 



1 

1 

A 











» 

c 











1 

o 











» 

p 











1 

n 











• 

n 











I 

0J 











1 

c 











1 

X 











1 

X 











1 

0J 








1 



• 

E 











1 

3 











1 

C 











1 

V 








1 



t 

II 








1 



1 

A 











» 

0J 











1 

P 











• 

£2 









MN 


1 

C0 











1 

P 









c_> 


1 

e 









w 


1 

C0 











» 

> 









X 


• 










H 


1 

E 









X 


1 

3 





a 




X 


1 

C 



H 


z 


(3 


X 


» 

V 



CO 

X 

o 


X 








X 

X 

o 

X 

P 

3 I 







p 

p 

X 

X 

X co 

o I 







X 

H 

CO 

H 

H P 

Z 1 




,—, 



m 


* 


* 

1 



1 

A 



33 

H 

E 

u 

H 

X 33 H 

X H X I 



1 

C 











1 

o 







Q 




1 

01 



H 


H 


z 

Q 1 







X 


CO 


O 

X 1 









X 


o 

p 1 







H 


p 


X 

X » 







CO 


X 


co 

H 1 







• 


* 


* 

« 1 



1 

,—, 











1 

A 











1 

p 










X 

1 

0J 











1 

£2 










H 

1 

to 










z 

• 

i—1 










X 

» 

V 










CO 

• 

>—• 



0-. 

O 0) 

x: 
c p 
o 

P O 
P P • 

co c 

3 P bO 
P m| p 
(0 3 00 

> n 

0J 0) H 

C co 

C 3 

o 0) a 
x: 0) 

X) P 
0; OJ 
«0 CO £ 
(0 C P 
jO bO 
P Oh 
0J CO O 
3 00 
Ml C0 P 
CO <*- 

> O 01 

C Ml 

CO CO 

QJ 

00 C JC 
0) O P 
P P 
3 CO C 
CL 00 O 
E 0J 
O L 0J 
O CL mI 
X £2 
0J CO 
• • P 

z o C 

O P co 

P C > 
t- a> 
a. E o 
P 3 P 

x c e 

U OJ 
CO OJ E 
U £ 3 
Q P C 


qj 


L- 

0J 

E 

3 

C 


OJ 0J 


£> p 
co CO 


00 C C. 

E CO CO 

t, > > 

O 

Cm C C OJ QJ 

QJ QJ P P 
bC bO bO L L 

C 0) 0> 0J 0J 

■H P P E E 

3 C C 3 3 

O P P C C 


Ml ♦ I ♦ I 

o 

0- .. 0J 0J 0J 0J 

TJ m( H m( H 

0J 0J P P P P 

.c 3 co co co co 

P O P P P P 

m| C C t. C 

>* mi co (0 co co 

m( co > > > > 

c 

o oj i- o o o o 

t- 4) H H -H t| 
CO bO L L L t. 
• • 0J OJ OJ 0J 0J 

CO 00 P E E E E 

Z C C 3 3 3 3 

O O -H C C C C 

Ml *H 

H W 

<C CD 
t— 0J 
b-i u 
X CL 
Ml X 
-J 0J 


n 

OJ 

3 0J 
Ml P 
CO QJ • 

> x: >» -o 

P (0 0J 

o Bn 

P 0J 3 

c- a> 

"O co E 0J 

0J C0 P 

p n c 

■H 0J Ml 
E E t. Ml 
P 10 0J -H 

mi C bO 3 

C 

0J 01 O L 
t- Ml P 0J 
CO P P 

c0 P 

n -h oj 

L. L. mI 
0) (0 • 
bO > M P 
0J CO 

P O P U 
C -H bO -H 
P t. 3 Cm 
0J O 

B E U 0) 
0J 3 P P 
P Z P P 

n 

>» < >» 
n * mi 
one 
p o u o 

C 4 4) 

0J P P 
n o p 3 
oj p oj p 
e p 
a o 
o p c 
oj i co QJ 
p p p 

P B P P 

o a p 

cent. 

P Cm CJ 3 


X} 

OJ 

>» 

CO 

p 

CL 

n 


■O 

n 


c 

o 

p 

n 

n 

OJ 

c 

Q. 

X bO 
0J C 
P 
bO 3 
c o 

p p 
■o p 
c o 

0J Oh 

Cm 

Oh 0) 
O P 
p 

c 

< Oh 
O 

.. QJ 

CO c 

CjJ O 

o 

>» 
CO P 
CO 

w -a 

X 0J 

3 

OC o 
O p 
CX P 
OC O 
CjJ Oh 


CO 

CO 

DJ 

OC S K 

cx. o o 
X o o 


a u u 

UD3 

J -J J 


P P 

P P 0J I 

30 n 

n c o 

O co HOP 

e cj e op 

p p j p 

co e n m p oj 

oj co p a. p n 

ns p 

co 3 ~ e p 3 oj 

c oj z x P 

e bo oc oj oj 

3 P (0 3 C 3 P 

o ca n h p p 

O bfl to M 41 (0 p 

o 0J oj oc P > 3 

p E * P 

CP 0J 0J 

to p QJ o. p p 3 

QJ P P P P P 

CP P CO 

e to -O 3 * > 

Z Oh C On 

O O O 10 O O' 01 

P P 0J P 

CD >, * 0) /\ p 

co oj co e o 

u n P 3 o oj - 

oc c a o e 3 ctn 

a. o n cj ftp oj 

x a. p o co i 

u n o p > 

0J P P V 

—1 e c P P Cm 

OJ P 3 o 0J 

CJJ C P 3 3 

CjJ P 0- C 0> P 

mJ <c >* o n to 

j e e p co > 

p o P P CJ 

* • c 3 c 

s x OJ QJ qj oj o 

CO E 0J P Cm 

0J P CO TJ X P 

bo c c e oj -o 

<0 >» CO c c 

n n oj o - p co 

W* P P TJ 

0J TJ P X 0J 

e co co oj n • O' 

p p jx n oj on 

QJ t_ 0J C • 

PCmCOOIhPOOn 
H O >P CXPPOn 


Page 22 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


178 




















c 

4) 


B 

O 

4) X 
3 Xh X •• 
P 60 (0 4) 

H C N 5) H 

x p i a x 
q> h a <d 
jo *) m h 

3 O P 
X OT P « 
C -H X P > 
■H *) -H (0 

e *h 3 

t. (U 3 C 
OX e a> 
<w CO D Q £ 
O 4) UJ P 
DL+Jf- 

ri a a ou ot 

O D D H 

mmt.li: 

c x x cc <D 

o w 0) u o 

o *) h -H 

0) C 2 O 

HI H -H H £ 

x p * o 
p x <u s 

3-0 c 

(0 0) 

3 >.60 

O • <0 ot • 

oj i. E n oj 

x <D ww 
O P C 4) OT 
O O B 4) 

E OT *H O 
4) x p 4> 

*j to id x; h 

mr uhh 

>,O0) -H 

OT X 3 

P O • 

•0 3 4) >, 

0) a ot 

P P TJ O P 

3 3 4) W X 

X O >> C OT 

•H Id O H 

X >» *H 0-0 
P X X 

OT 0) CO 0) TJ 
•H > P jC C 

tj 4) tj p ot 


P rH 

X rH 

rH 0) «H 

rH P 3 


3 E 0) 

(TJ rH 

0) X O 

rH 60 OT •• 

O O CO) 

OT X O 6C 

c a o co 

O OT 

O 60 0) OT 

C X 0) 

4) *H P E 

X c 

P -H E rH 

(0 O cc 

EE X -H 

O 0) P 

XX P 

Oh CM C 

0) I -H 

c x rH 

X P POT 

3 OP 

P X. -H 

0) O rH 

X (0 o 

>. CP 

0 ) (0 o 

60 rH p e- 

m a p o 

■hot *h p 

X *H -O H 

X TJ tj a. 

(0 <0 

O 0 ) c 

B C X 

«t 3 «« 3 

OT P 

• 0) • 0) 

*- X (\| L 


C* 



CC 

o 

O 

QC 

Oh 


O 3 

GO UJ 
O 2 
CO 

I «t 
8- 

O Q 


*H o 
a. P 


U] 


a. 

z 


X 

UJ 


a, 

a 


N 

I 


P 

O 





1 

1 

» 


X. 


>» 



4) 









4) 









1 

1 

1 






1 


o 


X 



X 





• 


E 


X 




4) 





» 






1 







P 



P 


■o 


4) 

rH 

1- 



OT 

X 


TJ 



1 






1 

E 

c 


TJ 


OT 




3 


X 


P 

rH 




■H 

P 


4) 



1 






» 

OT 

o 


0) 

OT 


c 


O 

CX 


OT 


OT 

■H 







P 



1 






1 

X 

•H 


TJ 


Xh 

•H 


P 

c 

P 

o 


>» 

3 

• 



4) 

4) 

OT 

C 



i 






» 

60 P 


Q) 

C 

O 




■H 

CX X 

X 

OT 


P 



X 

• OT 

3 

4> 



1 



•• 



I 

O 

3 


O 

•H 




TJ 


4) 

>. 

o 


P 

c 



4) 

TJ 3 

O 

E 



1 



Q 



1 

X 

O 


0) 


c 

X 


C 

X 

O 


Xh 

4) 

OT 

4) 

P 


X 

OT 

•H 

60 



» 






1 

Q. 

0) 


X 

O 

o 

c 


o 

4) 

O 



X 

X 

E 

X 


P 

O 4) 

> 

4) 



» 



O 



• 


X 


a. 

OT 

•H 

•— 


a tj 

OT 


4) 

P 

P 

X 

4) 



•H 60 

4) 

OT 



1 



P 



1 

0) 

0) 


v-r 

rH 

P 

W 


n 

OT 


4) 

rH 



*H 

C 


P 

OT 

X 




1 






1 

X 




OT 

X 



4) 

4) 

rH 

X 

X 

Xh 


3 



OT 

TJ X 

X 

OT 



1 






1 

p 

OT 


4) 


o 

CM 


X 

X 

rH 

P 

OT 

O 

M 

CP 

4) 


X 

4) O 





» 






» 


0) 


TJ 

TJ 

a. 

• 




■H 


P 


a: 

4) 

X 


P 

P P 

OT 

C 



• 



E- 



1 

o 

P 


O 

C 


rH 

• 

rH 

4) 

3 

E 


X 

—- 


P 



X OT 


•H 



1 



2 



1 

p 

OT 


B 

OT 

p 

P 

c 

rH 

X 


O 

X 

4) 


X 



OT 

E 

E 




» 



UJ 



1 

c 

■H 




c 

o 

o 

■H 

P 

p 

X 

E 

OT 

p 

4) 

X 


4) 

4) 4) 

O 

E 



» 



z 



1 

■H 

P 


<D 

E 

0) 


•H 

3 


■H 

Xh 

3 

3 

3 

X 

p 


P 

P rH 

X 

4) 



1 



o 



1 


P 


P 

OT 

X 


p 


E 



■»“> 


X P 

-H 


OT 

P X 

Xh 

rH 



1 



uj 



1 

B 

C 


OT 

X 

X 

» 

OT 

X 

O 


X 


OT 

c 

o 

3 


O 

OT OT 


X 



1 



co 



1 

OT 

■H 


•H 

60 

3 

c 

X 

4) 

X 

4) 

o 

OT 


-H 




■H 

■H 

OT 

o 



I 






» 

X 



TJ 

O 

o 

o 

4) 

P 

Xh 

X 



O 


4> 

C 


TJ 

4) X 

4) 

X 



1 



z 



1 

60 T3 


a> 

X 


•H 

CX 

4) 


>. 

X 

TO 

OT 

X 

« 

X 


C 

X OT 

rH 

X 



» 



c 



1 

O 

C 


E 

a. 

<D 

P 

o 

X 

P 

P 

4) 

4) 


0) 

3 

3 


•H 

P > 

X 




» 



X 



1 

X 

OT 


E 


X 

o 


a 

3 

4) 

TJ 

TJ 

m 

TJ 


P 




OT 

OT 



1 



u 



I 

a 



•H 

3 

P 

4) 

TJ 

X 

a rH 

OT 

•H 

X 

OT 

O 

4) 



X 60 -H 

•H 



1 



o 



f 


0) 



0) 


OT 

OT 

4) 

c 

4) 

4) 

> 

4) 

4) 

P 

X 

• 

s 

O C 

X 

X 



f 



cc 



1 

H 

o 


(1) 

c 

0) 


O 

P 

*H 

P 

X 

O 

> 

X 



X 

D* 

Xh -H 

OT 

P 



1 



Oh 



1 

o 



X 


r J 

P 

rH 

C 




X 

4) 


4) 

>. 

4) 

O 

X 

> 




1 








> 


P 

OT 

OT 

X 


■H 

60 

OT 

4) 

X 

3 

X 

C 

rH 

P 

—) 

4) P 


4) 



1 



X 



» 

•H 

0) 




rH 

4) 

4) 


C 


X 


O 

o 

-H 

C 

OT 

Ou 

O OT 

60 

« 



t 



o 




a. 

•O 


c 

TJ 

o. 

C 

X 

H 

■H 

OT 

OT 

*— 

X 

Xh 

P 

o 

■H 

CC 

a 

C 

3 



1 






A 1 




■H 

OT 

0) 


P 

O 

P 

•H 

P 

• 



3 


60 

u 

X TJ 

•H 

OT 



1 



z 



TJ 1 

OT 

a> 



O 

X 

4) 


-J 

a 



*— 

« 

OT 

O 

TJ 

4) 


OT C 

X 

O 



» 



•< 



C 1 


60 


TJ 

rH 


X 

4) 

M 

4) 

X 

X 


OT 

OT 

X 

4) 

X 

o 

OT 

P 




1 



cc 



o I 

OT 

OT 


<1) 


o 

P 

P 

a. 


4) 

4) 

c 

X 

4) 


4) 

» 

N 

>» 

OT 

C 

» 


1 



CD 



O 1 

TJ 

X 


OT 

O 

p 


OT 


o 

TJ 

X 

o 

o 

X 

p 

C 

«< 

s 

X P 


OT 

^-N 


1 



O 



V » 

OT 

o 


3 

P 


X 

C 

4) 

OT 

OT 

OT 

■H 

p 

TJ 

3 




O X 

«. 

O 



1 



Oh 



1—i 1 

O 

p 




0) 

p 

■H 

X 


4) 

X 

OT 

o 

TJ 

X 

4) 

4) 


E 4) 

OT 


3 


1 



Oh 



1 


n 


OT 

X 

a 

•H 

E 

H 

>. 

X 


X 

4> 

OT 

c 

C 

X 


4) P 

4) 

P 

u 


1 






Q 1 




•H 

0) 

c 

3 

X 


X 


4) 

4) 

> 


•H 

H 

P 

CO 

B 

X 

C 

z 


I 



3 



< I 


OT 



TJ 

0) 


4) 



4) 

X 

> 


C 


P 


UJ 

E 

OT 

4) 



1 

• • 


UJ 



O I 

• • 


• 

TJ 

X 

3 

B 

P 


TJ 

X 

P 


P 

OT 

C 

3 

c 

o 

P OT 


E 

4) 


1 

a 


2 



p 1 

Z 

E 

E 

C 

o 

cr 

OT 


CO 

C 

P 


- 

3 


OT 

O 

•H 

<« 

C X 

>» 

60 

4) 


I 

«C 





1 

o 

O 

OT 

OT 


0) 

X 

rH 

z 

OT 


E 

O 

X 

>» 


X 


CO 

4) 60 

X 

4) 

OT 


1 

o 


Q 



r—» | 

*H 

X 

X 

e 

c 

OT 

to 

rH 

o 

E 

Xh 

O 

CO 

P 

rH 

4) 


X 

CO 

•H O 

O 

OT 



1 

p 


«< 



A 1 


X. 

60 

B 

■H 


o 

■H 

M 

E 

M 

X 

O 

3 

X 

O 

TJ 

4) 

u 

O X 

E 



• • 

I 



O 

•• 


P » 

Oh 


O 

o 


B 

X 

3 

H 

O 


Xh 

CO 

O 

X 

C 

4) 

P 

z 

■H X 

4) 

E 

B 

u 

1 



—1 

X 


0) 1 

•H 

X 

X 

o 


OT 

a. 



4) 



1 

1 

3 

4) 

TJ 

O 


Xh 

E 

OT 

ifl 

—J 

1 




«c 


X 1 

X 

0) 

a. 


N 

X 


P 

1- 


• 

P 

E- 

P 

OT 

X 

H 

OT 

cc 

Xh <0 


X 

X 

X 

1 




H 


OT » 

o 

Xh 


OT 

1 

60 

60 

3 

M 

OT 

P 

3 

O 

3 


4) 

> 

X 

o 

3 O 

4) 

60 

60 

z 

1 




z 


rH | 

CO 

Xh 

0) 

■H 

•H 

O 

C 

CX 

Z 

■H 

X 

X X 

X 

C 

Xh 

o 

OT 

Oh 

OT C 

B 

O 

O 

«< 

1 




X 


V » 

UJ 

3 

X 

X 

P 

X 

o 

c 

HH 

X 

o 

c 

►H 

c 

OT 

4) 

X 

X 

X 

C -H 

OT 

X 

X 

X 

1 




CO 



a 

X 

p 

E-* 

r J 

Q. rH 

■H 

J 

P 

CX -H 


•H 

O 

X 

X 

o 

U) 

•H CO 

OT 

X 

X 

UJ 

1 




I UJ 
» CQ 


UJ 

t- 


O 

a 


I cc 

I u 


» u •• 

» CO X 


o 

Q 


3 •<« 
O 

X O 


<* 3 3 Z 

X O Z O Z 

i h I % 2 H 

<t H f- t - * 





1 1 

1 • 

1 » 



60 



1 

1 

1 







1 

1 

1 


1 

1 





• 1 

E 

T) 

C 



1 







1 







1 • 

OT 

4) 

•H 



1 







» 







• » 

OT X 

E 

X 



1 







1 







1 1 

4) 60 

3 

P 



1 







) 







1 1 

rH O 

OT 

OT 



1 







I 







1 1 

X X 

C 

4) 



1 







» 







1 1 

OT X 

o 

X 4) 



• 







1 







1 1 

H 

o 

P E 



1 







» 







1 1 

X 4) 


OT 



1 







• 







1 • 

OT X 

>> 

C OT 



1 







» 







1 1 

> P 

4) 

4) 



1 





• 


1 







1 1 


X 

X 4) 



1 





2 


1 







• 1 

60 C 

p 

3 X 



1 





)H 


• 





• • 


1 1 

C -H 


P 



1 





<t 


1 







1 1 

•H 

4) 

>> 



1 




• 

O 


1 





3 


1 1 

X P 

O 

X X. 



1 

• 



o 

«« 


1 





UJ 


1 1 

P C 

OT 

OT O 



1 

3 



2 



I 





2 


1 1 

OT -H 

X 

OT 



1 

o 



o 

E- 


• 

.. 






) 1 

O 

OT 

ot <b 



1 

2 



cc 

«« 









1 1 

>, X 


4) OT 



• 




3 

X 


2 1 







J 1 

c 

>, 

O 3 



1 

CC 




E-* 


o I 





co 


1 1 

OT OT 

X 

4) 



t 

UJ 



CO 



I 





UJ 


1 1 

•H 

o 

C 4) 



I 

3 



* 

>• 


o • 





p 


1 ) 

X, X 

E 

•H 



1 

CO 



o 

CC 


O l 





CO 


1 1 

O P 

4) 

4) X 



1 

2 



2 

E- 


CC 1 





<t 


1 t 


E 

X -H 



1 

< 



IH 



UJ CO • 





HH 


1 1 

4) O 


P 



1 




X 

UJ 


3 > 1 





cc 


f 1 

60 P 

4) 

>> rH 



1 

CC 



t- 

CO 


CO 8- • 





<T 


1 1 

OT 

X 

OT 3 



1 

X 



UJ 

«« 


2 UJ I 





> 



X X 

P 

E E 



1 

o 


2 

Z 

UJ 

2 

«C P 1 







t 1 

O 3 





t 

>H 


CC 

o 

p 

* 1 





o 



P 

Xh 

C OT 



1 


f- 

UJ 

CO 

Oh 

3 

•• - ) 





z 


1 A 1 

OT TJ 

O 

O 3 



1 

UJ 

X 

f- 

• • 

• • 

UJ 

2 UJ 1 





HH 


1 TJ 1 

4) 


•H O 



1 

> 

UJ 

t-H 

2 

2 

2 

-0 2 • • 





CC 


1 C 1 

OT C 

>, 

P rH 



1 

►H 

f- 

<T 




►H • 1 





t-H 


1 O 1 

4) -H 

X 

O rH 



1 

CD 

■*> 

Oh 




Uh • • 





CO 


1 O » 

OT X. 

4) 

3 OT 



1 


• • 

•• 











» V 1 

OT 4) 

> 

X 



1 

(r- 

< 

Z 




E- • 1 





3 


J 1_1 1 

X TJ 

O 

P 4) 



1 







1 





UJ 


1 1 

UJ 

r J 

OT O 



1 


cc 





* 





2 


1 ) 

C 

4) 

C C 

• 


1 


UJ 





1 







1 3 1 

4) 

X 

P 4) 

4) 


1 


3 





1 







1 UJ 1 

.. a, 


3 

E 


) 


CO 





1 







1 2 1 

2 X 

OT 

OT cr 

OT 


1 


2 





1 







I ) 

o 

3 

•H 4) 

C 


) 







1 








*H 4) 

O 

X OT 



1 


• 





I 







1 /\ 1 

t- > 

•H 

P 

4) 


1 







t 







1 rH I 

a. ot 

rH 

E 

t—i 

UJ 

» 







1 






X 

1 4) 1 

»H X 

OT 

X. OT 

X 

P 

I 







1 






<c 

1 X 1 

cc 


O X 

OT 

X 

» 







1 






t- 

I OT 1 

O P 

OT 

60 -H 

z 

1 







• 






2 

1 P 1 

CO OT 

•H 

4) O 

X 

< 

1 







» 






X 

1 V 1 

UJ X 

X 

W X 

OT 

X 

1 







1 






CO 

1 1 

a p 

f- 

X X 

> 

UJ 

1 







1 


CO » i—< 



C 


>» 0) 
rH P 

P (TJ 

C P 

0) TJ 

x a, 

X E 

3 E 

O -H 

E 0) 

OT X 

X P 

60 

o c 

X -H 

a. 

tj 

E-* Oi 

O OT 

_1 3 

•H • 

Oh 0) >, 

O rH 

0) -H rH 

-C > OT 

P 0) E 

TJ X 

OT O 

>,0) C 

OT rH 

•HO OT 

a. ot -h 

OT C 

t-i O C 

Q O O 

H 

0) P 

.. x o 

z P 3 

o x 

pc P 

t-« O OT 

a. c 

P >. -H 

05 X • 

O O OT 0) 

CO E -H T) 

UJ 0) X O 

a e (- e 


0 ) 

X 

p 

c 


tj 

0) 


a. 

X 

=3 

OT 

a; 

tj 

o 

o 

p 

3 

a 

p 

3 

O 

0) 


E- 


Z 

CO 


X 

o 

uj 

z 

UJ 

Oh 

«x 

o 

co 

UJ 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 23 


179 


















c 

03 

o> B 

3 0 1 - 0 ) 

X tx) L. <0 r~t 

0) O) C ^ Ol X) 

x x x cx co 

X 0) M Q. r-H 

4-5 X I CO X 

C 3 *H <0 

X Q. W *J H > 

C r| O H (0 

TJ X X 

a> e x 3 c 

X S. CO X 0) 

X O S. X r X 

a. <U, be 3 Q 

Ob o w 

3 (U I. TJ H n 

03 i—i CL 03 CU X 

o x rj 

0 ) eo a> a. a; a) 

tj c x 3 k a 

O OX L. CjJ X 

O O S. f-. O 

oj oj z x 

X 0) H *) H fj 

3 x x c • 

o. x x x b «< 

X 3 

3 03 03 03 

O -* X bO • 

O • CO 03 

03 0) S. >» 03 03 

x x 03 co oj co 

h O *3 E 0) 01 

O E O 

E <0 C 

•• 0) l. O 41 H 

2 : x ra -h x: h 

CO 0] £ *3 H H 

H >, O (0 3 

Z 03 U 

c X 0) • bC 

X TJ 3 a. 03 c 

u oi a o h h 

WPP o X 

X 3 3 • 03 C 

X O TJ C X 

1*3 X 0)0 1. 

a i. >ip o a 

•X X s. c 

U O) 0) -H 03 T3 

CO x > s. x c 

CjJ "O 03 Q. P (TJ 








» 

1 



1 1 












>» 

• 

C 

0) 




1 









1 

1 



1 1 












X 

03 

u 

i. 


• 


1 









1 

1 



1 1 








>. 





X 

3 

o 


03 


1 




• 





1 

1 



1 1 

rH 




4-> 



C 




0) 

•H 

X 

c 


TJ 


• 




X 





1 

1 



1 1 

CQ 




CQ 



cQ 




c 

bO 

03 

60 


O 


1 




X 

H 




• 

» 



1 1 

C 



»H 

X 



B 




o 

•H 

L. 

•H 


E 


1 




03 

X 




» 

9 



1 1 

t, 



CQ 

4-5 







— 

TJ 






1 



H 

-*-> 

H 




1 

1 



1 1 

0) 



C 

>» 



03 






03 

03 


03 


1 



H 


3 




1 

9 



1 1 

4J 



i- 

C- ^ 



3 

• 

, 


0) 

PH 

bO 

L. 


X 


1 



X 

e 





1 

1 



1 1 

X 

03 


03 

X E- 


X 

O 

c 



c 

PH 

CQ 

CO 


CO 


1 



3 

CQ 

0) 




1 

1 



1 1 

03 

X 


4-5 

C PH 


X 

rH 

o 

r—i 


•H 

CJ 

■H 



■H 


1 




U 

•—1 




1 

• 



1 1 


4-5 


C 

03 Q 


-H 

rH 

H 

X 


rH 

CO 

K. 

L. 


TJ 


1 



03 

bO 

o 




1 

I 



1 1 




H 

C*3 


3 

CQ 

X 

X 



<x 

J- 

03 


0) 


1 



X 

O 

03 

•• 



1 

1 



1 1 

L> 

>. 



03 w 




CQ 

1_1 


03 


C0 

X 


E 


1 



O 

t. 

C 

03 



• 

1 



1 1 

O 



C 

X 


( 

03 

O 



X 

t- 

o 

C3 


E 


1 



03 

Q. 

o 

bO 



1 

1 



1 ( 


-H 


CQ 

4-> 03 


co 

•H 

•H 

X 


X 

3 


CQ 


•H 


1 



C 


o 

ca 



» 

1 



1 1 

•*H 

TJ 





03 

X 

X 

o 



o 

bC 

i- 




1 



o 

to 


03 



1 

1 

E-* 


1 1 

T3 

O 


C 

>. X 


TJ 

E- 

•H 



c 

X 

C 

co 


03 


I 



o 

c 

03 

03 



1 

1 

PH 


1 1 

03 

E 


"H 

rH (0 

• 



TJ 

A 


•H 


■H 

X 


X 


1 




X 

X 

03 



1 

1 

a 


• 1 




CO 

a. x 

C 

>» 


O 

03 



X 

3 

o 


X 


f 



03 

C 

X 

E 

s 


» 

1 

Cx] 


1 1 

C 

O 


4-3 

X 

c 

rH 

• 

E 

c 


03 

o 

O 





1 



X 

■H 



c-» 


1 

1 



1 1 

CQ 

4-3 


C 

3 Q. -H 

rH 

03 


•H 


L. 


H 

c 


c 


1 



4-) 

co 

E 

x 

X 


1 

1 



1 1 




c 

03 E 

X 

3 

X 

X 

rH 


0) 

E 

rH 

s. 


•H 


1 




E 

O 

CQ 

< 


1 

1 



1 1 

O 

u 


o 

3 

CJ 

Cm 

CQ 

3 

1 


X 

t. 

o 

3 




f 



E 

0) 

S. 

X 

cc 


1 

1 

X 


• 1 

4-3 

03 



c •»-> 

3 

03 

E 

O 

E- 


O 

o 

X 

X 


TJ 


1 



o 

s- 

Cm 

*-> 

«- o 


1 

9 

«« 


1 1 


TJ 


4-5 

CQ 

t- 

03 

L. 

X 

O 


co 

X 


03 


03 


1 



L 



■H 

• o 


1 

• 

X 


1 1 

r-H 

t- 


c 

a co 

X 

03 

O 

X 

X 


t. 


03 

c. 


03 


1 



Cm 

0) 

M 

C 

(X 


1 

1 

o 


1 • 

O 

O 


c 

V 

03 

d 

X 

•H 

PH 


CO 

03 

S. 



3 


1 




X 

• 

X 

a. 


» 

9 

o 


1 1 

$~ 




E E-* 

C 

o 


3 

X 


X 

X 

03 

03 




1 



c 

*-> 

X 




1 

1 

X 


1 1 

4-3 

c 


03 

03 O 

•H 

3 

X 


V 


o 

X 

X 

bO 


>» 


1 



c. 


4-5 

03 

O 3 


1 

• 

X 


1 1 

c 

•H 


03 

X X 


03 

O 

TJ 





o 

CO 


rH 


1 



3 

Cm 

Cl 

X 

CO Cjl] 


1 

» 



1 1 

o 



O 

03 PH 

03 



03 

!—» 


X 

c 

co 

•H 

■ 

rH 


1 



X 

o 


X 

O Z 


1 

1 

E-* 



o 

*. 


TJ 

>. X 

•H 

C 

>. 

03 

A 


o 

•H 

L. 

L. 

c 

CO 


1 



0) 


•H 


CO 


» 

1 

z 


1 1 


t- 



03 

X 

(d 

X 

3 

• 




CO 

Jr 

o 

E 


» 



C. 

bO 

(0 

O 

9 <x 


1 

1 

C*3 



03 

03 


*— 

C 

X 

o 

03 


o 


X 

03 

X 

CO 

•H 



1 




c 

C 

4-5 

i-> 


1 

•• 1 

X 


1 /V 1 

L. 

4-5 

• 

• 

03 -H 



•H 

03 

c 

• • 

c 

L. 

o 

o 

X 

O 


1 



03 

X 

o 


O Q 


1 

H » 

X 


1 TJ 1 

03 

03 

E 

v— 

X 

>» 

L, 

t- 

X 

1 

<D 

3 

03 



CO 

c 


1 

•• 


bO X 

X 

E- 

J < 


1 

Z 1 

X 


1 C 1 

Cm 

L. 

CO 


X t. 

X 

03 

C0 


03 

L. 

o 

X 

TJ 

0) 

L. 



1 

E- 


<0 

c 

X 

O 

►H O 


1 

PH I 

cj 


1 O 1 

03 

a 

u 

C 

o 


X 

> 

o 

c 

CQ 

o 

E 

03 

X 

03 

03 


1 

PH 


X 

X 

X 

X 

a. j 


1 

K 1 



i a i 

c 

u 

bo 

o 

Cm X 

TJ 

03 


X 

•H 



3 

03 

X 

Q. 

■H 


1 

Q 


t. 

S. 

■a 

PH 

* 


1 

a. i 

E-* 


1 V 1 

CQ 

03 

o 

-H 

O -H 

03 

C. 

cQ 


rH 

03 

>» 

C 

X 


O 



1 

Cl] 


S- 

Q. 

T3 

a. 



1 

i 

PH 



t-. 

4P 

L. 

03 

TJ 

a 

cx 


03 

V 

X 

Jr 



bO 


C 


1 



C0 


<0 




1 


Q 


1 1 

t- 

c 

CL 


L. 03 

c 

t- 

c 

L. 

1_1 

C 

CQ 

0) 

03 

c 

Q 

o 


1 



'J 

03 


c 



1 

N | 

Cx] 


» E-« 1 


•H 


03 

03 

03 

03 

•H 

O 

r—i 

03 

C 

c 

c 

■H 

■«s 

**H 


1 

N 



E 

c 

L. 



1 

1 1 


1 PH 1 



E- 

> 

03 C 

L. 

X 


X 

A 

E 

•H 

•H 

•H 

3 

O 

X 


1 

t 



3 

«t 

3 



1 

rH 1 



1 O 1 


E-h 

O 


3 CO 

03 

c 

X 

•H 

X 

a) 

ffi 

X 

X 

O 

X 

o 


1 

r—i 



03 


X 



1 

P 1 



1 U3 • 

Z 

o 

X 

« 


Cm 

•H 

X 

TJ 

c 

•H 




rH 


3 


1 

X 


• 

03 

• 

03 



1 

O • 



I 1 

o 

X 

PH 

O 

<« Cm 

03 


03 

03 

3 

03 

• 

• 

• 

iH 

03 

tr 


1 

o 


•** 

L. 

<M 

L. 



1 

— 1 




PH 

PH 

X 

CO 

o 

t. 

E- 

X 


O 


t— 

C\l 

m 

o 

X 

X 


1 








U3 

1 

1 



1 /S 1 

£-• 

X 


O 



O 


bO 

o 

-H 




X 

X 

03 

•• 

1 








1 

1 


•• 

1 >H 1 

X 


4-> 

CO 

• 03 

03 

X 

E 

C 

1 

CQ 






C 

U3 

1 








—3 

1 

1 


X 

t 03 1 

PH 

03 

c 

1 

t. 03 

X 

PH 

C0 

•H 

t-b 

C 




03 

bO 

•H 

X 

1 








a. 

1 

1 


•< 

1 X 1 

X 

X 

03 

E- 

C 03 


X 

t- 

X 

CQ 

o 





c 


CX 

» 








X 

1 

1 


E- 

1 <0 1 

o 

4-3 

L. 

O 

X L. 

rH 


bO 

03 

X 

•H 




C 

H 

03 

2 : 

1 








<« 

1 

1 


Z 

» rH 1 

CO 


C. 

.3 

•H TJ 

rH 

03 

O 

■H 

o 

X 




CJ 

L. 

•H 

< 

t 








X 

1 

• 


>4 

1 N/ 1 

U3 

o 

3 

PH 

TJ TJ 

•H 

X 

t. 

X 

V 

Cl 




rH 

3 

X 

X 

1 








C*3 

• 

1 


CO 


a 

4-3 

O 

X 

03 <0 

3 

E- 

a 

0) 

L — 1 

O 




CO 

TJ 

E-r 

U3 

1 






1 

1 

l 

l 

1 

l 



03 


TJ 





c 


0> 







1 

1 

1 


1 

1 

1 

1 

9 

9 



03 


TJ 





» 

1 


c 

TJ 

03 

03 

o 




03 


X 







1 


» 

9 



TJ 

0) 

03 

O 




l 

l 


X 

C 

X 

X 

X 




03 


X 







1 


1 

9 



C 

X 

X 

X 




l 

i 


X 

0) 

X 

rH 





3 


TJ 



• 

X 



1 


1 

9 


c 

03 

X 

' X 





l 

l 


X 

03 


CX 

J- 




X 

bp 

E C 



X 

X 



1 


1 

9 

C 

X 

03 


0 a. 

s. 




l 

I 

c 

X 


Cm ^ 

CX 

03 


03 

03 

03 

C 

O CO 


X 

X 

X 



1 


1 

9 

X 

X 


Cm 

m 3 a 

03 

03 



i 

1 

X 

3 

*— 

O O 

3 

X 


X 

X 

X 

X 

1. 


X 

03 

3 



1 


1 

9 


X 

*— 

O 

w 3 

X 

X 



l 

l 



• 

a. 

03 

C3 


CO 

X 


03 

u 


X 

X 




1 


1 

9 

>» x 

• 


03 

0 

CO 



1 

I 

X 

03 

«— 

t. W 


CO 


X 


X 

X 

CO 

• • 

3 


03 



1 


9 

9 

X 

3 

T— 

L 

X 

CO 

X 



1 

l 

rH 

TJ 


03 

t. 

C. 


TJ 

c 

3 


tsj 0) 

03 


E 

X 



• 


9 

9 

X 



03 

3 t- 

t. 

TJ 



l 

l 

X 

O 

C 

03 X 

03 

CO 


03 

X 

a 

03 

1 CL 

X 

03 

CO 

0 



1 


9 

9 

c 

03 

c 

03 

Q. 03 

ca 

03 



l 

l 

c 

O 

o 

3 3 

03 

X 


E 


c 

X 

x a. 

X 

X 

Ir 

n •• 



1 


9 

9 

03 

TJ 

0 

3 

X CO 

X 

E 



I 

1 

03 


X 

a 

3 

o 


E 

TJ 

X 


X co 

ca 

0 

bo 

C 03 



1 


1 

9 


O 

X 


3 3 

0 

E 



l 

l 

t* 

X 

03 

«< X 




X 

0) 


E 

0 

r—i 

03 

O 

O bo 



1 


1 

9 

u 

O 

03 

«C 

O 


X 



1 

1 

t-b 

X 

1. 

3 

CO 

X 



X 

u 

(0 

X 

X 

C 

Lr 

0 ca 



1 


1 

9 

3 


L. 


«0 

X 




I 

l 

3 

3 

03 

o 


X 


03 

X 

0 

u 

X x 

CO 

O 

CX 

03 



1 


9 

9 

O 

X 

03 


be 

X 

03 



l 

I 

o 

CO 

> 

• 

03 

03 


X 

CX Cm 

bO X X 

> 

O 


03 03 



1 


9 

9 


X 

> 

• 

C 03 

0) 

X 



l 

I 


Cm 


X X 

a 

c 


X 

CL 


O 

x 3 

co 


bO 

X 03 



1 

• • 

9 

9 

E 

3 


X 

x 0 

c • 

X 



1 

1 

E 

03 

•b 

t. o 

c 


• 


3 

03 

i~ 

3 


03 

C 

X E 

B 


1 

E-* 

9 

9 

(0 

CO 


L 

x c 

Sr 


U3 


» 

» 

«0 

TJ 

O 

o c 

03 

03 

£. 

c 

03 

r—i 

Or 

s 

c 

X 

X 


C- 


1 

Z 

9 

9 

L 

<M 

O 

O 

03 03 

03 03 

c 

> 


i 

I 

a. 


CO 

a. 3 

C. 

X 

03 

X 


O 


TJ Q 

03 

X 

c 

E X 

2: 


1 

X 

9 

9 

to 

03 

co 

a. x u 

X X 

X 

< 


l 

I 

bO 

03 

o 

a. 

03 

E- 

X 


03 

03 

0) 

03 Cx3 

X 


X 

O CO 

< 


» 

cc 

1 

1 

O 

TJ 

0 


r-t 03 

E-r CO 


CO 


» 

t 

O 

X 

CO 

X 

Cm 


03 

TJ 

TJ 

C 

X 

X E- 

X 

E 

CO 

L. X 

CC 


1 

cu 

9 

» 

L 


ao 

X 

Cm 

X 

TJ 



i 

i 

t- 

E- 

1 

3 t. 

03 


X 

03 

O 

O 

X 

cx a. 


O 

E 

Cm 4 J 

«- C 


1 

w 

9 

I 

a 

03 

1 

3 

L. 03 

bO 

03 



• 

I 

a 


H 

CX o 

U 

» 

bC 

03 

O 

O 


3 CD 

03 

U 

03 

X 

• O 


1 


I 

1 


-C 

E- 

a 

O L. 

• 03 

03 



I 

I 



o 

X Cm 


X 

03 

3 



03 

u CC 

X 

<M 

t. 

N C 

*- cc 


1 


9 

1 

H 

e- 

O 

X 

Cm 

X U 

3 

2 : 


1 

1 

H 

• 

X 

3 

X 

c 

L. 


X 

03 

X 

u cc 




1 X 

a. 


f 

2E 

9 

1 

O 


.] 

3 

X 

c 1 


c 


l 

1 

o 

0) 

PH 

O 03 

X 

03 

1 

>» 

3 

X 

X 

0) U] 

03 

c 

0) 

X 

» 


1 

«< 

9 

1 

-3 


X 

0 

03 X 

03 O 

>. 

cc 


l 

l 

X 

o 

a. 

03 

X 

E 

CJ 

X 

a x 

X 

X E- 

O 

t- 

X 

X 0) 

0 3 


1 

cc 

9 

1 

X 

• 

cu 


03 X 

E 

rH 

CJ 


I 

l 

PH 

X 


03 03 

3 

CX 


rH 

X 


2 

c z 

X 

3 

X 

O X 

co b] 


1 

0 


1 

CU 

03 


03 

03 3 

CX 0> 

X 

o 


I 


CL. 

> 

L. 

X L. 


X 

03 

CO 

3 

03 


x x 

0 

X 


X 

O Z 


» 

0 

9 

1 


O 

Li 

r-t 

L 

X X 

CO 

cc 


l 

l 


03 

O 

O TJ 

X 

3 

X 

E 

O 



* 

X 

0) 

Cm 

X 

CO 


I 

cc 


1 

03 

X 

O 

c 

TJ X 

3 X 

E 

CL. 


» 

r— i | 

03 

TJ 

Cm 

03 TJ 

CO 

CJ- X 

L 


O 

• 

03 B 

0 

U 

O 

CO O 

» < 


1 

cu 

9 /\ 

• 

-C 

> 

«m 

03 

TJ CO 

CP 

Sr 



l 

A | 

X 



C CO 

X 

03 


O 

03 

03 

t- 

X 




c x 

E- 


1 


1 TJ 

1 

X 

03 


C 

<0 X 

03 C 

O 

Cz] 


1 

TJ I 

X 

03 

L. 

O 

X 


c 

c 

X 

X 

0) 

03 


Or 

X 

0 

0 a 



H 

1 C 

1 


TJ 

u 

O 

X 

X 

c 

r> 


i 

C 1 


U) 

0) 

O C 


u 

X 


E- 

O 

X 

>b bO 


bO 

3 

x t-b 

m3 c 


U3 1 

z 

9 O 

• 

CO 


03 

O 

c 

L. 


c 


l 

O 1 

03 

CO 

X 

CO 

03 

03 


03 



0 

co ca 


<0 

CL 

X 0 

X O 


> 1 

X 

9 O 

1 

X 

X 

X 


(0 03 

03 TJ 

03 

CO 


I 

O I 

03 

L. 

03 

03 

X 

X 

TJ 

X 


E 

CO 

E 03 

• 

X 

X 

X J 

a. m] 


< 1 

cc 

1 V 

1 

c 

C 

03 

03 

X 

X C 

X 



l 

V 1 

> 

O 

L. 

XXX 

X 

C 


• • 

03 

L. 

03 

03 

u 

3 

TJ X 

B 


C/} » 

cu 


1 

•H 

X 

C. 

X 

>> x 

X 3 




I 


co 

X 

Q. X X 

CO 

O 

3 

c 

2! 

X 

co 

C 03 

03 


O 

tj a. 



1 


1 

1 

u 

u 

CL X 

X CO 

O O 

c 



f 

1 

CO 

03 

t- 

CX x 


O 

o 

CO 

03 

X 

O E 

CO 

<0 


CO 



r~« I 


1 h 

1 

cu 

a 

U 


CX X 

Cm 

0 



I 

U3 I 



03 

O CX 


03 

Cm 

X 

X 

>* 

0 

X 

03 

0 

03 

c 



N 1 


9 Z 

1 



03 

O 

cx 

03 

X 



» 

> 1 


03 

X 

X 3 

a 

03 


X 

z 

03 


X 03 

O 


E 

c u 



1 1 


9 PH 

1 


03 

X 

X 

3 a 

03 03 

X 



t 

«< » 


X 

C 

03 

E 

3 

03 

o 

<s 


X 

co X 



3 

< 3 



X 1 


9 K 

9 


X 

c 


03 E 

3 X 

0 



i 

CO » 

z 

X 

X 

X 

3 


X 

3 

X 

TJ 

3 

t- E- 

X 


03 

X 



X 1 


1 CU 

9 

z 

X 

X 

X 

3 


3 



i 

1 

o 



3 C 

•*”> 

O 



CJ 

03 

a. 

03 

X 

• 

03 

• 03 



O 1 


1 

9 

0 



3 

C •'-> 

O TJ 

Sr 



I 


►—( 

c 

E-* 

CX CO 


X 

TJ 

X 

U3 

X 

X 

CX 

X 


C. 

CM It 





1 '— 1 

9 

X 

c 

E- 

CL 

CO 

X 03 

X 



I 

/\ 1 

H 

o 

o 

X C3 

CO 


03 

CO 

2: 

3 

3 

0 * 

3 





•• 

1 


1 A 

9 

E-* 

0 

O 

X 

O co 

X 

CO 


• • 

l 

rH 1 

Cu 


X 

3 


03 

L. 

C 


X 

0 

03 






Cx] 

1 


•• 1 X 

9 

cu 


m3 

3 


03 C 

c 


X 

I 

03 1 

PH 

X PH 

O E 

c 

C 

O 

X 

UJ 

X 


• X 

X 





m3 

1 


X 9 03 

1 

X 

>b 

X 

O 

E C 

C X 

X 


< 

» 

X » 

CC 


a. 

0) 

X 

X 

X 

• 

cu 

u 

>> TJ O 

3 





a. 

1 


«< 1 X 

1 

£C 

t. 

cu 


03 X 

X Sr 

• 


E- 

l 

CO » 

o 

o 


03 X 

X 

X 

03 

03 03 

«< 

X 

U 

03 03 

CL 





2 : 

1 


E-* 1 CO 

1 

0 

0 


co 

X X 

X CX 

03 03 


Z 

l 

X 1 

co 

E 

03 

X 03 

X 

3 


X TJ 

CJ 

03 

03 

> C 

X 






1 


Z 9 X 

9 

CO 

E 

03 

X 

eo x 

3 

X TJ 


>• 

» 

V 1 

UJ 

03 

X 

XXX 

o 

0) 

X O 

co 

X 

> 

CO O 

3 





X 

1 


>H | V 

9 

•J 

03 

X 

X 

>b X 

O 03 

X O 


CO 

l 

*—' • 

Q 

E 

X 

X 03 

3 

l- 

X 

E-* E 

U3 

TJ 

03 

03 O 

O 





C*3 

1 


CO 1 1 —. 

9 

a 

E 

X 

X 

03 3 

S- X 

E- E 

Page 24 






Dr. 

Dobb's Journal of Computer Calisthenics & Orthodontia, 

Box E, Menlo Park CA 94025 






April 1977 


180 















QJ C 

3 3 

CO 

3 W 

t. <U 

CX tO On 

O to o 

S-. Q) 3 

SZ CX S-. tTJ <L> a> 

o q. -a to to 

3 TO t) bfl 3 3 

to roc 

£ bU C -H <D >> 

c sx 3 4-> sx ro 

O 3 3 C C 3 E 

3333 ro 3 

3 QJ O 3 O’ W • 

xjes-cxiotuaixj 

0 3 C. C QJ 

bo to >> qj 3 a 

C >1 C f—I 4-> 4-> "H 

C0XDX=3XJO3l0 
x: 3 c to c o qj 

O 3 3 QJ 3 C, XJ 

C 3 CO 

01 QJ C CX 01 C Cm 

XJ E XJ 3 E O 01 3 

CX Q> Q) 3 XJ 10 

C 3 3 SZ •'“> 3 to 

ro 3 ro +-> h c 

o o’ c ro o 3 o 

CU 3 bO _J ro 3 

>> E C Cm I-I JZ 4-> 

3 3 SX 3 O D, |j OJ 

•h ro qj o rj 

H L, P ID to O o 

2 -HO <—I C » to rH 

o x x x a o ^ 

hh mao -h zz « 3 

H CX 3 ro XJ 3 O X c 

<t roctuccooro 

c_j o tu ro o •- co +j 

►h o. - cx^ to 

U-. 3 to - 3 0 

►H 300C0HH0C 

(3 a > C O U H 

o 3 3 3 3 ro QJ 3 
S 3333 3 S3XJCX 

O CO 3 O SX O 3 

1C V.C03Q.3>»S* 

utj 3 c sx c o 3 sx c 

fc-« 30 3 sx to o QJ 

t/) 0.-30 to 0.0 E 3 

>h C3\ccxotuc 

co h oh-h ron e-h 


E -3 E-* • 

- o c ro coo 

O 3 O L. <m QJ J XJ 

f-t to Cm O O CO > H o 

XJ >, <m 3 o a. cj 

ro ro (m tu >> o h 

•*■> OW »*JHroOrl£ 
t- ccoor-tcxroo 
aocroE*Hros-3b03 
e o o c ro c o oro 

33t-Ht-CroO-3CrH 
■nfl.*jroto>HXH >, 

ro o jo o d-< ro 

oococroro won 

x: x: 3 3 o. 3 c c a. 

3 3 be c ro O 3 ff) 

3 o bo o o. 3 ro 3 

Cm ro (m 3 c (m e x: "o 

03CX33 3C03 

oo3>c-->oro o 

to 3 O to ro O 3 £ 3 

3 3 to to 030 0 

3 ro o o «•£ c > 3 m 

ro > cx xj to3 03 ro3 

333 CE E 3 E 

qj ro ro ro ro ro ~ ro c 

T3£ C3 CC3C30 

30 tobooroco3 
to 33C03C0C3 
O * X 3 3 03 03 o 
> X O XJ Cl 3 01 3 CO <0 

3 0 to xj 3 ro qj 

bOOO • O bflo X 03 
»- C33croooT3ta 
C O C 3 XJ E 

OCEOC3CC33L. 
30 EOC3ro>roo 
33 ro o. «m 3 o x: c 

0 3 3 C O t, 3 

oro03too.»oa w 

(0 O 3 O’ O toe 3* 

O OO-UOOOXH 
bfl 3 ro 3co*-3oo 
C O 3 > ro 3 O 3 _J 
3 C 3 3 01 > <m T3 M 

33 a o. ro be o o c bo. 

o ro 3 c xj a ro ro 

3 to XJ 3 O 3 C 

3croo3>,oo - bo • 
03 ^roro33cox 
<3 3 o 3 c 3 o os-ro 

CX)OroO.t0C3O.3 
0(0 O. Q. to C 0 3 c 
X30C030(0'U < m>, 
t-.t033ff)*00300t0 




1 1 

1 1 

1 1 








1 

• 

• 

• 

1 

1 








XJ 







vO 



3 



QJ 




1 1 








1 

1 






E 


0) 










3 



3 

3 



1 1 

ro 







1 

1 





X 

to 


XJ 







3 



CX 



3 

C 



1 1 

c 

E 


>, 




1 

1 





tu 

e 


3 



ro 




3 



3 

3 


3 

QJ 



1 1 

ro 

O 


3 




1 

1 





3 x: 

bO 


> 

XJ 

tu 




XJ 

XJ 



3 

3 


3 

E 



1 1 


3 




O 


1 

1 




E 

O w 

o e 


o 

tu 

• XJ 

to 



c 




QJ O 

CX 


3 

CX 



1 1 

c 

CO 


T3 


3 


1 

1 




tu 


t. o 


e 

3 

u 

3 



to 

Q> 

u 


XJ Z 

3 

3 

CO 

3 



• 1 

o 

>t 

c 

O 


ro 


1 

1 




3 

CO Cl, 

a 3 


CX 

a 

tu o 

3 




s~ 

0 


3 < XJ 

3 

3 

XJ 

3 



1 1 

3 

to 

3 

o 


3 


1 

1 



a> 

CO 

<U Cl. 




o 

3 3 

E 

e 


to 

ro 

Cm 


06 QJ 

O 

a 

3 

cr 



1 1 

3 



c 


ro 


1 

I 



3 

>» 

3 tu 

XJ to 


tu 

o 

tu 

t. 

0 


3 




bO O XJ 


3 

to 

QJ 



1 1 

3 

o 

L, 

o 


o 


1 

1 




to 

>> «- 

c c 


x: 


e E 

tu 

<M 


3 

0 



C O 3 

XJ 

3 





1 1 

o 

£ 

o 

t. 


s 


1 

1 



c 


3 

ro o 


3 

tu 

ex tu 

a 



to 


X 


3 06 > 

O 

0 

Cm 

QJ 



1 1 

o 

3 

3 

o 


E 


1 

1 



CO 

E 

O 

3 



e 

X, 3 


to 


3 

3 

0 


s- 0 - 0 

to 


3 

> 



1 1 

X 


3 

(m 


3 


1 

1 



o 

3 

^ 3 

- 3 


o 

to 

tu to 

3 

c 


to 

s- 

00 


3 S- 

tu 

QJ 


3 



1 1 

o 

3 

c 

O 




1 

1 




E 

C\J 

C. o 

• 

3 


3 >» 3 

0 



0 

w 


XJ H CX 


-C 

3 

3 



» 1 


O 

o 

t. 


O 


1 

1 



•» 

3 

cr> o 

tu 3 

tu 



c to 

3 

3 


e 

CX 



2 

QJ 

3 

ro 

to 



1 1 

o 


E 



sz 


I 

1 



•o 

C 

*- o 

3 e 

CX 

00 

to 

3 

3 

3 


0 


f- 


E 3 QJ 

S- 


x: 

C 



1 1 

3 

U 


o 


3 


1 

1 



tu 

3 

co o 

C 3 

to 

QJ 

C. 

tu 

to 

to 


Cm 

3 



tO 06 £ 

O 

C 

3 

a 


u 

1 1 

ro 

O 


3 




1 

1 



3 

E 

W o 

3 to 

3 

O 

o 

tu x: 


s~ 



to 

3 


3 CX. 3 

Cm 

tu 


QJ 


>4 

1 1 

c 

CO 

ro 



c 


1 

• 



3 



£- C 


C 

3 

SZ 3 

XJ 

tu 


0 


3 


C 

QJ 

X£ 

XJ 

3 


CQ 

1 1 

3 

3 

c 

3 


3 


1 

1 



3 

ro 

X E 

CX 3 

£- 

QJ 

o 

3 

c 

CX 



to 

XJ 


CO - ~ 

XJ 

3 

QJ 

r—i 



1 1 

E 


t. 

3 




1 

1 



3 


co O 


QJ 

X, 

tu 

to 

to 

0 


3 

s- 



SZ ^ 



XJ 

to 



1 1 

C 

«X 

o 

3 


XJ 


1 

1 

2 


c. 

c 

e 

- to 

CX 

a> 

> 

C 5 




sx 

0 

XJ 


rj .. .. 

M 

«. 

c 


• 


1 1 

o 


3 

3 


O 


» 

1 

O 


3 

3 

- (m 

tu <u 

to 

3 


3 o 

>> 0 


0 

3 

c 


QJ CX Cl] 

» 

XJ 

QJ 

a 

QJ 

E- 

1 1 

3 


X 



n 


1 

1 

3 


to 


£- 

3 > 

CX 

tu 

o 

x: 3 

s- 



CX 

to 

to 


E Q > 

3 

QJ 

E 

0 


O 

1 1 


• 

O 

3 


3 


1 

1 

3 


3 

C 

O XJ 

O 3 


e 


3 3 

c 

3 



O 



v_, < 3 ; 

3 

> 

E 

Cm 

3 

J 

1 1 

O 

c 


ro 




1 

1 

«< 


XJ 

o 

CO <U 

tO bO 

E 


3 

3 ro 

E 



QJ 

3 

Q) 


QJ CO 

O 

3 

O 


3 

3 

1 1 

3 

o 

c 

x: 


X 


» 

1 




3 

to to 

c 

o 

•• 

>— 

5 

tu 

3 


to 

XJ 

3 


as ^ 


QJ 

O 

XJ 

to 

cx. 

1 1 


3 

ro 

3 


3 


1 

1 



10 

3 

tu to 

O Q 

u 

c 


3 

E 

c 


3 

C 

XJ 


(0 < 

Cm 

O 

QJ 

QJ 

tu 


1 1 

3 

3 




3 


1 

• 

<C 


to 

ro 

o tu 

O 

3 

o 

tu 

^ to 


tu 



3 

to 


o a; z 

O 

QJ 

S, 

CX Cm 

x 

1 1 

O 

ro 

<M 



ro 


1 

1 

3 



O 

O I- 

X 


3 

XJ 

zz sz 

>, 

X, 


to 


3 


to 0 < 


SX 


O 


o 


_3 

C 

o 

3 


E 


1 

1 

CO 



3 

J- XJ 

ro 3 

E 

3 

o 

r— 3 

3 

tu 


QJ 

to 

3 


QJ 0 E 

3 


to 

3 

to 

06 

1 1 

3 

o 


3 


U 


1 

• 

2 

2 

T— 

(m 

CX XJ 

XJ 

tu 

ro 

o 

Cl, 

c 

Cm 


c 

3 

CO 


06 O 

3 

to 

3 

QJ 

3 

CL, 


a. 

CX 

to 

X 


o 


1 

• 

3 

O 

• 

3 

ro 

to c 

3 

e 


f\J 3 

0 

Cm 

• 

3 

3 

> 

• 

C CX. 0 

CX 

3 


> 

JC 


1 /V 1 


o 

to 

to 


c 


1 

1 


3 

T— 

X) 

o 

to <u 

to 

tu 

3 

W c 

1 

3 

3 

3 

to 

to 

>» 

to 06 

c 


3 

QJ 

3 

3 

i ro i 

to 


o 

■—■ 




1 



3 


oco >, 

CX 

>» 

CX 

3 

tu 

XJ 

XJ 

c 

3 

3 


3 

>h CX, 

3 

M 

3 

XJ 


3 

1 C 1 

o 

3 

L 



ro 


1 

to 1 



C 

E 

o u 

XJ CX 

to 

o 

CX 3 E 

to 


tu 

0 

CO 

to 

CX 

QJ <6 


» 



SX 

X 

1 o • 

to 

ro 

TJ 

o 


3 


1 

3 | 


CX 

o 


CO o 

tu <c 



3 

2 : tu 

tu 

tu 

E 

sx 


3 

E 

XJ —1 lx] 

SX 

3 


CO 

0 

u 

1 O 1 

3 

c 

•o 

3 

• 



1 

X 1 


X 

3 

3 

E 

to 

E- 

to 

3 

-3 bO 

e 

3 

CX 



to 

QJ 

3 O- S» 

O 

3 

» 

3 

Cm 


1 V 1 

ro 

c. 

ro 

3 

c 

C 


1 

1 


o 

to 

3 

C tu 

3 

O 

3 

O 

0 c 


3 

3 

0 

• 

XJ 


> CO <6 

Cm 

O 

to 




i >_i i 

o 

o 


CO 

o 

o 


• 



3 

J- 

O 

(0 E 

• 

3 

L. 

s 

3 (0 

c 

3 

3 

N 

to 


SX 

O 3 CO 



QJ 

bO 

Q» 


i i 


3 

o 

3 

3 

3 


1 

N • 


Cl, 

tu 

3 


tu tu 

3 

to 

3 

e 

3 

3 

O’ 

3 

3 

XJ 

QJ 

s- a 

to 

tM 

to 

c 

XJ 


1 Ul 1 


X 

x: 


3 

3 


1 

1 1 


2 

> 

3 

3 tO 

CX o 

CX, 

3 

3 

c e 


3 

tu 


<0 

to 

Cm 

CX XJ 


3 

to 

3 

3 


1 >H | 

•• 

o 

3 

CX 

O 

O 


1 

3 1 


O 


3 

o to 

>> 3 


to 

3 

0 to 

XJ 

to 


XJ 

XJ 

QJ 

Cm 

Cm C 

0 


QJ 

E 

> 


1 X 1 

2 



e 

3 

3 


1 

3 1 


CJ 


3 

tu 

3 > 

tu 


C 

3 

tu 

XJ 

tu 

QJ 


SX 

3 

0 0 ro 

tu 


'J 

E 

O 


1 1 

O 

c 

X 

3 

t. 

e 


1 

O » 



o 


bO O 

tu tu 

x: 

f - 

3 

3 C 

3 

3 

> 

XJ 

sx 


XJ 

3 

sz 

• 


ro 

s- 


1 r—l 1 

3 

ro 

3 


3 

3 


1 

___ | 


3 

CO 

X) 

C O 

3 XJ 

3 

o 


CO to 

to 

to 

3 

3 

0 

S-. 


C - 

0 

s- 

C 

a 

CX 


1 /v 1 

3 


a 


to 

« 

• • 

1 

1 


2 

o 

tu 

3 (0 

tu 



tu 

0 

e 


3 

> 

Cm 

0 

3 

a 0 


QJ 

O 

bO 



••131 

a. 

o 

a co 

C 

c 

u 

1 

1 


to 

co 

3 

3 1 

3 tU 

bO 

3 

CX 

O CO 

0 

0 

to 

O 


Cm 

3 

QJ 3 •• 

QJ 

3 

3 

O 

3 


X 1 O 1 

3 

3 

3 «. 

3 

3 

-J 

f 

1 


z 

i 

3 

tO E 

bO 

c 

3 

>-> 3 3 

CX 3 

c 

e 

T— 


E 

XJ 3 H 

C 

O 

3 

(X 

3 


< 1 O 1 

06 


ro 

3 


• 

a. 

1 

1 


a. 

3 

CO 

3 O 

ro to 

3 


3 


JX 


sx 

CX 



to 

S^ tO 2 

3 

to 

to 

CX 



3 • ro i 

o 

3 


O 

to 

to 01 

X 

1 

1 


3 

O 

3 

to XJ 

C. 

XJ 

C 

tu 

E to 

0 

!X 

tu 


4_> 

zz 

c 

0 a 3 

3 

C, 

a 


3 


2 13 1 

CO 

3 

c 


3 

3 T3 

< 

1 

1 


X 

3 

to 

C C 

XJ O 

tO 

tu 

3 

0 3 

r J 

(U 

3 

tu 

S- 

0 

to 

QJ 06 

3 

to 

QJ 

0 

(0 


>4 1 V I 

UJ 

X 

ro 

3 

JZ 

-C O 

X 

1 

1 


O' 

3 

C 

O to 

C 3 

o 

x: 

tu 

e x: 

c 

to 

3 

X! 

O 

-=r 

sx 

c ax 

O 

sz 

CX \ 

-C 


CO 1 «—< 1 

a 

O 

o 

a. 

3 

3 e 

CO 

1 

1 


to 

a. 

3 

o s- 

to to 

3 

3 

3 

(M 3 

3 

3 

ro 

E-* 

a 

— 

3 

3 0—' 

SX 

0 

O 

3 

3 


April 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 25 


181 







co 


3 

o 

ft X 

ca a) 

P 

n 


>» 

ft 

<o » 
ft tj 

O 4) 
Q. X 


tj 

CD 


4) 

0) £ 
£ *5 
P 

C 

X X 


A 4) 4) 0) 
C 3 T3 4J 
L L H (d 
CD P > ft 
*3 O <0 

p o ft a. 
<o p a 4) 
a. tn 


to 
TJ c 
4) X 

o 3 

c o 

<v X 
ft X 
4) o 
X X 


CD CO 

x: c 

P X 
E 

X ft 
x a> 
O P 


TJ -• 


O I 

Cl « 


4) 

P 


P V 

I c • 
a> /v 
i E a> 

0) TJ 

: p o 
ro o 
p a 

I C0 O A 
V 4) 

{-. -o 

OHO 


0 ) o 

TJ X 

O P 

O A (0 
O.TJ 3 
O ft C A 


ft 0) 

0 3 0 

P 

P 6 — 
4) 4) 

H P U 

m 

4> >» — 
X 00 

bo => 
c P 
X C — 
10 0) 

00 -3 
I (0 <u 
I ft — 
CO Q. 


C I CO 
4> 

4) — 
p > 

O CO Q 

c p «x 

o 

a> 4) o 
TJ 3 
O — 
O E 
a) a. 

ft P Q 

0 ) co 
>» — 


a> 


o 

a> 3 p 
ft >» c 
0 0)0 
O J* o 

V V V 


£ — 
0) P 


o c 

O H — 


II — — 0) 


P 00 

0) ♦» 

rH P 3 

I C b3 

X 4) Z U3 

P 0) X 

H « ~ CQ 

3 ft 

e a x — 

•< 

ra a) Z h a 

P Z l-l c 

00 P M Q O 

X U3 X 

C — P 

AX — (0 

TJ O 3 


O 

3 

>» 

0) 

M 


A E 

c a> 

ft P 

0 ) co 

p p 

p oo 

CO 

a. c 


x a 
ft c 
co o 


CO 

— c 

H 
/v P 
0) CO 

to 0) 

A CO T3 

c 00 V 

O CO 
X 0) — 
« S 
00 V 
0) 


P II O II l. II 


ft P 
a. co 
X P 


H 
TJ O 
C -3 
CO X 
0u 
00 V 


O 

O P 


0) P 
Cm p 


TJ 0) 

C X 
(OP • 

co a; 
tj x e 
co ft CO 

0) CO C 

ft > 


•a a 

0) 


A H H fl 


4) X P 
00 -H <0 
CO O H 
CO CD ft 
CO Q. CO 
CD «0 > 
E V 
V (Dm 
A •• P •• 
P ' H *-i 
C A A 
4) TJ TJ 
E C » C 

<D o ua o 

p o a- o 

C0 V X V 
D I—. t—• '—‘ 


X 

o 


a) p 
P -H 

P 3 


Cl CO 
3 
X 

c co 

CO X 


co co co a. » 


Cm P 

0) X 


0) 

P 


c 

O • TO 

a l. c 

00 0) 3 
CD X 
L <m O 
3 CD 
•X P ft 

o 

CD P 
I 00 CO 

X c 
a. o co 
w a. -h 
o oo 

OOP 
< ft X 


p p 
P c 


TJ I 
C X 

o o 

O H 

V < 

*-• a: 


«^ o 

o> x 

p — p 

O CO 

P co C 
CO B • X 
B B 00 P 
O C 00 
ft O 1. 0) 
4) <D TJ 
X P \/ 
X • P •—» 
3P I0O 
P C CL<—i 
0 ) 

4) E 0) •—• 
CO 4) rH A 
C P CL TJ 
O CO X C 
a P P O 
• OHO 

4) I 3 V 

ft ac b *—* 


00 A 
4) C * 
CO O I 
CO X I 
CO P 
ft- (0 ' 


o 

ft 4) • 

P P J* 
C P o 
O CO 

O top 

C CO 


- o 

A ft 
I C p 
U3 O 3 

Z H 10 
' *H P 
H co 4) 
■ X C P 
O -H p 
> QC P 


C A X CO C A ft, 


I P 

ft 00 
z: 4> 
X T3 
*3 V” i 


4) 

CO T3 
V- 4) 
U C 
CO X -H 
. X P ^ 


o » 

O Q 


O 00 

* E C ■ 
C0 

O ft -H 
CO 00 00 
P O CO 
co ft CO 
a. v 
4) 

c •• 
•H O •—i 
P J A I 
3 H TJ I 

O ft c 
ft o 

P 4) O 
3 P N/ 

CO P 1—. 

o 


4) 4) 
X P 
ft) V 


a 
o ' 


Z 4) 

O p 


Z E-« 
►H o 
H -J 
Z X 
O ft 

U V- 


ft 

p 


I 

CO 

ft) 


4) •—. 
ft A 
P T3 
P C 
< O 
O 
I V 

o — 

z 

CJ 


•H E—• 

O 


E-< 

CO 


HXCPC0Q)P><D 
CDXOCOCOCDPCO 


O P 
£0 P < 

0) ~ 
X P 
P 4) 


oop ox a 


E (0 O X (U 


o 

C X 


X ft X P CO 


CD’OPCOECDCOPO 
P -o 
CO CO 


E to 
3 ft 


4) p 
P P 


E 

CD O O 
to 4) to 
to o x 

CD X 
tac 


• P 4) 
i CO P 

3 

•O P 
I 4) X 
: ft ft 
» 4) P 
P to 
) C X 

• 4) T3 
I 

: (D to 
p «t 


ca o c a. 


x o 

o P 


to 4) 3 
c c a 
x P 


p p - 

00 J 


X E O 4) 3 


E H X 
4) OC 
P X to 
tO CO X 
X OC P 
to P 


O X 4) X X 


a. ~ j 
E E 


i 3 X 
I O CG 
i P X 
I to CO 


4) p p •--) p j_ a) 


E 4) 

3 -a 


X O 

to P 


•o c p co 


to to 

CD 4) 
00 T3 


r> O 4) 4) 


CO X 
P 00 


ft "O 
a. co 


x co c to p 
ft. C co CD X CD ft 


00 ft P 

o c <d p m co **cp 


P O ft 4) Oft 


X to C C CO X ■ 


P X co to C X 4) 


ft p 
•o P 


E X ■ 
4) to 


to 4) 
X P 


4) C 
P x 


O X 
O 


X 4) 
CO CO P 


ft 00 

o c 
X co 


X 3 
P O 


4) 4) P 
ft P ft 
•O C CO 
•a x p 
co to 

X 

4) o O 
P X P 
P X 

a- x 


C P X 

> x ca o ■ 
: co 

> P ft 4) 

C 4) C 

> O p o 

- O 4) 
ft 

c a. • 
o ft x 

X 4) O 
p p ft) 

CO C oo 
O X 
O P 
x X co 

o 

W J to 


P 4) 
C P 
X 

o to 
a. ft 
o 

oo p 
C 4) 


X P 

to 


E x 
4) P 
E CO 


P c 
4) P 4) X X X 


00 
C ~ X 
CO ft CO 
P 4) E 

a x ft 
X o 

ft 3 Z 
O P 

ft E • 
4) CO CO 


P ft 
CL CO 
E P 

C0 4) C0 
ft P T3 
00 P 
O E 

ft ft 0) 


p a, 
x “O 

CD 4) 
p p 
• P 3 
X P 

O X X 

o ft 

p 

c oo to 

OCX 
X X TJ 
P c 
CO C to 
a x co 
O Oo 
X 4) P 
P o 
P X 
CO 4) P 
P 3 
to P 


O to 
to c 
4) O 
TJ X 
P 

m a 
o 
x 

X CD 
TJ P 
C P 
4) 

a. tj 
a. c 

co o Op w xv 


X 4) 
p > 
ft 

CO P 
p 3 

to a 

p 
to 3 
X o 

p I 

p p 
3 

p a 


4) 

X X 

o p • 

P CO X 
x P o 
a, o 

CL r- 

10 E 

00 3 C 


CL 4) P X 


4) P >> E p X 


P X CO 4) 


CC P 3 O 


a. < 

E X 

XXP >» 3 60 x 4) P 


X 

O 

4) 

4) p 
E P 
X 

P P 
CO 
4) 

P to 
P P 

c 

P CD 
f0 E 
4) 

TJ P 
4) CO 
00 P 
C to 

to 

P 4) •• 
OPE 
CO CD 
4) 3 P 

p cr to 
4) >, 
C to 

CO O 
O P X 
O 

to 4J J 
4) 00 X 

3 c a. 
X CO 
CO P 4) 

> o x 

p 

00 co 

C X 

X >, o 
3 P 
O «) 
X >, c 

XXX 

O P c 
X E C 
4) X 
4) CO 00 
P tO 0) 
X CO P 


UJ I 

Q » 


O O O O Ou X O 
5 O U O E Nvo 
O r- C\J O u, LjJ o 
o o o *- *- U. UJ 

to 


ft 

>» 4) 


ca 

E 


I ft 
ft CD 
I 4) X 
! P X 
i <D 3 
ft P 

1 CL ft 
ft E 4) 
L 4) (0 X 
; P ft X 
I C 00 3 
J X o P 
ft 

* X CL E 
O (0 
P X ft 
x O X 
a- o 

00 ft 

x c a 

O X 
C X 

c o 


TJ tO 
to 

>» 4) 
CO ft 
x TJ 
CL TJ 
CO CO 


TJ ft 


O P 
Z to 


CO 00 TJ 
P CD C 


O 

4) 

TJ 

t\J 

X 


p 


oo 

c 

4) 


00 

c 

X 

p 

ft 

CO 

p 

to 

E 

3 

E 


X 

CO 

z: 


>h E X CD U O 
UJ » E CL E ft ft U) E ft) 

z: ixs^xppqx z 

< iZXtOCQOlXZ X 

Z I U to E E E > Z —1 


O 

to 

X 

CO 


TJ C 
C ft 

to 3 

s P 






i —i 






X 

4) 






E 

C 





CO 

ft 




* 



to 





X 





o 

4) 

TJ 






ft 

CD 




oo 

ft 

C 

4) 





4) 

00 




o 

C0 

to 

P 





P 

tO 




oo 



(0 





0) 

X 




f 

m 

E 

t) 





<0 

ft 




X 

A 

i—J 

X 






ft 




o 

X 

E 

TJ 





0) 

CO 




m3 



C 





P 

o 




X 

TJ 

c 

X 





P 

— 




(ft 

C 

X 










z 


(0 

p 

o 





ft 

TJ 



o 

X 


p 

p 





4) 

c 



X 

o 

* 

X 






P 

4) 



X 


V 

3 

TJ 





X 




X 

c 

c 


4) 





CO 

CO 



z 

o 


TJ 

to 






« 



X 

X 

c 

4) 

3 





>> 

4) 


• 

ft. 

p 

X 

C 





A 

X 

C 


c 

U) 

X 

p 

X 

to 




P 

4) 

X 



Q 

c 

p 

CO 

X 




c 

P 

x 


X 


X 

X 

p 





4) 

CO 


• 

X 

Id 

X 

3 

c 

r-s. 




E 

X 

4) 


Q 

O 

4) 


o 





4) 

TJ 

P 

c 

z 

< 

TJ 

TJ 

o 





P 

4) 

P 

CO 

ft) 



4) 






C0 

E 


X 

ft. 

u 

X 

C 

n 

X 




P 

E 

>» P 

ft. 

z 

(0 

X 

B 

o 




CO 

X 

P 


< 

«< 

B 

CO 

4) 

p 







p 


-J 

ft 

p 

P 

B 




X 

c 

TJ 

10 



o 

c 

X 

>» 




o 

X 

4) 

ft 


X 

X 

o 


to 




.3 

t£ P 

X 


o 


o 






X 

4) 

CO 

X 


-J 

CO 


• 

4) 

• 



ft. 

P 

C 



X 


CO 

X 

P 

a 



V 


X 

4) 


(ft 

n 

E 

o 

X 

X 



1—1 

to 

E 

P 



X 

4) 

P 


p 



A 

A 

ft 

P 




P 

X 


C0 


A 

X 

X 

4) 




to X 

(ft 

• 

c 


X 

4) 

4) 

P 

>» 



c 



<—1 

o 

A 

4) 

P 

P 


P 



X 

*— 

X 

C0 

X 

4) 

P 

co 

CO 

4) 




3 

• 

O 

c 

p 

C 

CO 

X 

X 

ft 

ft 



o 

*— 


o 

co 

X 

X 

V 

V 

c0 

o 



X 


n 

X 

X 

X 

V 

* 






X 

C 

p 

p 

CD 


• 







o 

o 

c 

Cl 

ft 

X 








X 

X 

4) 

o 


o 

II 








m 

E 


c 

m3 

• • 







4) 

ft 

4> 

4) 

CC. 

X 

•• 







P 

4) 

X 

ft 

o 

(ft 








X 

> 

4) 

CO 

s 

V 







Page 26 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


182 




u 

a. 



O 

M X 
E- U] 
<t E- 

O 00 

o X 

2 CO 
2 

< Q 

c*i 
X H 

OS o 
O CQ 
X n 
bl OS 

ac e-* 
CO 
2 : m 

b] Q 
H 

CO U] 
x ac 
co t-* 


E-« 2 
O M 


2 u 

020 2 : 

2 m < h < 

f-H «*: cr o os 

os m o -JO 

H K h MO 

CO «< eo 2 OS 

> 04 


X 

E- 

2 

2 : 

U1 


co 

u 

2 : ac 2 
H < Ul >> 
O os 2 -o 

2 O b- 
M O =3 vO 

04 as co ex* 
2 o 


04 


be 

be 

C 14 



b] 

be 

CQ 

O. 


CQ 

Cl, 

ZD 

CQ 

O. 


os 00 

id 4) 
£- 2 
CxJ X 
M OS £J 
O 2 

— 3 OS <\J 
H UOO 
O. h O 

z m 


x 

E— 

2 

2: 

w 


I I I 

I • I 

) f I 

» I I 

I I I 

I t I 

» I I 

I I I 

I I I 

I ♦ I 

I I » 

f » I 

I I I 

» w » » 

1 oj » •*■* 1 

1 2 i n 9 

I X I 03 I 

I O I I 

I » >» I 

I (Vl I XI I 

I LO I I 

I JT t if I 

I w | f\J I 

I I >— ) 

I < I I 

I H • b] I 

» < I J I 

I Q I 03 I 

I I < » — > 

I Z I H I 

I CD I I bC 

• E- f O 4 I O 

1 co 12: I < 

» X I => I h 

I CO » *~3 I co 

I I I 

I I » 

I I I 

I I I 

I I I 




1 

1 

1 



X 

s- 



X s- 



X 2 





1 







H 

O 



H 

O 



H 

O 

■O 



X TJ 







£3 




X] 




S3 


03 



C 

CO 







e 

00 



E 

to 



E 

b0 

bO 

C 


<0 

03 







0) 

C 



03 

c 



03 

c 

c 

O • 



&* 



“J 




a 

M 



« 

M 



9) 

M 

<0 

M ^ 


43 


03 






*) 

C 



CO 

C 



CO 

C 

sc 

43 C 


CO 

c 

S3 




U] 


C0 

C 



CO 

C 



CO 

c 

0 

(0 O 



M 





N 



M 




M 




M 


O M 


TJ 


C 


03 


M 


s- 

b0 



s- 

bC 



S- 

bC 

03 

O 00 


03 

TJ 

CO 



* 

CO 


0 

03 



0 

03 



O 

03 

S3 

M U 


M 

03 

O 



"" J 




S3 




X3 




X] 


03 


2 

O 



<0 


2 


03 




0) 




03 


c 

43 > 

CO 

M 

co 

e» 



! 

Ci) 

CO 

e 

03 



E 

03 



e 

03 

CO 

co 

CO 

TJ 

H 

03 


M 


be 

to 

M 

x: 



M 

SC 



M 

x; 

C3 

TJ 


O 

CX 

> 


CO 


Cle 

u 

43 

43 



43 

43 



43 

43 


0) 03 

X 

B 


O 


> 

O 1 

2 

ac 











00 

TJ 43 

a' 


03 

£) 


<0 

s 1 

CQ 

Q 

03 

43 



03 

43 



03 

43 

CO 

O 3 

2 

43 

£> 

co 



M 1 


a 

SC 

CO 



■C 

CO 



-C 

(0 

03 

O £> 

2 

O 




2 

I 

a 

<x 

43 




43 




43 


c. 

M 

l 

C 

03 

TJ 


O 


2 



43 




43 




43 

■0 

43 Le 

X 


L. 

03 


co 

^ J 

«* 

0 

43 

c 



43 

c 



43 

c 

-0 

O 43 

0 

00 

O 

+3 



3 1 


2 

CO 

03 



CO 

03 



CO 

03 

(0 

03 (0 

2 

M 

2 

O 


2 

43 1 

CO 

>—1 


e 


O 


B 




e 


—0 M 

Csi 


03 

C 


O 

^ J 

b) 

E-* 

43 

03 


2 

43 

03 



43 

03 

<0 

£> TJ 

—■ 

43 

L. 


• 

H 

(0 J 

CO 

ac 

0) 

43 


M 

03 

43 



03 

43 

M 

O 


CO 

03 

to 

c 

03 

43 1 

CO 

«L 

cn 

CO 


2 

to 

CO 



00 

<0 

SC 

03 

c 

jC 

SC 

CO 

0 

£3 

CO 1 

b) 

h 


43 


2 


43 




43 

43 

03 £ 

0 

43 

43 


M 


3 

K 

CO 

03 

n 


M 

03 

to 



03 

00 


SC 43 

M 



• 43 

co 

3 

a 


£3 



O 

S3 



Q 

S3 


m. 

43 

*3 

03 

c 

TJ 

CO 

03 

03 1 

Q 

ac 


03 


Cl] 


03 


2 


03 

C 

c 

C. 

TJ 

CO 

e 

C3 

£- 

n 1 

< 

Cd 

C 

43 


CQ 

C 

+3 


U 

C 

43 

O 

00 M 

O 

O 

0 

C0 

O 

•X 

3 1 


E- 

<0 

CO 



CO 

CO 



CO 

CO 

M 

c 

CX 

O 



«—1 



be 

b) 

0 

3 


2 

O 

3 


2 

O 

3 

43 

M X 



c. 

TJ 




O 

2 


cr 


Cd 


cr 


2 


cr m 

X O 

t. 

co 

03 

03 

CO 




2 

n 

03 


2 

n 

03 


2 

CO 

03 

•O 

2 vO 

0 

c 

43 

te 

to 



2 

2 

tn 



2 

to 



2 

CO 


TJ 

m m 

43 

M 

03 

M 

03 



O 

b) 

03 

03 


3) 

03 

03 


ZD 

03 

03 

(0 

TJ 

03 

CO 

t. 

<0 

t. 



M 

H 

t. 

x: 


CQ 

L. 

sc 


CQ 

c. 

sc 


0 c 

c. 

43 

CX 

03 

TJ 



H 

2 

■0 

43 



T3 

43 



XJ 

43 

C 

B O 

CX 

c 

L. 

TJ 

TJ 



■< 

M 

•0 



X 

TJ 



SI 

•0 


M 

M 

L. 

0 

03 


CO 



O 


co 

c 


«< 

CO 

c 


<« 

CO 

c 


X 43 

0) 

0 

43 

2 




M 

E-* 


M 


2 


M 


2 


M 


£3 (0 

43 


C 

M 

X 



Ue 

O 

0) 


• 

O 

CO 


• 

O 

00 


» 

O 

c 


M 


c 



M 

-J 

M 

03 

E 

O 

M 

03 

B 

O 

M 

03 

e 

03 O 

M 

TJ 


X 

CO 



O 

M 

x: 

b0 

(0 

2 

sc 

bO 

(0 

2 

-C 

bO 

CO 

E M 


03 

03 

L. 




O 

2 

E- 

C 

L. 

2 

E- 

c 

L 

2 

E- 

c 

L. 

M 

E-* 

43 

SC 

O 

43 



X 



<0 

b0 



co 

be 



(0 

tO 43 

O 

3 

E-* 

B 

C0 




1 


sc 

O 

1 


sc 

0 

1 


sc 

O 

O 

2 

£3 


03 







0 

X 



0 

te 



0 

t. 

X *- 

M 

M 


B 

TJ 




E-* 



CX 

CQ 



CX 

2 



CX 

C ♦ 

2 

t- 

• 


03 




2 


CO 


2 


CO 


2 


CO 


CO E-* 


43 

03 

X 

C3 




E- 



03 

ZD 



03 

CD 



03 

M 

03 

n 

B 

M 

CO 




CO 


X -C 

CQ 


X sc 

CQ 


X sc 

43 z 

SC 

M 

M 

c 

H 




2 


£3 

43 

2 


S3 

43 

2 


S3 

43 

CO M 

E-* 

TJ 

43 

0 

CX 


«o » <0 
« —' cx 


a t, 

■H 0> 


E E 

O 


3 2 
E C 


03 2 £. 0) 

£ C HI H H 

2 o a. xj 


m O (0 

W O 43 > 


t. C. 

03 03 

a 4J 

O 43 

(CMC 
CX I 

I v ^ X 
co « • o 

■< 2 w A X 
X (0 TJ M 
X 33 43 C X 

o 43 a> o «s 

o cox 

43 CO V 

i a o-h 
oo> ZD 

H o 03 X O 4 

< X -C «< Z 

I « H Z H 






CO 

M 



, 





X 

te 

2 



te 


00 



H 

bC 

(0 


c 

O 


L. 



43 

O 

E 


M 

2 


03 



C 

te 

te 



M 

r—1 

43 

X 

2 

0) 

CX 

O 

c 

X 

TJ 

O 

C3 

H 

0 

te 


2 

M 

«H 

03 

te 

CO 

H 


&. 

E- 

C 


2 


2 

te 

CO 

03 

3 

O 

M 

X 

C 

r—4 

C 

(0 • 

O 

to 

O 

2 


H 

03 

CO 

O 

SC 03 

M 

(0 


M 

TJ 

2 

te 

c 

C3 

O e—1 

43 

t- 

E 

2 

03 

C 

t. 

te 


O 

(0 

0 

co 


t. • 

03 

3 

03 

to 

2 n 

B 

43 

te 

to 

O TJ 

t. 

O 

2 

te 

0 c 

O 

W 

bu 

c 

2 03 

te 


X 

03 

0 

43 


O 

M 

CO 2 

3 

E 

03 

2 

u 0 

3 

bO 

te 

43 

te 

O 

C0 


(0 

03 

(0 

C 

CX 

9J 

3 


t. 

c 

c 

S3 03 

• 

M 


M 

• 2 

E 

to 

CO 

co 

E x: 

CO TJ 

43 

E- 

X 

2 00 

00 

O 


t. 

3 43 

M 03 

00 

O 

03 

C M 

t. 

t. 

0 

2 

C 

-C 

M 

2 


0) TJ 

bO 

CX 

2 


B 

03 C3 

X 

M 

X 

E 

O 



TJ 

E O 

CO (0 

03 

2 

c 

bC 2 

te 

H 

r“l 

C 

3 t- 

C 03 

» 


CO 

03 O 

CX 

O 

O 

CO 

E 2 

O t. 

CO co 

03 


9) C 


2 

t. 


M 

cx 

03 43 

SC 

CO 


E-> • 

M 

2 

E 

X 

co co 

43 CQ 

43 

X 

E C0 

O 03 

2 

C 

a. 

CO 

03 M 

03 TJ 


co 

CO M 

2 O 


O 

2 

E 

C. 

*—1 

co 

H 

t. 

M M 

03 03 

O 

co 

03 

43 

03 TJ 

X 

t. 

bO A 

2 > 

sc 0 


X 

0> TJ 

<0 M 

O C 

CO 

03 

O 03 

03 

2 M 

CO 

co 

SC O 

e 

(0 

H 

> 

t- M 

03 TJ 

> 

t. 


43 O 

a M 


CX 

O 

CX 2 

s: 

00 03 

03 

E-* 

CX 

e m 

» 00 

cn 


CO 

2 03 

2 TJ 

2 

O 

00 O 

03 

cn 03 

M 


» M 

to 

C 

9) 

2 

43 w 

43 03 

2 E 

O 

• 

0) t. 

in co 

•H 2 

C 


03 

CO SC 

-J CO 


X 

C CO 

03 t. 

t. C 

CO 

2 

CO 43 

X 43 

CQ C 


«* 

> 

> 0 

2 H 

t. 



M 03 
OS t—i 
C jO 


CO (0 *—• M 

(C 03 T3 A O L 
t, O T 2 <C r 


O «-i 


03 

2 : C 


I 

X 
«« . 


’ «< 43 A OJ *3 ' 


C M > A 


E— CO C 

CO c o 


43 03 C O 
CX SC M V 
03 43 E ' 


O C 03 «*» LU 43 1 

<C M 43 3 2 « 


K It V 

a 

O.CS- 
os 43 o 

O 4 M 

2 B 

CC • /\ 1-4 L A 

2 >,T3 O x o -a 
t. 

x o o 

E 

-J 03 V 
O 4 B 
CO 

M C O __ 

QM<JMM>10B hh O. 

O 


M O 
O 4 B V O I 
03 £ V 
E 43 1 — 1 [ 


1 o 
! O 


X 

o 

B 

O C C U < (D 


o 

C O 
O OS 
rj a, 
V 

1 —. H 
2 
E- M 


A. 0C r 
C TJ O < 
O C O ' 
O as 
xoo. 

C V 

E- 
M ^ 
03 E- O 
E M C*3 I 


CO 


S3 

CO 


£3 jO 
(0 (0 
M M 
l- K. «- U 
03 03 CO (0 

2 d) > > 

03 03 

43 43 E E 

C C 3 3 
M M C C 

♦ I ♦ I 

03 03 03 03 
M H H H 

£3 S3 S3 £3 

<0 (0 (0 (0 
M M M M 

C. L. (. L 
(0 co (0 <0 
> > > > 

E E e B 

3 3 3 3 
C C C C 

11 li II II 

A 03 03 03 03 
2 M .-I r-l M . 

C X3 X3 X3 Q 

03 CO (0 (0 CO 
E M M M M 
A A 03 S, te &. L. 
ACM43(0C0<0(0 
43O03C0>>>> 


C L. 
03 M 
43 S- 


B • 
t. 03 
) 03 C 
43 M 


> C S- 
I CO o 

► TJ 
** C 

. w 03 

C 03 

to jC 

M 43 


03 A 43 3 


A 43 
03 V 
bC l —' 


03 n c 

•H V V 

XI « » 


I £3 43 

' CO CO E 


E E B > -O <0 


3 3 3 3 
C^CN/CCCCC 


• 43 II 43 ll M || —~ — 


A S- 
A t. M 
03 03 43 

rH M C 
£3 S- 03 
CO H T3 
M 43 M 

&. e m 

<0 Q3 C O t 
■a o 


u 43 
M 

2 


■o 

03 


■H 0) - C T3 


£3 CQ 
(0 


to V 
c 


C A 
3 U 
O 0> 

Q. M (0 A M 
S— c 

M 03 


03 

00 

0) 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 27 


183 











a 

UJ 
O ;tj 

<t 
A a 
* 

U] •• 

3 ~ 

L> 

— 2 
x — 

UJ 

X tO 

3 <c 
2 o 

<t UJ 

a 

2 2 
O UJ 
X 
a x 

<t < 
2 

O tO 


~ UJ UJ 

a j a 
2 m - 
o <r 
o ~ x 
x o 


CO O 3 X - 
3 II O UJ 

a <t ii co s w 

x •• a h 3 x 

3 •• cO 2 >• 


a 

a 


u 

a 

<t 

x 

UJ 

x 


a 

< 


a 

a 




a 

3 

- 

2 

2 


a 

H 



3 

3 

3 

a 

o 

to 

2 

O 

a 

O 

O 

2 


a 

<X 

— 

<t 

a 

a 

a a 

X 

H 


3 >•!«.>• 


II U Ll < » t— 

a a uj ii ~ <r 
•• < a 3 3 z 


(A 

3 

a 

x 

H 
<A 
X U 
a tO H 
O <t * 
* •• 


to 

3 a 


t- 

a 

3 a 

L) ~ 

~ 3 

3 O 

a 

2 3 3 

a 

t— 

<c 

•• 

<x 

a 

<t 

a 

2 

2 

a 

H 

•• 

•• 

r- 

•• •• 

•• 



•• 

a 

•• 

* 

t— 

H 


<c s 

z 

H 

r- 

r- 

* 

H 


.. 


a 








Z 


a 

• 







a 


r— 

r\ 



• 

• 



H 


X 

'O 


• 

a 

a 



CO 


a 

a 

• 


CJ 

CJ 



H 


3 

a 

a 

o 

—• 

•— 



iO 


CJ 

a 

a 

2 

3 

3 




• 

<r 

<t 

o 

•—i 

a 

a 


• 

o 

H 


►H 

to 

<r 

a 

a 


X 

•— 

«—< 

to 

X 

2 

z 



• 

o 

X 


X 

<r 

O 

a 

a 

3 

X 

r- 

r- 

2 

a 

3 

CJ X 

3 

2 

o 

•— 


*—* 

— 




<r 

•—« 

r- 

2 

2 


CJ 

CJ 

a 

t— 

X 

t— 

•—< 

O 

•—« 

tO 

<£ 

2 

X 

X 

o 

wO 

a 

z 


<1 

X 


t— 

a 

r- 


a 


a 

Z 

<r 

X 


r- 

cO 

a 


<E 

a 

z 

X 

r— 

r- 

«o 



2 


a 

o 

u 

cO 

<1 


<t 

<c 

C 

O 

<r 

3 


w 






H 

j 


a 


Z 

■ 

O 

o 

a 


*— 

X 

o 

t— 

<t 

z 

r- 

H 

cO 

O 

<t 

H 


X 

X 

<r 



3 

3 

3 

»— 

X 

a 

3 

X 

Z 

z 



<t 

3 

a 

t— 

O 

3 

< 

<t 

a 

a 



a 

to 

X O 

X 

X 

2 

2 

a 

r- 

V 


X 

X 3 

3 

<E 

< 

X 

X 

3 

a 


X o o 



<t 

a 

2 

a 

a 


x 

X 

r- 

H 


H 


X 

X 

3 

X 

X 

O 

O 

<0 


a 

o 

t— 

a 



a 

a 

2 

X 

X 

r- 


2 

a 

a 



O 

o 

>— 

CO 

>- 


X 

X 

X 

X 

•—< 

a 



<E 

<E 

r- 

H 



l— 


r- 

a 

a 




a 

a 

o 

v. 

*— 

A 

X 

a 

a a 

3 

3 

3 

o 

Z 

<r 

cO 

<t 

2 

2 

<r 

<r 

X 

o 


X 


o 

a 

a 

a 

a 

r- 

J 

J 

a 

a a to to 

a 

a 

cO 










2 

o 

o 

o o 

o 

o 

o 

o 

o 

•"« 

H 

t— 

r* 

H 

H 

H 

H 

H 

H 

X 










a 


•• 





•• 



X 


X 



M 


r- 

•• 


H 


<r 

o-t 


a 

a 

2 

t—■ 

•• 

O 

•• 

z 

3 

•• 

<£ 3 


•—< 

a 


3 

2 

a 

X 

O 

< 

X 

a 


a 

z 


2 a 

a 

to x 

a 

a 

2 




















2 










•• 

•• 

•• 

M 

•• 

•• 

— 

•« 

•• 

•• 


3 

z 

X 

o 

a 


X 

o 

r— 
<£ 
• X 
H <C 
— X 
UJ 

2 </> 

< 

cO 

<t tO 

z <c 
z 

o a 
o a 

CO 
X 3 
h 

to 


H ~ 
X 2 
UJ 

H H 
U. 
X ~ 
O X 
U, to 


o 

a 


x 

o 


3 

a 

<t 


x 

o 


o 

a 

<t 

a 

x 


a 

o 

a 

<r 

a 

r- 

to 

2 


X 


2 

x 

3 

i— 

a 

x 


to 

• wO 

- a 

< X 

- x 

X r- i 
O O i 

a 2 i 

X o 
o a 
o 
a 

o >• 
h a 
x 
a 

a a 
to 3 

3 3 
2 
a 


o • 

X 



to 




a 

tO 


<X 2 




o - 

o 



•—t 

a 










a • 

o 




a 



a 

<t 


<1 X 





a 


3 

>- 

X 


3 

a 



•HO 


2 


2 H 



a 

X 

>* 


5] 


>- i 


• 




<t a 

a 


* 

H 

H 


H 

3 

a • 


Q Z >• c\] 


H 


CJ x 

a 


<i 

2 



to 


2 l 

—• 

a co v r- 


to 


<r 

•— 


»- 

a 

3 

X 

a 


O 1 

•• 

x <r 


a 


3 0 3 

3 


a 

to 

O 

to 

t— 

•• 


X 

>- 3 X 




o z 


X 

% 


>- 

<r 

* 2 

X 

to 

<c 

2 <1 

>- 

* 

to 

>- <C H 

•— 

r- 

3 

* 


* 

•• •—» 

<r 

CO 

z 

•• r- •— z 


•• 

x 

•• •• tO 

•« 

2 

a 

tO 


•• 

>- r- 

z 

a 

2 

<X 3 <1 <r .. 2 

•• 



h h a 

H 

a 

<t 

a 

o 

3 

3 tO 

2 

X 


o x 3 <r ^ 

z 

3 

X 

t- 



•• 

> 2 


a 

•—< 

X 


<C >• r- <t 



X 

* 


•• 

3 

•• 

•• 


•• e- 

•• 

•• •• 


•• •• •• — 


•• 

a 



< 

Z 

>• 

2 


H * 

H 

t— H 


Z >- 2 H 


H 

* 


3 

a 


a 

2 

<1 

* 2 
X X 
a 3 

r- a 
X 


o 

a 


a 

o 

z 

<r 

x 

a 

o 

x 

x 


to 

a 


a 

<r 

2 

O 


a 

2 

O 

o 


or-22<t33zz xoz > o z a x 

U/<<ajooca h — Hr- <x t - to 
a z xxc_>x >-r-a r- 

t- h 2 w <t a a za 3- o<ta 

O <ta 3 3 Q <t <1 ~ < *02 h x 

j<- aototoa x r* >- x — <t 


a 

x 

<r 


to 

x 

- a 


■ a 

I H 2 









Z 


a 


a 



(O 


X 

X 

a — 








<r 


a 



a 


3 


o 

3 a a 








r: 



• 

a 

a 














3 


a 

2 

2 

A 


O 


•• 

- 

a < 








o 


<r 


O 

A 


—• 


>• 


X 








X 


2 

a 


a 




r- 

X 

r- a 








X 


O 

t— 

a 

x 





o 

o 










•— 

a 

A 

X 


A 


a 


a 








a 


r— 

X 

<E 



a 


o 

% 

— Q 








X 


<r 


X 

a 


X 



> 

2 


to 

•• 


• 



•—« 


c: 


a 

3 


<E 


A 


r— a 


2 

to 


X 



r- 


a 

o 


<t 


Z 


2 

•— 

2 


O 

2 


a 



2 


X 

cO 

o 

X 




O 

X 

<£ X 


•- 

O 


3 



a 


o 

a 

r- 



2 



3 

h a 


H 

•—« 


O 

• 





X 


3 


O 

• 

to 

* 

X X 

• 

3 

r— 


2 

a 


a 


o 

X 

—• 

O 


•—« 

X 

X 


O r- 

3 

2 

3 


<- 

3 


X 


z 


3 

>- 

• 

H 

3 

a 

•» 

X - 


3 

3 



<r 


i— 

• 


2 

O 


a 

3 

r- 

3 

• 

z a 

X 

a 

X 


2 

a 



2 

X 

a 

a 

a 

3 

3 

<r 


uu 

—> 

M 


H 


< 

X 


X 

O 

t— 

X 

3 

X 

2 

X 

z 

a 

a 

r— 

a 

o 

tO 





o 

i— 

t— 

i— 

X 

o 

►H 

r* 


2 

a a < 

z 

a 

2 

• 

a 

a 

• 


f— 

3 



a 

t— 

to 

a 

< 


X 

a 

o 

•-« 

X 

o 

a 

a 

a 

<t 


* 

X 

a 

• 2 

2 

a 

X 

• 

<t r— 

a 

CO 


a 


a 

2 

2 

r- 

ix: 

3 

o 

a 

a o 

•— 

h- 

r— 


O 

a 

1 

a 


o 

a 

•-< 

•—< 

J 

■x 

2 



a o 


0. 

"X 

% 

>• 2 

<s 

H 

X 

• to 

I— 

a 

r- 

H 

X 

< 

•— 


a 

X 

y. 

z 

o 

- 

a 


o x a 
a h x 
<t <i 

• x 

x 'O o 


a 

x 

3 



2 

H 


r- 



r- 

r- 

3 

to 

a 


< 


3 

a 

CO 

O 

a 

t— 

•> 







2 

X 

a 

X 

X 


<1 


•—< 

X 

2 


a 


X 

r- 

—* 

a 

<i a 

a 

3 

<X 










CO 

a 

3 

X 



Z 

a 

•— 




“5 

< 

a 

a 

a 2 


<r 

z 

M 







X 

>• 

a 

3 

r- 


a 

a 

►— 

to 

X 

a 

X 



X 

X 

2 

o 

X 

a. 


X 







o 

X X 3 

<1 

J 

A 

2 

a 

2 

>- 

r- 




4 

• 

a 

a a 

o 

tO 

o 

3 




z 




H 

X 

<E 

z 

3 3 

a 


•— 

H 

a 

o 


a 



X 

X <1 

o 


H 



X 


r- 

3 


>- 








X 



a 

H 


a 

to 

to 

X 

H 

a 

a 


a 


3 


to 

r- 



2 

o 

O 

o 

O 

O 

o 

o 

O 


a 



X 

•— 

to 

<t 

•• 


X 

3 

a 


r- 

X 

a 

A 



<1 

r- 

r- 

c— 

r- 

r- 

r- 

a 

H 

m a 

3 


>■ 


a 


2 2 

a 

H 

2 

a 

X 

<r 

to 

r- 

a 


r- 

3 











V 

r- 

t- 

H 

X 

2 

O 

a 


•—i 


3 

z 

<c 

* 

r- 


2 










2 

a 

a 

<1 


<r 

X 


XX z 

•—i 

a 

>- 

* 

r— 


* 

•• 

* 



3 

•• 


•• 

•• 

•• 

•• 

•• 

•• 

*—• 

to 

r- 

X 

3 

X 


X 

3 0 r- 


r— 

X 

3 

<r 

o 

•• 

'r- 

.. 


<X 

O 

H 

< 

z 

3 

3 

n 

3 

X 

3 

3 

3 


O 

?! 


o 

A 


O 

t— 

X 

z 

2 

3 

3 3 

X 

C.^ 

H 









a 




>• 

tH 



.. a 

•—< 

2 

•• 

<r 


•• 




to 

<r 

•• 









X 



•• 

•• 

•• 

•• •• 

•• >* 

•*>-•• H 

•• 

•• 

r- 

•• •• 

>- 

2 




< 


H 

- 

•• 

•• 

•• 

•• 

•• 

•• 

•• • 

• •• 

•• 

•• 

<r 

t— 

1— 

t- <X 

t— •• 

•• t- * 

r- 

«— 


<t z »- 

r- 




* 

r- 


a 

(a] 

X 

a 

2 

a 


O 

O 




X 







O' 

H 




♦ 




-7 




—« 








o 



o 

3 




a 







H 

*—« 




2 




o 




a 


a 


<r 

• 



3 



O 



A 



Z 







o 


<r 


<r 

a 



O 



V 



a 


=%■ 

X 



r- 



O 

H 


a 



r- 






X 



X 


a 




- 



a 

e- 




x 

r— 



i—• 




to 


X 


<r 

3 



X 



X 

X 


Ul 



<r 



a 



Ul 

•— 


m 


CO 

X 


CJ 

2 



m 

a 


V 


X 

r— 



• 



V 



3 


a 

3 





3 

3 

a 


2 


m 

3 


II 

a 


— 

2 

X 




v 

wO 

a 


X 


A 


H 


X 


3 


i 

,r. 

>• 


a 

<1 



a 


2 

a 

< 


r- 


r- 


a 

<C 

X 

CQ 


a 

n 




* 

3 a 

to 


r- 


X 


3 

i 


t— 

• • 

r- x 

3 

•• 

o 

•• 

3 

?* 

•« 



X 

2 

A H 


<c 

2 

« 

O 


3 

< 


a 

3 

a h 

►— 


<t 


>• 

►— 




2 


t- •• 

•• 


•• 


•• 

•• 


• • 

•• •• 

•• •• 


# H 

r* 


t— 


t— 

r- 


t— 

f— c— 

A 

M 



Page 28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


184 











3 

O 


H 

O 


X 

X 

Q 

<C 

O 

X 


<t 

5 

o 

x 

x: 

uJ 

X 

X 

U] 


X 

Q 

<L 

X X 

— NO 


a 3 
»S 3 
o x 


X 

Q 

<c 

X 

- X 
«* <X 

x x 

X X 


^ "J —1 X X XX 

1! d d ” ^ J ^ j^j^jj^a; t!>gi 

^ < I<IlZ<l0M<i:0<t0<t<I07U75' 

jouotus: cususuuxia” 


— 3 

ts 


•j 




c 

c 


X 

3 

>• • <z 

<E 

<r 

<r 

<t 

<c 

<t 

<r 

<01 

<X 

o 

<t 

c— •• W 

X 

•* 

X 

* 

X 

at 

X 

X 


o 

X 

— - c 

o 

3 

u 

X 

o 

3 

o 

3 

"ST 

X 3 j 

X 


>• X 
r- X 
r- X 


<Z >* X 
•N r- UJ 
X X X 


—J —^ J x 

—j X O _J _] j ^ X X Q f* 

<ICj<l'<t<to3<Ql«l 

ouxt: <xsou<tt; 


00 o 

— 


31U3UJ 

to o x x X 


- is 
■* X 

X o 
U X 
<r o 
X W 
X 

UJ o 

X t- 


<T H 

O'Oh- 


~ X X -« H 
22NJZOOZUJ 
-•<t^«2 2<3S 


<U 0) 
bG 0) 

c c 


£- O 
<U 4T 


X 

n 


Q 

<t 

UJ 

X 


— c\j on -q- i/)vor^cooo — c\jro 

ooooooooo — — -. 


x is 

o <r 

o x 

3 * O 

■7 NOvor^ccoxo^cvirO'^r 


X 

UJ 

X 


r~- 

CO 

O' 

o 

— 

cu 

OO 

•T 

jo 

vO 

c- 

00 

O' 

o 


cu 

oo 

<r 

J0 

NO 


CO 

O' 

o 


cu 

cu 

cu 

oo 

00 

CO 

OO 

00 

oo 

oo 

oo 

oo 

oo 

>r 

<T 

<T 


<r 


<T 

<r 

<T 

<1 

in 

J0 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

O 

o 

O 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

O 

o 

O 

o 

o 

o 


0 ) 3 

CU <o 

C B 




0) CU 

cn 3 


Q Q Q a Q Q 
<t <JJ <C <t <C <1 
X X X X X X 


i co oj <r n i 

: cu x n x i 

' uJ Q UJ OJ 

» o O X o 

o n vo co 

cu cu cu cu 

x x x x 


Q> coQ 

O JO u u 

X w X o 
x co :o o 

X X X X 


r- 3 X 
vO O vO 


oo <r r- 

u o u 


3 3 
o o 


CO x 

u c_> 


X « 
C_) [ 

r- ro jo oj 

cu — o 

X X O — 

OUQQ 

X X X X 


oo 3 

O O 

•T t"* 

3 3 3 
XXX 


<c 






cu 

<r 




o 

<c 





o 

o 

cu 

, 



X 


X 






X 

X 




oo 

o 


o 



o 


X 

o 



t** 


3 


r- 

r- 


X 

3 

3 

oo 

O' 


vO 

X 

CO 

'O 

O' 


.u 

'O 

<c 

PQ 

o 

o 

'O 

O' 

D 

o 



"■* 

JO 

o 

c_> 

CO 

u 


3 

X 

Q 

3 

o 


3 

X 

u 

3 

o 

o 

X 

c_> 

<X 

3 

X 

X 

o 

— 

cu 

JO 

CO 

O' 

<t 

<x 

o 

X 

X 


cu 

cu 

•q - 

'O 

O' 

3 

o 

3 

X 

3 

3 

3 

3 

X 

X 

X 

X 

X 

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 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 


2 

X 








































3 














O' 


























r— 














O' 









>• 


>- 















X 














1 









3 


X 


• 













is 

























o 


r* 













• 














2 









2 


2 





























<1 









O 


uJ 

• 








3 






X 














X 









•-« 


2 

3 

O 







U 


a> 

O 









• 

















r-* 

•• 


X 

X 







-C 





•> 







X 

















3 

X 

2 

3 








3 


X) 


cu 

X 

X 






3 








X 









3 

3 

•—• 

<r 

X 




O 


CO 



CU 

.—, 

> 

3 







<C 

















X 

• 


3 

3 




(U 

CU 

3 



3 

X 

3 

CO 

* 






JO 








3 









r-* 

NJ 

2 

* 

r— 




X 


X 

X 


3 

o 

CU 


•* X 






X 








3 









X 


<3* 


X 




o 

CO 

E- 

cu 


CU 

-=T 

O 

3 







X 






• 


<1 









2 

3 

IS 

O 

<t 





CU 


jC 


> 

w 

CU 

3 

3 X 






2 


• 




3 


2 











3 


1- 




c 

•o 




CU 


£-. 

JD 

<r i 








O' 




X 


<n 










3 

O 


in 




3 

3 

• 




X 











O' 




>- 








• 



>- 


X 

>- 






> 

E-* 

Q 


CU 

3 

t. 

CU 

• 






o 






<t 


X 






3 



2 


X 

3 

X 




CO 

o 

O 



3 

CO 

o 

3 







X 


2 




3 


X 






X 



<C 

X 


X 

c— 




3 

u 

3 



CU 


X 

CU 

x _] 






X 


<E 




X 


2 






>- 




3 



l_t 





Q. M 

*— 


•a 

3 


X) 

r-* X 






X 


X 




J) 


O 






<r 



X 

X 

2 

<1 





a> 


CU 




3 

3 


X cu 








H 






3 






3 



o 

2 

X 


O 




•o 

<U 


CO 


u 

3 

c 

3 

< <t 






+ 






3 


X 






X 




<r 

X 

3 





o 

W) 

to 

c 


cu 


<u 

O 

3 








X 






to 


• 




JO 



2 

X 

X 

X 





o 

(U 

c 

o 


> 

CU 

E 

c 







3 


X 




cn 




in 




>—« 



O 

X 

3 

2 






a. 3 

3 


3 

3 

C 


• 2 



• 



X 


r* 




•—« 


X 


X 




3 


• 



3 

2 

o 




3 


■O 

3 


CU 

cu 

X 

(0 




X 



>- 


<1 








3 






2 


os 







r J 

3 

cu 

CU 


o 

XJ 

3 

3 

X o 



<£ 



<c 


X 






2 


<n 




>• 


X 

<E 

o 

X 




• 


0) 

X 

o 

o 


<u 


CO 


3 2 



r-» 



3 


X 




o 

X 

X 


cn 




3 


h» 

rS 

X 

X 

X 

X 


a 


•o 

<u 

3 

o 


t- 

u 

CO 

3 

<E X 



2 



X 


o 




3 

% 

X 


cn 




X 


n 

X 


H 






3 

c 


3 


'—' 

o 

CU 

C 

X 2 



>- 



J) 






X 


3 


X 




2 


> 

X 



3 



X 


O 






X 


<u 

cn 3 



<n 



—• 


X 




X 

r- 



2 






X 

o 



3 

os 


M 



<u 

o 

o 


co 


3 

E 

X 






3 


2 




X 

<t 

cn 






X 




. 



3 


Q 


E- 

JZ 


3 


3 

CO 

3 

a 

2 2 



3 





o 




3 


X 


X 






X 


NJ 





2 


O 

E-* 

<u 

c 


3 

3 

X) 

3 

< 



<r 





3 




o 

t-* 

<r 


o 




X 







X 


CxJ 


3 


3 

3 


CU 

3 


3 

X 



3 



*-* 


X 





X 

X 


X 






X 



<n 


OS 

X 

CU 


3 


JO 



3 

<U 

00 

cr 

o o 








CO 




3 

X 

X 


X 













cu 

X 

CU 

* 

CU 

•o 


CO 

3 

3 

(U 

X r— 



JO 



3 






2 

3 

X 


X 




r— 



3 

3 

3 



X 

<« 

u 


3 

o. 

<U 




3 


X 



<c 



3 


3 




»—< 


<c 






2 


2 

X 








CU. 

cu 

CU 

u 


3 

•o 

CU 

u 

X 0. 



X 

• 


X 


3 




cn 

cn 



H 




X 



2 

X 






cn 

O 

B 

CJ 

cu 


3 

c 

3 

3 

2 




2 


•—• 

• 

•—« 




3 

<. 

X 


<t 




2 






X 






u 


3 


a. 

CU 

CO 

O 

X 3 



2 

JS 


X 

2 

3 




<t 

3 

3 


X 




X 










cn 

E 

o 

u 

C 


c 



>» 

2 3 



o 

3 



X 





3 


<t 


X 






<1 




<1 

X 




U 

u. 

<u 

CU 


3 


<U 


O 

• 


•—1 

i— 


2 

3 

X 

• 




X 

C0 

• 

X 




<r 


3 

2 







E- 



■o 




o 

-C 

c 

cn o 

2 


H 

X 


O 

r-* 


2 



H 


cn 

2 

X 






X 





UJ 



o 


X 

CU 

CU 


CO 

'— 

3 

o 

r— 

25 


3 

OS 

>• 

•-< 

X 

X 

X 



2 

X 

X 

X 





cn 


3 

<1 


a. 





3 


(U 

o 

jO 


•a 





3 


3 

• 


cn 

X 

o 

3 



X 

o 

2 

3 

o 



JO 






3 





n 

0) 


3 



cu 

o 

X 

<u 

O >- 

t— 


OS 


r-* 

n 

• 


H 



2 



t— 

H 



X 

3 



3 







cu 

Q. 



•o 


cu 

fc. 

3 

3 

X X 

X 


t— 

cn 

O 

X 


X 

X 


O 

X 

X 

X 

X 


CU 


o 

<r 











TO 

3 

CU 

3 


u 

(U 


X3 

cn i- 

•OS 

X 

cn 

cn 

2 

*s 

cn 

3 

X 



H 

3 

<t 

X 

• 

— r- 


X 

3 


2 








UJ 

3 

cu 


3 



N 


CU 


- 

X 

2 

X 


a. 

n 

3 

• 

O' 

+ 

<t 

3 

3 

• 

X 

M •• 



X 



2 

3 




<r 


X 


3 


O 

• 

u 


• 

3 

3 3 


X 

•—« 

X 

X 

X 

X 

< 


O' 

X 

e- 

< 

•—« 



X X 


X 

3 


in 

< 

X 






E- 

U 

c 

o 

sz 


<u 

3 

CU 

3 

3 3 

cn 

X 


X 

•• 

X 

OS 

Z> 

cn 

tt 

II 

cn 

3 

2 

cn 


<r <t 


* 

3 

* 


3 

3 







CU 

3 


m 

X 

■a 

t. 

3 

(U 

•— 1 *-* 1 

cn 

* 

•• 


3 


X 


cn 

X 

X 




cn 

X 

2 2 


.. 


•• 



X 






O 










3 3 

X 

•• 

3 



X 


X 

X 

•• 

•• 

X 

X 

cn 

X 

X 

Z 2 


>• 




3 







Z 

<0 

•o 

c 

u 

£ 

o 

a 

3 

CO 


X 

3 




X 


X 

X 

3 

3 

X 

X 


X 

>- 



3 

2 


3 

O 







►H 

a. 

<U 

3 

a) 


3 




»—• •—< 

X 


<r 



r* 


r-* 

X 



0- 

t-* 

<r 

a. 

H 


X 


<£ 












E 



X 


E 


<0 

• • M 

• m 

•• 

• • M 

•• 

•• 

•• 

•• 

• • •• M 


•• 


•• 

.. 











_ 






•C 


E 

CO 

cu 

X 


O 

E 

3 

f* r* 

r- 

<X 

H t— 

0- 

<c 

H 

c— 



< 


e- 

t— 



<1 t-* 

<C 

2 


r» t-» 


r- {-• 

H 


H 

H 

t-* e- 

f* <E 


O 

3 

j: 

E- 

3 

<0 

3 

3 

o 

3 

X 

x: 

E- 

t- 

X 

O 

O 

CU 

■o 


April 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


185 






A 650X PROGRAM RELOCATER 

Gentlemen: Dec. 31,1976 

I recently sent you a program relocater for the MOS 
Technology 650X Microprocessor. Unfortunately, I 
have discovered two typo errors in the listing I sent 
you. The errors occur in Line 210 and Line 360. These 
lines should read: 

210 0E02B5 05 S.10: LDA TEMPI+ 1; 

Set Pointers 

360 OEID 29 9F And # $ 9F 

These corrections make the earlier version I sent 
you work correctly. 

Recently, this program was modified to enable 
easier data entry into the relocater. It also was changed 
to permit easier relocation of programs with imbedded 
data or text provided the user has an easy means to 
zero portions of memory. As it is written, the relocater 
will not relocate a break instruction (00j^) but merely 
skips over that instruction and continues. 

To relocated programs with imbedded data or text, 

1. Move the entire program as if the program 
were all data. 

2. Go back to the original program and replace 
all data & text with the break (00. i) instruction. 

3. Relocate the entire program, when the 
relocater finds the 00u in the old program, both 
pointers are incremented and the relocation con¬ 
tinues. Since the program had been previously 
moved as data, all data and text in the program 
had already been moved and are unchanged. 

The program may also be used in the same manner as 
the earlier version where data & text are moved separately 
from the instructions but the user is cautioned that all 
break instructions are ignored. These can be manually 
inserted. 

The user can also easily modify the program to relocate 
break instructions by changing line OEI9 to read: 

OEI9 4CIFOE JMPMOV1. 

DATA ENTRY: 

0000 H Relocate/Move Flag 

00 in this byte for relocate 
01 in this byte for move 

0001 LSB Low Bound for addresses 

0002 MSB 


0003 LSB High Bound for addresses 

0004 MSB 

Note: Any addresses within these bounds are recomputed 
during a relocation. 

0005 LSB Low address of program to be moved 

0006 MSB 

0007 LSB High address of program to be moved 

0008 MSB 

0009 LSB Destination address 

000A MSB 

I am sorry that errors were in the earlier version that I 
sent you. Contact me if this article is of interest and if 
I can supply any additional information. 

Sincerely, 15 Hydaway Drive 

Ralph Sherman Forest, Virginia 24551 


PROGRAM EXAMPLE USING TIM TO RELOCATE 
THE RELOCATER FROM 0E00 to 0200 


M 

0000 

XX 

XX XX XX 

XX 

XX 

XX XX 


l 

0000 

01 

00 0 







M 

0000 

XX 

XX 

XX 

XX 

XX 

XX 

XX 

XX 


0000 

01 

00 

0E 

F2 

0E 

00 

0E 

F2 


0008 

OE 

00 

02 

XX 

XX 

XX 

XX 

XX 

R 

7052 

XX 

XX 

XX 

XX 

XX. 





0E00 

04 







G 










* 

0E00 

XX 

XX 

XX 

XX 

XX 





This has moved the entire relocater down to 0200 as 
data — (the break instruction is now moved). 

Then change the byte in 000H to 00. 


H 

0000 

01 

00 

0E 

F2 

0E 


0000 

00 (carret) 




R 

xxxx 

XX 

XX 

XX 

XX 

XX 


0E00 

04 





G 







* 

0E78 

XX 

XX 

XX 

XX 

XX 


The relocation is now complete. 

Hint: Testing OOOFjj shows the next available location 
after the relocated program. 

M 000F F3 02 XX XX XX XX XX XX 


Ld 



Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


186 





— CM CL t=i CM 


CO 1— I— CO 


X> X CL X> X '•_* 

CO r- CO _I 1=4 i=l I— 

co co “i _j x o:» 


••£' LlI X 1=1 O’ u_ 

X' X' !—4 X' X X 

uo in x co uo iT' 

X CO CM -r-. x MJ CO 

C'J Tf £. .T, X (J UJ 1 
j~l~i Cm iT. l'i'i iTi i'i'i iTi 
X X X X X UJ X I 
X X X X X' X X ’ 

uo x uo X* io x in ■ 

CO 't T UO UO 'Ll MJ I 

io uo in uo iii io in i 


’HOJ —< C'-J X 


I Z Z u CO 


—< + 
■ ix 
o h- 
X X 


CJ 

X 

LU «. —. 

Hr + 

X X X X X X 
'—i I— |— X ' I— 
1 X X -M+ -X 
X O O#mO 


■ ,;r - 
1 -I X '.0 : 


C'-J 
C' J X 


X 0. X X Cl 
C' J c- j 1=1 z: x =i e; l 
Xu-1 CJ X _I c 


' X X X *— X 

1=1 .. 

_l X 
O h- 
X 


LU O CO © S' X CJ CO I_D S' x X X S' CO 1=1 
ZhuLiJMEZliJhZ 
: H J U LU H LL X 




j x x< x x x 


-XXX- 

J X' © X* L 


) CO x< 
:> x ii 




C' J x co co cm . 

> co uo r- <?> f_* 

> o x* cj o cj 

J X X X X X 

> © © © © © 


• © in- <: 

• <3 »3 


' U"' © L 
' — C'.J C 
i co 'O '• 


> V- O- 
iww 
J X X 

I © © 

■' © UO c 

:■ co co 


j C'.J CJ 
) © © 


: •_» x >: 

4 <=* i=i L 
.XXL 
:■ © © r 


CL 

CJ X c 

X © c 


. CM S' 
- © © 


« co uo r 

J X X L 
J X X L 

;■ © © c 


:• 1=1 ! o uo O' c 

0 — C_. X O f 

CO X O L 
J X X X L 

J X X X L 

:* © © © c 


X> 'S' 'S' 'S' © © © 'S' 'S' 'S' 

in 'Zii —< C'j co tj- uo 'oil r-.. co 

MJ 'S' © © © © ffi © © © _ . . 

—« C'.J C'.J C'.J C'.J C'.J C'-J C'J C'J C'.J C' J C'-J C'J o.J OJ C'.J O J o. 


•S' 'S' 'S* 'S' 'S' i’ 
O’ © H C'J CO ; 

'S' »—* •»-' —' »—« ’ 


■ o r--- 

■J C' J 


1=4 X — CO OJ 
S' CJ © © C'J 
'S' X © S' X 


x x © •: j co uo r - o-> • 

'S' © © © UO © © ® r 
■S' 'S' S' X X S 'S' X C 
'S' © © S' © © © 'S' c 


*JJ I— w-* 

XXX 'S' X X X © X 
'— i— —i’—•—<xo*-'z: 
XXX ■ X r— I— -x 

— X CO CO CO CO »—• I— 


© r- 'H'l’txx'rt 

U I X X *—) —' —« • j UO ‘S' 
CoXXXXXXXX 
S' 'S* 'S' 'S' S' X- S' S' 


x cc r-- mj o © ;-j © co 

■ j r - x. x © © x ‘ O x 

uU X X X S' X X X X 




-."X '_i OJ 
' u © © © 
'X X X :=) 
'S' C' J © © 
Lu 'S* UO 
CSS u. CE CD 
CO co x r-- 
© 'S' 'S' 
•S ’- O ’ >S‘ in 
•j x «o x 

O =i O J 


X J 
CO — 'S' uo 
S >'0 '-’J X 

X X CO — 
X X 'S' uo 
S' O ’ X CO 
'S' o > X X 
O C'J ‘S' © 
S' CO J ’ uo 
•t O’ S' >x 
X X UO X 
•S' © CO ® 
LL- X ® X 

-•j- r-- x ■a- 

© •_* CO © 
C’.J rt- —. |-'.j 


OJ 

:• S' » -i co 

■S' X CO CO 
XXX X 

CO IUUH 
X © ® —« 
© LL UO U"> 

wucta 

C' J © CO M* 

- CM — S 
U"1 X X © 
CO © © 1=1 
X UO X L'J 
© CO i=i © 

— © uo 

X 'S' C' J 
X UO X C'.J 
© X © ■—« 

X 1=1 uo uo 

® © CO X 
S U' £' X 
C'.J CO © © 

0 uo © 


H © l 


I MJ 


S © &■ L 

•S' © © 

•S’ C’J X 
uO 0-> S' 

X S' — ' 

x X* S' c 
o • x S' - 

X © —< L 

© x as c 

- ’J- -J < 
■X © CO l 
S' *. J O’’ © 
-L JJ X 
•S< 'S' C'J i=t 
uo ® 'S' 'S' 
iT I.jj U_ C’-J 
UO S' CO X 

•s -t -- © 
uo x a - 

X © S' CO 

a x 

X OJ X X 


UO UO X s* 
CO 'X © T}- 
X CO — X 
•S' S* X © 
*-« © X 
X '7% © X 
■X C'.J X © 
X © 1=1 C' J 
X © © X 
X X C' J © 
'S' X *=i — 
•S' 'S' © CO 

co x u"> x 
O ’ S' O'l © 
© S' uo uo 

X C'J © '■£' 
U ' X UO X 
|J. ® X © 
■S' UO X U" 
- -- © X 


1 x ■: 


H LU 


I ‘S' © X ffl 
X UO CO — 

: S' x co x 

!©=<** © 
' C'.J © X C'J 

x in ffl x 

uo ^ C'J — 
I OJ © © CO 

co in © O ’ 

1 S' X X © 
' UO' X X uo 
• r s- ® 

•=• x 1=1 
S' X S' ffl 
uO ® © uo 
CO *J C'J X 

r uo x x 
S’ CO O’ X 
X XXX 
© 'S' S' © 


CO 

X 


1 =) <T. 4* i—| 


X CO X ► 
CO ZhZI 
'S' ¥t O C 

4* L-4 ^ X _ 


, _ LU 


XX 

CL CL CL CL 
I— I— I— I— 
X X X X 


:—«^Q:u_XXXXXXI- 

) > j- u z h z S' z: o z: c 

^ O O X X X X I— XI— Xu 
ZEOI-Oh OJ I— OJ I— I- 


0 f - 
1—4 

X . 


J =i X 

' =4 l~ 

i r © 


. X — X — C' J — CM CM CM CM CM 

•— X 1— I— X I— X I— S’ C’J 1— XI— XI— S' ■ 

. X S X CO S CO X CO — Z=- CO X OJ X CO CM : 

1 '_'' x x x x x x "ZJ x x lu x x • : 

• •— *—• *— *— i— I— I— XXI— I— I— I— I— XI 


s 'O'. X 1=4 
X X J— X 
X X t— s 


LL. O' X S : ► 

X l-U X X 
S' X S’ X L 


. S X SI XX X 'I X X OJ 

: x x x x to t. ® i— oj oj i— 1=1 

j L.J S' XX ~ ' ' l OJ J “i X X 


X X X X X X X X X X X S' S' S X l 

OO '10 4=4 i=i 1 — i=il— i=i(— OJ LxJ x © C 


o x x x x x x x x x xxx s> x x x x s •; 

1 1 1— 1 *“7 1 S' I—'I— CO 1=1 I— i=) I— oj LU 1=1 4— in OJ LU f. 


lu lu cm lu lu 


1=1 CO X CO S' , J 


• —I rr ’.Jj s- © c 

-J _ o 


• X OJ CM -M MJ — 


• CM C- •• 

: ’-'.J C’J C 


i id LU L 

in © u 


cr- x CO 

r -t -M- UO' UJ 

LU LJ lu x lu 


■ UO © a ' 'S' UO S' UO 

1 c r r co oj oj o 

I'M j CM CM CM C'J C'J 


'■O O’ 

uo uo 

X X 

l-i.' © 

S' u'< •: 
S' © » 
CO OJ c 


x x cci ' cj C'j r--- t=i co x x uo co 

"M" S' ' S' •—' © S' S' S* S' O - O ' 

© S' uo uo in uo uo uo uo uo < 

CM C'.J X CO X OJ X CO X CO ' 

X 1=4 © Cm rt '•£' CO X S' X © CO UO f- OJ O’ 

UO UO '-£' MJ ••£> '■£' ••£' '-£> '-£i '.£■ T-_ r - X-. T - T- 7 - 

XXXXXXXXXX XXLUUJU-iX 
S' S' © © © © © S' S' S' © ® © ® © © 

' UO © uo S' U0 S' a~ © UO S' UO © UO S' u” s L 

' ~ CM *M C J C'J -r ~r UO UO »£> •£: .*•- T‘- OJ CO 

' CO CO CO CO CO CO CO C'j C'J CO CO CO OJ ro ro r 


j —« IX C£i CM CO -i fl 7 J ill L '• 
J •—* =1 S' ' X S' S' S' S' S' 1 


I CO CO T-l M 

I © © © © 


—' u"' S' — UO S' UO UO UO l 
—• X CO 'OJ X CO C'J X O' X ' 


. C' j M- CC 
I © © J 
X 


i UO —i X Si 
' Z' © 1=1 © 


:• CM L 


I' UO u - ' UO UO © S' X. 

r X CO X OJ C..J Lt_ m .r co .T t 


'OJ X 


X 1 X ' UO OJ X C_' X S' CO UO f - 'J- CQ «—i U_ ‘ J T '£-■•- t s 1=4 S' 
- i - T -- C'J CO CO OJ CO JJ CO cr-. O’ 0- ‘7- O-’ O'’ o o • X X r " r x 
LuUJXXXXXulXXXXLlILu J ill U i i i i . , . i ~ .' 11' ill 


UJ ■-.< UO © u - ' S' UO 'S' UO s 1 © UJ © |p © ij" S a~ - 

- LJ — — '.'.J OJ CO t t ll-j-' £l'.ilM X C'J X 


J u - if) if r. s 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 31 


187 




Dear Jim, February 23, 1977 

I have submitted this to the Kim-1 User Notes but thought 
that it might deserve more widespread distribution. People 
with other 6502 or 6800 systems might find it useful if they 
are going to interface to the SWTP GT6144.1 therefore submit 
it for your consideration also. 

Yours truly, 

Stan Ockers RR 4, Box 209 

Lockport, IL 60441 


1 RECENTLY ADDED THE SOUTHWEST TECHNICAL GRAPHICS E0ADD 
TO MY KIM-1. THEPE IS NOT Ml'CH PESOLUTIO'J (60X96) EUT IT IS 
RELATIVELY CHEAP CM 00) AN D GIVES A 4 ICE POCK STEATY DISPLAY 
WITH M0 FLICKEFIJG OP WHITE FLASHES 04 L'NTPY OF ME" INFORMATION. 
YOU QUICKLY COME TO REALIZE THAT GOOD PES0LUTI0N TAKES LOTS OF 
MEMORY. I’M ATTEMTT14 G PPIMAPILY TO USE ONLY THAT CONTAINED IM 
THE BASIC KIM-1. 

THE KIT SHOULD MOT PPOVIDE AMY ®P0BLENS TO SOMEONE WITH SOME 
KIT EUILLING EXPEPIE4 CE« SOCKETS APE MOT PPOVIDLD AMD IT TURNS 
OUT THAT WHILE I USED SOME* IT WOULDN’T HAVE BEEN 4 ECES SAPY • I 
INITIALLY HOOKED THE INPUT DIRECTLY TO THE KIM OUTPUT PORTS* 

IT VOPKED* BUT I LATEP REALIZED THAT SOME OF THESE INPUTS REPRE¬ 
SENTED 2 OP 3 TTL LOADS SO I ADDED BUFFERS AS SHOWN IM THE FIGURE 
BELOW. 



I USED PORT A TO OUTPUT INFORMATION AND PB0 TO OUTPUT THE STROBE. 

ONE PROELEM I HAD VAS THAT I DIDN’T REALIZE FOF A WHILE THAT 
EVERY TIME I RESET THE KIM THE GRAPHICS EOAPD WENT INTO A LISAELE 
GRAPHICS MODE. IT HAS TO EE SENT A CERTAIN CODE TO ENAELE IT 
AGAIN. I HAVE DOME THIS 1.4 THE IM I TIL IZAT ION ROUTINE BUT IT CAM 
BE DOME BY GROUNDING A CERTAIN PIN ON THE BOARD. 

THEPE IS MO R. F. GENERATOP OM THE BOARD* I VENT DIRECTLY 
INTO THE BASE OF THE VIDEO DRIVER OM A CHEAP T. V. SET TKPOUGH AN 
ELECTROLYTIC (150 MFD) CAPACITOP- THE BRIGHTNESS HAS TO EE 
ADJUSTED WHEN GOING FPOM ELACK OM WHITE TO WHITE ON ELACK EUT 
OTHERWISE IT SEEMS TO WORK 0. K. 

THE T • V* SET DOES HAVE A TRAN FORMER IM IT TO ISOLATE FROM 
THE A. C. LIME! 

I'M WORKING ON A NUMBER OF BASIC (ELEMENTARY) ROUTINES TO 
BE USED IM GAMES ETC* WITH THE BOAPL- SOME hPE INCLUDED IM THE 
T. V. SKETCH PROGPAM WHICH FOLLOWS* THIS PROGRAM ALLOWS YOU TO 
SKETCH THINGS ON THE T. V. USING THE SCUARE OF EUTTON S SUPROUNDIMG 
THE ”5’’ OM THE KIM KEYEOAPD. EACH KEY MAKES THE LINE GO VERTICALLY* 
HORIZONTALLY OR DIAGONALLY IM THE DIRECTION INDICATED BY THE 
LOCATION OF THAT KEY. KEY ’’5” IS A FLIP-FLOP FOP SWITCHING FPOM 
WRITE TO MO-WPITE MODE. A BLINKING CURSOR ALLOWS YOU TO KNOW 
WHERE YOU ARE VHEN MOT VPITING* KEY "E" IS FOP NORMAL WHITE OM 
BLACK WHILE KEY ”F" WILL SWITCH YOU TO A P' ACK OM WHITE MODE. 

KEY "B” WILL BLANK THE SCREEN WITH THE CURSOP REMAINING IN THE 
SAME SPOT- 

***** T«V. SKETCH PROGRAM ***** 


0200 



D8 


CLD 



0 1 


A9 

60 


LDA 

* £60 

i I.NITILIZE SPEED 

03 


85 

EA 


STA 

0 0 EA 


05 


A9 

00 


LDA 

#S00 

J I.NITILIZE ELINK FLAG 

07 


85 

E9 


STA 

00L9 


09 

20 

L5 

02 


JSP 

IM IT 

; I.NITILIZE GRAPHICS 

0C 

20 

F8 

02 


JSP 

BLN K 

J BLANK SCPEEN 

0 F 

20 

AD 

02 

CURS 

JS» 

SPOM 

; STAPT OF CUPSOP 

12 

20 

2 6 

03 

RET.N 

JSP 

DELA 

J DELAY 

1 5 

20 

40 

IF 

KEYD 

JSF 

KEY IM 

; IS A KEY DOWN? 

1 8 


C0 

08 


BN E 

WHAT 

; YES* FIND OUT WHICH 

1 A 

20 

A9 

02 


JSP 

SPOF 

; TUPN OFF SPOT 

1 D 

20 

26 

03 


JSR 

DELA 


20 


D0 

ED 


SNE 

CUPS 

; IN CON D. JUMP 

22 

20 

6A 

IF 

WHAT 

JSP 

GETKEY 


25 


C9 

0 B 


CMP 

# 10E 

J IS IT A ’’B”? 

27 


F0 

1 D 


BEQ 

BLKS 

; YES* BLANK SCREEN 

29 


C 9 

05 


CMP 

»£05 

; IS IT A "S”? 

2B 


F0 

2A 


EEQ 

MODE 

; YES* CHANGE MOLE 

2D 


C9 

0E 


CMP 

#£0E 

J IS IT AN "E"? 

2 F 


F0 

33 


BEQ 

NORM 

J YES* NORMAL SCREEN 

31 


C9 

0F 


CMP 

#£0F 

J IS IT A "F"? 

33 


F0 

36 


EEQ 

IM VP 

J YES* INVERTED SCPEEN 

35 

20 

72 

02 


JSR 

MOVE 

i DETERMINE MOVE 

38 


A 5 

E9 


LDA 

00E9 

J BLINK OP DPAV? 

3A 


D0 

05 


ENE 

DPAV 

J DRAW 

3C 

20 

0F 

03 


JSP 

BLIN 

** ELINK 

3F 


50 

D1 


BVC 

RET.N 

*• U.N COM D* JUMP 

41 

20 

12 

03 

DRAW 

JSR 

COM T 

; CONTINUOUS LINE 

44 


50 

CC 


BVC 

PET.N 

J UN COM D. JUMP 

46 


A5 

EE 

BLKS 

LDA 

00EE 

; BLANK SCREEN 

48 



48 


PHA 


J SAVE VEPT. AND 

49 


A5 

ED 


LDA 

00ED 

HORIZ. POSITION 

4B 



48 


PHA 



4 C 

20 

F8 

02 


JSR 

BUNK 

*• BLANK SCREEN 

4 F 



68 


PLA 


J RESTORE VEPT. 

50 


85 

ED 


STA 

00ED 

HORIZ. POSITION 

52 



68 


PLA 



53 


85 

EE 


STA 

00 EE 


55 


50 

BE 


BVC 

RET.N 

*• IN COM D. JUMP 

57 


A5 

E9 

MODE 

LDA 

00E9 

J CHANGE DRAW-NO DPAV 

59 


49 

FF 


EOR 

#5FF 

MODE 


£B 


85 

E9 


STA 

00E9 




5D 

20 

40 

IF 

WAIT 

JSR 

KEY ItN 


; 

WAIT FOP KEY RELEASE 

60 


D0 

FB 


BN E 

WAIT 




62 


F0 

AE 


BEQ 

RETN 




64 


A9 

FI 

NORM 

LDA 

# £F 1 


; 

SET NORMAL SCPEEN 

66 

20 

D8 

02 


JSR 

STRO 




69 


D0 

A7 


BN E 

RETN 


; 

UN CON D. JUMP 

6B 


A9 

F0 

INV 

LDA 

#5F0 


i 

SET INVERTED 

6D 

20 

D8 

02 


JSR 

STRO 



SCPEEN 

70 


D0 

A0 


BN E 

RETN 


i 

UN CON D. JUMP 




* 

**** MOVKLY SUBPOUTIME 

* ■ 

► *** 

0272 


C9 

00 


CMP 

#£00 


; 

DETERMINE WHICH KEY 

74 


F0 

1C 


BEQ 

CM LT 



IS PPESSED AND 

76 


C9 

01 


CMP 

#£0 1 



MAKE NECESSARY 

78 


F0 

2 C 


BEQ 

DOWN 



CHANGES TO 00EC AND 

7A 


C9 

02 


CMP 

#£0 2 



00EE 

7C 


F0 

19 


BEQ 

DNRT 




7E 


C9 

06 


CMP 

#£06 




80 


F0 

17 


BEQ 

RITE 




82 


C9 

0 A 


CMP 

# 10 A 




84 


F0 

1 6 


BEQ 

PTUP 




86 


C9 

09 


CMP 

#£09 




88 


F0 

14 


EEQ 

STUP 




8A 


C9 

08 


CMP 

#£08 




8 C 


F0 

1 3 


BEQ 

LTUP 




8E 


C9 

04 


CMP 

# 40 4 




90 


F0 

02 


BEQ 

LEFT 




92 


E6 

EC 

DM LT 

INC 

0 0 EC 


; 

DOWN-LEFT ENTRY 

94 


C6 

Lb 

LEFT 

DEC 

0 0 EB 


j 

LEFT ENTRY 

96 



60 


RTS 





97 


E6 

EC 

DNRT 

INC 

00EC 


; 

DOWN-RIGHT ENTRY 

99 


E6 

EB 

RITE 

INC 

00EE 


; 

RIGHT ENTRY 

9E 



60 


RTS 





9C 


E6 

EB 

RTIJP 

INC 

00EB 


j 

RIGHT-UP ENTRY 

9E 


C6 

EC 

STUP 

DEC 

00EC 


; 

STRAIGHT UP ENTRY 

A0 



60 


RTS 





A1 


C6 

EB 

LTUP 

DEC 

00EB 


; 

LEFT-UP ENTRY 

A3 


C6 

EC 


DEC 

00EC 




A5 



60 


RTS 





A6 


E6 

EC 

DOWN 

INC 

00EC 


; 

DOWN ENTRY 

A8 



60 


RTS 








***** SPOT ON - OFF 

SUBROUTINE ***** 

02A9 


A9 

00 

SPOF 

LDA 

#£00 


; 

SPOT OFF ENTRY 

AB 


F0 

02 


BEQ 

TSTH 


j 

UN CON D. JUM° 

AD 


A9 

40 

SPOM 

LDA 

#440 


; 

SPOT ON ENTRY 

AF 



48 

TSTH 

PHA 



; 

TEST HOP* FOR OFF SCPEEN 

B0 


A5 

ED 


LDA 

00ED 


; 

GET HORIZ* LOCATION 

B2 


30 

08 


BMI 

SETP 


; 

IF MEG. SET TO £3F 

B4 


C9 

40 


CMP 

#£40 


; 

IF >=40 SET TO £00 

B6 


90 

08 


BCC 

RET.N 



IF NOT RETURN 

B8 


A9 

00 


LDA 

#500 



LEFT HAND SIDE 

BA 


F0 

02 


BEQ 

N EVH 



UN COM D. JUMP 

BC 


A9 

3F 

SETR 

LDA 

#£3F 


; 

RIGHT HAND SIDE 

BE 


85 

ED 

MEWH 

STA 

00 ED 


j 

UPDATE HORIZ. POS* 

C0 



68 

RETN 

PLA 



; 

00 OR 40 

Cl 


05 

ED 


ORA 

00ED 


t 

COMBINE WITH 00ED 

C3 

20 

D8 

02 


JSP 

STPO 


i 

STROBE IN HORIZ. 

C6 


A5 

EE 

VERT 

LDA 

00 EE 


i 

VERTICAL ENTRY 

C8 


30 

08 


BMI 

SETB 


; 

IF MEG. SET TO 5F 

CA 


C9 

60 


CMP 

#£60 


; 

IF > = 60 SET TO 00 

CC 


90 

08 


BCC 

VMSK 



IF NOT* DON ' T CHAN GE 

CE 


A9 

00 


LDA 

#£00 


; 

TOP OF SCREEN 

D0 


F0 

02 


BEQ 

NEW 


; 

UN CON D. JUMP 

D2 


A9 

5F 

SETB 

LDA 

#£5F 


; 

BOTTOM OF SCPEEN 

D4 


85 

EE 

NEW 

STA 

00EE 



UPDATE VERTICAL 

D6 


09 

80 

VMSK 

ORA 

#£80 



PUT IN VEPT. El T 

D8 

8D 

00 

1 7 

STRO 

STA 

PAD 



STROBE STARTS HEPE 

DB 

EE 

02 

1 7 


INC 

PBD 



PB0 TO 0 (NOTE* PEI TO i: 

DE 

EA 

EA 

LA 


NOP* 

s 


; 

FOP DELAY 

El 

CE 

0 2 

1 7 


DEC 

PBD 


i 

PB0 BACK HIGH 

E4 



60 


RTS 








***** 

IN I TIL IZAT ION 

SUBROUTINE ***** 

02E5 


A 9 

FF 

IN IT 

LDA 

* £FF 


; 

A REGISTER TO OUTPUTS 

E7 

8D 

0 1 

1 7 


STA 

PADD 




EA 


A 9 

0 1 


LDA 

#40 1 


; 

PE0 TO OUTPUT 

EC 

8D 

03 

17 


STA 

PBDD 




EF 

8D 

02 

1 7 


STA 

PBD 


; 

STROEE HIGH 

F2 


A 9 

FI 


LDA 

#£F1 


j 

GPAPHICS ENAELE 

F 4 

20 

D8 

02 


JSP 

STR0 




F7 



60 


RTS 








* 

**** ELANK 

SCREEN 

SUEPOUTIME ***** 

02F8 

20 

E5 

02 

BUNK 

JSR 

IN IT 


; 

IN ITILIZE 

FB 


A9 

3F 


LDA 

#£3F 




FD 


85 

ED 


STA 

00 ED 


j 

START AT BOTTOM PIGHT 

FF 


A9 

5F 


LDA 

# £5F 



OF SCREEN 

030 1 


85 

EE 


STA 

00 EE 




03 

20 

A9 

02 

MORE 

JSR 

SPOF 


; 

TURN OFF SPOTS 

06 


C6 

EE 


DEC 

00 EE 


; 

MOPE IN VEPT LINE? 

08 


10 

F9 


BPL 

MOPE 


j 

YES 

0 A 


C6 

ED 


DEC 

00ED 


; 

MORE HORIZ. LINES? 

0C 


10 

F5 


BPL 

MORE 


J 

YES 

0E 



60 


RTS 








***** 

BLINK 

A SPOT 

SUBROUTINE ***** 

030 F 

20 

A9 

02 

ELIM 

JSR 

SPOF 


j 

ELINK ENTRY 

12 


A5 

EB 

COMT 

LDA 

00EB 


j 

CONTINUOUS LIME ENTRY 

14 


85 

ED 


STA 

00 ED 




16 


A5 

EC 


LDA 

00EC 


; 

UPDATE LOCATION 

18 


85 

EE 


STA 

00EE 



00EB TO 00EC 

1A 

20 

AD 

02 


JSR 

SPON 



00EC TO 00EE 

ID 


A5 

ED 


LDA 

00ED 




IF 


85 

EB 


STA 

00 EB 


; 

THIS IS NECESSARY TO 

21 


A5 

EE 


LDA 

00EE 



CAUSE WRAP-AROUND 

23 


85 

EC 


STA 

00EC 




25 



60 


RTS 








***** 

DELAY 

SUBROUTINE 

** 

*** 

0326 


A5 

EA 

DELA 

LDA 

00EA 



00EA CONTROLS TIMING 

28 

8D 07 

17 


STA 

1707 



START TIMEP 

2B 

AD 07 

17 

HOLD 

LDA 

1707 



TIME UP? 

2E 


F0 

FB 


BEQ 

HOLD 



NO 

30 



60 


RTS 






Page 32 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


188 



***** GRAPHICS SUBROUTINES ***** 

SPOF (SPOT OFF) THIS SUBROUTINE VILL TURN OFF THE PECTANGLE 
LOCATED HORIZONTALLY BY THE VALUE IN 00EL AID VERTICALLY BY THE 
VALUE IN 00 EE. IF THE VALUES GIVEN BY THESE LOCATIONS ARE SUCH 

THAT THE POINT WOULD BE LOCATED OFF THE SCPEEN, THEY APE REPLACED 
BY VALUES WHICH WILL CAUSE THE SPOT TO "WRAP APOTND" VEPTICALLY* 
HORIZONTALLY OP BOTH. THE SUBPOUT1NE DOES NOT AFFECT X OP Y 
REGISTERS. THE ACCUMULATOR VILL ALWAYS BE NON-ZERO ON EXIT* 

HAVING AT LEAST THE MSB SET BECAUSE OF THE VERTICAL EWTPY- 

SPON (SPOT ON) IDENTICAL TO SPOF EXCEPT THE SPOT IS TURNED OFF 

VERT (VERTICAL ENTRY) IN SOME CASES TIME CAN BE SAVED EY ENTERING 
THE HORIZONTAL ENTRY ONCE AND THEN CHANGING ONLY THE VERTICAL 
ENTRY. AN ENTPY AT VERT VILL DO THIS. CONDITIONS APE AS FOP SPOF* 

IN IT (INITILIZE) SETS UP OUTPUT POFTS FOP TRANSFER OF INFORMATION 
TO THE GRAPHICS EOAPD. ALSO SENDS CODE TO INITILIZE THE EOAPD. 
AFFECTS ONLY THE ACCUMULATOR. 

BLNK (BLANK SCREEN) BLANKS THE SCPELN. AFFECTS ONLY THE ACCU.1* 

00ED AND 00EE VILL CONTAIN IFF ON EXIT- 

BLIN (BLINK A SPOT) ALLOWS YOU TO PRODUCE A MOVING SPOT BY 
REPLACING THE COORDINATES IN 00ED AND 00EE WITH THOSE IN 00EB 
AND 00EC. THE SPOT AT THE OPIGI.NAL LOCATION IS TURNED OFF AND 
ONE AT THE NEW LOCATION IS TUPN ED ON. USES S^OF AND SPON. AFFECTS 
ONLY THE ACCUMULATOR. 

CONT ( CONTINUOUS LINE ) IF ENTEPED HEPE THE ORIGINAL SPOT VILL 
NOT BE ERASED AND IF ADJACENT COORDINATES ARE USED, A CONTINUOUS 
LINE CAN BE DRAWN. CONDITIONS AS FOP BLIN. 


MIT EXPERT ON PERSONAL COMPUTING 

People Magazine: Will computers be widely used by the aver¬ 
age person in coming years? 

Michael L. Dertouzos, Director MIT Laboratory for Computer 
Science: We don’t see technical limitations in computer de¬ 
velopment until the mid-1980’s. Until then, decreased cost will 
make computers smaller, cheaper and more accessible. In 10 or 
15 years, one should cost about the same as a big color TV. 
This machine could become a playmate, testing your wits at 
chess or checkers. If a computer were hooked up to AP or UPI 
newswires, it could be programmed to know that I’m interest¬ 
ed in Greece, computers and music. Whenever it caught news 
items about these subjects, it would print them out on my 
console — so I would see only the things I wanted to see. 

— People Magazine 
August 30, 1976 


HOW ’BOUT COMPUTER CHESS? 

Editor: March 1,1977 

Due to the apparent lack of a medium of communication 
among devotees of Computer Chess, I decided to start a 
Computer Chess Newsletter, patterned after Hal Singer’s 
Micro-8 Newsletter. 

I hope that some suitable publisher (such as PCC) or 
computer science department (such as Stanford) will pick 
this up and do what needs to be done. It seems a shame 
to re-invent the basics of computer chess programming so 
many times. An exchange of ideas might lead to a more 
powerful program than independent work can. 

No decisions have been made so far as to price, size, 
or periodicity. 

All contributions are welcome, such as letters, suggestions, 
news, programs, games, or whatnot. 

Sincerely, 

Douglas L. Penrod 1445 La Cima Road 


6502 CHESS SOFTWARE 


Dear Jim: December 10,1976 

I am pleased to announce the availability of a new and 
exciting software product designed specifically for the micro¬ 
computer hobbyist. 

MICROCHESS is a chess playing program written for the 
KIM-1,6502 microprocessor system. It requires no additional 
memory or peripherals. In fact, the total memory required 
for program operation is only 1100 bytes. 

The program can be adjusted to one of three different 
levels of play requiring 3,10, or 100 seconds for each comput¬ 
er move. Although the level of play is probably below that of 
the average serious chess player, it is a good match for the 
average computer programmer. Even the best players will be 
surprised by challenging moves. 

MICROCHESS was designed with the hobbyist experi¬ 
menter in mind. Experimenting with your own strategy ideas 
is as simple as modifying a single subroutine. Further expan¬ 
sion of the basic program will create a sophisticated chess 
playing machine. The documentation supplied includes a 
Player’s Manual with instructions for using the program, a 
Programmer’s Manual with details of the program operation 
and suggestions for expansion and modification, and a com¬ 
plete annotated source listing. 

The cost of the entire package is only $10.00. I believe 
that this package is of special interest to the readers of Dr. 
Dobb’s Journal , and would greatly appreciate your assistance 
in informing them of its availability. If you have any further 
questions please do not hesitate to write to me at the follow¬ 
ing address. 

Sincerely, 

Peter R. Jennings MICROCHESS 

1612-43 Thorncliffe Pk. Dr. 
Toronto, Ont., M4H 1J4 
Canada 

MICROCHESS 


NOW YOU CAN PLAY CHESS WITH YOUR KIM-1 
6502 BASED MICROPROCESSOR SYSTEM. 


MICROCHESS REQUIRES NO ADDITIONAL MEMORY. 

The program and data occupy only 1100 of the 1152 
bytes of available RAM. 

MICROCHESS REQUIRES NO ADDITIONAL PERIPHERALS. 

All moves are entered and displayed via the KIM 
keyboard and LED display. 


MICROCHESS PLAYS CHESS. 

Although a good chessplayer will probably beat the 
program, he will be surprised again and again by 
challenging moves. 

MICROCHESS HAS SEVERAL LEVELS OF PLAY. 

You may set the program up for 3,10, or 100 seconds 
per move. Change the speed at any time during the 
game! 

MICROCHESS IS EXPANDABLE AND FULLY DOCUMENTED. 

You receive a Player's Manual, complete annotated 
source listing, and Program Documentation describing 
the strategic algorithms. Instructions are provided tor 
modification, expansion or system conversion. Experi¬ 
ment with your own strategies by replacing one simple 
subroutine. 


MICROCHESS COSTS ONLY $10.00. 

Send your cheque or money order today to: 


MICROCHESS, 1612-43 Thorncliffe Pk. Dr., 
Toronto, Ontario, M4H 1J4, Canada. 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 33 


189 



The characteristics and decodability of the 
Universal Product Code symbol 

by D. Savir and G. J. Laurer 

Described are the coding and symbol of the Universal Product 
Code. The symbol code structure, format, encodation technique, 
and characteristics with their technical tradeoffs are discussed. 

The symbol is analyzed and evaluated. Decodability is shown to 
depend on the structure of the code and symbol, the size of the 
symbol, the precision with which the symbol is printed, the tech¬ 
nique of scanning employed, the accuracy with which measure¬ 
ments are made, the decoding logic, and the physical operation 
of scanning. The relationship between the scan pattern of a 
fixed head scanner and symbol size is shown. 

The scanning of information from the labels of supermarket 
merchandise is necessary for a practical supermarket system. 
This information is encoded in a standard form, the Universal 
Product Code (UPC). The standard comprises both the code — 
the representation of decimal characters in binary form —and the 
symbol —the printed form of the code which can be read by a 
scanner. 

In this paper, we discuss the development of this standard: we 
define a class of codes suited to optical scanning and investigate 
some of its properties, and we describe the code belonging to 
this class that was selected for the UPC . 

The code, symbol, appropriate decoding scheme, and scanning 
scheme are all dependent upon each other. They constitute the 
structure of the decoding process that is studied to evaluate the 
decodability. or decoding reliability, of the UPC'. (The UPC is 
standard in the United States and Canada. At the time of writing 
this paper, proposals for merchandise-identifying symbols for 
other countries are being advanced.) 


Development of the Universal Product Code 

The justification for a supermarket system lies both in precise 
point-of-sale data capture and in the increase of checkout pro¬ 
ductivity compared to that of a conventional checkstand. 1 
If a code were devised that could both identify each item sold in 
a store uniquely and enable the item to be checked rapidly, then 
its use could justify the development of such a supermarket sys¬ 
tem. 

Item identification could be achieved using a number containing 
sufficient characters; the state of the art dictates that rapid 
checkout and identification number entry can be achieved only 
by using a fixed scanner that reads a form of bar code rather 
than numeric information. Consequently, appropriate item iden¬ 
tification should be by a combined code and symbol in which the 
symbol is the bar-coded representation of the numeric code. 
Clearly, the code and symbol (which we will henceforth call 
merely code or symbol, as appropriate) is strongly dependent on 
a specific supermarket system —the numeric code is filed in the 
system and constitutes a data base for store decision making and 
price look-up: 1 the bar representation is attuned to the scanner 
decoding methodology. It should, therefore, follow that a super¬ 
market system should also include a code that would be placed 
on each item in the store, replacing the price mark. However, it 
became clear that the cost to a store of marking its items with 

Reprinted by permission from IBM Systems Journal.. © 1975 by 
International Business Machines Corporation. 

Page 36 


scannable code would be much higher than the cost of price¬ 
marking. to the extent of negating much of the benefit of (he sys¬ 
tem. The economically acceptable approach, recognizing the 
permanence of the code (the code number is as much part of 
item identification as its name: price is not part of it), was to 
have the code printed on the item label by the grocery manufac¬ 
turer (source-marking). (Note: Subsequently, variants of the 
code containing price were proposed. These were intended for 
items of variable weight (meat, produce, cheese) and to be auto¬ 
matically printed by the weighing device.) 

The obvious objection is that since the code depends on its su¬ 
permarket system, provided by a vendor, then one of these 
events would be necessary for a source-marked code: 

a. Grocery manufacturers would mark the symbol of every 
vendor on every item. 

b. Grocery manufacturers would print different sets of labels for 
each item, each set containing the distinctive vendor symbol: 
a store using a particular vendor's equipment would receive 
appropriately labeled merchandise. 

c. A standard code would be designed for the community of 
vendors, supermarkets, and manufacturers; this code would 
be printed on the labels. 

Event a was unacceptable because (I ) few labels would be large 
enough to contain all symbols. (2) as new vendors offered their 
products the printers would have to replace their plates, (3) 
checkout productivity would be impaired substantially, and (4) 
printing costs would be exorbitant. 

Event b was unacceptable because (I ) grocery manufacturers 
would be reluctant to print labels for systems that might not be 
installed, while supermarkets would be reluctant to install sys¬ 
tems without assurance of adequate, appropriately marked la¬ 
bels and (2) printing costs and label inventories would be exor¬ 
bitant. 

Thus, c, the least unattractive choice, was taken — industry groups 
with conflicting objectives accepted a voluntary standard for 
the code. Most of the conflicts were about symbol size and print 
quality. Grocery manufacturers wanted symbols to occupy 
little label space since the symbol would detract from product 
identification, whereas larger symbols are more easily scanned. 
The sloppier the symbol can be printed, the easier it is to print 
and the harder it is to scan. The UPC code was selected by a 
committee. Uniform Grocery Product Code Council, Inc., which 
was composed of representatives of grocery manufacturers and 
supermarket chains. This committee delegated to its Symbol 
Standardization Subcommittee the task of soliciting, reviewing, 
and amending suggestions from vendors, and finally proposing the 
UPC code to the Council. During its task, the subcommittee 
engaged a consultant, McKinsey and Co., Inc., and prepared a 
set of guidelines to enable vendors to offer suggestions for a 
code that would satisfy the guidelines, offer something more than 
the guidelines required, and be compatible with scanning equip¬ 
ment that they could be expected to subsequently provide. 

Some of the guidelines were: 

• The code should contain 10 decimal characters (subse¬ 
quently, 12 were required). 

• The symbol should be scannable omnidirectionally, i.e.. re¬ 
gardless of its orientation with respect to a scanning device. 

• The symbol should be scannable when in motion at a veloc- 

April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


190 



ity not exceeding 100 inches per second. 

• The scanning reject rate should not exceed 0.01 and the un¬ 
detected error rate should not exceed 0.0001. 

• The depth of field should be at least one inch. 

• Normal environmental contamination (abrasion, dirt, etc.) 
should not affect the scanning process significantly. 

• The symbol area should not exceed 1.5 square inches. (The 
symbol selected is of variable size.) 

The symbol selected by the Uniform Grocery Product Code 
Council, in addition to meeting the guidelines, subject to the 
parenthetical comments, also contains parity and a modulus 
check: it can also be adapted to encode more (and fewer) 
characters. 

Although the principal intent of the UPC code was to provide a 
data medium for fixed scanners, it was recognized that the coded 
information should be able to provide input to checkers using 
hand-held scanners (optical wands) and to checkers using key¬ 
boards for decimal code entry. The code was, therefore, de¬ 
signed to be readable by humans, by fixed scanners, and by 
wands. 


Optical codes 

An economically feasible means of printing a symbol is to print 
dark marks on a light background on a label. (The converse is 
also true: conceptually both processes yield similar results.) The 
code is of binary nature —the presence of a mark corresponds to 
impressed information, represented by a one bit. in a domain of 
the label (called a module), and the absence of a mark corre¬ 
sponds to lack of impressed information, represented by a zero 
bit in a module. Encoding of a symbol can be done by conven¬ 
tional binary means, i.e.. by representing the characters by their 
binary code, partitioning the space on the label into modules and 
printing marks on the modules covered by one bits (Figure 6). 

Decoding a symbol is more complex because the modules that 
define the domain of the elements of the code (one and zero 
bits) are not perceivable by the spot of light that scans the 
marks. 2 The elements of the code with respect to decoding are 
the marks (dark bars) and the spaces (light bars) between them, 
represented by runs of one and zero bits, respectively. There¬ 
fore. an integral part of the decoding process is the determina¬ 
tion of the length of each run. This determination is confounded 
by imprecision that can lead to error. 

Errors in binary decoding of line signals are due to noise, loss of 
information, or discrimination error, given that the decoding 
device is attuned to the signal. The standard error-detecting and 
error-correcting devices presume that any bit is as likely to be 
decoded erroneously as any other bit: the probability of erro¬ 
neous message interpretation is evaluated on this presumption. 

The nature of optical binary codes, however, is different. Firstly, 
the decoding device is not attuned to the signal —the speed at 
which signals from evenly spaced marks enter the decoding de¬ 
vice varies due to variation in scanning-spot velocity (especially 
when the scanner is hand held), curvature of the surface upon 
which the marked label is placed, variation in depth of field over 
the label, etc. Secondly, the techniques of error detection must 
work both with the binary coded input and with the decimal in¬ 
put—the code should contain protection against miskeying on a 
terminal keyboard. Thirdly, bits are not equiprobably subject to 
misinterpretation. If the symbol is printed with adequate con¬ 
trast (which is not difficult), random noise or loss of information 

April 1977 


will not be significant. The principal source of error is at the 
edges of marks. 

reasons for error 

In the scanning process, a spot interprets the location of each 
edge of each mark and decodes information accordingly. A de¬ 
coding error occurs if and only if the location of one or more 
edges is interpreted incorrectly. One combination of code and 
symbol has a higher decodability than another if the former can 
tolerate a stochastically greater edge dislocation than the latter 
while still decoding the information correctly. 

The edge of a mark is designed to be at a specific location. 
However, as the artwork is drawn, for example, an error is in¬ 
troduced. Further errors are introduced in the processes of re¬ 
duction and platemaking. Additional errors occur in the process 
of printing. The symbol as seen by the eye contains at each edge 
of every mark the sum of all these errors. The scanner cannot 
perceive the edge to be exactly where it is printed: there are er¬ 
rors introduced due to optical effects and to the effects of digital 
timing and discrete sampling. In addition, there are errors 
caused by the environmental degradation of the symbol of which 
dirt, wrinkles, abrasion, and moisture are a few. The total dislo¬ 
cation of the edge of the mark as perceived by the scanner is the 
sum of all these errors. If this sum of errors on any edge exceeds 
some value, a decoding error will be made. An appropriate 
choice of code and decoding scheme will be shown to neutralize 
certain components of systematic error. 

We partition the sources of edge dislocation into print error. ? . 
and system error. e s . such that the total dislocation on an edge is 
e = e fl + e s . Errors in artwork, platemaking, and printing are 
consolidated into e : errors due to optical effects and the effects 
of digital timing and discrete sampling and those due to environ¬ 
mental degradation are consolidated into e s . 

print errors 

The errors contained in e that affect the location of the edge of 
the mark are due to (I) artwork, (2) platemaking, (3) edge 
roughness, (4) extraneous ink. (5) voids, (6) smear, (7) ink- 
spread. and (8) expansion and contraction of substrate. 

Errors in artwork consist of the random error in the line drawing 
and a systematic error in photoreduction. A random error af¬ 
fects an edge ora portion of an edge independently of the rest of 
the symbol. A systematic error affects all the edges in a similar 
manner. 

Errors in platemaking contain a systematic component, increas¬ 
ing or decreasing the size of all the marks, and a random compo¬ 
nent. Edge roughness is a random effect whose intensity de¬ 
pends on the printing process and the paper. Extraneous ink and 
voids affect edges only when sufficiently large to be identified 
falsely as a mark or when intrusive into the edge of a mark. 

The error of smear is due to a systematic ink deposit in the 
direction of motion of the paper. The effect of smear on marks 
of differing shape is shown in Figure I. Arrows indicate optimal 
directions of traversal of the scanner spot with respect to the 
marks, ignoring the effect of smear. The presence of smear on 
each of the marks affects the optimal trajectory by differing 
amounts. We observe that mark D of Figure I succeeds in neu¬ 
tralizing the smear. The spot does not traverse any edge affected 
by smear over the effective range of the mark. 

The error of inkspread is due to over-inking (or conversely un- 

Page 37 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


191 



der-inking) which increases (or decreases) the size of all the 
marks, systematically. The effect of inkspread on sequences of 
marks of differing width is shown in Figure 2. If the spot of the 
scanner follows a straight trajectory across the marks, the effect 
of inkspread is to add a constant increment to the width of each 
mark. 


Figure 1 Effect of smear on marks 



(A) <B) (C) (D) (E) (f) 


Figure 2 Effect of ink-spread 
on mark sequences 



Other systematic effects result in a change in scale of one di¬ 
mension with respect to the orthogonal dimension, i.e.. an appar¬ 
ent expansion or contraction of length or width of the symbol. 

neutralizing systematic errors 

The effects of systematic errors are isolated and controlled by 
using a rectilinear bar-coded symbol and an appropriate decod¬ 
ing scheme. The symbol is a sequence of long rectangular marks 
of several widths separated by spaces of several widths (Figure 
5). By printing the symbol such that the bars are aligned with 
the motion of the paper through the printing press, the adverse 
effects of smear are controlled. The other systematic effects are 
controlled by the decoding technique. 1 

decoding technique 

In this decoding technique, the ratio of the measurement across 
a mark and an adjacent space to a reference measurement within 
the character is used. Practically, the measure cannot be one of 
length; the time to effect the transitions is actually measured. 
Since the decoding device is not attuned to the signal, the refer¬ 
ence measurement is necessary, and since the scanning spot does 
not necessarily cover the marks at a uniform velocity, the ref¬ 
erence measurement should be proximate to the decoding 
measurement. 

We illustrate the power of this decoding technique by examining 
the phenomenon of inkspread. separating its error effect from 
the other errors that contribute to edge dislocation. Schematical¬ 
ly. the section across a sequence of marks and spaces through 
which the scanning spot passes is as shown in Figure 3 where rr (l 
through a 5 represent the locations of the edges of the marks, 
with a 0 , « 2 , and a 4 denoting space-to-mark transitions and 
u r and a 5 denoting transitions from mark to space. We assume 
that each of the edges is dislocated due to various errors, but 
that dislocation due to inkspread is not included. Suppose, in 
addition, that we have the means of decoding the symbol based 
on data a r 

Now let us apply an error, due to inkspread. where f is un¬ 


known (in fact, will vary from print run to print run) but is con¬ 
sistent throughout any single print run. After the error f is ap¬ 
plied. the sectioned symbol is like Figure 4 where b i represent the 
locations of the edges of the bars corresponding to locations 
denoted by under the transformation: />, = «,— (—I )'f. The 
even-indexed locations are shifted to the left, and the odd-in¬ 
dexed locations are shifted to the right, yielding an increase in 
the width of each mark of 2f, independent of the original width 
of the mark. The locations b t are the only edges perceivable to 
the scanner or to the eye. 

Figure 3 Section through sym- Figure 4 Section through sym¬ 
bol, ignoring effects bol, accounting for 

of systematic errors effects of systematic 


errors 



Now for / 2 2: 

h t - b,_ 2 = «, - (-1 )'f - «,_ 2 + (-1 )' 

= ", - ",- 2 

which yields sufficient information for the decoding of the sym¬ 
bol. Hence the process of decoding by measuring the distances 
between the leading edges of adjacent marks and those between 
the trailing edges of adjacent marks isolates and controls the 
effect of the error. due to inkspread. Each such distance spans 
a mark and an adjacent space. By the same argument, any system¬ 
atic error that widens or narrows each bar by the same amount 
is circumvented by this decoding technique. 

A class of suitable codes 

Desirable properties of a suitable optical code are 

1. Each character representation should be of fixed length and 
stand alone, independent of adjacent characters. This feature 
enables label makers to print the code simply and facilitates 
artwork preparation of source-marked labels. 

2. Each character representation should contain a fixed refer¬ 
ence measurement from the leading (trailing) edge of a mark 
to the leading (trailing) edge of another known mark. The 
code should be decodable forwards, in which .the reference 
measurement lies between the leading edges, or backwards, 
in which the reference measurement lies between trailing 
edges. 

A class of suitable codes is the class of in. k) codes. An (/;, k) 
code represents each character uniquely by n bits containing k 
runs of one bits and k runs of zero bits. I 5 k5 nil. The first 
bit of a character is a one bit. In the terminology of marks and 
spaces, we can define an in. k) code as one in which the repre¬ 
sentation of each character is by a unique set of k marks and k 
spaces spanning exactly n modules and beginning with a mark. 

The definition is related to forward scanning and decoding. The 
reference length is measured between leading edges k marks 
apart. An in. k) code is decodable backwards, in which case the 
reference measurement is found between the trailing edges of 
marks. 

An in. k) code represents ) distinct characters. This fol¬ 

lows from the fact that there are _ * ) distinguishable ways of 


Page 38 


Dr. Dobb's Journal of Computer Calisthenics 8< Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


192 






placing n indistinguishable items into r buckets such that no 
bucket remains empty. 1 

Table I shows the number of distinct characters representable in 
(n. AI codes for 2 S n 5 10, 1 IE A £ 4. We note that, for the least 
necessary number of bits, a (6. 2) code will represent the set 
of decimal characters adequately, a (7, 2) code will represent 
the set of decimal characters with additional recognition charac¬ 
ters. and a (9, 2) or (9. 3 I code will represent a full alphanumeric 
character set. 


Table 1 Distinct characters in 
( n, k) codes 



i 

A — 

2 

3 

4 

n 2 

i 

0 

0 

0 

I 3 

2 

0 

0 

0 

4 1 

3 

1 

0 

0 

5 

4 

4 

0 

0 

6 

5 

10 

1 

0 

7 

6 

20 

6 

0 

8 

7 

35 

21 

1 

9 

8 

56 

56 

8 

10 

9 

84 

126 

36 


If parity (odd or even) is desired, a (7. 2) code will represent 
the set of decimal characters, an (8, 2) code will represent the 
set of decimal characters with additional recognition characters, 
and a (10, 3) code will represent a full alphanumeric character 
set. In summary, if the code contains six bits, we have decimal 
representation, if seven bits, we also have either additional char¬ 
acters or parity, if eight bits, we have both additional characters 
and parity, if nine bits, we have alphanumeric representation 
without parity, and if 10 bits, we also have parity. 

Given an (//, A I code, we can identify each character represented 
by the code by an integer 2A — tuple (<■,, c 2 . • • \ c 2k ) <\ 2 I, 
I) ” A <j. = n. <\ is the length of each run of one or zero bits, or, 
equivalently, the number of modules contained in each mark and 
space. We have noted that in the scanning and decoding of the 
symbol, the determination of the values of <. may be difficult due 
to the expansion or contraction of the printed marks. This diffi¬ 
culty is largely overcome by the decoding technique in which 
the distance encompassed by a bar and adjacent space is mea¬ 
sured. 

Let 

', = <-.+ ‘W /= I.2. --.2A— I 

*lk ~ ( 2k 

i is in one-to-one correspondence with c: in fact 

G=i<-D'- J o 

J=i 

We note that is the number of bits covered by two adjacent 
runs, except for i 2k which is the length of the last run of zero bits 
in a character. The decoding of a character by its / representation 
rather than its <■ representation will be less susceptible to the 
error of mark expansion or contraction. We cannot, however, 
dispense with i 2k because (/,,•• •, i u ._, I may correspond to more 
than one value of (c,,- •. c 2k ). hence will not decode uniquely. 
t 2k , is redundant, since 

k 

£ = " 
i l 

The set of {/,.• ■ •. I., k 2 } is connected at integer points, i.e., given 


a value of (/,,•••, t 2k _ 2 ) it is always possible to change at least 
one of the l i by one integer (up or down) to yield another value 
of (/,,•••, t 2k _ 2 ) which, of course, corresponds to a different char¬ 
acter or characters. Parity on (/,,•• •, t 2k _ 2 1 is a protective device: 
it would be useful if parity on the values of / were equivalent to 
parity on the one bits of the character, i.e.. 

k 

1 <»-, 

i=l 

/ k v /A- Ik v 

(S r 2 (-i) moc * ^ = (S S I tj ) mod A 

M=1 ' '/= I j=2i -1 ' 

J:-\ . 

= ( S l ^ii -1 ~~ *2/) ) mod ^ 

'/= l ' 

Figure 5 UPC symbol 



For an (;t, 2) code we have 
(c, + f s ) mod 2= (/, — t 2 ) mod 2 
= ( r, + t 2 1 mod 2 

For an («, 3) code we have 

(c, + c., + c 5 ) mod 3 = ((/, — f 2 ) + 2(/., — I *)) mod 3 
= ( r, — i 2 — t 3 + t 4 ) mod 3 

For A > 3 we cannot express the parity of 
(s Gf-i) mod k 

as a mod A linear function of I with unit coefficients. 

Therefore, both (/i. 2 ) codes and (n. 3) codes can use parity that 
is equivalent for both the sum of the one bits and sums (or dif¬ 
ferences) of the values of (/,,• • •, l 2k _ 2 ): for the (/;, 2) code the 
parity is the “traditional" binary parity: for the (/;, 3) code a 
ternary parity must be used. (Note that U, ± t 2 ± l 3 ± t A ) mod 2 = 
(t - j + c 5 ) mod 2: in general. 2^~~±r l mod 2= (c,+ c 2k _,) mod 2.) 

The decoding process will use the measurements of the variables 
/ f normalized by the measurement of the reference n. In the next 
section, we describe the UPC code selected, after which we dis¬ 
cuss the details of its decoding. 


April 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 39 


193 




Figure 6 Binary and bar-coded representation of even-parity characters 



Figure 7 Decomposition into two symbol blocks 






Description of UPC code and symbol 

Of the (n, k) codes, («, 2) codes contain parity equivalence be¬ 
tween the parity of one bits in the character and the parity of the 
bits contained in the modules whose measurements are necessary 
for decoding by the technique previously discussed. Since the 
(7, 2) code contains sufficient characters for decimal representa¬ 
tion with parity, this was the code selected for the UPC symbol 0 
in a rectilinear bar-code format. 

Each character is represented by two dark and two light bars, of 
an integral number of modules each, spanning a total of seven 
modules. The character begins on a dark bar. The symbol of 
Figure 5 is broken out in Figure 6 to show the representation of 


a character and the binary representation of the bars in which a 
dark (light) bar occupying i modules is represented by a run of 
one bits (zero bits) of length i. 

The symbol contains 12 characters (including a modulus check 
character), broken into two symbol blocks of six characters 
each which are scanned independently. If the symbol were un¬ 
broken, a symbol of comparable decodability and module size 
would require significantly longer bars than the symbol selected. 
This point will be discussed with the omnidirectionality of scan¬ 
ning. Each symbol block is delineated by two dark guard bars, 
separated by light bars, of one module each. The center pattern 
of guard bars is shared by both symbol blocks (Figure 7). The 
left block is distinguishable from the right block by the parity of 
the included characters —odd parity characters fill the left block, 
even parity characters fill the right block. The beginning of a 
character (dark bar) is closest to the center pattern. The binary 
representation of the complete character set is shown in Figure 
8. Note that the odd parity characters complement the even par¬ 
ity characters, and characters are unambiguous when reflected, 
permitting backwards scanning. 

Figure 8 Binary representation 
of character set 

ODD PARITY ON THE LEFT 
EVEN PARITY ON THE RIGHT 

LEFT RIGHT 

CHARACTERS CHARACTERS 

0 0001101 1110010 

' 1 0011001 1100110 

2 0010011 1101100 

3 0111101 1000010 

4 0100011 1011100 

5 0110001 1001110 

6 0101111 1010000 

7 0111011 1000100 

8 0110111 1001000 

9 0001011 1110100 

With a rectilinear bar code, omnidirectional scanning is achiev¬ 
able by an X-pattern. comprising one or more Xs (Figure 9). 
Under omnidirectionality, with a simple X-pattern (one in which 
all Xs are identical), when the legs of the X subtend an angle 
(a) of 45° to the normal to the mean direction of item movement, 
the length of the bars is minimized, 1 ' at a value b = a- 1- lit, where 
a is the width of the symbol block, ii is the item velocity, and t is 
the period of the scanning cycle J (Figure 10). 

Figure 9 Omnidirectional scanning using X-pattern 



Page 40 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


194 



Figure 10 Dimensional parameters for omnidirectional scanning 



The value of ut to which the scanner is designed is called the 
oversquare, for obvious reasons. It should now be clear why the 
symbol is designed in two blocks; if only one were used, the 
necessary symbol area would be close to 2u(2a + ut) which is 
significantly larger than the necessary 2a{a + ut) of the UPC 
symbol. It might be inferred that four blocks are superior to two; 
however, each block requires specific identification within the 
symbol. The UPC blocks are identified by their parity. If four 
blocks were used, so many additional characters would be re¬ 
quired for block separation and identification as to negate the 
advantage of the reduced bar length. 

The power of parity is slightly weakened, therefore, in the UPC 
code; parity is used both for block identification and for charac¬ 
ter validation. Characters are assumed to be of the correct parity 
if all six characters in a block possess the same parity. The prob¬ 
ability of decoding error due to this weakening is vanishingly 
small. We shall show subsequently that there is a variant of the 
UPC symbol (Version E) with even weaker parity structure — 
this symbol contains only one block with three odd and three 
even parity characters. The error detection and correction meth¬ 
odology is discussed in detail in References 6 and 7; however, in 
brief, the following interpretations are made: 

• If six odd(even) parity characters are scanned, a left (right) 
block is assumed, to be confirmed if an assumed right (left) 
block is also found. 

• If five odd (even) parity characters are scanned, a left (right) 
block containing an invalid character is assumed, to be con¬ 
firmed if an assumed right (left) block is also found. 

• If three odd and three even parity characters are scanned, a 
Version E block is assumed, to be confirmed if no assumed 
right or left block is found. 

• If four odd or even parity characters are scanned, the infor¬ 
mation is useless and ignored. 


ments of the decoding technique, and also that is redundant 
since /, + /., = 7 in all cases. Representing each character by (f,. 
t.,) we obtain the matrix of Figure I I. 

The decoding process is to first ascertain values of t, and t., from 
measurements of the decoding technique, and then to discrimin¬ 
ate. where necessary, between one and seven and between two 
and eight. Measurements T r T„ and 7 (the reference measure¬ 
ment) 1 ’ are indicated in Figure 12. 


Figure 1 1 Decimal characters as 
functions of t, and t 2 



NOTE ODD (0) AND EVEN (E)PARITV 

Table 2 Decoding tables 


Figure 12 The T measurements of 
an even-parity nine 



Character 


c-notation 

odd even 


t-notation 

odd even 


0 

1123 

3211 

2353 

5321 

1 

1222 

2221 

3442 

4431 

2 

2212 

2122 

4332 

3342 

3 

1 141 

Mil 

2551 

5521 

4 

2311 

1132 

5421 

2452 

5 

1321 

1231 

4531 

3541 

6 

41 1 1 

1 1 14 

5221 

2254 

7 

2131 

1312 

3441 

4432 

8 

3121 

121.3 

4331 

3343 

9 

2113 

3112 

3243 

4232 


We establish the following decision rules with respect to the in¬ 
terpretation of the value of If. 


T, 2 i 

y<^=>A/ ( =2 

2t T ( 3* 

7 < 7 -y=> A '. = 3 

3i T, 4| ^ 

— < 5 — => A t =4 

7 T ~ 7 1 


4| T t 
- < — 
7 T 


=> At, = 5 


where At, is the value assigned to t , as a consequence of the 
decision. The decision is correct when At, = t,. We note (Figure 
11) that an error of one unit in the interpretation of either t, or t„ 
but not both will cause a parity error in the decoded character. 


The various versions of the UPC symbol are described in the 
Appendix. 

Decoding the UPC symbol 

From Figure 8 we can represent the characters in both <■ and t 
notation of (ti. k) codes as shown in Table 2. 

We have previously noted that (/,. t.„ /.,) are related to measure¬ 


There are two approaches to the resolution between one and 
seven and between two and eight. One approach, discussed in 
detail in References 6 and 7. is to extend t, to cover the first 
mark of the subsequent character (or guard bar if no character 
follows), and to measure an associated T r Then, having decod¬ 
ed the subsequent character, its value r, is known, which, when 
subtracted from A t, will yield the unextended t r Another ap¬ 
proach is to measure the mark corresponding to c, (in the case 
of the one-seven discrimination) or to <•., (in the ease of the two- 
eight discrimination) directly, correcting for systematic errors. 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 41 


195 




deciding whether the measured value corresponds to one or two 
modules and decoding accordingly. 

This decoding process is suited to decoding in real time. Since 
characters can be decoded both forwards and backwards, if a T 4 
measurement is required fora character and if the symbol block 
is scanned backwards, then the resolution of the character is 
immediate. Resolution must be delayed if the block is scanned 
forwards. 


Symbol decodability 

A probabilistic model of decoding reliability or decodability is 
presented in Reference 6. In this section, we will qualitatively 
discuss factors that contribute to the symbol decodability. 

When an item is passed over the scanning window, one of the 
following three consequences will occur, in order of decreasing 
desirability: 

1. The symbol will be correctly decoded and transmitted to the 
controller. 

2. No code will be transmitted, the scan will be rejected, and 
the system will request another item pass. 

3. An incorrect code will be transmitted to the controller. 

Symbol decodability is the probability of each of these out¬ 
comes. It depends both on how successfully the symbol is de¬ 
coded and on how well the system recognizes decoding error if 
it exists. The probability of decoding error depends on the likeli¬ 
hood of making the correct decoding interpretations discussed in 
the previous section. Three devices are contained in the code 
and symbol to assist in recognition and possible correction of 
decoding errors should they occur. They are redundancy, parity, 
and a modulus check. 

As the item is passed over the scanning window, each symbol 
block will be scanned a variable number of times, depending 
upon the length of the bars of the symbol, the item velocity, and 
its orientation with respect to the window. Each scan will collect 
information from a different "slice’ - of the label so that it is un¬ 
likely for a specific error due to a random print imperfection to 
occur on more than one of the scans. If an error occurs as a 
consequence of the incorrect interpretation of a f, or a T 2 mea¬ 
surement. but not both, then the parity of the decoded character 
will be reversed (Figure 11). 

A correctly decoded scan will satisfy the modulus check. If all 
characters except one are correctly decoded and the incorrect 
character is also of incorrect parity, then the code can be cor¬ 
rected by using the pointer of parity violation in conjunction 
with the value of the syndrome or checking number. 

Simultaneous use of redundancy, parity, and modulus check 
yields an adequate level of decodability. given sufficient decod¬ 
ing accuracy, which in turn depends on print quality and on the 
precision of the scanning device. 


Summary 

Optical scanning components of supermarket systems require 
machine-readable code. The need for industry-wide cooperation 
and standardization .of a code and symbol was shown. The 
sources of decoding error in printed optical codes were dis- 

Page 42 


cussed and a class of codes, the (n, k) codes, relatively resistant 
to error, were presented. The UPC code is a (7, 2) code. 

The UPC code and a method of decoding it were described. 
Decodability depends on several parameters: their quantitative 
relationships and effects upon decodability are found in another 
paper. 6 

ACKNOWLEDGMENT 

The material from the UPC Symbol Specification in the Appendix 
is reprinted by permission of the copyright owner. Distribution 
Codes. Inc. 

CITED REFERENCES 

1. P. V. McEnroe. H. T. Huth. E. A. Moore, and W. W, Morris. III. "Overview 
of the Supermarket System and the Retail Store System." in this issue. 

2. L. D. Dickson and R. I . Soderstrom. lh< lH\i Snpenmirk’.' Siiinnrr. Tech¬ 
nical Report (in preparation). IBM Corporation. System Development 
Division. Rochester. Minnesota. 

3. P. V. McEnroe and J. E. Jones. Identification 1 echnolofty for the Retail In¬ 
dustry. IBM Corporation. System Development Division. Research Triangle 
Park. North Carolina (October 1971). 

4. W. heller. An Introduction to Probability 1 henry and its Ap/tlications. Vol. I. 
2nd Ed.. 37. John Wiley & Sons. Inc.. New York. New York I 19371. 

5. UP( Symbol Specification.© Distribution (tides, Inc. (formerly Distribution 
Number Bank. Inc.). 1723 K Street. N. W.. Washington. D C. ( 197.3). 

6. D. Savir. A Model of the Dccotlnhility of the l 1 niecrsnl Product ( iule Symbol. 
Technical Report TR29.0I23. IBM Corporation. System Development Di¬ 
vision. Research Triangle Park. North Carolina. 

7. D. Savir. The bisect of the Desiitn of the IIIM Proposed U PC Symbol and 
Code on Scanner Decoding Reliability. IBM Corporation. System Develop¬ 
ment Division. Research Triangle Park. North Carolina (October 1972). 


Appendix 

There are five versions of the UPC symbol that are reserved for 
specific uses’ as listed in Table 3. The format for the five versions 
varies as shown in Table 4. Of specific interest are Versions A 
and E. The other versions are modifications of Version A. 

Except for Version E. the number system character identifies 
both the version and the type of item that is described: for ex¬ 
ample. both a grocery item whose information characters iden¬ 
tify the item, and a weighed item, such as meat or produce, whose 
information characters contain a variable price, would be en¬ 
coded in the same version but distinguished by the value of S. 

The zero-suppression version (E) is similar to the portion of 
Version A (regular symbol) to the left of the center except for 
the following: 

1. It has a right guard pattern which is coded 010101. 

2. Three of the characters are coded in odd parity and three in 
even, as in Figure 4. except that the even parity characters 
are reflected. 

3. Only two number systems are available: “0." used for regular 
UPC numbers: and “1”, which is currently unassigned. 

4. The coding of the zero-supression version is compressed into 
six characters of varying parity. The determination of wheth¬ 
er a character’s parity is odd or even is given in Table 5. 

There is, therefore, no explicit character encodation of the num¬ 
ber system or modulo check characters: their values are derived 
from the parity permutation of the six encoded characters. 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


April 1977 


196 



Table 3 Five versions of the UPC symbol 


Version Intended Use and Number of Information Characters 

A Basic version . used to encode the 10-character Grocery Industry UPC as well as the present National 

Drug Code (NDCl and National Health Related Items Code (NHRIC). 

B Special version, reserved for encodation of the National Drug Code and National Health Related Items 

Code if expansion to 1 I characters is required at a later date. 

C Special version, with 12 characters, reserved to promote industry-wide product code compatibility, ex¬ 

panding the existing family of compatible codes (Grocery UPC. NDC. NHRIC. Canadian Grocery Code, 
and the Distribution Code). 

D The 12 + // character or variable-message length version was adopted to provide a compatible version of 

the symbol for possible use in grocery stores that sell general merchandise or in general merchandise or 
department stores where more information may be needed in the symbol. Note that effective use of this 
version for source symbol marking implies agreement by general merchandise distributors and their sup¬ 
pliers on a common code numbering system. 

E The zero-suppression version of the symbol is included to facilitate source symbol marking on packages 

that would otherwise be too small to include a symbol. This is achieved by encoding the symbol in six 
characters in a special way that leaves out some zeros that can occur in the UPC code. For example, code 
12300-00045 can be encoded in a symbol as 123453. effectively eliminating half of the area that would 
otherwise be required for the symbol. 


Table 4 Format for UPC symbols 


l ersion 


Title 


Format 


A 

B 

( 

D 

E 


Regular 
Drug B 
12-character 
1 2 T n-character 
Zero suppression 


SXXXXX XXXXXC 
sxxxxx xxxxxx 
XSXXXXX XXXXXC X 
SXXXXX XXXXXC XX 
WWW 


X information chiiractcr 
S number system character 
( modulo Ml check character 


S-100 BUS START-UP KIT FOR $79.95 

If you have decided that the best way for you to get started 
in hobby computing is to build it yourself, then this project 
is for you. 

After you have decided on the 8080 microprocessor, and 
looking through various computer magazines you can find 
many bargains in areas of memory cassette I/O video display, 
etc. Power supply and mother board usually don’t pose much 
of a problem. Well, after you have all these cards built and 
plugged into your S-100 Bus, what next? 

With the construction of this card you can have your oper¬ 
ating system and BASIC loaded in 80 seconds from turn on! 
There is a direct Keyboard input port plus 1 additional in port 
and 2 output ports. It uses 2 easily programmed 32 x 8, 8223 
PROMS. There is plenty of additional space for 2K, 2102 
RAM or possibly VART for serial users. It is constructed using 
wire wrap techniques on a S-100 prototype card. Minimum 
RAM required is 2K at the top of memory and 8K at the be¬ 
ginning. The data on the PROMs and the software on Cassette 
provided is based on the use of the very popular Tarbell 
cassette interface and the Processer Technology VDM-1. Our 
lab computer is running with MITS CPU or Byte Shop CPU 
and Solid State Music, Vector Graphic, and Processer Tech¬ 
nology Memory. We also use the Pennys 6536 tape recorder. 

Parts if purchased separately cost over $100.00. Kit price is 
$79.95 post paid. Included Proto Card and all parts and com¬ 
plete documentation card separately $25.00 post paid. Data 
package $7.50 post paid. Available off the shelf from Sargent’s 
Distributing, 4209 Knoxville, Lakewood, Ca. 90713. Bank 
America-Master Charge orders accepted. 


Table 5 Parity pattern of the zero-suppressed symbol 


N umber 
system 

Modulo check 
character value 

/ 

Character location number 

2 3 4 5 

6 

0 

0 

E 

E 

E 

O 

O 

o 

0 

1 

E 

E 

O 

E 

O 

o 

0 

2 

E 

E 

O 

O 

E 

o 

0 

3 

E 

E 

O 

O 

O 

E 

0 

4 

E 

O 

E 

E 

O 

o 

0 

5 

E 

O 

O 

E 

E 

o 

0 

6 

E 

O 

O 

O 

E 

E 

0 

7 

F. 

O 

E 

O 

E 

O 

0 

8 

E 

O 

E 

O 

O 

F. 

0 

9 

E 

O 

O 

E 

O 

E 

1 

0 

O 

O 

O 

E 

E 

E 

1 

1 

O 

O 

E 

O 

E 

E 

1 

T 

O 

O 

E 

E 

O 

E 

1 

3 

O 

O 

E 

E 

E 

O 

1 

4 

O 

E 

O 

O 

E 

E 

1 

5 

O 

E 

E 

O 

O 

E 

1 

6 

O 

E 

E 

E 

O 

O 

1 

7 

O 

E 

O 

E 

O 

E 

1 

8 

O 

E 

O 

E 

E 

Q 

1 

9 

O 

E 

E 

O 

E 

o 


SIGNETICS OFFERS SECOND-SOURCING 
OF INTEL AND TI 4K DYNAMIC RAMS 

SUNNYVALE, Calif. — A 4096-bit Read/Write Dynamic 
Random Access Memory has been introduced by Signetics. 

The 4K x 1 device, designated 2680, is fabricated using 
N-Channel silicon gate MOS technology. The unit is 
identical in specifications and in its 22-pin configuration 
to the Intel 2107B and the Texas Instruments 4060 RAMs. 

Signetics designed the 2680 with minimum production 
costs as a prime criterion, using a single transistor cell to 
minimize the device area, according to Ralph Kaplan, 
Marketing Manager for Memories. 

The single device cell, along with design features in 
the on-chip peripheral circuits, yields a high performance 
and low cost memory device for a variety of applications, 
including those requiring high speed, low cost, and/or 
large bit capacity. 

The Signetics 2680 is priced competitively with the 
Intel and Ti devices, Kaplan says. Delivery is two to four 
weeks in quantities up to 5,000; six to eight weeks for 
larger quantities. 

For further information contact Signetics, 811 East 
Arques Avenue, Sunnyvale, California 94086. 

Telephone: (408)739-7700. 


April 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 43 


197 





dr. dobbs journal of 


COMPUTER 


C 


alisthenics 


60 


rthodontia 


Running Light Without Overbyte 

Number 15 May 1977 Volume 2, Issue 5 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 

(BE IT E VER SO LA TE) 


What to Get Your Computer for its First Birthday, by Jef Raskin 5 

Testing the DZ80-80 CPU: Nifty Z-80 Conversion for Altair & IMSAI Computers, by Jef Raskin 7 

SOFTWARE 

Jack Armstrong’s Super Decoder Ring — Revisited, Marvin R. Winzenread 9 

Video Chase for 8080/VDM, Joseph J. Sanger 10 

Source Code for 8080 PILOT, Version 1.1, John A. Starkweather, Ph.D. 18 

A Practical, Low-Cost Home/School Microprocessor System, Joe Weisbecker 34 


. .. .and the usual glob of fascinating fillers 




© David Dameron 1979 


PROPER CREDIT & SWTPC PRAISE 

Dear Jim, May 10,1977 

1 would like to take this opportunity to thank you and 
your staff for the very warm welcome 1 received when I wan¬ 
dered into the PCC offices on a recent trip to the west coast. I 
was very impressed by how such a diverse group of people all 
seem to be able to work so well together and put out an excel¬ 
lent group of publications. Keep up the good work! 

1 would also like to comment on Gary Alevy’s 64 character 
modification for the TVT-I1 which appeared in the February 
DDJ without proper credits. It was first distributed by mem¬ 
bers of the Atlanta Area Microcomputer Hobbyist Club at the 
Dayton Manifest in May, 1976. The modification is the work 
of one of our members, Dave Kemp, who spent many hours 
coming up with this very elegant modification. (Much more 
elegant, 1 might add than some kits that do the same for $10- 
$20!). While the original material was not copyrighted, I felt 
that your readers might like to know where the modification 
originated. [WE CONCUR.--JW] 

On another subject... 

There are large numbers of Southwest Technical Products 
and other 6800 systems in the Atlanta area ranging all the way 
from 48K systems with disks and printers down to single 
board evaluation kits. With the recent proliferation of 6800 
software at affordable prices (usually free!) including at least 4 
versions of BASIC and the simplicity of 6800 hardware, the 
number of 6800 based systems in use is growing rapidly. I am 
looking forward to seeing more 6800 articles in DDJ and 
would be interested in corresponding with anyone to exchange 
programs/information/ideas/problems/etc. on the 6800. 

Finally ... In reply to Mr. Goldsmith’s letter in Feb. DDJ , 

I have built two SWTPC 6800 systems without the first prob¬ 
lem and have nothing but praise for the quality of their kits; 
two compliments that I can not give to the MITS 8800 after 
spending weeks of fruitless debugging with my roommate 
trying to wade through several layers of corrections in their 
manual. I believe the SWTPC instruction book to be one of the 
best for any personal system that I have seen. There are many 
SWTPC systems in the Atlanta area and I know of no one who 
has had any problems in getting one up and running. My first 
SWTPC 6800 kit went from box opening to operation in less 
than 12 hours! .. . and it worked the first time that power was 
applied. 

In closing ... keep up the good work; DDJ is the best 
source of objective information in the computer hobby 
around. 

Sincerely, 

Jim Stratigos 2360 Clyde Dr. 

Chamblee, GA_3034j_ 

COSMAC 

Dear Sir: March 7,1977 

I have a 156 byte COSMAC operating. It plays music, 
measures time intervals and frequencies, interfaces both 
ways with a 20 mil teletype and interfaces to and from an 
ordinary cassette using the “KC” standard. I do all this 
with $5 worth of equipment in addition to the $87 worth 
in the Aug. 1976 Popular Electronics original. Software 
not hardware. 

Is this of interest to you? 

E.M. McCormick 
8720 Ewing Drive 
Bethesda, Maryland 20034 

Yum, yum ... YES! Send all the details and well 
be delighted to publish ’em. - JCW 


COMPUTER COMPATIBLE CODE 

Mr. Jim Warren, Editor 
Dr. Dobbs Journal 
Box E, PCC 
Menlo Park, CA 94025 

Reference is made to your discussion of Machine-Readable 
Programs in Magazine Format appearing in your Nov/Dec 
issue. 

The provision of a computer compatible printed code is 
highly endorsed in this quarter. It can cut costs in both 
printing and reading. 

However, it is suggested that it might be better to move to 
a printed “character” which can also be easily read by humans 
and written by humans. We have tried to provide the latter. 
About the periphery of this letter you will find some historical 
dates and other printed in “computer compatible digits”. 
These are easily read by humans as Arabic digits and more 
easily written. The digits are printed directly from computer 
words and can be read into a computer directly. No encoders 
are necessary. 

The four element digit has been expanded into a ten- 
element “Computer Compatible Character” which permits the 
letters of the alphabet and all other characters to be repre¬ 
sented. 

I don’t want to bore you with a lot of discussion. The move 
to a bar code is good. But it just might be better to move to a 
printed text which is also human readable and writeable. 

George E. Row 4719 Squire Drive 

Electronic Designer Indianapolis, IN 46241 

Computer Compatible Inst. Co. 

Phone f\\ f_\ AK A_L 



MONTHLY UPDATE ON PERTEC’S MITS BUYOUT 


News Release from Pertec Received: 77-5-16 

ALBUQUERQUE, New Mexico, May 9, 1977 --Shareholders of 
MITS, Inc., today approved the proposed acquisition of MITS by Pertec 
Computer Corporation. 

The agreement calls for the exchange of 746,154 shares of PCC 
common stock for the approximately 966,900 shares of MITS currently 
outstanding. 

The acquisition will become effective by May 20, pending the com¬ 
pletion of certain legal formalities. 

Pertec Computer Corporation is based in Los Angeles and designs, 
manufactures, markets and services key data entry and processing sys¬ 
tems and computer peripheral equipment. 

MITS, based in Albuquerque, was founded in 1969 and is a pioneer 
and leader in the development of microcomputer systems which are 
used by small businesses and computer hobbyists. 

MITS' revenues for the year ending December 31, 1976 were 
approximately $5.7 million and the company reported net income of 
$370,000 or 39 cents per share. 

Pertec Computer Corporation is expected to report near-record 
earnings per share on sales of more than $94 million for the year 
ended March 25, 1977. 

Page 45 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


201 


NOSTALGIC? 

Dear Sir: Nov. 4, 1976 

As a reader of Dr. Dobb’s Journal of Computer Calistenics 
I have noticed the absence of any columns on computer 
nostalgia and antique computers. Antique computer 
interest appears to be growing because it is perceived in 
perspective to and in contrast with microprocessors. 

Nostalgia discussions would compare old computers with 
microcomputers in the area of first cost, computing 
power, logical organization, speed, electricity consumption, 
size, wieght, reliability, etc. 

Antique computers include the desk size drum and 
vacuum tube machines of the ’50’s, early magnetic core 
minis of the ’60’s, and the first Wang and HP desk top 
calculators of the late ’60’s. The oldest antique computers 
include the Royal-McBee LGP-30, Bendix G-15, 

Burroughs E101, IBM 650, Eicon 125, Alwac, Monrobot 
VI, Univac I and II, and the IBM 700 and 7000 series. 

Since only a few of these machines were ever built, 
and many have already disappeared, there is a real danger they 
may become extinct. We can help preserve our computer 
heritage by publishing interesting articles on computer 
nostalgia and antique computers. 

Yours truly, 

Don Nyre 

Computer Hobbyist 


NIBL ERRATA & SUPPLEMENTARY COMMENTS 

Dear Jim, Dec. 21,1976 

I have a few corrections, additions and comments on 
the NIBL article in DDJ, Vol. 1, No. 10: 

First, I forgot to mention anywhere in the article that 
during execution of an INPUT statement, typing the Con¬ 
trol/C combination will abort input and cause the NIBL 
system to return to edit mode. 

Secondly, I got the meanings of “highest” and “lowest” 
precedence backwards in the table of operator precedence. 
The table is correct; but highest precedence means that 
the operator is applied last and lowest precedence means 
that it is applied first, which is the opposite of what the 
table said. I hope I didn’t confuse too many readers on 
that point. 

Finally, purists may find the grammar for NIBL a bit 
impure, since it mixes up the phrase structure grammar 
and the lexical grammar in one big mess, with the unde¬ 
fined stuff being explained in a footnote. This problem 
plagues nearly all language descriptions I’ve seen that use 
BNF or some other type of formal grammar. Maybe Tiny 
PASCAL will get done right for once. 

As for my comment on the Burroughs 5500 machine, 

I wasn’t being totally serious. But I have often thought 
about writing an emulator for some ideal stack machine 
that executes all the basic operations of a language like 
XPL. This could be the starting point for some fancier 
software like an XPL compiler written in this ideal mach¬ 
ine language, and which emits code for the same machine. 

(Or maybe when microprogrammable microprocessors 
become practical, the emulator could be done in micro¬ 
code.) But I don’t have time for this right now — it’s just 
a grand dream. 

Sincerely, 

Mark Alexander 2900 Semiconductor Dr. M.S. 690 
National Semiconductor Corp. Santa Clara, CA 95051 

P. S. In the paragraph “on reading the grammar” on 
page 37, the word “identities” should read “identifiers.” 

Now that I look more closely, there are dozens of other 
typos. Sigh ... 


IN DEFENSE OF DECIMAL 

For many years now, assembly language programmers have 
been brainwashed and browbeaten into learning binary arith¬ 
metic and often octal or hexadecimal as well. I believe the 
time has come to examine the necessity for this. Everyone 
knows that computers speak binary in the privacy of their in¬ 
ternal logic. So it seems to make sense to speak to a computer 
in its native tongue—or does it? 

Personally, I love hexadecimal. It works beautifully for any 
machine whose word length is a multiple of 4, and a hex dump 
is a joy to behold with its enigmatic blocks of alphabet soup 
spiced with arabic numerals. However, I must admit that new¬ 
comers to the joys and wonders of programming may not 
share my appreciation and enthusiasm for this magnificent art- 
form. The plain truth is that learning binary, octal, or hex is 
a pain in the accumulator, and total acclimation is usually a 
lengthy process. Byters stuck with nothing but toggle switches 
have little choice but to use binary. Likewise, those blessed 
with octal keypads will leam to live with split octals. If you’ve 
never experienced a split octal you have no idea how painful it 
can be (sometimes a truss helps). 

But most people have ASCII keyboards, and even primitive 
assemblers will usually accept decimal values in source pro¬ 
grams. It would be no problem to rework an 8080 or 6800 as¬ 
sembler to list object code in decimal, with split-decimal 
addresses. I ask you, is 255:255 any worse than 377:377? 

Jim Day 3/17/77 


NOTES ON: GODBOUT & S.D. SALES 4K 
BOARDS, POLY VIDEO 
BOARDS, & MINI MICRO MART 

Dear Dr. Dobbs: April 19, 1977 

Due to a small budget I am expanding my Altair (now over 
two years old) at a snail’s pace. This means 4K memory 
boards, and the cheapest available. I thought other readers 
might be interested in a comparison of the Godbout and S.D. 
Sales boards. 

Godbout has DIP switch address select and memory protect 
(worthless on an IMSAI). The S.D. Sales board is not readily 
modified for DIP switch select. From here on S.D. beats God¬ 
bout. S.D. has solder mask boards, 4 regulators with heat sinks 
(as opposed to 3 without sinks), tri-state to the input buss 
(open collector on Godbout - OK but not standard), and a 
better schematic. 

Neither company uses all the status and strobe lines avail¬ 
able to control r/w, as Altair does; however some of those lines 
are unnecessary. 

A word about Polymorphics video: a good board but runs 
hot. I inverted the control bit (bit 7) with an extra NAND 
gate on the board to conform to PTCo. VDM specs. 

Finally a word about Mini Micro Mart. I have ordered 
some hard hardware (power xfmr, 9 slot mother, 100 pin con¬ 
nectors) from them on different occasions. Items are received 
quickly and prices are good. The xfmr is a real bargain for any¬ 
one plagued by Altair brownouts. 

Thanks for your excellent magazine. I’ll subscribe when I 
get a job! 


Sincerely, 

Glenn D. Nelson 

Brown University 

Providence, Rhode Island 02912 


Page 4 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


202 



WHAT TO GET YOUR COMPUTER FOR ITS 
FIRST BIRTHDAY 

Some inexpensive products you might want (or not want) to 
have around. 

Jef Raskin 

Some of you may have missed your computer’s first birth¬ 
day. If it isn’t too offended you can celebrate its second birth¬ 
day. Usually a computer shows that its feelings are hurt by not 
reading cassettes reliably. Here are some under $10 or so items 
that may put you in good with the CPU. 

For $2.95 you can buy a Hexadaisy. This is a mechanical 
circular slide rule style hexadecimal calculator. I have some¬ 
what mixed feelings about this device, and some colleagues 
have expressed similar feelings. First, however, the positive 
side. There is one pair of scales, marked from 00 to FF. The 
inner scale has the decimal equivalents of those 256 quantities. 
Black bands at every even number on both scales either line up 
or make a checkerboard pattern so it is easy to see when ad¬ 
dends line up. The scales are linear. Thus two digit hexadeci¬ 
mal addition and subtraction are easy to do. For four or more 
digit sums, carries and borrows have to be done and the par¬ 
tial results carried in your head or on paper. The procedure is 
specified in the little instruction pamphlet that comes with the 
Hexadaisy. There is a special feature for finding relative 
address values on the 6800 and 6502 and similar microproces¬ 
sors. Twos complements may be obtained by subtracting a 
number from zero. 

Having 256 divisions around the circle is fitting things 
pretty tight, and this slows things down a bit. But the printing 
on the plastic discs is clear. The front also has the binary equi¬ 
valents of the hex digits as well as the values (in decimal) of 
the first sixteen powers of two—and the first sixteen negative 
powers of two as well. The back of the Hexadaisy is blank. 

The device does not help with hexadecimal multiplication 
or division—unless you want to reduce these to repeated addi¬ 
tion and subtraction. I wouldn’t want to. It is hard to see how 
a simple mechanical device for $2.95 could do these opera¬ 
tions to the precision required for the computers. Nonethe¬ 
less, when I first heard of the device I expected that it would 
be able to multiply and divide. After all, it does look a bit like 
a circular slide rule. 

The biggest disappointment comes when you want to con¬ 
vert hexadecimal to decimal and vice versa. Quantities from 0 
to 255 are listed of course, and this can be handy around the 
computer, but one hardly needs more than a chart for that. I 
have such a chart and refer to it all the time. There is a proce¬ 
dure listed in the manual. It begins: “HEXADECIMAL TO 
DECIMAL CONVERSION .. . This conversion can be simpli¬ 
fied by the use of any simple four-function calculator...” 
Simplified my eye! If you have a four function (or fancier) 
calculator then of course you can convert hexadecimal to 
decimal. All you need do is form the sum of the decimal value 
of the rightmost digit and 16 times the next digit and 256 
times the next digit and 4096 times the next and so on. Or 
you can do it by hand. For conversion the Hexadaisy is no 
more (or less) than a list of decimal equivalents of the two 
digit hexadecimal numbers. The same goes for conversion the 
other way. The real work is done by the calculator. The 
Hexadaisy is just a chart. 

I find that mine gets used very seldom around my compu¬ 
ter. I suspect a beginner will find it much more useful, at least 
until enough exposure to hex has made doing addition and 
subtraction quite natural. In any case, both the beginner and 
the expert will want a pocket calculator near their computer. 

Pocket calculators start at $6.95 around here. The Hexa¬ 


daisy is available from E & L Pfeiffer (nice people by the way) 
Computer Products, Box 2624, Sepulveda CA 91343. 

Now for three products from Board Byters, all under $10. 
(Sounds like Cosmopolitan, doesn’t it?)This inventive little 
company, which can be reached at P.O. Box 17512, Irvine, 
CA 92713, has a number of wooden products. My first 
thought was that they were crude and useless. Wrong. The 
cheapest has no name that I was told and is a piece of cheap 
pine with a bunch of slots in it. No moving parts. No IC’s. I 
could make one in five minutes on my table saw. The signifi¬ 
cant thing is that I didn’t. Board Byters did. I took mine home 
and chuckled. Who needs it. But that very same evening I was 
taking my computer apart to make some changes. The boards 
were scattered all over the couch as usual when I noticed the 
slab of pine with the slots. Aha! I put the boards in the slots. 
Instant neatness. The slots are just the right distance apart. 
One pair of slots is further apart for a board with tall compo¬ 
nents. OK Board Byters. This one is useful. Small production 
lines would also like to have a few of these. 

Next in line is a little box with a dowel that is made for 
holding a paper tape, keeping it neat while it reads into the ol’ 
TTY or what have you. There were no instructions at all, so 
I gave it to a colleague who has had a little experience with 
computers and she quickly built it. It was done correctly. I 
had seen one at the West Coast Computer Faire, but I didn’t 
tell her how it went together. This is a clever little idea that 
will help keep your feet off the programs. I hate paper tape 
myself, but I just happen to have had a TTY around today. 
Board Byters wins again, and fills a little niche. (I’ve often 
built a device functionally similar by bending a coathanger and 
slipping one end under a leg of the Teletype.) 

The item that gives the company its name is the Board 
Byter. This is a very complex device ... only if it is compared 
to the board with the slots. It has three wooden peices, four 
screws, a nut, bolt, washer and wingnut. What it does is to hold 
a PC board up to a foot wide at a 45 degree angle to the table 
so that you can place components easily. At first I feared it far 
inferior to my much more expensive Panavise PC board holder. 
And in some ways it is. But for building boards it is not bad 
at all. At the 45 degree slant it is easy to insert components. 
Then you can turn the whole thing over (it is very light in 
weight) and solder the parts into place. The spreader bar gets 
in the way a bit. 

I am not sure how any of these wooden aids were intended 
to be used. And I fear I may have missed something. But there 
were no instructions with any of them, and only the Board 
Byter has even a diagram. My colleague found them easy to as¬ 
semble, and so far I have found the simplest the most useful. 
Happy Birthday. 


FRIDEN SCHEMATIC 


Dear Sirs: January 25, 1977 

I noticed that you have little “advertisements” spaced 
throughout dealing with things people would like to have. 
Here is a possible contender. I have a printer — the Friden 
unit sold by Herbach-Rademann with the controller that has 
all of those strange guts. I have been able to procure the 
schematics and wiring diagrams for the beast. Many people 
would like to have these, as I understand they are as scarce 
as hens teeth. I am selling copies for $6.00 each,which is 
covering the costs of copying and first class mail. 

Thank you very much, 

Tim Ahrens 2200 Sorret Tree Cr. 

Austin, TX 78744 


May 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 5 


203 



A TINY SUGGESTION: A LIST OPTION FOR 
MULTIPLE—STATEMENT—PER—LINE BASICS 


Tiny BASIC on a Honeywell 112 in Europe 


12/29/76 

Ii-Chen Wang’s excellent implementation of Tiny Basic allows 
multiple commands per line. This capability is useful but 
makes the logic of a Basic program hard to follow in a listing, 
especially for people unfamiliar with the program and/or the 
language. So it might be kind of nice to have an optional var¬ 
iation of the LIST command that would list a program one 
command per line. This shouldn’t add much to the interpreter, 
since most of the code required is there already. Simply re¬ 
placing all semicolons with carriage returns in the LIST output 
would be one way of doing it. (Yes, I know. Some strings 
would look funny.) Maybe such a Modified-LIST command 
could be called MIST, which could be abbreviated M. 

Jim Day 


A RESIDENT PL/M COMPILER FOR 
THE 6800 - SOON(?) 

Dear Jim: Dec. 30, 1976 

In Volume 1, Number 10 of DDJ Larry Walker put a high priority 
on a procedure-oriented language that can be compiled. I agree, and 
thought I would let you people know that for the last several months 
I have been working on a 6800-resident PL/M compiler. 

I chose PL/M since it is ideally suited to systems programming; in 
addition it appears easily extendable for other applications (more about 
that later). One of the best things about PL/M is that it can be com¬ 
piled in only one pass; this means you can have the source coming in off 
one cassette drive, and the object going out to another with no inter¬ 
mediate files. 

So far I have completed the overall design of the compiler, plus cod¬ 
ing of the lexical scanner, parser, and symbol table routines. I am cur¬ 
rently writing the code-generation routines. For any compiler freaks 
out there, I am using operator precedence for parsing arithmetic ex¬ 
pressions, and recursive descent for everything else. 

I am writing the compiler in a subset of PL/M, and then hand trans¬ 
lating to assembly language; once the first version is up and running it 
will be able to compile itself. The subset includes only those features 
of the language necessary to write the compiler. Notable exceptions 
are the lack of parameters in procedures (using global variables instead); 
simplified expressions; no based variables; and no GOTO statements. 
Later I will add these features incrementally, until the full language is 
implemented. 

Since I have a Sphere 330 system, the first released version will be 
for that machine. Although the 330 has a 20K RAM, I am hoping the 
compiler will fit in a 16K system. The code for the initial (subset) ver¬ 
sion looks like it will be around 6K. After the Sphere version is up I 
plan on releasing a Ml KBUG version. Hope to have something available 
by this summer. 

Then come extensions, such as: 

1) carriage control and a title capability 

2) qualified variables and structure declarations down to the bit 
level 

3) "real" macros, implemented as %procedures (as compared to 
the DECLARE LITERALLY) 

4) multiple-dimensioned arrays 

5) floating point arithmetic (probably TSC format, i.e. 9 signi¬ 
ficant digits with exponent range -99 to +99) 

6) varying character strings, and string functions 

It is probably not feasible to implement all of these in a single ver¬ 
sion of the compiler, and still keep the size reasonable. I have already 
been involved in adding the first three extensions to Intel's PL/M com¬ 
piler via a SPITBOL preprocessor; the resulting language has been used 
for the past year in writing control software for an 8080. 

Note that I am not proposing formatted I/O, even though PL/M 
supports only single character input/output. I feel that formatted 
I/O can best be handled via a library of suitable procedures, called at 
run-time. 

I welcome suggestions from other PL/M users regarding possible 
extensions. 

Sincerely yours, 

Thomas W. Crosley 14-3 King Arthur Ct. 

Northlake, IL 60164 


Dear Sir, Dec. 15, 1976 

While visiting America recently I had the opportunity to buy several 
copies of Dr. Dobb's Journal of Computer Calisthenics and Orthodontia 
and enjoyed very much the general style of the magazine and the inter¬ 
esting software listings. 

I don't own an 8800 or 6800 but a special 12 bit machine with a sim¬ 
ilar instruction set to PDP-8, however it usually doesn't prove too diffi¬ 
cult to convert most of the programs. I was especially interested in 
Tiny BASIC for my machine with one or two additions for ASC11 
character string handling. 

My system comprises a 12 bit Honeywell 11 2 mini with 8k of core 
memory, a creed 5 unit keyboard/printer/paper tape punch plus a 
separate 5 unit creed paper tape reader, cassette tape working at 
3.300BPS which allows loading of 4k in under 1 5 seconds a Digital 
group video display (still under construction) and a South West Tech, 
keyboard (for ASCII input). 

Yours sincerely, 

Ian D. Spencer Am-Museum 3, 

5353 Mechernich 
West Germany 


6502 RESIDENT ASSEMBLER PROGRAM AND 
TINY BASIC INTERPRETIVE PROGRAM NOW 
AVAILABLE IN ROM FOR S200 


Santa Clara, California, April 1, 1977 ... Microcomputer 
Associates Inc. today announced shipment of their Resident 
Assembler Program (RAP) and Tiny BASIC interpretive pro¬ 
gram on ROM chips. Two 2K x 8 ROMs comprise the software 
ROM package, housing the 1.75K Resident Assembler and the 
2.2K Tiny BASIC program. 

Formerly contained in seven 1702A PROMs, RAP is the 
only single pass Resident 6502 assembler available today. 
Statements are entered either from paper tape or directly from 
a terminal keyboard. RAP generates a listing and places object 
code into RAM for immediate execution. A minimum of 4K x 
8 RAM memory is needed with the users’ 6502 microcompu¬ 
ter. RAP allows a 5602 microcomputer to function econom¬ 
ically as a microcomputer development system. Following as¬ 
sembly the programs can be debugged using the debugging 
facilities of DEMON, Microcomputer Associates’ DE-bug 
MONitor program housed in the IK ROM section of a 6530 
ROM/RAM-I/O-Interval timer circuit. A text editor is included. 

For those microcomputer users who prefer to use a some¬ 
what higher level language Tiny BASIC permits immediate 
entry and execution of Tiny BASIC language programs. State¬ 
ments include: LET, IF ..., THEN, INPUT, PRINT, GOTO, 
GO SUB, RETURN, END, REM, CLEAR, LIST, RUN, and 
functions RND (Random Number generator) and USR (User 
SubRoutine) that allows branching, with arguments to assem¬ 
bly language subroutines. ROM software has been designed so 
that most I/O devices can be used. 

The ROMs are totally pin-compatible with 2708-type 
PROMs. 

The RAP/Tiny BASIC ROM package (SW101) is priced at 
$200 and includes full documentation with deliveries from 
stock to 30 days ARO. 

RAP is also available on a set of seven 1702A PROMs 
(SW200) for $295. Tiny BASIC is available either in paper 
tape format (SW300) for $25 or on a set of nine 1702A PROMs 
(sw201) for $275. All software is fully documented with de¬ 
liveries from stock to 30 days ARO. 

For further information contact Darrell Crow, Micro¬ 
computer Associates, 2589 Scott Blvd., Santa Clara, CA 
95050,(408)247-8940. 


Page 6 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


204 



BAR CODE PRINTER 

Since this goodie is priced at $7,487 (including a display 
and keyboard), it’s not for the novice. However, it appears 
that it might be just dandy for printing machine-readable 
“text” - programs and data - as is being proposed in Byte 
magazine (see their issues, beginning with Nov., 1976). It 
is two-hammer printer capable of printing a bar code plus a 
separate line of human-readable text. It uses a carbon ribbon 
to make the bar codes with the resolution and contrast neces¬ 
sary for scanning with an optical “wand.” 

The widgit is available from Interface Mechanisms, 5503 
232nd St. SW, Mountlake Terrace, WA 98043. 


TESTING THE DZ80-80 CPU 

NIFTY Z-80 CONVERSION FOR ALTAIR 

AND IMSAI COMPUTERS 

There isn’t a whole lot to say—and that is much to the 
credit of Dutronics’ Z-80 conversion kit. It was ridiculously 
easy, and it worked. But let the winged chariot of my story 
take you back a few months... 

Going out of the Palo Alto Byte Shop I was hailed by Mr. 
Dutra of Dutronics. Since I had tested his 8K boards and given 
them a justifiably good review, he was not adverse to lettingme 
try out his new Z-80 kit. The idea behind the DZ-80 is simple. 
The Z-80 CPU chip is quite similar to the original 8080, but 
nothing is for nothing. Along with the new capabilities (such 
as a duplicate set of registers, and block move instructions, to 
mention a few) comes the other side of every improvement: 
incompatibility. You can’t just plug a Z-80 chip in where the 
8080 goes. It won’t work. There are a host of differences. 
Little ones, to be sure, but you would need a small handful of 
gates to make the Z-80 exactly match the 8080. 

And this is what Dutronics has done for you. On a small 
printed circuit they have enthroned a Z-80 with a court of 
attending IC’s and this whole royal entourage plugs in to your 
8080 socket! To enhance the impression of majesty the 
printed circuit is done in royal blue, with silver traces, and 
elegant red graphics labelling the components. It is a very 
pretty board. But back to our story. 

Mr. Dutra and I walked out to his car, and in gallant fashion 
he opened a sealed box containing 5 of his kits. At random I 
selected one. This will assure the reader that I did not get a 
specially hand selected board. Gloating with my new treasure I 
drove home to my secret computer grotto. I rushed in and 
turned on the soldering iron, got out the strippers and cut¬ 
ters and meticulously opened the package. Oops. Turn off the 
soldering iron. Put away the strippers and cutters. (I was 
tempted to let one of the strippers stay; but I had work to do.) 
This is not a kit. It is fully assembled. And very nicely assem¬ 
bled it was, too. 

So I left the grotto and went to the IMSAI computer sitting 
upstairs. I turned off the power and pulled the plug (don’t be 
half-safe) and removed the CPU card. Here’s what it takes to 
install the DZ80-80: With conductive foam behind the 8080’s 
socket on the IMSAI CPU board, and using a chip puller, I re¬ 
moved the 8080 from its socket and put it into a block of 
black conductive foam. Ditto the 8212 on the CPU board. 
Fortunately, I always build my computers fully socketed for 
just such an occasion. Then I removed the protective plastic 
from the DZ80-80 miniboard and plugged it into the 8080’s 
socket on the IMSAI CPU board. A little cable from the 
DZ80-80 runs to the 8212 socket. It has two clearly marked 
positions—one for the ALTAIR 8800 and one for the 
IMSAI 8080.1 chose the appropriate one. Pin one went to pin 
one everywhere. 

With trepidation I plugged in the IMSAI CPU card, then 
plugged in the computer, and (after re-reading the manual to 
make sure that I had done everything right) turned on the 
computer! No smoke. This was good, as I have a No Smoking 
sign prominently displayed in my office. In fact everything 
looked normal. The switches and lights did what they were 
supposed to. First time up, it worked. 10 points to Dutronics. 

These are not the good old days when all you got in a kit 
was a handful of surplus parts, a hastily-drawn schematic, some 
moth-eaten solder, and a pink slip of paper saying, “Inspected 
by 87”. Dutronics supplies both software and documentation. 
First of all there is a carefully written manual. The 4-inch 
square blue circuit board is tiny compared with the big bright 
orange binder. Is this beginning to sound like a fashion article? 
Blue boards, red silk screening, orange binders, porcelain white 


CPU’s with 14 carat gold inlay and yellow strands of paper 
tape. Paper tape? Yes, indeed. Software. The “Dutz” monitor. 
This is really a hardware review article, but software there is. 
The monitor takes IK bytes and is intended as a system 
check-out and program development tool. Since it was de¬ 
signed around a TTY and paper tape I/O, neither of which I 
have, I could not give it a proper test. 

This is a real problem for software designers. What can you 
assume that your user has? In my case I hate teletypes: they 
are noisy and have poor print quality. And I am rich enough to 
have something a bit slicker for my own homebrew system. So 
I can’t use the supplied monitor. I hope you can, because it 
looks neat. Like most microprocessor monitors it renders 
the front panel superfluous. You can load and dump memory, 
do hex arithmetic, examine and modify memory locations, 
execute a program at a given address, move blocks of informa¬ 
tion from one place in memory to another, search memory 
beginning at a specified location for a given character, look at 
the stack, verify memory locations. 

Dutronics gives the loader for the tape, and the complete 
assembly listing of the monitor. Bravo! The whole manual is 
well done. If there are problems, they will be fixable by the 
user. Another plus is that the MOSTEK Z-80 technical manual 
is included in the $159.95 price. Anything you need to know 
about the Z-80 is probably there. 

As the manuals note, there is one incompatibility that 
prevents some 8080 software from running on the Z-80. In 
practical terms it means that ALTAIR BASIC won’t run on 
the Z-80.1 tried it. It doesn’t work. Other stuff that I tried 
worked fine. Details, details! Just one tiny little difference in 
the way the Parity flag is handled and zap! there goes $75 
worth of software. It would be easy to re-write MITS BASIC 
to be compatible, but MITS wouldn’t let me have a listing of 
the source code last time I asked. So I use somebody else’s 
BASIC which I can fix when I have to. 

Summary: If you want to try your hand at the Z-80, and 
have an ALTAIR or an IMSAI the Dutronics DZ80-80 is a 
possible way to go. The other ways to go are Z-80 CPU boards 
from a number of manufacturers. One small disadvantage to 
the piggyback board is that it protrudes far enough so that I 
can’t put the IMSAI CPU board in the first slot (of the exorbi¬ 
tant 22 that I have) but have to move it back a position. This 
wastes a slot. Such is life. The compensating advantage is the 
somewhat smaller cost of the DZ80-80. A hundred and sixty 
bucks built isn’t bad at all. Computer shops have the conver¬ 
sion kit, and you can write to Dutronics at PO BOX 9160, 
STOCKTON CA 95208. 

About writing: I get a lot of letters. While I try to reply to 
every one (even those that seem to require writing a book in 
response) I feel much more like replying to those including a 
self-addressed stamped envelope. Personal friends and relatives 
may ignore this last paragraph. 

Jef Raskin March 1977 


May 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 7 


205 



RESULTS FROM SOME ARITHMETIC BENCH¬ 
MARK KERNALS RUN ON MINIS & MICROS 

Dear DDJ, Oct. 21,1976 

I began collecting this data about VA years ago when the MITS road 
caravan gave a demonstration of the 8800 in Palo Alto, CA. The last 
input came from the Astral 2000 demonstrated at the Computer Show 
in San Francisco in late 1976. 

I began collecting the data to use in comparing various sytems for 
use in scientific calculations. Thus I tested the math routines. This 
information should not be taken as an indication of comparative speeds 
in non-analytical operations such as sorting. I encourage others to send 
in additional entries for other systems. They may also wish to establish 
some other test routines for sorting, etc. 

The times given may be in error by as much as .1 seconds because 
of human reaction time. The very short times shown for the 2100 
(with ANA BASIC) and HP-9825 (in HPL) were obtained by using the 
test routines with 10 times the specified loop count and dividing the 
result by 10. 

There are a number of interesting things that can be learned by 
looking at the table. For instance it appears that all the 8080 and 6800 
programs internally evaluate tan(x) = sin(x)/cos(x) whereas the Hewlett 
Packard systems use some other method that is more time-efficient, but 
probably not as memory-efficient. 

Bruce Kendall 334A Camille Ct. 

Mountain View, CA 94040 
(415) 967-3613 


TEST PROGRAMS FOR MATH ROUTINES 
(mostly of BASIC Language Systems) 


Programs: 


A 


C 


E 


10 

X=3.1234567 

B 

10 

S=2345 

20 

Y=4.98765432 


20 

For 1=1 to 

30 

For 1=1 to 500 


30 

Z=SQR(S) 

40 

Z=(X+Y)*Y 


40 

Next I 

50 

Next I 


50 

End 

60 

End 




10 

S=2.71 

D 

10 

S=2.71 

20 

For 1=1 to 100 


20 

For 1=1 to 

30 

Z=Tan(S) 


30 

Z=Sin(S) 

40 

Next I 


40 

Next I 

50 

End 


50 

End 

10 

S=2.71 

F 

10 

S=2.71 

20 

For 1=1 to 100 


20 

For 1 = 1 to 

30 

Z=Exp(S) 


30 

Z=Log(S) 

40 

Next I 


40 

Next I 

50 

End 


50 

End 


SYSTEM 

PROGRAM EXECUTION TIMES IN SECONDS 




A 

B 

C 

D 

E 

F Z 

=ATN(S) 

Z=Sf S 

*HP 9825 

0.55 

0.35 

0.44 

0.48 

0.42 

0.42 



*HP 9830 

11 

3.5 

8.5 

12 

7 

6.5 

9.5 

12.2 

HP 2100 (with float¬ 

1.3 

0.25 

0.53 

0.44 

0.32 

0.27 

0.51 

0.5 

ing point hardware) 









Altair-IMSAI with no wait 









states 









MITS BASIC 1.1 

9.5 



8 





8K MITS BASIC 3.1 

4.8 

5.2 

5.4 

2.8 

3.3 

2.5 

3.7 

5.3 

12K MITS BASIC 3.2 

5.9 

5.2 

5.4 

2.8 

3.3 

2.5 

3.7 

5.3 

IMSAI 4K BASIC 

11.5 

15 




— 



IMSAI 8K BASIC 

14.8 

4.8 

21.5 

11.5 

13 

14.5 



1.3 









PTC FOCAL 

8.3 

3.5 

— 

5.2 

7 

5.5 



PTC 5K BASIC 

6.5 

13 

11 

5.2 





ASTRAL 2000 (6800 U P) 

18.5 

13 

— 

34 






with 6 digit precision. 


* - Arithmetic precision greater than 6-digits 


THREE NEW PUBS 

Dear Jim, Dec. 23, 1976 

New publications include: 

The Personal Computing Directory ($4.95) containing 
names, addresses, phone number, etc. of people, places, 
and things of interest to computer hobbyists. Listing and 


A DATAPOINT 2200 DISASSEMBLER 

Gentlemen: 26 March 1977 

Just a note to let any of your readers who might be inter¬ 
ested know that I’ve written and have running a Disassembler 
for the Datapoint 2200 computer. I have it running under 
Datapoint’s DOS.a. The Disassembler takes disc resident ob¬ 
ject code runnable under Datapoint’s DOS and converts it to 
an Assembly listing. The output can be directed to a printer, 
CRT, or th a disk file. If directed to a disc file, it can be edited 
and reassembled with the ASMS assembler. 

Anyone interested in obtaining a copy of the Disassembler 
is invited to contact me at the address below. 

Keep up the good work—Dr. Dobb’s Journal is great! 

Regards, 

William T. Mitchell 
8605 Famham Court 
Hanover Park IL 60103 


LINE-BY-LINE RESIDENT ASSEMBLER 
NATIONAL’S SC/MP 

Santa Clara, CA — National Semiconductor Corporation is 
now offering a line by line resident assembler firmware kit, de¬ 
signed for use with its SC/MP LCDS (Low Cost Development 
System). Known as SUPAK, the $300 assembler is contained 
in eight PROM/ROM devices that can be plugged into a blank 
ROM/PROM card (ISP-8C/004B) which is available from 
National. The entire assembled card is then inserted into the 
LCDS/teletype system. 

“SUPAK is the only firmware kit of its kind. It greatly 
enhances the flexibility and capability of theSC/MP LCDS, 
making it both the most inexpensive and effective SC/MP de¬ 
velopment tool,” said Hashmukh Patel, National’s product 
marketing manager for low-cost microprocessors. SUPAK is a 
4K byte package that consists of three programs: a line by line 
assembler, a paper tape line editor and a PROM tape punch 
program. 

The line by line assembler accepts a program in limited 
assembly language from a keyboard or paper reader, and then 
assembles it directly into RAM. 

The paper tape line editor, which allows insertion, deletion 
or replacement of lines of program source code, punches either 
leader or trailer. 

The PROM tape punch program punches the contents of a 
specified memory range, in BPNF or complemented binary 
format, onto paper tape. This tape could be used to program 
memories using a standard, commercially available PROM pro¬ 
grammer such as the DATA I/O. 

SUPAK requires the LCDS firmware, but will run on either 
a SC/MP or a SC/MP II (n-channel) LCDS. It comes as a set of 
eight MM5204/MM5214 ROM IC’s, designated ISP-8F/111. 


advertising in the directory are said to be free of charge. 
Box 134, Harvard Square, Cambridge, MA 02138. 

The Universal Elixir and Other Computer Projects 
Which Failed, by Miles Benson. ($9.00 pp.) Ed Bride, 
Editorial Services Dept., Computerworld, 797 Washington 
Street, Newton, MA 02160. 

Compewters Newer!! Mak Errors, by Ray Hadley and 
Henry Hudson. ($4.95) R. G. Hadley, P. O. Box 5306, 
Salem, OR 97304. 

Sincerely, 

Jim Day 17042 Gunther Street 

Granada Hills, CA 91344 


Page 8 

206 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 



JACK ARMSTRONG’S SUPER DECODER RING - 
REVISITED 

by Marvin R. Winzenread 

In DDJ Vol. 1, No. 9, Jon O. Stedman presented the 
Playfaire-Digraphic Cryptographic Cypher. I found the 
article fascinating and started to write a program that would 
do the coding and decoding. 

The Playfaire method has three deficiencies to my way of 
thinking. First it requires a knowledge of semantics to 
decode (e.g. the choice of I or J and X or space). This is 
easy for a human but difficult for a computer. Second it is 
not symmetric; coding and decoding are not the same oper¬ 
ation when the two characters are in the same row or col¬ 
umn. Third it translates only messages and not general 
text including punctuation symbols and numerals. 


The following changes were made to remove the first 
two deficiencies: 

1. Omit X and Y from the array and leave 
intact any character not in the array. See 
Statement #500. 

2. Define the conjugate of (I,J) to be (6-1, 

6-J) and use that for double letters and 
letters in the same row or column. See 
Statement #520. 

Here is a LIST and RUN of the program. It is 
written in ALTAIR 8K BASIC. 

This RUN shows the 5 x 5 array. It can be suppressed 
by deleting statements 301 and 311. 

If you want the program to code and decode gener¬ 
alized text (including numberals and punctuation sym¬ 
bols) expand the array to a 7 x 7 array by changing 
statements 80,110,120, 440 and 520. 


L IFT 


Fill in 
Keyword 


70 CLHAF 500 
80 DIM MM 5,5) 

90 M = 0 

100 PPI NT"KEYVOF D "JtINPt'T KI 
110 C 1 t="AFCCEFGHl JKLMNCPCPSTl'VVY * 

120 L=0sF0P 1=1 TO 5: FOP J= I TO 5 
130 IF L=LENCKI) GOTO POO 
140 L=L +I :C*=MIDMKi,L. 1 > 

145 IF L=1 GOTO 300 

150 FOP K=1T0L-1 : IF Cl=M I DS CKS, K, 1 ) GOTO 130 . 

1 55 NEXT K j y V Set up matrix 

160 GOTO 300 J 7 M$(5,5) 

POO M=M+1 

PCS C5‘=MID1 (C 1 SjMs 1 > 

PIC FCF K= 1T0LF.NCK1 ) 

?P0 HEFT K 

300 MMI,J)=CS 

301 PFIMT lau.ji: 

3 1 0 NEXT J 
311 FFINT 
3 PC NEXT I 

4C0 PFINT-TYPE IN ETF1NG TO EE TPAN5LATEE. H : INPl’T Hi 
401 Oi="~ 

410 FOP K=1 TO LENCKJ) STEP ? :CS=M I DS, C KM Y,, 1 ) :LS = NILMKMK+1> 1 ) Pick out 


IF C$=MIDSCK$,K>1) COTO 13C 


Fill in 
> other 
characters 


420 IF £S=""G0T0 600 
430 Cl = OiC2=C:El = 0:F.P=0 
440 F0F 1=1 TO 5: FOP J= 1 TO 5 
450 IF CtoliKljJ) GOTO 460 
455 C1=I !CP = J 
460 IF EJofiKNJ) G0 T 0 470 
465 B1=I :PP = J 
470 NEXT J sNEXT I 
500 IF C1 = 0 OP F; 1 = 0 GOTO 600 
5 10 IF C1<>B1 ANE C2<>BP GOTO 550 
520 BS=MS<6-C1,6-C2) :CI=M$ < 6-E51 a 6-B2) :G0TC 600 
550 ES=M$CC1,E2> :Ci=NM E 1 > CP ) 


pair of characters 
CS, BS 


Find location of character pair in 
matrix C$=M$(C1 ,C2), B$=M$(B1 ,B2) 


If not in matrix leave intact 

Same row or column 
omit conjugates 

otherwise follow Playfaire Cypher 


1 :PF I NT 0? 


? JACK AFMFTEONG THE ALL AMEPICAN L-CY 

1 

the 5x5 matrix 


600 C$=03-+Ci+E-$ 

610 NEXT K 
700 FFINT "THAT? 

800 GOTO 400 
OK 
PEN 

KEYVOFD 
JACK 
FM5T0 
NGHEL 
I PYEF 
FPl'VVI 

TYPE IN ETPING TO EE TPANELATFE. 

7 MOV I? THE TIMF FOP ALL GOOD MEN 
THAT?: 

F LFJFY0KGH0KFRKLIF JOC FNMLFTOALCOKPI F GTOKPIEFKLE JKFF IOKYNTNl'PVFFE IS 
TYPE IN 5TFIMG TO BE TFANFLATED. Or decode: 

7 FLPJF YOKGHCKFF.KLIF JOG PNMLFT0ALCOKFI ? CTOKPI E FKLE-JKFF I OKYNTNl'Ft'FF E I F 
THAT?: 

NO’’’ I? THE TIMF FOF ALL GOOD MEN TO COME TO THE AIL OF THIEF COt'NTFY 
TYPE IN FTFING TO EE TFANFLATED. 

7 


To code: 

r 0 COME TO THE AIL OE THIEF COt'NTFY 


CK 

May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 9 


207 



VIDEO CHASE FOR 8080/VDM 

by Joseph Jay Sanger 
245 E. 25th No.ll-B 

New York NY 10010 March 14, 1977 


There have been many interesting games published to run 
on personal computers. However, the majority, since they are 
written in BASIC, assume the existence of a TTY or a TTY- 
like device; i.e., a display device utilizing a ‘line-at-a-time’ 
scrolling mode of display. However, many are lucky enough to 
have memory-mapped video displays - and those who happen 
to own Processor Technology VDM-l’s in particular will be 
able to take advantage of this program. 

I was particularly intrigued by the game ‘CHASE’, recently 
published in Kilobaud, issue number 2 (written in BASIC). 
The game is played within a high voltage fence, sprinkled with 
high voltage posts. Five security robots are in residence, as¬ 
signed the task of catching intruders such as yourself. As you 
move about, they move directly towards you - your only 
chance to survive is to maneuver the robots into the high vol¬ 
tage posts - before one of them catches you. 

In my version, which is written in assembly language for 
the 8080, you specify in which direction to move by typing 
the appropriate key on your keyboard: 


r Y u 

\ " / 

(3 - H - J 

/ ! \ 

B N M 


THIS COMPASS ROSE IS 
CONTINUALLY DISPLAYED 
IN THE UPPER-RIGHT CORN¬ 
ER OF THE SCREEN DURING 
THE GAME 


0 = YOU 
« = ROBOTS 
X = FENCE/POSTS 


VIDEO TERMINAL BOARD PRICE REDUCED 20% 
(DOWN to S395) 

WINTEK Corp. reduced the price on their Model BRB video termin¬ 
al OEM board from $495 to $395. The single printed circuit board con¬ 
tains all the electronics for an upper case ASCII alphanumeric CRT 
terminal. It generates composite video for displaying 16 rows of 80 
characters on any TV monitor. It includes an RS-232C interface for 
ail standard rates to 9600 baud, a parallel keyboard interface, and 
comes with or without power supply. WINTEK Corp., 902 N. 9th St., 
Lafayette, IN 47904; (317) 742-6802. 



READER’S GUIDE TO COMPUTER HOBBYIST 
PERIODICAL LITERATURE 

The Periodical Guide for Computerists is a new 20 page 
book that indexes over 1,000 personal computing articles from 
15 magazines for January - December 1976. The articles are 
indexed under more than 100 subject categories. Indexed are 
magazine articles, letters from readers, book reviews and edi¬ 
torials from both hobbyist and professional publications. 

The books are available form: E. Berg Publications, 1360 
S.W. 199th Ct., Aloha, Oregon 97005 for $2.50 each postpaid 
and also from local computer stores. 

A forthcoming issue in July will index January - June 1977 
articles. 


Note - you can remain in place by typing ‘H’. 


The computer keeps score (and displays it in the lower 
right corner) and the first ‘team’ to reach 9 games is the 
winner of the series. At the end of a game, type any key to 
begin a new one. 

You may specify the level of difficulty of each game at the 
beginning of the series or at any time by typing a carriage re¬ 
turn; 0 is the easiest level, 9 the hardest. You can force a new 
series at any time by typing ‘ESC’ (01BH), with score 0:0. 

If you really get into a bind, I have included a ‘panic’ 
button. By typing ‘P’, you may be lucky enough to be 
instantaneously transported out of danger to a new (ran¬ 
dom) position - but the probability of a successful transport 
depends on the level of difficulty of the game - approximately 
50% for level 0 down to a mere 12.5% at level 9! At level 9, 
there is also an additional penalty for use of this feature. ... 

One difference from other versions of CHASE - if two ro¬ 
bots collide in this version, they do no annhialate, but travel 
as a pair - with some strangely unpredictable consequences! 
(This was originally a ‘bug’ in my program, but so cute that 
I decided to leave it in!) 


HARDWARE SPECIFICATIONS FOR MY VERSION INCLUDE! 

- VDM SITTING AT 0CC00H 

CONTROL PORT 0C8H 

- 3P+S WITH STATUS PORT O 

DATA PORT 1 

DAV 40H (GOES HIGH ON KEYPRESS) 

- RAM RECTOS ~ 0600H RAM (1.5K BYTES) 

(EXCLUDING STACK SPACE) 
OTHER HARDWARE IN MY SYSTEM INCLUDES 

- IMSAI 8080 COMPUTER 

- PROC. TECH. ALS-8 DEVELOPMENT SYSTEM 

X SIM-1f TXT-2 

- ADDITIONAL 28K RAM 

- 2.5K EPROM (6834'S ) 

- TARBELl. CASSETTE INTERFACE 

- LA36-II DECWRITER 


I intend to write two more versions of the game - one allow¬ 
ing to players to compete, and the other making the robots; 
move towards you in real-time, demanding constant evasive 
action on your part. 

There are many other games that can be adapted to run 
on memory - mapped video displays with great success (a 
case in point is Processor Technology’s TREK-80 - a really 
fine version of STARTREK). I hope that this article acts as a 
stimulus for some of you lazier types out there (like myself) 
to get to work! 


Page 10 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


208 






<x x o o _• uj < 

‘HO J .. Ll 
UJ J J 0 . <CO . 


A <r 

-♦- + + 

2 2 2 

SC SC CC 

O' O' 0 2 

• U >- CJ 3 CJ CJ 

12 ' t' a: in 


0 2 0 2 0 
U UJ CJ Ll CJ 

t in t cm t 


2 

■-'4 

CO 


sc sc 
'020 
CD CJ A U 2 

' sc o sc 


2 

cj 

u 

o 


2 

'O 

cj 

o 


0 2 0 
CJ O' CJ 
CCOCC 


2 2 2 2 2 2 

sc sc sc sc cc sc 

' 0202020 ' O' O' 
Tuituoiuuuisuxur 
' ar r j a; o a- in (v » tr - cc - 


uj *-< 
x y— 
UJ H- »h 
uocn 
<10.0 
-J CO Cl 
0. 

2 CO 
t- O ' 
O Q h 
* 2 * 
o <r y- 
cc sco 


1— CJ Ul • 
»-< UJ sc • 
y- _i o cj 
2 uj y- y- 

CO CO Ul 

* * * * 


UJ 

2 

<r 

co 


y- sc 
<x o 
UJ sc 


2 Ll 
Ll 
a O 


O CO 

* * 


222222222222222222222 


UJ u_ _> uj I U W U . 

t cj ct o t in t ' t • 

2222222222222 


—J OQ _J tXi —J A _J * _J 

Ul O Ul o UJ OUJOUJ 
co sc co sc cn cc co cc co 


A O 

o o 
cc > 


O Ci 2 
X 2 U. 

>- sc o 


<r ouj • 

- 2 U. 
Ci CC O l 


2 _J O 2 ' 

HUJJ- 

_J CO Cl <1 ' 


r> _1 HH 

0 <IU<rQ 200 >U 2 

2 UTU 2 C 22 flT 


oxoxoxjxoxoxooxooxoxoxoxoxoxoxo 

• -«- ' ■«- ' 1 • 2 J 2 J 2 J 2 -I 2 J 2 -I 2 _l 2 J 2 -J 2 J 2 


—J 2 _J 2 _J 2 _J 2 _J 2 _J 2 - 


JQ JQJ Q JAJ Q _l _J _J _J _l 

—J —J —J —I —J —j -J —j —J —J —I Ci-I •-< O _J >-< D> _l JOmnmCcnH 

<X 2 <X 2 <X 2 <X 2 « 2 <XX<I 20 <t 20 <XCJ<I 0 a. 2 :>U 2 X 
UC 0 U 8 )UCJ)U(nU(flUnu<r 2 UC 2 U 1 U 2 UT 2 w 2 T 


ooooooooooooooooooooooooooooooooooooooooooooo 

^NOO'OHfjn<niT'OMDI>OHf-j^4TLT'ONCDI>«OHrjM<niT'ONaj(yOrtrjM^10'ONCDOO 
NNNNCDma)CDCDCDa3Q30DmO'!)>CN!M>>0&'0-0'0-OOOOOOOOOOHHHHHHWHHHn 
OOCOOCOOOOOOOOOOCOOOOOOO^H*HTHT-i»- 4 »-i^H^HrHT-».rH ^4 


o 

A 

o 
* cc 

o o o o o o 
»h cm ro <r in 

CJ CJ CM CM CM CM 


o o o o o 

r\ co 0 o *h 

cm cm c i ro ro 


o o o o o o o 

cj ro m- m >o rx cd 


o o o o o o 

O' O C J ro M- 

fO M* ^ M- 


o o o o o o o 
in 'O is co O' o ^ 
m- <r <r <r <r in in 


Ci Ci Ci 

o u o 


Cl Ci Ci 


A O' (J Ll CJ fO 
CD 03 Q 3 00 O' O' 

o o o o o o 
o o o o o o 


03 a 'OM‘<IO'UJinoaU^UJULL'Of s 'OOCi«OOCJO'UJ<C03LL«ACJCJ'OC'l< 

in rx u.ii3iLii3u.ii3ninMinnr'iN^NON^NONvaiCjaoaii3u.<n 

3 Ll 'O ll") CJ H-OH'OiH'O'H'OH'Ort'OH'OHjlH'OH'OH-Ort'OH'Ort'Ort'O- 

j >o n o u cj ro cj ro cj ro cj ro cj ro cj ro cj ro cj ro cj ro cj ro cj ro cj ro cj ro cm ro cj ro ( 


o o o o o « 


lO-OOD'UUU.Htf'OO.aiUiOMliTmCQli.CJVMJ'UUJ^fO'OfflfflflOCJlil 

00'0'0-0'(>'l><r<r<r<X<X<rAAAAAAACJCJCJCJCJUAAAAAAUIUIUI 

ooooooooooooooooooooooooooooooooooo 

ooooooooooooooooooooooooooooooooooo 


rv <r u u. -h 

UJ UJ u u u 

o o o o o 

o o o o o 


^ ’T N <1 M 

Ll Ll U U Ll 

o o o o o 
o o o o o 


ooooooooo 


<£ A UJ 

o o o 


ooooooooooooo 


* UJ * 

03 

* <r * 

2 ~ 

* CJ ^ 

* U. CJ * 

o 

* 2 * 
UJ o 

* 2 1-1 * 

<r 03 

* CD t * 


SC UJ 
UJ (D 

o <r 2 

2 3 A 
COD 
0 ) 2 
<E • 
>- -J 2 

<x cj 

“3 >- UJ 
-J K 
2 A 
LL 2 • 

UJ UJ u 
03 03 O 
O 03 Ct 
")«£l 

>- o a 

A A 2 
O *-i 
2 A A 


o a 

CJ Ul u 
A It A 


sc o 

UJDAh 
Lt O O UJ 
O >- CC A 


2 O 
UJ A 
UJ UJ 
it SC 
U O 
A CJ 
A 


>—t O K 
A H- *-< 

CJ 

y- <r uj 

3 Ll t 
Cl O 
2 I- 
»-« A 


A 

A 2 ~ 
I- UJ SC 

a a. o 

O UJ t- 
CL A U 

<r 


u JU. 
ui <r *-< 
_l 3 A 


: 2 3 

• sc <r 
) o t 
. a a 


UJ Ll 2 2 2 2 

2 U SC SC h- CD 

CMC y-t >-< t Ul O O A ' t-i 

A 2 O A A Q hCiCUUMl-X i— Ul 

2 2 CD 22CDCl2AUJ0AUJ30' O' 2 

••-A *'-A2LlU_ICJ--*-_J - _J •> 

X A X XA 2 HOACJAAUJAilLXAtXAA>-AUJUJii 


C'rt CA 2 CA 2 
' 2 U - 2 U 
ACAAtOAtrs 


* * * 


-J-J -J -J-J _J_J -I _J _i _ _ _ 

c 1 — 1 —* —j >-<1-1—1 ►“•>-' -I _i <-< C —J_J>-i>-i>-<-J>-<X_l>-iXtrMi-<ttt_J>-<tN>-<t-J>-it—JH-<tN>-it_J*-<tN 

-2XCC XXC XXC<I21-CC3>D>C32CI>2CJ23UCJ2C3U23vJCD>CJCI>U2D>CJC3U2 
3 -J CJ CJ -J —J CJ —J—IUUCAUU222U2hU2hA"!2AAmU2AT2AU2AU2A*!2AU2A1 


* 4 t***«****A 


o o o o o o o 
o h cj n <r m jj 
o o o o o o o 
o o o o o o o 


o © o o o o o 

fx A O' O »-< CJ ro 
O O O T 1 T-i ,1 

o o o o o o o 


oooooooo 

<r^)'ONAO'On 

rt n rt ri n ri CJ CJ 

oooooooo 



<ILJDhA5Jh5jm 
A-J0330C20C2 
—Jt22A2CJC2CJC 


o o o o o o 

o n ci n <r n 

N NN N NN 

o o o o o o 


fX MJ rl o UJ CJ 
Ul Ul O UD M- O' 


O A CJ 
^ UJ A 


CJ liD CJ O' Ll A Ul CJ O CJ O- fx A 
CJOACOUIM’O'OO'HAin 


A A 

ro o 


cj A 


rx cd 

A L"3 


A A 

m o 


U. CJ CJ A ’-I A —. 

c ro ro a ro cj cj 


cj o u 


iA'OAA'Oincj'OinA'Oincj 

lUnnUIOCUOnOIOOU 


h n A A JJ CJ A A J3 ill J3 A JJ fO u J) fO ll) C-J J5 A A <T A J) Ii3 CJ J) 

■ # w w >• v w C-iOUUUIfOUUHrtOUIOrtUIOrtOUOHrtrtUIOOUO«untHur)OUOHunou 

SS222222222^^^ > y^ nrju ' CDJiiiiJ ^ <rNC, ' u ^ rj,r ^ 03 * iujHM,T ^^<i*^sorgro^cDO'UUJiLCj<ni)CDCAujOH 

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 

oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 


C N fx UJ O IX A ' 

ro o «r ro O' u l 

<r«rrxa)0'AcjA 

NNNNNNNN 

oooooooo 

oooooooo 


o cj ro >o 

A A A A 

o o o o 
o o o o 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 11 


209 




>- U1 
2 3 

<r o 
x 3 ' 

A OX 
U UJ >- ' 
u. H- 

x <x cn cn 
O II Cl. 0 . 
AXIC 
0 . 3 3 
cn O A A 
h- ce 

o 0 . UJ UJ 
A 0 . X X 
O <E 

(2 U U 


X o 
2 X 


U ^ 

h c uj cn 

I H U| 

* a •-( 
O A A 
UJ 2 3 
II O UJ 
U >- X 


i *—« UJ A 


t-i o hh 2 : 


o h 

cc cc 

o 


3 3 0 
X 

CC Cl 


CC 2 
O UJ 
X CC 


*T A 

^ z: v <i 2 in 

O UJ A A UJ UJ A 

X 3 CD CD A UJ o 

cc cn cccc cc cn cc 


XX o U CJ U X 

y— cn <i u. cn u. v 

rx<r'<rrs o o corn 

- U U X 3 - * » ‘ _j 

<r o a ' u. r a x u u u u x 


i u a u x <r 


x x 3 Z>jC 

' A U A CJ UJ 

- 3 U 3 UJ X 

rxinxAicnxAu 


X Cl X 

3 o <r 330 <rx <x 

- u - o u - - 

<103 ><EOUJU«AA 


3 <X A A U A 


3 A A 3 


3 A 

3 3 3 3 3 3 t— 

u<rxx<iu<r 2 u 

Tucn 3 Ufl:uincc 


3 H u 

Oilh.,._ 

r o cn cc u cc 


uh 3 *-< h h i- h h h a: n i-hm cc n <x n <r h i-iwIjclIIwIjclIju. 
N X U OiINIi.NDUJDD^U 2 DDCJ 2 CJ 2 DCCUJ 33 <rO<r 3 <XO<rX 

ucua: x u-i u-> x ex x x x a-j x x a-) a n x x cc x a. u a. u cl u cl u 3 


O A 

3 *-<^X 33 »-iA 33 A 3 l- 

0200 X 02300 A 0 U 

x<xxx 3 x<rcnxxcnxa: 


U 3 U <1 A N A N H 
3 UOCCUOCA 2 A 2 U 
cc 3 xa: 3 x<r 3 C 3 (i: 


3 

a 

x 

cc 

OOOOOOOO 
m ck o f j m <r in 
cjcjnromrorom 

CJ CJ CJ CJ CJ CJ CJ CJ 


OOOOOOOO 
>o rv CD :> o ts cj ro 
mmnm<r<r«r<r 

CJ CJ CJ CJ CJ CJ CJ CJ 


o o o o o o 

T m -o N CO o 

<r <r <r <r <r 

CJ CJ CJ CJ CJ CJ 


U u u 

o o o o o o 

o h n tn c iii 

U1 W in in in in 

CJ CJ CJ CJ CJ CJ 



CO C J 
n Ll 

5 A CJ O' 
i U CJ U 


CJ CJ 

o o 

Ll If) CO Ui Cv 

O 03 111 H o 


o <r u 
<x o u 


CJ 

o 


CJ CJ 

o o 


uj ui rs co u. o 
is u m u m u 


uj lj <r uj <i-c &" 0 -o i 

MtUltUMUnn, 


CJ LT CO A UJ 
U.U.UU.U.O 
»-( t-( »-( t-( C J 

O O O O O O 


cj in m O' <xuAUJUOO’-»M'oroAAuocj<r 

OOOOOOOOOO'-t^r-i^,^, - -• -■ 


I A CJ UJ >0 A CJ in CJ -O U O' 

'HUnnHUHun«u 


II IIJ UJ ^ V Q. U M UJU. 

OOOOOOOOOO 

CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ 
OOOOOOOOOOOOOOOOOO 


H n rt CJ CJ CJ 


O y-i UJ A UJ O O COO 

cj rs rs in u lu u 

'OliOAHAinAnAn A'OUA«A'OMUU«NO' 

nuiuujuujuujuu rxu' 0 ucjrxu 0 '<rrx 0 '<ru 

<IAAUIOHCjyi'OfflO><IAUA 


N<tO'U<ruocj»-«cjO' 
O ANO AKDUCOUU 


mco<ruAO*-«^'C(v.GooD^AUJUCjr')'ors«AAUJO-*cjin'OcoO'^AcjAUJUJUCJm<rNa30'CjAO'-« 
;r: ;r ~ ^ ° ° ^ ^ ^ ^ ^ ^ ^ ^ ^ rj rj ™ rj ^ r-J ™ M M ^ w M M M M ^ ^ M ^ ^ ^ **" **■ **■ <*■ ^ in in in in in in in in in in in in in in 'O >o <) <) >o •<) ••o 'O rx rx 
CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ 

orj^ortrtrirtr^f^oirtoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 


Cl. CC 

• <r 3 

1 X u 


f 2 

cn u 


*- Cl O 
Z CMI) 
Ul X A 

CC UJ u 

i cc u cn h 

. 3 u cn 

:uouh 

• CC X 

A 3 a. CD 

I 3 O •-< 

I O ' cc 

: >- 3 

H- ' UJ 


******* 


X I— 
CD U 
L- UJ 


U 3 
Cl O 
3 3 


<x cc 3 

UJ UJ * o 

A x cn x 

K O 

UJ Cl. O 0 

CC 3 H L 

<10 3 L 
>- uj 2 : 

3 2 CC C 

OH 3 

>- 3 UJ H 

Cl CC 

- o cn 

H L H ' _ 

o o cn i- l 

2 cn _ o c 

A A 

U U 2 O C 

HHCCC^ 


****** 


cn 2 

*-< <r 

cc o 


2 X 

cc <r 

3 CD 


cn A A 

o o • 

CL H CC Vi 

2 0 O 

CC H A Cl UJ Cl 

3 2 O *-< 3 

h uj cc c o 3 

cc cn x uj 

cn cc cn - 2 

' o *-< - h 

H U X C Q UJ * 

o k-cn xcc • 

AH o U 

oujcnuuHH 

cc id h h h cnuj 

******* 


I M H 
X<XAUI<TX30X' 
U - 2U •'1-103 - 
CAiZOUJ3>-ilC' 


C Cl 3 • " ' ' ' ' ' ' ' ' 2 ' 

UJ 2 O Ol- 3 CC>-(Lh 3 C 3 L *32 2 Xi£ 4 .«I' 
2 H 3 -I' CC ' 3 ' 3 ' 3 ' 3 ' 3 ' A' 3 ' u. - 


XX UJ UJ 

H U 0 . 3 3 

<1 O 3 O A O 

UJ - O X 2 X 

A XV CCUJV 


ClihllhXD 

HA 2 <XUA 2 AU 

tnCCHANOUJHfl 


A ’-i A CJ AM A 

H« 31 CHCJ« 3 iCMn« 3 ^n^« 
AUJOUJAAUJOUIAAUIOUJAAUJ 
OAXUJOOAXUJOOAXUJOOA 
CCCCCCViCCCCCCCCViCCCCCCCCViCCCCCC 


>-i 3 3 *-* 3 3 3 3 *-< N m 3 H__ 

20 <C 20 <TU<I 0 CL 23 XU <C<IX 3 

cxu<rxa 3 uxu 3 xcncic uu 


HH 1-1 *-» lh *i *-f Li b-i 3 HNH 333 L 

3 CLNCLNCLNUNUNUNUNu.NUNO.NOU 23 X<r<IX 
XUUUUUUUUUUUUUUUUUUU 3 XU 3 XcnUU 3 


Z 2 N 22 u.Nu.NU 


^ <1 3 ^ <r U 3 u 


H 33 3333 3333 3333 

si u x <i a c x x <c u <i x x <i u <r x x <r 

D CC 3 U 3 UCn 3 U 3 UCn 3 U 3 UCn 3 U 


3 A A 3 
3 3 3 3 


OOOOOOOO 

cj m <r in >o n oo O' 
uo in in U 3 U 3 in in in 


o o o o o o 

O H CJ 111 

'O -O 'O 'O 'O 'C 


3 3 

O o 

X X 

* >- >- 

o o o 

■ONCO 
•o -o o 


o o o o o o o 
O' o ^ cj n <r in 

ONNNNNN 


o o o o o o 

ON O O' O h 
N N N MS CD 


oooooooooo< 

ni wi in \ m rv _. r 


'-is»>>->'j*-<v^L^v-»vjvOOOOOOOOOOOOOOOOOOOOOO 
Nncin'OMaO'OHCjro^in-oNCDO'OHCjrovin'ONaiO'OrtCMn 

CoaDAOOAOfflOOO'O'O'O'O'O'O'O'O'O'OOOOOOOOOOT-i'HrHm^-.T-.*-.^-. 
H H H H H « H H rt rt H « H ri rl H H rl f J CJ f J CJ CJ Cl CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ CJ 


o o o o 

<r in >0 rx 


cc 

o o o o o 

OD O' O -< C J 
f f CJ CJ CJ 
CJ CJ CJ CJ CJ 


o o o o o 

m cinoN 

CJ CJ CJ CJ CJ 
CJ CJ CJ CJ CJ 


m 


M T-I PO 

o o o 


in 


m 


m 


CJ 


CJ 


ill h m h 

o o o o 


OO'OOO^UlilUO' li^inM^CJAUJ^AHOACDA 

o«ucj*-'Oin'OWiiTinrLT'0<rrv**>o*‘©inO'*-0' 

AAC'CUUUUUUUUUUUUUJUUUUUU<ZUUCJ'OCJAAn 

uucjrouuuuuuuuuuuuuuuuuuuursuuncjuuu 

<IUAOCJn 01 )>UAL.CJVMDCDAIijHninCD<lML.CJ^NO'UUJH|iH)IJ)AaOm |-)'0 

r0nM^’T9J-«r<rj'«riiTliTiniiTliDinii1'0O'0J)'0'0ONNNNNM3)C0aj03CDCD0'0'0'0' 

>000000000000000000000000000000000000 


U U U O' fv. Cs 
O A U <E M CD 

'ONA'OUACAUJUJCJ'OCJO' 

uinuuinuAUfsuuncju 


OinUOOU'QOO OO 0 '-«UArvAO 

CJOOOUAULT 0* , <T0N00’-i0 

A' 0 <TA'OUCU<TO' 
AUUAUUUUUU 


in cj •“! cj u") in cj *-< cj ud in cj cj ld ld cj 
ooooooooooooooooo 


<IO'UCD<IUO'ACOUUO‘UCDUOO' 

UOUMUUOAMUUOUMUUO 

C A C A CJ C A C A CJ C A € A f J C A 
CJ U A U CJ CJ (J A U CJ CJ U A U CJ CJ U 


OOOOOOOOOOOOOOOOOOOOOOOOOOO- 


©AAOM'00'0'AAOCJ»r'00'AUUUCJinCDAU-< < TN<CAOM'00'UU 

0 ' 0 ' 0 '<X<X<X<X<r<r<IAAAAAAAAAUUUUUAAAAAUUUJUUU 

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


210 



<X UJ 
Z i 
n 3 
3 UJ 


2 O 
UJ A 
UJ O UJ 
CC CC O 
u <t 
0) > ui 
<X 0) 

UJ QC -J UJ 

UKir 

3 uj in 

■X jH 

U.UO 


3 3 
<r uj 

CL 2 


to > cn 
<x cn 
UJ CC 3 UJ 

cn <r a. r 

3 u cn ci 

<r _j m 2 

0. U Q C 

* * * * 

r>xi uj x uj z ecu uj xu 

3 Ci Q 3 rs 3 O' CC Ci Q 3 JS 3 
►-<12200 MO MMh<I22 0 0 CIO 
HUJIiJUJOUIQUI QumUJUJUJOUImUIw 

<x_i-‘-cncnocjcnou 2 <x_i--cncnoucnocj __ 

3uxiiiz>mo3m ouj3uxocira:no>roozaiZ3CD 


ro m 

X X CCi 

O' Q Q 3 

PJ 2 2 O h- ► 

“ UJ CD H C 

- cn <r l 


h- O 
X 

o o 


3 CO 
O ~ 

r 


ifi Ci a 


3 > 3 3 2 3 Z ► 
XX XX 3 CL 3 _J Ci J Ci i 


I X l 

>►-0.2 
u. h tn a 
H3U10 
U X 

ui cn cc 2 

3 2 0 0 
cn 3 u 


Ci cc 

o • 

X — 2 2 
K Ci h ui 
n CC 2 2 
3 O i-i 
O O O 
3 U 3 Z 
UJ ii 
H O J Q 
2 2-2 
UJ 1 X c 


U X N 

CJ On UJ 

o Ci i 'T oc rj hujx 2 r*i 
- -3-0 3 3-30 CL 

ia<rofliixaij<xj<iNQicji 


cn i 

UJ _J 
CC c 


U O Ci 
2 _J 

1 n UJ 

h- V— *—i 

*i 2 3 
3 i 
O 2 
Cn Cl. O 

2 ~ 
CC UJ 
3 - t- 
> Q 2 


Ci 3 
- O 
<r _j 


—* 3 3 3 3 3 

-* 3 <1 *-> <1 <T h C!L33MH3<lH<X<tMCHH33u. 

( <C Ci u h Q u > 2 <X<rXX<ICiQH*CiCiKXX<t<r 2 
JU3«cn j« (nuujjujccn3«(n J3uui 


- - 3 3 3 3 

HwhHidHXXhXXh3i.3a.3ll.3a. 
X<t3X<I3CJU3ZZ3<XX<IX<IX<XX 
3CiCL3CCL CidCCHH^UTUIUTcn 


HUl O HH xce N O H X 3 3 3 > O HU 3 

X3023N2U2UZ0ZN2U20UJ 0 * > X O 
3iL2C2THOTQTtcTHaTi.ii: x cn cn 3 x 


o o o o o 
o i cj n <r 
03 CO CD 00 00 
n m m n ro 



o o o o o o 

N 03 J 1 O h M 

cj c i r j m rr i*i 
<r <r <r <r <r <r 


UJ 0. Cl 

3 3 3 

O O O O O O O 

m <r in -o rs co i> 

ro n n ro m n n 

<r <r <r <r <r <r <r 


oooooooo 
o h m n c n >c n 

*r<r«rsr’r^r<7-»r 

’r<r<T<j-«r<T<r<T 


oooooooo 
cd O' o i cj r*i <r in 
<r <r m in tn ut ut ut 


oooooooo 


uflinrMO 
O O O O o o 


INON'OOO'OMilOON'OONNOO'O'OMNO 

iUjMMUjMmnu.VHNQujr'iNUjnrj&'Cuu.o 


uju.ru 
O O 1 - 
i*mnr 
o o o < 


d<X'0c\i<X'0(MmaQiia<r'0N«'0rj-HiQQm 

jroorononooocNOononnonnoooo 


nmnmnnnro 

oooooooo 

u.ou.i>«rO'<ru 

inoin'O'O'O'O'O 


u. o o 

OVD' 


i ui " r) <0 0> 18 UI « i> 
< i cj cj cj cj cj cj n n ro 
innnnnronnmn 


1 o cn i a- o a cq mt n O'u i*i Ci ro a it ci n 

- - --rtrtUHrtOMMOMMOUUOOUOOO __ . w , , w , , ^ w w w w 

nMn^T<r«r<r«T«ruTininininuTUT'O'O'O'O'O'O'O'O'O'O'O'Orsrsisrsrvc0C0a0C0C003C0C0O'O'O'O'O'O'O'O'O'<r<x<r<r<x<r<r 

««^^^^^«««« M « nf * ,M ^ r<,r,)r<1 ^ ,<,nr,r<, ^ MnMnnrinn|,1,0 ^^ ttM ^ f T p ^ r TiTfTiTrTmTrTrTniTrTrT 

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 


u. rs 
rs <r 


HinCJ)'0CrTli3CJQClffl'0ClTQITHl> 
CJONUOOMOUMOMiJOCJITOUO 


nnnnnnnnnnnromnnnnnnnnmnnnMmn 

OOOOOOOOOOOOOOOOOOOOOOOOOOOO 


<X U Q u 

<x <t <c <x 
n n n n 
o o o o 


2 CC 
H O 

u. 
cn 2 
o i 
cl 


n cc 

1 UJ 
CC 3 
O 

X 3 

u. 

cn o 

*- Cl 

O n 

* CC 
O K 

cc cn 

* -*■ 


cn 

o 

Cl 


3 3 
u. li¬ 


ar 2 

h- H 

cn u. 

* *■ 


3 3 X 
O - 3 

> c n uj 


o ui 
a. CC 
cn o 


2 UI I— 
h 3 U- 
O UJ 
>23 


* * * * ■* ■* 


Cl 

3 C- 


CC 3 
O O Cl 
O 2 

cn cn 
uj cc UJ 
3 1 o 2 
uj cc u. <r 

2 3 O 

cn h- 

> H3 

3 cn <X 3 
Cl n 3 2 

* * * * 


3 


i o : 

3 Cl l 


! Ci 3 
• <X n 
flfl Ci 


3 O 
3 Ci 
3 a 


— — CC 3 

o c j o a 3 3 ► 

O CD U a O 3 ►. 

- cn cn ino3Ch 
22ct<rccinQ3cn 


j •-« <x 


3cn 2 n Ci z z Ci o. iii r\ ai rs 2 cn _ _ ____ _ 

ui 3 <1 - z <r <l 0 - 0-0 - «x 3 <x - <r 3 - <x <x - 2 <x cn 

u.ud0'3oa:ui33iar2u:2a:2X3Cim3O3Ci>0333u^oi33 


1 ot- 

2 1 2 cn 
- <r 3 


CM O 

IT22M3 

« « - 


— 3 

2 3 3 3 3 0 

<x cn o cn cn 2 

> 3 3 > 


<r« hh 
h a 1 <x 
cn cc 3 a 


3 3 

cc cc 

O ho 

O X Ci CJ I 

cn o. 2 cn O' 

CC O 3 > O 


3i3X33^Ci> 

0200X0233 

2<rxx32<rcn3 


*- , 3<XUr<T3333 

3«fl2h<r<icr 

203icn0003 


x 3 Xfl fl fl 3 3 

in<lHNH3<lH i.l/)3H3HjM33CH h 3 <X n —i 3 h j Ch 3H-3333 

3Ci323*X23M23X3X3X3O2CiCi332Q0i3323<X23NO3<XOO2 
330320C0333323232333Cn3233Cn23320«03330333 


<X HH <X H 
2ZN1Z3 Q 3 N Ci 3 
-•" 30330 



111 V IT CJ O 

o o o o o 

J) C l h N o 
3 0-01 *• 


in in iii 


<x rs o rs 3 rs 
J O 3 O 3 O 


cj in cj cj in cj cj m 

oo o oo oo o 

L.bllTinHVlil'OITCJ^Mj. _ 
3300033003 3 O A 03 


i C fl O T O' 
I CJ N 3 O' O 


-oa<iucjaaa 
nonnw. ooo 


o o rv i 
o <r 3 o 


-o eh i rs i 

j o n 3 < 


i cj *r ut 
is rs rs rs 
cj cj CJ CJ 

o o o o 


H P5l JJ f^Fi^3<crTiiiC'0<i-o<i'0HiT<i3rj3iT<i33rjrT3aHUj<iH0-aHHiT ci <i <x c o- <i3<r<r 
o 3M3UOu<X30U3Cjncjncjm3umfl30ur*ifl03 u o u <130300330 a ui u a u m 3 cj m 

caa3HiT'0C0auUJH^IilC0<xau.C'iviiliBfiaoCJinffl<rniLrj«'\m<rciiiii iMM*NMvi«i.iA_-»dMv 


NNN^KNNNm!£!12««S^?1^5? l3UJr ' r, ' O0DlIltJUjH<rn ® <I ' 5u - fJ,Tfiaj,aQof ’ lin ® < IUU.CJ^MD<iaiiJU.CJIT^SNO'iIi3OHHV'OO'( 
^ D s ^ s L'^' r ^t^®®?®®® CD ^' 0 '^' i:> ' c> ' & '^‘^- < ^^-^ < I^ < ^ l3:,,:!:ii:c ' ,=c > |3 j*i*OOOOOOflflflflflLda3333333333333ii33OoooQo < 

rs S Si! S $-! Si S ^ Si! ^ ^ ^ r ' J 1,-1 ^ p1 * ^ W CM pj PJ cj cj cj cj cj cj cj cj cj cj cj cj cj cj cj cj cj cj cj cj cj ci cj cj cj cj cj cj cm cj it rr rr rr rr rr ■ 

00000000000000000000000000000000000000000000000000000000000000000000000 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 13 


211 



CL 

eg eg cm cm eg eg <r 

CL CL CL CL CL CL Ui 

<r <r <i <x <r <r _j 

XXXXZXZXI-XI-XCJ 

_jz_jzxzxzclzclzz 


3 Z 
o w 

>- X 


_l z 

<X UJ 

1-1 u 


u i <t r 

O' I O UJ 00 

- * - X _J U 

izi«ou<ro 


z 

UJ 

UJ 

CL 

CJ 

cn 

z 

o 

UJ 

CD 

<t 

CD 

cn 

ui 

z 


* 


X 

3 

UJ 

z 

o 


CL 

UJ 


o 

z 

<r 


3 

X 

* 


UI 

CD 

<Z 

cn 

cn 

UJ 


3 


Z 

W 

o 

Cl 

<r 


3 

O 


UJ 

3 

3 

■W 


3 UJ 
UJ 3 
Z O 


<r z 
_j <r 
X CD 


z 

<E 
UI CD 

cn 

3 3 
<1 UJ 
Cl Z 


CL U 

<r o 


cj o 
3 Z 

3 Z 

<r z ' 


UJ u 

CL Cn 
O <X 

CJ 

3 O 
h- 
CL 

3 H- 
O CL 
V UJ 
3 
H- Z 
• ■ UI UJ O 
3 CL 3 CJ 
UI 3 


3 

CL 


Z 

<r 

* 


i cd ia r ax 


3 eg c 

z z cd 

- - 05 
X X z 


Z UJ UI 

w w CL CL UJ t- 

3300 OCLiZh-CL 

ZZOO U O UJ h C 

--33 3 U 3 <X H- 

XXZ>-<X>-3030 


UJ CL CL CL CL X 

CL 3 O O CJ O O 

3Z3CJX3<rCJX<T 

-330 - -30 


>- CL w CL 
3 3 O K 3 O 
<X Z Z 3 Z Z 3 
- - - 3 


xxz^nxziznciQzxxzxxz 


_J_J_J_J_J_J_J_J_J_J—I—J—J 

_l_J_J_l_J_J_J_J_J_l_J_J_il- 

<r<r<x<c<r<r<E<r<c<t<r<r<ruj 

CJCJCJCJCJCJCJCJCJCJCJCJCJCL 


_J 

3HN Ju.0. 
O Cl Z <r O Z 
Z CJ <Z O 0- 3 


<wX!>wN<EI-»- 

<3ZOClZCL3UI 


(fltfiHH JQ.CLH 
33XX<IOOUJ 
ClC.JJUQ.ClCC 


_! —I —J —I 

HH JUILU JJ J 

xx<rxzt-<r<r<i 

_J_JCJ_)*-h3CJUU 


HH J<lHH3<lHHQ3HHjHMjh 

XX<rXXXOXXX<TOXX<XXX<IX 

JJUJCJZJCJfiZJJUJJUCC 


3 

CL 

<x 

UJ 

z 


* 


CL 

<x 


eg 

3 

3 

* z 


z 


* 3 


ooooooooooooooooooo 

WrO^lfi'OMUO'OnMfOCin'OMDO'O 

minininininininininininininininininin 


ooooooooooooooooooo 

rtf-4nirn'OMiii>OH('.|n'r«'ONa)o> 

ininininininininm'O'O-O'O'O'O'O'O'O'O 

inininininininininininwinininininwin 


ooooooooooooooooooo 
oweg3<rin-orsco0'0 w eg 3 <r in >o rs cd 
NNNNNNNNNN(D(DCD( ri!DCDCDCOCD 

mininininininwinininininin in in in in in 


ooooooooooooooooooo 

0'Orir-jm<rtn'0rx30'O»-iMm<j-in'0r' 

30-0'0-0-0-0-0'-l>'0'0'00000000 

UD3ininininuninininm'0>0'0'0'OsD'0'0 


<r u 

o o cj o 


X in <t 
u o o 


x in <r 
a o o 


Ll 3 <r un in ^ n f i o u. in <r in u. 

cjooo ooooo cj o o o CJ 


x in <r x in <r 
o o o u o o 


0>30-3<t3^-3cj3CJ3w 

'O^'O^'O'T-O^'OT'OI'U 


rs x eg o o 

o in <r o eg 


O w 3 

x in u 


cj <r cj 

CJ O X 


u u u 

u w <=, 


cj rs cj rs n eg h n u nd- eg n o x 

u m x uj x o> o x eg n in x uj n x 


>ooo 

X 3 T 


m 3 eg 3 3 eg 
X -0 X Ll >0 X 


XXXXXXXXXXXXXCh UJ UJ o w H 3 

o o u u u u u u u a a u u u rs x u u x cj 


rt'03UUiejU.3&. 
eg 3 eg rsu. u c x u 


mnnHOHHO> 

UJ U Cl o U U UJ u 


H rt u O' 

eg o u u 


w*-tx<ruegxQX3 wr-ix<E>owrs<i'OwO'rsw>-iXT-i*-ii_io 
eg o cj 3 3 3 cj u a u eg ou 3 u ei n 3 u h hn eg ou eg oa u 


«UH»Ng:xo3'0 9-uu.eg3 
h h eg eg eg eg eg 3 3 3 3 3 3 -r 

ooooooooooooooo 


3'»T'0N<TXUJUJ’-«3<rinN<rXX 

w<rt^^^^if)winininiflinin 

<r<r«r<r<r<r<r<r<r<r<r«r«r<r«T«r 

oooooooooooooooo 


xxxo3'00-<xc&cjcjxegin>o 

UTUTUD'O'O'O'O'O'O'O'O'ONrvrs 

^•<r<T'<r«T<r«r-«r<r^-«r<r<r^''<r 

ooooooooooooooo 


•o o* u u. eg 3 >o o> u it eg eg ui 3 x 
r\e>rsr\3mmmm30'0'0-o>ch 
^•<r<j-<r<r*r<T<r'<r<r , T < T<r<r<r 

ooooooooooooooo 


xo3«rrsa.uxxw<Trs<ixo 

o><r<r<r<E<i<r<x<xxxxxxu 

<r<r<y<r<r<r<r<r<T<r<T<T'<r'<T<r 

ooooooooooooooo 


C 3 
3 UJ 


UJ 3 

- O 

<r _i 


uj ui 

<r x 


3 3 Z 

x x x x <r 


_j_j_ic z_j<i z_j<r z_j<r 


<r o 

- K 

Z X CL X X 


eg 

x z x z 

o - a - 

cl <r rs cl <r rs 


x z 

o - 

cl <r rs 


x z 
o - 
cl <r is 


cl <r rs 


CM CM 

Cl. CL CL 

3 <r <r 

OI-UJQ.UJ 
>- CL Z 3 Z 


33ww0U0U«_J_luLuLCL0_J0a:0-J0ijL0_J0CL0_j3CLNu.u.K 

33xz>ojj_iiz<i<ruuuo<rozo<rozo<iozo<iouzoouj 

X0._JZZCLCLiZXlZCLXXXZCLZt-irCLZwZZZwrCLZa3ll.CLCL 


h u _>wi_j ^ m u u r 

XI-XOXKZOXI-XZUJ 

33ZZ33ZZ33ZUZ 


X X X X Q Q J J J J 

_J 3 w _J J> W _J3w _J 3 w 3 M x _J_J_J_I_J 

X O X N X O X N X O X N X O X N X O X N r X <1 <1 <1 <1 

-JXCJCL_JZCJCL_JZCJCL.JXCJCL_jZOCL3 JUUUU 


OOOOOOOOOOOOOOOOOOO 

>0N30'OHejnvin'0N30'Ortej3r 

UTUTiiTUT'O'O'O'O'OO'O'O'O'OrsrsNrsrs 

<r<r'<r<r<r<r<r<r«r<r<r<r* , <r<r < r<r < j. , 5' 


OOOOOOOOOOOOOOOOOOO 
n'OMDa'OnM3<rin'OMDO'OH('4 3 
NfSfSfSfS33333333330C>>0-l>> 


oooooooooooooooooo 

<rin-OMDQ-Orteg3 , nn'ONCD>OH 

OO-O-CNO'O'OOOOOOOOOOwtH 

<r<r<r<r<r<rinininininininininin in in 


OOOOOOOOOOOOOOOOOOOO 

ej3irin'0is30'OTHCM3<rin'<jrs30-ow 

H H h n n n h ri eg eg rj w eg eg n eg ei eg 3 3 
inininininininininininminininininininin 


in 

o 


3 

o 


in in in 

o o © 


in m 

o o 


<r in3t3<r 

o ooooo 


CJ 3 W 

0 0 3 


IS 

u 


<z rs u rs 

UJ O UJ o 


x rs o rs 
uj o x o 


rs >0 3 CJ 3 X 3 

O IS LU -0 3 «r 


xrsoxuirs3xxisoxo> 

X3XfSX3XrsX3X3U 


ininw>cxisrsrsxrsrsxxxxrsrsuxrsrscjxrsrsuxrsrsinegw*-i(>. 

uiuegorsooo^TiwegegegN^Negrsi-iNegiswrsegrswrsocjujcja 


<XXX3<CXX3<IUJUI3<IXX3<IUJX33 

eg is x u eg rs x u eg is x u eg rs x u eg rs x u u 


-x a a x x 
eguuuu 


xweg3<T'Ors3a>xuxxxxowrr>orsa3o><xxu 

<xxxxxxxxxxxxxxauuauuuuuuu 

3333333333333333333333333 

ooooooooooooooooooooooooo 


xxxoweg3<Tin'orsooo><xxcjxxxo3<rin'0>o 

rj rj n lj *—i X X X X X X m X X X X X lj X X X X X X X 
3333333333333333333333333 
OOOOOOOOOOOOOOOOOOOOOOOOO 


o-<rcjxow3'<rrsa)<EeQxxw t Mi 0 ,oa)o-ucjxegina) 

XXXXXXXXXXXXXXOOOOOOOOOWWW 

33333333333333<r«r<r«r<r<T«T«r<TM-<T<T 

oooooooooooooooooooooooooo 


Page 14 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


212 



X Z3 

u. o 
u_ >- 

o ♦ 


I- 3 
X + 

O X 
•1 K 
UJ 1=4 
•H TH IH 

_X + + + 3 X X X X X X I X 

x >0 Z2Z + UOQNCDnOOXX 

OU. CLCLCLUJCJ'-LArvAlJ-TiO'^A 

X IQ CJ II0003b.iliLltL.wwnN 

O S3 U uO'UUUOUCJUUUUUUrj'O 

4«roooc-4o»-ioujci_joooooooor-(ini 


i »-< ci ci cj ci cj cj 


o o 
n <r 
m in 
>o -o 


© o 
in 

in in 
>o so 


X33333333333333ZJ33ID3333 
* p.pp.p'pp.ppC’Claccsoacsoaccraocssscntnuj'ncntocncncn 
w aJlilUJaJliJlilliJUUjUJUJUJUJUjajUJUlUUJUiUJUJLJQCiCiMQCiuuOCiw 


^22211 
t-c UCLCLCLOt-aiu 
3<X>-<X<IOOO>-hQ33CUJ, 


o o o 
rs 03 o- 
m in m 
>o >o >o 


. 3«hJ«OOOHQ330IUHNfl:uJ>-HOQ 
u.mi-cai-uuuiijHOOHM(n(/ujcc(ni-22i 
M/ia.inc(zinfl:ai4Ji3jjiiir(flu)rriijuj(n 


uj uJ 

CL CL 

i— o o a. t-i r-j n in 
in u u 3 a a a Oi a 
iLinwoooooo 

GCL>->-CLCLCLCLCL 


o°oooooooooooooooooooooooooooooooooo 

OHr.in^in^NfflO'OHriw^n , ONcoO'OHfjM<nj3'ONCDO'OHfjM«TL3 

'O'O'O'O'O'O'O'O'O'ONNNNNNNNNNCDfflOJCDfflCOfflCOCDaHMMJ'O'O'O' 

SJS3S3SJS3S3SJ'OS3S3S3S3S3S3S3'OSJ'OS3S3'OSJS3S3'OS3'OS3SJS3S3S3S3'OS3S3 


o o 
rs oo 
in o 

O CM 


o o 

CJ CJ 

00 rs 

ro n 

o o o 

oo n n 

C l O <T 

on cm 

o o o o o o o 

-c in m o ro »-t m 

NHriMONN 

nooo *h n ci 


i cm in oo a o 
r <r <r «r cj cj 

30 WO C 

r cm in in cj n 


o> uj in u. th 
< r <r <r <r 

U. 00 "i ill u 

u <r «r <nn 


N UJ UJ 
<T CJ CJ 


rH UJ UJ U. 
<r <r c j u. 


U CJ O >0 (J 00 O' 

<r <r c j <r ci cj 


CJ >o 

’H in 


<r a 

CD CD 

in in 
o o 


m >o 
<x <i 
in in 
o o 


©msssjinoO'U. <r co 

ci <r w in nn u. ,2) £ 

* JTJ OHHHHrlrtrtHrtHHrtrtHrtHHHHHHHrtHHnifiDNCO^UUJOri 

3 u UJUJUJIjJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJUJLJLUUJUJUIUJU.Ll. 

J £ in in in in ut in ut ut in ut ut ut ut in in u*3 ut in in ut in un ut in ut ut un m in in in in ut in ut in 

’ © oooooooooooooooooooooooooooooooooooo 


QDo-ooujHoinujuj 
in o n h ^ o o oorsin 
o o o cj <r o o cj c j cj 
oooooooooo 


Z CL Z X 

*-«xz<x<ia:»-x:> 

0KUJIiJI-0<CUU 

HUJOXJ^UUUJUJ 

AAAUUuuuAw 


h- A 

_J 

A - X 
UJ z 
l- UJ z 

Z UJ o 
H uc H 

O U b- 
a. CD CJ 
O 

UJ Z _l 

a o 
<r k 
cn £L <t 
CD 3 

uj a 
r cj z 
a >-• 
k z 


UJ UJ 

x o 
<r z 


Hi' 

CD O ^ 

X CJ ' _J 

- - - u 

IAXUXXUXAX 


C 

X <L O 

O - A 

co r a x r 


3 

X o 

u. > 


CD 

♦ H- 

— o 

X 3 X A 
U. O U. O 
li. > U. X 

O # O # 


X 

CD 

3 

Cl. 


X 

CD 

3 

Cl 


►H H 1-4 x CL 
X 3 3 Z U 
_J X X m A 


N CL Cl. H- 
Z O O UJ 
3 0. Cl CL 


X 

<1 t-i 


A CL 
-J U 


3 X X u. 
N O Z Z X 
CL X ►-« Hi 3 


X 

h 3 X X Q. u 
ACLNAOZZX CD 
_IUCLOX*-i*-i“3 « 


U 
A CD 
A <Z 


U 
A CO 
A « 



C 

CD 

CO 

X 


CJ 

X 


oooooooo 
co O' o h cj m n 

OOtHt 1 tHt-It 1 t-I 

'O'O'O'O'O'O'O'O 


O O O O O O O 
■O N CD &• O H r i 
rt H H ft n c-i CJ 
'O 'O 'O 'O 'O "O 'O 


o o o o o o 
n c in on co 

CJ CJ CJ CJ CJ CJ 

S3 S3 S3 S3 S3 S3 


o o o o o o 
o> o ^ c j n <r 
cj n id n n n 
'O 'O S3 >0 *0 >0 


o o o o 
in -O N CD 
ID ID ID ID 
S3 S3 S3 S) 


O O 

O' O 

m <r 

S3 S3 


O O 
CJ 
<r 
S3 S3 


O O 

n <r 
<r <r 
S3 S3 


L3 CJ a u 

A CD A CD A CD A CD 

A ^ A <1 A <X AC 


CL 

CD 

X 


o o 
in S3 
<r <r 

S3 S3 


O O O O 
rs m ck o 
s- <r «r in 

S3 S3 S3 S3 


O O 

TH CJ 

in in 

S) S) 


U. V 

a o 


«X in A S3 TH <x 

cj s- <r <r cj 


in uj cj ^ th in s) m * cj <r 

in<rinin<r m in s- in <r 


UJ’TVIDO'COOH 

<r in in in in cj cj 


ID A <t 

V CJ fO 


© U. A O 
c j <r <r c j 


O A TH U. A o o 
O CJ ^ ^ Cl Cl 


"iu.ou.in© u. i cj o ▼ in 

^ <r cj cj v <r pj in 


iLiHiujooinuj 
<r <r <t <r c j c j <r <r 


n m 
m 


in cj <r i/"3 cj o in 

m t n <r <r c j <7- 


u o © A 

CJ CM CJ CJ 


CJ u. © 

A U. A 


<i n o m in <r 
cj tn cj »r cj 


ID O' A CJ UJ h 

<r ^ n »r D’ rj 


O' A © UJ PD O' O 

in <r cj ^ ud in cj 


ID CJ U U. A W S) li. 
<r in <»- <r c j m in <r 


U. r*3 A U. ID S3 

<r ud -r in m 


111 111 h UJ SI ID A CJ i i O' «UJCDMDIDID CUJAS3MDIDID 

UJ U CJ © ID CJ © U U UJ U O li. CJ Cv O CJ CJ OU.UU.NOCJU 


oooinoiDou. 
cj cj cj cj in cj u. 


o s- O U. O CJ u. 
ci m cj v cj in u. 


ooinininu.HiLOMiTO'Ou.HNOu. 
ci ci <r <r cj u. ci ^ in cj v ut cj u. 


AUAltO-UCKU. 
Cl V CJ U. UT U. UT UD u. 


d- rj d- h 

in ut in <r 


iiCJIDSlACAU 

uuauuuuuu 

©©©©©©o©o 


U. © "1 CJ CJ M liT S3 rs 
UAAAAAAAA 

o©©ooo©oo 


AO'UUAU.OCjn 

AAAAAAUiUJlii 

©oo©©o©©© 


m a a 

U UJ UJ UJ 

<r <r 

© © © o 


n ^ a u s» rs 

o o *i "i n n 

in in in id mm 

© © © © o o 


A O' 

in in 
in in 
© © 


cj id rs a u. o 

S> S3 S3 S3 S3 IN 

m in m in ud ud 

o © © © © o 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 15 


213 




o o o © 
win 

IflOOH 

^ m in in 
o o o o © o 

MS rtl*lN h 

m m v «r h n 
Hionminn 

o o o o o o 

in o in o in 

M « (NNM M 
Hi CM CM P i Pi CM 

O O O © O O 

n h h nn n 

O N (M N (M « 

oooooooooo 

oroo)<OHnnMSH 
Hi (N M (SN P i Pi Pi P i M 

P'i Pi Pi H O - H H H H 


o o o o 
pi o >o <r 

IS © Hi O' 

^ in o in 


o o 
<r o 
n n 

CM 

O O 
O' OD 
Pi Pi 


O O 
<r m3 
Pi Pi 
Pi Hi 


y* CM 
CM »h 


o o 

rs 0 - 
CD >0 

in m 


ooooooooooo 

VPiPi'TDxT-OO&'nO 
rt P I N H CO H Pi o -o N V 
Pi ^ T O in O M Pi P i P i o 


o o o 

CD >0 T 
IS IS IS 


o o o 

>0 IS m 

CD Pi OD 

in in in 

o © o 

is oo «h 

O O OD 

<r po in 

o © © © o 

M N <T Pin 

O* -O 'O OD O 

ro nnci» 

© © © © © 

ih oo Pi in >o 

CD O' M) O' 00 

n H H H M 

o © © © © © 

•h O' O' 00 O' 00 

is ^ in >o rs 

ro © h rtnn 

o©oo ©©o© 

in Pi in o w pi v h 

Pi P0 Pi O' IO IO "O h 

IO O in H r-l r-l ^ o 


wuau.u.«uuiori-U'OcouNCiavo3iiiHi3NouoHaa)'Oiou.u.«iNO"flffli5a3NOON 

Quju.ttaiUJUjuju.ii.u.O'iii<r'OcjO' t ii!sm^Li©isinPi©rs<rr>mrsin'OOOu.*«rsO'ininnuiUi 

HHHrt«yiiiTinininooinoni , Mni.ocitHiiT©iL'flOocMfiooi , iMioMPiovHrtHHinin 

00©00000©©00©©©00U00000U0000©©©0000©©©00©©00 


QinaMowconoi) 

uaucDOUinoun 

<r-i'rQ!sci>ou-Ou 

oooucortnioou 

liiu.iijnaonaa'O 

^U^nUfiOUMi. 

auam^'0NN«H 

uaumnncoi-afi 

■OiHiiT'Ownuono 

©p-ion^ooo'o© 

o<riiTnc l rsLnujO'Ci 
inou owiiirt h<in 

th pi pi n a a a uj a Pi 

MOniDOUOWUU 

Hau.a'oa'OMLin 
ououoho vino 

ffiVOO'OCDOMi.CO 

aoujHOHOoMn 

inoo'M'Ooo'OcouT'O'O 

oujoorooinoujro 

>o ti o> pi Pi © Pi in ro u. 

UJOCOUOUUJO'O 

piCiQUiinain<zii.ui 

nuunovowaij. 

ino<roropicooQM) 

OhOOhUIOOUUJ 

rs^Pi'0oin'0<risQ 

uj pi a h pj o m i) in n 

Pi^-Q^'ooonpiu.ro 

roouoroinouoo 

u. Pi ut Pi m M3 rs in >o is 
^lo'oo'omoaouioo 


urtuia-o hquj inn 
inPirsuroouu_oo 

'ONriuainin'OiiTu. 

PlVPifflUHOUJHCCi 

a <0 o h uj q pi n pj q 
unopiu.uii.oucj 

CDui'0iii'-»inPiU.ois 

n u n o p i o P i oi P i in 

iH'Ou'OlilUHuUJli. 

pirsum<TUiOuu.o 

m^uQ'OPiinrsui'O 

mcMrsuropi^-tinisu 

nriPifluouoo© 

U'oaoTH<tmin*ofsu. 

unvpiU.H0UJCDa 

uju'OU.HCionciCi 

u.unpjCiUL0uu 

H U fl O Pi ItT Pi U. H H 

Pinunvorjffioo 

0'H<rfi'0<lHfl| j TCD 

yiriNunujouHin 

>ouiTH00QPiinTH<xn 

n in pi a u p i h o a u 

U'OQH'O Hflmno 

unofiu-ouinou 

<tQ'0<r»-«ininn0'UT 

iiUnvpiH©u«o 

H<rQi)UwUHflN 

fiioumnuiuouo 

VHCDQ'OaPiMi.’O 

iiiNNunvPininn 


pjn v UJ H* DC UI 

© © :> © Hp^nviiioujoa 
ooooaaaaaaatflUH 

rrr izooooooocihdi- 

CLCCCCCCCLCLCLiCCCCtLiCCLCCCLit 


Ui 

u.ct: a ■j' 

OOiCUJU 
h- U U Ui Ui 

oc cn cn to cn 


it I- X 'H ui cn 

u oc r- x © i-i-i- © © OlO 

-J Ui <1 <1 <1 III * u. iZ h flZ OOODU 

ujiLLZhhhODHOjii.zuj<iHHHi:roou) 

cncnincocncncncncni“i-r333©333>->->->->-> 


© o o o o o © o o o 

© h Pi h V 111 M3**. 00 O' 

©ooooooooo 

oooo©o©ooo 


oooooooooo 

•iauauu.©Hpin 

OOOOOO^-HHi^ 

OOOOOOOOOO 


o o 
rs O' 

O' Hi 
O Hi 


o o 
in rs 
Pi m 


o o 
rs >0 
O' ro 
ro ms 

o o 
m o 

CD CD 

ro in 
o o 

* UI 
Pi rs 
o in 


ro o ’H n h o in o in 

oooo ooo ooo ooo oooooooo ooooooooo oooooooooooooooo 

is rs pi M)»rin nv'OPi-ooO'HOV'OifiMONCiOOPiOHO'N'O NVMjvnO'piooo.omoPiinH 

rj o- rs O' cs co o mooMiin'Ovvin-onc'jMjmMXJMn'Ovn'rcD mi rs ^ »r p j Hi cm «h m h pi •© o- o o o 

o h n io ro ro «r io^fifiiMfiPiOvv<rooHOHOvT^WH min>oinooooinnoininM3M3M3 


o o 

tH M3 

in M3 
o ro 

o o 
in in 
<r m) 
o ro 

oooo 

-i M3 M3 Pi 

'O in ro mj 
ro ro o ro 


O o 
ro m 

O' ^ 
O Hi 

o o 
Ht ro 

O' Hi 
O Hi 


o o o o o o 

<r «r Hi - - -• 

cc v n 
HVO 


oooooooooo 

O'UTHirs'OCD'OHinoo 


o o o o o o 

|NTUTniMNU)WlSOUJOlillHV>M>'PiV UI " I' M M h i-l oi 

'Ors-i^-piHipiHiin Hipi'OO'OOoors'OPibTPi o-inrororooo^-mrocM 
inin'OinooooiniooininM3'OM3MjinHiininro rororororontrorooro 


oooo 
O' Hi o rs 
03 hi rs ^ 

o ^ ro cm 

o o o o o o 
03 is O' hi Pi ro 

VCDOOhh 
O O Hi Pi Pi Pi 


inffli , NCMM3fiOO'OaM3u.ooNo^uujauHuo«0'0'«aHroiiJOu.H(r)vucDHiincDuoiiJUCMucMOCDa)ii3Nuro(MHiO>infiCDa<rau.i'N 
ujHM34oujioininM)D«OHO'OPiCiPiHiooroO'<r'OM)4NNooa3csO'CD'OOHUuuujUHinM3aayi'OMjau.ioovvooawuiijao'UJiiJOo 
inonnonnnniiiiiTinnaaoPiriPiNOOonHonioiooooionnnoininvvinvu.avvvvinif)inu.u.invvvnnpiriPiPiPifiri(Mn 
ooooooooooooouuoooooooooooooooooooooooooooouuooooooouuooooooooooooooo 

x HiNnuHnzHpjnii n r- Hi uj <x u. ll Pi ro »i u z z 

kl. uj cn HriioaaaocciiJiniflcoino *-« o.oui q niuiu.r h cio o ^ Pi zzzzzZHrinv;inHzas- cn 

m u. Z Quflflauflflflflflh <r<XC CHflUiZu. r O 3 3 h Pi lO >-« JJhChPJ0OOOZZZ>-hh<I<I<IUJUJZZZZZZZZO3 o 

u.HZouzzzzzzzzzzzjJjJUHHOZHU.Hjoooo.ii.ii.zii)HCiuuazin(nMi/)W(fltflinio(Dh3Uiuuj^^<i«<ic<r«'i<rJU)HU 
QQQfluiujuiujuiiiiujuuiuiuuju.u.u.u.iiiXHjjjjjjjjjjjjrrtti:zrrrrzzrrzrrrzzzooiiu.iu.u.iu.u.a.zz 


rs M) U M3 O O' Ui 

o u. <r o u 

O O U O CM Hi 

o o u ooo 


a hi 
<r © 

4 Ui □ 
Qwt 
CL CL CL 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


214 




USE A PROM FOR A CHARACTER GENERATOR 


It probably has occurred to lots of people that the 
ubiquitous 1702A PROM might work as a character/ 
graphics generator. Well, it will work, and now that some 
simple designs for construction of CRT alphanumeric dis¬ 
plays have been published, the value of the 1702A as a 
character generator is much improved, at least for hobby¬ 
ists. 

The hard facts of the situation point to the slowness 
of the 1702A relative to the writing speed of the CRT, 
but things are not as bleak as the facts suggest. Slow 
1702A’s won’t work, and even fast 1702A’s must be used 
with care so as to allow them as much time as possible 
for character accessing. Fortunately, however, published 
access times are usually worst case or maxim urns, and 
actual devices usually turn out to be faster than the pub¬ 
lished data suggest. If, for instance, the CE line of the 
PROM is permanently tied low, the associated delay will be 
eliminated. Also, the ‘address-to-data’ delays vary depend¬ 
ing on which address line is changing state, hence the A0- 
to-data delay may be much less than the A7-to-data delay. 

The 1702A and similar PROMS are organized into 
8-bit words, which suggests the use of an 8-by-8 dot 
matrix because it simplifies the addressing of the PROM. 
Address lines AO, Al, and A2 are used for row selection; 
lines A3 through A7 become character select. As such, 

32 patterns, each an 8-by-8 matrix, can be stored in a 
single 1702A. 

Suffice it to say that I have used an Advanced Micro 
Devices AM 1702ADC to implement a Cyrillic character 
set on a 26-by-64 CRT display. The loads on the PROM 
outputs were slightly critical, as were the operating voltages, 
but it did work. In fact, 3 out of 4 PROMS worked, 
which is reasonable since the published specifications 
indicate that the devices were on the ragged edge of their 
speed capabilities. The existence of even faster PROMS 
guarantees their usefulness as character/graphics generators. 

David M. Allen 1317 Central Ave. 

Electronics Consultant Kansas City, KS 66102 

(913) 371-6136 


POLY ASSEMBLED UNITS SEEM TO HAVE 
PROBLEMS (BUT THEY FIXED ‘EM) 

Jef Raskin 

Your equipment reviewer received a letter from Harry 
Cohen of the OZNARI project at LaTrobe University in 
Bundoora, Australia. They seem to be having a bit of trouble 
with some assembled Polymorphic System’s units after very 
good experiences with Polymorphic's kits. In the reviewer’s 
experience, the Polymorphic kits have worked very well. 
However the assembled boards have been giving a few users 
some difficulty. A number of calls have come in from knowl- 
edgable people who have had trouble with assembled boards.. 
The complete assempled systems have been nearly flawless. 

A call from Dr. Dobb’s to Polymorphic’s new home in 
Santa Barbara got a few reasons why things are the way they 
are. The complete systems are checked out in normal opera¬ 
tion and are burned in. The kits give few problems since they 
are pretty well designed. But the individual boards have been 
given only a relatively cursory check. We are assured that this 
will be corrected. As usual,Dr. Dobb’s will follow up on this. 

The problem with Australian computers was not discovered 
by Polymorphic Systems, according to a spokesperson, since it 
was custom-modified for 220V AC as is common there. Also 
the purchaser had specified that the power cord was to be left 
unterminated so that they could supply their own plug. 
Murphy’s law would have predicted that the custom modi¬ 
fication for 220V would be done wrong. It was. 

What is Poly doing about it? Putting in a 220V test stand. 

Note to our beloved readers: If you have any problems or 
notable successes with equipment, software, service or docu¬ 
mentation, let us know about it. The more the manufacturers 
realize that problems are going to be published, the more 
likely they are to prevent them in the first place. Power to the 
Purchasers! 

Note to our beloved manufacturers: Want something re¬ 
viewed? Give us a call to make the arrangements. Assembled 
units do not have to be donated to Dr. Dobb’s, although we 
won’t fight you if you don’t want it back. When we do as¬ 
semble kits, we can report on the quality of the assembly in¬ 
structions, but we also expect to keep the fruits of our labors. 


> O O 
i 03 O' 


5 Q O' O' i 
> U © U ■ 


0'UJ<ECJC4UIOCJM 


: o in oo t 

4 U. O U £ 


> Ui I 
. l 

* o < 


3 00 CM in c 
j n o o i 

ui co c j i 
>unii.i 

3 *-t Q T I ( 
3 O O CM < 

c u h r-i i 

3 UI O O t 

4 <X 1 X 1 CO < 

> a u. n c 
k m <c a i 

)OwU( 

3 O' 04 00 l 
JOOmI 


) <r <r 04 

J 1 X 1 04 © 


: <i rs in 
) cj © © 


3 ^ >0 04 
.©MU. 


> uj in m 

> u. © o 


n m h u n o ^ a h w ( 

uuouuinou<HU' 


04 O' 03 
© CJ © 


© <E M ( 
U M U i 


cm th cm t 
uj u. © < 


Cl Cl N I 
U. O U. I 


) m <x in i 
) O CM O < 


4 u_ r\ in ■ 

> 03 O UJ « 


i Mn n i 
) © © o i 


. m n « 
j uj o © i 


hncn 

> © 04 U 

3 oo in *■« 

J U UJ UJ 

r 04 04 N < 

> U O © l 

J O' ui 'O f 
' O UJ M C 

3 UJ M in * 

J u. u o < 


<X U. 00 ( 
M Oi in < 


0 4 ui M l 

o cj a i 


UO’OU.aO'i 

JUOhMJI 

inu.’oaju.i 

•J O O UJ U. M ( 

o <r aci rs o f 

4 •OUI NML ' 

' Q <r m th n r 

J CJ Cv o o M i 

3 M in UJ UJ i 
JOUCDuM- 

3 O' u cj <r uj r 
j >o a cj n a < 

' n o ui O' 03 r 

juonuM 

' n h i«i h cd i 
HOCJOUlil 

)UnonM 

5 in O O' © M f 

) a u ci u. n i 
r u >o u O' o < 

nmninmuj- 
< OU O UQ I 

' U M M a Oi I 
J -O O O J M N < 

' M ^ M M O « 
■» U 'C O 04 U. I 

. M Q U M rs i 
. O U O' O M t 

)u.n«NUi 

unoucoi 


J UJ ID © W h ||3 U. « 
JNOU'0©C4UJU< 

CinOOMQM^TO'CJC 

iOUJOUVOUUi 

3 © « O' V O 04 CD h i 
J U. 04 -O O U U 04 c 


jCD'O^au-HU.Hr 

Lurx©U'Ouicujf 

vou<r©u©ou< 

llijcoa WUJ^^l 
3u.uO'0©inin©c 

[ UJ NM a W a T4 u t 
jr^oouTucjac 


H CO 04 M I 
J u u. <r « 


o n <i a t 

> O 04 CJ ' 


i <r<M 

: m O' i 


i <r < 
i © m i 


. ^ © i 
• <r 04 - 

» rs <e c 


! o u u c 


> o- © o 

4 CM O © 


) O' © o 
r m o © 


J 00 o © 

r moo 


3 0 0 0 

r cm o o 


3 O' O O 

3 in © o 


j uj id u ui in i 


9£^? 0 9 < 2 00 2 00 $ 00 2 0000000000000000 ©o©©o©oooooo©ooooooooooooooooooooooooo©©o©o© 

^■U3'0r^000'^i33L3QUJU.©’-<04M^-U3'0N00O'«03UQUJU.©'-»04M<ru3'C0'a30'Ci33CJ©UJU.OTHC4M^U3'0PvCD0'<I03(J©UJU.©*-«04M< - lD'O0'C0O'<Ca3CJQUJU. 

HHrtiHrtrtrHHHHHrtMr4MrjMMMMrjMr'inMMMMnnfonmnf3f3r3t*ii < )r3nf*i r *inc'T<r'r'j-’T'T<r<r«r'r^<r'rvvifliDinininbDiniDii')ii3iDinii3ininiiT 

000000000 © 00 © 0 © 000 ©© 00 ©© 0000 © 0 ©©©©©© 0 © 0 © 00 © 0 © 0000000 © 00 ©© 00000 © 0000 © 00 © 0©000 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 17 


215 






SOURCE CODE FOR 8080 PILOT, VERSION 1.1 


Copyright © 1977 by John A. Starkweather, PhD., 77-Feb 


The April 1977 issue of Dr. Dobb’s Journal carried the 
complete documentation for this version of Dr. Starkweather’s 
8080 PILOT. The following is the complete assembly listing of 
his program. 


Requests for PILOT-8080 in machine-readable form should 
be directed to: 

PI LOT-8080 

Computer Technology Branch 

Lister Hill Center for Biomedical 

Communication 

National Library of Medicine 

8600 Rockville Pike 

Bethesda MD 20014 

(301)496-1647 




T// 



isiwzarSi... j * 




3 * 


1ps§g5gfol 




§§7 


J§jjtr 



; 





<r ui 3 x Q 

h (- U. 3 < A 

3 3 t— A 

Q. QJ fQ X >• 3 

2 Q. x < <r x 

(/)"}Ld<lu.71TQ 


G C O 'J uJ 
W W Ul UJ C 
X X X X 

o 

<c o <t u 

2 x 
2 200 


: x x x x <z 

I 3 3 3 3 r-* 



UJ 


H 

X 

Uu 


A 

<£ 


O 

X 


r- 

2 

3 


3 



o o 

o 

X 



3 


r— r— 

_ 

(-• 

r-* 

A 



QC 

O 

2 

cd 

3 

r-* 



3 

3 

7— 


3 

3 

2 

2 

3 


o 

r. 

f* 


3 

■—< 

X 

X 

V 

2 2 


2 

2 



2 

O 

2 

►— 

o 


<x 

Q 

X 

<X 

a 

3 

3 

X 

3 

•—« 

•—« 

<T. 


t— 

3 


3 


2 

o 

X 

<r 








O 

C 


X 




o 

2 

•—• 

O 

X 

r-» 


t-* 


2 




r—• 


r* 

O 

(—• 

rj 

X 

o o 

o 

o 


o 


O 

c 


1- 

X 

£ 

UJ 

O 


x r. 

3 


s-* 

3 

.1, 

3 

X 


CJ 


r-* 

3 

T— 

3 

2 


3 

CD 

X X 

X 

X 

X 





ex 

O 


<3. 

2 

UJ 

•—> 

3 O 


3 

3 

O 

O 

O 

<1 

3 

<x 

t— 

3 

X 

3 

X 


a 

r-» 

O 





3 


■— 1 


UJ 

_J 

X 

X 

•—• 

3 

2 

r- 2 

3 

3 

O 



X 

X 

r-* 


3 

X 

2 

X 

—• 

O 

3 

2 

X 

>- >- 

>- 


3 

3 




t- 


o 

UJ 

a 

■—> 

O 

X 

3 

O 


X 

r* 


CJ 

2 

-0 

X 

r~* 

•—< 

r-* 

3 

t—• 


•—i 

X 

** 

f 


2 

•> 


A 


2 

Q. 


o 


3 

2 

<c o 

3 

A 

t— 

o 

3 

o 




2 

3 


3 

O 


o 



d c: 

<r 

c 


3 




»_ 


cd 

X 

r* 



t— — 


2 

'/I 

2 

A 

3 

A 


3 

►— 

O 

X 

O 


2 


2 



r* 

r. 

i 



X 

UJ 

o 

3 

2 

0. 

3 

3 

3 

•-0 3 

O 

O 


3 

3 

a 

r- 

a 

O 



3 


j: 




o 

6 6 

O 

n 






0. 

O 



X 

<L 

<X 

A 

r-» 

CJ 3 

X 

X 

—> 

O 

3 



X 

3 

r- 

o 

3 

3 

3 


X X 

X 

X 

r— 

O 

3 

ui 




2 

a 

2 

2 

2 

3 






~> 

3 

a 

X 

<t 

<T 

<r 

A 

2 

r-* 

3 

r-* 

X 

V N- 



A 


D> 


<x 

if 

H 

2 

o 

•—i 

X 

X 

<X >* 

>- 

X 

X 

X 

a 


X 

•—• 

o 

X 

X 

3 

<—> 

3 

3 

<T 

3 

o 

3 3 3 3 

<Z 

3 

3 

T> 

J 

o 

X 

•—« 



UJ 

3 

2 X 

X 

O 

o 

o 

•—« 

3 

X 

D> 

r-* 

CJ 

o 

X 

3 

X 

X 

O 

<T 

r—• 



t— 


NJ 



X 

<1 

c 

CD 

3 


r-» 

t-* 

X r— 

f» 

3 

3 

3 

o 

3 

3 

JO o 

• % 










••s •» 








H 

h- Ul 

2 

<X 

X 

x; 

O 2 

2 




3 

<X 


3 £ 


















2 

(/) 

A X 

UJ 

r 

Ul 

3 

2 3 

3 




<t 

CJ 


2 X 


















^ X 
X 3 X 
O h Ul 
f* 2 *“• t 

o — : 

x o • 

cu co -r in \o r- q. < 

dddddri??. 

UJ W UJ Ul Ul W Z : 
J J J j j j<ui; 


a a 

ui 

i 2 

» x x 

' 3 3 X H 

i H « < Z 

Ul Q X 2D 

l X o o 

X o 

: t- o x. 

: 2 u. <r cd 

» ul UJ Z 

X x os ~ 

n « a c 

D y I H 

O 71 Z 7) 





X 

I 


r- 

O 

>* r-» 

3 




X 

X 

O 

u. 



vO 

x -x 

- 



(-• 

X o 

o 

o 

3 


3 

o 

r- <T 

O 

♦ 

+ 


o o 

3 

o 

3 

CM 

3 

3 

2 t- 


o 

o 

O 

<T — 

CM 

— 


r^* 

O 

O 

3 A 

X 

o a 

3 










a 

a 

*-« 

3 3 

3 

3 

3 

3 

3 

3 

CD X 

•-U 

a 

a 


o o 

3 

3 

3 

3 

3 

3 

X 2 

a: 

X 

X 

X 

3 3 

3 

3 

3 

3 

3 

3 

O “D 

a 

3 

JO 


c u 

T. XX*-* 

!C«0«00r'r*71 

t-XXXXX22<T. 

lOOOCJCJCJZZX 


cd x x xnaia 

O"D"D*D"D*"D0 , "D'D 


>- X r- II Ul o 
x x x 3 3 a uu x 
r-XHDDzQi- 

Z r '71 U 3j « « Z 

iUii/iQ,a.ajDs 


OOOOOOOOOOOOOOOOOOOOOO — ' 


XaaaaaaOOOOaaaaaaaOQOaOaaaaa 

<1 


— O'—OOKQuO O J J J Ul J Ul 

CJ O ilJXWW<I., .. rlliaj.i; 


<T •• D D » D 

f* *0 < D > < 

< X <t A A <t <t A 

O J J J Ul J Ul 


.T.uDKjIIh 

x.x.xxrxr-<r2<a*0f- 
HHt-*t-h < zj -, <r2D> , .o c z 
io.na.uiDuxuiz.nu 
<tuiu«szo7iujjyyi 


ooooacor-o 

'70UlOU.^h l «0 
O — CM O 3 O 3 O 
OOO — — 033 


cm o — — — ro ui 

o o o o o o a 

O co <x a a r- 
Ul *710000 r- 

A — CMCMCMCDin — a — o 

O WCVCMCMUU'TUUU 

OO fOvOOUtuCMCO^MX) 

<r<r <r<r<T<r<rtnini/iJiin 

oo oooooooooo 

oo oooooooooo 


OOQQQOOX 

OOOOOUlUlO 

Ul<TUl<r<TOOCT' 

O<TO<C<XN0V0O 

nronnnnnn 

oooooooo 

OOnvOOOU.CMiTl 

ooooooo — — 
ooooooooo 


oooooooooooooooooooooo 

ooooocoooooooooooooooo 

oooooooooooooooooooooo 

oooooooooooooooooooooo 

OC<OU)OCM<T'£)CO<tOUJOCM'TNOCO<tOU10CM<T*r)vOr'CO 

’-''-'-CMCyCMCM(M(MC\lCMncOfOfO0Onr)n<r<I-T<T<I<T<T 

ooooooooooooooooooooooooooo 


Page 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 











































3 

X 

x a 

— o 

A X 

x 
• c 

O A 
Z Z 
C 
Z 3 


o x 
rC yj 
X X 
NJ X 


XX Q 
UJ *? o d 
7> A 3 
UJ z - 3 


UJ 

Z X 

— d 

x z 
•. x 

<x O d X X X c 
Q 

— dddd — Xr- 

3 - t r- r-> X X UJ 

z yj x -o -o x -o j: 


A 

c 

X 

tl 

X 

< 

a * 

x r: 
d X 
Q 

< x <r 

UJ UJ 
X X r-» 

x x y) 
3 3 <1 
X X J 
II II 

ShIs! 

X 

z 

— y) 
- z 
X X i 
O UJ 3 
H r-» 
Z Z UJ 
C UJ c 
3 
X 


SiS 

*: o * 
UJ X 

r* f <£ 

7. A T. 
— U 
O — Q 
X X Z 


3 

«- a 
x z 
t: w 

Z r- 

X o 
x z 


a 

s 

X 

o * 
I s X 
; a t— 

’ o z 
I a — 
o 
t: x 
o 

X X 

X 3 
3 X 


x 

c 

x 

X 3 
3 

z x 
— m 
n 


X 

2 

X 


£ z 

X X 
X 3 
£ r* 
d X 
Z X 


XXX 

3 3 — 


z C 
o 

3 % 

z x x a z 

x yj a o z w 

X |J 2 x 2 x 


X 

X X 

z a 
a 
x d 
o 

t- d 
X X 
d r-* 


X d 

x yj 


x 

z 

- • X 
X 3 d 
r- X 
r- X U 
Z 

X * r- 

C • X 
X A X 
3 O r-« 

C 3 Z 
d t- 

X o Z A 
U X £ 

X x >* x z 
d x z o 

x d r- x 

X r* X O 

fflXXfflU 
II A — 
XXX X 

X x A — 


z 

d 
3 
X U) 
O 

X X 
Z X 
d z 
yj 

z 
X X 
3 X 
Z I- 

3 a 
z x 
o x 
u x 
d 
z o 
x 

X X 


z 

d 

L> 

A A 
X x z 
X s o 
X - 

d Z r- 
X x d 
X x 

X 0. r- X 

y> - x 

— x a o 

X A X 

x x y) 

«- Z X A 

A X d X 

d X L> U 

t- o 

X XX 

- - x 


X 

a 

o x 
o a 
a 

- x d 

o 

+ x 
c- a 

X AO 

a do 

Q x 

d e- x 
— x o 
z a 

o x a x 

X 3 d 3 

o d d 

u yi a 


3 

a d 

A X X 
O O X 
X 

x z 

Z o X 
O 3 
X r— r— 

o x x 


X 

«- z 
X % 

— d — 


z 

d 

o 


X 

X 

o 


X 

a 

a 

d 

x x 
a a 
o o 
o o 

x x : 


z 

o 

X 

o 

x o a 

a z 

0X3 

o o o 
X X 


o 

d 



d 

— 

o 

6 

6 

* - 


X 



X 

X 




o o 

X 




o 

a 

X 

X 

X 

o z 

X 

X 

'X 

Z 



3 

3 

a 


a 

A 

A 

o 


3 

d 

d 

X 

X 

d 

3 


-• 

z 

d 

A 

yj 

d 





d 

X 

X 








X 

a 









X 

i 









X 

z 

o 








o 

o 

X 









z 

X 





























X 







— 


NJ 




























o 







UJ 

r-» 









CO 







X 




Z 




co 













y> 







a 


♦ 

Z 






3 


X 





a 

+ 




3 

A 

3 

• 


X 



X 

X 

z 

3 

x 


. 


z 


z 

X 




X 


X 

z 

3 


t-» 

Z 


•* 

z 


z 


d 

d 

d 

•• 

X 

o 



2 


X 

d 

o 

<r 

.. 

X 

X 


d 

c* 




'r- 


CJ x 

»- 

• 

z 

d 

• 

r-* 

d 

A 

d 


C/> 

X 

A 

• 

a 

a 



X 


3 

yj 

•> 

A 


a 

X 


CJ 

z 




X 


d 

X 

X 

•• 

o 

3 

* 

X 

3 

X 

3 


X 


X 


z 

x 






j 

c 



o 

u 

X 

yj 

CJ 



X 

*■* 

X 

a 

A 

3 

“ 

3 

A 

* 

3 

A 

O 

y> 

X 

X 

X 

X 

a 


o 

d 


z 

II 

X 

x 

X 

A 

X 

a 





X 




Q 


X 

X 

X 







X 



a 


a 


X 

X 



1 

HL 


a 

J 

a 


— 

NJ 

X 

X 

X 

— 


X 

X 

X 

x 

X 

X 

— 



— 



X 

X 

X 

X 

— 

X 

— 

X 

X 

d 

H 

1 


A 


J 

j 

_ 

X 

z 

z 

z 

d 

X 

NJ 

z 

X 

CJ 

d 

d 

d 

X 

NJ 

NJ 

X 

NJ 

NJ 

d 

z 

z 

X 

X 

X 

3 

d 

d 


UJ 

yj 

,, 

z 

X 

<r 

i 

■> 

CJ 

3 


3 

CJ 

3 

X 

— 

A 

a 

CJ 

CJ 

3 

3 

3 

3 

3 3 

3 3 

3 


A 

X 

yj 

Z 

3 

3 

X 

c 

X 

* 

2 

A 

3 

X 

z 


z 

d 

u 

y) 

z 

X 


> X 
x a 

r-* a 
d 
z 

X Z 
X o 
r- X 
O 
O 


z z 
o o 
X 

O X 
zoo 
o 

x X ~ 

O x >• 
o o ~ 
X X 
XXX 

o a o 

A A 5 
H O O A 
— XXi 
Z 

x x X >- 
3 a a 
d a a x 
yj d d — 


x 

X 3 


0 3 * 

AC. X 

r- A o 

XX z 

: d x x x x >. 


Q x 
X X X X X 


a x 3 

C H H 
o z x 
X x 
X 


o 
. o 


X 

o 


o o o c o 

X d I/J^lfio 

d d d d O d 

X CU X CU CU — CU O' 

33<t33cucu3 

axcviosooox 

n fo :*) ro fo n co o 

oooccooo 


a o 
o o 


3 r- 

o o 
3 a 
GO o o 


— I** d C* COCO h CO co n 

o ooo oo oooo 

d xdoddodonxo 

co dt-cu3axcu3X3x 


co o oo gooo co dr^cvjcoaGocucocooGO 
dxxcjoxcvicocoaxoococviaaaaxodxodaco 

CUr*X3X3CU33X3CUCUCU333X33X3333 
o co d vor^ooaoioinsop^dmx — dvooox — dr- 

cococoQocooococoooooooooddddddaaa 

co co co 3*3 (0C0C0C0(0!O(O!Or0Oc0C0C0C0C0C0C0r0(0(0 

ooooooooooooocooooooooooo 



— 

CVJ 

— 


CO 

3 



_ 

r~ 

_ 


CO 



3 





d 


o 

o 

o 


O 

O 



o 

o 

o 


o 



O 


o 



o 


d 

a 

CVJ 

d 

r» 

vO 



CVJ 

X 

CVJ 

d 

r- 



3 


d 



d 


— 

d 

CVJ 

3 

3 

X 



CVJ 

GO 

CVJ 

3 

3 



X 





GO 

CO 

OJ 

— 

CVJ 

vO 

a 

a 

X 

O 

CVJ 

a 

d 

\0 

a 

O 


d 

3 

cu 

a 

a 

a 

CVJ 

CVJ 

CVJ 

cu 

O 

3 

3 

d 

3 

CVJ 

3 

CVJ 

o 

3 

r- 

a 

3 

CU 

cu 

cu 

cu 

3 

d 

a 

X 

— 

d 

vO 

O 

3 

a 

X 

_ 

<r 


o 

3 

a 

X 


cu 

i/> 

vO 

r~ 

a 

a 

a 

3 

3 

3 

3 

3 

3 

3 

a 

a 

a 

a 

a 

a 

a 

X 

X 

X 

X 

X 

co 

co 

co 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

o 

o 

o 

C 

O 

O 

O 

O 

o 

O 

o 

o 

o 

C 

o 

O 

o 

O 

c 

O 

o 

O 



X 





X 



X 





— 


3 





3 



X 





% 

X 

r-* 





d 



1 -^ 

A 





a 

d 





X 



z 

X 

X 

t-* 


y* 

X 

v; 





o 



— 

o 

X 

X 


X 

d 






r* 



o 

1 — 

a 

d t-* 


X 

2> 

O 





y) 



X 

3 

d 

h y) 


(—• 


z 


d 







X 

r-* 

yj x 


d 

>- 



X 



X 



X 

> 


x x 


X 

.X 

•• 


r: 


d 

X 



3 X 


X 

X X 


» 

d a 

o 


d 


X 

a 



d H 

o 

z 

X x 


X 

z x 

o 




X 

d 


d 

c- X 


a 

z I X 


X 

— j 

o 


X 


d 

x — 


X 

a d 

— 


O H X 


d 

a d 


d 

X 

d 


a x 


x 



a 

o 


(-• 

A 

% 

X 

X 

X 

X 

o d 


z d 

X X 

X 


x x a x. 


/) 

>• 

X 

x 

X 

n 

a 

3 > 

d 

d 

NJ NJ 

d 

A 

3 NJ x 


• 

C X 

3 

d 

a 

d 

d 


X 

X z 

— — 

z 


d — X J* 


d 

d x 

t— 


a 


y) 

X 3 

x 

3 O 

X X 


lu 

t- J IO 



^ a 

— 

t- 


t-* 


o — 

d 

O < 

d d 

o 

O 

yj d t-* 

X 

a 

o d 

"5 

>< 

>- 

A 

X 

x 


X 

•—i ■ 

z 


— t-* 

a 


x — 

A 

X 

V*' 

— 

X 

H X 

a 

X X 

r-* r* 


V* 

e* t- z ~ 

c 

r~ 

S % 

1 

H 

H 

X 

a 

•o z 


o 

— — 

— 

X 

— — d d 



x d 

Z 

i 

Z 


d 

d a 

6 

z 

Z Z 

X 

o 

Z Z 3 — 

. 

O' 

r-* r> 

>• 

H 

X 

z 

X 

x z 

3 

— o 

— — 

A 

3 

— — y> yj 

— 

— 


— — — CVJ — CO — 

— — — xxx — — yjx 


X z 

o — 

3 

z x 
o a 


d x 

Z A 

z z 

X d 
X o 
H 

X 


CO 

cO 

cO 

CO 

CO 

yj 

CO 

cO 

yj 

•yj 

z 

X 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

d 

X 


.. 





.. 

.. 



t-> 

3 


> 


•• 

•« 

•• 


X 



X 

X 

•• 

d 

•• 

X 

X 

X 

d 

o 

«• 

•• 

d 

o 

X 

yj 

‘.3 

■> 

X 

•> 

CO 

1 — 

X 

a 



z 

X 

CO 

d 

a 

d 

a 

yj 

d 

x 

CO 


X 

d 

z 

co 

a 

CO 

d 

d 

•> 

o 



c* 

a 

>• 

H 

X 

z 

X 

X 

z 

3 . 

•r 



odaoaxu.cQ'OCQ 

ddddox.odcnco 

— — — — — — CVIOJOJOJ 

oooooooooo 


3 

o 


A 
I X 


5 

X 

3 

o 

X 

X 


X 

z 


X 

1 












X 



. 

GO 

3 


X 

X 


X 










X 



r^ 

i 

— 

X 

X 

X 


V 



X 







X 



c^ 

r-« 

X 

o 

H i- 

a 


a 



X 

i— 





3 

t-* 



A 

O 

>- 

X 

X CO 

a 

X 

o 

— 

<r 

r* 

X 



X 

X 


A 

H 

z X 

a 

X 

X 


1- A 

X 

h- 

— 

3 

cu 

V 


— o — 

o 

o t- 

H 

A 



d r- 

?j 


o 

d 

A X 


X 


% 

•« 

J 

A 

XXX 

X 

x z 

z 

d 

X 

Z 

3 CO 

o 

X 

3 


x y) 

X 

d 

X 

a 

3 

a 

* 

3 3 3 

3 

3 Z 

z 

a 

CO 


A X 



* 

d 

a 



a 




X 








X 

X 




X 

3 — 

— 

X 

— 

— 

— 

X 

X 

XXX 

X 

X X 

X 

X 

— 

x 

X x 




NJ 

X * 

X 

X 

X 

X 

-> 

d 

z 

z z z 

V 

z z 

TT 


X 

d 

d z 

a 

a 

a 

— 

o x 

X 

CO 

X 

X 

Z 

3 

a 

a a a a a a 

a 

a 

X 

3 

3 a 

a 

a 

a 

X 



X 




co 

X 

X 


3 


X 

X 

X 

3 

O 


X 

I— 

X 

z 

X 


a 

z 

a 




d 

— 

a 

z 

>- 


— 

o 


z 

X 


X 

X 

X 

►—« 

o 

X 

d 


o 

3 

z 

X 

-■> X 

r— 


X 

X 

«— 

o 

a 

t— 

a 

z 

z 

X r* 

X 

z 



— 

NJ 0 

z 

o 

z 

r* 

c 

— 


x 

d 

-0 

X 

X f- 


X 

3 

d 

1 

d x 

t— 


CO 

X 

d 

— yi 

X 

o 




— 

/) 


«-• 

r-* 


— 

X 


X 

X 

X 

z 

X 


A 

A 

yj 



3 a 3 X 3 

a x z x c- z p- 
-r-dxz * - - 
* x 3 - x x z •* 
x — oxzz — z 


a a a x x 

— XX — XXX — 

.< x x x x d d 3 

x /j -o x a o o z 






















A 


X 




o 





































A 


d 

o 

o 

a 

A 

X 

3 

O 

d 

3 

a 

d 

a 










— 

X 

— 

cu 

— 


3 

to 

a 

a 

a 

a 

a 

o 

o 

a 

— 

CO 

CO CO 

o 


3 

ro 

cu 

o 

— 

d 

d 

3 

d 

yj 

d 

yj 

o 

X 

— 

— 

X 

— 

a 

a 



o 

— 

o 

o 

o 


o 

o 

o 

o 

o 

o 

o 

X 

X 

o 

o 

o 

o o 

to 

a 

d 

X 

3 


A 

r* 

X 


3 

X 

cu 

_ 

cu 

o 

o 

o 

— 

o 

o 

o 



o 

X 

<T 

N* 

o 

CO 

<r 

X 

X 

<T 

X 

<r 

d 

o 

o 

O' 

o 

A 

O X 

cu 

o 

O' 

ro 

cu 

CO 

X 

d 

CU 

3 

CU 

cu 

yj 

d 

yj 

cu 

d 

CU 

X 

X 

X 

a 

— 


o 

X 

CO 

X 

o 

— 

lO 

o 

3 

d 

3 

d 

d 

vO 

o 

a 

o 

yj 

CO c 

ro 


d 

a 

c 

X 

d 

O' 

c 

O 

r- 


— 

yj 

yj 

r*- 

3 

d 

X 

3 

X 

X 

O 


— 

— 

cu 

— 

— 

X 

a 

to 

to 

to 

CO 

to 

CO 

CO 

CO 

CO 


a 

a co 

o 

CO 

o 

cu 

CO 

cu 

CO 

d 

cu 

CU 

3 

d 

d 

d 

d 

— 

cu 

CU 

— 

CU 

a 

U A 


CO 

cu 

cu 

cu 

— 

o 

3 

3 

3 3 3 

3 

3 

3 

3 

3 

CO 

3 

3 3 

GO 


yj 

d 

X 


d 

cu 

d 

o 

r- 

X 

d 

r- 

X 

cu 

CU 

CU 

cu 

cu 

3 

3 

3 






















CO 


yj 

-o 

CO 


yj 

yj 

cu 

3 

cu 

yj 

yj 

d 









o 

o 

to 

vO 

o 

3 

X 

— 

<T 

r- 

d 

a 

o 

CO 

nO 

O' 

3 

X 

CU 

yj oo 

a 


cu 




CU 









A 

O 

3 

X 

CU 

yj 

X 

a 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

o 

o 

o 

o 

O 

o 




X 

cu 

d) 

d 

X 

CO 

A 

d 

X 

cu 

vO 

d 

X 

CU 

yj 

A 

yj 

yj 

nO 

A 

A 

sO 

cu 

cu 

cu 

a; 

cu 

cu 

cu 

cu 

cu 

ru 

cu 

cu 

CO 

to 

CO 

CO 

co 

co 

CO 

co co 

CO 


CO 

cu 

0 J 

cu 

CO 

3 

3 

3 

d 

d 

d 

d 

yj 

3 

3 

3 

3 

3 

3 

3 

3 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

O 

o 

o 

o 

o o 

o 

CO 


CO 

ro 

CO 

o 

3 

3 

3 

3 

3 

3 

3 

3 

O 

C 

O 

o 

O 

C 

O 

o 






















o 


o 

o 

o 


O 

C 

C 

O 

O 

C 

C 

o 










May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 19 


217 
















d 

x 

3D 


3 

A 

<E 

x 

o x 

X 9 3 

o — 

id X X 

3 

UJ o o 

I o o id 

3 r- r- O 


X - 

X ♦ z 

A - - ZD 

Z O O' z 

_J - - x I <t 


q H *-• —• <1 p 1 < p* 

!- X dZOLZdWdX 

3d '3d3^C)d*d 


Z 

ZD 

2 

X 























d 

q 

X 

















Q 








l— 























z 

3 




Z 





Z 








X 

r- 


Z 





z 

















o 

d 





o 





O 



X 


O 








d 

Z 


O 





G3 


















X 






X 







3 










•-H 

X 







JD 

















o 






X 

H 




X 



r* 


X 








3 

•y) 


X 





X 








X 










3 





3 



X 


3 



q 


3 


X 






3 

X 

e- 

3 





d 

z 












X 





<t 





r* 



3 


p-* 



Z 


r* 


X 


A 




X 

d 

>—• 

e- 





X 













3 


Q O 

X 

d 








r-* 









0 


Z 




d 

X 


*-< 






<r 






d 








X 


X 

<t 





9 

Z 

X 

<1 



z 


O 


■» 

z 


z 

O 






id 


z 

d 



(—• 

X 

d 













X 


o 

X 





A 

d 

3 

£ 

f— 

A 

x 


z 

f* 

A 

d 

X 

d 

•—« 


X 

Z 

z 

X 

3 

A 

X 

X 


d 

0 

X 

X 







p.. 








X 







3 

r* 


•—< 


3 



•—< 


3 

3 

3 

t-* 

X 

d 

O 

0 

X 

X 


X 

r* 


<1 

z 

£ 

t— 













3 


X 






H 



3 

3 

t-* 

t-* 


3 

3 

r* 

r— 


H 

•—< 

x 0 

X 


CQ 

X 

H 

r* 

Z 


X 


O 

z 














X 







X 

X 

3 

3 

3 

X 

X 


:* 

3 

X 

X 

*-< 

X 

Q 

0 

z 

0 

r- 

<1 

3 

X 

X 



3 

z 

3 














X 

d 


i/J 





3 

d 

A 

O 


A 

d 


0 


3 

d 


d 

Z 3 


3 

3 



to 

X 

O 

X 


U) 


0 




X 


q 







d 

o 

d 

«t 







1 

X 

Z 




X 

Z 



c/> 


O 


d 


<C 

d 

z 



X 

3 H 

d 

Z 

a. 




X 

X 









X 

<r 

X 





X 

Q 

Z 

A 

X 

X 

Q 


A 

X 

X 

Q 


Q 

3 

X 

0 

X 


< 

X 

X 

Q 


•—• 

X 

<t 

X 








d 

X 



X 



X 

X 


>- 


Z 


A 

Z 

>• 


X 

A 

Z 



X 

3 

z 

r- 

Z 


0 


d 0 

3 

X 

to 

z 

d 

* 

3 

a. 

X 

X 







CD 

d 

A 




o 

a 

3 

H 





X 

2 



1- 

X 

<1 



r* 

X 

q 

X 

< 

X 


—* 

0 

z 


H 

X 

<r 

3 

r- 



!-• 

£ 

3 


X 

X 


X 

X 

o 




z 




X 

X 


X 


X 


X 



X 





X 


A 


X 

d 


X 


X 







X 


X 



3 



A 

3 


O 


* 

o 


X 

H 

3 



















X 

X 


X 

X 





a 





X 



















































X 







r-* 


3 

o 

q 

X 

<t 





















X 

3 













X 








_ 

X 

Z 

3 


3 

X 




















d 

<E 

X 

d 

X 












A 







Q 

3 

o 


o 






















<r 


<r 

<t 

X 



















Z 

O 

X 

X 

z 

ll 

X 




















3 

A 

3 

X 

0 



















o 

3 

<1 

o 



o 























3 




















3 




X 

q 





















3 

A 

X 


3 











Q 









X 

X 

d 



X 




















•—> 

X 

■— 1 

r- 

<t 



















Z O 

3 

X 


X 

a 




















d 

X 


A 

X 











q 







CO 




3 

O A 

Q 

X 




















f* 

z 

<Z 

X 









s 



X 

X 





+ 

X 

3 

i—« 

C 

o 

X 

q 

3 



















2 

z 

0 

X 










X 


X 

3 

X 





z 

O 

Z 

'* 


o 

X 


X 


id 


id 





H 





H 





X 


•— 1 


0 


id 







X 


X 


A 








A 




n 

r* 

■ 

X 

• 

X 



A 


z 



A 


Z 





z 

d 

t- 

II 

d 

• 

X 





£ 

• 

3 



q 








5 






X 

>- 

3 

z 

3 



Z 


0 



Z 


O 






<r 

3 


X 


3 





•« 


<r 



3 

X 

<E 


X 

<Z 

3 


o 

q 

X 



X 

3 


>- 


z 

q 


>• 

<t 

X 

X 


>- 

q 

X 

X 


<t 


d 

X 

3 

<t 

NJ 

• 

3 

X 


X 

X 

< 

• 

X 

X 

3 








d 

3 


X 

q 


X 




















0 















z 

Z 







o 

X 

3 
























X 

z 

X 


•• 












o 








o 

<i 





X 





















X 


^0 














<T. 


X 

d 



X 



-0 



X 

•—< 


_ < 


<t 

H 

<1 

<X 


q 

e- 

< 

q 

NJ 

<1 

H 

<r 

t— 

X 



•• 

z 

<—> 


< 

t— 

X 

X 

3 


NJ 

X 


Q 

3 






X 


H 

.. 

z 



< 


NJ 

X 

NJ 

d 

X 

3 

X 

NJ 

d 

X 

u 

X 

z 

d 

X 

d 

X 

3 

X 

A 

d 

d 

X 

NJ 

X 

X 

3 

3 O 

X 

z 

z 


X 

X 

O 

d 


3 

3 

3 

z 

CD 

X 

d 



3 3 

3 3 

3 o d 

X 

0 

3 O 

d 

X 

0 

3 

0 

d 

X 

d 

X 

X 

X 

X 

3 

3 

3 

0 

d 

u 

Q 

£ 

3 

3 

•—1 


A 







X 


q 

X 

3 






















X 

X 

A 

r- 

r- 












<t 







X 

3 

























3 

<t 

3 

Z 

X 

•• 










X 

33 







3 

z 


z 

X 



•• 





















<1 

X 

d 

id 



















q 


X 

d 



d 




















X 

3 




























X 







X 





id 








<r 




3 




id 





















3 







X 





X 





Z 



3 




d 




X 





















Z 







3 





3 





O 







c 




3 








A 






. .. 





,, 

•% < 

i* >* 







>- 





Z 





X 


% •% 


•• 


•« • 

» 3 




3 







— q 

o o 

X o <t x 

q 3 n h 

CU O' WCOUJ<tCOU.O 

no XXXXCQ 3 q 3 

q a x o — n vo ^ to o' 

'O X sO>r^(^r-xr-r- 

q q qqqqqqqq 

oo cooooooo 





q 

i— 


q 

q 





q 




q 






q 







q 

0 



0 

0 


0 

0 



0 


0 


O 


0 






0 







0 

NO 



Q 

q 

0 

CO X 

3 



m 


A 


X 


in 





O' 

X 






X 

X 

■q - 




co 

in 

0 q 

O' 



q 


<r 


q 


<t 





cu 

q 






OJ 

3 

<t r- 

co 

CO 

Q co 

Q 

X 

<t X 

<t 

t- 

O' 

<r 

r^ 

<t 

q 

0 <n 


0 J 

q 

O' 

X 

O' 

X 

q 

q 

O' 

X 

X 

X 

X 

x co 

co x 

3 

CVl 

<0 3 

3 

X 

3 X 

3 

CQ 

3 

CO 

X 

3 

X 

3 co 

X 

3 

X 

3 

<t 

3 

X 

3 

X 

3 

CVJ 

OJ 

r- 

X 

3 CVJ 

<1 Q 

X 

X 

O — 

q 

!- 

O' 3 

X 

_ 

C\l 

CO 

NO 

r~ 

<t 

X 3 

X 

0 

CO 

q 

in 

vO 

r- 

O' 

3 

Q 

X 

X 

0 


to VO 


r- 

r~ 

CO CO 

CO 

CO 

C 0 Q 0 

CO 

O' 

O' 

O' 

O' 

O' 

O' 

O' O' 

O' 

<r 

<t 

<x 

q 

< 

q 

q 

q 

q 

q 

q 

X 

X 

X X 

’•q - <r 

q 


q q 

q 

q 

q q 

q 

q 

q 

q 

q 

q 

q 

q q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q q 

0 0 

0 

0 

c 0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 c 




V 




3 














0 



0 






5 





0 



0 














3 

O 






d 








3 

X 


3 






O 





z 

X 


z 


• 




t— 





r* 










q 




—• 





z 



X 





3 






Z 



X 

A 




3 d 


X 






6 

—. 





Z 

X 




X 




X 



X 

id 










X 



X 

id 

O 




X 


id 



X 



-t 

Z 






3 




X 

r* 



z 

3 


z 

A 

r-» 




X 





z 

3 


z 

A 

z 



p"* 

Z X 


A 



y) 




O 

3 




3 





r* 

X 






— 

z 

Z 




Z 





■—< 




z 




z 

3 


Z 



X 



3 

3 

Z 


d 

z 

r-. 

r-» 





X 



3 

5 


3 

3 

3 




— 





3 

d 


3 

3 

z 



3 

3 


3 



d 



0 


3 


q 

q 

X 

n 




X 

f* 




X 




C 




3 






X 




3 




d z 




z 

X 

z 



3 

O 

z 

X 

3 

£ 

d 




d 


d 


d 

X 


d 

O 

3 






Q 



d 

X 


d 

O 




z 

X 


O 


d 



X 

—« 

<—< 

X 

d 

3 

/) 




—• 


0 

r 

q 


0 

r~* 


c 

r - * 





X 


Z 



0 

r-« 


c 


d 



3 

H •-« 


r-* 


0 

X 

£3 

Q 

z 

X 


3 



z 

X 

d 

X 


X 


X 


X 

O 


X 


X 


d 

X 

3 


X 



X 

O 


X 


0 


d 


X •-* 

r* 




J 

(-• 

O 

0 


3 

—. 

—* 

z 

X 


X 

X 

y) 

X 


3 



Z 




z 


q 

3 

a 






z 




X 


q 

d 

q 3 

—* 

q 

0 

X 

X 

X 

3 

3 

3 

O 

ix 

A 


X 

d 


r— 

a 

3 

3 


X 

d 

q 

X 

id 


•—« 


X 




X 


d 

id 

q 

d 

id 




X 

0 

y) 

3 


0 

£ 

q 






£ 

£ 

X 

r-« 

3 

z 


X 


O 


3 

3 


3 

3 

3 

3 


3 

•>- 

y> 


z 

d 

3 

3 


3 

3 

3 

id 


3 


d q 

3 

3 

0 




X 

X 

X 

t—t 


—t 

— • 


3 


>* 

X 

X 

d d 

X 



id 



3 


d 


z 

y) 

H 


q 



id 



3 

0 

d 


X 

q 


3 

n 

z 

d 

z 

O 

X 

n 

Z 

z 

X 

3 


q 

0 

q 

X 


X 3 

X 

r-» 

z 

3 


Z 

q 

d 

3 

r-* 

q 

0 


3 

X 

H> 

z 

3 

r-» 

z 

q 

0 

3 

r~* 

3 

x 

Z 

q 

<1 

X 

q 



r-. 


O 

X 


q 

X 


X 

3 


d 


z 

O 

X 


O 

X 


0 


X 


X 



3 

O 

X 


O 

X 


3 


n; 


3 0 

X 



X 

3 


£ 


3 

3 

X 

d 


0 

X 


X 

X 

. A 

d d 


Z 

X 

X 

Z 

X 

X 

X 

d 

X 

X 


d 

d 


Z 

X 

X 

Z 

X 

X 


d 

X 

X 

z 

X 

X 




—• 

3 

c- 

3 



3 

>* 


A 

r* 

A 

z 

A 

3 3 

—• 


f— 

y) 



y> 


3 

z 

•— 

p - * 

3 

3 

1—• 


r» 

A 


f* 

A 


3 

z 

•—« 

r-* 

r* 

A 



X 


3 

X 

q 

X 


3 

d 

X 

3 

X 



d 0 

3 3 

X 

X 


3 

X 


3 

d 

3 


id 

X 

X 

3 

X 

X 


3 

X 


A 

0 

3 


id 

X x 


3 





q 

3 

3 

— 


q 

r-* 

—• 

X 

A 

3 

3 

X - 

q q 

3 

-* 


a 

— 


X 

3 

q 


A 

3 

3 

q 

3 

—• 


X 




z 

q 


VD 

3 —• 


X 


X 

X 


_J X 
■> x U 




3 


q 

3 

£ 



q 

q 

q 



d 


n 

r— 

3 



•y) 

3 

yj 



q 


3 

X 

r-* 



3 

yj 

3 

q 


:> 


3 

3 

3 



3 

q 

3 



3 


3 

3 

3 



3 

3 

3 

q 


3 


3 

3 

3 


NJ 

3 

3 

3 

d 

NJ 

q 

NJ 

X 

q 

q 

X 

z 

X 

q nj 

X 

0 

d 

3 

d 

3 

3 

3 

3 

d 

3 

3 d 

3 


Z> ~> 

<r 

-o X 


X q X 
A OX 


X 

q 


x 

x z co 

o 3d 

z q 

X X 
UU1U 

z z 

X —* X 
A X O 
X 

d d • 

X o o 

z 

d * 

O Vio 
X x —• 
z 

s d ZD X 
3 O DC 
X 3 3 
X Z 

3 X X 

Z 

t— ~ 3 

^ X r- d 

X X 3 

t- 3 r- 


z 





z 





X 


X 

3 

z 
















X 


X 

O 

z 




3 




U 

3 




u 

X 


X 3 

J 


z 







z 


z 




Z 

X 


X 

X 

3 


z 




z 

X 

3 



E X 

3 

A 


A 

X 



X 

£ 

O 



s 

X 

J 


J £ 

s 

X 

J 

A 


y) 

X 

r* 


J 

£ 

z 


% 

q 

id 

z 


* 

q 

id 

Z 


z 


z 


X 

% 

* 



% 

3 

X 


X 

* 

% 

3 

X 

z 


z 

* 

z 


X 


3 

X 

q 

3 

3 

3 

X 

q 

0 

3 

3 


3 

X 

3 

X 

n 

X 

D 

D 

3 

q 

O 

3 

X 

A 

X 3 

D 

A 

0 

3 

3 


3 

X 

3 

X 

A 

q 

3 





3 

X 








3 


3 









3 









3 


3 


3 

X 

> 

•—< 

NJ 

3 

3 

•—< 

NJ 

q 

»-• 

q 

•—< 

3 X 

3 

■> 

■— « 

X 

3 

3 

—t 

NJ 

X 

3 

3 X 

3 3 

•—1 

NJ 

q 

•—< 

q 

>—• 

_j 

X 

3 

> 

q 

z 

0 

X 

z 

q 

z 

0 

X 

z 

3 

3 

— « 

X 

q 

z 

q 

0 


3 

q 

0 

X 

Z 

z 

q 

0 3 

q 0 

X 

Z 

3 

3 

r-* 

X 

q 

z 

q 

0 

3 

•— 


3 

3 

3 


>r 

3 

3 

3 

q 

A 

3 

3 


3 

£ 

V 

3 

3 

£ 

3 

3 


3 

S.3 

Q s 

3 

3 

3 

q 

A 

X 

3 

p-* 

3 

z 


X 

d 

7) 

z 

X <T 


3 55 O d X <X 


X 

id 


Z 

X 




q 


— 

r- 

q 



— 

— 


— 

— 

X 


0 





q 





q 

— 



0 

r*- 


q 







q 


q 






q 




0 



q 


q 






0 


O 

O 

0 



3 

O 


0 

0 

0 


— 

0 




CD 

0 




0 

0 


0 


3 


0 







0 


0 






3 

0 


0 


3 


0 


0 


0 




r- 


0J 

— 

c 

—• 


CU 

y) 


0J 

q 

O' 


0 

3 



q 

3 

3 



q 

3 

UD 


vO 

O 

3 


q 


0 




3 

vO 


q 





3 

vO 

X 


X 

M 

3 


q 


X 


X 

q 



q 


CO 


X 

0 


X 

—• 


CJ 




0 

O' 



0 

CU 

O' 



0 

cu 

q 

0 

q 

O 

O' 


r- 


3 




O 

3 







0 

3 

q 

0 

q 

O 

O' 


r~ 


X 


q 

0 

r- 

co 

3 

X 

q 

3 

3 

X 

0 

q 

3 

X 

q 

cu 

3 

O' 

—• 

3 

CO 

X 

X 

CU 

3 

CO 

X 

X 

cu 

q 

X 

cu 


3 

CO 

3 

X 

vO 

CQ 

O' 

X 

X 

cu 

3 

3 

X 

CQ 

O' 

X 

X 

a' 

q 

X 

cu 


3 

3 

3 

X 

3 

0 

q 

X 

X 

3 

3 

'3 

CJ 


0 

J ~ 

3 

co 

3 

'3 

cu 

CJ 

3 

3 

cu 

3 

CU 

c— 

-*• 

3 

3 

cu 

r-> 

X 

3 

.0 

3 

CO 

CU 

3 

cu 

'3 

y> 

— 




X 

’3 

cu 

3 

3 


— 


X 

3 

3 

3 

3 

CU 

3 

cu 

3 

r— 

3 

3 

3 

3 

( <s 

3 

3 

X 

0 

po 

X 

O' 

3 

3 

X 

CO 

0 

0 

O' 

3 

3 

C 

CO 

q 

A 

r- 

q 

3 

X 

X 

— 

q 

r- 

O' 

3 

X 

cu 

-O 

x 


O' 

q 

03 

3 

X 


CU 

3 

vO 

f* 

X 

O' 


X 


3 

X 

O' 

3 

3 

O 


q 

3 

X 

X 

X 

X 

X 

JU 

X 

X 

-u 

X 


j. 

O 

0 

0 

O 

0 

0 

— 

—• 


—■ 


—> 

—• 

— 

— 

CU 

cu 

cu 

cu 

CU 

CU 

3 

•O 

.0 

3 

3 

3 

3 

3 

3 

q 

q 

q 

q 

q 

q 

q 

q 

q 

3 

3 

3 

3 

3 

3 

X 

X 

XXX 

(O 

CO 

ro 

(O 

-O 

0 

X 

-0 

O 

O 

O 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 


q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

O 

O 

O 


C 

0 


0 


O 

O 

0 

c 

3 

0 

0 

c 

0 

0 

0 

0 

c 

0 

0 

0 

0 

0 

0 

0 

0 

0 

3 

0 

3 

0 

0 

0 

0 

0 

0 

3 

0 

0 

0 

0 

3 0 

0 

3 

0 

0 

0 

0 

0 

0 


3 

0 

0 

0 



Page 20 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 May 1977 


218 



















<c x 


X UJ 


CJ 2 


i- O 


A r- 

X 

•—i 

a 

a x 2 x 

Q 

UJ X 3 r- 

<1 

r- X 3 - 


X A 
CJ — 
2 X 

H 
Q X 
2 X 
<1 2 


x d r- i 
X <t X X >. 

2 2 £ -o x 

X r - * 

t- >3 2 £ 

X Z X 3 
OUIW2 
p-* 3 <n 

b d 


n 

p 

*: 


UJ 

x 

Q 

2 

<t 



Q 







X 





CJ 


— 





O 


X 





X 


X 





X 

s 

cj 






< 

CJ 


E 



f. 

x 

< 


3 



•/) 

o 



X 

j* 


_4 

o 

■VI 


o 

2 

E 

X 

V* 

X 

H 

o 


3 

X 

X 

<t 

X 

X 

o 

X 



X 

X 

X 

o 

o 

H 

3 

o 

r* 


X 

o 

X 

X 



>- 

T. 

X 

X 

2 

A 


<x 


a. 

X 


t— 

X 

X 

H 


X 

Q 


3 

X 

2 

X 

X 

<C 

E 

<1 

A 


3 


O 


X 

«—< 

X 

<t 

2 

X 

J 

X 

3 

X 

l/) 



•*» 


•4 

•1 


•% 











o 







X 



















CJ 

X 


X 


X 


Q 


X 


X 

X 


X 


X 









X 


a 


Q 


Q 


O 


3 


Q 

3 


Q 


3 









cj 

X 

o 


o 


O 


* 


O 


O 

O 


O 


O 









E 

o 

•* 


% 


% 


• 


A 



«t 









S 




r-» 


» 

X 

• 

X 

• 

X 

CJ 


• 

X 

• 

X - 

X 

• 

X 

• 





* 




A 

1 

r» 

O 

< 

o 

S 

o 

E 

CJ 


O 

X 

O CJ 

O 

3 

o 

X 


X 

X 

X 

< 




X 

H 

* 

H 

■ 

q 

* 

V 

• 

E 

• 

“D 

• 

X - 

CJ 

" 

3 

* 










A 

















CJ 







cj 


t—t 

















X 

X 

X 

X 

3 

>—< 


X 

X 

X 

















cj 

2 

2 

2 

O 

X 

N] 

cj 



a 

3 

X 

3 

X 

3 

X 

3 

X 

3 

X 

3 X 

3 

X 

3 

X 

X 


-- 


E 

cj 

X 

X 

*5 

X 

3 

a 

a 

a 

3 

a 

3 

3 

3 

3 

3 

Q Q 

3 

3 

3 

3 


X 

Q 


2 

O 

CJ 


-1 

b 


UJ 

x 

o 















2 



















A 



















X 



















3 



















O 







X 





X 







CJ 






X 

3 

X 




3 

X 




X 








3 

O 

3 




O 

3 

X 

X 


3 


i-i 

X 


x 


X 

O 

•> 

O 


X 


% 

O 

3 

3 


O 


o 

3 


3 


3 

* 

• 

* 


3 


• 

% 

O 

O 


•> 


3 

O 


O 


O 

• 


• 


O 


r-> 

• 

* 

% 


• 




X 




3 

< 



% 


2 

X 

■ 

• 


t- 


X 

• 

■A 


X 

_ 

< 

E 

X 3 


- 

CJ 

•—< 


X 

X 

H 

>—■ 



<1 

X 

X 

x 


O 

3 2 

<E X 

2 

X 

X 

X 

C3 <t 

o X 

X > 


3 

f* 

H 

CJ 

3 

CJ 

_] 

u 

3 

<t — 

E 2 

3 

3 

X 

X 

X A 

X ~ 

X 3 

X 

X 

M 

2 


o 


o 


■ 

O - 

2 - 

X 

• 

3 

• 

X • 

x - 

—t • 

X 

• 

3 — 








3 

-* 

2 




3 

A 




X 

O 







X 
-* Q 
Q 


m 

* Q 
Q 


x 3 m 
3 3 3 3 
Q 


X 
3 Q 
Q 


X 3 CQ 3 

* 3 3 3 3 

Q 


X 

* Q 

Q 


<C 

r- X 3 CD 3 X 
<33333 
Q 

2 

O 

2 

6 

CJ 






























<T 











X 



m 


3 


3 





























•3- 



<T 



CVJ 





<x 



>r 


o 


o 








•cr 






3 


















3 



r- 



3 


O' 



'O 


O 


3 








o 






O 





















in 



o 


<T 



n 


A 


■q 1 





*■* 



CJ 

3 

3 

3 

O' 

3 <t 

co 

<t 

3 

in 3 

3 

3 

3 

3 v0 

3 3 

3 

3 

3 

3 

X 


3 X 


A 

in 


3 

o 

3 

CVJ 


3 


3 A 

A 

O' 





o 



X 

o 

O 

o 

o 

o o 

<r 

o 

o 

o 

O 

O 

O 

O 

O 

o 

o o 

O 

o 

O 

O 


O 

<X 

3 

O 

■cj 


O 

in 

o 

in 

3 

o 


o 

<T 

O 

3 

CQ 

CO 

co co 

X 

X 

CO 

3 

co 

>r 

O' 


3 

3 vO 

3 

X 

<c 

3 

CVJ 

3 

ro 

O' 

n 

3 

in cj 

O' 

O' 

X 

O' 

CJ 



O' 

O 

O' 

X 


X 

<r 

<t 

o 

o 

<r 

3 

•3’ 

O' 

CJ CVl 

X 

CVJ 

CVJ CVJ 

r- 

X 

CJ 

X 

CJ 

in 



in 

■=7 CVJ 

■q- 


■T 

CJ 

in 

3 


o 

A 

O 

<r 3 

in 

r*» 

•T 

r- 


3 

X 

<T 

3 

3 

<r 

3 

X 

<T 


in 

<T 

3 

in 

3 O' 


r- 

•q- 

in 

VO 

r> co 

O' 

<r 

o 

3 

X 

- 

co 

n 

r- 

O' 3 

3 

o 

CVJ 

<T 

3 

3 

<t 

CJ 

X 

o 

CVJ 

'O 

3 

<C 

CJ 

X 

O 

3 

A 

A 

3 

3 

o 

CVJ 



O' 

in 

X 


O 

3 

3 

CJ 

X 

o 

o 

o o 

o 

o 

o 

O 

o 







CVJ 

CVJ 

CVJ 

CVJ 

0J 

CVJ 

CVJ 

CVJ 

CO 

co 3 

3 

3 

3 

3 

3 

3 


<7 

O' 

<T 

<T 


in 

in 

n 

A 

3 

in 

vO 

in 3 

3 

3 

3 

in 

A 

in in 

in 

in 

in 

in 

in 

in 

in 

in 

in 

in n 

in 

in 

in 

A 

A 

in 

n 

A 

in 

in 

A A 

A 

A 

A 

A 

n 

•7 

in 

A 

<T 

A 

A 

3 

3 

in 

in 

A 

in 

in 

A 

3 A 

A 

in 

3 

o 

O 

o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o o c o 

o 

O 

O 

o 

o 

O 

o 

o 

o o 

o 

O 

O 

O 

c 

A 

o 

O 

A 

O 

O 

in 

o o 

o 

O 

A 

o 

O 

A O 

O 

o 

o 




X 








X 








3 


3 


X 

3 
































2 


X 


3 
















A 



z 





X 








O 


2 


<t 



X 













< 



o 















C 





CJ 











3 


> 








X 

* 






2 

r-« 


3 


r* 



<t 

CJ 















X 





< 

X 






*-• 

<1 


7-* 


3 




<r 










Z 

2 

r-* 



o 


X 



> 

r— 






<t 

X 


X 


•—< 



3 





- 







•— 1 

< 



r» 


X 




3 


o 




CJ 

X 


X 


X 




3 











« <t 




*—» 


o 


X 

X 

•—i 



z 


Z 

< 

X 




3 


2 

2 



3 









w j 





Z 


z 

2 

5 

3 







o 




X -X 

3 

X 

O 


3 


X 



3 




<r 

X X 

2 



3 

X 

X 

X 

*-• 


X 



3 3 


3 

X 



o 


o o 


3 












X X 

t: e 

*— 1 




D 

o 

3 

X 

z 

X 

X 

<t 

2 r- 



o 

A 




X * 

3 

—. 

2 











O 3 

<t o 

O 

< 

3 

r-* 

r- 


r-» 




E 


X X 


X 

o 

o 


2 



O 

X 


X 

3 








n 


E U 

X 

> 

a> 

X 

X 

•—* 

X 

X 

X 

3 

<J. 

Z 

X 

X 

X 

X 

X 


X 


2 X 


X 

3 

3 










X i— 





3 

X 3 

X 

X 

X 


2 

X 

r* 

u 



r« 


X 


o o 




3 









. 

■> — 

3 2 

X 

r* 

2 



3 


t- 

3 

Z 



3 2 


z 

X 

2 


r* 

3 

CJ X 



X 










r 

< 

z x 

3 

X 

X 

X 

3 


3 


<t 



r* 

— X 


X 

3 

O 



X 


O 

ui 

c 












X X 

H 

CJ 

X 

3 


r* 

2 

* 



X 


X X 

E 

X 

X 

CJ 



O 

X x: 

2 

X 



3 






“ 



o 

t- 



r* 

X 

<t 

X 

<* 

o 

£ 

£ 

X 

f' 

c~* 


t-* 

X 


3 

r-> 


3 O 


H 

t-* 


3 X 


X 


2 





o 

X 




X 


3 


X 

<t 




X 

X 



CJ 

c 

3 


O 

X 


3 

<t 










X 



•A 



,n 



3 

z> 

X 

CJ 


X 





X 

o 

3 

X 

t-* 

X 

X 



X 

CJ 

\ 

3 O 


z 



CJ 



d 


x 

o x 


3 2 


E 

2 
X — 
o 


UJ 

CJ X 2 2 
UJ O —i 

X X x 

•/) r-* r* O 
















CJ 


o 

X 

3 

2 









co 

3 

4. 

c 

2 

r— 





















3 


o 

X 

3 










♦ 

X CJ 


X 

H 







X 













E 


X 

3 

<1 

X 

X 








X 

3 

•• 

3 

<z 

3 

X 






o 












CO 

CL 

X 


< 


<1 

<t 








CJ 

C 

• 

X 


X 

o 






E 


X 




X 





<t 

♦ 

X 

o 

1 

»—< 

II 

3 

■> 








E 

CJ 

3 

o 

3 

H 

E 





E 

X 


3 


E 


X 





3 

X 

X 

X 


X 



2 

s 







£ 


X 

3 


O 

u> 






<E 


<1 




o 





X 

o 

% 

X 

X 

<r 

X 

X 

A 

% 







<c 

1 

O 


•• 


3 





X 

> 


CQ 

X 

<t 

o 

J> 

X 


< 


X 

H 

X 

X 

CJ 

■> 

X 


X 

< 

— 


X 


X 

X 

> 

X 

3 

X 

X 

3 

X 

^4 



X 

















H 













CJ 

• 


X 























< 


•• 











— 











X 











3 

X 


X 

E 


3 











<t 


•• 



3 



3 


3 

X 

*—• 


X 


•—> 


<E 

i—• 

<t 

t-* 

X 

X 

•—I 

X H 


•• 

2 



z> 

►—1 


X 


X 

X 

X 

2 


3 


>_• 

3 



X 

X 

o 

<E 

X 

X 

z 

o 

X 

s 

X 

X 

X 

X 

X 

<t 

X 

< X 

X 

X 

X 


X 

o 

X 

M 

E 

NJ 

2 

z 

E 


.. 

2 


X 

<1 

3 

NJ 

o 

2 


U 

3 

3 


s 

CJ 

3 

O 

X X 

X 

X 

CJ 

X 

O X 

X 

X 

3 


X 

s 

3 

X 

CJ 

X 



3 

X 

X 

X 


X 

O 

CJ 

X 

X 


















3 


r-* 











o 

X 

3 




















•• 




<1 

2 

X 


•• 










1— 

r-* 


•• 







X r- UJ O 
O X X 2 
3 Q - 

X X X 
X c O O r- 

0 3 O 

X X "Z 

O. n Q Q 

3 3 3 

< <C X 


X 

O Q 
O X 
X o 


II II 3 


i < C-* 

i x uj 


x 

x 

o 


5 

x 
p 
< 
. X 


- X 
X 
<t 
> 


X 

o 

Z 

X 

<r 


r- 2 UJ 
2 J X 


X 

H 

C_) 


Q 

X 

O X 

3 X 



3 

XXX 

X 

U 

<£ X 

1 

* 

3 3 « 




X 


.. 


3 


o 


3 

>—• 

3 

<X NJ X 

—• 

•• 

2 

X 

<r 

X 2 2 

<t 

X 

X 

3 

CJ 

OX — 

E 

X 

3 





r-* 

H 




t-» 

2 

X 

X 



3 

X 

X 

CJ 



•—< 



s 



3 








,, . 

3 

i 3 





q 


q 



q 




— 

3 

X 

3 

CVJ 








q 

n 


o 


o 



o 




o 

o 

o 

o 

o 








o 

o 


co 


3 



— O 




CVJ 

CJ 

3 

X 

3 








3 



3 

o 

CJ 



O CJ 




CVJ 

r^ 

o 

3 

A 


o 






3 


lO 

3 

X 

< 

CO 

X 

X <C 

q 

O' X 

O' 

<t 

3 


3 O' 

—• 

X 

X 

3 

3 

3 

CO 

CO 

co 


•q- 

CJ 

X 

CJ 

CVJ 

r** 

X X 

3 

CJ <1 

CJ 

CVJ 

CJ 

CVJ 

CJ CJ 

CVJ 

r- 

X 

CJ 

3 

CJ 

CVJ 

CVJ 

O 

— 

I s * 

CO 

3 

3 

o 

« 

cvj q 

r- 

3 O' 

<z 

3 

X 


q t- 

3 

3 

CJ 

X 

X 

o 


CVJ 

co 

3 

X 

3 

3 

3 

CJ 

CJ 

CJ CJ 

CJ 

CJ CJ 

3 

CJ 

CJ 

3 

3 3 

3 

3 

3 

3 

3 

X 

X 

X 

X 

X 

■q 

q 

q 

q 

q 

q 

q q 

q 

q q 

q 

q 

q 

q 

q q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

q 

o 

o 

o 

o 

o 

o 

o o 

o 

o o 

o 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


o o 

cj - < 

x o x 

d'jJcCUD-JIUJn^i/KMi.O' 

OU,UJC\l«Qift(M'/lQU^U 

0'Cjxxc — qin3r~30'<:u 
XXXXXXXXXXXXXX 
qqqqqqqqqqq<<<r 
ooooooooooccoo 


CVJ 3 

o o 
X X 
X x 

~ 3 I s - o co 

CVJ CJ 3 CJ CVJ 

cj x cvj co q 

x x o o o 

q q in in in 

o o o o o 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 21 


219 













o 

x 

a 











<t 












\J X 













a 







X 





a 


X 











X 


a 





a 





- X 


a 

1 










<t 


2 



2 




X 



O r» 


a 

CD 






a 

a 





0 



O 

a 

2 


c 



2 O 

X 

a 

a 



2 



X 

jj 



2 


0 

2 



a 

•—< 


X 



2 

a 

a 

0 



O 

X 


0 

0 



<c 


a 



r-* 

a 

0 


0 



r- <Z 

a 

a 

X 



•—1 

<t 


3 

3 


a 

0 



<t 


1-4 

< 

X 




r-* 

2 

a 


t~* 



/) 

X 




a 

X 

yj 


t— 

a 

2 

A 2 

a 



a 


2 

0 a 

0 

a 




-0 

0 


a 

a 

0 

0 


H 

0 

X 

X 

O <t 


2 


2 


O 

0 x 

a 

0 

A 



a 



■> 

* z> 

2 

3 

a 

•—1 

2 

2 

O 

X 0 

a 

X 


0 


O 

CJ 0 



a <r 



rj 

f* 


0 

0 



0 



0 

H 

yj 

X 

0 



X 

CJ 

r* 

a 

2 

a 

a 


X 

yj 


2 

Q 2 

p- 

h> 


X 

a 

0 

a 

2 

r* 

r - * 


a 

a 


a a 

0 

0 

r-* 

a 


X 

X 



a 

2 

X 

t-« 

O 

a 


X 

< »- 


a 


X 

a 

X 

•—« 


t—• 

+ a 

a 


a 

•—1 


2 

<t 2 

0 

a 

X 

a 

a 

2 


CJ X 

* 

x 

a 

0 

< 

0 

2 

X 

r* 

A 




JL. 


3 

a 

CJ 

2 

<c 


<t 

a 

Q 

A <Z 

O 



r-» 


a 

a 

0 

O 


a 


X 


# 

X 

a x 



r- 

X 

a 

X 

2 

r* 

X 

a 

x 

A 

X 

a 

X 

r-* 

a 

x -0 


a 

a 

—• 


C-* 

A ►- 

a 

r-* 

A 

0 


H 

<£ 

3 /> 

•yj 


<r 


v 


<r> 

II 

11 

CD 

2 

CD 

a 

a 

a 


1 

2 

a 


0 

a 



a a 


<1 

X 


O 



a 

a 

A <X 

0 

<E 

<E 

CD 

— 


a 

<t 

CD 


a 

•— 



2 x 


A 

0 


a 



a 

X 

a a 


A Ui 

W X 
x x 

X O 
UJ 

H 

U] II UJ 
X -0 

< 3 UJ 

z <z c 

A 

a a J 

UJ X X 

I 

<t 

_] J 1 

•• 2 : 

O X X 
r- W a 
i-» r-* 

0. Z w 
x uj x 

D 

"3 


X 

UJ 


Q a 

2>r - is ■> u ♦ Q ta J 

<E a CU*ao<iacU32iX 
vir** x - x*y>t-xr-<to 

J jj * O •> O njQOUJOO 
X a - “D<C3QX3“DC3-^J 


QJ QJJQJ Q 

J -J ~ — <t — -JJO.JJJ— X a 

I<tl'0->r-XI<lT<II<lNj\]2X 

aaaasrnaaaaaaaaax — y) 


UJ 
Q 

Q 
2 

. <£ 
X u. 

< a 
X 2 I 
X CD 

o — a 

’_) A Jj 
2 

1 Q ~ 


% 

O 

“3 


X 

O 

a 


a a 

x <e x <z uj 
a o a a x 


Q 

2 


a 

il 

a “3 


UJ 

yj 


D> X > — > N1 r- 
o 2 o a O 2 UJ 

x - x a x “3 x 


l CD 
I X « 

: a x 
1 x a 


— ■> 
D> o 
X X 


a 

X JMH 
2 <C 2 X 

— o a x 


x 

2 

<1 

a 

m 


a 

X 


X 

X 

O -0 

a 2 
£ 

a a 

/) r* 
X UJ 

s x 
a 
a 
<r 


D 


2 

UJ X 
X X 

r- II 

r-» a 

UJ x r- 
CD Ul O 
X A 2 
<t 

x a a 
x 

o u. u. 
o — — 






CD 



a 



a 


a 




2 

<s 





a 


yj 


t— 

2 


t- 

a 


a 

X 


2 

<1 

(—• 

a 


a 


X 

>* 

2 

X 

a 

a 


a 

a 


a - 

2 

CVJ 

0 


2 

x 


2 

X 

0 

a 

a 

0 

X 

a 


A 


X 

a 

CJ 

a 

A 

O 

0 

X 


a 

r* 

3 

X 

a 

.X 

> X 


a a 

<t a 

r-» 

r-* 

x - 

a x 

•x 

•—< 

X 

CJ 

a 

X 

{-• 

X 

«, 

-0 

«, 

X 

<1 0 

a 


•* a 

a 

X 

% % 

* a 

a 

X 

a 


a 

% 

2 

X — 

X 

a 

X 

a 

a a 

0 

2 x <c - 

u x 

X 

<1 

x a 

2 X <E 

a 

<t 

NJ 

<t 


<£ 


> X 
o X : 

x a 


a 

. <t 



r- 


A 


CVJ 

CVJ 


r- 

in 

r~ 


vO 


A 



^4 

CVJ 

a 

Q 

0 


0 y> 






vO 


^4 


0 




A 

'O 






O 

0 


O 


O 

0 

O 

0 

0 

0 

0 

O 


O 



O 

0 

0 

O 

0 


0 0 






c 


O 


—« 




O 

O 






<C 

CJ 

<r 

r- 

<E 

a 

0 

<c 

<T 

<t 

0 

CVJ 

Q 

04 

a 



<t 

a 

O' 

A 

a 


co a 




4-1 


a 




0 

0 



<c 

— 






—• 

CVJ 

CVJ 

a 

CU 

a 

a 


A 

a 

co 


O' 

O 

a 



CO 

CO 

<T 

a 

a 


— CJ 




O 


0 


co 


0 

CU 



OJ 

CU 






<t 

a 

a 

<c 

a 

CVJ 


< 

Q 

co 

a 

<c 

Q 

a 

0 

CO CO 

CVJ O' 

— 

a 

—• 

a 

O' 

a .0 

0 

co 

O' 

A 

a 

CU 

O' 

0: 

a 

— 

A 

0 

CO 

a 

CU 

O' 

CJ 


X 

O 

OJ 

0 

a 

CJ 

CO 

<0 

— 

CVJ 

U 

CJ 

0 

OJ 

CJ 

a 

0 

O 

OJ 

CVJ CJ 

00 

CJ 

CU 

0 

0 

CJ CJ 

r" 

CU 

r» 

Q 

<T 

CJ 

0 

CU 

a 

CU 

c 

r- 

CU 

CJ 

CJ 

CJ 

r- 

a 

a 

CJ 

a 

a 

_ 

co 

vO 

co 

a 

a 


<T 

O' 

<r 

Q 

0 

CVJ 

in 

vO 

O' <x 

a 

a 



JS» 

co a 

a 

a 

Q 


CO 

■T 

p* 

X 

a 

CJ 

a 


CU 

ro 

0 

O' 

<E 

a 

CJ 

a 

CJ 

0 

a 

Q 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a a 

a 

a 

c 

c 

b 

0 0 

0 

0 


4-a 


—4 

r-t 

~4 


— 

.-4 

CU 

CU 

CU 

CU 

CU 

OJ 

CU 

CU 

CU 

A 

in 

in 

A 

A 

A 

A 

n 

A 

A 

n 

A 

A 

in 

A 

n 

in 

in a 

in 

A 

NO 

'O 

■A 

0 A 

A 

vO 

'0 

vO 

vO 

'0 

A 

A 

A 

vO 

'0 

A 

A 

A 

•c 

vO 

A 

0 

A 

X 

O 

0 

0 

O 

O 

c 

O 

0 

O 

O 

0 

O 

O 

0 

O 

0 

0 

0 0 

c 

O 

0 

0 

O 

c c 

O 

O 

0 

O 

c 

0 

O 

O 

0 

0 

0 

O 

O 

O 

0 

c 

O 

0 

O 

0 


x 

a 

o 


x 

a 

o 


X 

a 

o 


a ■ x - a - r* 

x x x a a <t ~ 
a o a x o 3 <t 

U - a - X - 3 


3 cq 3 ro 3 x 3 
q q a a a a a 


a a 
x x 


a a a a 
x x x x 


a a a x a h 

x x X ia- 

a a a a o <r. 

D U U 'J X e 


a 

a 


x 

<r 

x 

CD C 
O CD 
S o 
X X 


CD X 
2 — 




—< 

\C 

J 




2 

n 

0 




2 


x 




•—• 

0 

—• 




CD 


2 




a 


O 




a 

yj 

CJ 



X 


tc 


CU 


a 

2 

<E 

X 

r» 


H 

c 

I 

a 



2 

CJ 

CJ 

a 

0 


•—1 

A 


V 

H 


O 


rC 

a 


X 

X 

a 

O 



a 


2 

a 


_■ 

a 

r— 

<L 


II 

2 

a 

a 


“X 



a 

n 


CJ 

a 

a 

a 


•* 

•• 

•- 








<t 







X 

< 

X 

X 

<t 

X 


a 

x 

2 


a 

I ! 

a 2 

r-* I 
2 X I 

a o < 

a x < 
a a 1 
x m : 
<t x , 
a ■ 
a 2 
o 
x h 


: a 


Q 

2 


: •> a a 
a x 
a x 

- :> a 

2 cd « Q a 

O — r- < O 

U Q <1 

a 2 2 

x cu a o o 

o 2 ~ ~ 

a x a a a x 

o • a x x <r 

2 a a a 1 x 
o - x x > <r o 

- ox 

A A 3 X >. u. X 

x Q a x ~ x 


x 

a 

a 

<r 

2 

o 


X 

<t 

X 

a 

2 Q X 


X 

a cd 

m 

x 2 

a 

2 

x 

< <c 

X 
r- U 
X X 


x xxxaaaa 
a o a x r- ■> j> 
r- BOr-Or^ 2 <CX 
a r-* 2 3 a c -0 a 


a uj 

<E 

2 >2 

X <Z r- 

a a 2 <t a 

XXX a 

x x a r- a 


a 
x a 
a a 
a <r 
x > 
a 

’ 2 r- 



X 

a 











X 



a 

M 

X 

11 

2 

X 

II 

















CO 


a 


a 











c 



2 

a 

a 



Q 








a 

x 



X 


y 




+ 


2 

a 

a 


a 



a 



CU 



2 



0 


2 

a 

a 

O 

a 

a 

X 


a 


a 

X 

a 

jr 


a 


7; 




2 

2 

*-• 

0 

a 

X 

2 

CJ 


H 



X CU 


X 



CJ 

1 


<t 



<r 

<t 

CJ 


3 


<n 

0 

r* 

D 


2 


a 




D 

2 

5 ~* 


X 

H 

<£ 

f* 


cj a 


2 

O' 

A 

C 

E 




2 

n 

11 

II 

yj 

yj 


X 

h* 


n 

3 

—• 

z 

V 



a 



2 

2 

r* 

n 

2 

* 

X 

O 

X 


2 

•> 

CO 

2 

% 

A 

* 

•t 


>- 

a 

•—< 

d 



a 

a 

a 

a 

a 


a 


a 

a 


<C 


<x 




o 

a 


<t 

1 


n 

r-* 


2 

< 


•—« 

<t 

a 

X 

2 


-X 

0 


X 

a 

<1 

X 

X 

a 

0 

a 

X 

X 

X 

a 

a 

m 

a 


a 


X 

a 

a 


.< 

0 















<t 

X 

a 























a 

n 















2 

t-* 

a 


•• 
























a 

a 

a 


a 









—« 

2 

a 


A 



Q 

a 


a 


a 


a 



a 







a 

«-• 

n 

—• 

J 

a 

a 

h* 

a 

•> 




0 

•—1 

O 

H 

a 

0 

< 

•• 

2 



a 

a 

_ 

a 

X 

a 


a 

NJ 


a 

4—4 



x 

3 

a. 

j 

a 

r-* 

X 

X 

x 

<c 

a 

<t 

O 

X 

2 

3 

0 

X 

O 

a 


u 


X 

X 



X 

< 

X 

NJ <t 

a 

X 

X 

<1 

2 

0 

<1 

X 

NJ 

NJ 


0 

2 

<c 

x 

X 

a 

y> 

X 

a 

X 

u 

2 

CJ 

a 

2 

2 

a 

2 

X 

0 


X 

a 

a 



a 

CJ 

CJ 

X CJ 

a 

n 

a 

a 

2 ) 

2 

a 

a 

a 

X 


2 

"3 

a 

X 

<c 
















X 

<t 

H 






















X 

r* 
















a 

a 

2 

a 





















a 

*yj 






•• 






•• 



X 

a 


a 

X 



.• 

















n 

f-* 







X 






CU 



<r 

2 

a 





a 

















2 

2 


•• 





< 






X 



X 

a 

0 






















a 

*—• 


X 





2 






2 



u 

2 






CJ 

















2 



a 





2 






2 



























a 


a o 
•> x 
— a 

N] 
A O 


a 





X 



— - a 

a 



2 

a 

a 

a 

> 

a 

■“ 

a 

_ 

yj 


X 

n 

c 



X 

X 

0 


a 

r-* 



£ 

0 


3 

r -4 

a 



(-• 

a 

A 

X 

X 

2 

a 

a 

X 2 r- 

2 

A 

M 

a 

2 


X 

t-* 


X 


2 

a 

<t 

a 

a 

a a 

a 

2 


-* O 

a 

a 


2 

a 

a 


a 

a 

a 


X 

A 


<x 

rC 



X 


X 

a 2 

X 

a 

X 

a 

X 

2 

a 

X 

2 

a 


a 

a 

>- 


X 

r* 

a 



a 

a 



0 



<r 

n 


<c 

2 


—4 

a 


X 

a 

•—< 


a 

<1 

<t a 



0 

a 



a 



O 


a 


<r 


a 

a 



a 

a 

yj — 



a 

-* 



a 



a 


X 



O - - 

— OOO 

o <x cvj a 

00^0 

— cu cvj a o 

CVJ CVJ OJ a a 

a a cu in co 

r» r- n x x 

n A A A JD 

OOOOO 


A 



n 



— 




p- 



r~ 



OJ 

X 

A 




<T 




in 

0 






O 



0 



0 



a 

0 



a 


O 

0 

a 

a 


a 


O 




a 

a 






<t 


O' 

A 

CO 





<t 

a 

a 


a 


<1 

x 

0 

CU 


X 






in 





0 


O' 


<T 

O' 

<r 


<T 



—4 

CU 

0 


cO 



X 

0 

a 


a 

a 

a 




a 

a 




a 


a 

a 

a 

<r 

a 

a 


CO 

O' 

<t 

a 

a 

X 

a 

a 

CU 

— 

a 

CU 

A 

a 

a 

a 

X 

CO 

a 

a 

a 

a 

C" 

a 

a 

O' 

a 

r- 

a 

a 

CO 

in 

CU 

t" 

a 

CU 

a 

a 

a 

a 

CU 

CU 

CU 

a 

a 

c 

a 

a 

a 

a 

CU 

n 

a 

a 

p~ 

a 


— 

a 

O' 

a 

a 

a 

CU 


A 

CO 

O' 

<c 

a 

0 

CU 

co 

A 


<t 

a 

0 

co 

<T 

r~ 

O' 

a 

a 

a 

a 

CU 

A 

'O 

{"■ 

X 

<t 

CO 

CO 

cc 

CO 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

<z 

<r 

<z 

< 

< 

<t 

c 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

in 

in 

in 

A 

A 

n 

n 

n 

in 

n 

A 

A 

n 

A 

A 

n 

n 

y» 

n 

A 

A 

A 

n 

A 

n 

A 

A 

A 

A 

A 

A 

A 

n 

c 

0 

0 

C 

C 

0 

0 

0 

0 

0 

0 

C 

c 

O 

O 

a 

a 

a 

0 

O 

C 

O 

a 

O 

a 

a 

a 

0 

a 

c 

a 

a 

c 


Page 22 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


220 

















* - * 

< 2 C 

X 3 X 

3 C A 3 

3 X <£ 

'0 j i - ui t: j 

I <1 r X I W O 

i— r- p* X 

< .— -* z 

X < X ~ X ^ X 

£ x -j o n o t: 

O 3 .0 O 0. O 

p* < r* P» 

A X A 

3 2 

3 3 

< ffl 


-0 \ 

v 

i3 

•Q 


< UJ • 

* a i 

2 X < ■ 


a o 

A O 
£ X 
3 

3 x 

< H 
< 

^ 2 

< —• 
X X 
o 

X 
X X 

5 5 

a 


UJ 

X 

.ti 

< 


n 

3 

3 

<c 

5dS 

•0 J3 
ll < tl 
A X 
X ^ < 

* X 2 
3 t- X 

2 X X 

3 < p. 

O 

X X 3 
2 2 
x < 3 

IJO 

CQ X 

o 

- X r- 

o o 
-1 2 
X £ 

a a x 
~ <e a x 
/i j <c .2 
5C II < 


X 

3 


o 

X 

2 

o 


X 

2 

X 

X ! 

S3. 

< 3 I 

X r- 
- X 
X X 
-0 2 


2 

a a 

P* 

X 

X 


<t X 
a x 


x 

x 

3 


X 

5 

2 U 
ID 2 
2 — 
- X 
X 

P» p» 
3 X 
X 
X 2 

u 

X o 

X p» 


2 a 
x 


x * x x 

H r* A 

t d 



o 

< 


- 

< 



< 


rJ O * 

II 

X 


*r 

O 

V 

X 

— 



_ 

X - 


«* 

•» 


» 

•« 



% 


x o a 




X 

O 

a 

X. 

X 



* 

I 

X 

< 



< 

2 

X 

< 

X X 


a x x 

X 

X 

< 

r— 

X I 

t-* 

A 

o 



. 

o - 











< o 

X 

*-« 





















X X 3 























* o • 







X 

X 





X 

»-* 

3 

r- 

•—1 

3 

X 

< 

a 3 

H 


A 


< 

< 

X c 

< 

] 

X 

I—< 




2 

3 

o 


3 

o 

2 

X 

X o 

X 

X X •• 

2 


£ 

1- 

T £ 

r-* 

< 

< 

X 

NJ 

X 

X X 


2 

2 



2 

— 

X 

A T. 

X 

O * X 

it 


X 

A 

3 O 

A 

o 

o 

o 

X 

o 

3 O 


A O 

X 2 


X o 
Z A x 
X 

XXX 
r- A 1> 
X < 



A 



a 

44 



X 


a 

X 

< 

X 


< 

H 

X 

—• 


X 

O 

o 

2 

X 

ii 

-7 


•—i 

a 

3 

X 

CVJ 

o 

a 

< 

X 

—• 

*2. 

< 

A 





a 

a 

o 

X 

2 


r: 

H 

3 

•—< 

< 

o 


X 



* 

r-* 

■—i 

A 



—> 


X 


n 

2 


a 

3 



X 


o 

o 

X 

t; 


2 


X 

a 
x o 
< 

X X 


£ 5 

a 

x 

2 3 
— < 
t- X 

3 X 
X X 

a x 


A 

CD 

£ x 

a s x 
a x 
< x <t 

a p* 

n x <t 
o c 
■?s < bd 
X o 
X o 
o X 

u 


o 

X x 
X 
X — 

x T. 
a — 

< O 

X x 

2 X 
X > 

X X 
H ~ X 
t: x 
x r- a 
o x c 
r* £ X 

< 

>z X X 

A *- 
X X X 
— XT) 


X 

X 
X r- 
3 Z 
2 ~ 

— O 
I- X X 
2 X 

o x x 
u <x 

2 £ X 
<t p* *-* 
X 

X 3 















< 






< 















ro 








A 

X 





A 

a 









2 





l 

3 

a 



a 


3 

a 

u. 



X 


a 

X 




3 

a 


3 

a 

X 


X 


X 

X 

< 

■* 



< 

CVJ 

< 

< 

p* 



a 


< 

o 

X 


a 

< 

3 

X 

< 

3 

<“• 


S 


o 

O 

A 

r- 

o 


X 


A 

X 

X 



O 

< 

X 

3 

X 


2 

A 


O 

A 

c — 

2 


X 


o 

O 

X 

2 


n 

3 


cJ 


X 







2 


U. 

x 

2 

o 

X 

2 

O 

X 

t— 

< 

X 

X 

X 

O 

< 


T 

o 

X 

a 

a 


X 

< 

2 

X 

a 

o 

< 

X 

X 

O 

X 

X 

O 

X 






a 

X 





a 


X 

o 






X 



a 

X 


a 

X 

X 

X 

< 

< 


X 

X 

X 

3 



•—i 

X 

•—• 

X 

X 

X 

•—4 

3 

M 

—4 

X 

< 

*M 

x 

x 

X 

x 

x 

< 

2 

a 

X 

NJ 

2 

X 

< 

O 

X 

2 

3 

X 

X 

c 

o 

o 

3 

O 

X 

X 

< 

n 

2 

X 

< 

T 

X 

c 

o 

— 

X 

o 

3 

3 

A 

o 

2 

o 

3 

2 

X 

X 

o 

X 

a 

2 

2 

X 


o 

O 

3 

X 

o 

3 

X 

o 


I 2 x 
' x 0 


x 

o 


X 

K 

o 

o 

X 


o 

X 


:> 

2 


a 

2 


o a 

co o 

p-coaaMcoXr^O' 

p-cut^OP-cvjrop-3 

^'T^'ocoixioa 

A A A A A Xi » X 3! 
CO'OO'OO^OOO 

coocooooo 


a 

CVJ 

X MO ! 


a a O O O a 'O 
o o o o o o o 




o o 


o 

o 

o 




o 


o 

o 


o 



O' <T 


O' 

< 

o 

•-« 


< 

CVJ 

< 

CVJ 

a 


O' 



<T < 


<r 

r" 

CVJ 

o 


CVJ 

o 

CVJ 

o 

O' 



O' 

u. 

CVJ A 

<T 

CVJ 

a 

a 

UJ 

a 

X 

< 

X 

< 

a 

CO 

< 

o 

< 

A O 

a 

A 

o 

L) 

X 

o 

X 

o 

X 

o 

o 

CVJ 

CO 

A 

o 

M < 

a 

X 


< 

r- 

O' 

< 

u 

X 

_ 

< 

r- 

X 

O' 

O' 

O' O' 

O' 

O' 

< 

< 

< 

< 

< 

< 

< 

a 

a 

a 

a 


a a — r- 
o o o o 
<r - < a 

< < ~ <T 


CVJ OJ a 




o 


o 

c 

o 





o 

o 

o 


o 

o 

o 

o 

o 

o 


a 

o 

o 

< 

X 

<x 



a 


X 

a 

a 


< 

< 

X 

<T 

< 

X 


o a 

o 


A 

X 



o 


A 

X 

X 


X 


<T 

< 


< 

O' 

X 

< 

X 

< 

— 

a 

a 

a 

X 




a 

r- 

CVJ 

< 

a 

ro 

< 

a 

c- 


X 

o 

cv: 

— 


X 

CV2 

A 

f* 

CVJ 

— 

o 

a 

o 

CVJ 

o 

O 

CVJ 

o 

X 

3 

a 

X 

o 

CO 

X 

O' 

< 

a 

a 

X 


<r 

p- 

X 

a 

X 

, 

< 


o 

O 

o 

o 

a 

a 

a 

a 

a 

a 

a 

a 

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 

X 

X 

X 

o 

o 

c 

c 

a 

o 

o 

o 

c 

o 

o 

o 

o 

o 

c 

o 

c 

o 

o 

o 

O 


X 

X 

.u 

§ 

2 


2 

* 


X 

e 


I- X 
X 
CD X 
X 

< a 

X 2 
2 < 
o 
o 


X 

< X 


X H 
O s X 
2 3 U 


2 O 
o 

-* O' X 

3 O' 2 
X o 
X o 

:> p* x 

2 O 
O X 
U 3 3 ; 

a 

>. 1 a 

X 1 < 

< X 

2 X x 
- a < 
a 2 x 

3 o 

O 2 

a|* 

u 3 

< X •• 

x a x 
<r x 
x c r- 

3 2 
P* X 
X 

cd 


X 

< 


2 
X 
X X 


X -« 
X x 
a x 

2 2 

3 3 
2 2 


’ <r 
x 
■ u 


o 2 

X A 

• t— <z 

H <t X 2 
- C X 

2 x a x 

—• O r- 

O X 
X ~ 


X - 2 x 
U X <t 2 
<C X 3 
an* z 
X H 

X ID -* O 
^ 2 r* 

d 3 


X 

UJ 

a 


h* 













r—. 


p* 


•—* 













4-< 

O' 

4—4 


O 





A 


< 



tO 



A 

O' 

CD 


M 


< 



C 


X 



< 



O 

+ 



a 


I 



•—4 


u 



4—4 



a 


a 




CJ 



a 





a 



X 

o 


O 

X 




A 

CVJ 

r* 

a 


to 


p* 


p* X 

p* 

r-« 


a 

X 

r- 


a 

-< * 

•—< 

2 


a 

—• 

4—4 

X 

2 r- 


X 

X 

CD 

3 

-0 

X 

< 

- o < 


O 

X 

< 

4—4 

CD 



O' 

CD 

VJ 

2 



CD 


O — ll 

o X 

o 

CD 


o 

•— 

o 

O 2 

O' 

—< 

»-< 


-0 I 

<c >• 
a 

X 

3 • 

O t- 


— 3 
* < 


X 2 x 

ACT. 


a a t 
c 


X 3 


V •—1 

15 A 

2 

A 

3 

X 2 
<C — 
2 2 
— X 

a 3 3 
— o 
X r- t- X 
5 x <1 A 


X 2 
X 3 
<020 
X - - O 
o 

X X A 
5 H 3 2 

x a < x 

O 3 A r* 
X 


a 

2 2 X o 

o — X X 

O O X r- X 

x a o o 

x a s < 

X 3 x X 

t- 2 2 < a 

u -* x a 

< > o < 


f» -0 

5 = 

O A 2 

O < 3 

— O 

to a 2 

X 2 iO X 
O X HH « O 
O r* *-< 





a 

3 

X t- 


-0 



2 

4—4 

3 3 


o 


X 

a 


3 

x 

+ 

p* 


2 

X X 

3 X 

2 




P* 

X 

2 


2 X 

3 


p* 

^1 

< 2 

a 

X 

p* 


2 

X 

O 

< 



p* 

4—4 

2 

X 


X A 

2 

a 

X 

< 

X X 

a 

CD 


O 

O 

X 3 

4—4 

X 


< 

X 

2 


X 

V 

x a 

4-4 

2 

3 


3 X 

n 


2 

r-« 

s a 

3 2 

A 

3 

X 

X 

< 


X 

p* 


P. X 


< 


a 

p* 

a 




3 a 

< O 

£ 



tl 



4—4 


X 





a 

X 

a 


a 


£ c 

a a 

X 

■d 

2 

< 

X 




— 1 





< 



>- 

p* 

o 


< 

X 

3 

3 

3 

+ 


+ 


to 

p* 

< 

£ 

X 

X 

< ll ll 



X 

3 




2 

2 


< 

2 

O 

3 

4— 4 • 4-4 » 


• 

A 

A 

M 

» 

- < 

4-4 

X 

a 

2 

o 

X 3 

2 

< 

3 

< 


3 

2 



X 

a + a i 

a ^ o 

O' 

O •» •. O 

O' 

O *4 

2 

3 

2 

— a a 

•4 

% X 

0X0 

A 



3 


a 

p* 

3 

X 

x a 

A - 

a * 

A X < • 

* 

- <X<t<tXXX<- 

" 

- X X 

X 3 

O 

3 

2 

a x x 

3 

< < 2 

X —• 

X 

< 

- 3 

X 

< 


lO — 

2 

X X 
3 — 


X 

— xx *-• — x 3 — ~ ^a3aaa3X3« ^ -* a 3 r- x x 

32<vjxMxxuox2ax3aoaaao2ox2Xx3aoxos 

2^-0303033^0 X O X-0<2<<<2 — 2OXoX-0<2 X 3 3 


x 3 —• *-> -*a3aaa3X3« 


>■ x •• 

X < X 
< 2 X 
2 ~ — 
- a 2 
a x 

t— 

3 

X 


A 

2 


~3<I — — 33*-*3Q.3*—< 

30 X2X2aooao2oax*^i 
220003t/)S2<23 2<03 


a a o' 
r- a o 

XX o 

CM cvr ro 

O vO vO 

o o o 


r- vo 
o o 


VO 

o 


O 


O' 

— 

a 

-4 

a 

—4 



o 


< 


o 









o 


< 


o 





a 

o 



X 

< 

a 

< 





O 


a 

'C 

cu 

vO 

CVJ 

40 



A 


A 


CO 









A 


A 


CO 





a 

o 



a 

o 

p* 

o 



o 


X 

co 

a 

< 

X 

< 

X 

< 

a 

X 

X 

co 

X 

o 

a 

p* 

X 

r- 

M 

co 

X 

co 

X 

X 

a 

X 

o 

a 

co 

X 

O' 

a 

co 

X 

a r- 

3 

X 

< 

a 

X 

O' 

a 

X 

— 

CVJ 

3 

3 

X 

3 

X 

3 

CVJ 

p- 

X 

X 

X 

X 

a 

a 

A 

a 

a 

a 

A 

CVJ 

M 

X 

X 

X 

X 

a 

a 

A 

3 

CVJ 

3 

o 

p* 

a 

X 

X 

X 

Q 

a 

p- 

3 

< 

— 

A 

< 

r- 

< 3 

X 

-4 

<T 

A 

40 

a 

O' 

a 

3 

X 

X 

o 


CVJ 

A 

< 

a 

a 

a 

O' 

a 3 

X 

X 

o 


CVJ 

a 

p* 

a 

O' 

3 

X 


co 

< 

a 


CO 

A 

A 

CO 

CO 

CO 

A 

< 

< 

<T 

< 

< 

< 

< 

< 

<T 

< 

A 

A 

A 

A 

A 

A 

a 

A 

A 

A 

A 

A 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

p* 

p* 

p- 

p* 

P- 

'O 

'O 

vO 

A 

O 

vO 

vO 

o 

40 

40 

o 

•a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

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 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

c 

o 

o 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 23 


221 

















A 

X 

2 

<£ 

a 

X 

3 

2 * 

« Q 
a Q 
<t <C 

x 

a 2 

— t-» 

we-*-, 
d .n 

O U Id 

2 Q > 

ID O 
— 2 


Q 

XX z 

3 o x 

r» 3 H 
W * Q 
(3Q3 


J -1 
-J — -1 l- 
« * <t x 
u J o « 


X 

X 


X 

X a 

Q Q 
Q C 
< 

X 

x < 


H 

UJ 

, 3 


Q 
X 
o 

3 

X D 
H H H 
2 2 X 

Z) UJ X 

O 

o 


X 

Q 

a 


X 

Q 

<t 


X 

Q 

Q 

<1 

X 

< 

X 


Q 

U] 





2 



— 



Q 

<c 

X 




X 

X 

a 

<t e- 


X 


X 

X 


X 



2 



X 


X 


X 



3 

H* 





X 


< 


X 

H 

<1 

o 

<c 

X 2 

3 

a 

3 

a 



a 


—• 

m X 

a 


<t 


a 


CQ 


UJ 

O 

2 


UJ 



X 

2 

X 


a 

2 

X 



<t a 

o 




2 


a 


2 

x a 

X 

2 

X 


o 




x 

3 

3 


X 



a 

•—* 

3 



3 

3 

a 

2 

X o 

X 

2 

X 

X 

X 


<t 


a 


o 

C 

3 


v 


J 


X 


O 


o 


X 

<E 

r-» 


X 

a 

O 


2 


3 3 



3 

3 

a 



a 

o 

X X 

3 

a 



X 


3 

il 

II 

X 

3 


c-» 


<1 


/) 

X 

a 

3 

3 

•x 

X 





<r 

X 

t-» 


2 

X 

3 

3 X 


o 




2 

2 

r-* 

X 

<E 



-0 

p. 

X 

X 

X 

a 

o 

2 


<x 


a 

X x 

X 

A 

a 

a 

X 



o 



X 

3 

A 




«—• 

2 

<x 

X 

t—• 



* 

3 

a 

a 



•—i 

r* 

X 

2 

X 

Z> 3 

X 

X 

X 

o 

X 


H 


H 


a 


<t 


2 

t—« 


3 

X 

3 

UJ 

—« 


UJ 


o 


X 

X 


•—> 

£ 

X 

a 

O 2 

2 

a 

X 

A 


X 

-0 


X 

X 

a 

a 

a 


X 

O 

H 

O 

3 

II 

3 

+ 


2 

t- 


ii 

X 

X 

a 

2 

a 

X 








a 

X 

X 

3 

v X 

<* 

«-* 


>- 

X 

2 

2 

3 


3 


3 


II 

X 

+ 

X 

—• 

r- 

X 

•—i 


t-* 

n 






X 


a 





o 

H 


r-* 


_> 


u. 



II 


J 

X 


a 

X 

X 

3 


X 


a 


a 



a 

X 



o 


X 


a 

X 

X 


X 

O 





3 


X 

2 

X 


<£ 

< 

o 




X 


X 

X 


X 


X 


2 




<x 

3 

•—< 


>—< 

O 

•«, 


.*» 


•% 

•% 


•« 

a 

•* 



2 



• *1 


■ >, ■ <v 



m, 

Iai 


i- X 

.. 


,* 




•4 

,4 

• 4 

•4 


O Q Q 
t- Q Q 
<t <1 


A 
X 

c 

X 

W Id 2 X U 

o o — c 


• Q 
q 3 a 
x <c 

o 2 

3 X 

- X U 
O X 


3 

X 

3 








CVJ 


2 

V 

X 

H 

X X 












CVJ 









2 

a 










X 

3 



X 






+ 


O 

a 

a 

A 

3 o 


X 










+ 









— >- 

o 

a 








X 

a 


X 


< 






a 



o 

o 

X 



< 










n 



X 







CO 

X 

X 







3 

o 

X 

a 


X 






3 


X 

-0 

A 

a 

X O 


X 

X 









X 



a 






a a 


o 

X 







a 

A 

a 

ii 


3 


3 


< 


H 






a 2 

*-• 

3 

a 



a 

3 


<t 



—• 



o 

< 





x <r 

II 

3 

H 

3 



a x 



— • 

II 

ii 

a 

A 

d 


% 


A 


2 


3 

it 

II 

ii 


* 

X 

> 









a 



* 






o 2 



a 

% 



% * 



X 

a 

a 

•> 

3 

a 


<t 


3 

X 

3 

X 

2 

a 

a 

X 

ii n 

3 

a 


X 


2 

<C 


3 

X 


* 

X 


<c 

2 

X 


<£ 


3 -H 

a 

a 

* 

<Z 

CO 


H 

L 

X 

X 

3 

X 

X 

<E 









X 

•— < 

X 

X 

a 

B 

C 





















X 

2 





















X 

X 

























a 












•• 



a 







yj 

h* 


•• 




a 



3 






3 



3 




3 



o .o 



a 







a 


c 0 


—• 

a 


a 

•—> 

a 

X 

X 

2 

A 


o 



•—< 

a 


x 

X 

a 

a 


a 

X 

X 

X 

X 

X 

•— « 

a 

X 

X 

<C 

— • 

X X 


•— i 

a 

a 

■— 1 


a a 

X 

X 

a 

•• 

2 


a 

<x 

NJ 

o 

a 

o 

2 

2 

< 


•• 

2 



a 

<r 

NJ 

2 

3 

o 

o 

a o 

2 

3 

2 

2 

3 

a 

o 

2 

3 


X 

r- 3 

•• 

X 

<t 

o 

X 

2 

o o 

3 

3 

<£ 


X 


2 

3 

d 

2 

<t 

V 


a 

X 

A 

X 

X 



2 

3 

a 

■— 

X 

2 

2 

<x 



X 

a 


X 

V 



X 

X 

X 

2 <1 

X 

a 

3 

2 

3 

X 

2 2 

a 

a 

3 


ZD 

• O • 


3 r- r- 
302ld 
X X J X 


O J id 
3 X t- 

X z 
r-* X UJ 
UJ 
3 


3 
H 
UJ 
, 3 


r- cvj 

r- 



r- 






r^- 


r- 








r* 









CM 

r* 









r^ 

o o 

o 



o 






o 

o 

o 








o 









o 

o 







O 


o 

3 X 




O' 






X 

o 

X 








vO 



a 






X 

■7 


a 





<T 

O' 

<r x 

CM CO 

in 


c 

a 



o 



•M- 

o X 

o 





a 



A 



o 






X 

a 


o 





a 

in 

X 

a - 

a 

o 

X 

a 

00 

o 

O 

X 

a 

a 

x a 

<r 

a 

X 

o 

O' 

vO 

X 

a 

X a 

a 

X 

X 

r*» 

a 

X 

X 

O' 

v* 

a 

O' 

X 

X 

CM X 

X 

X 

a 

X 

<t x 

3 — 

3 

3 

o 

3 

3 


3 

<T 

CM 

3 

O 3 

3 

CM 

X 

r^ 

r- 

3 

<r 

CM 

X 3 

X 

X 

a 

r~ 

CM 

X 

<c 

3 

— 

3 

r» 

X 

X 

vO X 

CM 

CM 

3 

X 

3 X 

3 X 

CM 

in 

vO 

X) 

X 

3 

a 

X 

o 


<r io 

O' 

3 

a 

X 

X 

O 

CM 

a 

<x »n 

X 

O' 

< 

3 

a 

X 

X 

o 


•T 

i-* 

X 

< 

X 3 

a 

X 

X 

CM 

r- 

co a 


■T 

<T 

<T 

<T 

<T 


<T 

a 

a 

a a 

a 

in 

A 

A 

A 

vO 

o 

vO 

vO vO 

o 

vO 

o 

O 

vO 

'O 

vO 


r* 

r^ 


r- 

r^ 

r- r~ 

r- 


p- 

X 

X X 

r- r» 


r^ 

r- 

r- 

r- 

r- 


r- 

r* 

r- 

r- 

r~ 


>■ 


C" 

r s - 


r- 

r- r~ 

r* 

r~ 

r- 


?»• 

f* 


r- 

r- 

r* 


r- 


r* r- 

r- 

> 

r~ 

P* 

p“ p- 

O O 

O 

o 

o 

c 

o 

o 

o 

o 

o 

o 

o o 

o 

o 

O 

o 

o 

o 

c 

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 

2 




2 





















X 






















X 

»—• 




X 





















<r 






















r- 





r* 







a 














X 



x 




X 







X 








•—> 

X 











2 














3 

A 


<t 




<c 







<t 


c 







<t 





X 

2 





3 












X 



X 


X 

X 



X 







X 


a 





X 

X 

X 



X 

>- 


X 




X 

O 












X 


fm 

2 


3 

X 



3 







3 


a 





2 


3 



2 


3 

H 




2 

X 

X 





X 





X 

r* 


X 

<t 



a 








X 




<i 




* 

— 

X 



X 


X 


X - 



t: 



<t 



<c 


<3. 





<t 

3 


2 X 

a 


ll 

3 


2 

r-» 





<t 


X 

2 





<t 

J 

o 

X 


<i 

a 

o 


3 



<t 

a 

X 

X 



X 


X 





X 

< 

X 

X 2 

X 



<r 

X 

X 

X 

X 




X 


X 

«c 

2 

X 



X 




2 

X 



t— 

1- X 


2 

X 


3 

3 



3 


3 


a 



3 

X 

2 

3 



< 

X 

2 

a 

X 

X 




3 



3 

X 

a 



3 

X 

a 

X 

X 

3 

X 

a 

O 

<E 

x 

□ 

3 

X 

t- 








2 



II 

<r 

<1 

f r» 

co 



<i 

< 

p- 

2 




X 



a 

r* 

t— 

o 




o 

2 

3 

t-* 


o 

2 

2 

2 H 

X 

t— 


o 

<t 

X 


X 



U 

X 


m 


<C 

X 

a 

X X 

X 


m, 

X 

a 

X 


3 



a 


X 

3 

X 




X 

X 


X 

<r 

—• 

>* 


X 


X 

> 

—i 

>- 


2 

X 


3 

m 

X 

X 

3 

«v«. 

X 



3 

X 

X 3 



X 

3 

X 

X 

l- 

<1 



o 

X 

a 

2 

c 


2 


X 


a 


X 



a 



o x 

o 



a 




r- 


a 


r* 


2 






X 


<E 




X 

X 





o 

>—« 


>• 

•—« 


X 

r-* 

2 

2 


>- 

i— 

2 

2 

>- 

2 2 


> 

H 

2 

2 

> 

X 

<C 

>- 


X 

< 

X X 

<t 


X 

r-* 

r-* 

2 X 



X 

c-* 

r* 

2 

3 

<x 

X 


+ 

ll 



a 




1C 

X 

X 

X 



X 

X 

X 

V 




X 

X 

X 


a 

2 


H 


2 

a 3 

a 


a 

X 

O 

X A 



3 

X 

O 

X 


X 

X 



X 

X 

a 

2 

II 

X 


a 

3 


X 


X 

3 


X 

<1 

2 X 

X 

X 

3 


X 

X 


O 

X 

X 

t; 


H 

X 


a 

3 

2 

X rJ 




3 

2 

X 

X 

3 

2 


3 


X 

X 

<i: 

X 

r-* 


a 


X 

r* 


a 


X 

t- 


x a 

<t 

a 


X 

r- 

a 

r* 

2 

a 

m 

a 

O 

t— <t 



<i 



r* X 

a 


X 



t-* 

X 


<t 


2 

•> 

r-* 

3 


a 

<C 


<z 





a 


•—I 


X 

x a 


a 


•—1 


a 

X 


a 


a 

2 

X 2 

3 




X 


X 


2 


X 


a 

X 

a 


■—« 

X 

X 

O 



2 

* 






<r 





f- <t 


<r 




< 

>0 


<a. 


<t 


m 

2 


* 


•—i 


< 


< 


—« 


X 

<t 

m 


X 

a 

<E 

2 


















































■r: 

2 

3 

a 
























a 


<t 




X 

a 

X 





d 

3 


A 

<t 

X 

CO 


a 

d 

t—« 

o 
























<r 

X 

a 




3 

a 

1 





X 

2 

X 



a 

X 


a 

X 


























X 

a 

X 




<1 

<r 

2 







a 

X 


a 

<£ 


>- < 


2 

— 
























a 

a 

i 




X 


O 





H 

a 

a 

3 


<c 

X 


<1 

3 je: m o 

2 UJ y 2 UJ 
<t ~ X Q 


CO O 
X UJ 2 
— 3 


3 2 
>0 Z 
2 —■ r- 

<t X io 


yj <t <t x 
x UJ 3 
- j u o 
X 3 m 





X 





























X 

X 

H 






3 


<c 





X 


CO 

X 

ll 

X 


•—< 

o 

a 









OQ 


X 






a 




a 


a 





m 

a 

X 





X 

A 

n 

a 





3 

O 

X 

a 

• 


X 


X 

2 



a 






a 


3 



X 



"5 






5 






o 

X 





3 








a 

r* 

X 

o a 

A 


X 


<t 

2 

X 

2 

<t 



2 

X 

2 


2 



X 2 

X 

X 

r-> 




c-* 


H 





i 

A 

2 

2 

X 



r» 

l 

ii 

it 

2 

X 



r* 


o 

A 


3 

ll 

t— 

o 


•4 

a 

X 

i 




a 

X 


O 



2 A 

a 

3 

2 




2 


2 





i 

II 

ll 


o 



X 





o 



X 

X 

2 

ii 

o 

2 

a 

o 

II 

a 

< 

3 

X 

3 

X 


<X 

o 

>~ 

3 

2 

X 


3 <t 

o 

2 

3 


<X 


3 


3 

<t 



X 

x 

a 

a 

<1 

CM 


X 

3 

X 

a 

a 

<1 

CM 


X 

3 

a 

3 

a 



X 

X 

< 

X 




























X 

X 

X 






<r 

X 

X 







>—■ 

X 

• 

X 
































H 








X 








i 




r- 



•• 







3 







3 

3 



a 

3 



a 

CO 

a 



3 


3 


•• 






3 


•• 






i 



•• 

A 



A 


3 

*—* 


D> 

X 

X 

3 

<—> 


X 

NJ 

X X X X 3 

—• 


a 

X 

< 

p-» 

a 

X 

a 

<1 

H 

X <t H 

<1 


n 

3 


NJ 

X 

X 



co 

3 


NJ 

X 

X 




c0 

X 

•• 


2 


O 

X 

NJ 

O 

2 

3 

O 

X 

NJ 

2 

2 

2 

3 

2 3 0 

X 

NJ 

<i 

3 

X 

X 

< 

3 

<i 

X 

X 

3 

x X 

£ 

•• 

2 

O 

X 

2 

2 

2 

r* 

•• 

2 

O 

X 

2 

c.^ 

2 

a 


•• 

2 

X 


X 


2 

3 

3 

2 

—• 

X 

2 

3 

3 

3 

3 


X 

3X2 

3 

3 

3 

X 

X 

X 

3 

X 

3 

X 

X 

X 

o X 

<C 

>* 

X 

V 

3 

X 


3 

A 

X 

X 

v; 

3 

X 

a 

3 

X 


X 

X 

C 

X 


a 





























X 

X 

a 






< 

X 

3 





o 


X 

ZD 

<L 

—• 


H 





























3 

(—• 

H 






a 

H 

e* 

•• 







r* 

H 

X 

2 


X 






















•• 

•• 







2 

X 

•• 






2 

X 

X 







2 

X 

r. 

X 


X 


•• 













•• 







X 

a 






t- 

X 

X 

X 





t— 

X 

X 

3 





—« 


X 

X 

o 





X 













a 







3 

a 




•• 


X 



3 





X 



a 





X 




3 





X 













2 







2 

2 




X 


3 



r* 





3 



r* 





3 





,4 


,4 

.4 . 

2 
- 3 













X 

X 







O 

2 

X 

>- 




3 

2 


•l 

#<k 


X 

A 3 








X 
i 3 






.4 




X 
<x - 

X Q u. 
U X O 
o 

X 3 O 
CQ - 2 

H H II 





p~ 








p* 


'O 



p- 

P* 



p* 


p- 










P» 





p“ 




o 






o 


o 


O 



o 

o 



o 


o 










o 





o 



a 

CD 





a 

co 


c 


X 


a 

O' 

3 



O 


vO 







o 



3 


o 



<r 


X 

o 






o 

CM 


CM 


X 


o 

CM 

>r 



■T 


■n 







X 



X 


X 



CO 

O' 

X 

<X 

X 

CO 

X 

X 

X 

<1 

O' 

CM 

co X 

CO X 

X 

X 

<t 

a x 

X 

O' 

a 

X 

a 

X 

O' 

X 


O' 

X 

X 

o 

co 

co 

X 

X 

o 

X 

CO 

3 

p“ 

'-*• 

3 


CM 

X 

p- 

X 

3 

X 

3 

CM x 

3 X 

p» 

X 

3 

3 x 

< 

3 

3 

X 

3 

<t 

3 

X 

X 

3 

p- 

X 

3 

X 

3 

P* 

X 

3 

X 

3 

<1 

X 

3 

X 


CM 

CO 

<T 

A 

P* 

< 

X 

X X 

O co 


in 

P* 

A 

D 

X 

X 

o 

CO 

<T 

p* 

00 

O' 

<i 

X 

3 

a 


o 


<T 

in 

P- 

3 

O' 

X 

X 

X 

X 

c 

O 

O 

o 

O 

O 

o 

o 

o o 


—• 


«-• 



•— 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

CO 

CO 

CO 

CO 

CO 

co 

CO 



sC 

'C 

p- 

P~ 


p> 

P- 

P~ 

p- 

r- 

p- p» 

P- P* 

P- 

p* 

P* 

P* P* 

p“ 

p“ 

p* 

p> 

P~ 

p~ 

P- 

p- 

p* 

p» 

p“ 


P» 

P- 

p- 

p* 

p- 

p- 

>• 

P» 


o 

a 

c 

o 

o 

o 

o 

o 

o 

o 

O 

O O 

o o 

o o 

O 

c o 

o 

o 

o 

o 

O 

o 

O 

o 

o 

o 

o 

O 

o 

O 

o 

O 

o 

o 

o 

O 


May 1977 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park CA 94025 


222 





















X 











X 


<t 











a 


X 











a 

O 

o 











<r 

II 













u 

a 

X 










X 


X 

o 










r-* 

% 

X 

r- 










S) 

X 

o 

<r 








a 

(5 

X 

o 

r-a 

2 








2 

2 

3 

t-a 

<1 









3 


Si 

<r 

2 

X 








O 

X 


2 


X 








X 

r- 

II 

O 

r-a 

I-* 

X 








y) 


z 

Si 

X 

f* 






H 

H 


X 


X 

<t 

o 





X 

to 

O 

a 


X 



3 





X 

•—« 

2 

X 

< 

■—< 

X 

X 

3 


S) 

CO 


X 

J 


X 

Si 



<r 



z 

2 


o 


X 

o 

-J 

% 

X 

X 

UJ 


x 

X 


X 

u. 

< 

C-* 

J 

X 

O 

o 

J 


X 

X 


r* 

o 

X 

<E 

X 

o 



X 


<t 

<t 


tO 


o 

2 


r* 

X 

r-a 

3 


a. 

a. 


o 

Q 



% 

<r 

a 

X 

O 





X 

z 

X 


X 

2 

a 

X 

a 


J 

X 


< 

x 

X 

O 

a 


<t 

2 

•* 



•«. 


•% 

M. 

•at 


a 

X 











2 

<i 

o 

ID 

X 









O 



2 

o 









—i 

o 

Ul 

>— 










r-a 

2 

o 

X 

X 









■—< 


X 

r-a 

a 









>0 

X 


Si 

a 









O 

H 

x 


<r 









X 

S) 

<t 

II 












X 


ii 









X 

II 

o 

■> 










< 



<t 

X 

• 


• 

• 


X 



X 

> 

II 

Si 


s 





r- 



o 

<c 


J 

X 

• 


• 

• 


CM 

•-* 



si 

o 

2 

X 









a 

J 












2 

2 

•• 











—■ 


yj 



•— 1 


•—« 



>-« 

►-H 

t-* 

X 

•• 

z 



X 

NJ 

X N) 

X 

NJ 

X NJ 

X 

X 



X 



o 

X 

o X 

o 

X 

O X 

o 

< 

i 

X 

3 












h» 

H 











X 

2 

X 











X 

X 

X 











a 






Z 






a 

















2 






H 











•—< 


X 



d 

2 













<t 



X 

3 




yj 

o 


h* 




X 


X 



r-a 

O 




X 

r-a 


2 


X 


< 


o 



z 

o 




<E 



3 


a 


X 





•—> 





X 

(-• 


O 


a 

o 

o 


H 



o 

o 




o 

Z 


o 


<t 

2 



tO 

a 

z 

X 

2 

r- 




3 

Si 





X 


X 

2 

X 


•—« 

z 



d 

O 

X 

o 

O 

o 

X 

H 

u 


3 

a 

X 

d 

3 


X 

r-• 

O 

<z 

2 

2 

2 

H 

to 

2 

X 

O 

r-a 


r-a 

o 


r-a 

Si 


X 

a-a 

a—a 


Si 

a 



X 

X 

<x 

to 

o 

H 

’Si 

a 

X 

o 

X 

x 

d 

OQ 

3 

X 

X 


d 

-o 



2 

a 

3 

o 


r-a 

r-a 

r-a 

3 

Si 

r-a 

o 

— 



a 

3 

o 

3 

-0 

3 

< 

to 

to 

to 

to 


to 

X 

G 

2 

X 

-j 

X 

Si 

-0 


J 

X 





H 



2 

X 

to 

o 

2 



r-a 

X 

a 

r-a 

X. n 

X 

lO 

X 

X 


X 

J 



2 

d 

2 

d 

j 

>—l 

a 


a 

X 

a 

o 

X 

r-a 

X 

H 

a 


a 

3 



2 

a 

X 

a 


a 

o 

a—a 



X 

a 


o 

O 




<t 

a 

< 

X 

<i 

J 




a 

<i 


<£ 

O 




r- X 










0 



2 

X 














z 



3 

—• 




0 













O 

z 






X 





X 



X 



O 





z 


o 





a 



r-a 




0 







O 


d 


0 



to 



z 

X 






d 

z 


a 

• 







O 







X 

»-• 


a 

a 

X 



X 




’D 




z 


a 

d 


<E 

d 

t-a 


d 

0 




z 




3 


£ 

r-a 



0 



a 




—• 




z 

O 


3 

yj 


d 


3 


a 

2 



yj 

d 




O 

2 

2 



<t 

• 



<t 

0 



0 




<c 


V 


2 


X 


X 



— 

2 


X 

-0 



0 

O 

3 

X 

O 

“ 

0 

X 

r-a 

d 

d 

r-a 

J 






< 

z 



d 

a 


0 

<£ 

r-a 

r- 

"d 

X 



r-a 





X 

<£ 

X 

d 

r-a 


2 

to 

-0 

0 

«-• 

Q 

X 

X 

H* 

H 

>• 



yj 


0 


a 

•—a 

a 

a 

X 


2 

Si 

ID 



d 

r-a 



y> 

3 

X 

2 


3 

3 


X 

3 






to 

a 

X 

d 

• 

2 

X 

d 

yj 

yj 

•v* 

d 

O 

z 

X 

X 

X 



z 

3 

<t 




X 



a 

c 

-4. 

X 

Si 

2 

3 

a 

t-a 

<c 

C 

X 

O 

X 

d 

r« 

X 

11 

a 

X 


X 

_J 

3 

<£ 

z 

3 


5 ; 

u 

r-a 

> 

a 


a 


<t 

>: 

X 

r-a 

X 

a 

Si 


X 





<z 

a 


a 

X 


0 

—1 











Si 

<t 


<x 

a 


0 










H C 

2 tO 

3 X 
<C -0 X 


<1 

Si 

J 2 

S! 0Q X 


X 

Q O 
2 % 

~ <t <t 


> Q .X 

> <12 X 3 X 

<1 H H i/) j o <1 H d 

■ft 2 2 J r" U < * yj X H 

JO 3 X 2 i i * X X X 

I/)U^IU<I - 3 a X X X 


> 

X <* 

Q to 

O <£ x 
X 

<r 2 x 


Q H - 

X Z > > CV3 z 

OH O < <t X 3 

* a. .- yj -o a a s 

■*2 X x X 2 i * 

xo<rv)xxx«xo 


QUO 3 X 

de-X3Xd>z3<todNj 

Xy>XXXZ~X320 X 


q a j a 

xaaHx<xoooxx 

-ox<itox3syJ2xx 


x a a 

x x x ~ 

<C X 3 •> o 

O A X s 2 


a 

x 

x 

x 


o X 
X ~ X 

O X <1 

x x o 


< 

6 


a a 

zxzx>*:xox 
T j - j s d 



2 

O 

X 

to 


o 

n 

o 


d 






X 


X 




-• 


0 

X 



—« 


—• 

0 

d 


X 


<c 

X 

X 


X 


V 


f-a 




0 

d 

y> 


X 


z 

0 

•—a 


X 




3 


CD 

d 

X 

d 

X 

d 

2 

<1 


<1 

d 

<t 

—■ 

X 


X 


X 

to 

0 

% 

0 

O 

0 



X 




X 

11 

0 

a 

r-» 

t-* 

0 

a 

r-a 

X 


X 



<t 

X 

2 

CD 

2 

% 

2 

0 

—• 


O 

d 


t-a 



a-« 

a 

- 4 . 

<Z 



t— 

a 

0 

2 



•—a 

< 





/) 


/j 

X 



O 

CD 

0 

O 



X 

2 

X 





>—a 


d 



u3 

d 

d 

a 



(-• 

<r 

a 



r-a 

to 

X 

<t 



0 


0 




<c 

II 


11 



d 


11 




<z 

X 


x 


2 

X 

X 

0 

X 



3 




O 

<t 

a 


.. 




2 


A 






Z 



3 

X 

d 

X 

> 


3 

C 


3 


2 

2 

1 







z 

X 




X 

X 





a 




•• 


2 







a 

2 


CM 


CO 


O' 


r- 




CM 


CM 


CM 


CM 


0 


X 

CO 

X 

CO 

X 

CO 

X 

00 

X 

O' 

k* 

0 

X 

L> 

X 

u 

X 

u 

X 

0 

n 

in 

vO 

CO 

O' 

CO 

0 

X 

X 


a 

a 

a 

a 

a 

a 

a 

a 

a 

X 

> 

r- 

r- 



r- 

r- 

r- 

r- 


0 

0 

0 

O 

O 

c 

0 

0 

0 

0 










CO 




•a 

0* 


0* 

_ 






0 

0 


0 




0 




O 

0 


0 

0 

O 





CO 

<1 


0 




r- 




<t 

co 


CO 

u 

a 


0* 



•iT 

— a 






CD 




— 

<T 


<T 

M 

O' 


0 


X 

CM 

<t 

CO 

<r 

-0 

CD 

CO 

a 

O' 

t- 

CO 

CM 

<E 

0- 

CM 

<t 

a 

O' 

0 

u, 

<1 

CD 

CM 

X 

CM 

<T 

CM 

X 

CJ 

r» 

a 

0 

CM 

CD 

co 

ro 

CM 

u 

r- 

a 

<T 

CM 

n 

0 

O' 

<1 

a 

X 

X 

0 co 

<T 

in 

iO 

O' 

u 

a 

O 

CD 

vO 


O' 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

O 

O 

0 

0 

O 


CM 

—a 

O 






CM 

N0 


X 





_ 



O 

O 

O 

0 



0 


O 

O 


0 

O 


O 

O 

O 



a 

<t 


V0 


a 

3 


a 

a 


CJ 

<r 


<t 

0 

X 



co 

«— 

in 

CO 


0 

0-> 


X 

X 


CO 




X 





<c 

a 

CM 

a 

X 

r- <c 

a 

•- 

a 

r- 

CM 

<x 

CO 

CM 

co 


X 

O' 


CM 

3 

CM 

X 

co 

C- CM 

X 

CM 

3 

a 

3 

CM 

CM 

CM 

3 

CM 

•T 

3 


caofO'OhO'cau-^Jitoniuii.win-o 



o 

x X 
o r- 

r- o 
co co 
x x 
o o 


X 

o 

2 X 

d >• a 

3 O 
r- X 

UJ L) X 
d <£ t- 
_] ~ 
2X3 
UJ UJ 
X X 


X 

a 


x 

o 


<c 

X 


2 

O 

X 

o 


X 

o 


nj -• :> e- 

Z > O UJ 
X 2 2 X 


3 

O 

z 


a 

2 


2 

O 

X 

o 

o 


UJ 

to a 
x o 
<c 3 
x 

o X 

o 

r* 

2 2 
3 a 

o a 
o <r 


x 

o 

c- X 

•> S) U. 

x <t <r h 


x 

UJ 


x - 
o < 


<t 

— X 

II o 


2 

3 

O 

O 

x 

<r. 

X X 


3 H 
O 2 
O 3 
O 
X O 
<E 


x 

X 

o 


2 

H d 

2 3 

3 — r- 
O II UJ 
O r* X 



a 

z 

H 

a 

3 

X r- 


X 3 

0 z 

H 

3 

Z 

1 

I 

3 

3 

X 

0 

11 

— 3 X 

0 — 

X 

3 

X 

O 

X — 

J 

a 


0 

CD 


3 

O II 3 

4 

Z H 

X O 

3 

3 

X 1 

X 

0 

d 

3 


X 


3 

3 

II X 

3 3 



r- 3 

II 


X 
X II 
O <E 
2 

X — * 
a 

a h x 

<E Z O 
3 X 
UJ O 
O U X 

x <r 

3 X UJ 


X UJ 
X z 


-J II 

<t o 


-J 

X 


. UJ 
I 3 
J UJ 

! < =3 
! > a 
<c 

I H 3 

■ X 

;<t 5^ 


O 

<c 

X 

- a 

■-n 

J 

X 

to x a 


2 

X 


u 

<1 r-a 

2 tO 

3 

<£ 3 

X 

•S 


t-a 

1 z 

a 


a 

n 3 n 

* 


a 


% 

•a Z 

X 3 

% 

^ c; 

X 

< 

2 

X 

a - 

a 

a 

a 

j 11 j 

X 3 X 

3 

<r 

0 


<t - 

3X3 

d J X 

3 2 z 

<r - 

- 3 x a 

H 

3 


o 

o 


j a 
- -3 : 


J 

» -J H 


UJ 

z 


— — :> -« 0> X 0. 


UJ 

a 


x 

UJ z 

H UJ 
O X 
.X <1 H 

x a x 
o a <t x 
x <c x <t 
< ox 
uj x o 
si <r M 
x x 
3 a a 





to 






3 

to 





0 

d 




H 

— 1 

X 

X 



a-a 

d 

H 

2 




<£ 

3 

a—< 

X 


X 

3 

<£ 

-J 

3 

< 

3 


X 


d 

X 

<£ 

X 

<r 

X 

H 

3 

to 

0 

X 

0 




X 

0 


3 

r* 

a 



a 

<r 

X 

2 

X 

X 

2 

a 

3 

<r 

3 

<£ 

X 

X 



X 

X 





X 

d 


NJ 



3 

a 

•A 


<x 

2 

<r 

—i 

o 

X 

UJ 



3 

< 

X X 

<E X 

a-a 

.. 

z 

3 

O 

X 

NJ 

X 

NJ 

0 

a 

0 2 

2 1 

.. 

2 

0 

0. 

X 3 

O 

3 

2 

X 

.. 

2 

O 

X 

V 

3 

J J 

3 d 

J 

d 


2 

2 

3 

d 

3 

d 

2 

<1 

2 — 

3 1 

X 

d 

2 

3 

X to 

2 

a 

3 

3 

d 

d 

2 

0 






X 

3 










X 

X 

3 








X 

3 







r-a 

t- 











3 

H 

H 

•• 






X 


H 

.. 

X 

•• 




2 

2 

X 

•• 









X 

2 

X 

X 






<r 

2 

X 

X 

3 

X 




3 

X 

.d 

z 









3 

X 

d 

3 






X 

X 

»• 


<r 

O 




O 



a 









<X 



X 






d 



X 

yj 

3 




3 



r-a 









a 



3 






a 



3 


<r 







2 












< 










... 

• 1 Si 




.1 



3 









.% .1 



a 






1 



a 


2 <Z • 
* * 

< X - 


r> > — « 


x 

CM 


X M 
O X 


CO —• CM O 

o o o o 



a 



< 


CM 

a 

<r 


-• 


a 




0*0 



X 






X 




0 



CO 

CD 

CM 


Si 


0 


0 


0 


O 



O' 


0 


0 


<r 



0 

X 

t- 

O' 

a 

a 

<r 

— 

a 

O' 

X 

X 

X 

a 

X 

a O' 

a 

X 

CO 

CO 

O' 

X 

a 

a 

X 

a co 

X 

r- 

3 

CO 

r- 

3 

0 

0 

CM 

— 

3 

3 

0 

r** 

X 

3 

X 

3 r- 

3 


CM 

3 


X 

3 

a 

<r 

CM 3 


•T 

O' 

<n 

3 

a 

X 

0 

co 

vO 

O' 

3 

a 

X 

0 

CM 

CO 

jo so 

r- 

O' 

<t 

a 

X 

X 


CM 


si a 

O' 

<c 

a 

co 

a 

a 

a 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

<z 

<t 

<E 

<r <r 

< 

<c 

c 

< 

<t 

<t 

a 

a 

a 

a a 

a 

a 

t- 

r- 

r- 

N> 

r- 


r- 

r- 


r- 

r- 

r- 

r- 


c- 

p- r- 

r- 

p- 

r- 

r- 


p- 

r- 

p- 

t- 

p- p** 

p- 

r- 

0 

O 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

O 

0 

O 

0 0 

0 

0 

0 

0 

O 

0 

0 

0 

0 

0 0 

0 

0 


a 

o 


'0<T0r~0<t0aU.0CM 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 25 


223 
















CQ - 
O 

2 

X — ii 

a a 

H W S < 
2 2 <C ^ 


X 


<r 


3 

UJ 


2 

2 

< 

X 



t- 

2 



X 

<t 

U. 


H 

II 



t-* 


2 a 

X 

X 

2 



3 

<X 

2 


2 






2 

C 


o 


-i 


2 

UJ 



>—i 

J 

UJ 

u. 


3 

3 


UJ 

UJ 

t-* 



1 


i—• 

f- 

a 


— o 




a 


o 

2 


3 

X 

<c 

a 

UJ 


X 

3 

X 







X 

H 

<t 

H 

X 

3 

•—* 

X 

X 

O 


T-» 

H 

-0 

2 


H 

<c 

•—• 

2 

(3 

X 

o 

2 

X 

X 

2 


X 


X 

2 

3 


3 

c-« 

X 

<z 

O 

3 

UJ 

UJ 

3 

t-* 

3 

r-« 


X 

V/ 

2 

UJ 

ST* 


3 

2 

3 

X 

<t 



X 

t-* 



A 

3 


3 

X c- 


<c 

< 

<E 



X 

< 

3 

[-» 

p* 

3 

>—• 

3 

X 

3 


—• 


2 

UJ 

2 

UJ 

a 

UJ 


O 

44 

3 

UJ 

3 

«—i 


UJ 

2 

A 

r-* 

3 

2 

3 

2 

O 

O 

2 

3 

2 

r 

X 

> 

2 

X 

■** 

<t ■> 

O 

a 

a 

2 

<r 

3 

3 

3 


II 

•—• 

X 

3 

3 

3 

3 

a> 

H 

3 

O 

3 

2 

UJ 

<C 


X 

r-* 


A 


t— 

a 

a 

a 

X 

u a 

<X 

;X O 

U) 

u 


3 

<r 

> 






<X 


X 


3 

o 

O 


O 


o 


2 




A 


A 

<£ 

1 

2 

UJ 

>- 

UJ 

2 

3 

X 



X 


<t X 

a 


o 

a 

3 

X 


X 



O 


3 


r-» 

<X 

3 

—. 

u. 

u. 

2 

u. 

2 

2 

H 

3 

2 

UJ 

r* 


2 

A 

X 

H 

X 

X 

<C 

X 

a 

3 

H 

t— 

a 

r-» 

2 

x a 

3 


c-* 

> 

<E 

3 

r* 

3 

r* 

2 

X 

e- 


2 

•—< 

X 


3 



UJ 


UJ 


X 

O 

UJ 

'A 

X 

3 

44 

UJ 

o 


UJ 

3 

J 


1 —• 

2 


a 

o 



CJ 


a 


<£ 



3 


O 

a 


a 

e- 


3 

3 



X 

cO 

X 

It 

X 

UJ 

UJ 

U, 

X 

J 

UJ 

2 

H* 

X 


UJ 


3 

X 

H 

<r - 

a 

% 

ts 

3 

O 

H 

a 

a 

3 

X 

A 

X 

a 

X 

X 

2 

X 

a 

3 

3 

t~* 




a 

o 


r-» 


e- 

A 

A 


h* 

UJ 

A 

<t 

A 

3 

II 

a> 


< 

UJ 

UJ 

i- =«•> 

A 

3 


3 


A 

H > 

3 


2 


2 

3 


o 



UJ 


X 

UJ 

3 

II 


> 

o 

u. 


u. 


3 

2 

u. 



2 


UJ 

3 


o 



•—■ 

-0 

A - 

A 

2 


a 

a 

a 

a o 

< 


3 


3 

<r 


o 

a 


3 



a 




o 

J 

— 


— 


UJ 

— 

— 



— 


3 

<r 

3 

2 



3 


1 

c 

3 


X 

— 

3 

3 s 

U) 


X 


X 

U) 


3 



a 



3 


3 




2 H > 2 + 

X H 3 bi X a < :> 3 H t> 

Q X O 2 :> a x uj < j ^ x <t 

2 - H H O '» O r- A _J A A 

« ifl l»] U1 £ Z 2 - J<2y W 

-0 • OOL3-«-r'Qjr-^a 


a; 

X U. X 
X 3 H 3 
H — X O 
a a a * 


u 

> 

< >- 
UJ a 
< r- X 
.* * U) 

2 X Q <t 


O UJ U. 
O 2 
H 2 — f- 

2 O <C O 

— — r- 2 
r- 2 

W - O 3 

3 -0 O U 

JO CD 
<C X W <C 
2 > > 3 

ii <r 

o A u. 

— 3 H — 


< 

3 3 <C UJ 

% CD % W 

<1 — > 3 Q 


x 
u. 
a: h 

H X I 3 

a a •> •» 

UffllDU 


X 

3 3 

<£ X 2 

-0X0 2 HUH 

W % * •* 0 , •* <t 

Qxjxoxom>— 


Q 

.X 2 t> 
O 2 <1 
2 ^ H CO 
^ D UJ 

x a x x 3 


Uj •• 

J -J QJQOQJJO a 2 -0 3 3 3a C3Q Q a JXOJ a 

3 — - XJ — M — t J 0 .Jfl. t JX t JJJ«X>«J<£H 3-2 :> ~ >3Xa3=>:>Xa:>:>X:>X3:>3~ XI>~3aX — 3>~:>3 

<lXN31.Nj’5;<3:X2XX2<2XOX«lc!>OOX<r X W Z X X 03Nl0X0XC000X00202X0<tX\J20X<tX0X«a:030<i: 

333333333333 3 33X333SX233X X 3 3 2UJ3Z3X33ZZXUJ:e:z — 2 — UJ£33X — ’='3 33 X332-0 £3 

H H H 








•• 






2 


•• 











a a x 

2 






































p-* 






3 


a 



•• 








a 







































X 






2 


> 



a 








2 

2 






































—• 






—• 


o 



a 








•—a 

A 







) 































a 






a 


2 



<c 









2 







X 































3 






3 


h* 



** 








' *** *** *•* 

— 
































CO 


00 


a 

a 

O' 


a 

, 


a 

a 

a 



_ 

a 

3 




3 






a 




3 











<T 





X 

'O 



OJ 

a 




3 

o 


o 


o 

o 

o 


o 

o 

o 

o 

o 

o 

O 


o o 

O 



o 

O 






o 


o 

o o 




o 





o 


O 





o 

o 

o 


a 

o 




O 

3 


3 

3 

3 

a 


— 

O' 3 

C\J 

<T. 

3 

a 

o 


a 

o 

<r 3 



3 

O' 






3 


o 

a 

<T 




o 





a 


a 

^4 




X 

a 

o 


X 

c 


44 


<T 

<T 

OJ 

O' 

OJ 

<E 

X 


o 

a 

X' 

OJ 

X 

3 

O' 

OJ 


a 

r- 

a o 




<T 





o 

3 


OJ 

a 

A 




OJ 







3 





a 

o 



a 



o 


A 

3 

a 

<n 

a 

<C 

a 

3 

a 

OJ 


<c 

a 

3 

a 

a 

X 

<C 

3 

3 a 

X 

p* 


3 

a 

O' 


O' 

a 

<t 

a 

<r x 

<r 

3 

<r 

3 

X 

OJ 

O O' 

a 

a 

a 

OJ 


3 

a 

a 

a 

a 

44 

3 

<c 

X 


3 

O' 

O 

a 

Q 

3 

a 

3 

a 

3 

3 

3 

a 

3 

— 

OJ 

3 

3 

3 

OJ 

a 

O) 

3 

3 a 

a 


OJ 

3 <C 

3 


r" 

3 

3 

■T 

oj a 

OJ 

3 

<r 

<r 

a 

OJ 

a a 

OJ 


OJ 

OJ 

<r 

3 

a 

3 

OJ 

A 

OJ 

3 

OJ 

a 

OJ 

3 

r* 

3 


3 

3 

a 

— 


a 

O' 

3 

a 

— 

<1 

> 

< 

3 

o 

a 

o 


<C 

3 O 

OJ 

a 


P» 

<c 

X 


3 

3 

a 

OJ 

a a 

r" 

<t 

3 

a 

a 

o 

a <r 

a 

a 

r~ 

a 

X 

U 

a 

_ 

OJ 

a 

■7 

r- 

<E 

3 

a 



A 


a 

00 

CO 

O' 

O' 

O' 

O' 

O' 

O' 

<t 

<c 

<t 

<Z 

<1 

X 

m 

X 

X 

X 

X 3 

3 

3 

3 

3 

3 

3 


3 

3 

3 

3 

3 3 3 

3 

3 

3 

3 

a 

a a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

o 

o 

O 

o 

o 

oo 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a a 

a 

a 

X 

a 

a 

a 


a 

a 

a 

a 

a a 

a 

a 

a a 

a 

a 

a a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

X 

O' 

O' 

O' 

O' 

O' 

o 

o 

o 

o 

o o 

o o 

o 

o 

3 

o 

o 

o 

o 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

o 


o 

o 

o 

o 

o o 

c 

o 

o 

o 

o 

o 

o o 

o 

o 

o 

c 

o 

o 

o 

o 

o 

o 

o 

o 

o 

c 

o 

o 

o 

O 

o 

o 


2 

3 UJ 3 

2 2 0 

0 2-0 
O K J 


a 

3 


o 


2 

X X 

r- n 



X 


a 

X 


3 


3 

3 




<r 



X 


a 



/) 

£ 


o 

2 

3 


o 


X 

o a . h 

2 2 

O 


t— 

a 

X 


3 

3 a 

«—• 



3 

X 

*j 

<t 


r-* 


—• 

r- 


h* 

r* 

C ) 



<i 

2 

3 



a 

3 



3 

O 


3 


a 

a h* uj 

44 44 

a 

X 

a 

o 

a 

a 

O 

3 2 

3 3 

o 



<x. 


X 


a 


a 

a 


2 

X x 




X 

44 

2 


C'* 

X 

r-* 

44 


O 

3 




X 

c a 

H 


<E 

X 


SJ 

A 

3 

<t 





X 

3 

3 


£ 


X 

X 


3 

3 a 

3 


UJ 

3 


<C 

c** 

X 


a 


X 

3 


3 

r* 


a 

a <£ X 2 

uj a 

X 

X 


3 


3 


o 

2 

2 



3 






3 


a 

O 

3 2 



44 


a 



3 

a 

X 

2 

3 


a 

X 

a 

H 


> x - - 

a a 

<r 

3 

2 

2 

2 

a 

X 

a h 

X 

O 


3 


r* 

r-* 


2 


2 O 

2 

UJ 

3 

<E 

UJ 



t- 

> 


O 

44 

a 


X 

3 

X 

■> 


-0 

2 ; 

H 

a 3 a i- 


X 

l 

a 

a 

a 


£ 

2 

3 

44 



3 

44 

a 


a 


a a 


3 


O 

44 


r* 

a 

<c 

X 

3 

X 

3 

3 

3 

<Z 

<£ 

<E 

t- 

a 

a 


44 UJ 

-, * 

3 

X 

X 


X 


D 

3 o 

H 

-4 

A 


a 

2 

3 


X 


X 

X 

a 

a 

a t- 



44 

3 

UJ 

3 



a 

2 

C -4 


X 

UJ 

a 

X 

2 

a 

rt a a a 

a 



a 

a 



X 

X 3 

a 

44 

A 

• a, 

X 




J -4 


r- a 

t— 


2 

2 

X 





a 

3 

o 


< 

a 

UJ 

3 


UJ 


uJ 

o 

h* 3 ^ 

Q 

h* 

a 







X 

UJ 

a 

X 

3 



a 


a 

44 



3 

3 O 

a 

X 




X 

O 

o 



X 

H 

II 


a 


r* 


a <t <r 

<E 2 










c 

X 

3 




— 


— 




X 

X 3 

f* 

c 




3 

r* 





a 

3 


X 


<c 

X 

X uj uj 

UJ <£ 

3 










3 


2 











< 

3 

a 














UJ 

X 





o c u. 

U. 3 O 

2 % 

X — =»t X 

UJ X 3 
3 t- * 3 


X 3 X 
< U. Xt UJ 
X O r- — 

o o 
rt 3 < 
X 3 <t rt 
UJ a J <c 




OJ 

2 

UJ 

U) 

<C 





+ 

X 

C 

a 

X 







o 


a 

3 


> 




¥ 









X. 

f—• 



3 







3 

2 

3 

a 

II 

■> 3 <t > 




X 


II 

II 

il 


O 



3 

a 

II 

o 




3 


3 



3 

X 

U) 

> 

<t X < < 

X 

X 

3 

A 

D 

A 

3 




— 2 • 

3 

X 

3 

<t 2 

X 


*• 

II 

2 

2 

X i- 

X 



X 


3 3 3 

44 

<1 

UJ H UJ r- UJ 

H 

3 3 


«. 2 *» 

< 

3 

<t 

3 

•» * UJ 

<T 

3 

* 

** 44 

3 

3 

a 




44 O 

< 

o 


<t 

2 

A <C % 

3 

UJ 

a a 3 •» w 

a 

O NJ 

<C - 

3 X — < 3 

— 

X 

3 

X 

3 < - 

O 

3 

<t 

— 3 X UJ 


X 

NJ 

3 


3 

<T 2 

A 

2 <r 

X 

X 

3 

3 3 3 

i 

td 

X 3 3 X 3 

3 


X — t> — > X a < > r- 
2>0XNJO3O22XOUJ 

3 X 332 <X 2 — 3 X 2 X 


— — — — :>~:>xa. 

3>OXNJXN1XSJ00022 
220X0X0 X 2 < 2 — 3 


:> :> — — <t H <1 H 

OOX2XXXUJXUJ 
223333XXOX 


J J 

J O J t> H 

<1 O C O UJ 

o 2 o 2 X 


3 3 3 3 O 3 

^ 5: 5: * ^ 5 ^ 

3 UJ UJ 3 UJ >< 3 



3 a x 

.. 

t- a x 



3 

.. 

a 2 


•• 


2 

X 


a 

•• 

r* 

a 

o a 


a 


44 

3 

a 

—« 

3 

a 

3 



X 

•• 

UJ 

2 

3 

p* 


UJ 

t-* 

t- 

a 

o 

3 


44 


a 

o 


a 


o 

2 

N 


UJ 


3 

2 


% UJ 

• H .« • 

•» r* 

r-* 


o o 

3 O' — O' 

O <T O (O 

COCOUJ<EO"OU.fOfOU,U.O' 
DOii.Ol'O^WOd^D 

CXOUJ — CVJ^iyi vDO'«I3 
tnoron<T<T<x-7-7>r-g , <r 
XOO'X)COXCOXX)CDCCtCX 

oooooooooooo 


— <r n 3 — uj 

O OJ C\J o o ^ 

UJUJUJcOUlCOUJCOO''OU.COrO 
Or-U.OU.OU.Ot'-O'^CVJO 

ouJU.-cM^xir-xo'aua 

xxxxxxxxxxxxx 

0000000003000 


— UJ <r UJ 
■sT vO tO 'O 

UJvOUJ<XU4CV]U.O'>TO' 

r>q-u.u.u.u,<ioxo 

o-w^r'O'oauu. 

vO'OOOvO'O'O'O'O'O 

X X xxxxxxxx 
oooooooooo 


o o 

3 UJ 

O' <X 

3 — 3 CO O' 

o^ro^o 

O co <r r- co 
c— t^- r— r— c— 
co co ao cx> ao 
o o o o o 


o O o o o o 

<t CO OJ 3 O 20 

— ro oj oj co 

< oo OJ — C\J 3 <t 

<M OJ OJ C\J OJ uj OJ 

O' O u. c\] x X O' 

r- h MC X X co 

X ^O CO X X CO CO 

o o o o o o o 


Page 26 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


224 





















2 







X 





X 


— 






>- 

X 





X 


r» 

a 





X 

X 





a 

X 

3 

X 





r* 

< 

X 



3 

s 

o 

X 

X 





2 

■—. 

s 



_. 

3 

X 

3 

< 

>• 




X 


< 


>• 

d 

2 



X 

d 





<t 

z 


d 

X 


X 

d 


r* 


t- 


X 

3 


H 

r* 

s 

X 

o 

3 

X 

Z 

r— 

<—• 


X 


X 

M 

2 

3 

X 

o 

3 

X 

X 

•— 

X 


< 

X 

X 


(3 

2 

t— r* 

X 

< 

I— 



X 

■% 

3 

3 

H> 

X 







X 

X 




3 


3 

X 

X 

X X 

z 

X 

X 

X 

d 

z 

H* 

z 

< 

1— 

< 

X 

X 

X x 

X 

3 

3 

t— 

o 

X 

O 

X 


X 

3 

r-» 


o 

X 

X 

< 


t—• 

X 

Z 

X 

X 

3 



3 

r- 2 

r- 

X 

A 

r» 

A 

r* 


r* 

A 


3 

H 

3 

3 X 




X 



X 


X 


2 

X 

X 

X 




3 



— 


X 


< 

3 

X 

H 


:> 

< 

A 

a 

< 
Z a 
— •> 
z a 


uJ 

X d 
x d o 

r* h» H 
Q 2 -0 
* UJ < 


O f- 

n 2 
< U) 


3 3 X < > I 


3 UJ 

<t st: 

A X 3 O 

s .d h z 

a < ^ X A 


I 3 2 


I 


-J -J -J J J -J -J 

2^1<l3l>l!l,22CH<<I<W<i:U 

3a333X33~S^033d3.d 


z 


H 

z 

UJ 

3 


x 

x 

3 

3 NJ 
UJ 

a 

Z t- 

— o 

UJ r* 
Z O 

— z 
-J 

>* 
UJ d 
Z p* 

° 3 

H 

UJ X 

U ~ 


3 

X 

z 


0. d 

o o 


o 

; a. 

1 x 

s d 

I 3 < 
3 X 
3 


Z 3 , 

— 3 

>• u S X S X ; 

UJ * •» <1 •» Q . 

x x < - x < 3 


d 

r* 

Z 


d 

UJ 


X 

3 

■- 

v 

X 




< 

X 

r- 1 

3 

a 

X 

X 


— 


X 

2 

«? 

3 

3 


A 

s 

X 


3 

Z 

< 


X 

— 

3 

X 

2 

< 

3 

2 

X 


3 

o 


r' 

3 



o 

< 

a. 

X 


X 

< 

z 

3 


O 

a 

X 

2 


X 


3 

X J 


o 


< 

X 

X 

2 

3 

(— 


3 


H 

A 

< 

X o 

3 

r* 

2 

>- 


X 


X o 

3 

3 

X 

Ij 

•A 

X 


3 — 

2 

O 

3 



o 
S X 
o 

d -0 
X r- 
UJ 
r- A 
* 

UJ Q 
— 2 
< 
Q 

UJ <£ 
-J UJ 

uj d 

Q < 

< 

X X 
O X 
3 
UJ 3 
3 
< i 


UJ o 
d 

3 3 ll 

3 

Z < r* 

— Z 

r- 2 3 

X 2 t- — O 

3 3 ^ r- 3 

3 0 3 X3 

<3033 X 
3 3 3 < 

3 X < X 

3 < 3 i X 3 

X X X < 3 
3 3 3 X 

O 3 r- X — 

-0 || A 3 

< < 

3 3 3 


Z C 
X 3 
3 3 

7- < 




Z 

t-. 

X 


o 


X 

a 

x; 


-J 

3 

7 

X 

X 

3 

3 

a 

X 


X 

O 

3 

H* 

3 


3 

3 

< 

r— 


a 

3 

O 

Z 

3 

X 

—< 

< 

x 

1 


< 


3 

•—< 

<5 

< 

X 



< 

X 

X 

X 


o 


X 

X 

X 

X 


X 


< 

X 

X 

X 

3 


3 

X 

X 

— 


X 

X 

1 

3 


z 

X 

r— 

3 


3 

3 

3 

< 


X 

X 

3 


3 

X 

3 


3 


X 


X 

O 

X 

< 

> 

< 

II 


r* 

3 


(-« 

3 

■> 


3 




X 

< 




o 




3 


3 

a 




s 



X 

< 

X 

3 


O X 

X 3 
3 2 
< 












X 3 

X 






X 


< 








< 











3 




o x 

X 






JU 

**5 

3 








3 

X 








— 


3 

X 


s 

H Z 

3 

z 





3 

x 

a 

z 







a 

X 



• 


X 


X 

+ 


s 

o 

V 

3 

3 — 

a 

X 


x < 



a 

--« 

< 

X 


X < 




< 





3 


” 

X 

“ 


2 

c 

t— 

z 


X 

r-> 

3 

r* 3 

3 


X 

X 

X 


3 

I-. 

3 

3 



x 

VC 

X 3 


• 

X 

z 

3 

X 

O' 


«* 

■X 

2 

X 

1 X 

■« 

Z 


X x 

* 



X 

•* 

2 


X 

X 





X 




O 

X 


z 



X 

X 

X 

3 

o 

X 

i 

3 

a 

< 3 

< 

< 

X 


X 

3 

a 

< 

3 

< 

< 


X 

a 

X x 

X 

< 

X 







X 

X 


X X 
o o 


X 


3 X 




X 


X 


3 

X 





x 




X 

X 

— 


— 


— 1 

X 

X 

X 

f* f* 

—> 

X 

3 

X X 

3 

< 

*-* 

X 


X 

3 

X 

X 

3 

< 


_ 

x 

3 3 

X 

_ 

< 

s 

X 

s 

X 

$ 

X 

< 

< 

s 

•3 

X 

< 

O 

I < 

O 


NJ X 

< 

X 

< 

O 

X 

< 

O 

X 

NJ 

X 

< 

o o 

3 

3 

3 

3 

3 

3 

3 


X 

3 

3 

3 

s 
^ q 

X 

3 

■z 

X 3 

s 

o 

X X 

3 

X 

3 

s 

X 

3 

s 

o 

X 

X 

3 

s s 

3 

s 


U X 

H X 


O' 

CVJ 

r» 

O' 

O' 



O' 




O' 

O' 

< 


O' 


3 

o 

o 

3 

o 



3 



3 

3 

o 

o 


3 


3 

X 

5T 

CO CO 


CO 

<T 



< 

3 

X 

in 


3 



A 

3 

CO 

a 


CV] 

CO 



■«T 

3 

O' 

3 


3 


CV) 

— 

3 

3 

3 

O' 

X 

CVJ 

CO 

X 

CVJ 

3 

3 

3 

O' 

3 

3 

3 


3 

3 

3 

3 

X 

3 

CVJ 


CO 

3 

3 

3 

3 

3 

3 

3 

CO 

NO 

O' 

3 X 

o 

CVJ 

in 

3 

f* 

< 

3 

3 

CO 


r- 

'O 

vO 

vO 

vO 

3 

3 

t-- 

r~ 

r- 

r^ 

f- 

r~- 

r» 

3 

3 

3 

3 

O' 

3 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

3 

3 

o O 

3 

o o 

O 

o 

O 

3 

o 

o 

o 

3 

3 

O 

3 

o 


3 

— 







CO 

CO 

3 


3 



X 

a 

3 

3 


P* 



3 




3 

O 







3 

3 

3 


3 



3 

3 

3 

O 

3 

3 


3 

3 




n 

3 


< 




3 

X 

X 

X) 

3 

f*- 

< 


< 

X 

X 

X 

a 

a 


<T 

X 




3 

3 


— 




3 

3 

3 

X 

CO 

< 

CO 


< 

Q 

X 

3 

3 

3 



X 




3 

— 

X 

X 

3 

CO 

X 

X 

< 

3 

co 

X 

< 

X 

X 

«—a 

a 

a 

CO 


a 


< 

a 

3 

is. 

X 

3 

CVJ 

''' , 

X 

3 

CVJ 

r^ 

X 

3 

3 

3 

X 

X 

U. 

X 

CVJ 

3 

3 

3 

CVJ 

3 

< 

CVJ 

3 


a 

3 

3 

a 

X 

X 

— 

CVJ 

CO 

<r 

3 

3 

3 

X 

_ 

< 

X 

r- 

< 

a 

3 

co 

X 

3 

< 

a 

3 

| 

CVJ 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

< 

< 

< 

< 

< 

< 

a 

a 

a 

a 


a 

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 

o> 

3 

O' 

O 

3 

3 

3 

3 

C 

3 

3 

3 

3 

3 

O 

3 

3 

3 

3 

3 

3 

o 

O 

3 

3 

3 

3 

3 

3 

3 


— 3 cvj r- 

0 3 0 0 
3 < .x. 3 
3 X X 3 


-3-3 

CVJ 3 CV) 3 


X O 3 3 X 

3 3 3 3 3 

O' O' O' O' O' 

C O O 3 O 


— O' 

3 O 
<T O 
3 X 

< 3 O' r» 
cvj 3 a 

3 x 'O t- 
3 3 3 3 
3 O' O' O' 
3 3 0 3 


CVJ 3 

3 3 

X < o 

3 3 C\j 

3 - 3 3 CVJ 3 X 

3 CV) 3 A 3 A] 3 


3 O' 3 X O — CVJ 

Q 3 3 3 X X X 

O' O' O' O' O' O' O' 

3 3 0 0 0 3 3 


X 3 
3 < 
3 3 
< X 


5? 



X - 

Z> X 
< A 
A 


< 

A 

X 

3 < 

3 3 

X X < H 
3 X X X 
X A X x 








d 

a 






BC 






































3 





r-* 


< 






z 




























X 










3 





2 


a 






— 









X 

— 


















a 


























X 

X 





T 

3 










d 




d 








X 











O 


o 





H 

d 



X 

X 





H < 











a 




a 








X 











3 

— 






X 

X 



r-* 

r-* 




X 

z 

II 


r* 







X 

a 




a 




X 













r- 

— 







X 

X 

t— 



Z 

z 




X 











< 

< 




< 




3 





3 









3 

Z 

>• 

X 






z 



— 

— 




H 

a 3 

< 


X 



a 




X 






















X 


o 

a 

2 




r- 


— 



3 

3 




z 

2 



H 



X 




3 

«-* 





















f* 

II 

— 


— 




Z 

X 

c 



X 

X 




— 

X - 


2 

l 



x 




l 

X 




X 



3 





X 

u. 








l 


— 

r - * 

O 




— 

3 

X 







X 

o 

O X 

a 

X 

< 



< 


2 

X 

< 

X 




X 


3 















i - * 

< 

— 

Z 

X 


X 


o 





z 

X 



< 

X 

r* 

2 

3 



a 

a 


3 

X 




d 




3 

3 

T 


H 



















X 

r— 

X 



— 

< 



X 


r* X 

a 


r- 


X 



_■ 

X 

—. 

1 


a 

















i— 


a 

Z 

3 

o 

z 


a 



Z 

< 



— 

X 


a 

3 

d 

X 

3 

X 

X 


o. 

a 


—« 

Jj 

X 

< 


a 


< 



X 

X 


X 









2 



X 

a 

3 

X 


< 


X 

o 

X 



X 

3 


X 


< 

< d 

X 

d 

3 


< 

X 


< 

3 




< 




d 


a 










X 



a 

X 


X 

X 




< 

d 

3 



X 



a 

X 

X 

r- O 





a 

X 

X 

2 

a 

M 





II 


< 

3 

3 


l 


X 

X 







a 

— 

r— 

r-* 


2 


X 

X 

X 



a 

H 


< 

a 

3 

X a. 

i— 

2 

X 



3 

X 


< 

X 



2 



X 

a 



< 


a 

X 








F, 



3 



— 


3 

X 



X 

X 


a 




3 

X 

X 


a 


X 




C.J 




a 


3 


3 










r* 

• 

X 

A 

•l 

3 

—< 

3 


T- 



3 



3 



X 

X 

II X 

Z 

X 

a 


X 

< 

d 

X 

2 

>* 

a 




X 



X 

X 


X 


X 






X 

< 




a 





— 

3 

< 



3 



r-* 

a 

3 

o 


— 

2 


X 



UJ 


a 



X 




II 


X 











t— 

• 

A 

z 


X 

X 


X 


X 

O 

A 



< 



X 

a 

< 

e> c 

X 




3 


a 

a 

—. 




X 










A 



X 



A 

f| 

< 

3 


•C 



a 


3 

s 




A 



3 

< 

X 

x a 

— 





d 

X 

< 

° 

X 

< 



a 




3 




V 


X 



t— 



r- 

3 


X 























S 

z 


a 









■ i. 








r- 

< 

X 





























X 

i—• 



















3 



X 



— 

c - * 























>- 

< 

—. 

a 

—. 




















c* 



o 

























A 

X 



















a 

a 


X 

— 

t- 

z 
























X 

X 

3 

X 


















a 



*" H 

r* 

























3 

2 

a 

O 

z 


















< 



H 

A 

3 

cl 

a 























T - * 

< 

a 


s 

II 


















ii 

z 

z 

X 

3 

X 








■x 















a 

a 






















X 

X 

X 

< 





> 



X 




3 



a 



X 





X 

3 

.< 

3 




3 




0. 




X 








t-* 



a 





< 


X 

f* 




< 



3 


X 

X X 



< 


— 

ii 

< 

X 

< 




< 




3 











3 



II 

< 


3 


a 

< 

X 


A 

X 

X 

a 


A 

a 

3 

r* 


r» 

H 3 



t— 


z 


X 

— 

X 


X 

a 

X 


a 

3 


3 


< 










a 



X 

•< 


:a 

•» 



X 

a 

* 

% 


X 

A 

•* 

X 


X 

X o 



X 



a 

X 

1 

X 




X 




X 






X 







a 

3 



< 


a 

3 



3 

a 

a 

3 


a 

X 

a 

3 

X 

3 

< x a 



3 


c 

X 

X 

a 

< 

a 

X 

X 

3 

a 


X 

a 

X 

< 

- 

3 

X 


a 

< 


1 

X 


a 

a 


X 






a 

3 

a 

a 



3 

a 



a 


a 

a a 



a 


t-* 



X 





a 

3 









a 



Z 



3 

< 

•• 

2 



— 



X 

X 

X 

a 

3 

3 

X 

a 

3 

3 

a 

X 

rl 

a x a 

— 


a 


x; 

•• 


2 


X 

3 

3 

r-J 

X 

3 

3 


3 

_ 

3 




< 





• 

a 

X 

tC 


3 


NJ 


a 

3 

X 

< 

o 

3 

3 

X 

3 

3 

< 

3 

X 

X z < 

X 

NJ 

< 

X 

X 

d 




2 

3 

3 

X 

3 

O 

3 

< 

3 

3 


< 


X 

d 

X 

_ 

„ 







S 


3 

S 

a 

X 

a 

3 

s 

S 

X 

X 

S 

S 

3 

U 

X 

a — 3 

3 

d 

3 


— 

X 


ll) 



2 

V 

a 

X 


S 

3 

S7 

X 

s 


X 

X 

X 

X 

< 


X 



p-* 

2 

X 
























i 

< 

2 


~2 

















X 

3 

a 



c. 


t-* 























X 


d 


















X 

2 

X 

3 

2 




X 








•• 














X 





< 
















3 

X 

X 


— 




X 








a 














3 





























z 








a 








































••i 



•> — 








a 

















M, 

i* 

* 3 





















z 

O X 

- < 

3 X 
3 3 
X 

C r- 

X 3 3 
X X 
X — r* 
X o 
X z 


3 r- 
3 X X 
< 3 - 


3 X 
< 3 
A t— • 

3 X «* 
X 3 - 


3 

X 

X 

X 


X 



X 

o 

< 


— 





O' 


—• 


— 

3 







r- 

O 





3 


O 


3 

3 




3 



3 

3 





CVJ 


o 


X 

<T 




3 



3 

CVJ 




3 

CVJ 


CVJ 


CO 

X 




OJ 



A 

a cvj 

X 

O' 

O' 

vO 

< 

X 

< 

a 

< 

a 

< 

a 

a 

CVJ 

3 

3 

a 

X 00 

< 

3 

r* 

a 

3 


CVJ 

X 

oo 

3 

< 


X 

cvj 

X 

'O 

3 

a 3 

X 

3 


cvj 

< 

r*. 

cc 

a 

3 

X 

CVJ 

co 

< 

X 

CO 

3 

< 

c c 

3 

— 

— 


— 

— 


— 

»- 


CVJ 

CVJ 

CVJ 

CVJ 

CVJ 

OJ 

CVJ 

O' O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3 

c 

o 

3 

3 

3 

3 

3 

3 

3 

3 

3 

C 

3 

3 

3 

3 

O 



_ 


vO 



3 









CO 



3 

3 

3 



3 





3 




C 



CO 

< 

O 



X 





3 




3 



CO 


3 

3 


X 





CVJ 




r~ 


a 

CVJ 

< 

a a 

X 

CO 

a 

3 

X 

< 

a 

< 

a 

O 

3 

a 

3 

CV) 

CV) 

CVJ 

CVJ 3 

X 

3 

3 

3 

CV) 

< 

<T 

CVJ 

X 

sO 

X 

3 


a 

X 

— 

<J X 

CO 

< 

a 

X 

X 

3 


CVJ 

X 

'O 

r- 

CO 

a 

OJ 

CVJ 

A 

X X 

A 

X 

X 

X 

X 

•ST 

< 

< 

< 

< 

<T 

<T 

< 

3 

3 

3 

3 3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

c 

3 

O 

3 O 

O 

O 

3 

3 

O 

3 

3 

3 

3 

3 

3 

3 

c 


3 — 

C O 

- < O 

O 3 CV] 

0X310] 
3 <T 3 UJ CV) 

3 X X CVJ CO 

<T <T < 3 3 

O' O' O' O' O' 

3 3 3 0 0 


X O' 
< 3 

vO r— 
3 3 
O' O' 

o o 


o 

< 

< 

OJ 


r» 

3 

3 <r 
CVJ CVJ 
3 X 
3 X 


xxx 

3 3 3 
O' O' O' 
0 3 0 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 27 


225 



















!/> 

X 

Z 

<t 

J 

3 

X 
W Q 
3 Q 
Q. <C 


-0 

x 


X 

3 

Q 

<t 


X UJ 

r- Z 

2 — 

— _] 


r- X W | 
J U. > > > jr 
Z> 3 <t <t <t 

s a /i ^ d 

w JE JO 

w X 3 X 

Of- t- X 
3 3 2 3 id 

o 1 - 1 2 o 

Id ~ O 

£ 3 


x 
o 

H 
3 — 

2 3 w 

3 -0 2 0. tj X 

o d i <e o 

X H 3 s X 

Ld t- O Q 
y J) Id Cd 2 

W X 3 X Id 

t- 2 id CO 

- id Q - X 

X Z d d - 

X t- <L t- 3 

— id Q 

e < 


X Ld 

U. ■> > 

NJ Z> :> <t <t X 

id 2 <C -0 t/) Id 

o Id yi s J Q u 

3 *3 •« 3 Z % 
■/) I i x x — d 1 


id 

Z 

d J 

<c 

X 1*. 
H 3 O 

3 t— Q 
3*2 
Ld Id 

S 2 u. 

X d - 
Q 
3 
<t 


Ld id E 

x z z t- 

H 2X0 2 X O X Z 

a. * q q ^ q a u 3 

ZX<t02X<t02Zt/) 


X 

3 


X 

3 

3 


3 

X 












X 

<t 

X 














X 


3 


3 

3 








X 





3 


3 X 

X X 

3 

<c 




X 


o 







o 


<t <t 

<E X 

<t 





<c 

o 

X 

o 

3 




O 

2 


X 

X x 


E 




X 

£ 

X 

2 





o 


X 

X o 

O X 

2 





o 

Ld 



t— 




X 

X 

3 

o 

r- 

X 






f— 

X 

X 

<t 





X 

3 

X r- 

X 

X X 





r* 

— O 

o 

o 

2 


X 

X 

X 

X 

<t 

3 X 

a x 

— X 





X 

i Z 

X 

X 

— 

X 

X 

3 

o 


X 

o x 

3 

1 t— 

X 



X 


2 

— 

— 

2 

3 

X 

3 


X 

2 <E 

X z 

2 O 

2 2 

X 

X 


3 

X 

X 

3 

3 

X 


2 

C 

X 

o 

— X 




—• 

<c 




X o 

O 

o 

X 

<1 

— 


< 

X 

x O 

X 

x 2 



X 


X 

X 

X r- 



X 


o 

2 

X 

X 

X 

X X 

x <r 

^ a. 

X 

o 


r; 


O — 

2 

2 



X 

— 

o 


X X 

X r- 

X 

X i 

<E 


X 

o 

•* 

2 3 

X 

X 

X 

X 

1 

r— 


2 

3 3 

2 

3 r- 

2 2 

X 


3 

o z 

3 

O 



o o 

X 

2 

J) 

X 

JU 

o 

X 

3 


O 

X 

<t 

X X 


. X 

X 

X 

o 

— 


X 

X 

X 

ll 2 

ll o 

ll O. 

II X 


3 

X 

X 


’ O X 

X 

X 

< X 

1 

X 

3 


c— 


X 



V 





rl w 

o 

o 

2 X 

2 

X 


X 


O 

3 X 


3 < 

X 




X 

X O 



X 2 3 


C3 


»—• 


X 

X o 

2 

X X 






, ». 



3 0 3 

t— 



•«* 






X 


.n 

M. 



I X > - X !> - 


3 Q Q J i 

J-J-JJXNNJ: 
<XXXXX<X0X22X00XNJ20X?d2<ti 
33-0 3X3203 X0QS03 — 20330 X 


o 

X o t- 


Ld 

2 

O 

3 

2 


3 

(O 
Z 
X 3 


<t <C f- 
X H id 
O O X 


2 

s 

. o 


<X O <X X 
O Ld 

2 3 2 2 

co 3 

O H 
H Q - 


3 

X 
Z 
<t 3 


< < H 

3 t- id 

o x 


Id 
2 H 
Ld <X 
r- X 

- <C 

1 X 

2 Ld 


to x 

Ld 

3 Id 
O X 
2 <t 


• X X 
2 H O 
X 

ii 2 i: 

x 

x °a 

t— 


n 

2^3 


O 


.. o 

O H 
2 — 

1 

2 


•• 2 

X X 
Ld 3 
H i— 
2 Ld 
Ld X 


Ld 

3 

< 

X o 3 
H 2 X O 
X •» X 2 
2 3 2 'O X 


2 X 


CM 

3 

O 

2 

2 X 


X 

Q 

O <E 
* % 

<£ 2 X 


X X d! 


C\) 

3 

o 

£ 

2 


O X ' 
2 3 
u3 Q 

c— <t 


r- II 
Ld 

* 5 ! 


C5 C3 C3 C3 3 

XX3XXXXX — 3XXOH 
>4Z00Z02Z030Z0Xld 
0003*— X2*— X3*— X22 1 — X'O d 


X <E 
z <r x 

Ld X O 
Id O 

II 
X 

<r 


x 

<t 

x o 

o .. 2 

d d 

X Ld 3 
<1 r— i— 
Ld 2 X 
X x X 
X 

I 


S <t X 
«» •* 3 
<C X o 


X 

o 

X 

X 

2 X 


3 3 m <E X 

O O X N) 3 2 
2 2 0X00 


X 

X 


<t 


— 


— 

r- 



<r 


— 




<r 




<1 

<t 

< 









<t 

<1 






<t 















o 

o 

o 

c 

o 

o 



o 


o 




o 




o 

o 

o 



o 



o 

o 

c 

o 

o 






o 







o 






o 


X 

3 

< 

X 

o 

O) 



VC 


o 



3 

X 



3 

Oi 

—• 

X 



X 



X 

o 

X 

X 

< 






X 



3 




o 




3 




3 

O 

—• 

X 

—■ 

X 



r— 


X 



O 

r- 



O 

r* 

X 

r- 



< 



< 

X 

X 

O' 

O' 






X 



o 




X 




o 




3 


O) 


O) 

3 

o 

p» 

< 

o 

<c 

X 

X 

X 

<£ 

X 

X 

X 

< 

X 

3 

O' 

< 

O) 

O' 

X 

O) O' 

<1 


3 

<£ 

X 

X 

O X 

X 

X 

X X 

X 


X X 

o; 

O' 

X 

["• 

X 

x <r 

X 

o 

03 

O) 

03 

O) 

o 

r~ 

X 

o 

o 

O) 

OJ 

r- 

X 

o 

O) 

C'* 

X 

o 

o 

o 

o 

X 

X 

o 

<t 

X o 

03 


o 

o 

O) 

X 

r~- 

03 

X 

o 

OJ 

X 

X 

p~ 

O) 

X 

O) 

o 


< 

X 

o 

X 

X 

vO 

O 

o 

X 

O) 

X 

CO 

(3 

<c 

3 

X 

_ 

O) 

X 

X 

X 

ON 

<t 

o 

X 

OJ 

X 

X 

c- 

<t 

X 

O X 

o 

X 

vO 

O' 

o 

3 

X 

X 

o 


< 

X 

X 

X 

O' 

<c 

X 

X 

X 

o 


X 

< 

r- 

>T 

<T 

<T 

<r 

X 

X 

X 

X 

X 

X 

X 

o 

o 

v£> 

'C 

vO 

VO 

'O 

vO 

X 

r- 

r- 


r~ 

c^ 

r> 

r* r- 

X 

X 

X 

X 

X 

X 

X 

X O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

< 

< 

<z 

< 

<£ 

<E 

< 

<c 

< 

< 

<t 

<c 

<r 

< 

<L 

< 

<r 

<c 

<t 

<z 

< 

<r 

< 

<c 

<t 

<t 

<r 

< 

< 

<c 

< 

<C <£ 

<t 

<r 

< 

<t 

< 

<r 

< 

<t 

<r 

<t 

<c 

<E 

<t 

<E 

<t 

<t 

<c 

<x 

<x 

< 

<t 

<t 


< 

O 

o 

o 

o 

o 

o 

o 

o 

o 



o 

o 

O 


o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

O O 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 

o 


3 r» 

* 3 





3 







o 





3 


z z 






X 







3 





O 


u3 X 






3 







X 





3 

O 

r— 





— 

o 






X 

X 





X 


2 <t 


X 



o 

2 






CJ 

X 





£ 

II 

O r— 





v/ 


t- 


X 



<c 

3 





X 


X X 


z 

X 



X 

z 


3 


X 

X 

o 

l- 




3 

r— 

X I 





3 

X 

3 




X 

X 


2 




O 

2 

<c 



X 


X 


o 


z 


—• 


X 

3 

C'* 

X 



3 

X 

X 

X 

X 


X 

o 

CJ 

r— 

>—1 


CJ 

X 

3 

O 

2 

X 


X 

O 

3 2 

xxx 

2 

r— 


3 

r— 


X 


X 

<r. 

o 

<E 

3 


—• 


o 

3 

3 — 

3 <1 X 

<t 





« 

*-• 

< 

X 

X 


r: 


< 

2 




<t 

3X2 

z 

•x; 


X 

3 

<c 

3 

3 

r- 

<r 

3 

o 

X 

3 

•—< 


2 

X 

3 X 

<t 3 ^ 


2 


X 

x 

X 


3 

2 

X 

2 

—• 

3 

<t 

O 



< 

2 

z 

X 

< 


X 

o 

CJ 

3 

< 

—i 

o 

X 

X 

X 


X 

X 

<t 

X 

3 <£ 

X e- 

X 

3 

X 

£ 

.3 


o 


O 




3 

X 

1 

O 

3 

3 

— 2 

3 X X 

t— 

X 

3 

3 


II 

3 

2 

X 

r— 


2 


3 

<t 

r— 

X 


x 

r: - X 



<t 

3 

2 


X 

•—1 


X 

—> 

X 




X 

2 

c— 

X X 

3 r- 

H 



<r 

— 

o 

X 

h* 

X 

3 

o 

X 



X 


O 

X 

2 3 

O X 

X 


o 





X 

3 



r— 


3 

3 

r-* 

3 

X 

3 ra 

X 3 H 

o 


r- 


5— 



X 

X 


X 



< 

<3! 

X 



z <r 

3 X 



X 

1— 

2 

% 

— 

3 

3 


— 



3 

X 

X 




< 3 



O 3 
H X O 3 
X 3 o 3 X 
X O <t O 
; h 
, 2 o 

X — 


O r 


O <1 
X 

X o 


3 h* 
O X 
2 X 


r- O 

X ~ ’ 
o 

X o 
<t 

o o 

O o H 

X || || 2 

d ®B — 

3 o X O 

3 X X 3 X 

< 

O d 

H •• 2 r- 

2 X XX 

XX 3 < 

2 r- t— 

X Z X 

X X d 


OX 2 
X 3 X <J 


X 

> <* X 

OX <t 3 fr- — 

r- •» % X X «* 

• O < - X 3 <C 2 


NJ 3 — H 
OOOOXN30302X3X 

22^2032 0 23 0 2 d 


<C 

O 


CO 

O 

2 X 
X o 
2X0 

* X t 

X x o 


o 

— X — r- 

x <a 3 x 
O o 2 X 


X X 
o <t 


<r o 

t; 

o x 

r- 3 

o o 
< 

I 3 

X o 
3 <E 

<r 


x 

X 

X 

2 

3 


X 

X 

2 

O 

X 2 r- 

Ld ~ Z 

X <t X X 

X ^ O 3 2 

3 <1 X r- 3 

2 2 X X 

r- OX 

— 3 O X 

2 3 0 

X X z z o 

O X <1 X 

O X X 

o t— 


3 

X <c 

X o 

3 X 2 X 

X O Z < 2 

X X H 3 s x 

«\ X X *, ^ <t 


X 

o 


2 

2 

x 

3 

<r 


x 

2 

O 


X >« 

x x 

3 r— 

X z 


X X 
2 t— 


3 
Q z 
x t- x <r 

0 3 0 - 

X x 3 3 .5 

<1 2 3 2 * 

2 — x x • 2 a 

X X O 2 

Or- X 2 O L3 
2 0 0 0 0 0 0 


X X 



3 

id 

2 


«** 

<t 

3 

2 

Ld 

2 t- 

2 

2 

X 

<X 

X 

— X 


2 

■—< 

3 

3 X 

<t 

r— 

O 

X 

X 

3 3 

t- 3 

X 

3 



< < 

3 

— 


2 

X 

X 


X 

o 

X ~ 

<t X 
X X 

o x 
< 
x o 


o X s 
- w a 

O X X 

22TS 

X o 2 H 
XX ~ 
X I II I 


<1 

id <1 


3 

X 

X 

X 


X 


3 

25 3 

O 



O 


X 

t- 3 

X 



l- 

t— 

H 

(— r- 

!— 

3 

- < 

3 

X 

3 t— 


X 

o 

X 

X 

3 

2 X 

3 

t— 

X < 

3 

<t 

2 

X 

X 

<C 

— 2 

<r 

— 


X 

3 


•% 





"5 

X o 

3 


X 







3 X 

3 

X 

3 






H 

X 3 

3 

X 

—• 






X 

— 3 

X 

t— 

<E 






— 

t- <x 

d 

X 

2 






3 

3 


c. 








CO 

2 X 

~ <r 
x 

x o 

O X 
2 
II < 

o 

3 X 

<X 

O 3 
O Q 
X <c 


XC0C0XX3-X X 2 


o o o 

-00*->0- X 3 X 

X<I<IX0<XXNJ20X 

00002000X — 2X 


CO _ 

2 2 2 2 X 

- - , C 2 

3 X o <£ 

0 0 3X0 
2 2 <£ X 
X X o 
IX < X 
*0X0 


z 

o x 
- X 

X <t 
<t X 
X 2 
X o 
X o 
o 


X — 
3 

3 O 

<r 

II 

II 

3 
3 o 
<C 2 
•o X 
o 

X .. 


5h- 

H 3 X 

*- X o 

12 3 O 
2—2 •• Z 

X X 
X 3 
X X 
z X 


X X 

o o 

X • S • 3 

X - - X * < 

2 - X 2 • O 

x 2 2 X 2 5c 


- - X - - . 


X 
X 

3 NJ 3 3 


X 3 X <t X 0 ) <r 

O r* 

X 3 X 'X 3 

X 2 X 

3 3 ^ 3 <t 

2 2 2 

x x x x a. 

3 3 3 

Q 3 Q 3 


I « 3 5c < 

X 3 3 

X 3 3 X 3 


O 

2 3 

2 x t; 

X 

X 

3 

X 

3 

o 

o 

X 

.% z 

£ 

2 

2 









O' 




O' 




3 

3 



_ 

3 

NO 



< 

< 











o 




o 

o 



o 

O 



o 

O 

O 

o 


o 

o 










— 

3 




X 

< 

— 


X 

X 

o 


3 

3 


< 


co — 

3 









X 

o 

X 


o 


X 

co 

o 


X 

3 

o 


O' 

CM 

CO 

<T 


3 O 

3 





O' 

3 

<T 

3 

X 

< 

CO 

VO 


OJ 

CM 

vO 

O' 


3 

X 

O' 


3 

3 

^-a 

VO 

3 X 




3 

3 



O) 

f" 

X 

3 

3 

3 

<T 

3 

CM 

CO 

3 

CM 

3 

o 

3 

CJ 

3 

3 

CM 

< 

3 X 

3 3 

CM 

3 

3 

< 

X 

N0 

r~ 

X 

O' 

<r 

3 

X 

o 

CM 

CO 

vO 

O' 

X 

3 

X 

CM 

<T 


CO 

3 

X 


cm in 

7 

A 

3 


3 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

j- 

X 

X 

X 

.i. 

X 

X 

O 

O 

o 

O 

O 

O 










O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

CN 

O' 

O' 

O' 

< 

< 

< 

<E 

< 

<r 

<t 

< <r 

<t <r 

<r 

<r 

<t 

o 

o 

o 

3 

o 

3 

o 

o 

o 

o 

o 

o 

o 

c 

o 

o 

o 

o 

o 

o 

C 


o 

o 

o o 

o o 

o 

o 

O 


o oo 000300000 
xxxxo<tooo<rx3<to 

— voco — \0<aj3<C\)3 — 0)3 
0)0000)00)0)0X0)0 0)030 

X — 00v0OXX^<C^<3oO 

— o)0)0)0)o;o3oonoocooo<r< 

OOOCOOCOOOCC ' o 


Page 28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


226 























Q 





X 





A 





3 





A 




NJ 

t— 




1 

t] 




<t 

3 

Q 

2 




X 

2 

X 

X 

X 

a 



V 

Z 


i 

1 


<jj 

X 



2 

2 



X 



“7 



X 

£ 

o 

II 

II 

X 

X 

»—< 



X 

3 

-0 

X 

X 

<r 

■7 

c0 



*—i 

6 

X 

x 

x 

£ 

X 

X 

o 

o 

< 


X 



3 

X 

X 




o 

X 

z 


X 



2 

X 

X 

>- 

X 



—• 

X 

o 

■f 

+ 

—• 

2 




X 

o 

£ 

X 

X 

X 


Q 




x 

Q 

ll 

II 

X 

X 

<C 



X 

r-• 


X 

X 

3 

—• 

II 



2 

X 


X 


■—< 

X 

3 

o 

o 

■O 


<E 




H 

-O 



II 

-0 

X 




£ 

5c 



X 

*-■ 



U1 

£ 

x £ 

i x 

3 r- 

2 


X 

3 


X 

2 



















X 









3 













X 

3 






X 







X 






3 






















X 

*—• 






3 







p 




X 


X 






















•— 1 

A 






X 







z 




3 


< 









X 













X 






2 

<r 







4-4 




X 


D> 









z 










X 

O' 



X 





3 

3 

X 


X 




o 




<r 




X 

















X 

O' 


2 

<r 

H 

2 



*— 


X 


X 




X 



X 



«-• 


3 






z 

E 





CO 


X 


2 

X 



O 

3 

z 

•— 1 



A 

X 

f - * 


P 

P 






2 



U 


X 

X 






n 





X 


3 



X 

o 



3 

X 

< 




X 

2 


2 

3 

X 


X 



>—< 

2 


<1 


<c 

3 



X 

X 

5 

o 



X 

X 

3 


z 


< 



x 

C0 

X 

A 

X 

X 


A 

p 


O 

—• 

<r. 

3 


<c 

X 


X 

3 


X 



X 

X 

X 

3 

3 

X 

X 

X 

X 

3 

3 

x 




X 

a 


X 

-0 


X 

% 

X 

<r 

3 


o 


O 

£ 

X 


X 

X 



—> 





<t 

3 

X 

X 

X 

X 


3 

X 

x 

X 



t-» 


X 

<t 

X 

X 

X 

X 

£ 

z 

p 

X 

2 

P» 

X 

II 

X 

r-* 



u 

r-• 


X 

A 


a 


a 

> 

X 

h* 

<£ 

<t iO 

s 

X 

x 

t-* 

5: 

< 

> 


z 


z 

a 

3 

X 

£ 

O 

X 

o 

2 

CD 

•—* 

X 




X 

D» 

p 


2 


o 

A 


3 


a 


<t 

2 

> 

> X 

o 

A 

c! 

z 

D> 

> 


o 

o 


o 


x 


X 

X 


3 



Z 

3 

X 

X 

X 

3 


>—< 

X 

•—< 

X 


<Z 

U) 

A 


<z 

H 

D» 



3 

u 

X 

> 




H 

O' 

o 


CD 

X 

<e 

X 

X 


H 


O 

X 



X 

z 

3 

X 

X 


3 

o 

<t a 


3 


A 


X 


O 

X 

a x 

o 

X 


o 

X 

a 

U 

1 


O' 


X 

.■> 

x 

X 

X 

O 

z 

X 

X 

p 

2 

P 

X X 


X 

X 

X 

X 

X 

2 

z 

Z 

Z 

3 

z 

3 

2 

X 

X 

X <£ 

O' z 


z 

X 

X 

X 

<t 


z 

O' 

z 





o 

2 

X 


p 

O 

X 


p 

*-• 

Q 

p 

3 

•—< 


o 

X 

X 

•—« 

w X 

X 


3 


r-» 

O 3 

X 


3 



o 

C 

II 

X 


X 


r* 


•X 

o 


X 

X 


2 

X 

X 


X 

2 


<X 

X 

X 



X 

s 

X 

X 

X 

X 

>—< 

X 



A X 



X 



r* 

A 

X 

A 

X 

3 

X 

3 

Q 

X 

X 

r-* 

z 

p 


■ 

3 

p 

p 

<t 

p 

•O 

r— 

z 

t— 

X 

fc-* 


r-» 


r - 

c0 

A 

z 

r* 

h a 

H 


C0 

z 

H 

t-* 

a 


r* 


r-t 

O 

A 

o 

Q 


•—< 


3 

X 

X 


<1 

X 

X 


X 


X 

3 

X 



X 


X 


X 

A 

3 

X 

X Q 

X 


C0 

3 

X 

X 

3 

X 


X 


X 


X 

<t 




X 

3 



A 

n 

£ 


3 


£ 

X 

3 





— 


X 

< 

X 

3 

3 <r 

-« 


<r 

OQ 

3 

3 

CO 



•-* 


CO 


-0 












> 





X 

X 








o 

• 




3 


X 


X 

<E 



<E 


3 

V” 




X 




<c 

II 

X 



yj 


3 


<c 

A 


X 

-0 

> 

X 

a 


X 


3 


X 


A 


a 

U 


z 


r— 

• 

■> 

X 


z 

X 

a 

< 

r~* 

X 

H 


H 

X 

2 

• 

X 

A 

z 

% 


X 


X 

1 

3 

X 


X 

X 

3 

•> 


% 

X 


X 

a d> 

l 

X 

a 


<£ 

<1 

X 

X 

3 

* 

3 

X 

< 


X 

A 

3 

X 

E 

3 

X 

3 

c 

<£ 


Q 


X 





X 



a 



a 


X 



a 


X 




X 


X 

•> 

<t 


X 

X 

«—• 

NJ 

X 

<z 

<t 

x 

X 

X 

—• 

D> 

X 

X 

X 

_ 


M 

X 

-> 

<r 

O 

t: 

NJ 

z 

<E 

X 

Z 

X 

x 

t— 

X 

z 

<1 

X 

O 

2 

z 

<£ 

X 

NJ 

X 

X 

E 

3 

z 

o 

3 

—• 

3 

3 

3 

CO 

X 

CO 

X 

3 3 

X 

z 

X 


3 

3 

3 3 





X 



X 








X 







3 



3 




3 




3 




3 


3 

X 

X 


X 

X 



cO 


X 


X 

X 



a 

» 

a 

<n 

< 


< 

Z 


o 

Z 

<£ 

<£ 


< 

z 


X 

3 

+ 

a 

3 

3 


3 

X 


o 

3 

% 

3 


3 

X 


a 

A 

“ 

<t 

3 

<1 

X 

3 

H 

X 

"• 

O 

X 

<E 

X 

3 

H 

X 

O' 




X 



X 








X 





•— i 


X 

X 

X 

X 

< 

a 

•— 


3 

X 

X 

X 

<t 

a 


NJ 

X 

NJ 

<t 

z 

2 

<r 

a 

a 

X 

X 

O 

z 

2 

<£ 

a 

3 

X 

3 3 

3 

3 

3 

-• 

3 

X 

< 

3 

3 

s 

3 


3 

X 

CO 

3 


CD CD 









cO 





CO 







z 



z 



2 


Z 



i 


3 


3 



X 

X 


3 


X 

X 


X 


-0 


•—i 



X 

o 

O' 



3 

o 



o 

z 

<1 

CO 


X 

X 

X 

O' 

-0 

X 

o 

X 


3 

o 

2 


cO 


o 

•» 

X 


A 

o 

«, 

£ 


<1 


3 

X 

< 


H 

X 

X 

X 

<Z 

H 

X 

X 






X 


X 


X 


X 

X 


X 



*— 1 



X 

H 

X 

>—< 

X r- 

M 

X 

X 

•—I 


H 

X 

X 

X 

o 


X 

<t 

X 

<E X 

3 

2 

<c 

X 

<t 

X 

3 

3 

3 

z 

3 

£ 

3 

X 

3 X 

Z 

3 3 

X 

3 

X 


X 

O 

o 


X 

<r 

CD 

3 


D> 

Q 

Q 

<£ 


> 

CQ 

3 

10 


CD 

A 

E 

3 

O 


— 


CO 



a 


r- 


a 



_4 

_ 

a 

a 

_ 






a 


a 


a 

a 

a 


o 


o 



o 


o 


o 

o 


3 

o 

3 

3 

O 


O 


3 


3 


o 


3 

o 

o 


<E 

a 




r- 


3 

a 

3 

3 


O' 

3 

o 

X 

O' 


CO 


3 

a 

3 

a 

o 

a 

X 

X 

3 



3 

3 



r- 


0J 

CVJ 

OJ 

—• 


<T 

r— 

O 

O' 



3 


CVJ 

3 

r» 

CVJ 

o 

CVJ 


O' 



<C 

'O 

a 

O' 

r- 

<r. 

3 

a 

X 

OJ 

0J 

X 

CVJ 

<x 

3 

a 


3 

<C 

3 

a 

X 

<t 

X 

<t 

X 

<t 

a 

3 

3 

OJ 

o 

3 

r^ 

a 

3 

CO 

3 

X 

3 

CVJ 

<t 

3 

CVJ 

3 

3 

CVJ 

P~ 

CVJ 

CVJ 

3 

X 

3 

X 

3 

X 

3 

3 

3 

CVJ 

O' 

3 

X 

— 

CVJ 

3 

'O 

p* 

<r 

3 

X 

CO 

3 

vO 

O' 

3 

X 

OJ 

3 

vO 

P- 

<£ 

3 

X 

_ 

<r 

vO 

O' 

3 

X 

3 

O 

3 









cvj 

0J 

CVJ 

0J 

CVJ 

CVJ 

3 

3 

3 

3 

3 

3 

3 


<r 


<r 

<T 

<r 

a 

m 

m 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

o 

o 

3 

o 

3 

o 

o 

3 

o 

o 

3 

3 

3 

3 

3 

3 

3 

3 

3 

o 

3 


3 

3 

3 

3 

c 

3 

3 

3 


a 

— 


a 


a 


a 




a 


a 


a 


a 

X 

a 



a 

a 

X 

Q 


3 

3 


o 


o 


o 

o 



o 


o 


o 


o 

o 

o 



o 

o 

O 

o 


X 

O' 


— 


3 


X 

O' 


a 

CVJ 

<T 

3 


3 


O' 

a 

X 


3 

3 

O' 

3 

X 


O' 

■T 


vo a 




O' 



O' 

p* 

a 

O' 


3 


r- 

3 a 


a 

3 

r~ 


Q 


a 

<1 

3 

X.CVJ 

X 

3 

3 

a 

< 

3 

X 

CVJ 

X 

CVJ 

X 

a 

O' 

a 

_« 

a 

O' 

X 

a 

a 

_ 

a 

O' 

3 

3 

a 

X X 

in 

3 

CVJ 

3 

3 

O' 

X 

X 

X 

X 

A 

3 

3 

3 

CVJ 

3 

3 

— 

3 

3 

CVJ 

3 

3 

3 

3 

<3 

r-» o' 

3 

a 

o 

_ 

<T 

P- 

a 

<r 

a 

X 

CVJ 

3 

a 


c 

a 

o 


3 

a 

O' 

o 

X 

A 

A 

A 

A A 

in 

JO 

vO 

a 

a 

a 

a 

a 

a 

a 

p~ 

P- 

p> 


r~ 


a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

3 

o 

3 

o o 

o 

o 

3 

o 

o 

o 

o 

o 

o o 

o 

o 

o 

o 

3 

3 

c 

o 

3 

3 

o 

o 

3 


H 

UJ 

£ 


2 

o 

£ 




X 

.•£ 





2 


3 








a 

£ 


X 


fl 


2 


3 





r* 

a 

a 

t- 

a 






2 



3 


< 

<c 

a 

2 

a 


H 


X 



X 


2 




< 

3 

<c 


X 

t-» 

r* 


£ 

<r 

2 



X 

2 


O 



X 

< 

n 


H 

2 

O 

£ 


2 


X 

3 

X 


t-* 


X 


cO 

X 


f 


<£ 

P* 

3 


3 

P* 


X 

o a 



3 

—• 

A 


X 


£ 

X 

X 

X 

3 

2 

z 


3 

—• 

<z 



a 

X 

3 

< 

3 

X 

X 

<E 

a J 

X 

X 


3 

<C 

A 


a 

O 

X 

O 

r* 

2 

X 

2 P 

o 

2 

b 

O 


A 

r* 


cO 

3 

n 



a 

X 

X 



X 

X 

X 

X 

n 




X 

£ 




X 

o 


o 

£ 

CO 


H 

II 

H 

3 

a 

t— 


r» 

3 




a 


X 

X 


X 

O 

a 

X 


X 

O 



a 

a 


a 

3 

3 

3 

z 

<c 

cO 


A 

z 




CD 
X 2 


<C £ 
UJ r— 


X 3 
2 <t 
<i ’■/) 


co •• 

Q X 
Q UJ 
<t r- 


Q 
£ ■ 
o 


X <c z X 


X 

D Z > U. 
<1 J<tH 
CO p «/) X 

sigsisi 


X 3 

a <r 

C <C A 

* •> •*•»_] 

x <c z x <c z x 


a 

£ 2 


- <t 


CD Q J Q J CD 

* ? 1 5 si i 4 i 1 * 


3 CD 

X30Z0XC:X£!0330230X3 

jss^-x JujuxassHgT jvc, 


X 

2 

«t 

-J 

X 

UJ 

■J 


<t 

A 
O cO 
p UJ 

CO 3 
X Q 
2 <r 
< 

X CD 

X z 

ui X 


X 

<c 








X 










£ 









O' 







3 





X 





<t 







£ 


O' 












3 



n 


X 







X 


+ 







r-* 





X 

n 


n 


3 







X 

H 














CO 


X 










z 

o 







X 



A 


X 

X 


e 


H 







o 

X 








2 

£ 

X 

—• 

X 

•—t 

£ 


Q 

X 

n 


£ 

a 


X 


z 

z 






2 



a 3 


2 


a 

X 

a 

3 

£ 





o 

2 

<t 

uJ 

O' 


£ 

£ 


£ 


X 

Q 

2 

X 

<r 

X 

a 

a 

<c 

2 



X 

2 


X 

£ 


—4 

O' 

3 

X 


3 


3 

<z 


<1 

X 

3 

<r 



•—i 

X 


3 




3 

X 

<c 

1 

2 

r-* 

<r 


t— 


X 


r-* 

X 

a 

X 


< 

X 

r-* 






A 

H 

3 



*-< 

2 

X 


X 


X 

X 

2 

3 


X 

X 


3 

2 

x 


r* 

[—• 


<t 

X 

3 

A 

t; 

X 


3 


x 

X 

3 

'S' 

O 


r-* 

3 

3 

X 

X 

O 

o 


X 

1-4 



£ 

z 


X 

7— 

O 


X 


2 


3 

3 

r— 

O 


<C 

3 

*—■ 

3 



X 


P 




X 

3 

A 

a 

r* 

o 

2 

<2! 

X 

a 


2 

2 

3 

n 

3 

£ 


CO 


2 

(-• 

t—t 

7*4 

z 

X 

o 

X 



X 

X 

X 

X 


a 

X 



S 

r-» 

a 

A 



X 


•—. 

X 

A 


p 

X 

X 

3 


X 

a 

X 

X 

2 

2 


X 

X 

X 

2 

O 


£ 

3 

X 


X 

x 

p 

2 

a 

3 


X 

f* 


r-> 

C0 

<t 



r* 

A 

tj 

2 

<X 

X 

3 

a 


3 

X 


X 

X 


a 

<£ 


•—1 


X 


X 


X 



X 





2 

a 


O 




X 


<t 

n 






X 





X 




X 

—• 

<r 


z 




p 

II 


X 
X 

3-0 0 

p x x 
x o o 





a 

CO 


















X 

£ 







>—> 










CO 










a 

a 



a 

£ 


p 

II 


3 







+ 





3 


3 


A 

a 

a 



£ 

X 


x 


3 

<E 







NJ 




X 

< 

P 

<C 

—4 

£ 

<r 

<X 



o 

p 


5 

3 

<£ 

A 





3 


X 




o 

-0 

X 

A 

3 

<E 





-3 

X 


z 

<r 

A 

X 

Z 

X 


• 

Z 


3 


z 

• 

X 

X 

—t 

X 

2 

X 

it 

ii 


z 

•* 

X 



A 

X 

X 

«. 

a 



X 


3 


4, 


X 

X 

X 

X 

X 

3 





X 

a 


n 

X 

X 

X 

<t 

3 


• 

3 

X 

A 

X 

<x 

» 

3 

5c 

A 

X 

3 


x 

X 

X 

a 




X 

X 


















3 

5c 

X 






3 



















z 






X 


3 


a 

a 












a 

X 

a 




•• 



•— 1 

X 

P 

a 


X 

X 

3 

►—< 




X 

X 

X 

3 

*-• 

NJ 

x 

X 

X 

a 

j; 


A 

X 

3 

X 

<t 

X 

X 

•• 

X 

X 

O 

a 

NJ 

a 

NJ 

z 

Z 

2 

o 

a 

2 

5c 

<r 

X 

V 

P* 

•• 

z 

z 

O 

X 

3 

£ 

£ 

£ 

X 

A 

z 

3 

£ 

3 

3 

•—1 

3 


*r 

3 

3 

A 

3 

X 

3 

-0 

£ 

£ 


z 





X 



















X 

3 




a Z X 

a 


NJ P 
UJ z 
3 X 


o 

-0 


3 CD 
2 2 
X X 
o o 


X Z X 

~ uj x 

X 

CO 


X Z 
p* 2 


X 
X A 


Q 

X 


<c 

5 

o 



CVJ 





4—4 

p 

_ 

3 







_ 


CVJ 

P 

OJ 

3 



o 





o 

o 

3 

3 







3 


3 

3 

o 

3 



a 

o 




< 

a 

<C 



3 



a 


<t 


a 

a 

a 

<T 



CO 

CVJ 





O' 


n 


cvj 



3 




X 

O' 

a 

n 


O' 

4-4 

X 

P 

co 

a 

<t 

a 

<E 

a 

a a 

U) 

p 

3 

X 

P 

<r 

a 

—4 

a 


a 

O' 

3 

CVJ 

co 

P 

CVJ 

X 

CVJ 

3 

CVJ 

3 

X CVJ 

CO 

p 

CVJ 

3 

P 

CVJ 

X 

CVJ 

3 

CVJ 

3 

3 

CO 

O' 

3 

X 

X 

3 


<r 

p 

<t 

Q X 

X 


CVJ 

3 

in 

A 

O' 

<£ 

a 

o 

3 A 

<t 

<r 

<t 

< 

<c 

a 

a 

a 

a 

a 

a a 

a 

3 

3 

3 

3 

3 

3 

3 

3 

a 

a 

a 

<1 

<t 

<t 

<r 

<c 

c 


<c 

<t 

<c 

<t <c 

<c 

< 

< 

<£ 

<£ 

< 

C 

<£ 

<E 

<i 

<t 

< 

o 

o 

3 

3 

o 

3 

o 

o 

3 

o 

o o 

o 

O 

3 

3 

3 

O 

3 

3 

3 

o 

o 

c 


— 






<t 


<£ 




<E 

_ 

< 

——4 

<r 









<t 

3 

3 





o 


3 




3 

o 

3 

3 

o 









3 

<r 

3 


a 


O 

<c 


< 



o 

X 

3 

a 

3 

a 






a 



a 


— 


3 


CVJ 

X 


a 



CVJ 

a 

—4 

X 

—4 

X 






3 



X 

< 

CVJ 

X 

X 

a 

X 

<t 

3 

3 

3 

X 

X 

CVJ 

CVJ 

a 


3 

3 

A 

a 

o 

X 

X 

a 

3 

3 

CVJ 

CVJ 

p 

lt * 

3 

X 

3 

CVJ 

3 

CVJ 

> 

X 

3 

CVJ 

3 

CVJ 

3 

CVJ 

<T 

CVJ 

p 

P 

X 

3 

CVJ 

3 

p 

<t 

a 

X 

3 


3 

vO 

P 

<1 

a 

3 

X 


<T 

p 

<C 

a 

X 

X 

3 


CVJ 


A 

A 

a 

3 

a 

a 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

3 

O 3 

o 

O 

3 

<c 

<r 

< 

<r 

< 

<z 

< 

<£ 

<r 

<t 

<E 

< 

<E 

<£ 

<E 

<t 

<c 

<c 

<1 

<X 

a 

a 

a 

a 

a 

a 

3 

3 

o 

c 

3 

o 

o 

3 

o 

3 

o 

3 

o 

o 

3 

3 

o 

3 

o 

o 

3 

3 

3 

3 

O 

o 


May 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 29 


227 
















o 





A 


A 









X 

















X 


X 



x 





A 


•— 


X 







X 

















a 


a 



x 





UJ 


J 


r- • 


X 





r- • 










5 







a 


a 












X 


X 





7 — 







a 



O 







x 


x 



2 





a 


£ 


a 


r— 





X 




X 


a 

X 



a 












X 





a 


<t 


X 


r- 



A 

X 

a 




2 


X 




X 






a 

X 


X 



=5 


X 

<c 

X 

<c 


Z> 


2 


X 



A 

X 





•—• 


> 

X 


X 

X 



3 


X 

X 

CJ 


o 



r-* 


UJ 

I 

X 




• 

O 


a 



X 

r+ 

r-* 




a 

2 

X 

a 


3 

X 




X 

a 

:> 

<£ 


<c 


2 

UJ 


t-« 

o 

X 



X 

< 

3 




o 

X 

r* 

X 


X 



O 

a 



2 

3 



2 

a 

a 

X 



H 


X 

X 

J 

2 


o 

i 


o 

• 



X 

x 

*; 

a 

X 

X 

a 

a 


X 

•—i 


t-* 



o 





x 

a 

A 

X 

A 


3 


-J 


X 


X 




t— 

2 

X 

x 

X 

a 

a 

2 


a 


3 

H 

r-» 

X 


h» 





2 




H 



r* 

—• 

<r 

O 

o 

X X 

r-» 


r-• 

X 

X 

X 

H 

X 

N1 

<t 



2 

<i 


X 

—• 

2 

X 


2 

X 

•—> 


X 


X 

X 

II 

X 

II 


X 

UJ 

o 

X 

r-» 

l- o 

2 


2 


a 

3 


X 



r-* 

O 

>-< 

•—< 


3 

A 

X 

2 


O 

o 


H 

~> 


x 






X 

A 


1 

A 

2 c-* 

x 


C 


<r 

t-* 

X 

a 

X 

X 

X 

r-« 


x 


O 

X O 

X 



3 

<t 

X 

<—> 

X 

X 

<r 

cu 

a 


a 



r* 

<c 


UJ A 

2 


X 

3 

X 

X 

X 

a 

x 

X 

o 


X 



A 

X x 


O 



r-* 

x 


A 


a 


X 

X 

X 


a 

UJ 

O 


UJ 

2 



X 


X 

rt 

o 

X 

o 

c-* 


X 

> 

■> 



X 

3 

t-* 

CO 

2 

x 

o 

X 


X 


+ 


> 



X 

A 

-J 

3 

> 

UJ 

UJ 



r* 

a 


r-* 


r* 



3 

x 



r— 

cs a 

3 



X 


t-* 

a 



H 



<£ 



> 

-J 

•—< 

2 

o 

U 3 

£ 


a 

X 

c 

2 

x 

X 

A 

X 


2 

A 

r* 


X 

-* □ 


X 

V 

X 

X 

yj 

a 



X 

X 


y) 


X 

<c 

UJ 

X 


2 

a <r 

o 


a 

<t 


X 


s 


2 


<5 


X 


X 

X •> 

c-« 

2 



yj 


3 


t-« 

3 

x 




3 

A 



r-* 

u3 

a a 



a 

r* 

X 

X 


3 


3 


X 


X 


2 

X 

X 

3 

X 


a 


O 


3 


<£ 




<t 




r~* 

X 

<r x 

a 

A 

x 

A 

•—1 

r-* 


a 


a 


3 


2 

X 


X a 

3 

a 

•— i 


X 


a 


X 


a 




r* 

H 



UJ 




UJ 




.« 









u 


7 

















-1 

a 

<C X 
— 3 


<i o 6 h 

r* X 

A r* Q 

* ui a 

2 <£ X UJ 
— r* s —• 
-0 3 X 


X f- 
< X 

o ^ 


X 2 X 2 ^ X X 


a 

<t 

o 

-J 


UJ 

2 


~ n 
2 


!> 

2 


2 UJ 
X X £ 


> 

2 


<r 

X 


CU 

> 

x 


< 

2 x a 
o uj 
* o 3 
X t-* 3 
Q 

t h UJ 





A 






















X 


a 

O 

a 





3 






<r 









X 

X 

X 



X 








u 

o 

X 












X 

n 


CJ 

X 





o 






yj 










A 

3 

H* 


2 


i 

X 





»-• 

X 

<x - 














a 


> 






X 
















a 

3 


C 


o 

H- 



X 


X 

X 

> <t 












2 

X 

X 

S 

X 




OJ 


o 



t: 


X 










X 

X 

X 


2 

f- 

CO 




b- 


X 

X 

2 - 

a 

• 

<£ 


o 

<C 


a 


<c 



t- 

■> 

(-• 

a 

2 



> 

A 

x <r 


<t 

H 


X 

a 


< 

a 


<r 

X 


o 

H 

«. 

2 


U» 

X 

•» 

X 



X 


2 


•* •* 

•» 


•> 



•> 


% 



> 

O 

X 

X 

X 





c 


x ■. 



X. 











X 

X 

X 

•— 1 



< 

2 

2 

2 

X 

<c 


a 

o 

H 

B 

< 

- 

2 

a 

<r 

2 

I 

<i 

— 

a 

2 

X 


a 


a 

<E 


CO 

yj 

X 

x s 

<c 

u 



a 

< 

CJ 

a 

2 


a 

2 







yj 








2 

r- 





































2 



a 


r* 

a 


a 



a 


X 

M 













2 


A 








a 



a 

CD 










3 

A 


a 

t- 

X 

X 

*-* 

a 

—• 

X 

a 

H 

X 

i 


> 


D» 

X 

«—< 

Z> 

X 

:> 

•—* 

D» 

X 

a 

•• 

2 



> 

M 

_• 



a r-* ■> 

a 



a 

*-a 

> 

a 

> 


_i 


3> 




X 

<i 

X 

r-1 

2 


X 


u 

2 

X 

—1 

<Z 


o 

X 

NJ O 

2 

3> 

o 

2 

o 

a 

O 

2 

t— 

X 



X 

O 

a 

X 

2 

X 

c; x o 

a 

o 

a 

o 

X 

o 

a 

o 

O 

a 

o 

O 

X 

X 

X 


is* x a 


H UJ 
U1 .T- 


x 

* 


o 


o 

3 


_ 







cu 












o 


—• 

O 


o 


o 



o 


o 












JO 


o 

X 


<T 

o 

X 



<r 


vC 

•— 


a 




O 





A 


o 

3 


CD 

cu 

CD 

O 


CD 


A 

<T 


A 




o 




o 

a 

O' 

« 

a 

O' 

<E 

vO 

<t 

O 

a 

cu 

O' 

*- 

vO 

CO 

X 

CO 

r" 

CD 

X 


CD 

a 

a 

o 

CJ 

CVJ 

3 

3 

CU 

CD 

CU 

CD 

cu 

cu 

3 

cu 

o 

r» 

X 

3 

p- 

CU 

CD 

c*- 

CU 

c- 

3 

n 

o 


<E 

a 

X 


CD 

'O 

CO 

O' 

3 

a 

o 

cu 

CD 

lO 

vO 

r- 

a 

<1 

a 

3 

a 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

x 

o 

o 

O 

o 

o 

o 

c 

o 


O 

o 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

o 

o 

3 

c 

o 

o 

o 

o 

c 

o 

o 


o 

o 

o 

O 

O 

O 

C 

O 

O 

O 

O 

o 



3 





3 

X 

a 

















O 

O 




3 

3 

o 





O 


3 










(D 

lO 



a 

A 

-O 

X 





< 


<T 










O 

<T 


O 

3 

CU 

CD 

a 





CD 


CU 





3 





CD 

—« 

X 

vO 

X 

<z 


a 

O' 

t- 

P- 

X 

C 

a 


a 

—• 

X 

CU 

a 

X 

a 

O' 


3 

cu 

P* 

3 

X 

X 

CU 

3 

3 

P- 

a 


cu 

X cu 

r~ 

a 

a 

p- 

3 a 

r~ 

3 

X 

O 

CD 

vO 

P- 

O' 

a 

X 

_ 

<T 

a 

a 

P* 

a 

a 

3 

X 

o 


CU 

a 

A 

a 

r- 

o 

—• 

— 

—• 

—• 

—• 


— 

cu 

CU 

cu 

cu 

CU 

cu 

CU 

CU 

cu 

a 

a 

a 

a 

a 

a 

a 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

o 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 









X 
































X 










X 
































a 










a 










































x. 




















X 






















—• 




















J 



Q 



















rC 

<r 

















X 



a 

X 



d 









X 



O' 







3 








X 









3 

X 

















O' 















X 

X 


X 

a 





X 



X 

a 














1 






X 

X 



X 





a 

X 


X 






<c 

2 


X 

X 






a 














X 

I 



X 


X 



2 

p-« 


t-» 

2 



2 


3 

•—< 


3 

X 


2 


X 

2 









o 






a 

r— 



t- 




a 

X 

2 


2 

•—> 



•—i 








O X 

X 










t— 






<r 




3 


2 


X 

2 

•—i 





rC 

<r 


H 

X 


3 

X 


_ 

X 


<r 



X 

X 











>—• 

3 



<c 


<—> 


JU 


O 


O 

C 


X 

X 

"Z, 

X 

3 


X 



a 

X 

—« 

,) 



X 












X 

2 



c: 




3 

t— 

X 


X 

c. 


X 

X 

X 


X 


2 

2 


a 

3 

X 

X 



X 


rC 



X 

3 






< 

—* 



<c 


X 


O 

3 




X 

X 

X 


X 

H 

X 



o 


X 


X 

V 

<E 

X 

t: 



V 



X 






z> 

2 



X 


3 

X 

c 

X 

X 


X 

3 

3 

X o 

r-* 

2 

3 


X 

■—< 





O 

a 

3 

X 



3 



< 










3 

X 

<r 

X 

X 

X 

<t 


<1 



2 

3 

X 

—< 



O A 


X 

a 

<r 

3 

3 




X 










X 

2 

X 



<t 

A 

r-> 


X 

X 


X 

X 

H 



X 

O 

X 



a 


X 

v« 




_ 













o 


< 


X 

X 


r- 

2 

X 

3 


3 

3 

■—c 

a 

2 


X 

3 


a 

X 


X 






a 



X 



r-* 







:tC 

X 


X 

3 


X 

X 





<t 


2 

X 

a 


<X 


X 

X 




o 

X 

X 




a 



a 

X 






h* 

<t 

3 


t—* 



X 

X 

X 

X 


X 

yj 

X 

X 

X 

2 

X 

A 


o 

X 


X 


2 

I 

3 



X 





A 






2 

a 




t— 



[—• 

A 

3 


3 


o 


H 

<C 

yj 




X 


a 


















<C 

3 

X 


X 

X 


X 


X 

<1 


X 


o 

X 



X 



2 

X 

X 

a 

X 





X 












r* 


o 


o 

3 




X 

A 


A 


X 

•—< 



X 



<E 



< 

r'j 



























































2 

3 

A 


y> 

















O 

o 

z, 



















O 


A 


n 

















r» 





















3 

A 

X 


X 


















X 

X 




















A 

X 



















X 

a 

3 



















X 

X 

X 


a 

















3 

a 




















o 

x 

a 

X 

a 

















X 

<c 

<X 
















3 




X 

<t 

3 

<z 

















X 


















yj 



X 

X 


X 


















3 

n 















2 


2 



3 

<t 

ii 

<t 

ii 



X 







X 


2 







>• 



X 



X 







O' 

3 


X 

X 


X 



3 


X 


X 


2 





3 


X 





3 

3 

X 


a 

X 





>* 





O' 



2 

o 


<t 

II 

X 


X 

3 


r* 


2 

X 


X 


2 


X 





X 

X 

X 

<t 



a 









i 

A X 

X 

t: 


3 


r* 

II 

r— 

r* 

X 

r* 

i; 

—• 

H 


H 

2 

H 


a 



2 


2 

A 

2 

.a 


_ 





a 



X 


* 

A 

O 

* 

t; 



X 

X 


X 

X 

•> 

X 

t— 

X 

X 


X 

•* 

<c 


<t 






X 



X 

X 

X 









X 

< 

*- 

X 

X 


n 

2 

3 

X 

3 

3 

X 

X 

X 

3 

3 


3 

a 

3 

— 

a 


X 

X 


<1 

X 

a 

i 


X 

X 

X 

3 

— 



X 

2 








X 



.. 


















a 
















X 

X 


X 


3 



A 


X 


X 


X 

a 


a 


X 







r* 



a 

X 

X 



X 







*—• 

X 

X 

■— 1 

X 



•• 


2 


X 

3 

X 


X 

X 

t- 

X 

3 

X 

•—< 



X 

3 

H 

X 

•• 


X 

• 

X 

X 

3 

X 

•—4 



X 

3 


> 

<L 

<1 

X 

X. 

X 

i 

X 


X 


<i 

O 

X 

X 

<1 

X 

X 

X 

O 

X 

X 

N 

X 

2 

O 

X 

A 

X 



<1 

X 

2 

O 

X 

X 




O 

X 

2 

3 

3 

X 

3 

X 


X 


X 


3 

2 

3 

3 

3 

A 

X 

a 

2 

3 3 3 

X 


2 

X 


X 


X 

3 

3 

3 

2 

3 

3 

3 

X 



■V* 







X 

(—• 


r-* 


















2 

t- 




















3 

2 


X 


•• 
















3 

2 


•• 












•• 






X 

X 


x 


X 

















X 


2 












3 











3 








•• 








a 















A 






3 





X 







•• 

3 








a 















2 






3 





<0! 







X 

2, 








X 



a 












A 











3 







H 

3 











a 












3 






■« 

•*» 



•i • 

^ 3 







X 

3 








«* 

•% 

.. 

■> <r 















X 


2 



2 






a 

• 




X 

o 






a 

3 



x 






2 

2 

—• 




II 





< 

—* 

X 



O 





2 

3 

<E 

x 



X 

X 




X 


X 




1, 

d 




X 

3 

X 

X 




3 




f* 


c 

« 

a 


a 

X 

r* 




a 

6 

3 

A 


a 

X 




% 

X 

3 

X 

X 


2 


3 



r-* 

:c 


X 

rj 


X 

2 

a 



O 


r* 

x 

a 







X 

a 

O 


a 


x 

3 

2 



—< 

<c 

X 


X 


o 

i— 

X 



X 


— * 

> 




X 

X 




X 

X 


r« 


X 

f 




X 

3 


2 

2 


X 





X 

3 

X 

3 

J 


<x 

X 




3 

a 

£ 

a 



3 





X 


o 


X 







X 

X 

X 




2 






X 

X 


o: 


O 







a 









o 

X 



a 


X 




1 

2 

£ 

a 


i 








X 

X 




a 




2 

a 

c 

*— 




2 




O 

—< 

X 

X 


ii 






•—« 


t-» 

r-* 




3 






2 



3 


r-a 

x 


—> 


X 

•—« 

X 


<X 


X 

X 




X 


a 


a 


X 

3 


—4 

X 

— 

X 



X 





A 

X 



o 

a 

i i 


1 

X 

X 

x 

x 

2 










X 


2 



2 


2 




X 

c 


a 


O 


O 




£-• 

3 

X 

X 

X r- 

•— < •• 

r-* 


<r 

X 


2 

O 



-X x 

H X 

X 

r-4 

a 

X 

X 

*-* 

iC 

X 

X 

O X 

<c x 

•X 

<c 

X 

o 

3 


X 

X 

X 


X r- 


X 




3 



x 


X 2 


X 





X 

2 

3 

•• 

X x 


X 




a 


< 

a 

3 

o 


o 




X 




■—i 


•• 


•• 



X 




a 

£ 

X 

X 

X 







X 


c 


o 



• 


•« 


■» a • 

•1 •« •< 

■* X • 

% 4<s •. 

* X 





a 

30 

X 

a 


p» 


X 

a 

'O 

— 




<r 






_ 


X 

a 


<1 


<T 










o 

o 

o 

c 


o 


o 

3 

o 

o 


o 


o 

o 





o 

c 

c 



3 


C 







o 


a 

o 

O' 

O' 

X 


3 


o 

3 

•— 

X 


X 


x — 

a 





<x 

3 

o 

p- 


X 

_a 

a 







A 


O' 

3 

p~ 

cu 

a 


CU 


vO 

a 

CD 

CD 


CD 


a o 

3 






X 

vO 



a 

o 

3 









X 

a 

a 


a 

O' 

a 

X 

a 

X 

a 

CU 

O' 

CU 

'O 

a x 

3 

X 

CD 

X 

O' 

X 

a 

a 

cu 


a 

X 

3 

X 

CD 

CD 

O' 

<T O' 

O' 

<r 

r~- 

— 

3 

3 

cu 

3 

3 

3 

A 

3 

3 

3 

CU 

3 

cu 


3 X 

3 

3 

CU 

in 

3 

cu 

3 

•x 

3 

<T 

3 

X 

3 

3 

CU 


3 

a 3 

3 

CD 

a 

o 

CU 

n 

30 

a 

X 

X 

cu 

CD 

vO 

O' 

3 

X 

c 

CD 

P~ 

O' 

3 

a 

X 

X 

o 

CD 

X 

O' 

3 

a 

o 

CU 

A 

X 

P* 

X 

O' <1 

a 

U 


O' 

O' 

O' 

O' 

O' 

O' 

O' 

<E 

X 

X 

X 

< 

X 

a 

a 

a a 

a 

a 

a 

a 

a 

3 

3 

3 

3 

3 

3 

a 

a 

a 

a 

a 

a 

a a 


a 

5 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a a 

a 

a 

a 

a 

a 

3 

a 

a 

a 


X 

a 


a 




a a 


a 


o 


o 

o 

o 

o 

o 

o 

o 

3 

o 

o 

o 

o 

o 

o o 

o 

o 

o 

o 

o 

3 


c 


C 


o 

o 


c 

6 

c 


c 

o 

c 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


228 

















x 

2 


3 










2 




















2 


X 

X 









<x 

3 






f 

CO 


X 



X 




2 

UJ 


3 

X 

r* 

UJ 




3 

.0 



r-* 

—• 

X 

2 


X 

o 


X 

r— 

•i 


X 



UJ 

3 


UJ 

X 

* 

X 


3 


•> 


<1 

r» 

X 


2 

UJ 

t-* 

X 

o 

X 


2 

2 

X 

UJ 

2 

u: 

-1 


<c 

a 



2 

a 

•—i 


X 

t-* 

X 

CO 

O 

”7 

X 


X 

V 

3 

X 

3 

UJ 

X 

j 


X 


3 


<r 


X 


X 

X 

2 

Q 

2 Q 

uJ 


X 

2 

X 

r* 

A 

<£ 

2 

C 2 

2 

a 

o 

3 

3 


X 


X 

UJ 

UJ 


2 


UJ 


x 


CO 

A 

CO 




Q 


X 










X 











X 




















2 











<r 










a 










< 











X 






X 




d 




X 






X 










X 

3 


u 


< 


2 




UJ 




3 






3 








t— 


2 



X 


<t 






3 




3 













X 

3 



t-i 

<t 

r* 


X 


X 




2 



X 

< 


>• 




3 

X 


>- 




\ 

X 


X 

c 0 

X 

2 


3 







X 


<t 



Jj 




2 

<1 


«: 




X 

2 



< 

3 





i 



X 

u 

UJ 


X 

X 


(-■ 



X 


X 


r-« 




r* 



X 

X 


O 




X 



< 


x 


3 

<t 


2 



3 

3 

3 


2 



CO 

3 



X 


X 

X 


X 


2 



X 

3 

x 



X 


UJ 



2 

<C 



u3 

X 




X 



X 

X 



X 





3 

\ 

3 


3 

3 




X 

•—« 

X 

3 



X 

A 

3 


o 



X 

c— 

X 


2 

X 

c-* 


C 


d 

X 

ft 

2 


X 

X 


2 

(-• 

X 

2 

X 

X 

t-* 

X 

O 

<t 



X 

3 


X 



X 

C< 


X 

t_ 

r* 


UJ 


P-* 

X 

o 


<X 

2 


*—• 

X 

o 

3 

X 

X 

X 

3 


X 

2 

X 

r-* 


(-• 


X 

X 

f* 

O 

O 

U] 

t-* 

e- 

A 

<£ 

X 


X 

O 

X 

t-* 

<c 

X 

< 


3 

3 

2 



<1 



n 

X 

3 

2 

<t 

2 

<t 


X 

2 

cO 

X 

2 

3 

X 

X 

3 


O 


3 

X 

2 

x 


X 

3 


3 

6 

C 

3 

3 

2 


X 


X 

* 

r-* 



HI 



<r. 



X 




< 



E 


X 




3 



X 

k-* 

3 

O 


X 


o 

X 

x 

3 

2 

X 

p* 

2 

CO 

a; 

3 

2 

X 

X 

X 


2 

X 

2X2 

n 

2 r- 

2 

o 

X 


X 

X 

<t 

X 

X 

UJ 


2 

X 

u 

o 

X 


X 

2 

X 

3 

c 

X 

X 

X 

r* 

X 

X X 


HI 

O 

X 


3 

X 


X 

X 

2 



UJ 

X 

X 


2 

X 

X 


X 

X 


o 

o 

pi 

X 

3 

X 

3 X 

X 


2 

X 

X 


X 

* 

3 

3 

<t 

P-* 

(—• 

■> 


r - * 

r~* 



X 

r-» 


r* 

r-» 

2 

2 


H 


r- 

r* 

x 

3 


(i 

CO 

3 

o 

3 

2 


X 

uJ UJ 

<t 

x 


X 

X 


X 

X 

X 


X 

3 

3 

X 


X 


X 

X 

2 

X- 


X 

2 

r- 1 

2 

< 

p- 1 X 

X 

CO 

3 

-0 

•1 


3 

— < 


X 

3 

—• 


3 

*—i 

•—« 

•—1 


•— i 


HI 

X 

<3| 

_ 


X 

<1 

CO 


3 

co <r 





.. 

«. 











- 


















X 





X 



2 


vr 








4- 

CM 

3 





3 


X 



X 



CM 


X 


X 

CM 

2 

O 

3 




3 


X 

>• 

CQ 

3 

2 


2 


c* 


t— 

2 

“i 

«, 

i 

O 

X 


* 

O 

X 

X 


% 



HI 


X 


X 


X 

3 

2 

3 

X 


3 

3 

3 

X 

<Z 

X 

3 

3 

X 

m 

X 

X 

X 

X 




X 

X 



X 

X 








Q 


3 


SJ 

•— 1 

0> 

X 

X 

d 


X 

X 

X 

> 

HI 

t> 

X 


X 

X 

X 

X 

X 

2 

> 

o 

<£ 

< 

X 

> 


<x 

2 

o 

X 

O 

NT 

NJ 

2 

X 

3 

X 

2 

3 

V 

2 

3 

3 

t: 

S] 

3 

3 

3 

2 

X 

2 

3 

3 


X 

3 

A 

3 








X 

CO 

NJ 






X 

X 

\ 






X 

X 

X 






X 

3 

H 






3 

2 

3 






X 

<C 


X 


X 




3 

X 

3 


<E 



o 


H 

O 


O 



pi 

o 

HI 

* 

O 

* 

o 



O 

3 

3 

3 

3 

3 


2 








<r 

(- 

CO 






X 

X 

X 


X 


X 


3 

>—< 

h* 

•—< 

X 

•—< 

X 

H 

O 

X 

<r 

-> 

<E 

> 

<c 

X 

c 

CO 

2 

2 

3 

2 

3 

X 

X 








H 

X 

i 






D 

□ 

X 






X 

3 

H* 

X 





2 



X 








X 


X 






3 


X 








X 






CO 




























X 






+ 



























X 

3 

z> 





CO 







3 


3 


Q 








CM 





CM 


3 

X 

X 

<r 


X 



r-* 

r-* 



X 



H* 


r-» 


2 










H 



t- 


r- 

X 

X 

2 A 


O 


• 

X 

X 

2 


O 



X 

X 

X 

X 

X 

X 

2 

X 

3 

<t 


X 

X 


X 

<r 


X 


X 

X 

A 

•» X 


X 



2 

2 



X 

•i 


2 

X 

2 

C 

2 

n 

X 

X 

X 



3 

2 

X 

2 



2 


2 

X 

X 

<t x 


3 

X 

* 

*“* 

' 

<t 


3 

X 

O 


r~ 

“ 


*~* 


JX 

in 

3 

2 

X 

O 


X 


2 

X 


X 


X 


3 



X 







X 















X 







d 

—• 

X 

*-• 


X 


NJ 

X 

Z> 

>—< 


X 

— 


HI 


HI 


HI 


HI 


0> 

X 

HI 

NJ 

X 

X 

> 

X 

X 

X 

X 

<£ 

X 

O X 

X 

NJ 

<x 

X 

2 

2 

o 

X 

NJ 

<£ 

X 

NJ 

X 

NJ 

X 

NJ 

X 

NJ 

X 

NJ 

o 

2 

X 

2 

< 

s 

O 

2 

V 

3 

x 

3 

X 

2 -0 

3 

3 

3 

3 

3 

3 

2 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

2 


3 

3 

3 

3 

2 


3 Q 

3 



X 


x 

2 


H 

X 

2 


<r 


% 

2 


3 



H 

3 



— 

3 

3 


HI 



3 


HI 



3 




H* 


'O 

o 


O 



o 

O 



o 

O 

O 


c 



O 


3 


o 

O 


o 


o 


o 


o 

X 

3 


3 

O' 


3 

3 

<r 

n 


<r 



X 


O 


-o 

CM 

Q 

3 

< 

3 


CO 

o 

CM 

vO 

o 


O 

3 


3 

C 

3 

vO 


•7 



vO 


3 


3 

r- 

o 

3 

O 

O 



o 

CM 

X 

X 


3 

3 

O' 

X 

3 

3 

3 

CO 

H- 

X 

O' 

<n 

■7 

<X 

3 

CM 

3 

X 

3 

X 

3 

O' 

3 


X CM 

3 

o 

r^ 

3 

3 

3 

c 

3 

3 

3 

r^ 

X 


X 

3 

O 


X 

CM 

3 

3 

3 

3 

3 

3 

3 

CM 

r-“ cm 

20 

x 

3 

X 

H. 


in 

r- 

<r 

3 

o 

H 

C 

n 

vO 

O' 

<t 

3 

X 


■O’ 

O 

O' 

X 

X 

X 

CM 

in io 

O' 

O' 

> 

O' 

Cl 

< 

< 

< 

<c 

< 

X 

x 

3 

X 

3 

3 

3 

3 

x 

3 

3 3 

3 

3 

3 

3 

3 

3 3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 3 

O 



O 

O 

C 

o 

3 

O 

c 

O 

C 

3 

O 

3 

O 

O 

3 

3 

3 

3 

3 

3 

O 

O 

O 

O 

3 O 



3 



3 

3 



3 

HI 


3 


3 


3 


3 


3 




3 

3 

3 



3 


3 


3 

o 


O 

O 



O 

o 


05 


3 


3 


O 


O 




O 


O 






— 

X 

o 

3 

CM 




X 

'O 

O 

x. 

X 

X 

<X 

rc 

n 

HI 

X 

3 



Q 

O' 


n 





X 

3 

CM 

3 

CM 

X 

X 


3 

CM 

3 

O 

X 

r* 

X 


CO 

Hi 

CM 

in 

Hi 



c 

X 

X 

3 

3 



X 


X 

X 

< 

X 

X 

CM 

C0 

X 

X 

<: 

X 

X 

<E 

X 

c 

X 

< 

X 

<t 

X 

c 

r» 

co 

CM 

3 

co 

c- 

co 

CO 

X 

CO 

X 

3 

3 

**• 

3 

3 


X 

3 



3 

u. 

3 

X 

3 

X 

3 

X 

3 

r- 

CM 

X 

3 

3 

3 

r- 

CM 

3 

oj 

3 

O' 

3 

X 

HI 

CO 

'£> 

O' 

<r 

3 

U. 

CM 

<T 


O' 

3 

X 

H 

CO 

VC 

CO 

CQ 

3 

3 


CM 

m 

CO 

O' 

c: 


X 

3 

X 

3 

X 

X 

X 

X 

X 

X 


X 

X 

U. 

X 

X 

X 

o 

O 

o 

C 

O 

O 

3 

3 


Hi 

Hi 


_ 

— 

Hi 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

X 

X 

X 

3 

3 

3 

3 

3 

3 

3 

3 



3 

O 

3 

3 

3 

O 

O 

O 

O 

O 

3 

C 

O 

o 

3 

3 

O 

3 

c 

c 

o 

3 

3 

C 

O 

O 

C 

o 

O 

z 

z 

O 


-t: 

Q 

Q 

<X 


UJ 

Q 

2 


♦ 

x 

Q 

Q 


X 




X 

X 


X 



X 


3 

X 

X 

3 

X 

3 



0» 



3 

> 

<E 

X 

<r 



X 


2 

3 

X 

H 

pi 

r* 



X 


HI 

<r 

X 

A 

2 

X 


X 







HI 



X 

2 


X 

X 

X 

II 

o 

II 

X 

0> 


H 

> 

n 



X 


H 

X 

5 

HI 

<E 

< 

CM 

X 


X 

X 

X 

r-* 


A 

CQ 


S 

X 

X 



X 

X 



■f 


•> 



X 


X 


r-* 



<c 


H 

3 


CQ 


X 

X 


A 


X 

3 

—i 

3 


3 

'A 




•n 

3 

X 

O 



< 




X 

X 

3 

3 



CQ 




X 

S 


<C 

A 

d 5 

> <X X -J <t 2 

X i i «» 

_J<£3X<t3_]Q 


<£ 2 


•* % 

-1 x 


JS 

H 

a. 


j 

X 


2 

< 


<r 


> H 
O X 
2 X 


H 

UJ 

X 

A 

UJ 

X 


3 a 

QQoxoaooaoooKxjoD 

•j<t2.J2<22*i22 : <n_isn 


CO 

2 x 

t- Q 

u a 
•a <c 
x 

<x ~ 

X ♦ 
O X 

<z 
o x 
u 

* 

UJ H 
Q t/> 
<£ 
O X 


UJ 

2 Q 

O 

X Q 
X 2 
<t 
X 

« d 


2 •• 

<t <n 
X 2 

Z) 
X H 
3 UJ 
o X 



2 



X 

O 



X 

HI 



X 

x 



3 

<t 



<r 

3 



1C 

O X 


X 

c 

X 3 


X 

X X 

3 

X 

X 

3 3 

x <£ 

2 

2 

3 

A 

3 


X <t 

X X 

O 

2 

3 

3 3 

3 

X 

X H 

e 


X 

3 A 

2 3 

X 

X 


2 

II 

3 

o 

X 

— O 

2 

X 


3 


X 

A 

3 

A 

O 

O 

fi 

X 



X 

2 

* 

3 

2 

o 

<t 

HI 

HI pi 

X 

X 


3 



X 

X 

U 

NJ 

X 

O 

2 

X 

X 

X X 

3 

2 

X 

3 

X 

X 

2 

^ 2 

X 

O 

3 


X 

3 


X 

3 

2 


X 

X 


X 

X 




HI 



X 

X 


X 





3 

3 




X 

X 


3 


* 

<r <t 


s x c_> <c x 

•. •* •. •* j 

mx sx <c — o a 


3 ID 

> <E >XX>XX>h5mh 
0XM02OO2UOZ)O2UJ 
SOXs-*:<2«Xscos^X 

X 

X 

H 

X 

X 
















X 


























<x 


<r 


























X 


X 















X 











3 


3 











p“ 




2 











p-» 


r-* 


X 









3 




*— 1 









o 


n 


n 


2 













X 

X 







X 

X 


<i 


<z 



X 













<t 








3 


X 

















2 

X 



X 




X 

X 







<E 



X 









•— 1 

3 



X 


X 


2 



X 


X 



3 



<t 




u) 










X 

2 


•—« 

3 


X 




X 













3 

X 



X 

X 

X 


O 

2 


3 


3 


3 

X 




X 













X 

o 


X 

<1 


2 


2 



X 













<1 




2 

3 





<C 

X 

<r 


<C 

X 



X 









O 

X 


X 






X 


3 

3 

3 

3 

3 

X 



X 









X 



X 

<t 

O 

X 



<t 



O 




3 













in 




X 

<r 


X 

X 

pi 

2 

X 

2 

X 

2 





X 




3 


3 






X 


2 





X 

X 

X 

r- 

X 

X 



X 



X 

X 









2 




X 


3 

X 

2C 

X 

3 

X 

3 



X 

X 

X 


X 

X 




A 

3 


X 

HI 

> 

X 


X 

H 


X 


pi 



C 












X 

2 


o 

o 


X 


X 

X 

X 


X 


X 


O 






X 






<x 

c. 

X 

X 

X 

A 

3 


X 

3 

HI 


•—1 


HI 


X 



n 


A 



































3 



3 





















1 


** 



X 

X 


























2 

3 


A 
























X 

X 

O 

X 

X 
























X 

2 

X 

2 

2 
























3 


3 

X 

3 
























X 

;< 

X 

X 

O 
























X 

<1 


c 

3 

X 


X 






















2 

X 

3 


X 


<r 





















o 


o 

3 

X 

3 


2 





















X 

II 



<E 

X 

X 

X 


X 



3 


3 


X 






.X 







UJ 


in 

X 

X 

X 

3 

2 

H 


X 

2 

X 

2 

X 

2 

X 

x x 

< 



X 

3 


X 


x 



d 


•» 

Pi 

•» 

•» 

X 


X 

< 

X 

<£ 

in 

<r 

Hi 

ii 




X 

Q 






2 



X 


X 

CQ 

X 

3 


3 

> 

3 

— 

3 

o 

2 

OJ 

2 

X 

X 

O 


X 

<c 

<t 

2 

3 

X 

2 

O 
























HI 


HI 

<t 

X 


3 



3 

X 












Q 








X 

3 


*1 

X 

HI 

3 

X 

X 

HI 


HI 


HI 


HI 


HI 

> 

X 


_ 




3 

•• 

A 


X 

X 

X 

X 

O 

X 

« 

X 

NJ 

X 

NJ 

X 

NJ 

X 


X 

O 


X 






X 

X 




X 

m 

X 

2 

X 

3 

3 

3 

3 

3 

3 

3 

3 

3 

X 



A 

3 

3 

3 

2 

O 

O 

X 

X 

X 

X 
























X 

2 

X 

X 

m 

•• 























> 

X 

3 

3 

3 

2 




• • 



















X 









CM 



















X 





X 




2 
























X 




HI 



















•*' 




*** 





X 











2 









o o 

<c in — 


•7 

<C 

N* 

X 

CM 

3 

_ 

X 

vO 

O 

O 

X 

X 

X 

CO 

CM 


X 

O 

vO 


O' 

O' 

r-> 

X A 

CO 

X 

O 

CO 

X 

O' 

o 

X X 

X 

CM 

O' 

CO 

3D 

<T 

CM 

P* 

3D 

vO 

in 

3 

lO 

in 

X 

CM 

CM 

r** 

Q 


3 

r» 

X 

3 

•7 

CM 

X 

r- 

CM 

X 

C- 

Q <T 

3 3 

CO 

X 

3 

3 

O 

Hi 

CM 

CO 

<T 

\0 


co 

O' 

3 

X 

O 

CM 

C0 

■cr 

in 

vO 

r- 

X 

O' 

<C 

X 

3 

3 

X O 



CO 

co 

CO 

CO 


•cr 

<1 

•7 





<r 

<T 

<T 

n 

A 

n 

in 

in 

n 

in 

in 

X 

X 

X 

X 

X 

X o 

X 

X 

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 

O 

O 

O 

O 

O 

O 

O 

3 

O 

O 

O 

O 

O 

o 

O 

o 

O 

O 

o 

o 

o 

o 

o 

O 

O 

O 

O 

O 

o o 

O 

O 


o 

Q 

O' 

(M 

in 

X 

o 

o 


Hi 



Hi 

HI 


3 


3 


3 


3 




H 


3 

o 

o 


o 

o 


O 


O 


O 


O 




o 



X 

<T 


X 

o 

X 

o 

X 

3 

X 

X 

Hi 

X 

o 



X 

Q 

■i 

X 



X 

o 

X 

X 

N- 

X 

Hi 

<r 

X 

X 

X 



CO 

o 

<r 

CM 

-1 

X 

<E 

Q 

X 

c 

X 

<r 

X 

<r 

X 

< 

X 

P» 

CO 

X 

!ij 

<z 

CM 

X 

<T 

X 

3 

X 

3 

X 

3 

X 

3 

X 


X 

P- 

X 

X 

X 

3 

X 

X 

X 

X 

X 

X 

c*» 

<t 

3 

X 


■T 

X 

O' 

X 

3 

Q 

o 

X 

X 

X 

X 

X 


r** 

P- 

pH 


r— 

CO 

X 

X 

X 

X 

X 

X 



3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 



3 

O 

O 

O 

O 

O 

O 

O 

O 

c 

O 

O 

O 

o 

o 

O 

O 

c 




in x r- 

OM 

n \o p- 
O' O' o 
uuo 
c: c o 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 31 


229 















O' 

a 

co 

<c 

a 

o 



<r 

/■N 








H 









































a 

a 








a 









































d 

X 








X 


















































H 










































w 








a 








































<c 

a 









0 








































r— 

•—1 

V* 

















X 































<c 

<c 

r» 





H 


*-• 

a 









a 































a 

> 

X 




X 

>—< 


X 

d 









<t 
































<n 

2 

r- 



a 



a 

<r 






to 



X 































X 


a 




2 

H 


d 

a 






X 



y) 



X 




























0 

< 


X 



>— 

<C 


d 

2 






X 



X 


d 

a 



















X 









X 

—• 

X 



r— 

t— 

X 


X 

<n 






r-• 



2 


<t 

2 





a 














a 










<1 

w 


A 

a 

2 

? 


r-* 

k- 






X 


































—* 

a 

X 

a 

a 

X 

0 



2 

A 






1—< 



r-• 


A 

t-. 






























X 


r- 

2 

u 

X 

NJ 

»—• 







CO 



X 


X 

2 



















. 









i-» 

a 

a 

2 

<r 

•—« 


X 

\ 


d 






X 



a 


V 

0 



















a 










<r 

X 

<* 

r-• 


2 

a a 

2 

0 






X 



d 



a 













X 















O 

a 


X 

tO 

0 

X 


f* 

X 

X 









X 


3 






<r 









X 














X 

x 

H 



2 

X 

X 

CJ 

X 







X 



X 


O 

X 





2 








<t 











X 







X 

H 


r~* 

A 


T— 







> 



H 


a 

to 





•v* 














X 





a 




•t 

X 

2 

0 

X 

X 


rJ 

X 


0 






<t 



2 


a 

a 





0 









X 










c 



a 


0 




•— 1 


X 



2 






A 



•—1 


<T. 

X 





2 








X 

0 





_ 








0 


X 

2 





•« 



•* 









•* 







0 

.% 








2 


X 




b 



































X 










to 

to 









3 



» 



X 
























a 









X 

A 










0 



2 

• 

X 

























X 









O 

X 

a 












0 




















a 
















X 

X 

<r 




X 








0 



X 

















yj 







a 









X 

a 










d 



x 

d 


0 

0 
















2 







2 









X 

a 

C 




<t 





X 






X 

X 
















t— 

X 






<t 










<r 


>- 








•> 



0 










X 



—* 







2 

0 

X 














X 


















9 ^ 


X 

O 


X 

r* 


X 

0 

a 






>—• 

X 

H 





<x 


X 

Ml 


x <1 





X 

X 













r - * 




0 


•—< 

<c 

2 


0 

X 

* 







d 

2 








X 


u. 






X 



X 











•— 1 

0 

X u 

O 


u 

a 



0 

X) 

a 

<r 



X 

a 

X 

X 

X 

X 

X 

a 

X 


0 

O 

<7 

a 


r~ 

a 

a 





a <t 












H 

X 



































2 














d 



X X 


































„ 













0 



<c 0 




a 









X 

X 

X 


a 

a 





X 











to 













X 



X X 





■— 1 



•—< 


> 

t— 


to 

a 

A 


a 

a 

X 

X 

X 

H 

<c 


_■ 



Ml 

> 


f- 

a 

•• 


a < 

H 


CQ 





X 



X 




a 

z 

2 

X 

5 ! 

X 

X 

2 

2 

NJ 

0 

a 

X 

a 

a 

a 

x: 

<r. 

5 ! 

0 

0 0 

X 

X 

2 

2 

NJ 

2 

2 

0 


X 


r 


3 x 

X 


a 





a 



a 


<t 

r~* 


—* 

<1 

a u 

a 

a 

•—> 

<n 

a 

£ 

0 

X 

X 

X 

x a 

a 

a 

X 

X 

X 

d 

a 


<£ 

a 


< 2 

a 

X 


X 

a 

a x 

X 











a 

A 

X 

a 0 























H 









X 

H 

2 

H 

X 



X 






a 






























a 









0 

X 

X 

•• 


X 

a 





A 



a 











•• 






•• 










X 









X 



X 


X 

to 





2 



cO 





•• 












X 










2 

•• 








X 



0 


X 









2 

















H 










•—* 

►H 








X 



X 








O 



x 





X 












2 











X 











[X 











2 

*•* 


•** •' 

•** • 

^ a 












— 1 









•> 

^ •< 

■. a 







• c 

* 

•* 


^ X 








,, 


















































in 



c 











































0 

0 

X 


<7 

X 


OJ 










































a 

03 


^7 


0 

<7 


X 




















X 

a 

O' 








a 




—• 





a 



>r 

CJ 

<T 

in 


in 

a 


<7 










0 



0 







0 

0 

0 








0 




0 





0 




<T 

lT) 

in 


X 

^7 


X 









<c 



0 



—• 






X 

CO 






0 

O 

X 




CO 









A 



a 



a 






0 


X 

0 

— 

X 

0 


X 


0 





■A 

a 

X 






0 

<r 

a 

0 
























m 

'V 

< 

a 


c: 

X 

'0 

<n 

O' 

CO 

O' 

<A 

iO 


•— 

a 

a 



— 

O' 


m 'O 

<E 

X 

vO 

X 

a 

O' 




a x 

O' 




X vO 













CJ 




X 

a 

r* 

a 

a 

X 

a 

a 

CO 

a 

a 

a 

a 

X 

a 


a 

X 

a 

a 

X 

<T 

a a 




a < 

a 



<T 

>r 

<7 

<7 


in 

in 







vO 


X 

X 

0 

CO 


r- 

<C 

X 

a 

X 

X 

0 


•T 

r- 

< 

X 

a 

a 


X 

0 

CVJ 

uO 

r* 

O' 

<r 

a 




x — 
















<r 

<d 

< 


<2: 

X 

X 

X 

X 

a 

X 

X 

X 

X 

a 

a 

a 

a 

a 

a 

a 

a 


a 

a a 

a 

a 

a 

a 

a 




a x 

X 





X 


a 



Q 








a 



a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 


a 

a 

a 

a 

a 

a 

a 

a 




a a 

a 



a 


a 

a 


a 

a 








0 

0 

0 

0 

a 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

c 

0 

0 


0 

0 

0 

0 

0 

0 

0 

0 




0 0 

0 



0 

0 

0 

0 


0 

0 



a 

3 



X 

X 











2 

2 




X 












X 







X 

X 




7 > 



O 

X 






X 


X 



X 

X 



X 

X 


8 

n 

X 




r* 



0 

0 



yi 




X 

a 

X 





2 

X 

2 



0 

<r 

X 


r-* 

t- 



X 

X 

O 



8 

t-l 

X 

2 

2 


a 

a 

X D 



* 

< 

2 

X 

O 

O 


2 

a 

X H 

X 


0 

X 


d 

d 

d 


X 

< 

d x 

O 


X 

a 

O 

a 

X 

X 




a d 





X 





X 

X 


X 


% 

<c 


a 

X 

X 


X 

d 

a 0 

a 

iO 

0 


X 

2 

a 

a 


0 

0 

3 * 


A 

a 

H 

2 

X 

a 

a 


H 

H 

X X 

0 

X 


X 

3 

A 

<t 

<c 


to 

to 

A M 

H 

d 

X 

a 

a 









Q 

0 










a 

a 


** 

’** 








2 

<£ 

y> 












y> 










d 

a 

X 










H 

2 

X 










A 


a 






a 





r* 

a 




S d 

x ^ 5 >* ^ j; > 

u X 7: r- <t J O O 0. X X 

co jjo 

'O j: jz - x * o x % ■» 

UOOJ — JQIWSHOXE 

JJQ ax X QJ 
~XXX%XX~X~X- 1 >-~H 
X<UsS<tXOlOOU 
^UOj“3JOJOS-y)OJE d 


U 7) 
< 

<r 

X 

o 


2 

X 

id 


x 

o 

X 

a 


S3 

X H 

3 ; 3 


X 

3 


a x 

t- X 

a o 

3 2 Q t- 
• 2 


O X 
X 4 

O Q 
X X X 
!> X 
W >• X 
- <£ 

- d X W 
X I- X 2 
X tO m. 
2 X ~ X 
X X Q 
X O U X X Q 
t-t-idr- h ^1 3 Z 
3 <t X _J 2 X 

X 2 - X 


d-d ^ 

“32 


~ Q 
2 


X 

o 


2 X 

- x o 

O X 


X 

X 

<1 

a 

H 

O 

X 

X 

—• H 

a - 
2 

- Q 
2 
2 X 
<1 tO 

x o 

id r- 
< 


I <X tO 2 


s/l 

O 

X 2 
X 

t** X 
2 2 

O X 
X 

>- 
X 2 
a> <£ 
x 

- x 

r* Ml 

r* id 
X -0 
X ••* 


5* 1 


X X 

ax x >- x a x 

<rt- o x <t <t h z 

2 x x <EHoxa xot-u x 

* ■» •> * z> a z to * a :> id 

<r x a x — a o o o x a a o o cn 

a j co a jo j 
:>*:>:>« :> x x ~ xx~xxxxh 

02001N0X<tXMUS5X<U<tW 
2 -- 2 2 O X2JOU*^X-DSJCJi<OX 


a 
x 
v) 
, a 


a 

o 

a 


x 

2 

<c 

2 

a 

3 


O 

o 


>• 

c 

o 

3 


2 

2 


5 

d 

co 

o 

d 

x 

H 

a 

x 

a 

o 


X 

2 


X — 

§ J 
<t x 
2 
r- O 


X 

<£ > 
T— <t 

y> a 
x 


2 tO 
CO H- 

x a 


x 

X 

<E 

2 

a 

2 

X 


o 

2 

X 


X 

X 

o 

s 

3 

X 


co 

x + 

X H 

a >• a 

m x o 

XX a 

^ V) x 

x a - x 


x 

~ x ~ 

x < x 
x a a 


N 3 H 

2 x 
a x 


H 

a 

o 

X 

X 


d 

o 

5 

2 

2 


§ 

CO 

o 

X 

X 

>- 

<c 

a 

x 

y> 

a 


o 

a 

* 

X 


X r* 

a a 
< o 

t- CO 

a x 
o x 


Q a 

~ a a t- 
X X <c x 
a -o a x 


a 

x 

X 

a 


>* 

x 


0 




X 

2 

X 


X 

2 

X 


X 

Ml 

0 


0 


to 


A 


2 

2 

2 


O 

3 

O 

8 

a 

X 

a 

a 


a 


0 

0 

0 

0 

x 

H 

X 

H 

X 

H 

X 

r-» 

t-» 

X 

X 

X 

y) 

y) 

:> 

to 

Ml 

X 

<E 

X 

X 

d 

•yj 

X 

•» 


•» 



X H .X 

a a a 

o c o o <e 

a h a o h 

a x ^ a 

x o x x o 


.x h x 

a a a 

o c o o <t 

Xr-COUe- 

«* a x «* a 

x o x x o 


a a a 

x x <! x Jx! x 

a y) o a to x 


x 

a 


a a a 
5c < x i! 


to o a -0 


a 

x 

x 

a 


a 

x 

x 

n 




a 

Ml 

a 

Ml 

a 

a 

a 



a 

Ml 











a 


a 


a 


O 

0 

O 

0 

O 

0 

0 

0 


O 

0 

O 










0 

0 


c 


0 

a 

ro 

<7 

03 

X 

03 

O' 

in 

X 

— 

co 


in 

0 









0 

a 

a 

0 


O' 

a 

O 

a 

03 

X 

03 

<7 

X 

a 

0 

— 

a 

<7 

0 






O 



7 - 

■A 

c 

0 


7 - 

X 

a 

a 

<r 

CO 

<C 

a 


a 

0 

03 

a 


0 

O' 

X 

CO 

<r 

a 

X 

co 

X 

< 

a 

X 

<x 

a 

CO 

0 

a 

a 

03 

a 

03 

a 

03 

a 

CO 

03 

a 

03 

CO 

a 


03 

n 

n 

x 

a 

■7 

03 

a 

X 

a 

X 

a 

M 

a 

\0 

O' 

a 

X 

01 

in 

co 

a 

a 

0 

co 

V 0 

co 

O' 

< 

a 

a 

a 

X 

0 


7 " 

fM 

O' 

a 

a 

03 

01 

03 

03 

03 

03 

ro 

co 

CO 

co 

co 

^7 

<r 

•7 

<7 

<7 

•7 

7 1 

<r 

■7 

7 - 

>n 

in 

■n 

n 

in 

n 

in 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

0 

c 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

0 

c 

c 

0 

0 

0 

0 

0 

0 

0 

c 


Page 32 Dr. Dobb's Journal of Computer Calisthenics 


— 

a 


•7 

0 

a 


a 


Ml 

Ml 

a 

Ml 

Ml 

a - 

M« 


Ml 


a 

_ _ 

0 

0 


0 

— < 

0 


0 


O 

O 

0 

O 

O 

0 0 

O 


O 

O 

0 

0 0 

<t 0 

X 


<x 

c 

O' 

•— 



co 

O 

X 

O' 

O 

X to 

O 


a 

O 

X 

a 0 

O 7 - 

0 


r- 

0 

>r 

0 

r- 


O 

T - 

0 

0 

7 ’ 

vO O 

T’ 


0 

7 - 

a 

0 <r 


a 

a 

a o' 0 


X 

X 

03 

O' 


CO 

a o' 

•M 

03 

a - 

03 

O' 


03 

a 


O 03 

a 

X 

a a x 

03 

a 

X 

a 

a 

03 

a 

a a 

03 

03 

a oj 

03 

a 

03 

03 

a 

03 03 

O 03 

n 

a 

O' a a 

X 

Ml 

7 1 

\D 

O' 

<t 

a 

0 co 

7 * 


<t a 

O 

to 

7 * 


7; 

a 0 

O vC 

0 

0 

vO vO 0 

vD 

r- 

r- 


r- 

P» 


cc a 

a 

a 

a a 

O' 

O' 

O' 

O' 

O' 

O' <t 

X X 

X 

X 

a a a 

X 

X 

a 

a 

a 

a 

X 

a a 

X 

X 

X X 

a 

a 

a 

a 

a 

a a 

0 0 


0 

000 

O 

0 

0 

a 

0 

0 

O 

0 0 

0 

0 

0 0 

0 

0 

0 

0 

0 

0 0 

Si Orthodontia, Box E, 

, Menlo Park CA 

94025 






May 1977 


230 












NEWS FROM COLA 





UJ 






u 








X 




X 


H 

X 



a 


s 

a 



X 


E 

o 



UJ 



% 



x 


O 

• 



x 


H 

NJ 



a 



\ 



a 


UJ 

J 





5 

O 



3 


X 




X 



X 



t3 


UJ 

H 



O 


O 

«—• 



X 


<1 

a 



X 


X 






o 

H 

a 



§ 


H 

to 

X 



X 



2 





3 

•—« 


X 

u. 


Z 



a 

o 


•—« 

UJ 

X 

o 



X 

H 

a 


H 


t— 

<t 

o 

• 

X 


to 

2 

«* 

•• 

<t 



S 


& 

H 

a 


a 

T* 

a 

•— • 


a 

2 

UJ 

<t 



x 

2 

r— 

o 


UJ 

a 


•• 

a 

* 

a 

a 

E 

m 


• 


x - 

« 




2 


X 






a 




O 


o 





o 

x a 

a 

a 

a 

UJ 

x a 

X 2 

a 

a 

a 

X 

o a 

Q 




UJ 


UJ 




X 


L> 





•• 

X 




3 

u. 

a 




X 

x 

o 




o 

Z2 

i n 





a 





•A 

• A x 

• A 


CO 






q 

O' 




in 


o 

q q 

q 

a 

q 

q 

a 



in 

q 

<T 

a in 

in 

o 


o 

o 




UJ 

O 

m O' 

o 

4 

q 

co 

< 



<T 

q 

CO 

in q 

q 

m 

X 

in 

CO 



in 

ON 

in 

o r» 

o 

X 

q a 

co 

o 



<£ 

q 

q 

in in 

co 

co 

u o 

<1 

in 

mm 


CO 

a 


UJ o 

00 o 

q « 

CO 

in 

o 



q 

in 

q co 

q 

q 

CO 


q 



o 






u 

CO 


o o 

o 

o 

q 

00 

u o 

q 

co 

a o 

X 

NO 

o o 

o 

UJ 

u 

o 

u a 

a 

a 

X X 

X 

X 

o o 

o 

c 

UJ 

X 

UJ UJ 

UJ 

UJ 

o x 

o 

X 


o 


o 

o 

o o 

o 

o 

o 


o 




The first meeting of the Computer Organization of Los Angeles 
(COLA) for the 1976-77 academic year was held on October 14 at the 
Pacifica Hotel in Culver City. Following a testimonial dinner honoring 
Mr. Art Freier, Mathematics Supervisor for the Los Angeles School 
District, Prof. Richard Ballard of the University of California at Irvine 
gave a fascinating slide presentation on "Computers and the Future of 
Learning." 

An enthusiastic and highly innovatibe proponent of computers in 
education. Prof. Ballard outlined some of the current uses of compu¬ 
ters at UCI and some possible applications of techniques now under 
development. 

If the present trend toward larger classes and smaller budgets con¬ 
tinues in American universities, computers may soon become the only 
cost-effective way of evaluating student performance. For example, at 
UCI all Physics examinations at the undergraduate level are computer¬ 
ized. 

Using a Xerox Sigma 7 timesharing system and other computers, 
UCI provides highly sophisticated computer services to both students 
and faculty. High-speed video terminals facilitate extensive use of 
coordinated text and graphics displays, and hard copy is available to 
students via coin-operated non-impact printers. 

One of the exciting new developments at UCI is an incredibly versa¬ 
tile program that allows students to set up and perform an almost in¬ 
finite variety of simulated physical experiments. Over 150,000 distinct 
functions are provided, and the progress of each simulation is moni¬ 
tored on-line by a graphic display of all of the variables requested by 
the student. Examples cited were the display of electric field intensity 
plots under varying conditions, and the display of planetary orbits in 
multiple star systems. 

Another remarkable development is a CAI technique giving the stu¬ 
dent almost total freedom in his interaction with the computer. At 
any point the student can change the subject within reasonable limits, 
request clarification of a specific point, or ask the computer to cover 
the material in greater or lesser depth. 

To implement the extensive graphics capabilities of these programs, 
UCI has added powerful graphics functions to high-level languages such 
as APL and BASIC. 

Prof. Ballard concluded his talk by saying that presently available 
APL interpreters are rather slow for some CAI applications, but specu¬ 
lated that a highly parallel APL multiprocessor might be several orders 
of magnitude faster than any machine in use today. 

Oct. 15, 1976 Jim Day 


x 

Q 

O 


Q 


X 



X 

S 


a 



a 



o 



o 

a 


* 



A 

GJ 


* 



• 

X 


2 



a 

X 


o 



X 




X 

X 

a 

X 

X 

to 

a 

a 

X 

in 

a 

a 

o 

o 

X 

2 

o 

X 

* 

A 

u 

O 

* 

X 

• 

• 

X 

X 

• 

X 

O' 

O' 

X 

a 

a 

;>< 

O' 

O' 


X 

X 

X 


1 

X 

X 

e* 




c— 


X 

J 

A 

V 

X 

u 

a 

<t 



X 


X 

CD 

X 

X 

a 

X 

X 

X 

a 

a 


X 

X 

J 

X 

X 

X 


H 

X 

<r 

<c 

>n 

a 

2 

—> 

a 

a 

a 

2 


* 

* 

* 

* 

* 

* 


X 

Q 

O 


O 

00 

o 

X 


X H 
Q O 
O X 


* X 



X 

a 

o 


< 

<3 

o 

£ 

X 

3 

X 

Z 

<r 

Q 

<r 

o 

_j 


X 

Q 

O 


X 

a 


>• 


x 

a 

o 


w 

* 

Z 

3 


X 

a 


c. 

o 

o 

X 

X 


X 

X 

H 

2 

X 


a 

a 


a a a a 

a a a a 


a a a a 

a a a a 


a 

q 


<T 

X 

q 

co a 
in o 


co r» 
o o 

UJ UJ 

o o 


a 

a 

a 

.. 


a 

a 

a 

a 

•• 


E 

JE 

X 

a 

a 

X 

X 

E 

a 

X 

> 

2 

H 

E 

X 

o 

a 

a 

2 


a 

a 

E 

H 

Z 


x 

x 

a 

a 


U 





a 




a 




a 





a 







q 




O' 












O' 

<r 

X 



q 

u 

o 

co 

a 

q 

X 

O' 


q 

a O' 


q 

o 

a 

a 

a 

q 

CO 

CO 

CO 

a 

CO 


a 

a 

q 


q 

a 

o 

X 


q 

o 

3 

r- 

X 



a 

CO 

•3’ 

0 

X 

a 

q 

a 

a 

o 


CO 

CO 


•— 

CO 

co 


CO 

a 

q 

q 

o 

a 

q 

a 

a 

q 

a 


X 

a 

q 

a 

o 

co 

CO 

CO 


X 

CO 

CO 

q 

co 


a 

o 

<r 

a 

CO 

q 

q 

—< 

CO 

co 

X 

q 

o 

o< 


q 

o 

O' 


a 

a 

o 

a 

q 

a 

O' 

a 

X 

co 

O' 

a 

q 

CO 

a 

o 

a 

q 

X) 



q 


t— 

X 

a 


3 

co 

co 

q 

CO 

O 

O' 

q 

a 

a 

q 

vO 

CO 

CO 


vO 

co 

CO 


a 

q 

CO 

q 

q 

X 

q 

q 

q 

a 

q 

o 

O' 

a 

q 

<r 

<c 

a 

CO 

CO 


o 

q 

a 

q 

q 


<r 

<r 

X 

< 3 ; 

a 

4J- 

q 

r- 

a 

a 

X 

a 

a 

o 


a 

a 

a 


a 

q 

CO 

CO 

a 

q 

co 

co 

X 

o 

a 

q 

q 

co 

q 

CO 

CO 

X 

o 

3 

a 

q 

o 

a 

co 



co 

co 

q a 

co 

a 

O' 

<c 

q 

q 

q 

q 

<£ 

q 

CO 


<t 

q 

co 


<z 

q 

q 

q 

q 

< 

a 

a 

q 

co 

a 

q 

< a 

a 

q 

q 

q 

CO 

CO 

o 

<r 

CO 

q 

a 

q 



a 

< o 

q 

q 

q 

CO 

n 

o 

co 

O' 

CO 

a 

o 

a 

co 

a 

o 

a 

CO 

o 

q 

CO 

q 

co 

a 

o o 

a 


a 

co 

a 

o a 

a 

a 

CJ 

X 

o 


CO 

q 

X 

o 

co 

a 

q 

q a 

q a 

a 

q 

O 


q 

co 

a 

q 


a 

CO 

o 


a 

CO 

o 


CO 

a 

a 

q 


q 

co 

a 

q 

a 

q 


q 

a o 



q 

co 

CO 

CO 


q 

q 

a 

a 

o 


o 

co 


a 

a 

CO 





a 




O' 




NO 





<r 







a 



co 

a 











o 

X 

q 

<£ 



o 

u 

o 

q 

CO 

—• 

o 

q 

CO 

CO 

a 

•— 

a 

CO <E 

X 

co 

nO 

q 

X 

co 

NO 

<z 

X 

co 

vO 

O' 

a - 


t'- 

O' 

a 

~~ 

a 

X 

CQ 

X 

CO 


a 

O' 

O' co 

<r co 

<r 

X 

co 

X 

o 

•— 

—< 

—- 

X 

CO 

co 

co 

X 

CO 

CO 

co 

X 

CO 

CO 

q 

q 

X 

q 

a 

a 

a 

a 

'O 

X 

'£> 

\0 p- 

X 

X 

r- 

r- 

X 

oc 

X 

X 

X 

O' 

O' 

O' 

X 

X <1 

X <c 

ui 

< 3 ; 

a 

o 

X 

X 

X 

X 

o 

X 

X 

X 

o 

X 

X 

X 

o 

X 

X 

X 

X 

o 

X 

X 

X 

X 

X 

X 

o 

X 

X X 

3 

o 

X 

X 

X 

X 

o 

X 

X 

X 

X 

X 

3 

3 X 

O X 

0 


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 

3 


c 

c 

3 

3 O 


c 

3 


0 

3 


x 

in 

o 

n 

o 

CO 

q 

in 

o 

a 

c 


q 

co 

n 


a 

* O 

x a 


<1 X 

a a 

UJ UJ 

c o 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 33 


231 




The mention of low-cost 
computers usually evokes 
one of two images. Some 
of us see a super calculator; 
others picture a large 
data-base processor. The 
system described here is 
a more modest machine 
that could sell for under 
$500 in the relatively 
near future. Not much 
has been written on 
practical computers of 
this size. Nevertheless, 
prototypes of this 
low-cost, mass-market, 
free-standing computer 
system have been con¬ 
structed, programmed, 
and operated in a home 
environment over the 
past several years. 


A PR4CTICA, ICW-COST, 
HOME/SCHQDL 
MCROPROCESSOR SYSTEM 


Joe Weisbecker, RCA Laboratories 

Reprinted from the IEEE Computer Society's Computer magazine, 
August 1974 issue, with permission of the IEEE and the author. 


Jim-- 8/76 

My ideas have changed somewhat since I wrote this 
article. I think such a system could be in the under-$200 
range today, but the philosophy is still sound as far as 
I’m concerned. 

Joe Weisbecker 

EDITOR'S NOTE: Joe was the designer of RCA's COSMAC. 


Meet Fred 

Despite the recreational and educational potential of 
stored-program computers, the single factor of cost has kept 
them out of the economic reach of most people. But with 
the advent of LSI microprocessor and memory chips, this 
may all change - particularly if we take a more modest 
applications approach and place reasonable limitations on 
hardware capability. 

Of course, if we need conventional input, output, and 
bulk storage devices, or if our applications are playing chess, 
printing pages of data, or accessing large on-line digital/ 
video data bases, the cost will still be prohibitive. However, 
prototypes of such modest home/school systems have 


Page 34 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


232 










been constructed and in use for several years. 

This system, called FRED (Flexible Recreational and 
Educational Device), has been developed using the RCA 
COSMAC microprocessor. 

A computer of this type could have major social value. 
As an interactive, open-ended, adaptive, recreational and 
educational device, it could stimulate the development of 
analytical and other intellectual abilities. One can easily 
imagine the formation of a whole new group of computer 
hobbyists, complete with user groups and publications for 
the exchange of programs and ideas. In short, the inexpen¬ 
sive home/school computer could open the door to an 
entirely new environment that stimulates experimentation, 
analysis, and creativity. 

Application and System Overview 

In schools, FRED could provide a powerful educational 
tool. It could be used to drill and test students from first 
grade on. It could be used in educational games, simulation 
exercises, and reading readiness, as well as in teaching pro¬ 
gramming, as an adjunct to math courses, and as an 
accessible student tool in almost any subject. FRED could 
be used to set up stimulating demonstrations and experi¬ 
ments in a wide variety of areas, to help correct learning 
disabilities, and to stimulate the development of creative 
abilities. Cost per student hour would be measured in 
pennies. 

In the home, FRED has already functioned as a sophisti¬ 
cated entertainment center for the whole family. It provides 
a variety of games, simulates a calculator, and even provides 
a controllable TV puppet for the youngest member of the 
family. FRED permits a number of creative activities 
including TV picture drawing, low-fidelity music synthesis, 
and programming at a variety of skill levels. FRED also 
provides a shooting gallery, a variety of puzzles, and ani¬ 
mated TV greeting cards for holidays. 

Since FRED is a stored-program computer, it requires a 
program to be loaded into memory before use. Program 
loading is performed with an inexpensive audio cassette 
player which also gives the computer its voice, music, and 
sound effect capabilities. Prerecorded program cassettes 
can be loaded in less than 30 seconds. 

After a program cassette is selected and loaded, FRED 
is operated with a small 16-position keyboard. Fora game, 
the player presses appropriate keys to indicate the moves. 
Overlay cards are provided so that keyboard labeling can be 
changed for different programs. 

FRED is attached to the antenna terminals of any TV 
set. This provides an inexpensive, flexible, dynamic output 
display which is ideally suited for home/school use. Num¬ 
bers, words, or simple pictures can be displayed on the TV 
screen in the form of dot patterns. 

The basic FRED system comprises the RCA COSMAC 
microprocessor, 1024 bytes of RAM, a simple hex keyboard, 
an inexpensive audio cassette player, and the user’s own 
TV set. One would be hard-pressed to imagine a less expen¬ 
sive free-standing computer system. This system is supported 
by a library of cassette programs in the same way that a 
phonograph is supported by a record library. A continuing 
supply of new programs could be provided by the manu- 

May 1977 


facturer of the system together with a selection of optional 
hardware attachments. 

Adding a $25 punched card reader and $10 manual 
punch to the basic system increases its usefulness and pro¬ 
vides more sophisticated users with the ability to prepare 
and save short parameter lists or programs. Adding a 
module for recording the contents of memory on cassettes 
turns the basic FRED system into a user-programmable 
computer for serious hobbyists. Other possible attachments 
include light guns, extra memory (RAM), pre-stored pro¬ 
grams or tables (ROM), and output relays for control uses. 


Design Considerations 

Two different approaches can be taken toward develop¬ 
ing an under-$500 home/school computer. One approach 
involves specifying a desired set of system characteristics 

and then attempting to achieve cost objectives. The danger 
in this approach is the tendency to overspecify the hardware 
so that price targets can’t be met. The approach we took 
in developing FRED was to define a minimum cost, non¬ 
trivial hardware system that could easily meet our low 
price goal, and then testing its usefulness. This approach 
ensures that applications development effort won’t be 
wasted. Applications developed for our minimum system 
are easily transferred to a larger system. 

Any free-standing computer must include a CPU, main 
memory, input and output device(s), and bulk storage 
device(s). 

The FRED system required the development of a system 
philosophy that was consistent with utilizing minimum cost 
hardware. This system philosophy included asking what we 
could do with cheap devices instead of asking what types of 
devices we might ideally want. Because of our low price 
goal, the implications of each of our choices were magnified 
in importance. 

For our purposes, competitive cost-performance ratios 
were largely ignored. Reliability was also sacrificed to some 
extent to achieve low cost. Of course, permanent system 
failures cannot be tolerated, but occasional transient errors, 
provided they are not catastrophic, may be permitted during 
program loading. The need for memory and processor 
parity checking was also felt to be an unaffordable luxury. 

Ease of use is a primary requirement. So that the system 
would not appear overly complex to the novice user, a 
turn-key system philosophy was adopted. The user simply 
loads a program from a library to obtain a desired function. 
He is not expected to program the machine. This approach 
eliminates the need for program debugging and maximizes 
ease of use. The need for an expensive control and diagnos¬ 
tic panel is also eliminated. In fact, only two switches are 
required for basic use: LOAD and RUN. Utility routines 
and optional hardware are provided for the sophisticated 
user who wants to develop his own machine language pro¬ 
grams. The minimum system also provides for small user¬ 
generated programs via a variety of simulation languages. 

A block diagram of the basic system is shown in Fig¬ 
ure 1. System considerations will be included in the discus- 

Page 35 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


233 



sion of individual elements. 

Central Processing Unit and Memory 

As mentioned earlier, the advent of single chip LSI 
microprocessors has made the under-$500 system possible. 
Suitable microprocessor chips should be available for less 
than $25 within the next several years. The choice of a 
microprocessor has a large influence on total system chip 
count and system cost. This influence is an important 
consideration since the microprocessor itself is only a small 
part of total system cost. The COSMAC architecture im¬ 
mediately eliminates the need for a read only memory 
(ROM) in the minimum system. Only one supply voltage 
is required. COS/MOS circuits further reduce system power 
supply costs. A self-contained direct memory access (DMA) 
channel facilities initial program loading and display refresh. 
A single-phase clock is another minimum cost feature. High 
output drive capability eliminates external buffer circuits. 

The 8-bit COSMAC architecture is compatible with the 
intended uses of the system. The short instruction format 
permits compact programs with small memory require¬ 
ments. Since the average user will never see the processor 
micro-instruction set, ease of programming is secondary 
to efficient memory utilization. 

A complete description of the COSMAC microprocessor 
has appeared previously 1,2 and will not be repeated here. 
This architecture has demonstrated its advantages in proto¬ 
types of the low cost home/school system. 

Due to the nature of our application, RAM is required 
for both program and data storage. It’s well known that 
programs tend to expand to fill available memory space. 
Providing a 4096 byte memory only insures that no pro¬ 
gram will be written requiring a smaller memory. Even 
projecting a cost of 24 per byte would yield a cost of $82 
for a 4096 byte memory. This size memory would add 
$200 or more to the selling price of the system. Instead of 
asking how much RAM we could use, we provide 1024 bytes 


in the minimum system. This is consistent with keeping 
memory cost equal to projected microprocessor chip cost. 
Should LSI memory costs drop below 2 4 per byte we can 
increase minimum system capacity to 2048 bytes or lower 
the price of the 1024-byte system. Based on current 
trends, we can safely predict one microsecond LSI RAM 
costs of 2 to 3 4 per byte. Dynamic RAM chips are at this 
cost level now, while static, single voltage RAM chips are 
currently available at 7 to 8 4 per byte. 

The challenge of a 1024-byte memory seems to stimulate 
cleverness in programming and makes a future 2048-byte 
memory seem large by comparison. If we had initially pro¬ 
vided a 4096-byte memory, subsequent size reduction to 
meet cost targets would have been extremely difficult. 
Assuming 4x1024 bit RAM chips are available within the 
next several years, a minimum system would require only 
two chips for memory. 

Limiting the minimum system memory to 1024 bytes 
also provides several system cost advantages. Power supply 
cost is reduced, memory address drivers are eliminated, and 
printed circuit board space is saved. A less obvious system 
implication is the effect of memory size on program loading 
costs. 

In general, the user should be able to load a program in 
half a minute or so. This coincides with observed user- 
patience factors. 

An occasional error requiring reload can be tolerated for 
short load times, so that lower reliability loading devices 
may be used. To load a 1024-byte memory in 30 seconds 
only requires a serial transfer rate of 300 bits/second. This 
assumes a parity bit for each byte. For a 4096-byte 
memory, the required rate jumps to 1200 bits/second. The 
required transfer rate influences the choice of a program 
loading technique. Lower rates can generally be translated 
into lower costs and better reliability. 

It’s in the area of input, output, and bulk storage that 
we encounter the major cost problems. The choice of I/O 
and bulk storage techniques also has a major effect on the 


CONTROL PANEL 


£R 


RAM 



xm 





CARD 


♦ * 


KEY 


cassette! 


TV 


Page 36 

234 


Figure 1. Basic System 

Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park CA 94025 


May 1977 













range of possible system applications. Obviously, a single 
switch input and single light output would achieve minimum 
cost but would also result in a trivial system relative to use. 

Output Display 

Fortunately, an ideal, low-cost output device for home/ 
school applications already exists: a standard TV set pro¬ 
vides a flexible, dynamic output display device which most 
users already own. 

The choice of a TV display format involves a number of 
system considerations. These include types of applications, 
display refresh memory requirements, and complexity of 
control circuits. A low resolution, black and white dot 
matrix was chosen for maximum flexibility at minimum 
cost. An array of white dots is displayed on a black back¬ 
ground. The black background avoids potential picture noise 
problems. Arrays of 32x32, 16x64, and 32x64 dots are 
provided. Figure 2 illustrates the flexibility of this format 
for displaying small game boards, simple pictures, words, 
numbers, or symbols. Each dot represents the state of a 
main memory bit. If the bit is “1” the dot is on; if the bit 
is “0” the dot is off. 

Changing the memory bit pattern immediately changes 
the TV picture accordingly. Bit patterns are readily moved 
in and out of the displayed memory area by normal pro¬ 
gramming procedures. Simple animation can be achieved by 
modifying memory bit patterns at appropriate time intervals. 
Any contiguous 128 or 256-byte section of memory can be 
selected for display by setting a microprocessor address 
pointer. This display pointer can be modified at any point 
in a program, thus allowing the user to step through various 
memory display areas at any desired rate. It is easy to flash 
selected portions of a picture by alternating between two 
display areas in memory. 

For 32x32 and 16x64 displays only 1024 bits (128 bytes) 
of memory are required for display refresh. This is only 
12.5 percent of the minimum 1024 byte memory. The 
32x64 display option utilizes 25 percent of the minimum 
system memory but provides a larger area picture when 
required. It is also useful in expanded memory systems. It 
should be emphasized that no ROM is required for TV dis¬ 
play in the minimum system and that frame refresh storage 
is provided via main memory. 

The TV control unit (CU3 in Figure 1) contains the cir¬ 
cuits for generating TV sync signals and for requesting 
memory bytes via the COSMAC DMA channel as required 
for display refresh. The individual bits of each byte are 
used to generate a video signal. The composite sync and 
video signal modulates the output of a simple RF oscillator. 
This modulated RF can be applied to the antenna terminals 
of any standard TV set. 

Figure 3 illustrates the detailed timing for displaying dots 
on the TV screen. A magnified view of four dots is shown. 
Each dot is two horizontal TV lines high with a two-line 
space between dots. An 8-byte row buffer is provided in the 
TV control unit. Each TV line time is 65 microseconds. 
During the two blank line times, between rows of dots, up 
to 8 bytes (64 bits) are retrieved from main memory and 
stored in the row buffer. During the next two TV line times 
the bits in the row buffer modulate the TV beam to display 
the proper dot row pattern. By spreading the dots as shown. 



Figure 2. Display Flexibility 



the low resolution display fills up the TV screen without 
requiring a high refresh rate. 

The TV control unit also generates a program interrupt 
signal at the beginning of each TV frame. This interrupt 
permits the program to initialize the microprocessor display 
address pointer at the appropriate time. Since TV program 
interrupt occurs 60 times/second, a free real-time clock 
exists when needed. This clock capability is useful for 
timing purposes in a number of applications. 

Bulk Storage 

Program library storage and loading presents another 
major problem area in a low cost system. The high cost of 
existing computer devices such as floppy discs and digital 
tape units immediately rule out their use. Paper tape is 
awkward and still fairly expensive. Conventional punched 
card readers are expensive and inconvenient. 

This problem was solved by using another existing, in¬ 
expensive consumer device - the audio cassette recorder. 
Suitable portable units sell for under forty dollars. A built- 
in unit could be provided for less than $20. Several methods 


May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 

























for storing bit serial digital data on audio cassettes have been 
described 3,4 and others are possible. We developed a pro¬ 
prietary, pulse counting technique that yields a 50 byte per 
second transfer rate, tolerates missing or extra pulses, and 
permits tape speed variations of 30 percent. This system 
works well even for cheap portable audio units. Only single 
track capability is required in the system. 

Since errors can be expected on occasion, a parity bit is 
added to each byte on tape. The cassette control unit 
checks the parity of input data read from tape and turns on 
an error light for incorrect parity. Reloading a program 
when an error occurs is a simple and quick procedure. 

Figure 4 shows the single track, cassette tape format 
which was used. Digital or audio blocks are always framed 
by 4 kHz stop tones (T). The stop tone detection circuit is 
designed to respond only to long (.5 sec) continuous tones 
so that voice or music frames will not cause false triggers. 

Figure 5 shows how a standard cassette player is used in 
the system. Most cassette recorders provide an external 
speaker or earphone output jack. This output is connected 
to the control unit as shown. Stop tones and digital data 
are detected via this cassette output line. A relay is also 
provided which permits the cassette output to be connected 
to a speaker under program control. This permits selected 
tape frames to be passed inaudibly. 

The majority of inexpensive cassette recorders have a 
remote start-stop control jack. This is designed for use with 
a microphone or foot switch. For use in our system the 
cassette remote jack is connected to a program controlled 
relay. This gives the computer the ability to start and stop 
tape, providing the user has previously placed the cassette 
recorder in its PLAY mode. 

The primary system operating controls comprise two 
toggle switches — LOAD and RUN. The LOAD switch 
activates the cassette control unit (CU2 in Fig. 1). The 
desired program cassette is selected by the user, rewound, 
and the recorder set to PLAY. When the first stop tone is 
encountered the data reading circuits are automatically 
turned on. Waiting for this stop tone eliminates possible 
noise problems at the beginning of tape. The digital data 
representing the program is loaded sequentially into mem¬ 
ory at 50 bytes/second. The second stop tone automatically 
stops the tape via the tape control relay. Turning off the 
LOAD switch resets the computer. The RUN switch ini¬ 
tiates execution of the program which was just loaded. 

During program execution the tape can be automatically 
restarted so that the user will hear audio frame #1 at a 


i-1 



Figure 5. Cassette Attachment 


desired time. The stop tone following audio frame #1 will 
automatically stop the tape. The program can monitor the 
state of the control relay to determine when the end of 
data/audio frames occur. This permits synchronizing audio 
material on cassettes with a program. 

The provision for program controlled audio segments 
has an important system implication. The ability to provide 
instructions, questions, or other data in the form of voice 
frames on tape minimizes the need for a high resolution, 
alphanumeric TV display with its attendant requirement for 
large refresh and back-up digital storage capacity. 

The speaker provided for use with the cassette recorder 
provides a useful output device. A flip-flop which can be 
set and reset by program drives the speaker when it’s dis¬ 
connected from the cassette output. Programs can, there¬ 
fore, create many audible sequences of tones. 

Input Devices 

The primary input device for our system is a 16 position 
keyboard. A number of $5 to S10 keyboards of this type 
have been developed for use in pocket calculators. A flat, 
printed circuit type was chosen to facilitate an overlay 
feature. A slight modification of the keyboard permits 
insertion of a printed card above the switch array. Various 
cards are provided to relabel the switch array for different 
programs. For educational programs keys can be labeled 






TA DC 

MOTION 







1 Art 




T 

DIGITAL 

PROGRAM 

T 

AUDIO 

FRAME 

i 

AUDIO 

FRAME 

T 




Figure 4. Cassette Tape Format 


Page 38 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


May 1977 


236 













with colors, pictures, words, or possible answers to ques¬ 
tions. For other programs, the keys might be labeled with 
direction arrows for manipulation of the TV display. The 
variable label keyboard is fundamental to meeting the ease- 
of-use criterion for this type of system. 

Unfortunately, the flat keyboard which is ideal for 
variable labeling has no tactile feel. This objection was 
overcome by taking a systems approach. Since a speaker 
already exists, switch depressions need only be coupled 
into this speaker to provide an audible “click.” This has 
proven to be an adequate substitute for tactile feel. The 
scanning approach used to decode the switch panel mini¬ 
mizes the cost of this approach. Specific programs can also 
generate various tones for switch depressions which again 
substitute for tactile feel. 

The 16-position keyboard normally causes an 8-bit byte 
to be stored in memory for each key depression. The most 
significant four bits (digit) are normally 0000. A shift switch 
pressed in conjunction with a hex key causes the most 
significant four bits to be 0001. The least significant four 
bits of a stored byte represent the code for one of the 
16 possible hex digits shown in Figure 6. The hex keyboard 
in conjunction with a shift switch permits entry of 32 dif¬ 
ferent codes. 

An alternate mode of keyboard entry is also provided. 
In this mode two key depressions per byte are required. The 
first key specifies the most significant hex digit of the byte 
to be entered. The second key provides the least significant 
hex digit of the byte. This mode provides the sophisticated 
user with a convenient way to manually load his own 
machine language programs. It’s also a useful mode for cer¬ 
tain turnkey programs. 

The hex keyboard control unit (CU1 in Figure 1) also 
supports the addition of an inexpensive card reader to the 
minimum system. This unique device uses 3-inch x 5-inch 
punched cards. Data is punched in the form of rows of 
holes. Figure 7 shows four such rows (A,B,C,D) punched on 
one side of a card (both sides can be punched). Each row 
represents the 4-bit code for one hex digit. A fifth hole is 
added and encoded with odd parity. At least one hole will 
be punched for each of the possible hex digit codes. Cards 
are read by dropping them into a 3-inch slot. They fall past 
a light source and six photodiodes. One photodiode senses 
the presence of the card and conditions the control unit 
circuits accordingly. The other five photodiodes read the 
self clocking hex digit codes into the system. Hex digits are 
paired to form bytes before storage in memory. 

By limiting the information content of a card to 16 hex 
digits per side, the mechanical tolerances of the reader can 
be considerably relaxed. The reader has no moving parts, 
and photodiodes can drive the COS/MOS control unit cir¬ 
cuits directly. These factors combine to provide a very low 
cost input device ($25 or less). A simple, manual card punch 
can also be provided permitting users to punch their own 
cards. 

The low cost card reader can be used to enter short lists 
of parameters or short user prepared programs. In a class¬ 
room, the teacher might use parameter cards to set up test/ 
drill programs. Picture cards used by the student could 
contain the spelling of the word pictured for checking by 
the computer. The cards also facilitate certain simulation 
languages and permit users to save simulation language 



Figure 6. Keyboard Control 



Figure 7. Punched Card 


programs that they develop. 

Another low cost, optional input device is a simple light 
gun. This contains a lens system and a photodiode. The 
computer detects when the gun is pointed at any lighted 
area of the TV screen. The light gun facilitates various 
computerized target shooting games. By alternately flashing 
portions of the TV display a program can determine the 
area at which the light gun is pointed. This permits the 
user to indicate various types of choices by pointing the 
gun at appropriate portions of the display. 


Applications Philosophy 

The open ended aspect of a stored program computer 
differentiates it from other types of recreational and edu- 


May 1977 


Or. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 39 


237 










cational devices. Any number of special purpose devices 
such as TV games, shuffleboard' tables, electric football 
games, and educational toys are ideally suited to their in¬ 
tended function. None of these, however, will change their 
characteristics as user moods or interests change. Many of 
these special purpose devices are seldom used after their 
initial novelty expires. The stored program computer is a 
general purpose device. New programs can adapt it to 
changing moods and interests without the expense of new 
hardware. It can satisfy the needs of young and old and can 
grow with individual abilities. 

The real value of the home/school system lies in its 
ability to stimulate and develop human capabilities that are 
often ignored or discouraged by conventional recreational 
and educational devices. The computer system provides an 
environment that stimulates experimentation, analysis, and 
creativity. For example, contemporary TV encourages pas¬ 
sive viewing. However, the computer attached to a TV set 
enables the user to interact and play a game with the TV 
set. As the games played increase in sophistication, the user 
is encouraged to improve his analytical abilities. The user 
can subsequently be encouraged to experiment via specific 
programs or eventually to write his own programs. 

For a child, the computer may initially provide arithmetic 
or spelling drills. Even this kind of memory development 
can be made more interesting via interaction with the com¬ 
puter. However, the child will eventually begin to wonder 
about the computer. Programs are made available which 
stimulate this curiosity and let him experiment with chang¬ 
ing game rules. He can even begin to formulate and develop 
his own simple programs in a variety of simulation languages. 
While the initial use of the computer involves memory skills, 
it eventually encourages experimentation and the develop¬ 
ment of analytical and other capabilities. 

The creation of programs that stimulate the user to 
develop mentally is a challenging task with a high payoff in 
terms of satisfaction. We have only begun to explore this 
area of use for very small, inexpensive, practical computers 
of the type described here. Even so, the number and richness 
of uses for this type of system are surprising. Those of us 
who are experienced with 64,000 byte main memories and 



large disc files may be inclined to dismiss a 1024 byte 
memory system as unuseable. But, in fact, such a system 
can be adapted to a wide range of uses. Over 80 specific 
applications of the inexpensive home/school system will 
be listed in the following sections. Many represent classes of 
programs which could be developed. 

Four general areas of use are identified in Figure 8. These 
areas will be discussed individually although there is a high 
degree of overlap between them. Most of the listed uses only 
require the basic system. Reference 18 also describes a 
number of uses (mostly games) that have been programmed 
on larger computers with hard copy output. Many of these 
are readily adapted to the low-cost computer. 

Utility Applications 

This category of applications involves use of the computer 
to achieve specialized functions such as those listed in 
Table 1. 


‘Four Function Decimal Calculator 
Hex Binary Calculator 
Game Score Keeper 
‘Number Base Converter 
Weight/Measure Converter (Metric) 

Secret Code Computer 
Logic Machine 5 
Classification Computer 
Gambling Strategy Computer 
Other Specialized Calculators 
(temperature conversion, interest, etc.) 

Electronic Dice 
Random Number Generator 
Simulation Game Computer 
Bar Graph 

Interactive Audio-Visual Toy 
‘TV Greeting Card 
‘Electronic "Etch a Sketch" 

TV Puppet 

‘Audio-Visual Demonstrator 
Mind Reading Computer 
Party Compatibility Computer 
Programmed Timer/Controller 
Stop Watch/Game Timer 
Simple Electronic Organ 
Metronome 
Advertising Display 

‘Already developed for the COSMAC miniprocessor. 


Table 1. Utility Applications 

A simulated four-function decimal calculator has been 
implemented on the basic 1024 byte memory system. This 
includes display refresh, digit pattern tables, and decimal 
arithmetic algorithms with 20-digit operand and result 
capability. A 2048 byte memory would permit develop¬ 
ment of a programmable calculator with multi-line display. 
Optional ROM chips could provide a permanently resident 
calculator capability if desired. 

A variety of specialized calculators can be implemented 
on the basic system. Programs to provide scorekeeping for 
card, war, or commercial games could be provided. Children 
could have their own secret code computer. For several 
years a plastic toy rock identification computer has been 
on the market. Certain tests are performed (color, hard¬ 
ness, etc.) on a mineral sample. The plastic computer and a 


Page 40 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 May 1977 


238 




set of cards is then used to identify the sample. The basic 
home/school system could readily be programmed as a 
classification computer of this type. 

Logic machines have held a certain fascination for years. 5 
The computer readily simulates a variety of machines of 
this type. It can also be programmed to simulate gambling 
algorithms. A pair of dice is easily simulated for use in a 
number of games. Random number generating machines find 
use in various school courses and experiments. Serious war 
game fans can use computer generated battle results and 
score keeping to advantage. The leading magazine in the 
field, “Strategy & Tactics,” has over 20,000 subscribers 
indicating a wide interest in this type of activity. 

For very young children the computer simulates a variety 
of interactive, audio-visual toys that make sounds and 
change TV pictures in response to key depressions. Cus¬ 
tomized, animated, TV Greeting Cards/Decorations for 
Birthdays, Christmas, or Halloween can be provided. Sim¬ 
ple, key operated TV puppets are possible. Stepping a spot 
around the screen permits drawing TV pictures. 

The ability to synchronize audio tape frames with pro¬ 
grams permits programmed audio-visual tutorials for home 
and school or eye-catching advertising displays. The basic 
system real-time clock facilitates key operated game timer 
or stop watch capability. The program controlled speaker 
turns the computer into a simple electronic organ or 
metronome. TV display can be included with the sound 
generation. 

Test and Drill Applications 

These are probably the first types of uses that come to 
mind when education is mentioned. Drills involve the devel¬ 
opment of memory or conditioned reflexes. Testing can 
involve the development of other skills, as well. The infinite 
patience of a computer makes it ideal for drills. Interactive 
capability adds interest and motivation. Some specific 
examples are included in Table 2. 


*TV Arithmetic Drill 

‘Word Spelling Drill 

•Word Recognition Test 

•Pattern Recognition (Superimposed, Complex) 
Electronic Flash Cards 
Classroom Group Games 
Preschool Shape/Color Recognition 
Up-Down, Left-Right Discrimination 
Sound-Picture Matching 
Reading Readiness Skill Drills 
Logical Aptitude Test 6 

•Number Base Conversion Drill 
Flap Board Simulator 
Morse Code Drill 
Reflex Testing 

•Logical Deduction Test (21 Questions) 

Logidex 

Memory Training (Sobriety Test) 

Individual Testing & Scoring Aid 
Change Making Drill 
X-V Curve Plotting Drill 
Time Sense Development 

•Already developed for the COSMAC miniprocessor. 

Table 2. Test and Drill Applications 



The number of different programs possible in this area is 
virtually unlimited. Programs of this type are ideal for 
individual use to overcome specific weaknesses. Unlike the 
teacher or parent, the computer does not make value 
judgements about the child during a drill. The drills can 
also be made to appear as games with the computer provid¬ 
ing added motivation. 

A simple arithmetic drill might appear as shown in 
Figure 9. Addition problems are randomly generated on the 
TV screen. The child must enter correct answers via the 
keyboard in time to prevent the boat from completely 
sinking. The rate at which the boat sinks can be preset by 
the teacher and changed from session to session to maintain 
challenge as the child’s speed and accuracy improves. The 
computer displays the child’s score when the teacher enters 
a special code (key/card). 

Spelling drills can be implemented in several ways. A 
cassette voice could ask for the spelling of a word which 
the student then spells via the keyboard. The TV display 
and/or audio tone responds if he is right. The computer 
again keeps score and times the answers. A simple word 
recognition drill involves displaying a word on TV and 
asking for the corresponding picture via keyboard or card 
input. Patterns can be superimposed on the TV screen and 
the student asked to identify the components of the picture. 
Simple preschool shape, color, or sound recognition pro¬ 
grams are possible. Up-down, left-right concepts are readily 
presented via taped voice and animated TV displays. Most 
test and drill programs become classroom games. Team 
members take turns answering computer questions and the 
computer announces the winner. 

The computer can be programmed to momentarily flash 
a picture, word, pattern, or group of symbols on the TV 
screen to develop perception skills. Reflexes or time sense 
can be developed by requiring a specific keyboard response 
following programmed sounds or TV displays. Scoring adds 
a motivating game element to these types of drills. Morse 
code is taught by requiring the translation of tape voice 
passages into key depressions. The computer checks accuracy 
and gradually increases speed. 

Reading readiness skills include simple shape recognition, 
word configuration recognition, and ability to maintain 
fixation on a moving object. The latter could involve having 
a child press direction-changing keys to prevent a moving 
TV spot from hitting obstacles. While not explicitly designed 
for this purpose, many of the games played with the system 
also develop reading readiness skills. 

The computer can easily simulate logical aptitude testing 
devices 6 , existing simple educational aids 7 , or games 8 . The 
dot array TV display format is ideal for X-Y plotting 
practice. The computer can be used for individual testing 


May 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


Page 41 


239 









and scoring in any subject area and at any grade level. The 
test questions are provided in printed page or booklet form. 
The computer specifies which questions are to be answered 
via taped voice or TV display. Answers can be in the form 
of multiple choice, numbers, or words which the computer 
can check against a prestored table of correct answers. 

The ability to skip audio frames on tape via the program 
controlled speaker relay provides added flexibility for test 
and drill applications. Two sequential voice frames could be 
provided per question. One frame would “tell” the student 
that his answer was right. The other frame would “tell” him 
that his answer was wrong, and why. For each student 
response the computer “plays” the appropriate frame and 
“skips” the other. 


Games and Puzzles 

Games and puzzles are normally associated with recrea¬ 
tion. We have already seen that a number of utility pro¬ 
grams have recreational aspects. The educational as well as 
recreational aspects of games and puzzles will be discussed 
here. Some of the possible uses of the computer in this area 
appear in Table 3. 


*TIC TAC TOE 

g 

•Hexapawn 
•Sliding Block Puzzles 
•State Change Games/Puzzles 10 
•Bowling 
Football 11 
•Minikreig 

•Target Shoot (Optional Gun) 

'One Armed Bandit 

‘Network Games 

•Twenty One 

•Cell Matching Games 

‘Maze Tracing (Invisible, Changing) 

•Race Games (Against Time) 

'Space War 
Bombs Away 

Combinational/Sequential Puzzles ' 2 
Dodge Games (Space Ship & Asteroids) 

Fish Card Game 
Moon Landing 

*NIM Games (Static/Dynamic) 

Invisible Counter Board Games 
Simulation Games 13 

Game Forms of Utility /Test/Drill Programs 

•Already developed for the COSMAC miniprocessor. 

Table 3. Games and Puzzles 

One of the most obvious aspects of this list is that there was 
no problem in motivating people to write game programs. 
TIC TAC TOE, Hexapawn, Twenty One, and Space War are 
played against the computer. Two player versions are, of 
course, possible. Hexapawn 9 was implemented as a learning 
program. The computer learns to play perfectly only after a 
number of games have been played. This type of learning 
program provides the basis for experiments where the user 
plots games played versus games lost by the computer to 
establish empirical learning curves. Heuristic versions of 
other games such as TIC TAC TOE are also possible. 

A less familiar class of game involving interactive cell 

Page 42 


state changes is illustrated by a small plastic device called 
think-a-dot which has been sold for a number of years. 10 
These types of games involve deducing the rules experi¬ 
mentally before any skill can be developed. The computer 
permits variations which would be otherwise impractical. 

Bowling displays the pins on the TV screen. A ball spot 
randomly moves up and down at the opposite end of the 
alley. Pressing a key at the proper time rolls the ball. Sound 
effects, scorekeeping, and some random factors are incor¬ 
porated in this two-player game. A variety of football games 
are possible. The simplest of these involves simulating com¬ 
mercial varieties of electric football". Minikreig is a 
simplified war game. With the optional light gun a variety of 
computer controlled target shooting games can be devised. 

Sliding block puzzles are easily simulated via the TV 
display. A move counter keeps the puzzle solver honest. 
Cell matching games involve momentarily flashing an array 
of cells on the TV screen at the beginning of the game. 
Each cell contains a symbol. Two players take turns trying 
to find cell pairs with matching symbols. The player with 
the most matches wins the game. Network games involve 
completing a path from one point to another before your 
opponent. A number of published combinational/sequential 
puzzles can be easily simulated 12 . 

Manipulating a moving spot through a racecourse or 
maze in the minimum time has proved to be a popular 
pastime. Spot acceleration and deceleration maximizes the 
challenge. The computer also permits invisible and changing 
mazes to be easily implemented. N1M type games can have 
a dynamic aspect included by using the computer. Board 
games can incorporate invisible counters whose positions 
must be deduced. Moon landing involves selecting fuel 
burning rates so as to avoid crashing. This type of game 
lends itself to experimentation, since it represents a simple 
simulation situation. 

The whole area of using small computers in simulation 
games requires further investigation. Reference 13 contains 
brief descriptions of over 500 such games currently available 
for educational purposes. The availability of an inexpensive 
computer for referee, controller, and randomizing functions 
should be welcomed in this area. 

Many of the utility, test, and drill uses previously dis¬ 
cussed also provide the basis for games or puzzles. A widely 
available, mass market computer will undoubtedly stimu¬ 
late the invention of many new games and puzzles for 
recreational and educational use. 

Experimentation and Programming Uses 

This area might be thought of as primarily educational. 
There is, however, a recreational aspect as well. The unique 
characteristics of a computer that make it ideal for experi¬ 
mentation also provide the basis of a fascinating hobby. 
Developing programs for your own computer embodies both 
educational and recreational aspects. Some specific experi¬ 
mentation and programming possibilities are listed in Table 4. 

A classic example of experimentation via computer is 
provided by Conway’s game of LIFE described in Refer¬ 
ence 14. The hours of bootlegged computer time devoted 
to this program at computer centers all over the country 
are a testimonial to its recreational value. LIFE simulates 

May 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 


240 



•LIFE 14 

Penny Matching (Computer 15 
Turing Machine ” 

•Tutorial Computer 
Picture Computer 
Sound Computer 
Machine Code Programming 
Simulations 
Variable Rule Games 
Logic Simulator 
Learning Machines 

Probability & Monte Carlo Experiments 
Heuristic Program Design 

•Already developed for the COSMAC miniprocessor. 


Table 4. Experimentation and Programming Uses 

a succession of generations for a colony of cells. Cell birth, 
survival, and death are controlled by algorithms in the 
program. Watching the patterns of cell change for each 
generation on the TV screen is addicting. The program is 
extremely rich in experimental possibilities. New starting 
patterns that yield interesting and sometimes surprising 
life histories are constantly being discovered. The availability 
of an inexpensive computer would permit even unsophisti¬ 
cated users to experiment via programs of this type. 

Heuristic programs for simple games such as Hexapawn 
and Penny Matching 9,15 let the user develop experimental 
learning curves. This approach has been used to add interest 
to grade school math even without tire availability of a 
computer. 17 Letting the user modify program behavior via 
keyboard parameters stimulates more creative and sophisti¬ 
cated experimentation; even TIC TAC TOE becomes a 
fascinating educational device when the user is allowed to 
modify the rules that the computer uses. 

The computer can provide a variety of simple simulations 
that encourage experimentation. A simple moon landing 
game or racecourse game with acceleration and deceleration 
controls are examples. A logic simulator would permit 
experimenting with arrays of logic elements. Commercial 
hardware logic trainers are quite expensive. A random num¬ 
ber generating program facilitates experimental develop¬ 
ment and understanding of probability curves. Game theory 
experiments are a natural application. None of these uses 
requires programming ability on the part of the user. 

The area of programming provides the richest and most 
valuable recreational and educational experiences. Program¬ 
ming capability can be provided at several levels. A simple 
set of simulated instructions to move a spot around the TV 
screen could be provided via card or key symbols. Pro¬ 
gramming this picture-drawing computer could be intro¬ 
duced as early as second or third grade. The ability to pro¬ 
gram sequences of audible tones (or music) via a simple 
simulation language is also easily provided. 

At a slightly higher level of sophistication, various 
tutorial computers can be simulated. A simple fixed word, 
decimal computer was simulated on the basic 1024 byte 
system. This included ten instructions, 100 words of user 
memory, and a simulated control/debug panel. Teenage 
children were able to write and debug their own programs 
with as little as one hour of instruction. Simple, simulated, 


tutorial computers open the door to a variety of interesting 
educational projects. What better way is there for a student 
to learn than by teaching his computer. 

The construction of a hardware Turing machine model, 
for educational purposes is described in Reference 16. The 
authors list several disadvantages inherent in the alternative 
approach of computer simulation: 

A. Computer time too expensive. 

B. Students have to learn how to operate the computer 
which has nothing to do with the simulation. 

C. Graphic output display is too expensive and printed 
output is too slow and inconvenient. 

It is interesting to note that the home/school system 
readily overcomes all three objections. How many other 
valuable educational tools might be easily provided via 
simulation if this type of inexpensive computer was made 
widely available? 

For the sophisticated hobbyist the area of machine code 
programming will be of major interest. All that is required 
is to add circuitry for writing cassette tapes. This is an 
inexpensive option. The use of a small set of programming 
conventions together with specialized subroutines permits 
the sophisticated user to develop, debug, and save his own 
machine code programs. 


Conclusions 

A practical, inexpensive, free standing computer system 
based on the RCA COSMAC microprocessor has been 
described. The fact that over 30 programs are already run¬ 
ning on prototypes demonstrates its viability. Over 80 uses 
are listed to dispel any notion that limited capability 
machines of this class are necessarily trivial. Several basic 
system enhancements were mentioned and many others are 
possible. 

A system of this type would, for the first time, permit 
widespread access to computers. Much of the public awe and 
confusion relative to computers would be dispelled. The 
creation of a group of home computer hobbyists will 
stimulate invention and development of new computer 
devicesand applications. Educational benefits are unlimited. 

Computers are considered to be useful tools with which 
to achieve a specific end result such as processing a payroll 
or calculating a trajectory. This view of computers has 
often carried over into educational applications with the 
computer cast in the role of teacher/tutor. The low-cost 
home/school system described here is intended as a flexible 
plaything which encourages experimentation and stimulates 
a desire to learn. This approach may be more significant 
than the improvement of teaching methods for unmotivated 
students. 

Acknowledgements 

A. R. Marcantonio, C. T. Wu, and B. J. Call have made a 
number of contributions to the development of this low- 
cost computer system. A. D. Robbi and P. Russo have pro¬ 
vided continuing moral support, ideas, and major assistance 
in developing and evaluating the system. Most of all, 
R. O. Winder deserves credit for making the development 


May 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park CA 94025 Page 43 


241 



of the system possible. ■ 

Joe Weisbecker has been developing new com¬ 
puters, communications terminals, I/O devices, 
and computer related commercial games for 
almost 20 years. He held engineering, advanced 
development and product planning positions 
within RCA’s Computer Systems Division prior 
to joining the Lab in 1970. Mr. Weisbecker is a 
graduate of Drexel University, has written several 
articles, received two RCA Laboratories Achieve¬ 
ment Awards, and holds 21 patents, with others 
pending. He is a Senior Member of the IEEE and a member of the 
Computer Society. The computer described in this article has been 
accepted as a member of the family by Jean (his wife), their two 
children (Joyce and Jean) and even their dog who punches random 
number cards with her teeth. 

References 

1. J. Weisbecker, “A Simplified Microprocessor Architecture,” 
Computer (March 1974). 

2. N. Swales and J. Weisbecker, “COSMAC - A Microprocessor 
for Minimum Cost Systems,” 1974 INTERCON, Session 17/2. 

3. "Putting Data on an Ordinary Audio Recorder,” The Elec¬ 
tronic Engineer (May 1972) p. DC-9. 

4. F.. Wolf, “Ratio Recording for LowerCassette Recorder Cost,” 
Computer Design (December 1972) p. 76. 

5. M. Gardner, Logic Machines and Diagrams, McGraw-Hill, 
1958. 

6. A. Oplcr, “Testing Programming Aptitude,” Datamation 
(October 1963) pp. 28-31. 

7. J. Jones, “The Flap Board: A Simple Diagnostic and Remedial 
Tool,” Educational Technology (January 1974) pp. 59-61. 

8. H. Nurse, “Logidex,” Popular Electronics (November 1973) 
pp. 63-66. 

9. J. L. Hughes and K. J. Engvold, “Hexapawn: A Learning 
Demonstration,” Datamation (March 1968) pp. 67-73. 

10. B. L. Schwartz, “Mathematical Theory of Think-A-Dot,” 
Mathematics Magazine (September-October 1967) pp. 187- 
193. 

11. R. F. Graf and G. J. Whalen, “Electronic Football Lets You 
Play Like the Pros,” Popular Mechanics (October 1967) 
pp. 147-149, 228. 

12. J. W. Cuccia, “The Princeps Puzzle,” Popular Electronics 
(May 1971) pp. 27-32. 

13. D. W. Zuckerman and R. E. Horn, The Guide to Simulations / 
Games for Education and Training, Information Resources, 
Inc., 1973. 

14. M. Gardner, “John Conway’s New Solitaire Game - LIFE,” 
Scientific American (October 1970), pp. 120-123. 

15. D. W. Hagelbarger, “Seer, A Sequence Extrapolating Robot,” 
IRE Transactions on Electronic Computers (March 1956), 
pp. 1-7. 

16. 1. Gilbert and J. Coh, “A Simple Hardware Model of a Turing 
Machine: Its Educational Use,” Proceedings of the ACM 
Annual Conference (August 1972) pp. 324-329. 

17. J. Ackerman, “Computers Teach Math,” The Arithmetic 
Teacher (May 1968), pp. 467-468. 

18. D. H. Ahl, Ed., 101 Basic Computer Games, Digital Equip¬ 
ment Corp., 1973. 




SIGNETICS INTRODUCES KIT FOR FAST 
BIPOLAR EMULATION OF THE 8080A MICRO¬ 
COMPUTER 

77 MAR 30, SUNNYVALE, Calif.-Bipolar emulation of 
the popular Intel 8080A microcomputer system, with speed 
improved by as much as 9 times, is now possible with a new 
8080 Emulator Kit from Signetics. 

The kit, designated the 3000KT8080SK, is a microprogram¬ 
med microprocessor using Schottky LSI components to im¬ 
plement the 8080A emulation at speeds that allow expansion 
of existing 8080A-based systems with no change in software. 

Dr. John Nemec, Product Planning Manager in Signetics’ 
Logic Division, said the emulator provides a 150ns microin¬ 
struction cycle time and a 150ns RAM access time. 

The kit contains all parts necessary to construct the emu¬ 
lator, including the preprogrammed microcontrol store, 
printed circuit board, and an instruction manual with all 
schematic and microcode listings. 

The 3000KT8080SK is fully equivalent in function to sys¬ 
tems containing the Intel 8080A, 8228, 8224, and the 8212 
and will execute all 8080A instructions, with performance im¬ 
provements on individual instructions ranging from 2 to 9 
times that of the 8080A system, Dr. Nemec said. 

Features of the kit include: fully static operation (DC to 
150ns), a single 5 volt power supply, hardware multiply and 
divide, and full vectored interrupt to any location within 64K 
of memory. 

In addition, the emulator is microprogram expandable, en¬ 
abling the user to utilize 12 unused instruction locations in the 
8080 for expanding his instruction set. Over 150 spare loca¬ 
tions are available in the control store for this expansion. 

Since the kit uses bipolar LSI elements, it utilizes a single 
phase clock instead of the two-phase non-overlapping clock of 
the 8080A, according to Dr. Nemec. In addition, the system 
does not provide the signals which emanate from the 8080 
during SYNC time but instead generates the status signals 
normally provided by the 8228 system controller. 

The kit provides the standard address, data, status and con¬ 
trol buses as defined in the Intel 8080 Microcomputer System 
Manual. 

The 3000KT8080SK is now available form Signetics and its 
authorized distributors at a unit price of $299. 

For further information contact Signetics, 811 East Arques 
Avenue, Sunnyvale, California, 94086; phone (408) 739-7700. 



Signetics bipolar kit for emulating the 8080A microprocessor 
improves instruction execution speed nine times. The emula¬ 
tor is microprogram expandable, permitting 12 unused instruc¬ 
tion locations in the 8080 set to be implemented as the user 
requires. 


Page 44 


Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 


May 1977 


242 



dr. dobbs journal 

COM 

(Calisthenics 



PUTER 

\3 Orthodontia 


Running Light Without Overbyte 

Number 16 June/July 1977 Volume 2, Issue 6 

A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


EDITORIALS 

Jim C. Warren, Jr., Editor, DDJ 

Wayne Watch: A New DDJ Featurette for the Naive Novice 5 

Which Manufacturer Offers the Longest Delivery Delay? a psuedo-contest 6 

WARNING 

Data Sync Leader Charged with Fraud 6 

SUPPORT FOR SOFTWARE VENDORS 

Response to Tom Pittman’s Editorial, Dave Allen 7 

More Support for Software Vendors, Brent Longtin 8 


ALGORITHMS & SOFTWARE 

A Story of Traffic Lights, or: A BASIC Program to Play the Game of LIFE, R. Broucke 12 

Conversions Between Octal and Hexadecimal, R. Broucke 13 

SCHDL: A BASIC-coded ‘Daily Reminder,’ Bob Moody & Steve Williams 15 

Curve Plotting on a TV Screen with the Polymorphics Video Interface and MITS BASIC, R. Broucke 17 

6800 Circle Maker, David Hudson 19 

Dompier Plus: A “Musical Keyboard,” Bruce Hicks 21 

Permanent Solution to Missing SP and PSW Definitions in PTC Sys, Bruce R. Kendall 22 

Tape LOAD and SAVE Routines for P.T.’s BASIC, Ron Santore 23 

KIM-1 Breakpoint Routines: Plain & Fancy, Willi Kushe 25 

A ‘Turtle’ for a VDM, Marvin R. Winzenread 28 

HARDWARE 

An Example of an M6800-Based GPIB Interface, S. C. Baunach 31 

Complete Hardware & Software Details for an IEEE 488 Interface 
Errata: TVT-II Mods had Pin Numbers Permuted, Christopher Terry 56 

Lower Case Mod for SWTPC’s CT-1024, R. Lynn Smith 57 


... .and the usual collection of other tidbits.... 




© David Dameron 1979 









WAYNE WATCH: A NEW DDJ FEATURETTE FOR THE NAIVE NOVICE 
Jim C. Warren, Jr., Editor, DDJ 


For those who tend to assume the validity of anything that they 
read, simply because it is written — and that's almost all of us — I have 
decided that it is time to offer a regular and careful dissection and 
analysis of many of the comments written by Wayne Green. Wayne is 
the Publisher of Kilobaud and 73 and two promotional newsletters — 
the Kilobaud Hobby Computer Newsletter for potential advertisers, and 
Computermania 1 ™ for potential exhibitors. 

Those "done unto" have access to DDJ 

I am also offering the pages of Dr. Dobb's Journal to everyone who 
feels they have been maligned — explicitly, or as is more often the case, 
via exquisitely phrased innuendo — by Wayne. Most of those whom 
Wayne attacks have, essentially, no access to the potent weapon Wayne 
uses so freely — the media. 

Of course, two of his most regular targets, Byte and the ARRL, 
involve publications with far larger circulation than those Wayne con¬ 
trols; however, they exercise great editorial restraint and diplomacy in 
responding to Wayne's ongoing snidery. This is probably partially due 
to their concern for the ethical standards that should be exercised by 
every publisher, and partially due to their recognition of the ad man's 
hack, "There ain't no such thing as bad publicity." (Nixon might not 
agree with the ad man.) 

Why bother? 

Recognizing the above, why am I bothering to do what Byte has 
consistently refused to do, and what the ARRL and its QST have done 
in only a very restrained manner? After all, I have repeatedly been 
told, "everyone" knows how Wayne does things. Why give him the 
publicity? 

First of all, I don't believe that "everyone knows." They may know 
in the ham community, where they have watched Wayne for some years. 
It is not clear, however, that the community of computer hobbyists are 
aware of the care they must exercise in reading anything Wayne writes. 

Secondly, I want to do what I can to make sure people know what 
kind of a person they are supporting every time they buy a copy of KB 
or attend Wayne's Boston exhibit. 

Further, part of the ethical responsibility incumbent upon those of 
us who control media is to speak the truth, and particularly to counter¬ 
act untruth. Most publishers are hesitant to do this when it involves 
making disparaging remarks concerning another publisher — perhaps for 
fear of reprisal; more likely because it looks bad to overtly attack a 
competitor. 

Well, I don't consider KB a competitor to DDJ, and my suspicion is 
that Wayne feels the same way. We are radically different in format, 
style, and — to a large extent — content. As far as reprisal is concerned, 
I figure we can "bear up under the attack" and we'll be in such good 
company. 

Preliminary Note 

This article is purposely phrased in the first person — "I" — rather 
than the more usual "editorial 'we'," to emphasize that it concerns 
myself and Dr. Dobb's Journal, and does not necessarily concern the 
several other pubications of People's Computer Company. (If Wayne's 
gonna attack, I don't want him shot-gunning everybody in sight.) 

Boundary conditions 

Very explicitly, this is not meant to negatively reflect on John Craig, 
the Editor of Kilobaud — who has no control over what Wayne puts in 
KB. I have consistently found John to be an average nice guy, trying to 
do a good job, and have repeatedly noted him going out of his way to 
maintain diplomatic relations with people who objected to Wayne's 
style of doing things. This article is not meant to negatively reflect on 
any of the KB or 73 personnel. 

In fact, it's not even meant to be a blanket indictment of Wayne; 
only of the style and content of much of his writings. It is my under¬ 
standing that Wayne can be very helpful and friendly in a one-to-one 
relationship with those with whom he feels no competition (this is 
hearsay; not personal knowledge). I also understand from some hams 
that Wayne had a significant hand in encouraging the development of 
ham use of FM. 

This is also not meant to imply that I think KB is a poor magazine — 
except for the fact that it carries Wayne's comments phrased the way 
Wayne phrases them. On the contrary, I find KB to be an excellent 
magazine equivalent to Byte and Interface Age. I encourage you to 
xerograph the portions of it that interest you. (Why, of course you can 
also do that with DDJ. We explicitly say so in the front of every issue.) 
But, if you buy a copy of KB or attend Computermania, be aware that 
you are giving support to Wayne to do things the way he does 'em. 

And, that brings us to the meat of this article: examples of what 
Wayne does. 


Example 1: 

ComputerMania conflict with Personal Computing '77 

In the June issue of KB, Wayne announced the "New England Com- 
puterfest" to be held in the Boston area, August 25-27 . . . address, 
"c/o Kilobaud Magazine." He stated, " It looks as if there may be a 
conflict between the recently announced Boston Computerfest . . . 
and the PC-77” in Atlantic City. Further along he sez, "Frankly, I 
think that there should not be two computerfests set up on the same 
weekend, and while I'm enthusiastic about NEC-77 ... I think the 
organizers should have made a better effort to avoid the conflict." 

In the July issue of KB, Wayne was pushing "ComputerMania" 
very heavily. Different convention name, but same mailing address, 
same dates, same location (Boston area) . . . and no further mention of 
NEC-77, about which he was so enthusiastic in the previous issue. It's 
reasonable to assume NEC-77 became ComputerMania. 

In the June announcement, note how his phraseology implied that 
he, Wayne Green, was merely an outside observer of "the organizers" 
whom he was chastizing for the conflicting schedule. By July, he was 
accepting responsibility for the Boston dates. 

In his May 16th ComputerMania newsletter, he said, "Most of the 
Fail dates at the major Boston convention facilities are taken a year or 
so in advance, so the choice of show dates for ComputerMania were 
determined by availability more than preference." In his May 23rd 
Kilobaud newsletter, he sed, "It turns out that if one wants any of the 
larger facilities in September or October (in Boston), one has to sign up 
a year or two in advance, so the late August date was a most fortunate 
choice." 

This morning, I phoned the management of the Commonwealth Pier 
where Wayne is holding his show. Speaking to Mr. Ed Phillips of that 
office, I found out that (1) "August is not a good month here. Every¬ 
body's on vacation"; and (2) even at this late date — when the Pier 
would be far more likely to be scheduled for use than months ago when 
"the organizers" first reserved it for August 25-27 — the Pier was still 
"available every weekend in August, except the 25th to 27th." Further¬ 
more, it was also available Labor Day weekend in September, as well as 
September 17-18, and 23-25. You judge whether or not ComputerMania 
was explicitly and consciously scheduled to be in direct and preemptive 
conflict with Personal Computer '77 in Atlantic City on August 26-27. 

There is an entertaining supplement to this: by the Pier manage¬ 
ment's own statement, August is a dead month for such shows in Boston 
(Mr. Phillips expanded on the above quote in our phone conversation, 
pointing out that even one of his regular and very successful art shows 
refused to schedule in August, saying it wasn't worth it). On the other 
hand, even a provincial west coaster knows that many, many more 
people could be drawn to a personal computing show in Boston in Sep¬ 
tember or October than can be drawn in August ... if for no other 
reason than the fact that all the college and university students will be 
back from vacation and in the area. I would say that "the organizers" 
of the Boston show were either totally unaware of their potential 
market, or else they very badly wanted to do what they could to impair 
the success of Personal Computing '77 in Atlantic City. In either case, 
they will certainly have a much smaller attendance than they could have 
expected after people — particularly students — returned to Boston 
from their vacations. And, of course, that means much less income. 
Example 2: 

Maligning Personal Computing '77 

In the June KB, Wayne writes, ". .. choose between grubby Atlantic 
City, which was like a sauna last year, or Boston." In his May 23rd 
KB NL, he mentions, "If hot, humid, tacky Atlantic City (is) your bag 
..." The implication is that Boston isn't hot and humid like a sauna in 
August. In both cases, the convention areas will be air conditioned. 

In his latest ComputerMania newsletter, he may have really put his 
foot in it. He states, concerning Atlantic City: "If you are going to 
brave the crime rate ..." and ". . . most of the current moving action 
reported to be the Mafia and their control of parking lots, linen supply, 
etc." It would seem tome that Atlantic City must either nail Wayne for 
slanderous implications (notice he didn't come right out and say the 
Mafia was active in Atlantic City; he only implied it), or sit back and 
allow several thousand potential computer exhibitors to assume Wayne's 
implications were true, which might impact their future computer con¬ 
vention business. 

Example 3: 

The Numbers Game 

This is where Wayne absolutely shines. For example: 

In the June 13 ComputerMania Newsletter promoting exhibitor 
participation in ComputerMania, he says, "Dealers will be looking for 
from $25,000 to $100,000 in sales from their booths" No doubt they 
will! But I doubt that they will be expecting it. Furthermore, in his 
Kilobaud Newsletter, last Dec. 9th, he states that the average exhibitor 


June/July, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 5 


245 



DATA SYNC LEADER CHARGED WITH FRAUD 

On July 7th, we received a call from John Craig, editor of Kilobaud, 
asking us to spread the following information as widely as possible: 

John — who lives not too far from Santa Maria, California — said he 
had just found that a Norman Henry Hunt, Jr., alias Col. David 
Winthrop, USAF, Ret., alias William D. Winthrop, the Chairman of the 
Board of Data Sync in Santa Maria, had been arrested by the Santa Maria 
Police Department in cooperation with the FBI on a fraud charge. John 
was asking that I spread the word to help hobbyists avoid possibly being 
ripped off by Data Sync. 

We contacted Detective Ernie Kapthahn of theSMPD (805-922-7811) 
to verify the story and obtain the rest of the details. Det. Kapthahn 
stated that Hunt (etc.) had initially pled guilty to three counts of False 
Pretense Theft, a felony, but had just withdrawn his plea. He was cur¬ 
rently being held by the SMPD in lieu of $100,000 bail. 

Furthermore, Det. Kapthahn stated that Hunt had a long history of 
such adventures. He said Hunt operated out of Weatherford, TX, in 
1976 with a company name of Computer Devices, Inc., and an alias of 
William Northrop. Prior to that, he worked from College Park, GA, 
under the name of Digi-Tone Communications Corp. and the alias of 
Robert L. Renfro. Before that, it was the National Digital Computer 
Co. in Scotsdale, AZ, under the name of William Andrew Scoville, as 
well as Scoville Automation out of Las Vegas and Reno. 

Consider the word to have been spread. Contact Det. Kapthahn 
(pronounced "Ka-pan") for more details. 


sales reported to him from the Personal Computing'76 show in Atlantic 
City "was a bit over $3,000." 

In another ComputerMania Newsletter, he says, "We're hoping for 
a minimum of 25,000 . . . and two to four times that could not surprise 
us." Again, I say, no doubt, but hardly probable. 

He says, "There are only 250 booths available in the air-conditioned 
area," not bothering to mention that he has only 262 in all. Incidentally, 
Atlantic City has 146 booths and reported last night that 136 have 
already been taken, giving me the names of 87 exhibitors. In compari¬ 
son, the most recent ComputerMania Newsletter gave a booth chart 
that showed 144 sold. This morning, after making two phone calls to 
Kilobaud, I could get the names of only 65 exhibitors. Gary Dozier, 
the very pleasant person who Is handling exhibitor arrangements for 
ComputerMania, did say that he had "about 20 more" that he hadn't 
processed . . . but earlier in the morning when I first spoke to him 
(before he talked to Wayne), he said he thought there might be three or 
four in the mail that he hadn't yet entered on his master list. I expli¬ 
citly asked for the booth assignments or at least booth-counts of the 
named exhibitors, and Gary said that he felt it "wouldn't be fair" to 
give me that information. He could offer no justification for that posi¬ 
tion and was obviously embarassed by the position he was in. 

About the ComputerMania exhibitors 

Once Gary gave me the exhibitor names — with my telling him that 
I was going to spot check them (to which he said that they had signed 
contracts or money from each named exhibitor), I phoned three of 
them that sounded unlikely to me. Anderson-Jacobson was the first 
one. Pam Lebut, the person who handles convention participation for 
Anderson-Jacobson, said they were not going to be exhibiting at 
ComputerMania. The other two firms requested that I not publish their 
names, but said that they were oof going to be exhibitors at CM, and had 
not sent money or a contract. (I'll be happy to furnish anyone who 
calls with, say, eight names from Gary's list including these two, and 
they can check the validity of my statements). One of them, in asking 
me not publish their name in this context, commented, "I hate to be a 
chicken, but that's a powerful dude," referring to Wayne. All three of 
these companies were explicitly specified to me by Wayne's Computer- 
Mania exhibitor manager as being officially committed ComputerMania 
exhibitors. 

There's another interesting name on Dozier’s list: Data Sync. Please 
see the article above. 

Enough of this for today. As implied by my opening lines, I plan for 
this to be a continuing column . . . for at least as long as Wayne con¬ 
tinues to publish the kind of material he writes. Whenever he writes 
only material that is fair and evenhanded, then this column will dis¬ 
appear. I hope that happens soon. 

Until then, in future issues I expect to discuss such tidbits as Wayne’s 
claimed circulation figures, his KB promotional literature, various 
aspects of his interaction with Byte, and particularly some of his pub¬ 
lished statements concerning companies that "may not advertise" in 
Kilobaud. I suspect that I may also be discussing some of his comments 
about me and/or DDJ (it'll take about three months for them to appear 
in KB, but Wayne has a much faster turnaround in publishing his two 
newsletters). 

I encourage you to check all information I have given here. And, I 
encourage Wayne to exercise editorial restraint and fairplay. If and 
when he does, I will be happy to support him in his activities. 


a pseudo-contest 

WHICH MANUFACTURER OFFERS THE 
LONGEST DELIVERY DELAY? 

We have received such a volume of complaints regarding 
tardy product deliveries — and received them on such a contin¬ 
uous and growing basis — that we have decided to initiate a 
non-contest: 

If you ordered a product and failed to receive it within a 
reasonable amount of time (at least a month), please send us 
the details for publication. We are particulatly interested in 
such orders where you have “fronted” money — partial or full 
payment. Please send the following: 

You must include your name, mailing address, and phone 
number. If you prefer that we not publish it, we will honor 
such a request, but we must have the information for our own 
files. State the date on which you ordered the product, and, if 
you fronted any money, include a copy of the cancelled check 
(both sides). Give the name of the company with which you 
placed the order, a list of what you ordered, and — if you have 
it — a copy of the original order document (letter, order form, 
whatever). State the total cost of the order. If possible, indi¬ 
cate where and when you first saw an ad for or heard about 
the product you ordered, and the source of information you 
used in placing the order (e.g., an ad, a brochure, phone call, 
etc.). 

The following statement must also be included, with your 
signature: “At the time I placed this order, I had no indication 
that there would be more than a one-month delay in my re¬ 
ceiving it. To date, I have not received a notification of ship¬ 
ping delay.” (If you advanced some money with the order:) 
“To date, I have not received an offer of an immediate refund 
of the advance payment I made with the order.” 

We will then publish at least the essentials of the informa¬ 
tion you furnish in the next issue of DDJ, in particular: the 
company name, a description of what was ordered, the value 
of the order, the date ordered, and the date of your complaint 
to us. Unless you request that we not do so, we will also pub¬ 
lish your name and phone number. 

It won’t necessarily get you “justice,” but it may provide a 
warning to others who are thinking of doing business with the 
same company for the same product. 

Of course, we will continue to publish letters praising unu¬ 
sually responsive vendors, as we have done in the past. The rea¬ 
son for this special activity regarding delivery problems, is that 
it appears that the situation is getting completely out of hand, 
and a number of naive consumers are becoming very disillu¬ 
sioned with the personal computing market. 

Electronics professionals have come to expect tardy deliv¬ 
ery of electronics components by their suppliers, and have 
come to assume that the fact that a product is being advertised 
and orders solicited does not mean that the product is avail¬ 
able or can be delivered. The professionals know they must be 
very cautious in ordering electronic goodies. Consumers and 
lay people don’t. We feel that manufacturers marketing to the 
general public — to a consumer market — should follow the 
traditions (and the trade regulations) of the consumer market¬ 
place. 


“PET” ARTICLE PROPOSAL 

Greg Yob has proposed that we publish an article about 
Commodore’s soon-to-be PET system: “The Care and Feeding 
of Your Pet & How to Train It.” 


Page 6 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


246 



RESPONSE TO TOM PITTMAN’S EDITORIAL 

Dear Jim: March 29, 1977 

Bouquets to Tom Pittman, both for his Tiny Basic and for 
his recent letter which outlines much of the current software 
problem. I am in agreement with him in almost everything he 
says, especially his advice to manufacturers on how to solve 
some of these problems through standardization. I regret that 
even my one experience with a manufacturer resulted in the 
manufacturer offering “un-standardized” software to support 
my hardware design. C’est la guerre. 

I feel, however, that Tom has omitted reference to a funda¬ 
mental fact and reason for the existance of most of the “hob¬ 
byist” market. These “toys”, hardware and software alike, are 
being used as tools for self-education. This market should not 
be compared to model railroading and other hobbies of a simi¬ 
lar ilk. 

Neither the software nor the hardware is “a piece of cake” 
(contrary to Tom’s understanding). Tom is apparently a soft¬ 
ware man who has done a little work with hardware. I am just 
the opposite. I see remarkable similarities in hardware and 
software problems. Given a little time, patience, and tinkering 
the computer “hobbyist” can indeed concoct some simple 
hardware, almost like Tom’s “piece of cake”. Similarly, with a 
little forethought, the same hobbyist can write game programs 
for himself, perhaps even a Tiny Basic (though he would be 
foolish not to use Tom’s Tiny Basic). Two years ago, after I 
built my first floppy-disc interface, I wrote a simple D.O.S. (in 
machine-code no less). I found the hardware and software 
tasks roughly comparable. Neither was a piece of cake, and 
both were within the grasp of talented “hobbyists”. 

Regrettably, almost none of the “hobbyists” want to do it 
themselves. The handful who do have the ability to build hard¬ 
ware do so, but don’t stop at building just for themselves. 
They have flooded the market with poor-quality, poorly-sup¬ 
ported, un-standardized hobbyist equipment. The same per¬ 
sonalities are present at the software end of the spectrum, and 
similar quality software is available to match the disreputable 
hardware. 

Where I take issue with Tom is my conception of the solu¬ 
tion to this problem: Vendors of hardware and software should 
assist “hobbyists” in their attempts to do-it-themselves! We 
don’t need any more turnkey systems. We don’t even need the 
number we now have. Many of them don’t even work very 
well, and only add fuel to the “non-standard” fire. 

If these vendors, of hardware and software alike, would 
quit behaving like gurus and start providing assistance to 
people who try to upgrade their own abilities, the whole com¬ 
munity would benefit. The genuinely competent vendors (as I 
am sure Tom is) would prove their worth by being out in front 
with new ideas and by having the experience and ability to 
implement their ideas more efficiently and more reliably than 
the “hobbyists” can. 

My pet peeve is: vendors who supply hardware without 
schematics and software without source listing. If a vendor 
really has a technique which deserves to be considered 
proprietary, then he is wasting his time in the hobbyist 
market.[Although I tend to agree with you, I do not get 
upset when the manufacturer of my automobile fails to 
provide me with the drawings for the engine. In fact, I didn’t 
even get upset at not having access to the source listing of 
OS360 when I had occasion to use such a dinosaur. The 
difference is hacker vs. user. — JW] 

As I see it, Tom is guilty on this score. Anybody who 
subscribed to DDJ from its start is aware of how Tom’s Tiny 
Basic works. As I understand it, nothing revolutionary is go¬ 
ing on. By withholding source listings Tom is shackling the 
hobbyist’s curiosity and retarding the growth of competence 


SEPTEMBER ISSUE OF INTERFACE ACE 
TO CARRY AN 8080 GENERAL LEDGER 
“FLOPPY ROM’’ RECORD 

The May issue of Interface Age magazine made computer 
history by including a “Floppy ROM” - a flexible phono¬ 
graph record containing a complete 6800 4K BASIC - along 
with complete instructions on how to interface a record player 
to your computer and read the program. (Shortly thereafter, 
several people at a Homebrew Computer Club meeting men¬ 
tioned that they had successfully built the interface and read 
the record — including one person who did so with an 8080- 
based system. He reported that he could read the program, 
even though he couldn’t execute it. He figured that some 8080 
software would be forthcoming and wanted to be ready for it. 
(He was right.) 

Now, the September issue of IA will contain “Floppy 
ROM #2”, a complete general ledger accounting program for 
8080-based systems. The adjacent human-readable pages will 
contain complete user documentation for the software. 

In April, when Bob Jones “published” his “Floppy 
ROM #1”, we were swamped with preparations for the First 
West Coast Computer Faire, and were remiss in not making 
editorial note of it at the time. We are delighted to make note 
of it now - belated though it may be - and wish to congratu¬ 
late Bob on an innovative job well done. Producing and in¬ 
serting those records is a costly venture, and “publishing” a 
computer program via such an untried, risky, and expensive 
medium is an experiment well worthy of our praise and sup¬ 
port. 

Interface Age is located at 13913 Artesia Blvd., Cerritos, 
CA 90701, (213) 926-6620. U.S. subscriptions are $10/year. 
$1.75 for a single issue. 

CORRECT CREDIT FOR PEEK, POKE & CALL 

Dear Jim Warren, Received: 77-Jul-21 

Jef Raskin’s review of MITS, Poly, & NIBL BASIC needs 
some clarification. The PEEK & POKE functions were not in¬ 
vented by Micro-Soft. DEC (Digital Equip. Corp.) has PEEK & 
POKE in its BASIC PLUS as well as CALL when implemented 
with their RT-11 system & has had it since before MITS ever 
dreamed up their Altair 8800. PEEK & POKE were first put in 
a hobbyist BASIC by Micro-Soft, but the young people 
reading your excellent mag should be aware that the world of 
software did not begin with the advent of MITS Altair. Jef 
should be aware of all the facts before he uses such words as 
“invented” or “useful innovations”. 

Ray Atnip 7331 Harwin, Suite 117 

Owner, The Bit Barn Houston, TX 77036 

P.S. You will probably get a lot of responses in relation to 
Jefs article. 


within the “hobbyist” community. Tom is also complicating 
his own life, since only he can modify his software to support 
the diversity of hardware configurations. Why doesn’t he shift 
that responsibility over to the user? No wonder there is such 
a software vacuum. At this rate, the software market will be in 
its infancy forever. By offering Tiny Basic for $5 without a 
source listing, Tom has essentially put a “Pong” machine in an 
arcade. If he really expects to make $25,000, then why is he 
wasting his time collecting quarters? [Why not? Anyway, 
5000 x $5 = $25,000] 

Sincerely, 

Dave Allen 1317 Central Avenue 

Electronics Consultant Kansas City, KS 66102 

(913)371-6136 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 7 


247 





MORE SUPPORT FOR SOFTWARE VENDORS 

Brent Longtin 
Algorithmics Inc. 

Box 56 

Newton Upper Falls, MA 02164 77 June 6 


Dear Jim, 

Bravo for Tom Pittman’s letter on support your local software 
vendor that appeared in the February issue. The whole issue of 
software development and support costs is one that deserves a good 
public airing. One reason why I suspect that it has not received 
wider attention to date is the dirth of independent software 
companies that are actively supplying software for the hobbyiest 
marketplace. best there be any confusion, I do not consider one 
individual working for Amalgamated Behemouth Industries who cranks 
out software in his weekends and evenings frequently in violation 
of his employee contract to be an example of an independent 
software firm. The purpose of this letter therefore is threefold; 
to provide support for Tom Pittman's position by describing our 
experience with supplying software for hobbyists, to suggest that 
a major element of the software problem - support costs - is yet 
to be recognized and finally to suggest some very positive steps 
that can be taken to help solve the problem. 


'h l iuh - ran (l) i tin id 
03030 CD 3 X rH 
O 3 ii (0 T3 (1) oq CT3 

3 L H I1)(n CL. E 

c o 4) < q • <c to •o 

o c £- 3 a> *-> >>m <*_ c 

•h co cl o o>o<-h o >> co 

4-> rH o. ■ c c Ui r-H 
0 0.0 4-> C C X) 

3 J-> CD CD TX (D -H T) -H CO 

TD 4) ^ 3 ’H 3 1 O 3 TJ X 

O O X X X TD CT r-l O O 0) 

to o mo a> -h x x oh 
o. £EE«ll)103ao<H 
4-> I 3 C X) C 3 

•o MO -H X) 

OO-O-OO CD C_> O >> 

x x <d id x 3 o x x c 

X X N TX X (D C ■ C (Din ' 

ni'H 0 ) c co co -h > <u 

X C CD E O O bO 

cobocccDxox x co 
to o ox:o-ot-<Dcx 

•X o 4JO-.COC.-HO 

CD CD CD CD X CD 0-. CD 4J 

3 t. 3 h c (D >1 m 3 non 

txj X) o CL (D c 

U (0 >, CO CD -H 

2 WCHOJH'DlIL'hIDEiu 

UJ (UlD(l)L-r<(UwnJ03EH 

m ccDranjwra3 co x 
lc h 3 cc 3 > ra a-o n • x co 

w co -h x co x c x: e o -h 

CL, 3 • T3 Oh E tH J CJ X 

x xcdcdoccdoxcxoco 

w L E 10 4) XI L 0(04J> 

tn E X Oh OJ E >> c 

cc 3-h +j-u x co -h bu 

3) >>X X i—I bo 4J CD C •• 

Ol C Oh <p C D 3 C > bO "O -H CD 
(003cOS-.0-HE-HC<D'00 
EW O CD 3 bO O Oh -H TD 3 CO 
•H O -H 3 -OX 4J d)H a 

O CO bu Oh 3 Oh -O CO O O CO 

CL C CO -H C CO CX.OC 

O C (0 4J bU cO CD O -H CD 

■h l box: o x: c cl 3 ,-h 

+JC0-H4J 30-HOO CO >, X) 

- CO <D CO "O -H E O X CO 

co o >1 coox: e o cd X o x 

O-h .-1X30 ' X CO E 

•j h (5 c o o. o o x x a> m 

E cl oo x x: cd e o 

X CL X 4J (U to X) 

4J CO CD XH X CO CD Oh E 

•H > 4J 4J OX) o CO 3 O >1 

XrHOCCOEOnXO CO 

O CO 3 CD CD CD CO 

btJJ to o E CO <D > O • CD Oh 

•— 1 o J E CL CD CO X) O OO (0 p O 

< x a co o co co i d >. 

CD 3 H o -o M rH X CO 
ET3 ID CO OH XC =5 (D 

EO>»>ocoqcx(0^:D 
O0.CCDCD I O CO 3 CD -=T >, 

a a co t) x n 3 coo x >— x 


c. 

(D 

X) 

E 

CD 

co 

CO 

CO 

o 

co 

I 

M 


c 

o 

4-> 

o 

c 

3 

Oh 

c 


X 

(0 


E 

•H 

CO 

>> 

X X 
CD CO 
> CD 
>» 
X 

O 4J 
4J CO 
•H CO 
-a rH 

CD 

■O 
4-> CD 

x x 

CD CO 
4J -H 
C >H 
O X) 
O 3 
CL 

•o 

CD 3 
4J O 

c >, 

CD 

•H CD 

X c 

o o 

I 

CD CD 

c x 

•H 4J 

o 

CO 4-> 


E 

CD 

4J 

CO 

>> 

CO 

X) 

3 

CO 


CD 

CL 

CO 

4J 

CD 

4J 

4J 

CD 

(0 

CO 

co 

o 

"O 

CD 


CD 

XI 

CO 


X CD >. CD O -O - co 
X H X X X X CD 
•H X CD 4J O "O 
3 CO 5- 4J 3 O 3 
H CD O -H O O 
OH X O >» 

rH CO 4-> Oh -U I C 
•H > CD O 

3 CO 4J CO HD 

•o X) "O-H 3 X +J C 

C CO CD CO O CO CD 

CO C0.03CD30CO 

CO < 3 3 T3 -H 

CO O M TO O o rH CD 

T3 O 4J • X CL > 

•H 3 "O X >. CL CL CO 

co o co x "o h cox: 

>>x c a: x h 
bo -H x: C CO Oh CD 

3 4J CD O -H O 3 

XI CO 3 O O O 

CD X COX CD X (0 to 

•O 3 ' co 3 CO CD CD CO 

CD 4J 3 ED 

-H >> CO 10 • E >->0h 

CO CL J3X X CD O X3 rH 

CD E -HOOC.O CD 

•h co x Clco d co ^ co 

4JX CD I -H 3 £- -=T X 

■H CD X • N D D O (\l H 

rH 3 £- CD Oh 

•HX CO CD a o co L c 

4JO COCCDEWECDO 

3 Oh CD C X O >0h 

E -H X O X X O 
E CO 3 -H CO CO 

CD CD CD X CD C- Oh D 

D c X CO C 3 X -H O -H 

(O-H (DODO. X 

>»4J C CO X CO CD 

CO 3 CO -H 3 <U L D E 

O a fH o 3 CO 

rH X CO rH 3 O -H 00 

3 H a. >) (0 X CO CL. 

Oh C 0<h O id C< 

(DO a M CD S- E O M 

CO -H 4J 4J C 4J -H O 

3 CO (DCOOC4J CD C 

X >> X -H -H D MO 

Oh (D C 3X X (0 X -h 

0> (OCOCDaOLX3D 

C CO E E D O X •<-) co 

>» O Oh CD E 3 O 3 

D O O E -H -n CO CD I CH 

CD X L CO CO 

•H X CO CD CD O > 

LCD X -H (0 tfl L C bO CD 

COX) CD X 3 3-H C CO 

> E 3 D 4J -HX)X 

3 O X bOO ID COD O 

COC Cl >> 3 C cOOCOOOh 

• Hi O H X 3 41 Q 

D 30 O >> 
(D • X 4J c O O • CL 

XXOCDcOt-XS-O 
E-h-hOh bOE Q.Q.Q O 


-O ■ D CO OXrH 3"0 CD CD 

<DXCJC0XCD(D<DCE3 
4J CD 3 3 X > Oh CO CO 

CO J* -O O CD O CO 

CD L OH C (OH (DID 

> (0 L CO CD O < CO X CO 

C E Q. 3 CO X 4J C 

•h ch ax coxo 

CDCOXQ.CD • o c a 

>. >. 3 E CO H CO O CO 10 
CD X) X X) CL, CD 

COD CD >i CD E<C C X 

OO x: -H 3 CD M 4J o 
E X <0 D D CO C boil 

C D CO CD CO > 

"O OOCDCOCOEE3-H 
C X D X 3 X 4) aXD 

(0 CD C CT-H £ o C CO 

4J-H O CD Oh >,D H CO bu 

CD 3 X CO C CD X) CD 

E CL CO X D (0 > C 

■H E CL, 4J 3 <C H CD CO 

D o < CO CO bu rH "O CL. 

O M O • C CD < CD 

x a co id h to m x 

3 c (0 D X CD 4J 

O CD X H X H 4) X CD 

X 3 (0 x Oh o 4-> x: 

Oh 4J 4J H 4J 3 Oh 4-3 4->0h 

O 4J C CD O O 

O -H CD t- (DC 

(D04JCE 4J-ONO 

E D -H4JXOCD-H CD 

OCX COOCXCXJE 
CO-HCOt-CD'* - ) <D bu 4) O 

x: 3 > CO CD Oh o CL 00 • • 

CL OCEXOhOE bo 

34JCD -H CD O CD 3 C 

O -H 3 • CO 3 L. •'“) • -H 

O rH to 4-> 4-> 

CD rH • cl -rl Li O X 41 O to 

LrHX3X:ox:COt-3(D 

(DcDCE-h 3 (0 4) (0 X t 

O CO > CO CD 3 O CD 

4J CD E • CO CO EH XD 

05 O3XC0<D0hCLC 
DDOWOCOCDECDO -H 
CL x: - O O X CD CO CO 

E X X > CD 3 4J CD <D 

CD CD CO CD’ - X)j_> CO O O' X 4) 

4J X -H (0 4^ O h£ O -H -H 

HHX 3 O CO CO 3 3 

(COD X O Oh CD CT 

CD CO CD O 3 CO 3 X 
"ObO X)'C XH O CD 

c cbucmc04J(Dcoo-‘X 
COtD-HC34^ECX> CO 
3 O -H CD 3 

x d >i 4) Ed x cox 

C co -H rH >,x a O CD- CD 

H Q. 4) t- D i—I 41 O 10 W •> 

<c x 3 x: x: 3 ho, xsz-h 
MO bo bu "U CD 3 I -CD 
Oh H3X>CXUO 

c <d >,rH o co <d co c • a) 

•HCQX) CO X£X E CDOX. 


4J • CO •>» >tSZ 

•HD (0 D ED 

C rH C 

CD CD D CO O 

CO E CO • >i bu E 

3 aow o c 

CO O E Q- X -H 5- 

O H H < CL 0) 

CD CD (0 M 3 CL 

X) > O O 

CD CO Oh O O CO 

C -O CD O • CD X 

O S- O S- CD • 

•H -H rH r— E CD 

CO Sh 3 rH o C 

X CD CT CO T3 4J O 

CD X CD C W bO 

> C X CO Oh -H 3 

3 CO O E a (0 

0-0 -H 

OO CD CD E 

I to O C «X O >i 

McOCO OtDXD 

3 3 rH CM > Oh rH 

CD O CO CD CO 

x: sz c z n >1 

4J O c X CO rH o 

•H CO CD rH x 

>.£ rH O * CO 

X 3 >. X) D C Otr«. 

rH E O O 

CO D D CD C-HCDCN 

a o c co 3 co c 

3 CD co O C. O >> 

OO 3 ffl X 4) X E 

d o a > cl 

x cd co co -a 

X atOD 3 3 c 

CD X) -rH O CD CO 

CO C 3 4J 00 Oh 

3 3 to X CO O CO 

Oh O O CD co CO C 

CD to Oh X) O 

SL CO CO -*H 

•H x: CD O CO 4J 

X X o 4J CD 4J (0 
CD CD CO X CO CD 

X X X CL "O 4-) O 3 

3D CO CD O O' 

D-H D -H 

O 3 O >> t- 4J CO 

CO 3 X 4J X C CL. 

Oh x X O O CD < 

3 CD O E 'Oh em 

C O X CD C- CL 


CO -H CL E CD O bO 



CDCCDO oco>£s: 

C O X 3 CCDCDCO 

OOHE C X X (t) 


Page 8 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


248 


(c)Several muttered that they had vague plans about building 
their own software in the future. That was months ago and I 
still have not seen any results. One can only wonder what the 
hobbyists who bought their machines are using. 




' CD 


U.I TD v 


: x O 


3 X <M -M 

E O (0 f —| O X 
J ** +-> —i x qi 
c x co to q> x 

•“• CO X g 


i 


.' ^ .? (U H O 

' rH x x <d x a> 

3 4> X X 0 ) .|-| _£ . 

) co o x x 

x c *j 

■H W .H c D *j t, 

> i’ ro .ri £ c o 

5 •-*"-* ^ 1X33 

1 — 1 1 —• -*-> o 

1' CL H Cm o CO 

1 co B o . 


qj x 
X x 
3 

TD 

co c 
qj a? 

X 4-' 

o 


4 X 3 


co -C 4-> c co a) a) 

a> l0 3 E X 

O E cr o 3 

TD W QJ (0 

<u o co aj co (tj 

^ co L (0 c 3 4) 

^ <0 £ H O E 

CO o o 

3 CO v • d> <U 

TD X X E 


CO 


C CD . 


- >> CO r , 

G' 0 £- 0 - 0 
ro c c x 
p OJ L n)< +j 
c- (D x: -rH 


- CO TD CO X (D • 

L> 3 C O £3 TD E 
D TD CO CD •<-( 

: ^ x <d c x x 

3 co td •<-) _c <o o 

x: <d cd 4-3 a a) t»j 

D 4-3 XT Q. c 

CO 4.3 C 4 _) C0 -H 

> co X OH co 

- cr x • r 4 -h 

3 CO CD . . > 

C CO <D CO o 

•>>»03l<DCDX 

: E (0 X, JO CL 

3 ._4 CD 3 3 

■O TD 4.3 -o 4-) CO 
• ^ « X (0 C - 

1 O 1 ’ 3 A (D (u (j 

3 XX E X X Ol—I 


3 4-3 4-3 O cD 

: c/i co E-* x 


O CL c CD C 4-3 


cd 3 4-3 x: to cd 


CO TD 

x cd 

4-3 CO 


. w . I tH X • 

) e o x o bo 

CL >j O CL C 
> O O CO CL-H 
) >—I I 6 3 3 

i cd a' co o 

L > Cm CD rH 
CD -H X Cl -4 rH 

: td h co o o 

) 3 x, 

TD 4-> 


CO . 


CD bO 
E X 
CL CD 
O £> 


CD 
CD X 
CD -C CD 

C 4-3 X, 


CD ' 


! O 
>> 


) CD CD 
< O X 
) -H CD ■ 

> x 

CD 3 - 


I X C CD 


4-3 CO CO CD x: 

CD 4-3 -C E 4-3 

^ O CD 

X 4-3 4-3 •—I CD 

CD TO 


O 4-3 

43 CO 
to o 


CO CD 

•h x 

X 4-3 


. TD o 
J O CO CD 
: 6 <-» 

> CL 

* X CO E 1 

I CD C CO C 

) X ox 
\'H (D 
E 43 
•H (0 C 
X O CO 

4-> rH CO 

* CD CL«=C 


O X) 
CO CD 
' E 


CD CO CO ■ 
>>X X 
CD co 
D* 

co o> 

•H i—I 


CO 

rH X 
CO CL T 
3 CO C 
C X C 
CO bOr- 
E O 


, (D X 
I O X CD 


> O X T3 -H CO 

• co o x 
E X - CO 

) I 4-3 O c/3 o 

: cd c x. cl a 

> bo <d <c 

X O CD N 43 

4 CO X X X 

) r—c cd co on o 

CL 3 CL 

L "O 4-3 CL 

C c O X-. CD 3 

> co o > co 

CO CO 

) X o x o 

: a) 43 x_, 4-3 

3 43 O 

3 0 CD CO 

Cl c\j <0 3 x 

-> E C O 

i O >» O 43 

: O H -H CO 3 

> -r-4 c CO O X 

C O X -H -H 

•rH <D (OX 

) E CO > co X 

3 X CD C 

: CD C CD o 

> X CD X O 

) X CO CO vO 

> CD x X 

. E X co O 

L O CL Cl CO •’-) 

> X CD <D (0 CO 

. X t. co r p 


CO co CL CO X} c co . 

rH CO CL >, bo c OX'.__ _ , - 

ECDXCCOXCOCD X O CD X 

rH -H 3 X CO CD >>-rH >, 

- X-. (OX COO (D 3 TD X (D>>—I 

COO >i o n I) X Q. O x CL X 

CD X-rH.H OCO rH CO E O "D , 

E >,X CH-H O10CJXCh(h.h<h(U 

coxox > cd c n o ow o 

X<DXO<D<DXX -H X 

Xi.H CD TD TD CO C t>0 CO rH O , 


CD X EX O • 

J CO rH CL E 3 

CO rH o CD 

J O CO O O X 

: XX • CD < 

J CD CD 3 X X i 

X C X <D C 3 ( 

X CD C H d) CL 

- bO (D E E < 

) c a c o : 

J H -H (0 O O 

- X I 

J • CO X- -H C I 

> TD X 3 X > O S 


CDJ XC C X rH CD CD 
X' o. CD rH CO X X 

CO! O. E (0 X X X i 

3* rH 3 o x CD 
■Ol CD CO X CD > X 


3 X X O bO 


LX X 3 
J a X C 
. CO CD CO 
j X X E 


> X CD 3 
: o x cd 

LX X C 


CO co 

3 


> CO O O 

: c -h 

) * O O X 

c to .H X CO 

> C X X 

lo ax 


X o <D O 
X O O C CO 

C0IO<D3<DX3OXXC0<D 
XI C X O bUTD COX. CL CL CL O 


X X E 
CJ O CD 
C CO X 
3 CD X 

X -O co 


bo CL CO 
•H | X3 

x, -a c 
c X co 
O O X 
o 5 X 


CD X 
rH X CO 
CO H £ 
3 X X 
c 3 


■o CO X CO X 


CO 


CO 


E O rH CD O C (0 


o w a 

X CO -H • 
C c 

O CD X 
X o o 

C CD j 
X CD X E 

I-H vH 

3X0 
O 3 X 


O CD 
D X X 
£ CO 

J X 
•H 

X. 3 
3 O . 

3 >> 

30 CO 

2 CO i 
H X, 

J x -h : 

o o 

H X <D ! 


X CD 
CD C 
E 


3 >i bO CD X. CO 
: rH c X -H -H • 
rH -H X 
CO >> * r 

) 3 C CD C 

3 X CO X CO O 

O CL o X -H 

CO E X, 3 X 

> O O (0 

C CD O OX 

> O X C 

(0 CO CD X. <D 

X X O E 
C CO 3 


O > 
X O 
CL X 


X. x (D CO X. B CD 


O X E CO X bOr 


3 CD CD O X C -H X 
3 X O -H O X O C 


CL X 
O X. . 


>> CO 

X rH X <D rH 
l-H X -H X CO 


10 X 
X CO 
C X 
CD C 
E <D 
E E 
O 3 
O O 
O 


) M CO -H • O 

1 CO CO O 

X X c £3 X 

C X O X 

3 -H O <D 

0 3 > CD 

-CO X 

X X CD X 

>. CD CO bO 
i CO X X <0 X. 

1 E 3 X 3 -H 

X bo 

O C X 

I X (0 bu <0 O 

I -H X, C rH 

3 0 C 

C rH CD O 

: co CO X -H 

' <0 E CO X X 

I CD CO • 

i 0) bOX. X - 
i CD C <0 O C 

L rH O CL CD • 

LX bOE- 

l -H >> O C 3 

X £) 3 -H O 

CD X X O 

XX CO X 

C3 CD >»-H 

C X rH rH CD 

l-H CD X X 

X. O (0 -H 

^ co > 

• O X X. o 

C CD o X 

o o a 


CL CD -H X 
O X CD C CD x. 

X (0 X £ > O 

CL 3 CO C3 CD 

X > CD X X 
‘m OX (0 X 
CO O CD X O 

•H CO CL CO 3 CO 


• X CO (0 X X 

xxconJ3Xo^ 
3 -H X CQ c CO C 
x c co a c 

03 CD 03 E OS, 

CO E X 4 

3 3 3 C X X 
X O 03 03 CO 3 

3 O O 03 10 O O £ 

bOX X CO 3 E >>-r 


03 X. - CD X C C 

> O to X H 0 ) H 


CO CD 
C X 
o x 


CO co CO C (0 X 


O CO 
CD 
X -H 
CD X. 
E *H 
O CD 
X CD 
CO CL 
3 CO 
C3 


X. CD 
O X 
CO 3 


X. >, E O O 
OX CO -H O X 


>. 

3 X C 3 CO 
«H O 3 
33 CO >, 03 

- CO 

) O’ O IX 
i >> X CD 
3 X >> JX 
X X rH O 

- CO >> rH 3 
3 X CO X 


C X 03 E 
I X X CD 
CO -rH X 


CO 


CO O 03 i- 03 >> 

rH X X C l-H - XX CD tl) 
rH 03 • X O 3 CO X 

03 X CO -H X a O H hO 
C0-HXCX03^EE3C 
rHCD-HCD03OO C7--H 
n rH 0320003 X 

03 rH rH X -H X CO CO 

• CD 3 03 • C X 03 X 

X Cm CO CO -H E 03 

CO X 03 E X -H a 
XCOX-HX OXO 
3<DC<OX03CM<D 
> O O 03 X EC 

>*OH E X CD O CO 

X CO 


3 Cm 
O 

CO CD 


E Cm 
X O 
O CO 


bo 

c c 

•H 03 
C 03 
•H X 


I C O 
) O X 
) -H <M 

: x 
i (0 X 
X 03 

: x x 
i co co 
c c 

I O -H 
E bO 


CO > 

X X 03 
Cm X 
O 03 


■ CO 


X CO <H bO 


03 

_ - X 

X co s 03 

03 XX 
CL X X X 

O -H 03 

rH 03 X X 

H 03 X C 

- > X CO 

> 03 03 

X rH X X • 

2 H X -H r-x 

J 03 X X 

• CO to 03 

3 CO X X C 

0 5 CO X CL. X 

X -H CD O 

) OS C3 

3 X X X 

3 03 C 3 03 

3 X CD C O X 

J X > -H >, X 


X 3 CO 
X 03 03 
•H X X 
3 CO 
03 
X 

X O CO 
CD E -rH 
X X 

O box 

•rH C 


03 -H X 
X X co 

X CL £ 
X 


x co 
o-oo 

CD X Q-. 
CL 03 <C 
10 XN 
3 3 
<0 X Cm 
CD O 
l-H CO 
Cm CO 
CO 3 CD 
03 C X 
CO 03 3 
CO E X 
C3 (0 
03 

3 CD Cm 
0) X 
Cm (0 CD 
3 a; 
co x x 
x x 

C CO H 
l-H X 


c a; 
cu o x 
x x CD 

X -H 3 


03 X 
CL 03 
X E 

CD O 


x co x a 03 
X CD o CO -H X 
■H 10 O 0) 3 H 


c to 03 CO X CO 

ox X X X 03 

CD O X 

X X E 03 to 

o E X -H 03 

Z 3 blj (0 C 

c C J 0)H 

. -H X X X 

4-> rH Cm CO (D 

C Q) H O 3 (0 

OJ C 03 CO X E 


CL X 
3 X 
CD O 
3 to a 
X CL 
03 3 C 
CO E CO Ci 
03 O C 
CO X O 
03 CO 03 
CD 3 X ! 
CD CO 
3 ' 

rH O X J 
(0 CO Cm 4 
X O O 
GKO W I 
> < 
CD X 


O > X 
CO O 03 
I E bO 


1 -r4 X 

1 CO 03 03 


Oh bcG 

<C PJ" 
CK) r- 


X c 
3 03 


, X -rJ ( 
C3 I 
CO >> I 
Cm X J 
3 0 4 

C E 

03 CD C. 


CO >, 

0 ) 

X CO X 
XXX 

o o 

X -O X 

C co 
cox 

O > X 
CO o 


•O CO 
c E 
co 03 t 


bu C CD E > 


>>X C C O CO O X} ' 


O X O ^ x o b 0 


CL 3 

o 

3 


Cm CO C >« (0 > O 
O 3 bo rH CD -H 
TD CO rH to 

bO X • 


I "O X X 03 CQ 03 
O 03 X 
X E X 03 


03 

X E 

E co 

03 CD 
03 X 
X X 


CO 
E 

Cm CD 
O X 


LX O rH C 


C CO 

03 CO 
X) E 
C X 

3 >> 03 - 
XXX 
03 03 3 
XXX 


owe 
>> 03 CO ! 

cd a 2 : ■ 


•H 03 03 : 

CO X rH I 

C C X J 


X CO 
CO 03 
CL CO 


03 X 
bO CD 
CO 03 
I X 
> O CO 
X 3 
CO O 


X >> CO 
C X 
CD -rH 
> X X 
O -H 
•r-) <y 
03 CO X 
X E X 


CO 

3 

X 03 Cm X 
X X O X 
.(OX (0 

> x to a 

> X 03 

) * CD X 

1 >1 to X 

: X O E X 
0JH 3 O 
) > X c Cm 
03 CO 

) O 03 X 

! C bO rH 

Cm bO X 03 
L-H C0 03 -r. 


) CO 0 ; 

- E X 

• 03 (0 . _ _ 

X C X X X 


X 


CD CO 
to to X 
a. co co 


<d o 0 
X x ; 
X b0 0 


' CO X o 
x x a x 

O I 3 Cm 
03 X X 
CL CO J* 

CO X c o 


XC0C0t0>iX>)CQ) • 
O-H 03 03rHc003C0XC0 
O H H H 0) X U W 0) 

CL C C X >> X X > 

C CO 03 03 rH 

03 O CL CL E O • X CD 

xcoEE-Hcax- coco 

•HC0OOX 03 X X 

>03000. CX-H3 
OX O 03 CO 0-i o 

X 03 CO X X 3 
O. X CO OJ X X 03 

O 03 X X CO Cm X3 

CO -ox 03 X X >> o c C 

X COX 3-HXrH CO -rH 03 

03 E TD 3 C C 

X Cm X OO 

3 CD O CO E 03 X C 

XX X CO • E rH CO 

OH rH x X O 3 E 
to coxco-hootwx 

Cm • X CO 3 tO O 03 X 

3 CD 03 O "O TD X -H 

C > O Z H X C CL. 

0? O c > O 03 -H 

E X 3 • X Cm X O 

CO O 03 TD XtOXE 

03 Cm X C X CO O 

XC t0 -H CX O H 

03 03 3 3 3 X X 

3 > CD X XO X Cm 

TD -H X Cm >1 b.j XbOO 
X bDX OX C 03 3 

CO CO TD O X O 03 

X CO C X X X to 

C Cm "O TD 03 -H OJ X (0 
300003 XXO 

03 CO o TD CD Cm CD 

Cm CO bll £ > O TD X 03 

03 X 3 CO (0 Cm X 

>iXXI0O(D0)Xt0X 
X 03 03 Cm x O 

03 a) cl x 03 a; c 

> X 3 o -r4 3 C -H 

X X 0) X CL CO 
X CD -rH X 3 CO 

CO X X X CO X CO CD 

X o x CO TD CO 03 X X 

x Cm c CX300 

O >> 3 x bO 03 E 
XXCOrHOCM CL X 

OXO box i-H X O 

>0 XCboX ox 

O Cl to X -rJ • X 

3CLOXCOOO.-H X 
030 3 —4 C0 X H >i3 
X to C XXXOrHb-. 

O bo CL is rH 

O -r4 c X o - CO O- 
rHXX-rH3XX OX 
O to OTD to 0 ! O - X O 

O 3 CL X 3 bO X. 3 

Cm X X CO TD C TD 

Cm O bO X X *H 3 O 

OCOOCOOXOX 
l-H CO -i-h X 3 XXX >, CL 


CO 

CO 

3 

X 


c 

o 

X 

3 

o 

X 

CO 

3 

Cm 

o 

CO 

>> 


CO 

3 

cr 

o 

N 

•rH 

c 

bO 

O 

o 

o 


E 

O 

X 


X 

o 

o 

CL 

X 

o c- 

X 

C 5 o 
o o 

>»TD 


CO X 3 • r 

•H C O O O 
X O >, C X 
X TD H (0 
C X X 3 
bO O X O X 
C CL bo CO Cm 
•H O 3 E O 
TD TD O CO 

co C X o 

O -rH X X 

X O TD 

O TD O 
OOXOO 
O C 3 E bu 

O E 
>> O O 

CO H U TD 

E X CL C • 

CO O 3 3 tO 
O X O O Cm X 

X X CL C O 

3 O -rH 

O O X rH 

tO C X X CL 

X X X X >, CL 

O C£J 0 3 

TD O • X C W 

C rH X O O 
O Cm Cm E X 

>0 C 

o w o o o 

OX OHXTD 
X X tO X C 

CO O (0 O 

3 TD -rH CD O CL 

o oz >0 

XX bo CO TD 
CO CO * C X C 

X O O -H •*—4 

X X CL o 

>> O <0 O X X 

C X 3 rH O 

CO cx o too 

•rH Cm > Ex 

o o o o co 

X o CO TD O C 

X CO o 

O >,3 O 

TD X X O X 
•rH X X C o O 

CO Ui o TD X 

(0 -H X CO rH 
E *H -rH O 

3 CO 

C 3 Cm r X C 

CO o o CD O 

>, -rH CL CO 

CO -rH 

CO - X (0 X O 

<C X o CD O X 

O TD X 

X rH CO CO 

x H H H o 

O 3 l-H X c 

rH X 2 : H CO 


X • CO X X 

bo X -rH O C 

3 O X H O 
O O X X 

xx a to 

X -H 3 CL 

X TD * X CL 

CO O CO 

rH * X CO 
rH CD CO 
CD X O X X 

CO O CD O O 

X X C 

O CO 3 

X XX 

to X H >) 

C O X rH 

cd <d a. x x 

CD > Q. CO CO 
X CO 3 -rH X 
X CO TD O 
CO X 

tox c< a 

X o 3 


a. o co 3 x 

< TD X <m tO 

M -H CO 

CD CO X 

bo 3 X CD co 

C O 0 X 

•rH CD Cm OX 

rH x 3 

rH CD CO CO CO 

(D X >1 E 

CO 3 CO C CD 

a cd h 

C CO CD X 

•H CO 3 X O 

(DO X 

X X C 10 O- •• 

O CO CO X 

co c/3 X CD -rH 

oca. 3 

x h < cr xd 

Q- ts] CD -H CD 

CL TD 3 C -H 

CO C X X 3 X 

CO CO -rH X 
X X C O 

CO CO X X 3 CD 

CD CD O X > 

X X X CD CO 

CO O C X CO X 

rH X CD CO 

(OX X 3 

X bb O 

X X CD C CD >> 

3 CD -H X 

O X CD X CO CO 

3 X CD 3 CO 

ax js: x cd 

E X H H 

O O CO O C 

a h e co 3 


> X CD O 

I X (DO 

: H c 1 

QJ 

U CD O > 

: E X 

I O CD 

» O E X 

> X CD co 

L CD CD 3 

i > CO TD 

1 O X . 

1 CD CO - 

rH X 

i x a 

, CO O CD - 

I 3 CD X 

E ax 

I 

I >. >> 

•» 3 C X 
O CO 

> >>Z TD 


>, CD • 
CO CD CD 
CO CO 3 


O X CD 

aj x 
>» co 


CD CO 
CD CD 
X O 


CL E 
O 


: bo x 3 
C C -H TD 
•H O 
D X tO X 

- CD TD CL 
0 H C 

£ Cm 3 CO 
1 O O to 
4 X 3 
D W X 
0X30) 

QJ W X 
OX CO 
= 3 3 

D X X X ' 

J O CO Cm 

0 (0 £ O 

r, Cm X CO r 

0 3 

C 0) 

- to (OX 

D E X X • 

3 

0 QJ CO QJ 

D X CO 

-CO 3 
0 3 O CO 

OHO 

0 X x QJ 

: co co x 

j x E 

o x • 
QJ X (0 
: x 3 x h 

h x co x .. 


■ O CO TD QJ O 


CO X 
bo QJ QJ a 
X X 

TD CO X TD 
C 3 rH 

CO TD 3 

X Cm O 
X CO O CJ 

O X 

•H tO 

X 3 X X 
QJ QJ QJ CD 
a C X TD 


C X to 
O CO X 
•rH X X 


bO CJ • 
■rl C X 

E aid 


3 >. X 
CL C CD 

3 co a. 


QJ CD CD QJ 
X > X rH 
X -H o x 
CO X (0 

c co x 

X QJ QJ 

O ax TD 

c *- X CJ X 
QJ CO CO 
CD C 
QJ O 

> C C CJ 

I CO O 


CO 


QJ 


C X (0 > 
QJ QJ rH (0 

ax rH x 

X X CO 
CD tH CJ H 

CD 

to • 
>. to (D X 

X 0) rH o 
QJ X CO 3 
> -rH Vi x> 
3 O 
cr CD X 

cd cd x a 
XXO 

E X 
X 3 
E M X O 
CO O >> 
O • 

X Q) 

O C >, 
(0 TD O X 
a c x 

•rH CD X (0 
X > o o 
CO 

X CD C 
0) X bO O 
rH CO -H X 
(0 3 CO 

a; x a 
■O Cm E X 
o co co 
to CJ -rl 
bO 3 

C X bo 
•rH c C 
X (DH 3 
CO TD CO O 

•rH c --H >, 

rH QJ X 

x a x 

CO <D Q> X 
X TD > CO 
CO C TD X 
W H ttt X 

X 


June/July, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 9 


249 







rH bo O TJ O TJ 

03 TJ 03 

43 x 03 

X <y 


rH C 43 C 43 C 

O o w 

O 03 3 

3 C 


03 -H CO CO 

CO O 03 

CO W C 

O o 


3 43 c bO 

Cl box: 

X C H 



CO o c 

43 

03 43 

CL 


(0L. W -H 

03 

• C 

bO <y 


03 O E O 03 

£ CO O 

>> o 

C rH 


w aw oj tao 

43 43 

03 X O 

•H a) 


43 O 43 C 

03 

SZ 43 

> 43 


C TJ CO W CO 

43 (0 

43 

X 


03 C >»-H C 

03 3 TJ 

43 3 

03 


W rH to W 03 

W CO 03 

w o 

w XJ 


03 03 E 43 

O 43 

03 X >» 

c 


£. > CO 03 C 

O 03 o 

C3 -H 

o CO 


a. 03 • bo ■—i-H 
03 i-H C X) CO 

43 £> > 

03 

3 Cm 

TJ 43 

43 


£- 1 CvJ . H O E 

bO TJ TJ 

O 03 to 

■O C 


t- 43 O 

C 03 

x x: x 

Q3 03 


SZ 03 ' CO CL 

C3 >H *- £. 

•H O 

O 3 03 

0.43 43 

43 .*_> 

43 ^ 


•H jQ O3b0- 

bO TJ XJ 

O C TJ 

*H -H 


x: E w O. 3 >, 

O 

43 O C 

E X 


3 03 C O X) rH 

W X 

CO 

E 3 


WO rH 

•h an 

>.43 £ 

O 


O W -H CO 

rH 

CO O 03 

O 


•H CO W ZX 03 3 

03 -H 

3 3 TJ 

X 

UJ 

W J- CO SZ 43 

03 X) 3 

TJ 

>. -rH 

2 

CO 03 -H 43 C 

X 

>> O W 

rH (L) 

O 

CXJ 03 > TJ 03 

CO c 

C X 0) 

rH XZ 

a 

-H > 

3 CO 43 

CO CL X 

CO 4-3 


O. bO X W UJ 

43 a c 

3 

03 

UJ 

Cm E C 03 03 

Cm 03 

Cm CO 

t- X 

CQ 

O H H H bl) 

O W rH 

O >» W 

03 


w qj a co 

W 43 to 

C 03 

03 3 

z 

03 E 3 • 

C3 43 

3 CO X 

X CO 

«c 

03 W O U) 03 

3 

o a. 

CO c 

CJ 

W TJ OCX 

bo TJ 

c 

CO 


CO C >. CO 03 

C O 03 

JC C 01 


H 

O CO TJ £ rH > 

•H X X 

•H > 

3 43 


CO 43 03 

43 Q. CO 

43 -H 

O co 

X 

>» 03 -H W 

W 3 

O 43 

>» 3 

3 

03 bl £ 3 H 

x: o -h 03 

•H >> 43 

X XJ Cm 

C >,-H 

43 43 

E 


43 rH CO • > 03 

03 XJ O 

OH 03 

Cm <n 


O W 03 X 

o w 

TJ rH Qu 

M C 


C 03 bt/ rH O 

XI 

co E 

O 



C x: x 3 l E *►"• 


1 03 TJ -H C 

3 d)£ (1) 

4> > 

X 03 

- O ■—I 
W CL 3 
E (Li ^ CL) 
03 X X E 
-*-> 03 O 

(0X30 
>>-H O (U 
W Cm CL XJ 


C C (L W 
ID O bb(V 
E •>-) nj •<-( 
4)£*J*J 
O 3 C -H 
C V > 

co x: o h 

£ *J L +J 

C -H 0 ) o 
ID 3 a m 


D £ C 
£ D ID 
bu 03 


O 4-) 

Jj CO 
CO 0) 


) 3 TJ 
• -U 0) 
a> 4 -j 
X 4-3 


CO 


I 


H L ID > 


X 03 
3 H 
O 4-3 . 


XJ CO 
£3 03 
. O X 
• Q O 

) 4-3 

3 • CO 

X 

Q X 

*. oj 

1 I 4-3 

4 3 
03 CL 

3 X E 
J (0 O 
: 3 o 

4-3 

Cm 03 
I o .c 


> 4.3 TJ 

CO c 
4-3 E Uj cx3 03 co 


0I3H LX) L 


c m. ai o i 


CO CO 

) 3 4-1 

L CO 

» o 

' Ui o 


4-3 CXJ 
CO 3 
•H 4-3 
TJ Cm 


- (0 CL (0 
I 3 4-3 

I CO >, C 


be 03 
X 


CL TJ rH 
CL C 03 
0) x: 


T) T) 3 IO a 
C ■—14-3 
CO 3 «m 
4-3 0 0. 


CO O TJ _ 
E X c 4J 


3 4-3 CO JC I 
O C 3 4J 
>» 03 O 
TJ X 

' c c box: : 

O 03 4-3 . 


COLC3C03M3 

O TJ 4-3 
•H C O 
4-> -H 3 03 ' 
CO TJ > i 
O • 


£ O (0 - 
•HO E 10 
c 4.3 E 
03 4-3 
> H 4.3 
03 CL C 
JO 03 03 

4-3 x -a 

C0 E C 
3 0 0) 
c 4-j h a 

03 0-1 03 

•X O £ O 
CO CO 4-3 C 
4-3 o -H 

4.3 JO 

>» C 03 
TJ 03 CO £ 
CO TJ CO 4-> 
03 C 

X 0) -<L. 

rH Q.«M O 
CO 03 l-H 


I 03 


03 -Q 
O 


03 


03 4-3 X -H 


: C CO 03 
> ID Z 43 
E «C CO 
CL 03 
: -h 4-j 
3 3 4-3 
I O' CO 0) • 

C 03 X X) 03 
•H 03 
TJtn O £ 

• C 4-3 <M 

3 CO I 

i 03 — bO 
03 XT 03 3 
E 4-> C X) 


03 


- t-.C-.T3 

TJ O CO H 
03 Cm 3 3 
H 4-3 0 
-H Cm O 
3 4-3 0 
CL X W 
O CO 

io a 4-> 

03 Q.«m CO 
SZ 3 O 03 
O CO 4-3 

c 

3 03 4-3 
CLrH to TJ 
£3 -H C 


E 03 
X -C 
O fr-* 


03 C 

> -H i 

CO O 3 O CO ' 

£ 0) -H O C 3 

£3 > O ■—< 

3 43 £ £ (0 

O 03 CL CO > 

X bO (0 C . 

C 03 ' -rH ■ 

, box: x 

:| o. c 4-3 o 03 

rH -H -H TJ 

03 4-> - X -H 


JX -r4 
O 3 
O bO 


T> 4-3 CO 

X CJ 03 
(0 3 bo >. TJ X N 
3 TJ b0'—I <—) >-H •»-) 
O ( 


» c c 

) *H -H 


3 sz co 
: to 4 -j 
3 **"4 x 

rH O 
J X) CL 
> 3 03 
CL CC 


CO O (0 £ 

Q. 03 O 3 CO - 

C- 4-3 TJ r 

CL £ 03 43 c C 

, 03 3 > 03 t- 03 CO 

4-3 O to t- (0 > 4-3 

to >, x: co o. uj co 


TJ 03 03 03 03 3 T 
C+J£ b0> O I 
CO 03 4-3 CO -H >> f 
rH 3 bC T 

to a bo f-» c 

X E £- C rH c 
03 O o to £ CO 4 
i—I O Cm i—I O c 
•H 5 

CL (0 
E 


< 03 43 E 4 
)£ C CO i 
4-3 (0 CO I 


x: co 
to a -h 

‘h -H 10 
-> O E TJ 

C C 

: w o> x co 

> 4-3 rH 03 

c a>o 

3E0)£ 
O CO 4.3 (0 

E X co TJ 

to 03 x: c 

3 CO 
03 4-3 

be X X W 

3 0 0 

> sz (« ^ 03 

x; 

- 0 4-3 

£ 3 CO 
4-3 0 0 0 

X CO 4-3 


O 03 -H 
-C 4-> 
4-3 -H 


3 £- 03 
M O TJ 


1 C 
O TJ 


O J C 
3 <C 
CO 3) 03 
C/j E 


CO 


3-4-3 
<L O O O C *3 

x: o o h o oh 

CO 03 to *r4 rH 

to 4-3 
XJ -H CO 

XJ c 
o -h x: 

£3 Cm 43 
03 -rH 
TJ 


TJ 4J 03 . 

X) o £ 


CL 03 O TJ X £ 

CO Cm (0 3 

(0 03 O 

£ O 03 


Cm jO • 
03 E 
TJ 03 O 
CO CO 


03 4J C £ 03 


> C l. 
03 03 43 • 

rH E to 


bO 
3 C 


a 0) • 

bo 3 
CO 03 r 


I43(OOhOJ3'H£10 


•H X Cm 
1 TJ 03 O 03 
•h bo x: x 

3 C 43 >, o 
4 O *rt C Cm 
3 £ O 03 CO 03 
W TJ X E XJ 


1 C bC > 
O C 03 
CO X 


to 

•H • C CO 
03 CO E 
W X X 
C0-H £ O 
03 3 O Cm 
C3 CT Cm c 
O 03 O 
£ £H O 
Q. O 

X) 43 
rH O -rH 
C H o 
0 3 0) 

•H TJ X 
43 43 £ 3 
CO -H CO CO 
3 TJ C 
I—I *3 c 'H 

to co to 

>£3 0 
03 43 CO 43 


03 43 
|£> 03 


03 . 


03 


3 co 

o 

-C TJ 
CO 03 


C t- 
(0H Q 


O 3 CO • CO 

Q O 03 CO CQ 

X O £- 
t_ 03 

CO 3 TJ Cm 
O rH O 


£- Cm 

03 03 _ 

43 TJ • O 
03 I 03 -H 

£. <—I bU43 

an con 

£ 03 J C 
03 3 


X) c 


C £- 


O 

O 03H 
C £ 43 
CO -H CD to -H 
3 C £. 3 C 
bo *H 03 43 .M 
C Cm Cm Cm Cm 
CO 03 03 O 03 
rH TJ £. CO TJ 


moo 

43 43 3 
X) TJ . 
O 03 O I 
C3 £- 

C C 0.4 
CO 03 J 
C3 £ 03 I 
03 £ 

3 x: to i 
O TJ 3 

>> CO 43 ( 
- Cm : 
03 O 
O CO I 
0/ Cm 1 
£ O CO i 

3 43 ( 


O £ Cm 
C O O ■ 
x bo 

03 43 
3 43 £ 

O CO CTJ 
>> C3 Q. 


03 03 03 
X: ZX 43 
43 CO 3 
E X) 
CO -H 

E O £. 
03 x: 43 
rH 3 CO 
X) -H 

O 03 TJ 

£. r—i 
0.0.0 
O 43 

bo 03 
C Q. TJ 
•H 03 

43 CO 03 
CO -H C3 
> O 

CO 43 £ 

£ co a 

bO C 


co co 

03 O 
03 O co 

o o o 
I- co 
C o. 

03 O 03 


I CO 03 
box: 

' CO 43 


: Q. C 
3 CO 

: 03 

» to t- 

03 co 

4 E 3 

) O 43 
C3 «m 

3 O 


O X) 

E 

03 TJ 


0<m£ 

MOW 


w 


O Cm 
CO O 


>1 43 *J 

C3J Cm O 

O O o 
o| w x> 


Page 10 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


250 



SMOOTH SCROLLING AHEAD? 


SUGGESTIONS FOR MUELLER S “APL” 


All of the video displays I’ve seen do scrolling the same way 
as a Teletype, everything jumps up one display line at a time. 
Actually this should be called “ratcheting” instead of scrolling, 
as the motion is abrupt rather than linear. Ever try to read a 
listing on a rapidly scrolling monitor? If so, I’m sure you’ve 
noticed how jerky the display is and how hard it is to read 
anything as the text jumps from line to line. 

In the early days of personal computing (i.e., last year) hob¬ 
byists were happy to be able to display anything, jerky or 
otherwise. Today, with lots of video displays available, byters 
can afford to be choosy. One of the features I’m looking for in 
my next video display is linear scrolling, where the whole page 
moves up one raster line at a time. Has anybody seen one? 

Jim Day 77-Jul-l5 


Dear Sirs: 77-Jul-25 

I read with interest the article by Erik T. Mueller in your 
April issue on a version of APL for 8080s. APL is a fine lan¬ 
guage which I believe will eventually overcome some of the 
BASIC myopia which thus far pervades the micro-world. To 
have implemented it at all in 5.2K is heroic. 

However, I am critical of some of Mr. Mueller’s design de¬ 
cisions regarding the implementation of the APL functions 
using standard ASCII characters. As most people who have had 
any exposure to APL know, the language uses a special charac¬ 
ter set to represent primitive operators. The problem of 
finding a suitable representation of these primitives in the stan¬ 
dard character set available on most terminals is not easy to 
solve. Mr. Mueller’s solution seems to be to try to select the 
ASCII character which is most like the normal APL character 
where possible. This works fine for things like + , , and a 

few others, but there just aren’t enough characters to go 
around. So he ends up using things like X for absolute value 
(where APL uses J_) and _\ for the iota function (where APL 
uses i). Now the problem with doing this is that APL (full 
APL) uses X and _\ for other primitives (e.g. X for the factorial 
function) which introduces a serious imcompatability between 
his APL and the more standard versions of the language. 

This approach is poor human factors and needlessly con¬ 
fusing. Granted that potential APL users in the micro-world 
should not have to wait for special hardware to draw all those 
funny Greek characters in order to reap the benefits of APL. 
But there is a better approach that is available now without in¬ 
troducing confusion; Mr. Mueller uses it for one of his func¬ 
tions (the RHO function). That approach is to use the names 
of the APL primitives to call them where they cannot be 
faithfully represented in the standard ASCII character set. 
Thus use iota for the APL l_ function, abs for the APL X 
function, etc. This approach has the advantage of not causing 
an APL symbol to mean one thing on one system and another 
on a different system. Admittedly, some of the economy of 
syntax unique to APL is lost (though none of the power of 
expression ...), but a side benefit of legibility to the novice 
exists since an APL program is readable without memorizing a 
long list of funny symbols. Indeed many novice APL pro¬ 
grammers begin by writing their own named functions using 
APL primitives so that they can write, for example, times 
when they mean to multiply instead of APL’s x^. 

So I suggest that Mr. Mueller re-evaluate his design and do 
us all a favor by helping to make APL available to the micro¬ 
world without confusing those who already have used (or will 
in the future use) APL on a system that supports the special 
characters. 

Yours Truly, 

Dr. John O. Aikin The Evergreen State College 

Dir. of Computer Services Olympia, WA 98505 


2311 DISC DRIVES FOR $350 

Paul Perez (415-961-9146), a San Francisco Bay Area 
dealer in used computer equipment, announced at the July 
20th Homebrew Computer Club meeting that he has dozens of 
properly functioning 2311-type hard-disc drives available for 
$350 (presumably plus shipping). Several people in both 
northern and southern California (and presumably elsewhere) 
are currently completing a controller for these l l A megabyte 
drives that will plug into a S-100 bus. 


HOW BOUT IT? 

[Post Card] Received: 77 Jun 15 

How about a series on software security, i.e. how to protect 
your system from unscrupulous programmers, etc. This would, 
of course, be more relevant to the business use of computers, 
but an in-depth introduction, with references would familiar¬ 
ize us with what to look for in hardware/software should we 
shift into the business environment. 

J. Sikorski 
Box 574 NUMS 
303 E. Chicago 
Chicago, IL 60611 


^ ^ k|j 4|>4|a 


03 45 
3 -C 

4-> H 


3 C 4J W O 

5 -rl CO -rl 4-5 

CTJ O 

7 4-5 0 4-5 

4 C 0 3 
O 3 0 

J O 4-5 "O -C 
4 JO o 
3 4-5 bo t-. 

- JO -H CX C 
J b£i E X. 

: -h 43 to 

E JO 0) 

3 43 4-5 rH 

) 4.5 rH 

4 CO CX X-. 

3 JO E H 4-5 
3 4-5 CO (0 
X • 3 
Or O CO E 

5 4-5 O' 

3 4-> 

. 05 LOO t. 

4 to o 05 
< W <M C 

03 C 3 

O CO o 

X JO 

O 45 4-5 

•H i—I 45 
•DH t. L 

3 a 45 O 

• 03 E JO 4-5 

i O 4-> CO 

4 C O CD 

.03 X 43 

5 -C 
X >, C CO 4-5 

> JO 03 X 

■ 3 L Ct * 
X 4-> rH 45 
CO L. rH JX 

X O O 03 

4 45 Cju ”0 3 

4 E 4-> 

5 0 TO 9- 

) 4-5 O 45 O 

CO OO L. CO 

3 0-0 

) OCO C CO 

* 3 C 

O 45 £ O 

4-5 4-5 -r4 

5 41 4-5 

> C H rH 03 

5 -rl a 03 C5 
1 03 E X -rl 
I rH o 45 rH 

5 cx o > cx 

. X 4) cx 

X 4) 03 CO 03 


45 45 * TO 

JO 2* CO -H 
4J 03 X 03 
E 4) L 

i—I 9-t 


03 


JO_ 

3 4-5 E 


•h oi *5 a 


O E 45 CO 


45 JO 
45 Uj 


4-5 o I *-5 03 


-O 45 JO 

> 4-5 

) JC 45 45 
C3 W X O 
4.5 O 03 -H 
(OH J L 

E a 4.5 45 

9_ 4-5 

woo 

te* -H W W 
O 45 

CT> TJ 

45 W O 
45 E W 
45 C 45 
-C 4-5 W 
4-5 CO W *H 
X >» 


•H 4-5 
-C 03 
CL 3 

O 4-5 


CX W 

>»rH 4-5 

rH 45 O 
C -C 3 
O -O 


3 UlZ* OCX 
O C -rH 4-5 03 CX 


45 45 W 
E JC 03 05 
O 4_> jC jC 
4-5 o 4 J 
WT3 X 
3 C 3 "O 

o m ac 


H LH 
O O JO 
w TO 


w 


03 


03 45 

O JO W 
TO 4-5 J- 
45 X 43 
O 45 O rH 
C bO 3 -O 
•H 03 E 
> 45 

CO w 

O 03 4-5 W 
O CL-r-t 03 


C 45 W 
01 X 45 

o co -o 

3 -H 
4-5 4-5 3 
•HX Uj 


w w 

4-> 45 

03 45 rH 
SZ SZ 03 
4-5 E 4 W 


45 X 4-5 45 "O 
X O C > C 


O O 
•H 
O W 
•H 01 
CX 03 

o 

4-5 

CO 
45 E— 
SZ M 
4-5 2c 


O TO CX 4-5 C 
W rH 45 CO 
•H TO TO O 
>> 3 C C 
-O JO -H 45 


X 45 SZ -H 


4-5 3 CL rH 03 


_ _ 45 4-5 
C 4-5 03 SZ -H C 
O Xh CO JO CO 


45 X : 
O O 1 

X 4-5 i 


X W : 
JO 45 
4-5 4-5 r 


JO 0) 
E 
3 4.5 
O J-5 


T3 45 H O 3 


* 4.5 E 

• W JO 4J 
I 45 4-5 CO 

JO -rl -H 
X >» 

I c o SZ 

I 3 bO JO • 

i O H o J2 

< C 03 

X. 4-5 

I O X 111 

I O O JO 45 

>,4_ 4-5 SZ 
4-5 

■ c w x 

I -H «C O 


a. h X) c/j 


3 


45 E 
> O 
03 E-* 


3 45 . 
O X J 
>4 03 •, 
3 



W -X 
H 0 4-5 0 
0 TJ O *H 
H 4-5 C 3 CX 

5 -H 45 TO 

: > o o 

9 X. 4.5 

: 4-5 45 cx 
H W X, 45 
4 -H 03 45 C 
>.3X0 
3 JO 4-5 3 45 
JO 9-4 4-5 E 
3 0 0 3 0 
t £ W X W 


^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ •T* ^ ^ Jp rp rj> 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 11 


251 



A STORY OF TRAFFIC LIGHTS, or: 

A BASIC-PROGRAM TO PLAY 
THE GAME OF LIFE 

R. Broucke 

The game of life is a solitaire game that consists in watching 
the evaluation of a population of cells on a checker board or 
better yet on the screen of a T.V. set connected to your com¬ 
puter. The game was invented in 1970 by Cambridge Mathe¬ 
matician John Conway and popularized by Martin Gardner in 
Scientific American. The whole game is ruled by three very 
simple genetic laws that define the survival, death and birth 
of the cells at each generation. 

1. Cells with two or three neighbors survive. 

2. Cells with less than two neighbors die because of lone¬ 
liness. Cells with more than three neighbors die because 
of overpopulation. 

3. A new cell is born in each empty space with exactly 
three live neighbors. 

The diagonals as well as the horizontal and vertical rows are 
used to count the number of neighbors. 

We will here describe very briefly our program written in 
MITS-BASIC for the ALTAIR-computer. It uses a Video 
output system to display the cells on a T.V. screen, (black = a 
cell and white = an empty space). It could be used with several 
of the existing video-systems, but we make extensive usage of 
the PEEK and POKE instructions of MITS-BASIC. All the 
graphic displays are performed in BASIC and no machine lan¬ 
guage software is used at all. 

Our program is an adaptation of another program by 
Whipple and Arnold that was published in Dr. Dobb’s Journal 
in January 1976. The listing is given below. The reader will 
have no difficulty adapting it to his own need and taste. Our 
program uses a board of 16 by 32. It starts with random initial 
conditions using the BASIC function RND to generate a ran¬ 
dom number between 0 and 1. We use an input number NI 
(see statement 105) to change the density of the initial popula¬ 
tion. NI should be anywhere from 0 to 1 and can be consid¬ 
ered as the initial percentage of occupation of the 16x32 . 
spaces. A one in the matrix G(or H) of the program corre¬ 
sponds to the presence of a cell while a zero is an empty 
space. The function INT(RND(1)+NI) determines the 0 or 1 
to be stored in G, (statement 120). The statements 126 to 

129 make the inital population matrix symmetric with respect 
to both the norizontal and vertical axes. The four statements 

130 to 152 display the complete population on the screen. 
The statements 155 to 300 compute the new population 
(matrix H) according to the genetic laws. Finally, the last 
statements 310 to 330 move the matrix H back to the matrix 
G. The number 31744 (=31*210) that is seen at several places 
in the program is the initial address of our video board. This 

is the last IK of memory bloc that can be accessed with PEEK 
and POKE in the 8K-BASIC, (3 IK to 32K). Our machine has 
12K of RAM-memory. 

The above program has the only pupose of producing a 
pleasant-looking display on the T.V. screen. The user should 
also modify it to play a game which starts with a given simple 
input population. As an example, let us mention that the 
following seven initial populations will survive for several hun¬ 
dred’s of generations before coming to some end: 

• •• • • ••••••• 

•• • • ••• ••• • •• ••• 

• ••• • • ••• ••• • • • 


It is known that several populations end with a stable pat¬ 
tern such as the bloc, the tub, the beehive, the pond, the boat, 
the ship, the barge, the snake, and so on. Some other popula¬ 
tions end with an alternating pattern such as the blinker: 


or the traffic lights which are composed of four blinkers: 

• * • 

• • 

• • 

• • 

• • • 


The traffic lights are a very familiar terminal configura¬ 
tion in the game of life. In the following figure we show 16 
populations which are all connected to each other and which 
end with the traffic lights, showing that computers can be and 
should be fun! 



• •• 


• •• 


A 

• < 

i 

»• « 

i 

• •• 

• •• 

i 

m 

• • 
• •• 

I 


• • 


0 0 
000 

• •• 

' • 

0 


*** 
’0 0 
0 0 


i 


000 
0 0 
ft 00 


• • 

■0 

0 0 


t t 
• • • 


00 0 
0 


0 00 
00 0 
0 0 0 


0 

0 


0 

0 00 
00 0 
0 0 0 
0 


000 000 

0 

t 

000 

0 0 

0 0 

• 0 

000 

t 

• •• 

• • • 

••I ••• 

• • • 

• ft 0 

t 

«•« 

• » 

•—>• ft • 

• • 

0 00 


continued on page 19 


Page 12 

252 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 



CONVERSIONS BETWEEN OCTAL 
AND HEXADECIMAL 

by R. Broucke 

Some confusion exists among the small computer users be¬ 
cause of the different systems of notations in programming. 

Not only is there a serious confusion concerning Mnemonics 
in assembly language programming but also in machine lan¬ 
guage programming where two systems are in wide usage: 
octal and hexadecimal. For this reason we want to show here 
a few fonnulas and tables to convert between octal and hexa¬ 
decimal. Of course, if we examine the address lights on an Al- 
tair computer, for instance, it is easy to convert mentally be¬ 
tween hex and octal, by just associating the lights in groups 
of four or in groups of three. Also, it is not difficult to con¬ 
vert first from octal to decimal, for instance and then from 
decimal to hex. Many simple rules are well known to convert 
to and from decimal. However, we will show here a few simple 
fonnulas that can be easily programmed in BASIC or used in 
the.form of Tables for the direct conversion between hex and 
octal. 

In the octal system the digits are 0, 1,2,3,4,5,6 and 7 
while in the hexadecimal system the best known notations 
represents the 16 digits by the 10 decimal digits, 0 to 9 fol¬ 
lowed by the first six letters of the alphabet, A, B, C, D, E, F 
stand for 10, 11, 12, 13, 14 and 15. Both the octal and hexa¬ 
decimal systems are well suited for microcomputers such as 
ALTAIR and IMSAI or any computer with a one-byte word 
(8-bits) and a two-byte address (16 bits). An octal digit is a 
group of three binary bits (0 to 7) while a hexadecimal digit 
is a group of four binary bits (0 to 15). We represent a byte 
(0 to 255) in octal by three digits, a 2 aj aQ, and in hexadec¬ 
imal by two hex digits h, hg. 

Example: 255 (decimal) = 377 (octal) = FF (hex). 

In general we use the formulas: 

a 2 a i a© = a 2 x 64 + a| x 8 + a Q ; (aj S < 7), 
hj hg = hj x 16 + hg ;(hj X < 15). 

Example: The address lights on my Altair show the octal 
number 132472. What is the Hex equivalent? We divide this 
number in two groups: 13 and 2472. The octal 13 is a Hex B. 
We will learn later that 2472 (octal) can be converted directly 
to 53A hex. The correct hex address displayed on the lights is 
thus B53A. 

As was said above we show two methods of converting 
without actually writing out the binary representation of the 
numbers, the first with some small formulas and the second 
with Tables. Let the number be represented in octal by a 2 a-> 
a j aQ and in hex by h 2 hj hg, with the definition, 

a 3 a 2 a l a 0 = a 3 x 512 + a 2 x 64 + a l x 8 + a 0 ; ( a i ( 7 )> 
I 12 hj ho = h 2 x 256 + h j x 16 + hg; (h| s < 15) 

When the four octal digits a^ a 2 a, ag are given, the three 
hex digits can be computed with the formulas: 


(19/4) = 4). Also REM represents a simple function: the 
remainder of the integer division, such as REM (19/4) = 3. The 
function REM (N/M) can be coded in BASIC by a statement 
such as REM = N - M * INT(N/M). 

Similar fonnulas can be written for computing a 2 a 2 a j ag 
when h-> h j hg are given. They are- 

ag = REM (hg/8) , 

a! = INT (hg/8) + 2 REM (h j /4) , 

a 2 = INT (hj/4) + 4 REM (h 2 /2), 

a 3 = INT (h 2 /2). 

As an example we can see that FAC (Hex) = 7654 (octal), 
because h 2 = F, h j = A, hg = C and also 
a 3 = 7, a 2 = 6, ai = 5 and ag = 4. The same results can be 
obtained with the use of the seven little tables below. 
There is one table for each of the four octal digits and each of 
the three hex digits. 

To find Slq : 




To find : 


N \''2 

0, 2, 4, 6 

8, A, C, S 

1, 3, 5, 7 

9, B, D, F 

0, 1, 2, 3 

0 

4 

4, 5, 6, 7 

1 

5 

8, 9, A, B 

2 

6 

C, D, 3, ? 

3 

7 


hg = ag + 8 REM (aj/2), 

hj = INT( ai /2) + 4 REM (a 2 /4), 

h 2 = INT(a 2 /4) + 2 a 3 . 

In these formulas, INT indicates a standard function in 
BASIC: the integer division or quotient (for instance INT 


To find a- 


% 


II 

<\J 

rC 

0 

1 

2 

3 

4 

5 

6 

7 

8 

9 

A 

B 

C 

D 

E 

_ a 3 _=_ 

0 

_ 

1 

2 

3 

4 

5 

6 

7 


June/July, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 13 


253 







TDL SOFTWARE FOR DIGITAL GROUP Z-80’s 

News Release Received: 77-Jul-20 

MICRO COM, a micro software specialty company, has an¬ 
nounced the acquisition of a software licensing agreement 
from TECHNICAL DESIGN LABS (TDL). The software, avail¬ 
able now, will be released in a format compatible with 
DIGITAL GROUP Z-80 hardware only. Software implementa¬ 
tion has been achieved with user-oriented I/O drivers imple¬ 
mented on Digital Group hardware. 

There are presently six software packages which are being 
offered. These packages are: 

1) ZAPPLE BASIC - 8K 

2) SUPER BASIC - 12K 

3) TEXT EDITOR - 3K 

4) WORD PROCESSOR - 3K 

5) MACRO ASSEMBLER - 8K 

6) SYSTEM MONITOR - 2K 

Future TDL software releases, including the soon to be an¬ 
nounced FORTRAN IV compiler, will also be offered. The 
software will be similar in price to that offered by TDL. For 
further details and pricing information write: 

MICRO COM Inc. 

P.O.B. 4069 

Pompano Beach, FL 33063 


To find h Q : 


a u\ 

0 

1 

2 

3 

4 

5 

6 

7 

o, 2 

4, 6 

0 

1 

2 

3 

4 

5 

6 

7 

1, 3 

5, 7 

8 

9 

A 

B 

C 

D 

_ 

E 

P 


To find • 


\*2-> 

8i l\ 

0 

4 

— 

1 

5 

2 

6 

3 

7 

0, 1 

0 

4 

8 

C 

2, 3 

1 

5 

9 

Q 

4, 5 

2 

6 

A 

E 

6, 7 

3 

7 

3 

T, 

- 


To find h 2 : 


ss 


■ 

3 

4 

5 

6 

B 

n 

0 

Efl 

6 


A 

C 

E 

D 

D 

1 

l 

3 [ 5 

1 

\ 

I 

9 

B 

D 

P 


FOR FREE: REPLACE YOUR 
BAUDOT TTY WITH AN ASCII TTY 

For no more than the cost of shipping, you can probably 
replace your functioning Baudot Teletype with an ASCII ma¬ 
chine — no hidden gotchas. It seems that there is a nationwide 
network set up for communication among the deaf, which has 
standardized on usage of the old (cheap) Baudot TTY’s. Now 
that the hobbyists are grabbing up those old machines, they 
have come to be in short supply — a sad circumstance, indeed, 
since those using the DEAFNET want and need those Baudot 
machines. 

A solution is at hand, however, that should please everyone 
involved. Some people involved with the DEAFNET have ob¬ 
tained a number of ASCII terminals — in fully finctional con¬ 
dition - that they will trade for Baudot machines. 

For more details, contact Dave Fylstra, 415-326- 
6200x2816. (Dave is a researcher for Stanford Research In¬ 
stitute in Menlo Park, CA, is an active hobbyist, well known 
among S.F. Bay Area computer hackers, and is assisting in ar¬ 
ranging these trades strictly as a service for users of the 
DEAFNET. No money is involved and no financial profit ac¬ 
crues to anyone. Considerable profit, however, in the form of 
good will and good feelings, is available to everyone involved.) 


OSI OFFERS BASIC COMPUTER FOR S298 (PLUS 
TERMINAL & POWER SUPPLY) 

News Release 

Ohio Scientific’s new Model 500 CPU board can be used as a stand¬ 
alone computer or as the CPU in a larger system. The board accepts 8K 
of ROM, 4K of RAM, 750 bytes of PROM, an ACIA based serial port, 
a 6502 processor, and full buffering for expansion! 

The Model 500 is available completely assembled with 8K BASIC in 
ROM for $298.00. By adding a terminal and power supply, the user has 
a complete system which will accept up to 200 lines of BASIC program 
without expansion. 

The Model 500 is software and hardware compatible with Ohio 
Scientific's 400 Series kits and Challenger products, thus, allowing ex¬ 
pansion to a large system. 

The board is available, enclosed with power supply, as the Model 
500-1, and is available in an 8-slot Challenger case as the Model 500-8. 


GENERAL PURPOSE PROTOTYPING BOARD 
FOR SI70 


News Release 

Electronic Product Associates, Inc., announces the availability of a 
new Genreal Purpose Prototyping board for use in the Micro-68 Micro¬ 
processor systems. The 8" x 14.8” (20.32cm x 37.59cm) GP-2 board is 
exorcisor bus compatible and has complete bus buffering already estab¬ 
lished on-board with 8833 driver/receivers. The GP-2 board contains 
Vcc and ground busing, 3000 holes worth of blank dip patterns for 
thirty-five 24, 40 or 42 pin dip packages, or 107 14 or 16 pin dip 
packages. Price is $170.00 and they are available from stock. 

For additional details contact: 

Patti Neumann, Vice President 
Electronic Product Associates, Inc. 

1157 Vega Street 
San Diego, CA 92110 



Page 14 


Dr. Dobb's Journal of Computer Calisthenics 8< Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


254 



























SCHDL: A BASIC-coded ‘DAILY REMINDER’ 
FOR HOME AND OFFICE USE 


Bob Moody and Steve Williams 
Byte of Palo Alto - A Computer Store 
2233 El Camino Real 
Palo Alto, CA 94306 

(415)327-8080 77 Jun 8 

Over the course of a year owning a computer store, I have 
come across a tremendous amount of software, some good 
and some not so good. The question that is asked of me a 
great deal is - now that I have this computer, what practi¬ 
cal use can I put it to. So we at Byte of Palo Alto will be 
submitting a program a month to try and satisfy the need 
for useful applications for the home and office. 


5BO W = 72 

650 KS ■ \ L% =C Hrti ( 10 > 

HUM 


1: INITIALIZF. A FILE# emiSrLAY MONTH# 3:EXIT 1 

FILE MAME7DATA 

NAME OH MONTH?JULY 

YEAR?1977 

NUMBER OF DAYS731 

DAY OF WEEK OF FIRST DAY?6 


1lIN ITIALIZE A 

FILE# 2:DISPLAY 

MONTH# 3:EXIT 2 





ENTER 

FILE 

NAME: DATA 










JULY 1977 





S 



M T 

V T 

F 


S 


131 



1 

! 

! 

! ! 

! ! 

! 1 

! 1 

1 

! 

! 2 
! 

1 


! 

! 

! 

! 3 


! 4 

I 5 

1 

! 

16 ! 7 

! ! 

! 1 

! 8 

1 

! 

1 9 
! 

! 


! 

1 

! 

! 10 


! 1 1 

1 12 
! 

I 

!13 114 

1 ! 

! ! 

I 15 

1 

! 

! 16 
! 

! 


! 

! 

! 

I 17 


! 18 

! 19 

1 

! 

120 121 

1 ! 

! ! 

122 

! 

! 

123 

! 

1 


! 

I 

! 

124 


! 25 

126 

1 

I 

!27 !28 

! ! 

! 1 

129 

! 

! 

! 30 

I 

! 


! 

1 

! 

ENTER 

DAY I 

5 

MESSAGE* DINNER 

JAN L-7:40 





ENTEh 

DAY: 

8 

MESSAGE: DEN- 

TIST 3PM 





ENTER 

DAY! 

14 

MESSAGE: JUNE 

DR DOBB'S COMES 





ENTF.K 

DAY: 

21 

MESSAGE: MEET 

SALLY FOR LUNCH 





ENTER 

DAY: 

24 

MESSAGE: MF.F.T 

SUSIE FOR LUNCH 





ENTER 

DAY: 

27 

MESSAGE: MEET 

SALLY'S LAWYER 





ENTEH 

DAY: 

0 







1 s INITIALIZE A 

FILE# 2:DISPLAY 

MONTH# 31 EXIT 2 





ENTER 

FILE 

NAME: DATA 










JULY 1977 








M T 

V T 

F 


S 


131 

1 

1 



1 

1 

I 

1 ! 

1 ! 

! ! 

I 1 
! 

! 

! 2 
! 

! 



! 3 


! 4 

1 5 DINNER! 6 ! 7 

I 8 DEN- 

! 9 



1 

! 



! JAN 7:40! ! 

! ! ! 

! T I ST 3PM 
! 

! 

! 



! 10 


I 1 1 

I 12 

113 !14 JUNE 

! 15 

1 16 



I 



1 

! !DR DOPE 

S! 

! 



I 



! 

! 1 COMES 

! 

! 



117 


! 18 

! 19 

!20 !21 MEET 

122 

! 23 



! 



! 

I ! SALLY FOR! 

! 



1 



! 

! ! LUNCH 

! 

! 



124 MEET 

!25 

! 26 

!27 MEET !28 

129 

! 30 



IS US IE FOR! 

! 

!SALLY'S ! 

1 

! 



! LUNCH 

! 

! 

!LAWYER ! 

! 

! 




ENTER DAYl 0 

l:INITIALIZE A FILE# 2:DISPLAY MONTH, 3*EXIT 3 

STOP IN LINE 870 

READY 


*G0 BASIC 


READY 

LOAD SCHDL 

READY 
NULL 1 
READY 
LIST 


100 
110 
120 
130 
140 
150 
160 
170 
160 
190 
200 
210 
220 
230 
240 
250 
260 
270 
280 
290 
300 
310 
320 
330 
340 
350 
360 
370 
380 
390 
400 
410 
420 
430 
440 
450 
4 60 
470 
480 
490 
500 
510 
520 
530 
540 
550 
560 
570 
580 
590 
600 
610 
620 
630 
640 
650 
660 
670 
680 
690 
700 
710 
720 
730 
740 
750 
760 
770 
780 
790 
600 
810 
820 
830 
840 
850 
860 
870 
880 


REM******************************************************* 
REM SCHEDULE * 
REM STEVE WILLIAMS * 
HEM MAY 27 #197 7 * 
REM******************************************************* 


REM THIS PROGRAM WAS DESIGNED By 

REM BOB MOODY# AND WHITT EN BY STEVE WILLIAMS OF THE BYTE 
HEM SHOP OF PALO ALTO. IT WAS WRITTEN ON AN IMSAI 24K 
REM SYSTEM WITH A NORTH STAR MINI-FLOPPY DISK# IN NORTH 
REM STAR'S EXTENDED DISK BASIC. IN WRITING IT# I HAVE# 

REM HOWEVER# DECIDED TO NOT USE SEVERAL OF NORTH STAR'S 
REM BEST FEATURES# IN ORDER TO PROVIDE FLEXIBILITY FOR 
REM HOBBYISTS NOT BLESSED WITH A DISK. IT CAN BE MODIFIED 
REM TO RUN WITH ANY TERMINAL WIDTH# AND TO USE ANY CONTROL 
HEM CHARACTER (CLEAR# CLEAR LINE) COMBINATION# OR NONE. 

HEM SCHEDULE PROVIDES A 

HEM MEANS OF STORING AN ENTIRE MONTH'S SET OF MESSAGES 
HEM FOR RECALL ONTO A TERMINAL OR TELETYPE. 

HEM SEVERAL FUNNY THINGS HAVE 

HEM BEEN DONE TO ACCOMODATE THE NORTH-STAR DISK BASIC. 

REM THESE ARE CONCERNED WITH THE LARGE STRING ARRAY 
HEM THAT CONTAINS ALL OF THE MESSAGES FOR THE MONTH 
HEM THAT IS CURRENTLY BEING DISPLAYED# THE FORMATTED 
REM OUTPUT# AND DISK I/O. 

HEM CONCERNING THE FORMER# THE 

REM EXPRESSION 'AS(I#J)' IS EQUIVALENT TO THE I'TH THROUGH 
REM J* TH CHARACTERS OF A$. THEREFORE# THE SUBSCRIPT 
REM '((1-1)*MO+IO#(1-1)*MO+JO)' INDICATES THE IO'TH THROUGH 
HEM JO'TH CHARACTERS OF THE MESSAGE FOR DAY I . HENCE# 

REM THE EXPRESSIONS IN LINES 1160 THROUGH 1230 ACCESS THE 
REM PORTIONS OF THE MESSAGE STRING THAT PERTAIN TO 
REM EACH DAY. 

REM THE ONLY FORMATTED OUTPUT 

REM THAT 1 HAVE USED IS FOR THE DAY NUMBERS THAT APPEAR 
REM IN THE UPPER-LEFT-HAND CORNER OF THE DAY SQUARE. WHEN 

RFM ' I *21#- ' OCCURS# ALL OF THE NUMERICAL PARAMETERS 

REM IN THE PRINT STATEMENT WILL BE TRUNCATED AND PRINTED# 

REM RIGHT-JUSTIFIED IN A 2-CHAHACTEH FIELD. (THE EXCLAMATION 
REM POINT IS 'SHORTHAND' FOR 'PRINT' IN NORTHSTAH BASIC.) 

REM I HAVE MADE THE ENTIRE SET 

REM OF MESSAGES FOR ONE MONTH RESIDENT IN ON-LINE MEMORY 
REM AT THE TIME THAT THE CALENDAR IS PRINTING. THIS IS SO 
REM THAT PERSONS USING CASSETTE TAPE FOR OFF-LINE STORAGE 
REM MAY EASILY LOAD THE DATA IN ONE OPERATION# AND SAVE IT 
REM AS EASILY. IF THE EXTENSIVE RANDOM-ACCESS DISK I/O 
REM CAPABILITIES OF NORTH STAR BASIC WERE USED# IT WOULD 
HEM PRECLUDE THE USE OF CASSETTE STORAGE. 

REM W=MAX LENGTH OF LINE 
W = 72 

CO-INT((W-8)/7 ) S M0«3*C0-3 


DIM DS(31*M0)#BS(M0)#B1S(M0)#WS(7) 

Bl $ = " 

WS«"SMTWTFS" 

REM INITIALIZE THE FOLLOWING STRINGS FOR CLEAR AND 
REM CLEAR LINE FOR YOUR HARDWARE CONFIGURATION. 

KS="CLR SCR" \ L$="CLR LIN" 

!KS#CHRS(0) 

INPUT "1:INITIALIZE A FILE# 2IDISPLAY MONTH, 3*EXIT "#F 
ON F GOTO 710,780,860 

REM "MS:NAME OF MONTH# YI YEAH# FlDAY OF WEEK OF FIRST DAY" 
REM "D* i OF DAYS" 

REM INITIALIZE A FILE TO DISPLAY ALL BLANKS 
INPUT "FILE NAME?"#AS \ OPEN #0#AS \ DS»"" 

FOR 1=1 TO 31 \ DS = DS + B1S \ NEXT 

INPUT "NAME OF MONTH?"#MS \ INPUT "YEAR?"#Y 

INPUT "NUMBER OF DAYS?"#D 

INPUT "DAY OF WEEK OF FIRST DAY?"# F 

WRITE #0#M$#Y#F#D#DS \ CLOSE #0 \ GOTO 660 

REM DISPLAY MESSAGES FROM A FILE 

INPUT "ENTER FILE NAME* "#AS \ OPEN #0#AS 

READ #0#MS#Y#F#D#DS \ CLOSE #0 

F9*0 

GOSUB 880 
IF F9«0 THEN 660 

OPEN #0#AS \ WRITE #0#MS#Y#F#D#DS \ CLOSE #0 
GOTO 660 
STOP 

REM SUBROUTINE REFRESHES MONTH SCREEN 
IKS # TAB((W-LEN(M$)-5)/2)#MS#Y 


& 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 15 


255 

























CLASSY 8080 CODE CARD FROM TYCHON 

Tychon Incorporated is pleased to announce its 8080 Hex 
Code Card. The code card is a slide rule-like aid for program¬ 
ming and debugging 8080 software. It contains all the mne¬ 
monics and their corresponding hexadecimal codes. The in¬ 
structions are all color coded to indicate which flags are af¬ 
fected during execution. The pocket sized card measures 6.5 
by 3 inches and it provides the instructions in a neat, logical 
format for quick reference. 

The back side of the card is printed with an ASCII code 
chart for all 128 characters plus the 8080 status word and reg¬ 
ister pair codes. 

Delivery of the 8080 Hex Code Card is immediate and the 
price is $2.95 postpaid. Quantity discounts start at ten units 
and custom printing is also available. 

For further information write or call C.A. Titus at Tychon, 
Inc., P.O. Box 242, Blacksburg, VA 24060, (703) 951-9030. 



b90 FOR 1=1 TO 7 \ ! TAB< (CO + 1 >* I-CO/2)#WS( I* I > # \ NEXT \ ! 

900 GOSUB 1160 

910 REM PhINT FIRST WEEK 

920 FOR K=1 TO 3 \ !"!"# \ IF D+F<36 THEM 940 \ FOR I=37“F TO D 
930 GOSUB 1140 \ NEXT 

940 GOSUB 1240 \ FOR 1=1 TO 8-F \ GOSUB 1140 \ NEXT \ ! \ NF.XT 
950 GOSUB 1160 

960 REM RHINT SECOND# THIRD# AND FOURTH WEEKS 
970 FOR J=9-F TO 23-F STEP 7 \ FOR K=1 TO 3 
980 !*'!"# \ FOR I = J TO J+6 

990 GOSUB 1140 \ NEXT \ ! \ NEXT \ GOSUB 1160 \ NEXT 
1000 REM PRINT FIFTH AND LAST WEEK 
1010 FOR K=1 TO 3 \ I"I"# 

1020 IF D+F<36 THEN J=D ELSE J=36-F \ FOR I=30-F TO J 
1030 GOSUB 1140 \ NEXT \ FOR I=D+F TO 35 
1040 !B1T(1#C0 )#"!"# \ NEXT \ ! \ NEXT 
1050 GOSUB 1160 

1060 REM GET MFSSAGES TO PUT IN THE CALENDER 

1070 INPUT 1 "ENTER DAY* "#I \ IF I<1 OR I>D THEN RETURN \ F9=1 
1080 INPUT 1 " MESSAGE* "#BS \ !CHRS(13)+LS # 

1090 Bt=B*+Bl$ 

1100 D$ < CI-1 ) *M0 + 1#I *M0) = BS 
1110 GOTO 1070 
1120 RETURN 

1130 REM SUBROUTINE JUMPS TO CORRECT ROUTINE 

1140 ON K GOTO 1180#1200#1220 

1150 REM SUBROUTINE DOES A LINE OF -'S 

1160 FOR 1 = 1 TO 7*C0 + 8 \ !"-"# \ NEXT \ ! \ RETURN 

1170 REM SUBROUTINE PRINTS FIRST LINE OF DAY I 

1180 ! Z2I#I#" "#D$(CI-1)*MO +1# <I-1)*MO+CO-3)#"!"# \ RETURN 

1190 REM SUBROUTINE PRINTS SECOND LINE OF DAY I 

1200 ! DS((1-1>*M0+C0-2#(1-1 )*M0+2*C0-3>#"!"# \ RETURN 

1210 REM SUBROUTINE PRINTS THIRD LINE OF DAY I 

1220 ! D$(<I-1 )*M0+2*C0-2#I*M0)#"!"# \ RETURN 

1230 REM SUBROUTINE PRINTS THE PROPER NUMBER OF BLANK SQUARES 

1240 IF D+F-35<0 THEN J=F-1 ELSE J=35-D 

1250 FOR 1=1 TO J \ (BIS(1#C0)#"I"# \ NEXT 

1260 RETURN 

READY 


Page 16 


$500 LABEL-MAKER SOFTWARE RUNS ON 
NORTH STAR MICROFLOPPYS, 

INCLUDES SORT PKG 

News Release from Tylog Received: 77-Jul-14 

MIAMI, FL.: Tylog Systems is proud to announce the introduction 
of its first microcomputer software package, the Micro-Label System. 

The Micro-Label System is a general purpose mailing label system 
for the creation and maintenance of mailing label lists and other similar 
label applications (such as inventory bin labels, etc.). The system is de¬ 
signed to be run by non-technical personnel. Extensive documentation 
and procedures are provided to facilitate operation of the system. 

The software is designed to run on an 8080 processor using dual 
North Star Computers, Inc. minifloppyTM disk drives and a pin feed or 
tractor feed impact printer. Additions, changes and deletions are 
applied to the master file via CRT. The Micro-Label System permits the 
label files to be printed in more than one sequence. Error editing and 
restart capabilities are also provided. Each master file can hold over 540 
records with multiple files being used for longer lists. 

Tylog warranties the software for 90 days. The warranty includes 
new release updates at no extra charge. Maintenance contracts are avail¬ 
able for post warranty support. The Micro-Label System is also avail¬ 
able as a turnkey package, complete with all hardware. 

Tylog Systems has inventory, accounting, word processing and law¬ 
yer's systems now under development. For details, prices and your 
nearest Tylog dealer write: Tylog Systems, Inc. 

9805 SW 152 Terrace 
Miami, FL 33157 

Description: 

General purpose label print system. 

Programs: 

7 modules: 

Update Module — Add, change and delete to an existing master file 
or create a new file. 

Extract Module — Create a key file by name, zip code or zip and 
name. 

Sort Module — Sort key files. 

Reorganization Module — Reorganize master file and remove 
deleted records. 

Print Module — Print mailing labels. Restart at any record. 

Copy Module — General purpose file copy. 

Read Module — General purpose file read and print. 

Standard File Organization: 

Master File: 

* Fixed length records, randomly placed. 

* Length 120 bytes. 

Last name 15 bytes 

First name and Ml 14 bytes 
Address lines 1 & 2, each line 30 bytes 
City 20 bytes 
State 2 bytes 
Zip code 6 bytes 
Key file: 

* Fixed length records, sequentially placed 

* Length normally 35 bytes (dependent on extract type). 

Standard Sort Keys: 

* Last name, first name 

* Zip code 

* Zip code, last name, first name 
Standard Label Format: 

Any length print line up to 132 columns, 1 to 20 labels across. 
Labels must be spaced one inch from the top of one label to the top 
of the next. Other formats are optional. 

Hardware Required: 

* Microcomputer — 8080 or Z80 with 20 K of memory. 

* Video terminal — 16 lines, 64 char, min.; w/screen clear. 

* Pin or tractor feed printer. 

* Dual North Star Computers, Inc. minifloppy TM disk drives. 
Program Run Times: 

* Update response time — 8 seconds max. 

* Sort time — 30 minutes max. 

* Extract time — 5 minutes max. 

* Reorganization time — 12 minutes max. 

* Print time — a function of printer speed. 

Options: 

* Custom record formats. 

* Custom sorts. 

* Custom label height. 

Other modifications by separate negotiations. 

Software Medium: 

North Star compatible minifloppy TM disk 
Prices: 

Standard Micro-Label System software 
Options — each 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


$500 

$40 

June/July, 1977 


256 






CURVE PLOTTING ON A T V. SCREEN WITH 
THE POLYMORPHICS VIDEO INTERFACE AND 
M1TS BASIC 

by R. Broucke, Associate Professor of Aerospace Engineering, 
University of Texas, Austin, Texas 

1. The Polymorphics Video Interface 

Early in 1976, Polymorphic Systems produced the Video 
Terminal Interface, (VTI), allowing a microcomputer to 
display the content of a kilobyte of memory on a regular 
Video Monitor or even on a regular television set. The VTI is 
a single board which is directly compatible with the 8080- 
based Altair and Imsai Computers as well as the POLY-8080 
marketed by Polymorphics. It contains a read-only-memory 
character generator IC (MCM6571AL) capable of generating 
the 7x9 dot matrix of 192 different characters. Among these 
characters are the regular lower case alphabet, the capitals, the 
greek alphabet, many special signs such as /, t, <=, => and final¬ 
ly 64 special graphic signs. It is our intention here to describe 
the usage of these special signs for displaying curves on the 
T.V. screen. It is not possible with this system to display 
smooth continuous curves as are seen on an oscilloscope, due 
to the fact that only finite size square black-and-white blocs 
are available with the VTI system. Let us thus first say a few 
words about these questions. 

The VTI board is normally available in two versions. The 
so-called minimum version displays 512 bytes of memory 
(four 211 l’s or 911 l’s) on 16 lines of 32 characters. Addition 
of four more 211 l’s allows us to display 16 lines of 64 charac¬ 
ters each. The 64 special graphics signs are composed of six 
black or white blocs, (2° = 64) in a configuration of three 
blocs high and two blocs wide. With a minimum board the 
best resolution that can be obtained is thus 32 x 2 = 64 
blocs horizontally by 16 x 3 = 48 blocs vertically. Let us 
also mention that in terms of television resolution each one 
of these blocs is five dots by five dots. 

The 64 graphic signs are normally numbered from 0 to 
63 (decimal) or from 0 to 77 (octal). For instance, the sign 
in Figure 1 is normally number 25 (octal) or 21 (decimal). 
The sign 0 is all white while 63 is black. In using these signs 
for curve-plotting we will use only six of the 64 available 
signs. They are the six characters that have only a single 
black bloc. Their identification numbers are 1, 2, 4, 10, 20 
and 40 (octal). Let us note that more complicated graphics 
signs can be constructed by logically OR-ing the above six 
signs with each other. This will turn out to be important in our 



40 20 10 A 2 1 octal 

32 16 8 A 2 1 decimal 


2. The Screen Coordinates 



Before a curve can be plotted for a function such as, for 
instance, y = sin(x), it is necessary for the user to define the 
upper and lower limits for both the abscissa x and the ordinate 
y. In other words, we assume the four numbers x m j n , and 
x max ymin> ymax to be gi yen by the user. This defines 
the user’s plotting surface and coordinate system as shown 
in Figure 3. 

It will be convenient to introduce a new coordinate system 
of screen coordinates (x s , y s ) as shown in Figure 4. As we see, 
x s is an integer increasing from 0 to 47 when we move down 
on the screen, while y s is a integer increasing from 0 to 63, 
left to right on the screen. This system is particularly easy 
to use for plotting with the VTI board. We assume here the 
minimum version with 32 characters on a line. The reader 
will have no difficulty adapting our formulas to the 64-char¬ 
acter line (y s from 0 to 127). 

The conversion from the user coordinates (x,y) to the 
screen coordinates (x s , y s ) can be easily performed with the 
formulas 



where INT means that we take the integer part of this number. 
It should be noted that x s and y s are the coordinates of a 
particular black block on the screen, corresponding to a point 
(x,y). Next we transform x s to the line number xj and y s to 
the character number by the formulas 



in consequence of the facts that we have three blocs per line 
and two blocs per character. Finally, we have to determine the 
address in the screen memory of the byte containing tine repre¬ 
sentation of the point (x,y). Let us assume that A 0 is the ad¬ 
dress of the first location of the video memory. This corre¬ 
sponds to the point x s = y s = 0 and is in the upper left comer 
on the screen. In our present system we use A 0 = 31744 (deci¬ 
mal) = 76000 (octal). It is known that A 0 should always be a 
multiple of 2 ^ = 1024. In our case A 0 = 31 * 2 ^. This gives 
us the last one K of memory that can be used with PEEK and 
POKE in the MITS 8K-BASIC language. For any given point 
(x,y), the memory address can then be computed with the for¬ 
mula 

A = A + 64x* + y'. 
o s s 

Note that the constant 64 in the above formula is the same 
constant whether the system has 32 or 64 characters per 
line. 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 17 


257 







3. Selecting the Appropriate Bloc 

Let us now consider the question of choosing the appropri¬ 
ate bloc, among the six shown in Figure 2, corresponding to a 
given point (x,y). First we will determine if a left bloc (octal 
40, 20 or 10) has to be used or a right bloc (octal, 4, 2 or 1), 
according to the ID’s given in Figure 2. We can verify that a 
right or left code a can be computered as follows 

a = y s • 2*(y s /2) = y s (MOD 2). 

When a =0 we have a left bloc, while when a -1 we will have a 
right bloc. Next we have to make the selection between an 
upper, middle or lower bloc according to the code 

/3=x s -3*(x s /3)=x s (MOD 3). 

The values 0, 1 and 2 respectively correspond to the upper, 
middle and lower blocs. The ID number 1,2,4,8,16 or 32 can 
thus be determined as a function of a(=AL) and f?(=BE) with 
the use of three lines of BASIC programming: 

130 ID=4: IF BE=1 THEN ID=2 

140 IF BE=2 THEN ID=1 

150 IF AL=0 THEN ID=INT(8*ID + 0.5). 

The constant 0.5 is added in the last statement in order to 
force the integer value (INT) of a number such as 7.99999 to 
be 8 rather than 7. Let us also note that the above three state¬ 
ments can be replaced by a single statement (which may how¬ 
ever result in slower execution times) such as: 

130 ID=INT (8-7*AL)*2t(2-BE)+0.5) 

or also the following statement 

130 ID=INT(2t(5-3*AL-BE)+0.5). 

As was said above, this single statement may be slightly slower 
due to the presence of the exponent. We again add a quantity 
0.5 before taking the integer part because of the possibility of 
a negative round-off error in the exponent subroutine. 

To put the appropriate block ED on the screen at the 
address A(=AD) we could use a statement such as 

170 POKE AD, ID. 

However, this destroys the five neighboring blocs and is is thus 
better to “OR” the new bloc with whatever is already present: 

170 POKE AD, PEEK(AD) OR ID. 

To do this, one should initially erase the whole screen. This 
can be done with a single line of coding, of the following 
type: 

100 FOR 1=31744 TO 32767: POKE I,0:NEXT I. 


4. Some Examples of Plotting Programs 

To finish this text we display below two short program 
which illustrate all the principles which have been layed 
out in the previous sections. The sample program plots the 
function y=sin(x), (statement 117). The statements 
102 and 103 give the upper and lower limits of x and y: 

XI, X2, Y1 and Y2. The statement 104 determines another 
input number NP which is the number of points to be plotted 
or the vertical resolution on the screen. All the other statements 
have been previously explained. 


100 FOR 1=317*>*l TO 32767 

101 POKE 1,0 : NEXT I 

102 XI =-6:X2=6 

103 Y1=-1 .2:Y2=h-1 .2 
10*1 NP=1 00 

105 DE=(X2-X 1 )/NP 

106 FOR X=X 1 TO X2 STEP DE 
117 Y=SIN(X) 

120 XS=INT(h7*(Y2-Y)/(Y2-Yl)) 

122 YS=INT(6^*(X-X1j/(X2-Xl)) 

12*1 AL=INT(YS-2*INT(YS/2)) 

126 be=int(xs-3*int(xs/3)) 

130 ID=INT(2'!'(5-3*AL-BE) + .5) 

1*10 AD=INT(317*1 *1+6*1 *INT(XS/3) +YS/2) 
150 POKE AD,PEEK(AD) OR ID 
160 NEXT X 

170 end 

In the second program we show how to produce a curve 
from a table of points, rather than a mathematical function 
given by a formula. The points could have been obtained for 
instance as results of experimental measurements, or in any 
other way such as the step-by-step integration of differential 
equations. In the program listing we see that XT is the table 
with abscissa while YT is the table with ordinates. The number 
of points is NP. This is the only input needed for this program. 
It is seen that this program automatically determines the lower 
and upper limits (XI, X2, Yl, Y2) of the data. 

50 DIM XT( 1 00),YT(100) 

55 NP=100 
60 FOR 1=1 TO NP 
65 XT(I)=I 

70 YT(I)=SQR(I) + 10*SIN(i/l0) 

75 NEXT I 

100 FOR I=317li*) TO ^2767 
105 POKE 1,0 : NEXT I 

110 X1=XT(1):X2=XT(1) 

111 Y1=YT(1):Y2=YT(1) 

112 FOR 1=2 TO NP 

113 IF XT(I) < XI THEN Xl=XT(l 

11*1 IF XT(l) > X2 THEN X2=>XT(I 

115 IF YT(l) < Yl THEN Y1=YT(I 

116 IF YT(I) > Y2 THEN Y2=YT(I 

117 NEXT I 

118 FOR 1=1 TO NP 

119 X=XT( I) : Y=YT( I) 

120 XS=INT(*4 7* (Y2-Y) /(Y2-Y1 )) 

122 YS=INt(63*(X-X1)/(X2-X1)) 

12*1 AL=INT (YS -2* INT (YS/2 ) ) 

126 be=int[xs-3*int(X3/^)) 

130 ID=INT (8-7*AL)*2T(2-BE)+.5) 

1 *10 AD=INT (31 7*1 * 1 + 6*1 * INT (XS/ 3 ) +YS/ 2 ) 
150 POKE AD,PEEK(AD) OR ID 
160 NEXT I 
170 END 

5. Conclusions 

We hope having succeeded in showing two points in this 
short text. First of all that the Polymorphic System Video 
Interface is a powerful tool for the display of curves in a large 
number of varied applications. Secondly that the MITS-B ASIC 
language is an extremely flexible programming language for 
the solution of engineering and scientific problems and their 
graphic display with a microcomputer. 


Page 18 Dr. Dobb's Journal of Computer Calisthenics 81 Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


258 



continued from page 12 


6800 CIRCLE MAKER 


DIM G(l5»3l),nf'5,31 ) 

NI=0.<I2 

FOB 1=1 TO 111: FOB J--1 TO 30 
0(1, J)=INT(KND(1)+Nl) 

NEXT J: NEXT T . , , 

FOB 1=0 TO 7: FOB .1=0 TO 1 5 :0 (1,3' - J) “0 (I, J) 

NEXT J: NEXT T , 

FOB J=0 TO 3 1 i FOII I '(1T0 7:0(1 3-1, J) =0( I, J) 

NEXT I:NEXT J 

FOB 1-0 TO 13: FOB , t =0 TO 3' 

AD=INT(3' ' 7, l ’l 1-611 * T i-.l +0.5) 

POKE AD, I NT (53* 5( I, J) '0. r ') 

NEXT J: NEXT T 

FOB 1= 1 TO l'l:FOB J= 1 TO 30 

N-0(T-1 ,J-1 )+0( T, J-1 ) +G(I+1 , J-l )+0(1-1 ,J)+G(I+1 ,J) 
N=C(T-1 ,J+1 j +o{ I,J+1J +0(1+1,J+1)+N 
N=INT(N+0.3; 

IF O(I,.T)=0 THEN 250 
IF N=2 OB N=3 THEN 230 
ll(l,J)=0 

POKE I NV(31T+ T+0.5),0 

GOTO 300 

H(I,J)>1 

GOTO 300 

IF N<>3 THEN 200 

H( I,J)=1 

POKE INT(31 ?llll+61l * I + J+0.5), 03 
GOTO 300 
H(I,J)"0 
NEXT J: NEXT I 


FOB I- 1 TO 1 *1: 
G(I,J)=H(I,J) 
NEXT J:NEXT I 
COTO 155 
END 


FOB J=1 TO 30 


Dear Dr. Dobb, October 25, 1976 

The enclosed subroutine for an M6800 will generate a circle 
of given center and radius on an x-y display (e.g. scope). It 
uses two 8-bit D/A’s connected to a PIA. Points on the “circle” 
are computed by the following algorithm attributed to Marvin 
Minsky in MIT AI Memo No. 239: 

X(N+1) = X(N) + Y(N)/K 
Y(N+1) = Y(N) - X(N+1)/K 
An interesting discussion of this and a few other nifty 
graphing algorithms can be found in an article by B.K.P. Horn, 
“Circle Generators for Display Devices”, Computer Graphics 
and Image Processing 5, 280-288 (1976). If one were to call 
this subroutine repeatedly, each time specifying a new center, 
the circle would appear to move. Then, with only a minimal 
amount of cleverness, one might invent the game of Pong. 

Also, for anyone interested, I have written a PDP-11 cross 
assembler for the M6800. It’s written in MACRO-11 which 
produces octal listings; however, I have a FORTRAN program 
which will convert LST files into hex format (see enclosed 
listing). Copies will be free (please pay postage) unless demand 
is too great. 

David Hudson 
3513 Wabash Ave. 

Granite City, IL 62040 

P.S. Things I would like to see: 

LISP for M6800 

Two dimensional FFT for M6800 
Articles on machine vision and robotics 
Information on computer control of model railroads 
Video to digital converter for image processing 


co ifi in 

: d if' if h- 

•-H (S| N (N 

' ill II II +- 

: <1 V V II 

if x > v 

I U O CL 

I Q II II II 


111 LlI UI ui Q 

I- H H CL CL 

> > > O O 

CQ ui Cu 3 3 


> 2 x 

> 

<X O <X 


g g g g g g _Z g 9 £* z '-l? if* z 9 7 if 1 of? f' 1 o fo 

O (N O if' O UJ <E U O Ll UJ -O O N »N I s - ^ -O *£■ h- CO r^- <E ■> CQ <' Q N h. U. O N *N h- h- <■ CO Q <X u -0 U.' O' O O 'N uj sf <1 

9 9 9 9 ® 9 0 9 9 9 9 '- ,:i z ^ Z ^ z* ,:o Z 1:1 Z Z z Z z ^ 9 Z *n •> >n <n in •> m q cn o co m co •> i'o a 


<N CO 'T If' N CO O' O 'N CO in -f' N CO ■> O =-+ (N CO 't li - ' <• CO O' 
,h ^ _ _ **—i — r-. .N M M M W 'N 'N 'N 'N 'N 


N CO «> O iN 

CO CO CO 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 19 


259 



ymbol table 



EPA FLOPPY DISK SYSTEM FEATURES STATUS 
PANEL AND WRITE PROTECT SWITCHES 


News Release Received: 77 Jun 13 

The EPA Micro-68b Floppy Disk System has been updated to 
include a disk status monitoring panel and write protect switches. 
Available in either single ($2495.00) or dual ($3295.00) configurations, 
the Micro-68b disk is complete and includes the interface necessary to 
plug in to either the 6800 exorcisor or the 8080 S-100 bus. The write 
protect switches prevent accidental destruction of valuable files. The 
status panel contains indicators for drive selection, write protection, 
CRC error and disk status. In many applications, it is important to 
visually monitor these functions so that disk activity (or lack thereof) is 
apparent. Housed in a ruggedized, light blue, aluminum cabinet to 
match the Micro-68b computer. Available from stock to two weeks. 

For further information please contact: 

Patti Neumann, Vice President Marketing 
Electronic Product Associates, Inc. 

1157 Vega Street 

San Diego, CA 92110 

(714) 276 8911 ,, 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


260 





DOMPIER PLUS: A “MUSICAL KEYBOARD” 

Bruce Hicks 

Department of Secondary Education 
University of Illinois 

Urbana, Illinois 61801 77 June 20 

Part of my interest in art and music on microcomputers is 
in finding educational uses that require only simple software 
and few peripherals. I was therefore particularly interested in 
Steve Dompier’s music program and modifications to it. (Dr. 
Dobbs, v. 1, (1976): no. 2, pp. 6-7; no. 3, p.6; no. 8, p. 32.) 
his program plays a melody that has been entered by hand into 
memory, using a radio to pick up the.music-modulated rf em¬ 
anating from the computer. 

I describe here a simple extension of Dompier’s program 
which makes a computer act like a piano keyboard plus re¬ 
cording device, so that melodies can be played, recorded in 
the memory and played back. We are finding that this is a val¬ 
uable educational tool in our bag of educational applications 
of microcomputers that we discuss with students and teachers. 

Since a melody is stored as bytes in memory it is easy also 
to store on cassette tape. (Note the great compactness of this 
(primitive) type of audio recording.) It would be possible, us¬ 
ing many unused keycodes, to add editing, recording of more' 
than one melody and easier control of rest and note duration. 
But in view of the many synthesizers and software packages 
available for music production I do not think it is profitable to 
extend Dompier’s program much further. 

Operation 

1. Start program. 

2. Play a melody, using the keyboard keys in the same ar¬ 
rangement as the piano keyboard. The melody is recorded 
automatically. 

3. At the end of the melody type / which is recorded as an 
end-of-melody marker. 

4. Hit any key to play back the melody. To play back again, 
hit any key but RETURN. 

5. Hit RETURN to return to (2) to play a new melody (which 
will overwrite the old one in memory). 

Comments 

The duration of each note or rest (space bar) is fixed by the 
constant at NOTE in the program. If I push a key before a 
note or rest is finished I get a “hold” or legato effect - not a 
convenient way to play complex rhythms but rather fun to do, 
and with some potential for pitch and rhythm training. 

I used the keys QWERTYUI 
ASDFGHJK 
Z X C V B N M , 


Each of the key codes is a relative address in the count table 
and thus points to the proper Dompier note period or count 
in this table in memory. I would be able to play two full oc¬ 
taves with all of the white and black keys by making the ap¬ 
propriate entries in the count table for two rows of keys (a 
row of eight “white” keys, then one of five “black” keys) 
positioned like the white and black keys on a piano board, and 
then similar entries for a second octave using two rows of keys. 

The program is written in IMS 8080 Assembler. 


LIST 

0040 

ORG 22Q0H 


0097 

JMF LI 


0100 

WAIT IN 03 

key input? 

0200 

AN I 02 


0300 

JZ. WAIT 

no 

0400 

IN 02 

key code 

0 450 

AN.L 7FH 


050Q 

MOV B » A 

save in B 

0600 

RET 


0800 

L .1 LX I H r XXX 

tune table 

0900 

MM2 CALL WAIT 


09.1 0 

XCI-IG 

save tune table pointer 

0920 

l. X .1. H » YYY 

0922 

0926 

MOV C»B 

MV I BvOOTT 


1 19 >, o 

BAB B 

count table address 

0940 

MOV By M 

count 

0950 

XU 10 


O’ "0 

MOV M r B 

count to tune table 

• '■*-* -* • 

SIJI 02 FH 

/ 

* -■ * 

JZ L2 

end? 

0990 

CALI. NOTE 

play note 

1000 

I NR 1 

step tune table address 

1005 

JMP MM2 

next key 

1 010 

1. 2 CALL WAIT 

any key to play tune once 

1 020 

1. 3 CALL TUNE 

1 O'M) 

CALL WAIT 


1 . OAO 

MOV rwB 


.1. 050 

OKI ODH 

CR? 

1. 060 

JZ LI 

play next tune 

10/0 

JMF L3 

any other key, repeat tune 

7000 

NOTE MVI D v 40H 

the core of Dompier's program 

:o 1 u 

ill BCR B 

'020 

JNZ 112 


:-0i0 

MOV BvM 


2040 

1. 12 BCR C 


7050 

JkZ LU 


9060 

BCR B 


20/0 

jnz i. j :i 


5000 

TUNE L XI II y XXX 

start of tune 

SO 19 

L2 1. MOV A p M 

get "note" to test 

5020 

CIU. OF EH 

end? 

SOSO 

R 2 

out 

So SO 

CMl .1. NO 1 E 

play it 

v}50 

INK L 

step tune table address 


JMT’ I ..21 

ENB 

next note 


Bruce Hicks 

Department of Secondary Education 
University of Illinois 
Urbana, Illinois 61801 


for three octaves of white keys (key of C). The data for one 
row of keys is shown in Table I. 


keyboard keys 

Z 

X 

C 

V 

B 

N 

M 

9 

space 

/ 


ASCII keycodes 

5A 

58 

43 

56 

42 

4E 

4D 

2C 

20 

2F 

H 

notes (low octave) 

C 

D 

E 

F 

G 

A 

B 

C 




counts* (proportional 
to note periods) 

AA 

98 

89 

80 

72 

66 

5A 

55 

02 

FF 

H 

* Entries in count table 













June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 21 


261 





PERMANENT SOLUTION TO MISSING SP AND 
PSW DEFINITIONS IN PTC SYS 

Bruce R. Kendall 
334A Camillo Ct. 

Mountain View CA 94040 77 June 8 

I was reading thru Vol. 2, No. 3 when I ran across Ray¬ 
mond Jurgen’s comment (about Jef Raskin’s comment) on 
how to implement POP/PUSH PSW in Processor Tech’s (Micro¬ 
tec) Sys8 resident editor-assembler. A nicer way to fix this 

problem is to define PSW and SP with two equates: 

SP EQU 6 
PSW EQU 6 

This fixes all references to SP and PSW. I learned of this from 
examples in the Sys8 documentation that I obtained from the 
Homebrew Computer Club library. 

I recently made some modifications to my copy of Sys8 in 
which I implemented a permanent fix to this problem. I first 
thought that all I had to do was to add SP and PSW to the in¬ 
ternal table that defines the registers letters (A, B, . . . E, M). 
This route is too messy since the table is designed only for 
single character labels. Thus I chose to fool the system by pre- 
loading the main (RAM) symbol table with the above defini¬ 
tions of SP and PSW at the start of the assembly process. Sys8 
contains a memory block moving routine (LMOV) that easily 
implements this function. 

The symbol count is initialized near the beginning of the 
assembly process, so the first patch must be made at this 
point. In my copy of Sys8 this occurrs near F671 (Hex): 


F671: ASM5 

STA 

AERR 

* 

set error switch 


XRA 

A 

* 

get a zero 


STA 

NOLA 

* 

initialize label count 

ASM3 

STA 

PAS I 

* 

set pass indicator 

I patched this to read: 




F67I: ASM3 

JMP 

FIXT 

* 

jump to patch routine 


XRA 

A 




and added my fix routine at the end of the Sys8 (say at 
FD30). There are several hundred bytes left at the end (in 


the same 4K block) that can be used to add lots of features 
to your system. My fix routine: 


FIXT 

STA 

AERR 

* 

set error switch 



MV I 

A,2 

* 




STA 

NOLA 

* 

set label count to two 


*** set 

pointers 

for LMOV 

routine ******* ********** 



LXI 

H, SYMT 

* 

point to start of symbol 

table 


LXI 

D,FTAB 

* 

point to fix table 



MV I 

C,0FFH 

* 

LMOV stop character 



CALL 

LMOV 

* 

copy FTAB to SYMT 



XRA 

A 

* 

clear to initialize pass 

indicator 

* 

JMP 

ASM3 

* 

return to assembly flow 


* 

AERR 

EQU 

0D06AH 

* 

error flag location 


NOLA 

EQU 

0D074H 

* 

label counter 


SYMT 

EQU 

0D0FFH 

* 

symbol table address 


ASM3 

EQU 

0F678H 

* 



LMOV 

* 

EQU 

0F534H 

* 

block move routine 


* 

FTAB 

DB 

» p . 

* 

five character label 



DB 

’S’ 





DB 

•w 





DW 

0 





DB 

0 

* 

two byte definition 



DB 

6 

* 




DB 

’S’ 





DB 

•P 1 





DW 

0 





DW 

0 





DB 

6 





DB 

0FFH 

* 

LMOV stop character 



END 






The routine copies FTAB into the symbol table and returns 
to the main assembly flow with the accumulator cleared to set 
the system to pass 1. It also sets the label count to two for the 
labels just loaded. FTAB can be extended to define other 
reserved labels by following the same format. Five slots must 
be used by each label, followed by its two byte definition. 
This same modification should work for the IMSAI version 
of Sys8 (which loads at 0 instead of F000). In the version that 
I have, the above equates would be: 


AERR 

EQU 

108EH 

NOLA 

EQU 

I098H 

SYMT 

EQU 

1I23H 

ASM 3 

EQU 

0732H 

LMOV 

EQU 

05BEH 


Atlantic City Seminar 

MICROPROCESSORS: 

WHERE THEY CAME FROM AND WHERE THEY ARE 
GOING - AN ANAL YSIS OF ALL PRODUCTS ON THE 
MARKET TODAY 

This seminar will be given by Dr. Adam Osborne at the Personal 
Computing Conference '77 in Atlantic City, at the Shelburne Hotel, 
from 9:00 a.m. to 4:00 p.m. The course will be offered twice, once on 
Friday, August 26th and the second time on Saturday, August 27th. 

The cost of the one-day seminar is $30.00. This fee includes lunch. 

This seminar will last approximately six hours. 

During the first hour the origins of the various types of micropro¬ 
cessors on the market today will be identified. This introduction will 
cover some of the less well known, but critical circumstances surround¬ 
ing the companies and products that first appeared. This introductory 
background is very important; in addition to defining the origins of 
microprocessors on the market today, it explains why many micropro¬ 
cessor strengths and weaknesses are the result of luck or inexperience 
on the part of designers and manufacturers. 

The next four hours of the seminar are devoted to highlighting the 
important characteristics of all common 8-bit and 16-bit microproces¬ 
sors on the market today, together with their support devices. In order 
to cover this formidable range of material in such a short time, the 
8080A microprocessor is used as a frame of reference. Each micropro¬ 
cessor is described in terms of its signal interface, CPU architecture and 
instruction set. The justification for support devices is given, together 

Page 22 


with the effectiveness of each implementation. When microprocessors 
are compared wtih the 8080A, conceptual and functional differences 
are emphasized. In addition, other microprocessors are compared to 
each other where they compete, or where they have been directly in¬ 
fluenced by a device other than the 8080A. The purpose of this four 
hour session is to describe the important characteristics of each micro¬ 
processor so that the types of application best suited to each micropro¬ 
cessor may be identified, and the types of application where the choice 
of microprocessor is virtually irrelevant are easily understood. 

During the last hour of this seminar the status of the microprocessor 
industry today and the directions it is taking in the coming year will be 
defined. This discussion will cover sales volumes of various micropro¬ 
cessors on the market today, plus products planned by various manu¬ 
facturers in the coming year. The customer base for microprocessors 
will also be described, since this is one area where supposedly know¬ 
ledgeable industry observers have been proven completely wrong. As 
the microprocessor industry matures, we are seeing a customer profile 
emerge that differs markedly from the customer profile which was an¬ 
ticipated by manufacturers a year ago. This is having important reper¬ 
cussions on the economic fortunes of companies who are participating 
in the microprocessor and related industries. 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


262 


TAPE LOAD & SAVE ROUTINES 
FOR P.T.’s BASIC 

Dear Bob, 

For those readers who have processor tech. BASIC and 
would like to be able to store their BASIC programs on tape. 
I’ve written the following two subroutines. 

Since I do not have a VDM, 1 used memory locations OEBO 
thru OEE3 for the TSAV & TLOAD routines. (These locations 
are normally part of the VDM driver so if you have a VDM, 
relocate the two routines elsewhere in memory). 

Instructions: 

1) Load the TSAV & TLGAD routines into memory. 

2) At location 07DC, store BO) 

At location 07DD, store OE) TSAV 
At location 07DE, store E3) 

At location 07DF, store OE) TLOAD 
This tells the interpreter that TSAVE is at OEBO and 
TLOAD is at OE, E3. 

3) When you want to record a program in BASIC, just 
start the cassette tape, then type “TSAV”. 

4) When you want to play back a BASIC program from 
cassette tape into memory, just start the tape, and 
then type “TLOAD”. 

5) The TSAVE & TLOAD routines are written for an 
Altair cassette interface addressed at 006 & 007. 

Thanks, 

Ron Santore 


016,322 

312 


142 


000 

016,325 

043 

016,326 

303 


310 


016 

OUTST016.331 

333 


006 

016,333 

007 

016,334 

332 


331 


016 

016,337 

176 

016,340 

323 


007 

016,342 

311 


HL 


OUTST 


TSAV - 016,260 -*■ OEBO 
TLOAD — 016,343 -*• OEE3 


TLOAD 016,343 041 LXI 
116 
031 


HL 




016,346 

006 MVI B 
006 



016,350 

333 IN 

006 

TSAV 016,260 

041 LXI HL 

016,352 

017 RRC 


116 

016,353 

332 JC 


031 


350 

016,263 

076 MVI A 


016 


000 

016,356 

333 IN 

016,265 

323 OUT 


007 


007 

016,360 

376 CPI 

016,267 

006 MVI B 


000 


006 

016,362 

302JNZ 

016,271 

315 CALL: OUTST 


350 


331 


016 


016 

016,365 

333 IN 

016,274 

043 INX HL 


006 

016,275 

005 DCR B 

016,367 

017 RRC 

016,276 

302 JNZ 

016,370 

332 JC 


271 


365 


016 


016 

016,301 

052 LHLD 

016,373 

333 IN 


116 


007 


031 

016,375 

167 MOV M,A 

016,304 

353 XCHG 

016,376 

043 INX HL 

016,305 

052 LHLD 

016,377 

005 DCR B 


120 

017,000 

302 JNZ 


031 


365 

016,310 

315 CALL: OUTST 


016 


331 

017,003 

052 LHLD 


016 


116 

016,313 

173 MOV A,E 


031 

016,314 

275 CMP L 

017,006 

353 XCHG 

016,315 

302 JNZ 

017,007 

052 LHLD 


325 


120 


016 


031 

016,320 

172 MOV A,D 

017,012 

333 IN 

016,321 

274 CMP H 


006 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


More 

Page 23 


263 



MINI WORD PROCESSING SOFTWARE 

News Release Received: 77 Jun 16 

The Software Store has released A Mini Word Processing 
System running on MITS Altair equipment under Disk Ex¬ 
tended BASIC for just $150.00. Mini Word Processing is 
designed to help an operator generate letters, text and mailing 
labels or envelopes. The System consists of seven programs 
which are driven by a menu select routine from which any of 
the seven processing programs can be utilized. Each program 
interacts with the operator to establish file names and drive 
numbers. The options are selected by the operator using 
simple Y or N (Yes or No) responses to the detailed program 
prompts. After each function is completed the System reloads 
the menu routine. 

A complete User’s Manual consisting of 51 pages is pro¬ 
vided with the System. The manual includes detailed instruc¬ 
tions concerning all operator prompts, system error messages, 
a number of examples, and programming considerations for 
custom applications. 

The Software Store develops and sells application software 
systems designed for the first time user of microcomputer. The 
Software Store markets its products through selected compu¬ 
ter stores and direct to end users. 

The Software Store is located at 706 Chippewa Square, 
Marquette, Michigan 49855. Area Code 906 - 228-7622. Con¬ 
tact Terry L Horton. [Dated 77 May 20] 


ALTA LOMA (CALIF.) MICRO PROGRAMMING 
COURSE CHAFFEY COLLEGE 

News Release 77 Jun 7 

Chaffey Community College at Alta Loma, Calif., has scheduled a 
fall-quarter course in microcomputer programming that will be offered 
in two 12-week class sections. 

Both classes will be from 7 to 10 p.m., one on Tuesdays starting 
Sept. 13 and the other on Wednesdays beginning Sept. 14. 

The only prerequisite for the three-unit course is that a student be a 
high school graduate or 18 years of age. There is no tuition fee entailed 
for state residents. 

Further information may be obtained by writing to Donald J. 
Ketchum, data processing professor, Chaffey Community College, 
Alta Loma, CA 91701.987-1 737, 822-4484 or 735-0242, Ext. 216. 


017,014 

017 RRC 

017,015 

332 JC 


012 


017 

017,020 

333 IN 


007 

017,022 

167 MOV M,A 

017,023 

175 MOV A,L 

017,024 

273 CMP E 

017,025 

302 JNZ 


035 


017 

017,030 

174 MOV A,H 

017,031 

272 CMP D 

017,032 

312 JZ 


142 


000 

017,035 

043 INX HL 

017,036 

303 JMP 


012 


017 

017,041 

000 NOP 


Page 24 Dr. Dobb's Journal of Computer Calisthenics & 


FAIRCHILD & RCA RUMORS 

Dear DDJ: 9 - Jun - 77 

Your Readers might be interested in hearing about a smart 
new video game that should be on the market in time for 
Christmas: It’s made by Fairchild (makers of the F8 micropro¬ 
cessor), and I think it’s going to be called “Channel F.” I had 
an opportunity to play with one at a shopping center demo, 
and I was intrigued. Its compact cabinet contains four games 
and produces color images. Playing control is by two joystick¬ 
like handles which do not give fully variable control, but in¬ 
stead have switches inside which are activated by moving the 
handle forward, back, left, right, up, down, clockwise, or 
counter-clockwise; a total of 8 bits, curiously enough. The big 
plus is that there will be cassettes available which plug into a 
socket on the cabinet and allow lots of additional games. The 
unit, without extra cassettes, will be available for a paltry 
$170! 

I have had a chance to study an F8 manual, and it seems 
pretty obvious that that’s what’s inside the game. The cassettes 
would contain type 3851 “program storage units” (ROM + I/O 
ports, timer, & interrupt logic), and the 3854 DMA chip is a 
natural for the video interface. 

What excites me is the possibility that some clever hacker 
might build a box that could plug in where the game cassettes 
go, and have another plug for a conventional computer termi¬ 
nal. If my guesses about the game’s innards are correct, this 
wouldn’t be hard at all. Then we could use this computer-dis- 
guised-as-a-game as a real computer! At $170 for CPU, RAM 
(must be at least 2K bytes for the display), joystick input de¬ 
vices, and color video interface, this could be the biggest bar¬ 
gain yet for computer hobbyists — and if you get tired of 
programming, you can always play pong! 

Incidentally, RCA is coming out with a similar product 
called “Studio II”. It presumably contains a COSMAC. It has 
two calculator keyboards instead of joysticks, and is black & 
white only, but will be somewhat less expensive. 

I haven’t bought a computer yet; I’m waiting to hear more 
about these two items. Maybe someone from Fairchild or RCA 
could be so generous as to supply some info on how to build 
an interface of the type described above. Only 205 more days 
until Christmas! Cogito Ergo Hackum, 

Kent A. Multer 
#116 Towne Lyne Apts. 

Clinton, MA 01510 


EDUCATIONAL DATA SYSTEMS ARE A 
FUNCTION OF HARDWARE, SOFTWARE, 

AND PEOPLEWARE 

Received: 77 Jun 15 
The fifteenth annual convention proceedings are now avail¬ 
able from the Association for Educational Data Systems. Over 
eighty original papers presented April 25-29, 1977, in Fort 
Worth, Texas, are included in the publication. Categories 
include: 

Instructional Support & Curriculum 
Managing Computers and Computing 
Information Systems & Applications 
Certification 

Human Values in Educational Data Systems 
Social Implications of Computers 
Computer Impact on Society 
Copies may be ordered by sending $10.00 to: 

AEDS Proceedings 
1201 16th Street, N.W. 

Washington, D.C. 20036 

(Postage and handling will be charges on orders not prepaid.) 

June/July, 1977 


Orthodontia, Box E, Menlo Park, CA 94025 


264 



KIM-I BREAKPOINT ROUTINES Plain & Fancy 


Dear Mr. Warren, Sept. 13, 1976 

1 received all seven issues of your publication at one time, 
one week ago. Talk about an information explosion! Your 
Dr. Dobb’s Journal is really dynamite. 

Since I now own a KIM, the article on a Breakpoint Rou¬ 
tine for the 6502 in the March, 1976 issue caught my eye. 

As soon as I realized how useful such a routine would be for 
debugging, I decided to try it out on my KIM. I am enclosing 
a listing of my version, as I was able to reduce the size of the 
routine from 224 to 124 bytes. Since memory space on the 
basic BUM is not large, some of your readers might be inter¬ 
ested in a smaller version. I have also enclosed a slightly larger 
version which makes the output of the routine more readable 
by prefacing each register display with an identifying charac¬ 
ter string. 

The listing of the breakpoint routines was generated using a 
cross assembler I have written. I wrote this assembler program 
because I got fed up with hand assembling stuff for my KIM 
and because I have free access to an IBM 360/40. Currently, 
the assembler recognizes only the 6502 instruction set, but I 
plan to add the 8080 and 6800 instruction sets and the ability 
to print machine code in either hex or split octal. 


A trick I picked up from Radio-Electronics may be of 
interest to your readers who have both a KIM and a TTY. You 
can use the paper tape load routine to enter programs into 
memory using the keyboard instead of the paper tape reader. 
Refer to Appendix F of the KIM-1 User Manual for the paper 
tape format. Don’t worry about calculating the check sum, 
just enter four zeros. The TTY will brint “ERR KIM”, but 
what you entered will be in memory. The count of bytes can 
be any value, not just the hex 18 specified in Appendix F. 

For example, to enter the character string “KIM” into loca¬ 
tion 100, type the following: L;0301004B494D0000 

Now that you’ve printed all this neat software, I guess I’ll 
have to go buy more memory to put it in. 

Very truly yours, 

Willi Kushe 

P.O. Box 115 
Haddonfield, NJ 08033 

P.S. Since I wrote this, I have reduced the 6502 lunar lander 
you published to KIM size. Would you want my version?? 

[Sure! — Jim] 


> h- 
< 3 
-j n 

CL OC 
«/> 

— X CC 

0 ~ UJ 
X. t- 


Z CO CC 

n cl 

•— t/j 


> < -j 
UJ -J _J 

oc u. — 


X > 
O CC 
-j QC 

o < 

OC <_> 


X CO < l 
U in O' 

< QC < ► 
Kiel) 
«/> O O v 


O uj 
z o 
— o 


! >- m <✓> 


o -a — 


Qf-OO 
□ □ UJ UJ 
VO O. OC QC 
CO 

UJ iC X X 
U U UJ UJ 

o < o o 


z z 
q:d3 
o o o 

KUO 

< 

-J X X 
3 < < 
X CC QC 
3 0 0 

o o o 

U QC QC 
<0-0. 


II h UJ U. h L 


X ►— -* 


—• o ►— 

VO < t/> 
3 QC 
< X 
O X K 


Z O Q 
— < < 

QC Q. O 
a vo j 


O CC 

o 

<wi- 

3 

K K _J 
Z < < 
- K 3 
qc vo a 


S vO O O 

- -I O < « 

C > O < -J 

QC I O U. L 
u QC _J c 

- < Z K r 

I U u o z 

IZ — 

D U. K < QC 


VO u 
UJ LU 

oc O 


J o o. 
r uj o 
QC o o 


hUJO V) 
1-0 3 2- 
3 O a. — 
O U K 

o: a i/i • 
□ zx 

u. — QC 
_J O CO 


' X Z CC > Z U 


-002 
- < < * 

r a. o c 


wuo 


o. ►— ► 

o c 
o z : 


> > > 
< < < 

VO vo l/) 


> >0.0. _J ■< 

HO-<wON«O«0)O(DWUJ XU.* 
JJt-XJK XJIKJK H> C 

ItUJUU JUUUeCUO!3< -j X l 

uo.<aa<a.aao.aaOuo _/o 

n «r i 


II II N II II II II II 

»***«*«* 


Q- cO > X < 

UJ UJ Ul UJ UJ o M 

> > > > > -J X 
< < < < < o u 
vo vo o vo vo o. o. < 


< X > < 

J 


< < < < 
h- J K J 

vo o. vo a 


<XXOQC<UJUUUJUU<QC<QCQC< 
hl/U-JV)OZUIUJZUJUIQV)OVJVJO 
'*l»V)uO JiflOQfflOO • — ■ — — ■ 


-> *» -J K U. *- 


t QC < X 

J vo _J UJ 

J O Q. O 


uj o xaC<aCxuiQCacx< 

XZ QV)OV)UJZV)V)Q|- 
i- < jojooonjw 


O CD (t < (C u c l 


Uuiu.*Hfu*4-inr»GO<cQUJOCNj*?'Oco<uuj«iro*09' 

cocoa>C'C7'0'0'0<C'cr-(7'<7'<<<<<<<<cceococo 

*-s — ^^«««^ 0000000000000000 


O lO (O (fl i*i ni pi ni ri ni n 
ooooooooooo 


(EOUJO-4 Nos 

COCSCDUUUUU 

oooooooo 


PJOIA 0< O OOpjh 

<nonudnn<® 

ccoorsiinococoujo 

UUOOOOOOOUJ 

rof^rofororofriforviro 

OOOOOOOOOO 


June/July, 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 


265 







on 

UJ 


<✓) o 

— z 

13 — 

UJ K- 
CC z 
UJ 
«/> X 


x > x < o 


of a o: o' z 
O O O O af 
►- I- 3 

I/) (fl W l/) K 

UJ UJ UJ UJ UJ 

of a a: a: a: 


> x < 

UJ UJ UJ 

> > > 

< < < 

on on on 


xo/><<<<<<>x<« 

axaxoxoiooof- 

Jt-ja jo j j ja 


a; a 
o ui 
u o 


of > 

< UJ _J 

Xaf O 


Jof a 

CD O O 
< 1-0 


U CD UJ O O 

n m 0 < o' 

UJ UJ UJ UJ u. o 

« t» W « UJ 

It N || II II • 


c\j«*ir\r-co<ciJOujOoj'r 

Hi III UJ III LU III '|i III III II u 11 

oooooooooooo 


in co co 
U IL U 

o o o 



<: 

o 

o 


3 

o 


1 3 -* 

s 5 

<S Z 


SUU.SQ Q — 
:gu.u.q<esq 
iGhMOOwSBI 

:s — — — jxss 


cm n 

O <S 
S G> 
es si 


Z ( 
<t Z < 
X — < 
O X « 


h- z 

UJ ►- 

: on ac 


o on 
UJ 3 

cc 


> X 

of or 
ac or uj uj 

UJ UJ t— H- 

hK Z Z 

on on ac 3 3 

— — O O O 

O O ►- O l_> 

UI UJ < 

Cf a JXX 
3 < < 

x x x a a 

uj uj 3 O O 

o o o o o 


3 2 


X O XU 

u a i_j a 

jo. o a. 

N M 

I- H K- 


u z a. u z a 


U K UJ U. K- 0 


» < -J 
UJ _l _J 

a u. - 


r v 
o or 
3 ac 

a < 
a' o 


< < o 

i ® *- j 

ac >- * on c 

uj " uj o - 

»- u i < i 


cc cc 
cc < 

O X 

U O UJ 


x on 
cur 3 
O UJ h 
Z I- «J 
— U J- 
«/><(/) 
3 ac 
< X 
a x ►— 

—i o — 


Z U o 
M < < 
ct a Q 


u — 

< • 
cc cc 


UI o UJ 


Z < < 
« I- 3 
ac v no 


•— _j on 
►— u 

z 

m ►- o 

on 

of 0< 

O X 

U ►— O ►— 
X UJ UJ 
uj O o- i/I 
M •-* U 
— ac — v 
-i X ac 
< uj on a 


I h < 
u £8 


— ac ac 

X CD 

as < 
< < 


_j u on oj 

JlilZ-K 
X —• »- on 


< Z ct X Z UJ 

ac O uj x 

< _J OK K X t- 

UJ _J < V)U 

_i — J UJ UJ u on 

u X IL it O “ h- 


ac u 
O < 
u ac 


i/> _j < 

— O 13 

o ac < 

UJ o' K UJ 

or uj z a. z 
t- o n — 
k on o o K 

X —< _i 3 

uj o a. o 
z uj a . ct 
ac O O 


uj u on 
O 3 Z 
DefH 

o ►— 
a. on • 
O Z X 
—• ac 


— XK 
XujZi-u. 
z UJ a 

< X z or ; 


O uj j 
: < x cl 

• UJ < UJ 


< X > 
UI UJ UI 
> > > 

< < < 

on on on 


> >0.0. 
IL0hm0(nj- 0*«00(DWUI 
J Jhl JH JlK J8K> 

au juu juuuaua3< 
oa<o.a<cLO.o.o.cLCLOon 


* # # * * 

u II II II II 

# # # # * 


> X < 

uj uj uj a — 

> > > -I X 
< < < u u 
on on on a a . 


o ( 
o z ; 


8“-: 

-i X k 


r*i 

*«x><<<<<<xxaac<iuouuJUo_><ac<cLct< 
N KI-hJhJKJKlflKJWOZUJUJZuilllOWOlflinQ 
# ononono.ono.ona.i/)K-onij3_jcDOQ(DQO-J3_j33_j 


^Kl-Ol- 

cc X 3 j 3 

o. U O J > 

o — 


X—)<o<ctujcD 
OOXuOonX3 
• - ‘ co j n k R 


. —• J Of o. 


35 

o o 

_l CL 
O X 


JOh 
3-3 
a » D 


> i_> < a < x uj 

-j > o oo j uj z 

uii Jiaoai 


i 


i 


I on > 


a. co i 

l/l K U _ _ _ 
KOI- H K>h- 
4 3 uj 3 ■ 3 < ac 
*Oof 0*01^0. 


a. iL UJ 


O on 

dS 

or ct ui o cl < 

a u o » - on 


uj a xac<ac<aL<arxujacacx<x 
xz owo^owowujzoniflQKO 

>< -I 3 _i 3 -I 3 J 3 O CD 3 3 J 0/> ■ 


< 1 UQ uj 

UJ UJ LU UI ui 

O O O o o 
o o o o o 


IL O IM ■? 'OK(f<UOU.Of'Jd^C04UUJON^^(J'Blll"< 

uj>r~K-K->>h- r »h->cccoco®®eoco(Dcr^cr'0'C'^ff'< 

OOOOOOOOOOOOOOOOOOOOOOOOOOO 


<*> m > O' oj 
<<<<<< 
w m i*i iti m (*i 
o o o o o o 


U. O N 4 r* OO O' 
< CD CD CD (D m CD 
c*i co co ro c*i m c*i 
o o o o o o o 


»Dom<eoooj 5 «o ;50 


Page 26 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


266 










KIM PROGRAM BOOK TO BE AVAILABLE 
ABOUT AUGUST 15 

The First Book of KIM 

By Stan Ockers/Eric Rehnke/Jim Butterfield 

The First Book of KIM ($9 from ORB, P.O. Box 311, 
Argonne, IL 60439): a collection of dozens of programs — 
some useful, some recreational, all tested and documented — 
to run on the basic Commodore KIM-1 system. Also included 
is a Beginner’s Guide and other information useful to current 
and prospective KIM owners. 


POMONA, CALIFORNIA AREA CLUB 

The Pomona Valley Chapter of the SCCS held its first meeting May 19, 
and discussed ideas for future programs and club activities. A survey of 
the members showed high interest in programming methods and tech¬ 
niques, programming languages, computer applications, and hardware 
design and construction. Machines owned or used by those present in¬ 
clude four 8080's (Altair or Gnat), four 6592's (Apple or Kim), a 2650 
(Processor Applications), and a couple of PDP-8's. 

The Programs for July and August meetings (first Thursday of each 
month) were discussed, and will include hardware demonstrations and 
talks on microprocessor fundamentals and assembly language program¬ 
ming. 

Meetings are held from 7 to 9 PM at the Pomona Public Library, 
625 S. Garey Ave., Pomona, CA. 

For additional information contact: 

AI Sutton 

4155 Oak Hollow Rd. 

Claremont, CA 91711 

(714) 593-6635 evenings 


GODBOUT GLORY 

Several different people, at both of the last two Homebrew 
Computer Club meetings, have popped up during “Serial Ac¬ 
cess” (Announcements-time) and made adamantly favorable 
comments about service from Godbout Electronics. Truly 
amazing reports: 

They order something, and receive it within days of placing 
the order. They send back a faulty part (even Godbout is sub¬ 
ject to the physiological frailty of electronic components), and 
receive a repaired or replaced part by return mail. 

In our industry, where reports of 6-month back orders 
(with no cash returned, of course) are reported, regularly if 
not often, it is a delight to report these unsolicited comments 
praising Godbout’s responsiveness and service to his customers. 

Godbout is located at Box 2355, Oakland Airport, 
CA 94614, (415) 562-0636. 


TEE-VEE TYPO 

Dave Fylstra mentioned seeing an interesting ad for TV 
components, recently: “TV yorks available.” 


TRIPPY COMPANY NAME NOTED 

Joining the ranks of such straight-laced companies as Para¬ 
sitic Engineering and The Barefoot Computer Store, we re¬ 
cently noted a new California company, specializing in repair¬ 
ing sickly equipment: MicroMouse (415-493-7404). Now, with 
a name like that, you know they gotta be good people. 


< cc 

Z LU 
►— 
o «/> 


i/I CD 
-• Z 
CD — 


X > X <i o 

UJUJUJUJ 

cc cc cc cl z 

o o o o oc 

t-KKhD 
LLI LU LU UJ UJ 

cc cc cc a: cc 


> > > 
< < < 

i/i i/i i/i 


</1<<<<<<>X<i- 

xoxoioioaot- 

i-ja.jtt.ja.jjja 


1/1 o 
O X 


ac a 
o at 
o o 


loco 


j cc a. 
CD O O 

< ►— o 


u.OMmif'^otrcDQu. 

fl UJ III III III LU III III III pi III 

(Ti(virncvifOcv>jfirnc<i{<ifo 

ooooooooooo 


June/July, 1977 


O CO -C CO CD 

LL U- LL U. LL 

m in ifl co m 

o o o o o 


a. cd uj o o 

<M O' < O' 

UJ UJ UJ UJ LL O 

Z 

II II II H II • 


< 

o 

-1 

« 


«n < 

o UJ 

u. a 

69 69 

a uj 
UJ O' 
in si 
< cm 

UJ UJ 

u. cr 

cc o 

S Q 


in uj 
oo uj 


C Q 
U. UJ 

in <c 
oc O 


m cm 

oo <s 

sg 

« o 

UJ Ul 

s o 

00 o 

a j uj 

u UJ 

o 

oo o 


O' CD UJ u 
IS S 69 69 
cc uj cd in 
>o — uj r- 

uj cq in ^ 

— n <t u. 

& s oo in 

<r cvj * u. 

C X c UJ 

CC U. UJ V 

c; in in — 
n cl « 

O' u. oo to 

< — m 
m s, uj O' 

61 <z uj in 
e 6 in o 
in cc <i in 
CO O <x UJ 
CO D O' ^ 
UJ O' O' o 

— <t uj m 
61 UJ 'O — 

< — <1 D 
6 . 69 Q CC 
OJ <t UJ 

n <s — ^ 
&i cc oo * 
u. n <s O' 

UJ 69 6 ) 

C- P“ CC < 
CD u. <£ m 
O' Q u. n 

61 CD — * 
S UJ Q S 
O' — O' * 


o cc 

O Ul Q 


— vilQ 

Z 69 CC CO 

•- 6. — — 

x e -> •% 


< O' cc 

<t 69 UJ 
CC CC — 
CO u. 
61 Q CC 
CC CC 69 
<£ <t CC 
00 <c <t 
UJ UJ UJ 
m si s 

< O Q 
UJ <t <£ 
— o o 
6 00 61 
<t CD O 
o o n 
6 6 61 
OC CO 00 


SS 


CO 'O 
UJ s 
n sr 
69 CB 
00 69 


E 

O 


F 61 o Z 

— C*- S 3 

“5 

61 CD n O' 

stos<<t 


ft 

3 

o 


69 

69 


H 

<* 


3 

U 


Z ® H 
HlSUJ 

sc 6) m 


6 69 61 6) 

6 6 61 69 I 
U 

8-NOZ 
" ~9 69 6) 61 <£ Z I 


to 

cs 

■ 

X 


o as 

6) > 


O UJ U. 63 O 61 — CC n z 6) — O' 63 6 61 

Zdli.U.S<lIC9SSO<ZSG<n;SS Z<9 
MtlHHtoOMSQSQlMQShHSGUMS 
5£S--<-JS:S(SJQQCJXGQ(flXSSVjca 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 27 


267 






A TURTLE’ FOR A VDM 


Dear Jim, 77 June 24 

Here is the program I mentioned last night at the Home¬ 
brew meeting. Li-Chen Wang gave me so many good ideas for 
improvements that it must be considered as a version 1.0.1 am 
sort of happy with it and would like to keep a little control 
over it’s dissemination. I plan to copyright TURTLE but will 
allow your readers to copy it for any non commerical pur¬ 
poses. The copyright will be held by the Educational Micro 
Computer Company which is my new fictitious name. 

Yours, 

Marvin R. Winzenread 


ments. The pointer for this copy is called BUFP. The Again 
command reads from the input buffer instead of the screen. 
Besides the VDM, the program used the following RAM: 

TRACE 1 Byte The trace character 

DIR 1 byte The turtle’s direction 

PDIR 1 byte A psuedo direction for it 

TXT 2 bytes Text pointer 

BUFP 2 bytes Buffer pointer 

LOC 2 bytes Location of turtle on the screen 

IBUF 64 bytes Input Buffer 

The error routine emits a *?’ if a command is not under¬ 
stood. The *?’ is removed when an understandable command 
replaces the erroneous one. 


p.S. cuts cassette or paper tape copies of turtle. Hie, OOPS, The directions the turtle can face are: 

CHASE and/or LIFE are available on an individual basis from: 


Educational Micro Computer Company 
3360 Tonga Lane 
Alameda CA 94501 


Turtle 

©1977 Educational Micro Computer Company 


A real time interpreter for turtle geometry on a direct 
memory access video display. 

The turtle starts at the center of the screen and is under 
direct control of a keyboard. It obeys the following com- 


mands: 


Fn 

Move Forward n spaces 

Bn 

Move Backward n spaces 

Rn 

Turn Right n turns 

Ln 

Turn Left n turns 

Tc 

Leave a Trace of character c. 


In the above commands n is limited to being a single 
digit but c can be any keyboard character (including space). 

In addition to the turtle commands, the following com¬ 
mands are also executable: 

An Repeat all previous commands n times 

CS Clear the Screen and start over. 

As above n is limited to a single digit. 

Turtle was written as a subroutine. The carriage return 
key will return control to the calling routine. To make this a 
stand alone routine delete statements - and set a stack pointer 
with sufficient depth to allow some nesting of the A com¬ 
mand. 

This program was written for a SOL but it should work on' 
any direct memory access 16 x 64 character generating video 
display. VDM is the starting address of the VDM RAM. LVDM 
is the high byte of the starting VDM address. VDMP is the con¬ 
trol part for the VDM. SINP is the systems keyboard input 
routine. A zero flag is set if there is no input. SPEED is a data 
storage location for the video speed. FF is the slowest and 0 
is the faster speed. All of the above EQUates need to be 
changed for other systems. 

The commands that are typed on the keyboard appear on 
the screen at the bottom, TXT is a pointer for this text. An 
additional copy of the command text is saved in an input buf¬ 
fer IBUF so that it will not be destroyed by the turtle’s move- 



4 



<tEa; j; s> r~ > x • 


X H <x J * 

~ h- <t i 

2 S W U . 


J - - J • 

X 2- X X 5 


- -J <t z 

1 < * - 

<_> 03 
1 J 

i j . 

; O Si <£ ( 

» <c £ o : 


ox * 

<t p. u h <t : 

% v> <c x o: cm 

O P3J£><£KUJXCUl 


i x x i in x r t s 

O J2 J U 

X :> x x - x a - x x j 


OOOOOOOOOOOOOOOnvOOOOOOOOOOOOOOlDOOOOOO 
o-wn^in'CMOooo-wnoown<iin'OMOf>o-c\inc4i/io--oinin 
— — — — — — — — — — cumminmoooooooooo — — — — — — — in in in in in 
ooooooooooooooo — — - — — — — — — — 


<£ <x a < u, < <£ <t O O' ooo O' O' 

oooo ooooo o ooo o a 


O' <! 

o o o 


Weocuoi».t-om — a o n mam c\j Q 

Lh'flUbOUMOI'O sO CM — CO -7 Cl 


uj m u. m 

cm r« n r~ 


u.ncMO — cm<o — cm — cMDr-Qu-On — wr-<XcoocMUjri»omo«r)r)n<x>omacM 

<XOr>OCMCMOCMCMCMCMU<TOCUUCUr-CQOmCMOIf>CMmWUlCMCMOCMOCMCUCM 


o — concoou. — -7r-<iOo — <j , incomuJu,on<Tmcoo<tffloPUlu.CMmr-too' 
ooooooo------cM(MWW(MCM«CMnnnnr)nnnr)onn<r7747 

O'O'O'O'O'OO'O-O'O'O'O'O'O'O'O'O'O'OO'O'O'O'O'OO'O'O'O'O'O'O'O'O'O'O'O' 

ooooouoooooooouooououuooouuuouuoooouo 


Page 28 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


268 







m Cl C3 M 

• 2 <t e <s> c 

• e u a r : 


> o o o o i 
) — cm n e l 
r <r <r c <r • 
i ip m in 1/1 i 


r' o o : 

1 eg S3 0. p. C 

: t- r u: c; ; 


loinoinc 
1 o o — — c 
r to ip m ip i 
i ip ip ip ip i 


a; o o: O’. 

i u; m ?. u M 2 

i s c. o c; « 


>000000 
. cm n c ip >p h 
; >c >p <o «c vc <o 
i in in ip ip ip in 


o: o: c: 

ON Z UN 

Q /■ —< o c: 


-1 < J *X X <C X e B> - CVI . 

c: c. c: a: o. tr w or. * . 

UUNUUMDUNOUNK B.UI 

a a d: a a o. a a o: o d c : w o « 


t. o. 

E - 10 U. CU 

> u ~ L : 

i i to u 
c <£ x -J < 

t~ n — 

• v> j j : 

» >' r c 

: — j in oi : 


f — M <t C 

IV o. z. o u 
x u t j o 


ooooo ooooooooooooooooooomoooooooooooooooo 

co O' o — cm n^in'Cr-,-ooO — cjr)^jo<Tin^it-< v >pf'f>' 0-'0 — cvjocMocu)N^ r - 1 -oo '0 — 

'T'Or-t-r- f-r-r-rr-r-r'.oro.nrocnoooooooo — — ooo — —--— cj cm 

in ip in i/i ip ininif>ir>mintnmininir>ir>\C'OM>'C' 0 'OMiNO\nioi'- r- r~ r'h-c^f^t^t'r-c-r'pt- 


m h r. y. s- x 

2 u. 2 cj?« 

T t . n « y; m 

<£ 

OOlnOlPh 

w n n<r ^ <r 

CM CM CM CM CM CM 

r— r— r— t 


< 

u 

U. U. no o O' 

n o o o o r~ 


«t <t O <£ 

u o o u 

— lu <£ U 4 U. CM r- 

o cm n cm o c r~ 


<t < <£ <C e e e «t 

O O O O U t_> o o 

U. <t - D D — U>c CO 

— r- co r- f- <i ip t' n 


U) 

1 


5 


O'Q'Ooou.U'Or-oCQ'tu.u.ii.vC'Oc^Q'Ocou.o'ticir-cooQm'srOco^TPco 
o r- w cm cm id h wouWf-ooiowu'OhUiO'OuncMOucMnocMnocMnu 


UQcfiDOi'OlPOtOlPQmoWllmM'Oli l>-nf>CM(>OoW-CM't 
(MnuCMnuCMnu(MnUM ll Qu.flW^umuMPUOMPCMCJCM 


uiuicMeocMor-nwo 

i- u.onnuu<j(M<nM 


roo <OQI*l|i. OWn<fiP'OMOO>DOWfc,'"Wn^MOO 
UUlUUUlUUb.Uli.kb. U.U. U.U.U.U.U.U.OOOOOOO 
0'00'0'0'0'00'0'0'0'0'0'0'0'00'00'0''t<I<t<£<I < t<I 

OUOOUUUUOOUUOOUOOOOUUOUOOOU 


ewoowu.o-.oi n<rin'Oc^coo'<nwoowu. ooi 

oooooo —-- ---—-— — OJ OJ 

e^ee't't^e^ c<r<£<<i<£<te<t<£<tee4:e 

ooooooooo ooooouooooooooo 


n t~ eoDwu.CMri'Ot-ecnuj-ee-coCDo-cinior'Co 
oscMcMCMCMCMCMononnooceeeeemiPiniPintpip 

e<te<S‘t«t<t«te<t‘te<ce<te«te<cee<cc<te<t< 

oouoooooooooououooooooooooo 



June/July, 1977 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


269 








GOOD LANGUAGE, IMPLEMENTATION, & MAG 
CARDS 

Dear Sir: Received: 77 Jun 6 

There’s been a lot of letter writing about good and bad 
languages and good and bad implementations. A lot of this 
war has been fought out already at length. The results seem 
to be (to me of course) that a good “relatively machine inde¬ 
pendent language” would look a lot like Simula 67 (the 
Algol-like structure, the modular protection, and the idea 
of never do at runtime what you can do at compile time). 
A dependent language would look like Bliss. The implemen¬ 
tation of Simula is more difficult than Basic, but the docu¬ 
mentation on it is superb. 

In view of this it might be better to debate what we will 
translate these languages (and others) into. I propose a stan¬ 
dard intermediate virtual machine. This could be software 
simulated with existing hardware for portability, but even 
better it could be emulated by microprogramming bit slice 
machines. These machines would, of course, be compatible 
with the various popular buses, so most people would only 
lose a CPU card, and even that could be used as a disk con¬ 
troller or something. Comments? 

Sincerely, 

Peter Norman 

Systems Programming Consultant 
3 Clinton Street 
Cambridge, MA 02139 
(617) 864-2674 

P.S. Has anyone looked at mag card devices for micros (like 
the IBM datacell or the old Olivetti P101. It would make 
it much easier to mail software. 


<u 

ID 

Cl 


o 

to 

< 

<u 


»D 

cn 

ID 


ID 



o. m 
u. o 
D e: 
cj to CVJ 
< 


a >t 
_i j P, j 

**: < s y 

v U “5 J J 
u 


u 


ID 



J u w o 

0. N o; N H 

E ^ U 2: UJ 

U T O T tt 


ID 



S CQ 
u. o 
— eo : 

O O l 
t_> O l 


to • 


CVJ 


OJ 


CVJ 


2 z. d in — in .. . 

Q. o m Q inQinpi 
& u w a in a a 
P, p. u & Q p. u, t 

2 r < cc (-• u. o L : 

vnQK-.DHXDS[D. 
u r'HQp.oHtnj^.i 


J P. s 
j s a 
. a :> 


OOOOOOOOOOOOr-, 

mvor-o — (\jn<rincot'ino 

CJCVJC\JOOOOOOOOO_ 

t--f~t'~cocncococner , >cocnen {0 


oo-ain^in^htooooo 

— ooooooooo — ojn<r 

— ooooooooooooo 

COOCT'OOO'OO'OOOOO'O' 



(Mt O <J <t <£ _ 

uouoo o <_> 2 

Q w <r o o co co o 

t^CVl>TOC'J SO \c Q 

NDn---nQWir)C\)o — n 
ojooojor'coauooo u j{_j 


i>uu.c.!incoo'<C(awu,cvi 

inininxO'OvO'nvOvC'O'Or- 

ooouuoououoo 


nitM'fflOitlDQlL---'-- 

uuoooooooouuoou 


IMPATIENT ROBOTS ADDED TO “CHASE” 

Dear Jim: 77-Jul-19 

Mr. Sanger’s version of “CHASE” in your May 1977 issue 
is really well done. It’s well worth the effort required to key it 
in. His electric fence post effect is great! 

I have come up with the following simple alteration which 
makes the game operate in real time. The code I added runs a 
timer while waiting for your move. If you don’t make a move 
before the timer expires, the robots automatically take their 
turn. This code addition makes the game even more interesting 
and challenging. 


05 IB 

CDF405 


CALL 

INP2 

USE TIMED KBD INPUT ROUTINE 

05F4 

210098 

INP2 

LX I 

H,9800H 

SET TIMER DELAY VALUE 

05F7 

DB00 

INDLY 

IN 

STAT 


05F9 

E640 


AN I 

RDA 


05FB 

C2B001 


JNZ 

INP+7 

JUMP TO GET INPUT & RETURN 

05 FE 

2B 


DCX 

H 

DECREMENT TIMER 

05FF 

7C 


MOV 

A, H 

AND TEST 

0600 

B5 


ORA 

L 

FOR ZERO 

0601 

C8 


RZ 



0602 

C3F705 


JMP 

INDLY 



Changing the initial timer value (locations 05F5 and 05F6) 
results in different rates of robot movement. 

A second set of patches increases the effective field size by 
reducing the horizontal movement to one square per move. 
The last five changes in this group close in the “holes” in the 
fence. Leaving them off allows you to maneuver outside of the 
field, top and bottom only. But beware, the robots will even 
chase you outside the field and there are some invisible fence 
posts out there. 


1. 

0369 was 

2B 

change to 00 

2. 

036C 

23 

00 

3. 

0035 

02 

01 

4. 

0042 

20 

58 

5. 

004A 

ID 

00 

6. 

0057 

18 

19 

7. 

005D 

20 

58 

Sincerely, 

Andrew A. Recupero 


1388 Kinsport Lane 


San Jose, CA 95120 


FREE DOOR PRIZES FOR CLUB EVENTS 

News Release from Radio Shack. Received: 77-5-13 


Looking for some door prizes for your next coffee break, 
hamfest, swapfest, convention or whatever? 

For a limited time. Radio Shack will send you five free 
copies of their new Archer Semiconductor Reference Hand¬ 
book. 

The 128-page Handbook, which regularly sells for $1.95 
at Radio Shack stores, lists over 36,000 replacement trans¬ 
istors, diodes, and other interchangeable devices. Every Archer 
device listed is guaranteed prime and of top-quality with 
known JEDEC, EIA or manufacturer’s numbers. 

The Handbook contains a cross-reference listing, sections 
on the care and handling of transistors, soldering precautions, 
case styles and dimensions, how to test transistors, and a 
glossary of words, symbols and abbreviations. 

To get your five free copies of the Archer Semiconductor 
Reference Handbook for your next event, write, on your 
club or organization’s stationery, to Radio Shack, Dept. 
SRH, 2617 W. Seventh Street, Fort Worth Texas 76107. 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


270 




An Example 
of an 

M6800- Based 
GPIB* 
Interface 


S. C. Baunach, Tektronix, Inc., Beaverton OR 97077 


*GPIB — IEEE 488 General Purpose Interface Bus 


Editor’s Note: The IEEE (Institute of Electrical and Elec¬ 
tronics Engineers) has adopted a number of hardware stan¬ 
dards over the years. The IEEE 488 Standard describes an 
interface bus structure appropriate for connection of a large 
variety of devices to a number of different computer architec¬ 
tures. Unlike the two Altair bus structures and the multitude 
of Variations on the Theme of the S-I00 Bus, the IEEE 488 
bus is carefully designed to be a general purpose structure /'not 
designed to match only a single microprocessor chip pin-out), 
and - even more delightfully - it is completely defined in a 
publication of the IEEE (contact the Standards Office, IEEE, 
345 E 4 7th St, New York, NY 10017). 

This article describes a hardware and software implementa¬ 
tion, connecting a M6800 microprocessor to the 488 bus. It 
should be of particular interest to you hardware hackers, at 
least partially because the soon-to-be-delivered Commodore 
“PET” computer uses the 488 bus and uses the MOS Tech¬ 
nology 6502 - a microprocessor that is quite similar to Moto¬ 
rola’s 6800. 

We are endebted to Jack Grimes, a project manager for Tek- 
tronics and the current Technical Editor for the IEEE Compu¬ 
ter Society‘s Computer magazine, for contributing this article 
to Dr. Dobb’s. He passed it off to us in the Dallas Airport as 
we were all evacuating from the National Computer Confer¬ 
ence, last month. 


INTRODUCTION 

This document describes a working implementation of an 
IEEE 488 peripheral interface. The hardware and firmware de¬ 
scribed within are used to interface a peripheral mass storage 
device (the TEKTRONIX 4924 3M cartridge tape unit) to the 
IEEE 488 general purpose interface bus (GPIB). This imple¬ 
mentation is suitable for medium speed applications (about 
5K bytes/second) which contain a Motorola M6800 micropro¬ 
cessor. The design goal was to achieve a reasonable trade-off 
among transfer speed, cost, and firmware complexity. 

Before beginning the description of this particular interface, 
a brief review of the IEEE 488-1975 standard’s characteristics 
will be presented. The IEEE 488-1975 standard is also called 
the ANSI MCI.1-1975 standard, the proposed IEC bus, the 
ASCII bus, the HP-IB, the GPIB and other names. 

BACKGROUND 

The IEEE 488 interface bus provides an internationally 
standardized communication link among several instruments 
whether they be measurement apparatus, computers, mass 
storage devices, or other peripherals limited only by one’s im¬ 
agination. The charter of the IEEE 488 standard is meant to 
provide the logistics for signal management along the bus con¬ 
necting the system devices. The standard describes the means 
for addressing, handling interrupt conditions and data inter¬ 
change between devices as well as the electrical and mechanical 
specifications for the bus. As with many other standardization 
documents, this standard suffers from lack of readability. 
However, it is complete and thorough. It is the objective of 
this paper to aid in the understanding of the GPIB via a speci¬ 
fic example. 

With the advent of inexpensive microprocessors, reasonably 
sophisticated instruments and systems will become cost-effec¬ 
tive and popular. Since microprocessors allow for greater flexi¬ 
bility and device local processing, this writer feels that the 
GPIB will provide a sufficient means of local data interchange 
for all but the highest speed applications. 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 31 


271 








Devices on the bus are grouped into three functional cate¬ 
gories: 

1) listeners — devices which can receive data from the bus, 

2) talkers — devices which can send data along the bus and, 

3) controllers — devices which provide the management 
function of assigning who talks to whom and when. 

A device may have the capability to assume any, or all, of the 
above three functions. Additionally, there may be only one ac¬ 
tive controller and one active talker at any one time along with 
any number of listeners, (up to 14 as limited by the electrical 
bus loading). When the controller is giving commands, it is the 
talker. All other instruments are forced to be listeners, listen¬ 
ing to the commands. After the controller has finished giving 
commands, the bus is free for data interchange among the de¬ 
vices which have been instructed to communicate by the con¬ 
troller. Although the standard does sufficiently describe the 
logistics of addressing and data transfer, it does not make any 
attempt to describe the content of data messages which are 
passed along the bus. Although incompatible messages may 
seem like a major point, it has proved to be only a minor in¬ 
convenience. This stems from two related phenomena: 

1) devices are somewhat “intelligent” in that they can per¬ 
form some local data processing to format data into a 
palatable state, and 

2) most manufacturers are using the ASCII character code 
in communicating data and status information. 

The GPIB is a byte serial - 8 bit parallel communication 
bus. In addition to the 8 bi-directional data lines there are 3 
handshake control lines and 5 bus management lines. 

The 3 control lines are used to provide a fully synchronized 
byte transfer on the 8 data lines (DIO lines). Thus, byte trans¬ 
fers occur under the control of a three wire handshake. The 
control lines, names and functions, are described below: 

DAV — Data Valid. Asserted by the current talker when 
data is valid. 

NRFD - Not Ready For Data. Asserted when the listening 
devices are not ready to receive data. 

NDAC — Not Data Accepted. Asserted when the current 
data has not been read by all listening devices. 

The 5 bus management lines provide the required functions 
to manage the usage of the bus. In some cases they augment 
information that appears on the data lines. The names and 
functions of these management lines are: 

ATN -- Attention. Asserted by the controller when it is is¬ 
suing commands on the data lines. 

IFC — InterFace Clear. Asserted by the controller to reset 
all devices to the idle state. 

SRQ — Service ReQuest. Asserted by devices to request ser¬ 
vice. This is an asynchronous interrupt request line. 

REN — Remote ENable. Asserted by the controller to acti¬ 
vate the bus. 

EOI — End Or Identify. Optionally asserted by the talker to 
end messages. Also defined for use in a high speed paral¬ 
lel poll of interrupting devices. 

THE DESIGN 

The M6800 microprocessor, and associated firmware, is 
used to drive the GPIB interface hardware and is also used to 
control other functions within the peripheral. The interface 
hardware consists of 1 and 1/2 PIA’s (M6820 — peripheral 
interface adapter), a handful of SSI TTL devices and the re¬ 
quired bus transceivers. The interface firmware uses about 
750 bytes of ROM out of a total of 6K bytes of ROM con¬ 
tained in the 4924. The interface also requires some of the 768 
bytes of R/W memory. 

The hardware has three modes of operation: 

1) IDLE — This is the unaddressed state where the bus driv¬ 
ers are disabled and the hardware is only “listening” to 


attention (ATN) and interface clear (IFC — system re¬ 
set). 

2) LISTEN - In this mode, the hardware is driving the 
NRFD and NDAC handshake lines while listening to the 
DAV handshake line as well as the associated data and 
management lines. The management lines used, in this 
implementation, are ATN and EOI (end or identify) al¬ 
though REN (remote enable) is available for use if neces¬ 
sary. 

3) TALK — In this mode, the hardware is driving the DAV 
handshake line and the appropriate data lines in addition 
to the EOI bus management line while listening to the 
NRFD and NDAC handshake lines. The hardware also 
has the capability of driving SRQ to request service. 

The microprocessor is interrupted by the GPIB hardware 
under the following conditions: 

1) IFC is asserted — Asserting IFC informs the firmware 
that a reset function is required. 

2) ATN transistions — Both the assertion and unassertion 
of ATN causes the M6800 to be interrupted because 
some intervening action is required. 

3) A handshake cycle relevant to the device. The micropro¬ 
cessor is only interrupted to participate in handshake 
cycles that occur on the bus when the device has been 
addressed. (See IDLE above.) If in the LISTEN mode, 
the hardware generates an interrupt when DAV is as¬ 
serted. If in TALK mode, the hardware generates an in¬ 
terrupt when the slowest current listener indicates its 
readiness to receive data by allowing NRFD to go high. 

TWO HANDSHAKE EXAMPLES 

The commands in these examples are given to the system 
controller which is assumed to be a TEKTRONIX 4051. Fur¬ 
thermore, the 4051 provides the other necessary complemen¬ 
tary function, i.e., the talker function in the first sequence and 
the listener function in the second sequence. 

The Listener 

In the first example we execute an ASCII transfer of a logi¬ 
cal record, i.e., the four character data sequence ABC(cr), 
where <cr> represents the ASCII character RETURN. The com¬ 
mand is: 

PRINT @1,12: “ABC” 

which tells device #1 on the bus (our mass storage device) to 
receive (and store) the four data characters A, B, C and <cr>. 
The packets of information presented on the bus are shown in 
Figure 1. A detailed handshake sequence is shown in Figure 2. 

The information packets presented in Figure 1 can be sum¬ 
marized as follows: 

MLA-1 .... The 4051 controller is setting up peripheral 
device # 1 as a listener. 

MSA-12 . . .The 4051 controller is further telling device 
#1 to perform the PRINT command. This is interpreted 
as My Secondary Address (MSA) #12 or my PRINT 
command. This byte tells the peripheral device that an 
ASCII transfer is coming from a talker on the bus. 

ABC<cr> . . . The controller has now changed roles and is 
an ordinary talker transmitting data. The data sent is the 
ASCII data to be stored in the buffer and eventually 
stored on the magnetic media. 

UNL .The controller has finished the command and 

is telling the peripheral to get off the bus (stop listen¬ 
ing)- 

The text which follows, along with Figures 2 and 3, describe in 
detail the hardware/firmware/bus interactions. (Figure 3 is a 
pull-out schematic in the back of this application note.) 


Page 32 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 






































1) ATN is asserted — This tells all peripherals on the GPIB 
that the controller is going to send a command (or ad¬ 
dress) to all peripherals and they must listen. The asser¬ 
tion of ATN causes an interrupt in the M6800 to inform 
the firmware of the event. ATN also causes the NRFD 
and NDAC handshake drivers to be placed on the bus 
in preparation for receiving of the address byte. 

2) DAV (data valid) is asserted — This informs the devices 
connected to the GPIB that the data appearing on the 
DIO (data) lines is valid and ready for action. Since ATN 
is also asserted, the peripherals interpret the data byte as 
a command (the primary address — MLA-1 in Fig. 1). 
The assertion of DAV causes an interrupt in the M6800 
via the HAND line (CA1 - U315 pin 40 in Figure 3) 
(note: This line is alternately used in TALK mode when 
NRFD goes high). The information presented on the 
data lines is interpreted by the peripheral to be its 
primary listen address. This is determined by the firm¬ 
ware looking at the address switches and comparing 
them with the address received over the bus. Upon 
determining that the peripheral has been addressed, the 
firmware proceeds to enable the addressed bit (PB6 - 
U315 pin 16 in Figure 3) so that the hardware will be in 
the proper listen state after the controller is through 
talking, e.g., ATN goes high. Then the firmware advances 
to the next state. Meanwhile the hardware has caused 
NRFD (Not Ready For Data) to go low, indicating that 
the device is not ready to receive data. 

Page 34 


3) A SHAKE pulse is issued by the firmware. This shake 
pulse causes the R-S flip-flop (U5a - U5b in Figure 3) to 
enter the reset state which in turn allows NDAC (Not 
Data ACcept) to go high indicating to the controller that 
the data has been accepted. Upon seeing NDAC high, the 
controller proceeds to un-assert DAV (set high) while it 
prepares the next byte. DAV going high causes the hard¬ 
ware to set NRFD high as well as setting the R-S flip- 
flop allowing NDAC to go low. The hardware is now 
ready to receive the next byte. 

4) The controller then issues the secondary address 12 
which the peripheral accepts as before. The information 
passed across the GPIB thus far has set device # 1 (our 
device) as a listener (MLA-1), and has told it via the se¬ 
condary address (MSA-12) to prepare for a PRINT com¬ 
mand, where the data following shall be interpreted as 
data to be stored in the current open file. 

5) ATN goes high. Attention going high informs the peri¬ 
pherals on the bus that the controller is finished giving 
orders and the bus in now free for data interchange. This 
second transition of attention again causes an interrupt 
in the M6800 to inform the firmware of the change of 
state and the hardware acts accordingly. Since this peri¬ 
pheral was instructed to enter the listen state, the hard¬ 
ware stays in the LISTEN mode as determined by the 
ADDRESSED, and TALK/LISTEN lines which were set 
appropriately in step 2. If the peripheral had not been 
addressed, the ADDRESSED line would have been left 
un-asserted and the drivers would have been off the bus 
so data interchange among other peripherals could pro¬ 
ceed at a rate unrelated to the speed of this device. 

6) The talker (also the controller in this example) proceeds 
to send the four characters of information as data. Once 
again DAV is asserted, which causes an interrupt in the 
M6800 and the data to be read. This process is repeated 
until all appropriate data is sent and received, at which 
point the controller steps in again and sends the unlisten 
(UNL) or unaddress command. 

7) Upon receiving the unaddress command, the peripheral 
gets off the bus and begins executing the command re¬ 
quested which in this case was to store four characters of 
data. 

Note that normal data transfers, those without ATN as¬ 
serted, cause the firmware to store the data received in a buf¬ 
fer rather than being acted upon one byte at a time. This buf¬ 
fering is done for three reasons: 

1) Buffering allows data transfers at a maximum rate. 

2) It is somewhat simpler to write conversion routines and 
scanners when a whole buffer is available at a time. 

3) This peripheral is a magnetic tape drive and requires the 
data to be buffered into physical blocks before accessing 
the actual recording media. 

When looking at the firmware listing that follows this dis¬ 
cussion, note that ocassionally the hardware can be placed into 
a suspended state. These suspended states are envoked when a 
buffer becomes full or when the monitor (overall peripheral 
control program) is off doing simething more important, like 
completing the excution of the last command. While in one of 
these suspended states, the hardware is left “sitting” on the 
bus refusing to handshake which effectively holds everything. 
When the monitor has completed the condition that caused 
the suspended state to be envoked, it can subsequently restart 
the handshake. One aspect of this buffer management scheme 
is that it is typical to receive an unaddress command (UNL or 
UNT) to execute every command (MSA). The unaddress 
forces the monitor to come out from the idle state and process 
the current buffer even though it is not full. This generates a 
clean solution because each command is explicitly delimited. 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


274 





The Talker 

A peripheral talk sequence proceeds in much the same way 
as the listen sequence perviously discussed and will be illustra¬ 
ted by executing an input data request. The command being 
performed is: 

INPUT @1:A$ 

This command requests device #1 to send a data stream from 
the currently open file. The bus information packets are 
shown in Figure 4. The handshake detail is shown in Figure 2. 


u~ u umru L_r 




r 


Fig. H. INPUT @1 :A$ 


A detailed discussion of Figure 4: 

1) The first two command bytes, those sent with ATN as¬ 
serted, are handled by the hardware/firmware in much 
the same way as the previous example. However, since 
the first byte instructed the device to enter the talk 
mode, communicated by the designation MTA-1 (My 
Talk Address), the firmware asserts the ADDRESSED 
line and sets the TALK/LISTEN line to the TALK 
mode. This allows the hardware to enter the TALK state 
after ATN goes away. 

2) When ATN does go away the processor is interrupted, at 
which point it reverses the data registers so that they can 
be used for output. 

3) As the last (slowest) listening device becomes ready to 
receive data, the NRFD line goes high. NRFD going high 
causes an interrupt via the HAND line, this in-turn tells 
the firmware to put a data byte on the DIO (data) lines 
and to issue the SHAKE pulse. 

4) While in the TALK state, a SHAKE pulse controls a sec¬ 
ond R-S flip-flop (U5c - U5d in Figure 3). SHAKE puts 
the flip-flop into the Set state which in turn asserts the 
DAV line on the bus, indicating that the data is valid. As 
the slowest listener accepts the data, the NDAC line is 
driven high. This action Resets the flip-flop, taking away 
DAV, and allows the listeners to once again enter the 
RFD (Ready For Data) state. 

5) As the RFD state of the listener is reached, an interrupt 
is once again received on the HAND line and the process 
repeats itself until the controller is satisfied that enough 
data has been passed at which point attention (ATN) is 
reasserted. 

6) This example is a special case where the controller and 
listener are the same device. In general, the TALKER 
asserts EOI with the last byte of the transfer, thereby 
signalling the CONTROLLER that the data transfer is 
complete. 


7) ATN is asserted by the CONTROLLER. At this point, 
the hardware is forced into a listen state by some appro¬ 
priate gating. The firmware is informed of this action by 
an interrupt on the attention line and proceeds to inter¬ 
pret further interrupts of the HAND line as being data to 
be received (note: the data register must be turned a- 
round to receive data). Since the message received was 
an Untalk (UNT) the firmware informs the hardware of 
this change in state by clearing the ADDRESSED line 
and setting the TALK/LISTEN bit back to the LISTEN 
mode. 

While in theTALK mode, the bus can be suspended by run¬ 
ning out of data in a buffer. This generally calls on the moni¬ 
tor to get another physical buffer from the tape. After getting 
more data to work with, the handshake is continued. 

MISCELLANEOUS COMMENTS 

Following are some general implementation comments 
and/or suggestions. 

The EOI (End Or Identify) line is presented as a level and 
can be received or transmitted by the firmware when required. 
In this particular implementation the EOI line is used during 
some operations to indicate the end of information or end of 
file. 

SRQ — This line may be activated by the firmware for re¬ 
questing service. In the 4924, it is used primarily to indicate 
that an error condition exists. For example, a write operation 
was commanded when the media was write protected. 

A digital debounce chip (U115 M14490 in Figure 3) is in¬ 
cluded on the control lines to help control noise problems. 
However, the delay also slows down the bus and it may be 
eliminated. 

The careful observer will note that the hardware does not 
really get off the bus when IFC is asserted. The IFC function is 
executed by the firmware and as such may take longer than 
100 uSec. to execute. This is not considered too serious but 
can be corrected with the addition of a latch and some appro¬ 
priate gates and a clearing mechanism. 

NOBODY — This line is asserted anytime both NRFD and 
NDAC are sensed high. This condition means that nobody is 
listening to the bus which is considered an error state if some¬ 
one is talking. It is appropriate that the talking device either 
exit from its talk state or wait until some is listening. As an 
aside, in this implementation it was decided that the device 
would wait if nobody was on the bus and it was operating in 
the normal on-line mode. However, if it was operating in the 
off-line data logging mode (with no controller, it uses a front 
panel) the device would exit from the current command. 

Acknowledgments: C. Roger Muller and Lang Lok were re¬ 
sponsible for the development of the hardware used in this 
interface. 

MACROASSEMBLER LISTING 

The following is a macroassembler listing which is sub¬ 
stantially the same as the interface driver program used in the 
TEKTRONIX 4924. This listing is believed to be accurate and 
correct. However, the usual disclaimer that exists for all soft¬ 
ware, applies here, too. 


GPIB INTERFACE AN EXAMPLE RT-11 MM AC VM02-10 
ll-Jan-77 22:34:27 
TABLE OF CONTENTS 

1- 3 INTRODUCTION 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 35 


275 




4- 1 GLOBAL DECLARATIONS 

5- 1 MONITR EXAMPLE MONITOR FOR GPIB 

INTERFACE 

6- 1 HWISRV INTERFACE INTERRUPT HANDLER 

7- I UTILS - IFC, UNDRES, SETSRQ 

8- 1 ATNTRU - ATN, HAS BECOME TRUE 

9- 1 ATNFAL - ATN, HAS BECOME FALSE 

10- 1 HANDSK - DAV, OR NRFD CONTROL 

11- 1 ATNBYT - ACCEPT ATTENTION COMMAND 

BYTE 

12- 1 MLASUB, MTASUB- PRIMARY ADDRESS 

REQUEST 

13- 1 SPE-SERIAL POLL CONTROL 

14- 1 RCVBYT - ENTER A DATA BYTE INTO BUFFER 

15- 1 SNDBYT - SEND A DATA BYTE FROM THE 

BUFFER 

17- 1 TLKTBL, LSNTBL - SEC, ADR, TABLES 

18- 1 IECRST - RESTARTS HANDSHAKES AFTER A 

SUSPENSION 

19- 1 PIASET - PIA INITIALIZATION 

20- 1 PIATBL’S - PIA DEF.’S AND INIT TABLES 

GPIB INTERFACE AN EXAMPLE RT-11 MMAC VM02-10 
1 l-Jan-77 22:34:27 PAGE 1 

.TITLE GPIB INTERFACE AN EXAMPLE 
FNARI FTC 

' SBTTL INTRODUCTION 


FLOW OF CONTROL 


. . SNDBYT 


..SPE 
.. UNDRES 


ATN true 
interrupt 


ATN false 
interrupt 


HAND 

interrupt 


.... Check the status of the system and per¬ 
forms the following appropriate functions. 

1) No command active or an error condi¬ 
tion — transmit an end-of-file byte (256.) 
with EOI and returns. 

2) Command active but buffer empty — sus¬ 
pends handshake and informs monitor that 
the buffer is empty. When the monitor has 
new data available it will cause the hand¬ 
shake to proceed. 

3) Command active and data available (the 
normal case) — sends a byte from the 
buffer. 

.... Forms the serial poll response byte and 
transmits that byte. 

.... Inform the monitor that the unaddress 
has occurred. Tell the hardware to enter 
the IDLE state .... SHAKER. 

.... ATNTRU, ATNTR 

Sets the attention tlag (ATNFG := 255.). 
Sets the hardware into LISTEN mode and 
enables HAND interrupts. 

.... ATNFAL, ATNFLS 

Clears the attention flag (ATNFG := 0). 
Sets the hardware into TALK, LISTEN, or 
IDLE state as indicated by the hardware 
mode status byte HWMODE. 

.. .. HANDSK 

Dispatches according to the present state. 

1) ATN true (ATNFG set) .... ATNBYT 

2) LISTEN mode .... RCVBYT 

3) TALK mode and not in SERIAL POLL 
state .... SNDBYT 

4) TALK mode and in SERIAL POLL 
state .... SPE 


The following pages present a verbal picture for the flow of 
control through the firmware code which is contained in the 
assembler listing. This picture is to provide an aid in wading 
(nay drowning) through the actual listing. The major flow of 
control is depicted but a few nuances have been omitted here 
for clarity. Routine names will be shown in capital letters with 
linkages indicated by a series of dots. Four dots indicate calls 
to routines. Two dots indicate entry points. 


INTERRUPT LEVEL FLOW OF CONTROL 


IFC 

interrupt 
. . RCVBYT 


.. SHAKER 


.... IFC,IFC1 

Resets interface PIA to idle state. Sends 
cleanup command (CLRCMD) to the moni¬ 
tor. 

.... Checks the status of the system and per¬ 
forms the following appropriate functions. 

1) No command active or an error condi¬ 
tion — receive the byte and discard it. 

2) Command active but no buffer space avail- • 
able — suspends the handshake to wait for 
new buffer space. Monitor will restart the 
handshake when the buffer space is free. 

3) Command active and data available (the 
normal case) - accept the data byte and 
enter it into the buffer. 

.... Issues the SHAKE pulse to the hardware 
to allow the handshake to complete. 


MAJOR SUBROUTINES 


. .ATNBYT 


. .MLASUB 


.. MSACMD 

..MTASUB 


... Reads current data byte and dispatches 
accordingly. 

1) Any LISTEN address .... MLASUB 

2) Any TALK address .... MTASUB 

3) Addressed state and any SECONDARY 
address .... MSACMD 

4) SERIAL POLL ENABLE sets the serial 
poll enabled flag (SPEFG := 0) 

6) Other .... SHAKER 

... Dispatches as follows based on the data 
byte. 


1) If UNLISTEN .... UNDRES 

2) If MY LISTEN ADDRESS set LISTEN 
state .... SHAKER 

3) Others .... SHAKER 

... Takes the secondary address as the com¬ 
mand and forms the control pointers to in¬ 
form the monitor of the command pend¬ 
ing. Then .... SHAKER. 

. . . Dispatches as follows based on the data 
byte. 

1) If UNTALK .... UNDRES 

2) If MY TALK ADDRESS set TALK 
state .... SHAKER 

3) Others .... SHAKER 


Page 36 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


276 



c 

0 

0 

2 


•AJ 


rvj 

r\j 


co 

2 

O 


LJ 

oJ 

o 














•— 







4 

•— 

























4 



jO 

4 





o 


o 














X 




D 




> 





X 


E 














X* 

0 



O 



C 

4 





C 














TO 



4 



E 

-X 


o 

*— 





-v- 


0 












« 


2 

X 




u 


•— 





E 



C 












— 



O 



x 

o 


X 

E 




o 

• 


•»> 












£1 


TO 

X* 


c 

4 

•— 


4 

4 




X 

X X 














0 


4 

0 


o 

E 

Q 


O 

X 




X 

4 0 


X 










0 


C 


0 




X 




a 





x x: 


X 










U 


4 


3 

u 



O 

U 


c 

o 




0 

x u 


o 










a- 





c 


c 

X 

c 


3 

X 



M 

X 

3 

« 








O 



*-* 


•— 


a> 

4 

a 

4 


4 

X 

E 

a 



Q_ 

> .O 2 

X 

C 







4 

TO 


J 


4 — 


4 


4 

X 

4 

E 

o 

E 





£3 

4 

0 

-v- 

X x 

0 





13 

4 


X 


x O 


X 

0> 

X 

X* 

X 

E 

X 

O 

X) 


CL 

.c 


x C 

X 


3 3 

X 





C 

D 


4- 


> a 

4 


4 


4 

4 

O 

•w 

u 

c 



o 

4 

3 

X 

X 

a a 

X 



O 


4 

C 


0 


X) 

3 

X 

X 

X* 


C 

o 

c 


© 


4 

X 


a 

3 

•V. 

c c 

o 



4 


a 

4 


0 


•— 

X 

3 


3 

© 

X 


o 

c 



C 

V 

O 

X X 

X) 






O 

T3 

© 

Q 


C 


*-• © 

X 

O 

•— 

O 

X* 

4 

i 

E 


«_ 


•w- 

l 

C 

3 3 


X 


0 



C 

4 


© 

Q 

3 


o -— 



o 


•— 

X 

4 


© 

4 


.— 

0 

4 

O x 

X 

o 

__ 

E> 



4 

D 

© 


4 

2 


uJ «- 

2 

c 

X 

O 



c 

> 

E 

> 

< 



© 

© 

3 

X 

O 0 

o 

© 


Q 

C 


0 

O 

X 


4 

»- 

c 

X 

c 

X* 

4 


-Q 


4 

►-« 

•— 

0 


X 

a 

V 

> > 

£ 

x> 


© 

4 

• 


C. 

♦ 


O 0 

< 

c 

C 

c 

a 


o 


4 

—- 

CL 

O 

© 

O 

C O 

c 

C 

0 4 


o 

4 

3 

a 

© 

• 

4 

0 


x 



o 


4 

C 

X 

TO 

X 



X 

4 

X 

4 x 

-w- 

O 

m— w— 

© 

E 

D 

© 

© 

x 

0 

a 

Q 


i_ 

X 

a 

o 

C 1 

O 



O 

X 

X 

4 

X 

X 


X 


E 


x 


O 



D 

4 

0 

E 


l o 

o 

4 


4 

X 


X 

0 


Cl 

X 

C 

O 

0 

X 0 

X 


L> U 

« 

C 

E 

C 

© 

4 

X 

3 

2 


4 *- 


X 

© 

X 

4 


0 

3 

0 

3 

o 

o 

O 

C 

3 C 

c 

X 

T3 -O 


4 


4 



o 

0 

X 


x 



X 



•v- 

X 


■V 

X 

X3 

o 

o 


o •- 

4 

-D 


X> 

fez 

J* 

x 

M 

• 

X) 


♦ 


C 0“ 

a 

x 

4 

X 1 

4 


C 

1 


4 




X 

X 

X 


* X5 

X 

« 

—- 

© 

— 


« 

l_> 

© 


© 

o 

c 

4 

C 

E 

X 

-V- 

1 

o 

X 

U 

o 

o 

3 

0 3 

X 

X 

c c 

0 


0 

— 

4 

c_ 

c 

a_ 

-* 


o — 

—- 

O 


o 

« 

4 

c 

1 

c 

C 

4 

4 

4 

O 

SL O 

D 

4 

X 0 

I 

—- 

x 

—- 

x 

a 

3 

*—* 

•— 

Q 

CL U_ 

Lx 

O 

O 

o 

CO 

CO 

a. 


<1 

•—i 

►H 

M 

*—« 

cr 

*- o: 

X) 

<o 

< X 









x 

0 
























•- 




2 

3 


•>* 

•*. 








M. 










X © 

4- I 

(0 c 

• C I 

© » © » 

x co —-in 

c r\j >o f\j 3 uO 

<o ^w^co*Hf\j^x rvj 




c 

UJ 










CL 



-< 

■< 

CD 

X 

o 

o 

>< 

CD 

cr 


F— 

2 



• 

<1 

o 

o 










»— 

o 

o o 

O 

O 

cr 

_J 

X 

a 

CL 

o 

>- 

>- 

M 

• 


C 

CD 

t> 

o 










C_ 

a 

lx 

Lu 

lx 

UJ 

UJ 

lx 


o 

O 

<■ 

CL 

XI 

-J 

o 

• 

O 

O 


X 










*—i 

iAJ 

2 

CL 

CL 

cr 

CL 

*— 

2 


< 

*a 

O 

-> 

L. 


X 

—> 

_J 

z> 

£ 










C) 

X 

»— 

2 

»— 

2 

l — 

_J 

UJ 

•—« 

M 

M 

2 

LJ 

lx 



1 

to 

c 

X 










LXJ 

cn 


l_> 

Q 

l_> 

O 

< 

2 

a 

CL 

CL 

CO 

CC 

O 

u 

n 

—* 


0 


ft 

u 

M 

II 

If 

U 

II 

II 

II 




















© 




0 

0 


© 

© 

Q 

C 

-J 

— » 

_» 


_J 

_J 

_J 

_» 

-J 

_j 

_J 

_* 

_J 

_J 

_J 

_J 

—i 



. — 

CD 

c 

JH 

C 

or 

© 

0 

L_> 

0 

© 

CD 

CD 

CD 

X> 

CD 

C 

ID 

u 

X 

CD 

CD 

CD 

CD 

X 

X 

>• 



►— 

0 

O 

© 

— 

© 

. — 

0 

c 

U 

3 

3 

O 

O 

O 

o 

O 

c* 

O 

o 

o 

O 

O 

O 

O 

Cj 

o 




cc 

-D 

-J 

-— 

X 

•— 

X 

fc 

3 

M 

© 

© 


-1 

-1 

-3 

—1 

—i 

— 1 

— 1 

—I 

_J 

_1 

_J 

-J 

_| 

_J 

2 

o 

—s 

to 

o 

o 

2 

2 

2 

2 

2 

2 

2 

2 

2 

o 

o 

o 

t3 O 

to 

O 

CD 

o 

o 

L0 

o 

o 

o 

o 

1— 

2 

1 

• 

— 

• 

r 

X 

X 

X 

T 

T 

T 

I 

X 

• 

■ 

• 

• 

• 

• 

• 

• 


• 

• 

• 

• 

• 

• 

< 

X 


r\j 

s 


4 

F 

O 

cn 


a 

2 

<t 

V 

uj to 
2 
2 O 
<3 *—< 
►— 
UJ c 
o cr 

<r -c* 

U. _J 

a o 

U J i-L.- 

V- o 


CD SC 

o 

CL -J 

o cs 


e> eo 

—« CU 

c- s- 

X 13 


'OJK'.CJLTl'C^'COCr' K) —• OJ rO Cj IT MO O' CT in <0 N S) a S' 

^• —t —« —<—«*-»r\jr\]f\jfVirjf\irjf\i<\jfu^K>KiKiio»OKiKiK'ro^ 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 


277 





GPIB IMTCHF ACE! AivJ EXAMPLE RT-ll m*ac VM 0^-10 ll-Jan -77 22 » 3 <U 27 

HQMITR EXAMPLE monitor F OR UP IB INTERFACE 




























Q 

•- 






























3 

O' 






























ft 

c 






















• 


ID 






C 








m 















ft 


ft 






ft 

X 






















o 


r 

• 





ft 








oj 















•»- 


C 

x> 





w— 

ft 







o 















> 


ft 

ft 





O 

E 







=3 















ft 


G 

4 -» 






O 











• 











ft 

•B 

0 

ft 





E 

0 







X 




> 











0 

T 3 

3 

ft 





ft 












ft 



• 









ft 

0 

V* 





O 

ft 






a: 

.z 




o 


• 

ft 







• 

o 

ft 


0 





■*- 

o 




UJ 


V* 

o 




E 


ft 

U 







AJ 

ft 

•V- 

ft 

ft 





ft 

*♦- 




O 

© 


cr 




ft 


ft 

ft 








ft 

3 


ft 





ft 





<r 

> 


»— 




E 


A-» 

<•- 


X? 



•k 



c 

a 

C 






G 

a 




k. 

ft 

O 







c 

ft 


c 

» 


* 

X) 

M 


o 

•w- 

ft 






c 




cr 

ft 


UJ 




< 



ft 


ft 

0 


o 

ft 

0 

0 

ft 


G 



• 

0 

O 

-m- 




uJ 

47 ) 

c 

►— 




X 


o 

4 -» 



ft 


c 

A-» 

ft 

ft 


0 




ft 

3 

4 -* 

A-* 




►— 


o 





or 


a 

c 


0 

X 



0 

O 

ft 


nr- 

o 



ft 

4 »* 






-z 

o 

-w- 

Cl 

C 






•w- 


0 

o 


0 

ft 

o 

>♦- 



4 -* 



ft 

ft 

D 

ft 




M 

AJ 

M 

XL 

o 



c 





ft 

AJ 


A> 

3 

ft 



ft 




2 

4 -* 

ft 

2 






ft 


•V 



•v> 


o 

CD 


ft 



G 

a 

Q 

3 

» 

ft 

0 



X) 

0 

ft 





X 

a- 

4 ) 


m* 

c 



—• 

ft 

»—• 


T 3 



3 

ft 


G 

c_ 

c 

D 



ft 


C 

a 




M 

c 

> 

c 

ft 

c 


4 * 

0 

A-s 

CL 


17 

0 


ft 

ft 

o 


ft 

2 

ft 



ft 

ft 


o 




CL 




M 



c 


0 

O 


ft 



ft 


G 

> 

>♦- 

o 

ft 


« 

X 

o 

C 

o 




CD 

V* 

x 





-v- 

a 





-— 


ft 

X) 


C 

>♦- 

ft 

C 


x: 


A-* 

ft 

r— 





a 

ft 

X 

r— 

3 


o 

3 

ft 

ft 


ft 

ft 


AJ 

c 

X> 

ft 

3 

ft 



o 

ft* 

•»- 

X 





cr 

— 


ft 

ft 

o 


a 

ft 

Nl 



X 

c 


c 

ft 

C 


Q 

XL 

x> 



ft 

c 

w 

44 




o 

4 — 

u- 

0 

-m- 




ft 


*-> 


A-> 

ft 



F 

« 




c 


ft 

ft 

o 


0 




U- 


nr- 

3 

AJ 



4 -» 

ft 

— 




G 



E 

E 

«SP- 

ft 


ft 


c. 

ft» 

E 

9 

3 

ft 




• 

•— 



0 


0 


ft 

Q 


Q 



ft 

O 

E 


U 

•- 



© 

0 


cr 

—» 

X 



cr 


Q 

X 

c 

•m- 


ft 

C 


3 


3 

AA 


•— 

o 

O 

-X 

nr- 


ft 


2 

ft 

X 

ft 


4 -* 



o 

x 

E 



XL 


XL 


A- 




c 


G 


o 

O 

> 

V 

4 J 


E 5 

ft 

u 

c 

ft 




*- 

—* 


.— 


+-> 


& 



■*-» 


A-> 

o 


ft 

* 


ft 

ft 

0 

ft 


ft 


© 


0 






0 

ft 

<1 



•V 

o 

c 

ft 


ft 

ft 


L 

ft 


X 

ft 

ft 

ft* 


ft 

o 

XL 

♦- 

•— 

o 




c 


3 

1—4 

ft. 


X 

7 T 

*—1 

co 


CO 



UJ 

2. 

*—« 

<_> 

CO 

*- 

0 


X 

CD 

O 


UJ 




o 


V 

-*-> 

CL 

o 























F 



21 


ft 

O 


*•- 




•V. 







•«. 

M. 

■> 

•*. 


•n. 


M. 

•*. 

•«. 

mm. 


ft 




o 

4 ) 

ft 

C 


• 






















O 



UJ 

ft 

> 


© 

0 

cr 






















**- 



_J 

U 


0 

> 


c 

























CL 

3 


ft 

• 4 ^ 

— 























4 -* 



2 

*— 


c 


a 























ft 



•< 

O 

m 

— 

n 

© 

0 






















o 



X 

c 

-m- 

w 


A» 

—- 






















X 



UJ 



3 

ft 


r— 






















0 


0 



X 

O 


X 











T) 


X> 


O 





X) 





c 


a) 

c 

ft 

Q 

c 

0 




« 


ft 




«. 






G 






> 


o 

cr 

L 

ft 


C 

© 




E 

• 4 - 

4 -» 





D 

4 -> 

4 -* 

4 -f 

ft 


0 


A* 

ft 

AJ 


.— 


~m~ 

>— 



l. 

XJ 


X 

E 


ft 

G 

ft 

G 


ft 


E 

ft 

4 -» 

« 

XJ 


3 


0 

T> 

ft 


e 

• 

A< 

»—» 


c 

o 


ft 

A> 

c 


ft 

O 

0 

T 


0 


U 

G 

« 

a 

O 


0 


ft 

O 

Q 

ft 

© 

ft 

O 


0 

o 

*-* 

© 

x 


ft 


*»- 

ft 

ft 

-O 


ft 


2 

0 

ft 

0 

E 


2 


o 

E 

0 

— 

ft 

ft 

c 

O 

ft 

-r- 



o 


•»- 


X 

M 


X 




ft 




2 


I 


ft 

E 

■v 

X 

c. 

X 

3 

2 

•— 

4 -* 

c 

0 

o 

o 

t 


« 

« 

CL 



CL 



O 

XI 

o 

X 




A —1 

O 

o 

M 

XJ 

u 

u_ 


3 

ft 

o 

























X 

4 -* 



x 

ft 

E 


ft 

U 






















ft 

ft 


—1 

o 

V 


*-* 

X 

C 

,— 























,— 

»- 

e 

0 

X 

ft 

»— 

1 > 

G 











<■ 


< 


< 



< 



ft 

0 

G 

X- 


3 

C 

0 



O 





















X 


O 

CC 

i 

r— 

© 

ft 


ft 

»— 

--- 

0 

X 

ft 

X 


ft 


X 

ft 

ft 

ft 

ft 


A* 

a 

ft 

ft 

■v 

ft 

A-» 

X 

.— 

</> 

o 

— 



* 

X 

o 

ft 

T 3 

T) 

0 

n 


0 

— 

T> 

c 

T 7 

c 

X> 


T- 

ft 

0 

T* 

F 

ft 



O 

• 

> 4 - 

■»- 

G 

a 

ft 

4-4 

• 

CO 

_J 

_J 

-> 

_j 



o 


CD 


cr 

_J 


fD 

CD 

■“> 

_J X 

CD 

0 

X 

. • 




3 


c 























•9- 

c 



t 

C 

ft 

•• 


A-* 














•• 









ft 



0 

X 

ft 

4 ) 

4 -* 

© 


•« 












r 








0 

E 



0 ) 


2 

*-» 

3 











•• 




* 









E 



X 

0 

C 

O 

O 

0 


ft 








ft 




«. 








X 

O 



f— 

O 

G 

Z 

ft 

-r- 


© 








•— 









mm 



*— 

u 










4 -> 








T> 




o 





kf\ 









—• 

•** 

•** 



CO 








M 




M 





—A 


•a. 


M. • 

M. 


O A * * i 

& u eo o- no 

SC. CO *1 
n no -o po 

3 3 3 3 3 


o o o 

S ^ 3 a 3 

O 3 3 3 


LD * CD 

Q i/i G i\' O' 

3 3 r- 3 3 LJ 

no 


u. uj u q l; o uj li ^ £ >c «o 

SIOUDU (Tl 3 D Oi O' Td O 


IT N O O CD Q 

to oj cr cr oj ro 








<x 

Q 

C. 

-4 

fO 

ify 


O' 

* 

O 

U. 

OJ 

CT 

G 


s 

3 

«S- 

3 

3 

n—• 

• 4 

n-4 


4-* 

4—4 

4—4 

4-4 

4-4 

OJ OJ 

OJ 

o 

E> 

S) 


S s. 

07 

G 

Cl 


3 

s 

3 

3 

3 

c. 

3 

3 

a 

3 

Cl 

Cl 


3 

K 

S) 


Q 

3 

CSp 

S 

3 

o 

Q 

3 

3 

NO 

J 

IT 

G 

N C O' 

S. 

• 4 

OJ 

'O 


LO G 

r- 

CG 

cr 

3 

4-4 

OJ 

—-4 

*-* 

—* 

—4 


r\j 

f\j 

ro 

r\j oj rvj c\j 

OJ 

OJ OJ 

NO rO 

NO 


Page 38 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


278 


0^28 80 0000G nisneti J9r Function ; Go to appropriate function 

0028 20 EC Rpa Idle,a j Re-enter Idle loop. 





M 

U 

X) 


» v 
< <0 





T? 




© 

X 


c 




© 




X 

o 


© 




0 



c 

4J 

3 


X 




A 



© 


A 


V 




« 

© 



c 







a 

X 


< 


U 


m 


X 



© 






o> 


UJ 


a 



•ft 

A 



© 


_J 

4i 


A 


A 

4J 

© 


X 


o 

C 


4J 


ot 

-w- 





z 

—- 


a 


© 

-Q 

o 


.— 


c 

u 

o 

o 


ft- 


E 


o 


X 

3 

ft. 

&. 



4J 



X 



O 

4J 

ft. 


•— 

a 

a 

4^ 

4-» 


a 

X 

c 

© 


o 

3 

A 

© 

c 


Ql 


o 



ft- 

X 

A 

X 

o 


3 

i 

o 

c 


4J 

X 

© 

U 

u 


X 

o 




c 

© 

C 




X 


u 



o 

V 

> 

X 

© 


a 

> 

A 

© 


o 

C 

•w 

u 

X 


a 

k. 

© 

ft. 




A 

3 

4-» 


z 

© 


o 


*4- 


ft. 

0 



ft—ft 


a 

fc 


o 

© 

3 


T> 




© 


A 


X 

O 

o 

9 


UJ 

*-> 

x 

o 

ft. 

A 

w 

© 

© 

© 

a 

(-) 

Q 


c 

© 

4-> 


X 

X 

X 

rv, 


3 

4J 


V 

c 

01 

s 

3 


•• 

a 

ft- 

Q 

*— 

A 

© 

c 

• 

0> 


CT 

X 

ft. 

3 

•V 

<*_ 

*-* 

V 

■D U 



*0 

UJ 

© 

«_ 

a 

C* 

c 

a 

C © 

»► 

■v 

•• 

a 

u 

ft. 

z 

© 

o 

4-» 

A 0 

c 


ru 

2 

C 

© 

z> 

ft- 

u 

© 

0 

o 


rvj 

M 

--- 

4J 




eo 

• -»-■ 

u 

• 




c 

A 

A 

© 

© 

A E 


1 

a 


s 

•»- 

> 

D 

X 

ft. 

O 

A 

1 

a 

>• 

© 


ft- 

X» 

■*J 


© © 

•«- 


• 

X 

> 

© 

m 



© 

«- 3 


—* 

C 

CO 

—- 

c 

•w 

u 

© 

X 


© 

• 


M 

A 

o 

2 

© 

> 

o 

— C 

X 

X 

—> 

X 

X 


X 


A 


o © 

© 

X 

l 

X 

X 

a 

V 


A 

© 

«- o 

2 

X 

-Hi 


u 

c 


© 


X) 

4 J 

t: 

< 

a 


© 


3. 

X 

X 


C A 

X 

*—* 


_l 

x 

u 

c 


a- 

>- 

O 4-t 

© 

a 


a 

K 

•*- 



© 

H— 

«j a 

X 



a 


> 

c 

c 

(. 

© 

3 


X 

3 

co 

© 

ft. 

c 

•*“ 

c 

> 

T> x 

© 

n 

a 

<o 


© 

—- 


o 

•— 

© «- 

X 

_j 

1 

• 

A 

A 

a 

o> 


u 

> © 

*-* 


ru 




© 

c 

9 

u 

© 


i 

s 



ft- 

Xi 


a 

© 

» C 


i 

X 


A 

© 


O 

© 

a 

■v- 

© 

i 

>■ 



*-* 

© 

c 

c 

A 

© 





X 


X 

© 

c 

© 

X G 

o 

c 



a 

< 

a 


<_> 

cr 

►— 2 

z 



cj 


—• 

© 

© 









—• 

ft. 

X 









—♦ 

© 

© 









—• 

X 

X 










u 

4-» 









2 











O 

■4-* 

4^ 









T) 

a 

a 









C 

3 

3 










X 

X 









X * 

X 

X 








4-» 


© 

© 








a 

4/ 

4-» 









x* 3 

• c 

c 

c 





V* 

© 


a x 

X 






O- 

X 

0 


3 X 

C V 






TD 

© 

m — 

© 

x V 

-w- 

o 

o 




© 

2 

m 

3 

X 4> 

C7> ^ 

c 

c 



4~> 

—j 

9 

'9- 

X 

© c 

o ^ 




r- 


X 



4^ 


E O 

H- 

*4- 




• 

C» 

» 


c 

o 

■»- 



© 

© 

A 

c 

2 

2 

— © 

X © 

© 


© 

4-» 

o 

0 


4- 

4- 

o 

0 

■O T? 

x> 

u 

X 

v 

to 

o 

<■ 

-< 

© — 

c c 

c — 

c 

-m- 

© 

> 


c* 



X > 

•— 

3 A 

3 

A 

A 

X 

z. 


© 

© 

© X 

© o 

O 

c 


0 

© 

¥— 

2 

O 

O 

X © 

*-» 

X -«t 

X 

cn 

© 

A 


4— 

•V 

•»- 

A A 

C A 

© 

o 



1 


•< 

> 

> 

D V 


4m> 


4> 

O 

A 

• 

• 

X 

X 

C A 

to © 

o © 

o 

© 

*4- 

© 

O 

O 

© 

© 

A © 

£ _J 

o o 

o 

LS 

4-4 

>■ 

z 

z 

CO 

CO 

X >- 


o —• 



. 4 

Q C: 

3 

o 

—t 



«4 

o 

o 

o 

o 



o 



O 


- 1 

•—I 


• 


k. 



1 

»-« 


1 



%, 









> < < 



c 

<1 

<1 

<1 

CO 

CD 



CD 

CD 

CO 

CO 


ft—• 


CD •-« 


_j 

3 

X 

a o a 

s> 


a 

O 

o 

CD 

o a 

<3 


a 

CD 

CD 

CD 

CD 



CD *. 


< 

a o 

CO 

A UJ C 

o 


o 

UJ 

UJ 

UJ 

a 

O 

X> 


CD 

UJ 

UJ 

UJ 

aJ 

<3 


uj s; 


a 

4- UJ 

Q 

*—• a •< 

(3 


c 

a 

a 

a 

a 

<t 

Si 


<* 

a 

a 

a 

a 

5T 

CJ 

a ^ 


2 

2 a 

2 

2 2 •-» 

X 

** 

*—• 

2 

2 

2 

2 

ft—ft 

X 


ft—4 

2 

2 

2 

2 

X 

a 

2 I 


t— 

K 2 W 

< 

i o ate 


a 

O 

O 

U 

X) 

a i« 

■~7 

a 

O 

X> 

CJ 

O f 

•—t 

cj t 

ru 

-a 

< U -» 

T 


CD < 

Q 

X) 

CO 




<t 

< 

<t 

20 

CD 



<x 

< 

< 

<r 








« 




3 < 

< 

4— 

C5 

X 

X 

c 

c 

< 

-< 

a 

(3 

X X 

< 

C 

*<- 

a 

a 

<■ 

a 

C 

a 

a 


<C 

a 

a 

a 

O QG 

ft—• 

UJ 

O 

4— 

a 

ft- 

o o *-• 

a 

o a 

a 

a 

O 


2 

o 


a 


CO 

5" 

o 

X 

a 

7~ 

• 3 

3 CC 

3 

3 

CO 

o 

co 

3 

3 


CD 

3 CO 

G 

CO 

3 CD 

CC 

3 or* 

CD 

*D 

a 

CD 

3 

CD 

a 

—) 


> 

a 

to 

M 

3C. 

X 


kPt 

cr 


• x 

a tU 

or _j 
o 


•< 

X 


CD 





CD 

CD 

CD 

CD 





CD 

CD 

CD 

CD 


CD 



4 

S 

CJ 

s> 

O' 

o 

s> 

S 

SI 

s. 

a 

S 

O' 

a 

3 

3 


3 

3 

3 

S 

K> 

LJ 

Si 

Si 

CJ 


<3 

o 

K 

•3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

cr 

— «• 3 

=T 

3 

a 


=T =7 =7 S 

3 3 3 3 3 


o * 

ru q —• rvj 

S S (S ^ 

^4 

s 


-J ct 
a or 

X LJ 

c a 
X z 

UJ a 


xoiraaa<aau>'0»naaa<*aoin^c>CvraaoauDcD:Da 

O L U r J L QC'O'C'U-OrvJli. QO'O'O'COrM^C'MN^MO-fMfON 


2 u_i 

<f cj 
c 
Ui a 
cj or 
c uJ 


X 2 
UJ *-• 


2 

H-4 >• 

X 
CD CO 


cj a 

nj 

cr 

-O 

O' 

CD 

Cj 

a 


CT 

vO 

CD 

CD 

O 

a 

——ft 

40 LT 

a 

a 

CD 

O 

S 


m 

in 

a 

CC 

ru ru 

40 

Ki 

ro 

rO 

ftO 

40 

ftO 



CT 


^r 


^T 

LO 

in 

in 

m 

in 

in m 

vO 

>o 

o 

o 

-o 

-O 

3 3 

3 

3 

3 

S 

3 

3 

3 

3 

3 

S’ 

3 

3 

G 

3 

3 

3 

3 


3 

3 

3 

3 

G 

s 

3 

3 

3 

S G 

3 


3 

3 

3 

3 

3 

S 

O 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

Q 

3 

3 

S 

3 

3 

3 

3 


aojxi^TL.o>oacoa3—trjKi^rir -c a cr? a s 

a ru m =1 

in 

>o 

a co a 3 

•a rvj 

40 

in 

>o a 

00 

a 

3 

a ru to 


in 

>o 

a 

a«-fta«-»aa*-*aaarvj 

nj ru nj ru 

ru 

r\j 

ru nj ru m 

40 40 

40 

K» 40 

40 40 

40 

40 


^ ^ 7 

=r 





CD X 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 39 


279 




GP10 INTERFACE AN EXAMPLE RT-11 MMAC VM02-10 ll-Jan-77 22l3«l27 

UTILS--- IFC, UNDRF.S, SETSRQ 


T3 

© 


O 

CD 




D 

© 





c 




© 

ft. 





© 




D 

© 





ft-: 




C 

X 





E 




© 

T3 





O 




a 

ft. 





o 




** 

« 




© 






X 




X 

X 



9) 

0 






© 



%. 


Q 





© 



*> 

a 

3 




x 

•— 



cr 

c 



«c 


« 

u 



r» 

•*- 

C 


3 


© 



m 

© 

X 

© 


*4 



a 

T3 

D 



© 

» 

© 

© 

O 

3 

© 

*-» 

T7 

>- 

•— 

a 


3 



O 

© 

C 

c 

O 

© 

© 


o 


c 


*-> «TJ 


TD •+- 

© 


t 

I 

I 

CD 


CD 


X? 

t 


© 

co 

© 


T3 

~o 

« 


< Q. lD 
h CD O 
H DU 
U CO Li 
U J h 

*-« I O 


x cn 
Q 3 


CT 

CD 


* 

CD 


C 

c — 
© © 

x a> 

i < 


— c 
x C 

ft- 2 


o 

co 


© 

Q 


<3 

© 


« 

X 

%- 

> 

TJ 

© 

> 


c 

r 

3 

a: 




© 

•< 

© 

C 

E 

-O 

z 


© 

© 

CD 

© 


z. 

X 

*-» 

X 

© 

O 


►— 

44 

o 


ft— 

o 


ft— 

V 

Q_ 


Q 

a 

© 

<■ 

3 


O 

UJ 

m 


< 

O 


>4- 

© 


X 


O 

«%- 

u_ 

CD 

® — 






3 

44 

O 

44 

X 

— - 

M 


C — 


© 

© 

© 


© 

© 

44 

© 





o — 


> 

> 

© 

© 


© 

® 

© 

*— 

© 

4—* 

CD 

— X 


© 

o 

© 

© 

>- 

© 

© 

© 

© 

© 

© 

ui 

V • 


CD 

LD 

QC 

CD 

i—• 

cr 

a: 

cr 

> 

CD 

CD 

cr 

o oo 










© 



CI 

coo: 






•— 


•% 


— 


•«. 


3 v CO 













z> 

*♦- «. 










44 




x* C 

ft— 









c 




O — 

UJ 









3 



XJ 

u © 

:d 

CD 








X 



u. 

© -*^ cr 

-< 

U 








X 






Jt 3 

o 

*-* 


Cl 

*-4 

o 


o 


o 

o 


c 


O' 


*— 4 



X - 






^ D 




4-4 «i 









>• 

CD 

< 

c 

ft- 

UJ 

o. cr 

UJ «■ 

»—4 

<t 

<. 

•* CD 

CD 

Z 

\ 

o: 

C- 

7 

CD 


cr 


o 

*—» 

UJ 

o 

CD O 

o o 


o 

O 

ra o 

o 

o 

t 

_» 

T - 

O 

<_> 

«-« 

CD 

—• UJ 

U_ 

Q_ 

tD 

o 

13 < 

O 44- 

o 

UJ 

oJ 

<_> UJ 

1 © 

o 

© 

o 

O 

o 

u. 

O 

*—4 

xj or 

cr 

C_J 

< 

JL 

CD 

X UJ 

SC 1 

cr 

cr 

q cr 

or 

o 

X 

o 

< 

o 

4—4 

IX 

it 

U_ 7 

2 

OJ 

4—4 

3 

^ 4D »-4 

< a. 

X 

2 " 

z 

X 2 

2 

u 

cr 

La. 

u_ 

u. 

< 

*—i 

X 

*-4 XJ 

xj 

M 

1 

I 

X -* 0 _ 

I CD 

4 

LJ 

o 

•« O 

L_> 

*—4 

o 

• *-* 

2 

•—4 

X 


1 

© 

© 

• 

_J 

_* — J 



_j 























4-4 

_* 




XJ 



• 

CD 

CQ CD 



CD 

c 

< 

< < 



< 

<t 


< 

<r 

<r 

<T 

-4 

•<r 

-< 

< 

*< 

<r 

<■ 

<r 


© 

© 

CD 



<r 

4 X 

« 


• 

O 

O O 



O 






















X 

44 

3 




*—4 

© 

?r 

• 

_l 

_J —I 

cr 

<r 

_J 

•< 

X 

<r x 

X 

cr 

<r 

»— 

3 

< 

cr 

<r 

<X 

_1 

o 

<r 

c 

— 1 

o 

< 

<T 

< 

44 

© 

_J 

X 

3 

< 


* 

DJ 

• 

o 

o o 

CD 

cr 

o 

o 

CD 

O CD 

D 

CD 

o 

4—4 

uJ 

»— 

_ * 

ft- 

ft- 

~> 


rr 

ft- 

3 

2 

cr 

ft- 

cr 



O 

o 

u. 

O 

© 


O' 


• 

• • 

CD 

X) 

• 

_J a 

_i c. 

— 1 


_J 

'X 

.D 

CD 

XJ 

CD 

CD 

r_ 


o 

CD 

CL 

< 

O 

CD 

m 

© 

X 

• 

_1 

X 


U 

c** 


• 




























o 








3 

3 

% 

% 

3 

3 



3 

O 


o 

3 

3 

O 


3 3 

rvi 

Lj 

S 

Q 

LJ 

Kl 

Q 

jr« 

rD 

CD 

3 

c 

C“- 

s 

s 

3 3 

G 

O' 

G L° ® 

G 

X 

3 

S 

Q 

<x 

82 

o 

3 

OJ 

3 

G 


a 

3 

O G 

G 

O 

Q c; Q 





K*. 

rD 




-T 











3 ra 


c K o^>TvT)LJO«rir'^r^Li_r-'^r\»cr <r n ru cr < n r 

oc~j c- ro c rOuiO'ccrj.riaO'O-^rtC'C'FOcccr o-rj 


_u ^ 

O '\j cr. 


CD C II -M rj ^ lil (T ri D U. ^ LO S O' < u U C -• LO N 

o-o or-r-r-r-r^r-r-r-cocccccDccacx'coC'C'a'Cr a 

so osososssososoososssoso 

a G 3G C.S.GGQSSCSSSiC.GnOSQGGG 


c* a c 

O' O' cr 
7T« S C 


a<-«f\iho^ii'''ON®C'^i*Hf\jK'^L r '-oh'Coc s ^ oj ki -t lo ^ n © a c -* ''j .'O ^ lo or- 
«-• ——•rjf\jr\jfvif\jfVifMfMrjfyjroroKiK'^ , KiK)rOKTr^^c tt rr ^ cr cr 


Page 40 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


280 



r-- 

© 


T» 

© 


T5 

C 


M 

T5 


T> 

© • 

X t- 

u 

© o 

— o 

D 

• • 
« « 

— • 

T3 © 

■o 

V T> 

• • 


C 

© 


u 

© 

X 

o 


o 

cr 

00 


o 

c 


A 

r 

c 


o 

O 


O 00 
X •<- 
LJ z 
J 3 
UJ X 
Z X 


rO 


ru 

r\j 


z> 

£T 


X 

o 

o 


<n 

•< 

x 


c 

o 

^ D 

c c 
© « 

*■> 

4-> A-> 

c Q 

3 

D c_ 
© c. 
-*-» © 


c 


a 


M 




1 

c 

O 


O O 




O 

0 



• 

1 

cr 

© 

c 

c 



•> 







3 

^ ^ 




© 







c 

►— 

© 


© 

UJ 


L_i 


0 

n 



T> 


0 n uj uj h 

CL 

CD •-» CD CD CL 


3 

3 

X 

CD 

CD 



© 

z 

• 



c, 


O 

• 

T 

> 



© 

C 

x uj 0 0 - 

3 

O wO CL O 


jj 

X 

O 

»-» O 

Q. 



3 

►- 

© 

0 

o> 

3 


CJ 

• 

l_> 

0 


£ 

—- 

© 

UttOO*- 1 

O 

UJ 8 UJ O < 



00 

UJ 

■wUJ 

3 



• 



jr 


X 


y 

L.) 

ar 

< 


O 

-O 


CL O X X « 

LJ 

or © or < < 


• 

*- 

cr 

in x 

-< 

• 

• 



© 

0 

__ 

J 


y 

Ll 

3 

u 


•— 

© 


_l Z jC X X 

© to. 

k r km m 


JC 

UJ 

►— 

r— •— 

M 





© 

X 


T 


0 

»—1 

0 

J' 


■*-- 

c 

* 

O 3 X XU 

rvj m 

041 0 a CL 


4-t 

CO 

0 

m a 

CL 




3 

X 

© 

0 








U 

© 

X 













►— 


t: 

*-* 








(. 

O 

© 

*-» 

3 _J 




on 

3 




• 

• 

GJ 

>— 

CD 

t_ 

© 

c 

© 

X 

<3 


•< 





♦- 

0 

*_ 

CO CD «< C 


< c < < < 



CD 

*«c 

•< «< 

C 



. 4 

CO 

r— 

X 

r 









« 

O 

O O 




C5 

O 






1 

• 

»- 


© 

<T 

y) 

<r 

!3 

X 

X 

to 

© 

*•- 

•*-* 

_j_j<q:h 

O CL 

< < < < < 

CO 

CL 

3 

•< 

0 < 

*< CO 



rvj 


c 

t 

© 

►— 


0 

UJ 

r > 

i - 

V— 

<P 

c_ 


0 0 0 3 

UJ «o 

OQTKKK 

►— 

CO 

O 

Q 

Z f- 

K ►— 



GJ 



L 

X 

CO 

nr 

_ 1 

CO 

. J 

cO 

cr 

© 

© 

C 

«. • —1 CJ CD 

CD CD 

—1 O CO CD CD 

cr 


• 

3 

< CO 

CO CL 

• 

• 

z 


*-* 

© 









l 

+-> 

O 





*-» 







>■ 


C 





*• 





r ‘ 

c 

E 

•• 




t_ 


■V 







O 

O 

© 



P 




*• 


--- 


CO 




© 


3 







O 

CO 

0 



0 




• 

n 


© 

UJ 




© 


or 





0 







c . 




• 

£ 


x: 

or 




« 


CO 




• 








0 




O 




0 


M 




K- 





■^r 







u_ 




>i. 




z 


M 




UJ 
















'•* •* 




—• 3 


r\j 




—* 00 











r- cr or-: 
c* c- r j , 


U O' 


o o o o 

S)S^CCfViSQSU.(D 
isa®aujQ>os'Sf\j 
33 5T 

® 3 q 


in no >o < NNNa 
t>r-oorvj©C'coa'tDcnr / ) 


3 O 
G3 O (3 U_ 
Q II Q S 

y 

8 


■o ^-ssa 

O © ^ (2 fO 


3 

or 


_j x 
CL O 
T 3 
<t UJ 
X 23 
UJ 

to 
z < 
«* r 


It. rj rr x 

^ < <1 < <j 

Sf S2 "3 3. 

E) O S O X 


UUJ^KUTNatDOSfO 
< < CD CO CO CD CD CD CD U U 
SQQB88EQSSS 
BS 8 QBQQQBSQ 


7 <0®<0 
uuuuu 
3) 8 8 8 8 

8 8 8 8 8 


li¬ 

ar 

Lj 


H 'J -T ^ L: ^ 


s:o'Q-Hnjro-TL^*ON©fva^f\jK»yin©N®a8«-*fMroyin'ON©0‘8«-«fMPO 
y ^ in ip it- ir» if »r u’ in ip in © «o o o © © ^3 o-Oh^sr-r^r-r-s^Noococ 


Q_ 1 

O ■ 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 41 


281 



Mtins an as atntru: ssr atntr 

P«C7 7F 0320' JmP HwlSRv 


N ® C 


Page 42 


Cl 

3 


© 

-M 

n 

x 


c 


© 

CO 


F 


<■ 


C 

C 


-D 

© 

to 


o 

UJ 

x 

© 

© 

o 


cr 




0*0 o o — c. 

*•**-•0* *1 * 

ID aC ID * * < <.<^j 

C3 f\J O 11 O O DD C- O 

UJ —* UJ a. U. Ll) u_ LD 3 

•x i ae32crMQ:<c: 

:? — vz r z * z *-• h~ 

<XC_>—*OClO 


o 


*-• * CD CD Z 
*UJ O Q_ CD 
U. aJ O J 

I I »- »- .x 
>1 II O 2_ CO 


CD < <t <t <f 

O 

3 <* o <r < 

o o z »- o 

• J < CO J 


<<<<<< 

<<<<<< 
t- Q 2: K K Cl 

to J O to to J 


< < < < 

< q < < o: co 
a zkkcck 
o < <o to *“> ar 


ar 


•*. * * < 


to 

m 


o 

o 

o 

X 


3 

O 

a 

o 


UJ 

CO 



LJ 





X 





o 





u> 



» 


UJ 



x 


CD 

* 


© 



c 


C 


CO 

o 


© 





■*-» 

o- 

r 

*-> 


cn 

rvj 


c 



•• 

• 

© 


«— 


2 : 




•o 

v— 



X 

M 

< 

© 

m 

O 

f\J 



o 


nj 

i 

x> 

X 

X 


i 

© 


© 

r* 

i 

CO 


-* 


3 

« 

rv. 

■— 

1 

c 

© 

O' 

9 

c 

u. 

*— 

^r 

x* 

o 

z. 

© 



—> 

b- 

X 

X 

a 

• 

c 


© 

o 

•r-4 


cr> 

X 




© 


T5 


3 

JC 

© 

© 


►— 


X 

c 


►— 

x 

i 

c* 

sa 

CD 

© 



w-A 

<o 

*— 

_* 

0> 

• 

• 

•— 

u 

9) 

rv 


O 

© 

o 

a 


X 

X 


X 


4-* 

u 

c 

> 


c 


© 



o 

C 

© 



O CO 

X 

L? 






* • 

* •*. 

•* 


ST 





X 






o 

* 

o 

o 

o 

to 


X *-* 

* 


— Q. 

z 


a d 

Uj 


c X 

>■ 


X 

UJ 


T3 © 

iC 


X w 

*— b~ 


o c 

* u> 


u — 

z < 


o 

UJ 3 


© © 

> X 


JC 

Ul o 


© c 

CO * 


u x • 

3 O 


O CD o 

* X 


TJ •*-» 

z o 


x C <D 

aJ *— 


© <0 *-• 

^ 3 


x* x tn 

UJ c 

CO > 

c 

3 * 

3 cr 

«- o © 

* O 

lx CO 

X — 

O 3 

z •-» 

li V XJ 

O lx 

»— X 

X •*- 

O K- 

<1 X 

V E 

3 3 


x c 

h- < 


C. © •- 

«. ^ 


J 0) 

Z X 


— c 

UJ o 


4^ t; — 

■> <1 

ct a 

© a 

u. CO 

CO Y. 

<n % E 

K X 

CL -) 

*-> © 



O O X 


•• 

® c 

3 3 

3 

D 

CD CD 

*<1 

^ ^ C 

o o 

lx 

*-4 »—4 <1 

3 3 

J* 


O O 



<1 


b- 

cr 



C3 

o 

O 

o 


o 


o 


% 

C 

La- S 

Lx ® 

s 

—• s 

XJ 

o 

TT' 

lx s 

Lx 

r* 

s 

>- fS 


s 

G) S 

s 

s 

OJ 

U- GJ 

S» 

3 




PO o 

GJ OJ 

e 

Pw 


>c^rr->cr->c<rr^-r^>c < ? ^ n o a 

ccoo'coo , 0'(co-ce to co a i c ki 


3 ^ 

_j i 

CL Q 
X O 
<* UJ 
X CD 
UJ 

CO 

z < 

<* I 


O UJ 

ao r- 


< u u C OJ ? J) C) 
OCOUJUiUJlu 
^ t ^ t. ^ (L 3 


< O L_ —• po LO CO or 

3 3 UJ II Ll a. Ll U. 

OS G & S S S C 

OS- O S S O S S 


s ^ '■J O u"l •£) N CG a S -« r JrO^LO^Ncoa-G) 

— ^*»^^-.^w»-««-<rvjr\jrvjcvjrvjr\jr v irvjrvjf\jfO 


Uj • 


►— 
u. <x 
ct 


uJ I 
*- I 

Z I 


u> UJ 
lx u. 
O S 

s s 


^ojfOoir>ONccc7' o-<f\i»o^Ln-ON(CO' 


CD U. 
*-* Z 
G_ L- 

o <* 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


282 




© 



c»~ 

o 

© 

o 

4-> 

•— 

u 

Z} 

X 

v 


-* 

4-» 

00 

0 

0 

o 

© 

o 


e 


.— 


•M- 

© 


LaJ 

ft. 



0 

O' 

« 

a t> 

ft. 

J*£ 


•«- 


**- 


<0 

A-» 

D 


C 

— 

« 

T> 

.— 


a 

*— 




r: 

0 

ft. 


X 


c 


c 


© 

(C 

4J 

D 

0 


ft. 

•— 


-~- 

o 

*— 



« 

© 

a 

o 

<♦- 

ft. 


CO 

o 


o 


© 




© 

►-« 

I 

■M" 

© 

M* 

O 

ft. 


r- 

c 

© 


tn 




M 

X> 

** 

re 

4-> 

»— 

E 

© 

»*- 

© 

o 

© 

ID 

© 

-• 

< 

o 

<t 

>- 

— 

a: 

CD 

X 

< 

CO 


Ms 






Ms 

Ms 




Q — Ci O 

^ k o Ws 

CO 0 C • X. LU 

—I CD ^ CD O o o 

wk_ U: uj x la. C 

i' a i c 2’ x 


O Q — O o 

^ M ^ I ^ % 

^ *.<<(£ CD X 

OUJOC.LD — OC. 
aJ U. Iii CD UJ «. s*J O 
crsi<o:Qa:< 


z *H/i ►- w h-i x 2 »-« ►— a *— — 

o i u < 7 < i (v a a ! o c_ o — o a. 


< < < < < <<<<<<<< 

<. o <t <r _i Cxi c — aJ c o <. <r < < < < w 
D 7 *- D Q. —! O X Z02ft-ft-0tt»-ft-»- 
J<J)JIiUJl'lLJ<W«JDWWa 


o o o — — 

«. «. I M § 

CD*-*0QX2<. - C <t <1 

CD ^00.02 0. IlQ. CL 

Li Uj kJ O Ui U. CD U_ O O 

q:^q:<c:q<q<m< 
X»-*Xft~ft %. *-• 

Of OH U( Q_ ( Q_ CT G_ 


CQtCCC25<<<£CL<< 

<t Q <T <Q<<<<<!/) 
02 ►"KO’jKCKQCHh- 

j<W(oj<iojwowq: 



_J 



o 



a 



*— 

c 


z 

Q O 


o 

U. 


CJ 

a c 



.2: © 

— 

Q 



u» 

ft- B 

LU 

ir 

o — 

CD 

z 

— 

c 


L> 

a. 

CL 

< C 


O 

o 

r— 



rc 

«s 

» 0 

M 

■> 

c — 

iX 

< 

•M- 

m 

o 

u ^ 

M 


— fVi 

f\J 

1 

> O' 

<\i 

1 

ft- cy 


1 

c 


1 

0 4/ 

r- 

x: 

X 

• 

CO 

© 4-» 

c 

o 

x> 

© 

z 

ft. 

-> 


»• «ft 

t 

I 

© X 

«—» 


E •*-* 



« 


_J 

C c 


ft— 

C X 


ft— 

-— 

Q 

CD 

v Of 

-■ < 

CO 

o c 

• 

• 

o — 

nj 


ft- ID 

CD 


c 

X 


0 © 

> 


— a 


x © © 
ft— Oft— 


O C O CD CD CD CD O O 

SLE’EIDS^^QuJSUE'aSU. 
UDQS^QQ^-hQu.SQ'S-ISS 
s cr cr 

S» SO 


CD CD CD 

S Li K LRCDULO^U 
»— QG>(Su_S>U_Ci>S>Q 
^ ^ CJ :j 

t3 s s s> 


•D ^7 O <t U- >OC>OOcrSN>C<NNO* 
O'coc-C'ajNC'rj.'vJO'coo'CDO'coai:^ 


•D ?h-N>O^N>Or^<h*a‘ 

QUDLC-COfflULCOafO 


— IT N a- HluSAJcr«00<QL^POO 
OSS: QSSS — — — — — — — — r \irvjr\i 


NO'tEOSf'JCMMJlD- 

pjajr\jr\j«o^*OfOrOKiKi^ 


uj O O CD Sr SOOSOGIOOOOOOO 


SOSOOSSOSQOO 


s-rvjw^in-ONco gl — r\j w ^ in s co a s^^ro^L^-Oh-®a s — r\j ki ^ ir> 

r\j<\jf\irvjfvirvjrvir>jf\jrvjK»rOfOfOfOK>K'. K>roK»cj cj ^ cj cj :r:ymmir>tninin 


— ra kj =y in -o 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 43 


283 




— X 3 

V> £i 
-c © 


C* 

© 

c. 


© 4-* 

w « « a 

• C T> C 


o 

* 






4* 

CT 

o 

.— 


Xi 


o 



T3 

XJ 






c. 

a 





© 


C 

ft- 

o 


c 





© 

© 






V 

© 





4^ 

X 

-V- 


a © 


o a 


4^ 


a 

A 

A 






c 

&. 





X 

ft- 

*— 


x 


Z D 


u 


c 

A 

A 






o 




X) 


-O 

4-* 

#— 

© 

— X 


<1 O 


c 


••- 

© 

© 



4-' 



VI 

© 



c 

x 



o 

4-* 

© X) 


X l- 

© 

u 



ft- 

C 



•w- 




*> 

> 


o 

-M 


o 

a 

X 

•v 


X 0> 

4/ 

»4- 


o 

X) 

X> 






4-> 

c 

c 


E 

~— 

•— 

c 


-D 

*- o 


o 

X 



© 

X5 

XJ 


© 

© 


© 

c 

T5 

o 


E 

« 

© 

© 

.— 


© c 


o c 

£2 

.— 


x: 

© 

c 


3 

o 


D 

41 



X 

o 

4-* 

4-* 


© 

O 

A © 


c 


o 


u 




C 

-W- 


C 

A 

© 

c 

o 

o 



© 


© 

A 


z © 

« 

L. 



«♦- 




> 



41 

> 

o 

c 


c 

4J 

4J 

L. 

o 

© 


O E 

4J 



Q 




4-» 

ft. 


4-» 

L. 

© 

-v- 

o 

© 

•V- 

© 

X 

© 


o o 

«-4 

M E 

© 

c 


© 




c 

© 


c 

Q 


*-* 

ft. 

x> 


CT 

Ci 

m 

c 



*- O 

x> 

o 


© 

X 



o 

A 


o 


ft. 

c 

£1 

o 

IH 

ft 



3 

> 


^ o 


o 



u 


D- 

u 

1 

£^« 

o 

V 

*-> 

4-» 

1 

u 


A 

4>J 

m 

• 

ft- > 

UJ 

UJ 

4J 


< 

1 

© 


< 

4 

A 

<0 

1 

© 

© 

4-* 

o 

© 

E 

© 

© 

© 

o 

© ft- 

LD 

z. c 

© 

O CO 

o 

x; 

o 

t— 

o 

© 

•— 

o 

O 

ir 

c 

-Z 

Q 


X 

O 

* 

Z 

CO X 

< 

»- o 


o 

X 

zz. 


Q 

X. 

7 

X 

X 

z 












Q. 

c — 
















•w 






•*- 


4-J 

•«i 







•V 





H C 
CL © 


ZT 

rp 


< 

o 


DC 

X 

o 


c? 

c 


O c. Q 

^ «, o 

c ►“< <. •< *■ 

O *. O O C3 

UJ U- Lu Lu U_ 

a a a z 

z i 


X X UJ X X %. H >• 

>• x o >xe> x oc 

CQOJt (DQU. CD CO 

7 Z I J> Z U Oi QH 
<.T<U<Q.i«Q.Z i 


O'« U Q < ^ < X X X CT X CD rO cO </> X 


<< <D < <T < 

<o<<<oqt<<h 2 : <c <: c? a. cr cl 

C7i-DDyv:2:QJ'0 2CUI«T 
_»-ico_i_»cr:3cp_Ja: ~> cc _j co 


<o 

o 

Z- 
<t 
. X 


X 

o 

— z 


r\j 

ru 


oj 

s 


o 

< 

x 

X I 


Cl 

I u 



• 

O 




o 







O 









h- 

• 

u 

T? 






M 













h- 


© 

ft. 

O 

X 

*< 


•—i 



M 



*—i 

cr 

O 

M 


ac 

*—« 

a 

• 

X X» 

O 

X 

X 

o 






o 


uJ 

X 



Z) 


UJ 

c 

CD 


u 

V_) 

CO 

UJ 


Ul 

UJ 




o 

— 4 

ir 

o 

Si 


CO 

SJ 

ir 

« 

Z 

o 

o 

•< 


cr 


—• 

Si 


>o 


X 

CO 

<f 

< 

5T 


< 

ru 

< 

*-> 

V- 

4-» 

® 

CO 

X 

X 


X 

X 


X 

*« 

t 

X 

X 

CO 

X 

CO 

X 

X 

X 

B 

<1 



X 

4t 

O 


-1 

1 

r-n < 

■r-4 

X 

€ 

CR 

X 

!« 

ru 

X 

it 

CO 



© 

A 





















c 

© 




















_J 

•— 

X 

_J 

_J 


















X 


o 

CO 

d 

rr. 


CD 

< 


< 


c 

< 



<x 



<t 



X 

3 

4-* 

o 

o 



















o 

« 

__1 

_J 

<r 

< 

a 

o 

a 

CL 

uJ 

< 

x 

g 

Q. 

X 

UJ 

<■ 

a 

UJ 


<n 


a o 

o 

O 

CD 

z 

3* 

Uj 

X 


Q 

M 

UJ 

X 

X 

z 

cr 

X 

7 

B 

m 

• 

A 

• 

• 

_J 

X 

<4 

< 

CD 

o 

CD 


CD 

CD 

-> 

c_> 

CD 

CD 

L_> 

ID 


> ~c 

X) 

c r> 
4-* c 
<c 


> 

CC 

Z 


*0 
•*- r\j 


O 


o 

o 

o 

s 

u. 

s 

s 

s 

s 

X 

S) 

Q 

s 


o * o t i « 

aCfOQiT. Il<Q^<UQ 

•-•SQK'SSSU.ccru 

ru —• ru s> 

K QQ 3 


—« cn 

I 

X o 
QC Z 
< 
X 
X 
o 

l_l 


o 

62 

s 


S O Si 
UJ -o 


o % 

o> r w a ^ 
3 □ CO r\j L 
ru 
S 


s ru u 

C! 3 K1 


s rn 
ru -4 


UJ o 


>CsrxOOXC2S OCDG3-CSaJDUJ 

a ao cr GO'OJcorvjO'rucrrjO'f'JNcCN 


CL r— 
X 7 
< UJ 
X Z 
UJ X 

c 


o—•cjconjcorjc' oo f\ir» 


—• >o S’ —• vO 

oo ru f\J oo ru 


<t x 

cr 


ru 


>o 

CD 

c 

o 

UJ 

n 

r«. 

r- 

-O a 

CD 

Ci 

U- 

ru 

IP 

UJ UJ 

00 

C 

CO o 

u_ 


rp 

IP 

X O' 

CD 

UJ 

S' 

ru 


X) 


ST 



CT 

sy 

RT 

lP 

ip 

IP 

IP Ip 

IP 

IP 

LO 

o 

D 

<_> LJ 

>0 

>o 

o >o 

o 

X- 

X 

X- 

X 

X 

X 

CD 

CD 

CD 

CO 

*-• 


-4 

»-• 

»-4 


«—* 


—■ 4 


• 4 

*4 

•-* 

^4 

»-4 

•4 

•< LJ 


^4 

«4 «—4 

m ^ 




— * —"4 

_-4 


^4 

^4 


^ 4 

s 

(3 

St 

S 

o 

s 

S 

s» 

s 

s 

s s 

3 



s 

Q 

U_ <1 

52 

s 

S> SI 

s 

<a 

s 

52 

5) 5) 

52 

s 

S3 

s 


s 


ct 

UJ 


(f^G-4'MKl^lPONcoO' S' f\J rO 'O 


ru ro ^ 


X 
£D CD 
*~l Z 
Q. X 

O <T 


LO 43NaOO'®»4AiK>^lp^)h.cCO' 62 ^ r\' K1 cj 


Page 44 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


June/July, 1977 


284 



o 


o 




s- 




Cl 


03 


— 

a 

.— 


.Q 

« 

-O 

a 

40 

»— 

c 

10 

cn 

*♦- 

c 

•— 

~~- 


Cl 

«*- 

D 

Cl 




a ci 

«— 

Cl 

-— 

® .* 

.— 

a 

m— 

O 

c 

m 

o 

t_ x 

Ql 


a 

O 0) 





*— 

Cl 

•— 

— Ci 

0J 


(0 

o — 

— 

■ 


i a 

X 

tn 

c. 

® a 

Cl 

Cl 

ai 

01 o 

to 

>- 

to 

>- ►- 


c. 


aj 

M 




a 


a: 


a 

3 

<h. 



o 

3 


UJ 

O 

c> 

CO 

ac 



u 

Ik 

M 

x 

U- 

<r 

<■ 

•-« 


r- 

UJ 

<r 


<* 

Uj 

<3 

3 

X 

►o 

r-» 

CL 

X 

w—< 

X 

CL 

M 

2 

:« 

tr 

►o 

CO 

CO 


CO 

CO 

a 



CD 


< 

<1 


CD 



< 


<■ 

a 

3 

c 

< 

<* 

CL 

LJ 

x 


CO 

nr 

X 

2 

o 

r- 

n 

X 


3 

»— 

►— 

CD 

O 

a? 

3 

co 

CD 

o 

3 

O 

to 

cr 




cr 


cr 

Ui 

x 

•< 

f 

co 


c 

0> 








3 









« 










«B 








41 

X 








O <3 

* 








J< e 









c 




*— 





-c o 

C 



CO 





® c 

c 



UJ 









3 





^ XJ 

01 



C3 





r * c 

T> 



UJ 





o 3 Ci 

O 



cx 





4^ -- Q 

E 








•m- 




CO 


D 



X c c 

C 



CO 


c 



® o c 

Cl 



uJ 


c 



X. « 

4J 



CL 


fc 



® 4J E 

tn 



Q 


E 



® E 

■v- 



O 


o 



Ci Ci O 

•— 



•< 


u 



«- c u 







c 


tl — 




>- 


c 

L 


D t ■*- 

Cl 

Cl 


or 


V 

J 


® — 

« 

3 

ru 

<L 


41 

41 




O 

•-« 

X 


® 

Cl 


* O — 

M 

E 


M 



i_ 


U C Cl 

o 


UJ 

cr 


-— 

t 


Cl • 

tr> 

C 

o 

CL 


c 

o 


r ^ ^ 

— 

Cl 

<L 



3 

2 


tj *-» uJ 

uJ 


CL 

i 







0 


• 





•«. ■«. •«. 


-w- 


■ 







.— 

nj 









•• 

CD 







o 

ci 

3 







«J 

Ki 

CO 







c 

•• 

c 








fV. 

k— 








r\i 

X 







® 



® 




o 


L. 

r*^ 


® 






e 


2D 

Cl 

4-4 


CO 

CL CL o a 

*- or 

X 

• 

3 

&- 



3 

O UJ X CO 

uJ UJ 

D 

c 

*o 

c 

u_ 


cr 

0X03 

co x 

C. 

o 

•c 

ID 



o 

■< < (O 

<3 < 


3 

3 

® 

X 



o I uj <r 

3 X 

X 

1 

X 


K 


3 

cr co 2 x 

X CO 




C 






4-» 



Ci 






Cl 


3 

4-1 






to 


»— 

a 

CD 







►— 

-w- 






O 

<S 

CD 

•— 

CL 

3 CL 

cr 3X3 

DC C 

4J 

•—i 

to 


X 

2 

X 

CO 7 Q 7 

co or 


• 

• 

4-> 

3 

CD 

3 

CD CD 3 CD 

CD CD 

Cl 

ru 


c 






c 

S3 



«* 






X 


n 

CO 





41 

> 


o 

3 





3 



o 

CO 





o 



3 

c 



•• 


or 

o »- 



3 



** 



<r oo 


•* 

X 






r di 

X 3 


O 


D 

o 

E 

o 


© 

L 

c 

■* 

D 

«- 

x 


«i 

t. 

o 

o 

® 


o 


a > 

u 


* 

I? 


CO 


Cl 

o 

o 

E 

c 

Cl 

4J 

cn 


Q 

3 

C 

O 

Cl 

<t o 
o- ►— 

^ r > 

® c. — 

►- o c 

2 O 

3 X 

X 

« o — 
— Cl X 
r r — 
v U Q 
I v 
® O C 
•-« 2 3 



o 

o 



Q 






«. M 









>— 

CD •. 

CD 

CD 


3 

0) 

*—t 


CO 

3 

o u_ 

o 

CL 


O 

m 


»-4 

3 

CO 

3 CD 

3 

cn 


o 

o 


• 

CL 

<3 

tr si 

cr 

<1 

4-4 

X 

X 

«-4 

<r 

Q 

3 

»— X 

i— 

M 


n 


X 

h 

2 

X 

Oi« 

Q 

JL 

—« 

X 

T) 


X 

3 












CD < 

< 

<1 

<3 

< <1 


•— 

CD 


O 






c 



3 < 

3 

<3 

< 

•< •< 

CO 

41 

a. 

uj cr 

O O 

T’ 

►- 

r- 

3 L 

►— 


X 

3 CO 

• 3 

<3 

40 

CO 

3 CO 

X 

4J 

o 

21 —> 







c 



•• 







•• 

mm 

4— 






X 

XJ 

X 

3 






o 

3 

3 

CO 






o 

CO 

<1 

<■ 






3 


*— 

3 







*- 

2 

X 






•*. 4*. 

-*■ X 

3 


—* a: 

i 

>— cn 

cn CO 


o o 

(C -Oil s N O' ^ Q D 

•^Sa-Q<S-«3Snj 

s. 

•S) Cw 


or 

o 

Q 

<t 


«. o 

itMuro^Qi^rjC' 

^Q<cJIlS5S.J 

SI 

■si 


o o o 

S U. &> U. —• C53 

I Q 5 3 S 

3 


Ll IO (J 
-- <t 
O 
S> 


si ^^oN&^'Ou.r^O' 

rvi u r\J CO C3- f\J L» f\i N J) K1 


uj cr 
3 c 
CL I 
I M 

<i cr 

X CL 


—»'OUJO>OuJOQS 
ufVJNcoraorvjcrj 


-o ~ r- r- cr —« >c Ci 

O' eO O' 2 CG O' ^ u M 31 


I 

Z I 
< a 


CO <UU-Sf\J^'OCOCOLJ 

CO OoOOOOOOOOO 


S S r-j 3^ S S' G Gj S 3 G 


in«osDOO ca^njmcrLOsor^ 

rvjrvjf\if\jrviroK'rOfOKiK>K>ro 


u_j CD 
'3 3 
■c cn 
u_ *«i 
cr »- 

UJ X 


L^^'OCD<UluS/ 

C7‘C-<<<«*<t-«lCD 


SQS32SSS1S 


nj =r o co tc a k 
H 31 X' x cr CC 31 


S S S S 


s> rvj ^r 

C_> O «-» 


2 •• 
m CD 
3 
CD CO 


irvifocrir»*or—cDO'Gj~*ojf'O^Tir»>cr-coO' k —« 

^„^^^^^^^^ruf\jf\jruojfMrjr\jf\jf\jK > , ^ 


D_ -I 

o 3 : 


June/July, 1977 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 45 


285 



Q 

3 





►— 

0 





















0 




z> 

o» 








X3 





c 












X> 









© 

3> 


0 

© 

X? 








3 

© 


© 


c 








C_ 

&. 


x 

«— 

© 

a 







U< 0 



u 

Q 

a 

© 





ML 


*-* 

C 

0 


E. 


«— 





u 


4-» *•“ 

o 

4>* 


--- 

D 

>*- 





u 


© JD 


3 

i 


c 




C 


■V 


a 


Q 

0 

O 

© 

jt 



o 

-X 




o 

C 


T3 

t 




— 

— 

0 


O c- 

© 

•w 

0 


Ei 

© 


r- 

V 

0 



4-> 

C. 


0 

o 

O 

*-> 


© 

o 

»— 

0 

0 

X 


— 

© 

0 

u 



© 

c 


0 

0 

«-> © 

T3 

0 — 

l_ 



4~> 

© 

-M 


Z) 

© 

© 

c 


© 

o 

© 

«*- 

© 

it 

•— 

o 


c_ 

© 

© «*- 

0 


T? 

C 


a 

« 

© 

c 

o 

T> 

XI 

F ^ 

0 

a 

o 




XI 

w 


D 


o 

© O 

© 

3 


£ 

•• 

•• 

0 


o 


© 

« 

»- 

X 


D 


© 

© 


♦—< 

0 

© 



Q C 

O 

V 

O 

u» 

0 

0 

r? 



0 

© 


E «- 

TJ 

© 

© 

o 

— 

*- 

c 


o 

— 

x 

© 

O 3 

<T 

CO 

cr 

7 

UJ 

Ui 

«< 

<1 

2 

UJ 

u» 

L3 

O »- 











XI 


^ •«. 


Z 

CO 


© 

Oj 


O 


^4 



—• 




O 



Q 


Q 



L. 






1 



1 












© 




■<. 


<* 

•a 


xT 


cr 


o 

CL 

*—i 


cr 

UJ 

cr 


X 

cr 



o 

CP 

r. 

CL 


CL 


o 


X 

CO 


o 

uJ 

c» 


_J 


o 



LU 

Lu 

L2 

CD 


O 


o 


o 

r> 


o 

t: 

o 

-jt 

xX 


•c 


•—r 


Q 

< 

<r 

M 

<x 


XT 


T 

to 

<XD 

X 

xT 

X 

<x 

t— 

© 

xT 



Z 

I 

*—« 

*-• 


►-* 


O 

to 

u. 

•< 

r 


I 


X 

7 

o 

M 


P- 

L_» *ft 

CL 

n. 

cr 

Q_ 


3L 

— 


X 

« 

r 

CO 

X 

to 

Z) 

0 

CL 




















a 





< 

< 


< 

<T 






xT 

< 


<. 



C) 

XX 

xf 

<T 


















r 




<X 



a 

< 

< 

CO 

cr 

Ui 

X 

UJ 

<X 

xT 

xf 

<■ 

_J 

< 

*-* 

<r 

X 

o 

o 


f- 

_j 

cr 

►— 

>— 

CO 

2 

o 



k- 

CL 

o 

Q_ 

jy 


o 

o 



< 

CO 

D 

o 

to 

cr 

CD 

CD 

_J 

CD 

_J CO 

CP 

_i 

rp 

G3 

m 

_> 

o 

xj 


XT 

>— 

r 


n 

c 

© 


a 

o 

o 

-a 

o 
- o: 


« 


« 

E 


r» 

c 

01 

c 

o 

□ 

CO 


0 



O 

o 

© 


»—# 

•b 


X 


«*. UI 

Lu 

D 

to 

CO 

c 

o 

D 

xT 

< 

o 

o 

© 

X 

7 

z 

I 


_« 

X 

?c 

X 

> 

T 

X 

X 

X 

L 





c 





E 

_J 





CD 

xt 

XT 

xt 

X 

O 




Q 

_J 

< 

xT 

xf 


o 

Q 

CL 

l- 

T3 

• JC? 

to 

C 





© 


M 



a 


a 



B 


to 



3 


3 



to 


CO 





< 




•X- 

X 




o 

Q_ 


r- 

rvj 


ar 

rO 


nj 


ft 

c 


i 

ru 

s- 

X 

>• 


t-J 

•< 

z 

X 


o 

cr 


o 

o 


o 

Q- 


cc 

Hi 

to 


a 

to 


art 

to 


o 

a * 

4-» 

— >• 
O JD 

c n 

a; 3 
« *-» 
© 

© *-» 
u w 

> T) 

ft- c 

0) © 

CO CO 


o 

s b u n ? u 

q u. sr; 15 3 

ry cr cr 

CD Q Kf 


O O 

oj <i :r d t; o ^ 

-• C3 rL —• co cp 


O 3 Na <NO'C-CLJ>D>OrvC; 

cr cousflorC'OfflrjQrjccO'nj 


& r\j a- 

"3 CD 3 


X *? O 
o r\j rj 


CD 

OJ 

TT 


>C K’ rr 
cc tr co 


— c- 

ro 


15 O C 
SOS 

o s o 


•D < M> 
W O' a ro 


»— 

DC 


O 
cr 
►- 
Lu 2 
-l O 
Q. U> 

r 


. o 

CL 


r- 


CD 

UJ 

— 

ro 

>c 

P- 

c- 

CD 

C 

u. 

— 

ro 


CP 

r- 

o 





cr. 

UJ 

u 


rj 






ro to 



UJ 


UJ 

u> 

UJ 

U) 

O 

CL 

Ci 

UJ 

c* 

O 

o 

C 

Ui 

UJ 


UJ 

UJ 

UJ 





uJ 

UJ 

uJ 

u. 

Lu 






Lu Lu 

u_ 

LU 

u> 

CL 


—» 

—« 


—• 

■—• 

«— 


^ X 

--4 


--4 

w-i 

—4 


—• 


—X 





■ 4 

-4 

— t 

—• 

•—i 






r4 r4 

^-4 

•-X 

< 

UJ 

(53 

S 

”5 

(Sf 


K 

s- 

S 


(S) 

z> 

s 




S 

tTj 

rz 





Z 2 

G> 


C 3 

■5;. 






"Si (Si 

S 


u_ 

DC 

, 11 

to 

1 

t\J 

K1 

LP 

-c 

r^ 

Xj 

a 


•-« 

rvj 

rO 


LO 

X) 

r- 

CO 

a 

G. 

—« r\j 

Pp 

rr 

IT. 


r- 

CD 

a 


-x OJ 

hO 

^r 

10 

X> 

XJ 

O' 

»— 

2 

1 

1 

ro 

>0 

pP 

K*. 

pO 

ro 

rO 

pO 

cy 


o 

cr 

cy 

ry 

cr 

^y 

cy 

cr 

to 

to to 

L"> 

to 

to 

to 

to 

LO 

10 

0 

~C sO 

>0 

•c 

>0 

>0 >0 

>0 

>0 

M 

1 


r j ro :y io >o 


CL CL 
O to 


Page 46 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


286 





3 

QL 

CO 


U 

© 


1* 

-C 
















D 












<0 












u 








47 
















o 








X 




JC 










2T. 


© J 








© 




47 








T> 


_» 


>■ © 



© 





O 


z 


x c 



47 





E 


o 

L. 

o 



> 






47 


© 

«B 




47 




© 

•_ 

4 

47 

D 0) 







47 

4* 

X 

CO 

m 

47 O 

c. 


© 

X 

47 

47 


© 


>- 

*— 

O 2 

© © 


D 


—- 


x 

c 

© 


o 

47 

47 M 


47 

c 

X 

X 


L. 

c 

< 

«- ir 

© *-4 

> © 


© 

o 



> 

© 


M 

O CO 


X -c 


47 

1— 

U- 

X 

a 

47 

— 

CL 

4- 

47 >*- 

a> 


ID 

«_ 

o 

o 

3 


c 


x/ 

© — 

© 



© 

UJ 

Lu 

X 

© 

o 

4 

© © 

a 

*- © 


E 







O 

> CD 

© 

O JC 


1_ 

4-7 

47 

*-» 

47 

47 

47 


© © 

o © 

47 —- 


O 

© 

© 

© 

© 

© 

© 

LA- 

co a 

O CO 

CO —i 


u_ 

CO 

CO 

CO 

to 

co 

CO 

►- 




© 








_l 



•4 »4 

47 

•4. 

•4 

• 4 

■4 




< 




> 












X 









o 


c 

cr — 


U. O 


Z.' > 

X Q 


O C 
»— 

Z «- 

—' © 


uJ C 
E- © 


UJ 

Ci 

o 

X 

X 


o 

o 


O 


4 


4 

4 

CD 

X 

X) E- 

o 

o 

CL 

O »- 

(_> 

U.' 

O 

U* CO 

cr 

cr 


2 : -j 

CL 

►— 

4 M 

*- o 

Ui 

o 

f\J Q_ 

O CL 


< cr > 

m cl o a: 

4 o < CO 

►-* • ^ •-« 

*. V* zr •— * 

rvj in >o o_ o_ x 


a> 

n x 

4-/ O 

0) 

47 ct 

cr> uj 



O O to 

a uj —i 

tr o 
x. UJ o_ 

(A 


a *-« u_ 7. o •—< 

o u o o o 

ac ■ uj ►-< lj m x *i 

ct «o f\j cr 4 q: 4 x <c 

uj -« -n ui ip —• u ^ .M u M ^» 


*—* •—• 

^ < _i 

i *p 

m co o_ c* 


4 

cr ^r 


CD C C C C C < C O 21 < 

o 

J<I<<<! JhLi<<<d 
o o cr- a k k(cdh7q:kk? 
• JlO(OWCQ.Ifl30W(00 


X? 

© 


05 

UJ 


□OCECjC CT «< CL. <t CD <t 30 CO <T <1 CC 

o o 

J-Jl<^<Q.dJ<Q.u.l<<0<<0<<hLj<lA 
o o j o y a 2 7. a y ^ o: duo: Qucr d»-<z ^ h 
• •o—icroocroocDO jmojccjiDBOa: 



w o 

IT. •- X 


iP — 


OJ ro 


3 


O 



o 






« 

s. 

fVl 

U- 

3 GS 

rv 

CVi 

S 

Ct 

CO 

CT 

s 

s 

s» 

Q —• 

3 

3 

CT 

ea 

IM 

Pi 



^T 






CT 

O 



•s 





G» 

3 

3 


XvD<<f^r^QPJiP. X <. r— lj 
C r'lcomCMOMoorvjULi.lLN 


< L> D x ru 5 O NC to DS 1 Kl 

IlU.LU.SiCi5,&SiS2*-^ 

—• —<<\jrvjr\jr\jr\jr\jr\jrvrj 




ts o o c_: li o 

SuJSSfNJ ^Sl\|fyj3\' CSf\.tCO‘Sf\j3 
SSf\lOC3SSQSSS^Q!3SM'JG(S 

CT 

S 


L.'CN<->£)<^sO<«CN<C^<*CL^>r<0' 
tP G'.'M c_> ac<\: «__* cc pj x> c? r\j i_> o- oj u c no c\j u ^ 


•ONC'C'Cu.Hf^^NtMOU.^rOiOoO<UuJ 

pjpjr\.pjrvjrjr\jpjrvjpjruf\ir\(<\jf\jf\jnjr\jr\jpjrvj 

SS)E133^S.SS , SJ3^DGSQOS^R3 


aj ct x —•rvi»ocjir>>ON©a-s^'fvjw^in>os© 

rurvjK>K\fOK>»OfOK>fProroc3 ctct^t^ ct ct ^ ct 


June/July, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 47 


287 


GPI8 INTERFACE an EXAYPLt RT-ll ’■"■< A C V'HP-l ’A ll-Jan-77 PACE 14 

RCV8YT--- ENTER A TATA BYTE INTO BUFFER 




GIORL RCVBYT 

GLOBL E.PRCO»PIAADRf BFRFUl, IHRSTT, NLwlKD, DTRE.UA 
GLOBL DTREGH,CMDACT 



*-» © 







3 




-w 



o > 







o 




c 



J 




o 



o 





0 


x 




4/ 

«J 


XL 

JD 



u 

Q 


X* 




© 

3 



• 




X 


c 

a 



c 

x 

© 

© 

© 

© 


© 

© 

-SC 

x; 


3 


o 

V 

<0 

4> 

© 

x* 



C 

XL 



© 


x 


O 

o» © 

4J 

X> 

x» 

o 


=. 

c — 

© 

© 

© 

4-' 

© 

X> CB 

— jD 

© 


© 


© 

® 3 

0 © 


© 


c 

O 

3 4> 

® — 

c 

Cv. «_ 

»—4 

o 

.— 

—> a 

© — 

© 

*-< T 

O 

£ 




X» 

u 

© 

X 



o 

5 








© 

c 

© 

o 

> 

X* 



lx 

T 


c 



© 


«. 

-44 

© 


x 

03 





X 

«•- 

CD 



c 


C 

X 

x; 

X 

Q 


•— 



X» 

© 





•»> 


o 

© 

4 > 

o 


x 

•— 



© 

X 


■C- 


#— 

*— 


TJ 

0 


A-» 

T 3 

© 

3 


© 



© 

c 


3 




0 

—A 


C 

4 - 

H- 


-X» 

J* 

X» 


© 

O- 

H- 

.— 


O 

© 

© 

c 

© 

**- 


X 

> 

o 

c 

> 


*— 


o 


0 


CT 

o 

E 

3 

© 

© 

jO 

o 

© 

D 

© 


X 

X 



*—t 


E 

E 

A 

X 

X» 


.— 

X 


3 

3 

© 



X 

o 

(_ 


O 


© 

c © 

© 


X 

fc—» 

0 

«*- 

* 4 - 

c 


.— 

UJ 

o 


U 

* 4 - 

* 4 - 

-w- 4 J 

X 

o 

3 

O 

m 


« 4 - 

o 


.— 


x 

© 



*•- 

o X 

X» 

x» 

U 

U 


X 

3 

o 


3 

> 4 - 

x 


o 


3 

a X) 






© 

Q 



< 4 * 


© 

-* 

c 

X* 



o 

T 3 

© 

Ld 

O 

•+- 


0 ) 


© 



o 


© 


44 X< 

> 

© 

> 

X 

CD 


X» 

3 

•> 

X 

© 

»♦- 

o 

* 4 - 

© 

« 4 - 

© © 

© 

© 

© 

© 

— 

3 

© 

£> 

© 

© 

© 



M 

*— 

*-« 

O vJ 

CO 

2 

CO 

t: 

C 

CT 

CO 



X) 

CO 


O Q 
© 3 
■*- C. 


«) 

© v 
C 

o 































O 

a 







Cj 





C. 


O 



o 




o 






O 






M 

Q 


— 

c 

Ci 


O 

o 

o 

o 

«. 


Q 








4. 




4 






4. 




o 








1 

X 




o 

c. 



>■ 

UJ 


t— 

Cj 

O 

< 



O 

o 


> 


C. 


CL 




X 

X 


►- 

>- 

> 

0 

CD 

CD 

A 

CD 

CD 

CD 

2 

o 

Q 


mJ 

o 


\— 

o 

X 

o 




2 


< 




►— 




X 

aJ 

r> 

)— 

Ou 

_ 

o 

CJ 

a_ 

O 

(.5 

o 

<J 

Xi 

o 

L> 


it: 

o 


CO 

o 

z 

U- 



2 

X 


CO 


2 


& 


2 


< 


Ll 

CO 

it: 

-— 


lx! 

CJ 

uJ 

Lxl 

Lx 

UJ 

* 

ts 

QC 


< 

2L 


cr 

C5 

f—« 

CL 

X 


»—• 



cc 


*—• 


*—< 


M 



<• 

CL 

CL 

< 

3 


CL 

<1 

CL 

or 

CL 

CL 

aJ 

o 

D: 


X 

2 


Lx 

O 

• 

►- 

•k. 



CO 

to 

*— 


• 


O 


• 


• 

i 

Lx 

AX 

X 

■*- 

X 

2 

*-* 

2 

2 

2 

»— 

2 

2 

uJ 

d 

CO 

X> 

LP 

CD 

IT. 

< 

o 



<1 


>0 

c* 

D 

<r 


aJ 

“O 



< 

CO 

cc*. 

CD 

CO 

© 

3 

O 

CL 

O 

o 

O 

o 






























X 

O 




































© 

£■ 




































o 

*-> 









<t 



<t 


< 



<t 




< 













<1 



•*- 

CD 



33 

CD 

CD 






























o 








X 


C 

cr 

CL 

< 

(3 

< 

ixl 

X 


c 

X 

X 

c 

o 

DC 


X 

X 

X 

< 

X 

X 

X 

Lx) 

< 

C 

<< 

X* 


< 

X 

X 

C 

< 


o 


<L. 

uJ 

T 

o 

L_i 

C 

2f 

o 

o 

»— 

2 

4- 

o 

LX 

CO 

CL 

o 

LJ 

¥-- 

CL 

o 

Lx 

CL 

2 

o 

*- 

CL 


X 

O 

Q 

►— 

or 

♦— 

o 

— 1 CD 

_J 

CO 

*3 

— 1 

CD 


CD 

_J 


CO 

*-* 

CO 

_l 

CD 

CD 

X 

—I 

CD 

CO 

rc 

_J o 

x> 

X* 


CO 

CD 

© 

© 

-i 

_i 

CO 

o 

CO 



c ^ 
•— » 


CD 
>• 
CJ 
■ 01 


bP bF, 

Jt d 


3 O 
O © 
O' DT 


>o 


hO 


cn 

CD 


^ ^ ^ c 


CJ 


O 


« 

<J 


CJ 


O 

o 


O CJ 



<J 

O 


O 

CJ 


o 

O 


cj 


O 

O 

O 

CJ 


r\j 

S) 


o 

s 

O' 

s 


o 

K 

o 

G> Q 

CD 

>o o> 

G 

G 


G 

o 

CJ 

G 

E 



lx. 

G 

G 

G 


GJ 

d 

s 

s 

UJ 

ca 


s> 

rO 

(S 

s 

<s 

<S G> 

Q 

— a 

G 

S 

G 

G 

G 


G 

G 


s 

G 

G 

G 

G 

G 


CM 

G 


d 

o 


^j>c>cf--Ui>or'>c-cuJ>Of^acLA->cf^o<tuJcru. c u a cj >c 

Df\JC‘AJNC'(\JC'f\JDCJ > <SDe f'JCOOJ03Q(MGS.Cr^C&a 


«o r- g 

cm 


>c uj u_ <t a 

Q lx 0 0 0 0*0 


lx 

»—« 

m 

to 

r- 

C 

CJ 

Lxl 

G 

CM d 

>D 

00 

O' CD O 

u_ 

• ^ 

m 

in 

~o 

CD 


CJ 


u_ 


m in 






r- 

O' 

CJ 

lxl 

G 

C\J d 

rO 

d 

d 

d 

d 

d 

d 

d 

LO 

to in 

LO 

in 

aP in m *n 

>o 

>o 


vO 

vC 

>o 

•o 

-O 

vO 

r- 

n- 






r- 



r- 

CO 

CD CD 

ru 

rj 

fL 

cm nj oj 

nj 

CM 

CM 

CM fM 

AJ 

CM 

CM CM CM 

nj 

CM 

CM 

CM 

CM 

OJ 

CM 

CM 

CM 

CM 

CM 

CM CM 






CM 

CM 

CM 

CM 

CM 

CM CM 

Q 

G 

G 

G 

G 

G 

G 

G 

G 

G S 

G 

S 

G G G 

G 

G 

G 

G 

S 

G 

G 

G 

Q 

ow 

s 

G G 






G 

G 

G 

G 

G 

G G 

g —■« r\j **0 d in 

>o 


CO 

O' 

G 


rvi 

m 

d in 


N 00 O' & 


CM 

K> 

d 

IT 

■o r- 

CC 

O' 

G 


cm m 

d 

in 

sC 

h" 

oo 

O' 

G 

»-* f\j 

m 

d in 

^ ^ ^ ^ 

•—i 

—* 

—• 


rvi 

fU 

ru 

nj 

r u r\* 

CM 

CM 

cm f\j m 

m 

m 

rO 

Ki 

m 

m 

m 

m 

m 

d 

d 

d d 

d 

d 

d 

d 

d 

d 

in 

in 

in 

in 

in in 


Page 48 


Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


288 




GPIB INTERFACE AN EXAMPLE RT-ll M"AC VM32-10 ll-Jan-77 22|34|27 PAGE IS 

3NDBVT--- SEND A DATA BYTE FROM THE BUFFER 



cr 

uj e 

La. O 
II. *- 
D ^ 
CD 

© 

LaJ 4j 
X X 

x- n 

x © 

o 

cr T3 
U- c 

o 

uj n 

x o 

< «> 
h- c 
< — 

O *- 
D 

<r o 

L. 

C. 

-?■ — 
Lu © 
CO > 

© 

I — 

i 

I 

»- a 

>- 3 

rD *- 

o c. 

^ © 

CO 

c 


X 

T3 

O 

-D 

X 

c 

© 


D 

O 

E 

© 

C 


o 

c 


o 

© 13 

« • © 
m « 

ODD 
w X) 

< X 

Q_ © — 

O - r c 

<r in k o 


Q. 

x o 
uj ?- 
or u_ 

U_ O 
CD CO 



>- U_ £T 
CD O Z? 

Q J Z ? 
zct J 
CO aJ O II 


*~ © «- 
h- x © 
C *» ’♦■ 

CO ■*- 

• «5 D 

— o 


CD CD CD O 
OOO-I 


COOL 

• •- • X 


9> n 


r © 
*- rv 


© 

>•- 


x» 

© © 


u 

© 

r» 

© 

o © 

c 

© © 

a .a 

9 ) 



+-> 


u 

X 

c 

o 


© 

© 

<0 

c 


u 


o 



c 

c 


© 


© 

o 

«— 

to 


a 

MP- 

© 

© 

• 

0) 

«r 

> 


Q 

D 

c 

© 

V) 

D 

0) 

© 

p— 

L. 



Q 


© 

a 

C 

m 

4-» 

**- 

c 

© 

D 


♦- *- 4-* tD 


X © 'X — 


© -* 

4J D U 
X © « 
ADD 
C 

© © o 

a c 

X3 «o © 
CD© 
© «0 
CO w 

«-* © 

c © © 

© CO 
U t- 

o o 


© 


© 

> 


D 

jQ 


c 

£ 

® 

-w- 

o 




9) 

L. 



C_ 


© 

•— 

© 





t_ 


At 

© 


■— 






© 

© 


o 

*-> 

•*- 

o 


© 



© 

a 



© 

C 



© 

X 



© 

o 



X 



X3 

CO 

CO 



CO 




o 


© 

© 










© 

Jt 

X 


•*. 




M. 



►V. 

x: 

o 

U> 










A-* 

> 












c 

c 










E 

© 











o 


«*- 










4. 

© 












.Q 

4-» 












% 










c 

— 

c 

►—* 

o 

o 


o 




o 

1_ 

p— 

© 







o 



D 


> 

CO 

uJ 

UJ 


o 




>— 

A-» 

* 

© 

z 

o 

o 


X 


o 



© 


X 

to 

o 

o 


Li 


t_) 


CO 

c_ 

© 


_J 


5 ; 


< 


cr 


cr 


4-y 

<n 


* 

< 


UJ 


rt 

to 

u. 


© 

U 

I 

I 

X 


? 

■r-« 

UJ 

m 

X 



c 










4-* 

9) 

<o 










© 


E 










X 

T3 

E 

<* 

<r 





< 


< 

4-» 

© 

O 











13 

u 

< 

c 

<1 

CO 

X 

ui 

c 

UJ 

c 

o 

C 


o 

cr 


X- 

o 


Cj 

if 

o 

91 

© 

*-» 

_l 

o 

to 

or 

-J 


-J x 

_l 


a 

& 










© 

0> 

o 

•• 

•• 



M 





4-» 

D 

a 

a 

a 



►— 





© 

9: 


c 

to 



X 





A-' 


© 

3 

3 



X 





CO 

< 

o 

3 

CO 



o 








O 

X 



~z 






•** 


«eT. 

UJ 



CO 






a d 




*♦- 



X 

e n 

© 



o 

o 


JQ 

© 

*-» 




UJ 




X 



*-» 



C 

© 

D 




•— 


o 

© 




G 

CD 




X 




O 



c 

E 



X 



u 

D 

E 



o» 

d 


« 

O 

D 




o 



u 

T3 



X 

— 


© 

c 







o 

© 

T3 



«♦- 

*-4 


c_ 


C 



•— 

*—4 


o 

•1 

© 




CJ 


♦- 


« 




CO 







-~- 

< 


o 

D 

c 






4J 

© 

© 




X 



c 

X 



D 

o 


X 

c 

4-> 

© 


O 

•4- 

o 

4-> 

© 


4J 


G 


uj 

a 

c 

D 

c 


® 

X 


E 

© 

c 

■V- 



o 

•—< 

© 

D 

© 

o 


X 

© 

*—t 


© 

E 

a 


l_ 

X 

3 

t_ 


E 



c_ 

u 

CO 

© 

Jt 

O 

L. 

L. 

O 


< 

>4- 

w— 

u 

© 

© 

X 

o 


© 


X 

X 


AJ 

X O D 

V 

o 

o 

u 

•*-> 


*— UJ G 


c 




T? 

.— 





w 

c 

© 

© W 4^ 

© 


© 

© 

o 

© 

© © © 

to 

*—• 

o 

o 

3 


cr to co 









*-* LO O »-* CJ 

«. *. o *■ HO k 

CO CL oj %. o Q_ E- 

ic O) Q ►— ^ •* L O I h 

J j a _> • o u u* to 

KWi OX o LO l x i o: 

.« X X 


i uj x ^ o »— o x- a 

I m U 3 J (O J CO CD 


o o o 

X O S 
X IS 3) 


OOOOCDO O O C O O 

OJtiC'S7Q13QS3f\. , 3iAiLL<&Xi X X J~ 

QXXeTXXXuJSmS'S-^QSU.XXXXXrd 


^3 < NO- 
CC C O' 


ujoo-c>CKonvCNj 
orjp' ojcr'\jcnr\jc'rvio 


0<'ON^-fl<CN>OSGi 

<rjor\jco^Ljr«0-rvj 


s 


LO 

r- 


CD 

t_> 

Uu 

c* 

OJ 


>0 

tn 

c 

o 

UJ 


Oj 



Cj 

<5 

o 

UJ 

(X 

rj 

cr 

>c 

CO 

cc 

CC 

CC 

CD 

CC 

C" 

cr 

cr 

O' 

cr 

cr 

a 

a 

c 

<r 


<r 

<i 

< 

c 


TD 

CD 

CD 

CD 

f\j 

rvj 

OJ 

r \l 

(V 

r\j 

rj 

OJ 

nj 

ru 

rv 

AJ 

rvi rvj 

rvj 

rj 

rvj 

oj 

rvj 

ru 

rvJ 

ru 

rj 

rvj 

rvj rvj 

O 

3 

Gi 

3 

•X 

■s 

c 

G. 

KJ 

G> 

S 

s> 

K> 

35 

s> 


35 

S 

iX 

CO 

X 

X 

X 

X 

a 

S 


^NcocrK’-rjro^inostti? c- 

A <M 

ro 


LO 


r- 

ao 

a 


'U 

Ki 

ea¬ 

lT 

>o 


CO 

O' 

X 

*-• "J 

ro 

cr 


O 

r- 


rvj rvj 

rvj 

ru 

ru 

r\j 

ru 


ru 

Ki K 

ro 

ro 

rn 

m 


K' 

m 

m 

ea 

ea cr 

ej 

ea 

cr 

cr 

CT 


June/July, 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 49 


289 



© 

AJ 

> 

-D 

•Z 

aj 

(0 

XJ 


O 

c 



3 3 

•» M M « 

2 . > v *. oJ 

»-• <ro cl 3 

_j co 3 zn cd 

U. CC _J Z T 

U. W t- aJ ^ J 7 

OiTOIlPUU 


OB W 

<0 aj 


— © 

x -O 

c 




X 



o» 

o 





AJ 



c 






Q 




AJ 





E 



X 




cn 


© 



AJ 

x> 



n 





> 

c 



D 


c_ 



c 

o 





• 



© 

u 



C 


*►- 


© 




© 

o 


*♦- 


1£ 

AJ 

AJ 


if 



ZJ 

c 

© 

% 



© 

© 


XJ 

© 

xz 

c 

a 


X 

AJ 



AJ 

m 

© 

c 


« 

X 


AJ 

c 

T3 

> 



TJ 

a 


© 

--- 

C 

<0 



C 



flO 

o 

© 

X 

AJ 


to 

« 



a 

XT 


c 


X 

*j 

x 

M 



«♦- 

® 

M 


© 

T7 

T3 

© 

X 


L. 

o 

a 

TJ 

c 

C 

AJ 



I_ 

UJ 

m 


© 

© 



© 




AJ 



r» 

c 

AJ 

O 

AJ 

c 

a; 

AJ 

H- 

Q 

•— 

V 


© 

•*> 

CO 


♦—« 

3 

u_ 

o 

© 

CO 

.1 







X 



**• 

**» 


**■ 


X 

AJ 




e 

6 ^ • 

3 1- U. 

T> O O 

O aJ 


® <D 

X C 

4J O <TJ 


3 





*—< 

Ci 




AJ 



3 


Q 


o 



u, 


^2:- 

Q 


A 



Q 

X 


© 




u 


u 



< 

< 




X 

»— 

X 

•. X 

o 

«-* 

M 


<T 

<4 

CD 


CD 

CD 

2f 

o 

2, 

»— 

X 


jr 

I— 

_! 

X UJ 

*x 

in 

•*- 


O 

CL 

O 


3 

3 

Ci 

uJ 

o 

ZT' 

< 


UJ 

CO 

r 

3 r 



-— 

■ 

u. 

Cr 

UJ 




<T 

cr 

< 

3 

J 


cr 

cr 

<■ 

3 -«X 

»-H T? 



LO 

2T 


cr 

»—t 

cr 

>< 



*—• 

• 

• 


A. 

Ll 

i 

• r 

3 © 


cn 

if> 

♦— 

*—« 

►— 

u 

X 

►—* 

M 

o 

CL 

*< 

< 

rvj 

Cr 

CD 

co 

<X CO 

UJ © 

© 


nj 

O 

CL 

3 

— « 

o 

a 

CL 










ZJ 

X 

o 










X AJ O 


D 

C 

© 


CD 

< 3 : 


c c 


«r> 

1 — 
to 


CO 

© aj 


<<<<<<<< 

<<<<<<<< 



3 

CL 

CO 

*“* UJ 

o *- 

X- 

X 

X 

O CL 

7 

o 

X 

cr 

2 

h- 

cr u 

■ 



Q X 

X 

3 

cr 

X 

X 

X 

C 

3 

rc 

CD 

cd a? 

3 'O 

X 

CO 

CO 

3 O 

cr- 

3 

CO 

CD- 


CO 

CD 3 

o> ~c 

© 

© 

3 CO 

CO 

3 

o 

CO 

CO 

co 

o 
















UJ 

— c 

O 

y> 

























o 


D 







•• 

X 
















T> 

m cn 

tn 

© 







X 

X 
















C 


-r- 








3 

o 
















© 

x O 

X 

© 







X 

X 

•• 






•• 







•• 


CO 

X h- 

A— 

a 

•• 






< 





















tf 1 






X 


cy 






LT 







ru 


•* •*■ 

•- **» 



.* fO 






CO 


CO 

a: 


c 

o 

E 


C 

c 

© 

e 

E 

o 

o 


i 

a. 

c 


UJ 

ID 

C 

CL 

r- 


*Vi 

X 


2 . 

no 

3 

M 

lx 

ru 

a 

ru 

*—• 


a 

D 


© 

•o 

O 


cr» 

r 

© 


N ^ T? 

X 2 3 C T3 

| 2. O C 

C JUUJ 

© l_ < or > 

-> II (/) f— X 

i or o « 

— TJ 

—• C 

3 _J _J o 

cc 3 e u 

o o o i> 

<s 3 _i _i » 

C5 O O 


I 

ru 

"51 

y 

> 


-V 

O 

o 


o cr 

C UJ 

X u. 

2 U 

T> 

m 


o o o 

3 3 O' 

S "3 2 Q -S 5 D 


O 3 o o o o 

O o. G O « O J'' SO 

S S S S Q 3 65 -*■ Cd —• 

3 


o o o 

U_ G- Ci S 5 : u. cc 

ti- 3 Q 3 3 3 3 r\l 

rr ^ ? 

3 0 3 


«C<oiTN^)scNKuU'C'CNGcob.G >£ r-. -o < r^- x x cr 

orj©uf\j<t)C'^(Mi,oc'f\jcoa'rjsQ^ coDO'catrcr^ 


c < u u ^ rj ^ <CNC'uu J o'>j?>oir'C' cc 
n cn cr m u u u <3c_j(_jt_>LJ3coooc_,o 
f\jr\jAjrvjr\j«\jr\j f\jajr\j(\irurvjrvjr\jr\jnjrvj(\j 

sjooooso s S’ s c o s- s e? s- a o o 


OL.^3vOs<or. 

DOu.uJLkJ'aJiJJu. 

r\jrv.'f\jf\jr\jr\j<\jf\jf\j 

sosoo’ss-tss 


—« OJ *0 cy io 43 X CO O' O -«r\jfO^lP>0NcCff S. •-« fj ^ >0 N CC. (T Gi «-* r j *0 cy io >0 X 

^dipirunirupinir^ io to >o >o o o <o -o o -o 2 ) o ^ n n n x x x x x x ® c tc co tc tp (f co 


B cL 
X X 

a x 

x 

o 

cr 

iL. 

UJ 

UJ x 

_* X 

a cd 

X 

< < 
x x 

uJ C 

a 

_~y 

< C 


UJ o 

13 2 
C UJ 
U. CO 

cr 


UJ I 

»- I 

2 I 


IT 


CD CD 
*-* O 
CL 2 
O CO 


Page 50 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 June/July, 1977 


290 





o 



* © 






X> X> 




X <c 






X c 




TJ V 




© 


® ® 


© 


to t_ 



n- 

•— 


E 




n 



jr 

X) 


• E 


• 


► 13 

© 

« 

.— 

© 


O O 


X 


0 c 

X 

» 

© 

*-> 

© 

€> U 

€> 

T? 


® 

> 

CD 

*-> 


*— 

«n 

X 

T3 


• c 

u 

O 


M 

XI 

x: 

O 

© 


© 


X 

> 


<D 

— c 

0 



0 *-> 

•< 

t 

. — 

© 

X> 

c 0 


T5 

i 

X « 

CO 


*— 

x> 


a 0 

0 

c 

c 

0 — 

I 


co 


X 

4> <♦- 

c 



c — 


%- 

0 

V 

x» 

*— 

D 

e 


Qi 

© 

O 

X 

t 


— © 

<♦- 

9 


■— 0> 

X 



O? 

i 

— i 

0 

0 


9 

X» 

Cl 

■*-» 




--- 

u 

0 

C D 




c 

0 

c © 




© « 

X 

X 


© 

c 

€> > 

4 -* 

*-» 


X ® 

© 

X> 

<n 

X 

0 

X <0 

© 


*— 

►— c 


CO 

»—« 

9 - 

0 

X I 

0 

0 

•«. 

•fc. 





•«. 

•*. •* 




Q 


♦—• 

0 


O 


»-H 












0 


0 


% 





* 














«. 



X 


X 

_» 

<1 

M 

Ui 


_J 


X 










X 


0 

u 

M 

aJ 

m 



0 


2 D 


i—J 


X 








2 


E 

X 

-J 

x 

»— 

X 

U- 

0 


*— 


X 


O 








3 


U> 

< 

h*. 

<. 

z 

or 


X 


X 

X 

•< 


<* 







X 

Li. 

X 

< 

X 

Ll 

X 

<0 

9- 

L 


*1 

_J 


I 


CO 






*=> 


O 


UJ 

CO 

a 

to 

_i 

Q-l 

I 


9 - 

'v 

CO 


r 







•0 

►—< 


— 


<1 



<. 

<r 

CD 



D 










< 

<*■ 




< 


X 

< 


< 

_J 

X 

< 

*—« 

<t 

0 

X 

X 

X 

X 

X 

<r 

«r 

<r 

X 

X 

<■ 

0 


0 

O 

2 

O CL 

Ct 

O 


CD 

UJ 

7 

• 3 f 


z 

z 

cr 

Cj 

h- 

Cj 

9 - 

or 

_j 



_1 

<x 

_) 

cn 

—1 

_) 


O 

cn 

M 

*-* 

»—# 



cc 

—> CO 

3 

CO 

CD 


2L 

o 

< 

CO 


< 

co 

X 



CO 

m 



UJ 

m c 



-J 

4 ) O 



cn 

x »• 



< 

T> H/ 



*— 

0 © 




© 0 



• 

0 



or 

X — 



0 

X 



c 

« D 




T 3 C 

O 

■ 4 

• 

C © 

C 


0 

O 9 

D 

UJ 

lu 

U 9 

*♦- 

0 

CO 

© O 

O 

-** 


CO 0 

M 

CL 

1 - 




1 u> 

•«. •>. 


r***- 

1 



OJ 




•• 

_J • 



CT 

co cn 



ro 

X 



•• 

2 «- 



ru 

CO • 



c\- 

—» <t 



r- 





_J 



l 

cn 



c 

X 



<0 

X < 




—I CO - 

• • 

• 

• 

KID 

<t CD 

l_> 

—< 









_» O _J 




i-am 

UJ O 

4 lJ J 


HUG 

H- CL 

x 0 


cr. <x _i 

X 0 

X 2 


CO T 0 

CD < 

CD UJ 

1 

• • • 

«. •. 

. • • 


*-• ® €10) 
C C O H ■— X o 

— — > c — o o 

x i_ «r <d 4 j — 
a. < w u. 1 ^ co u 


<\i to 


1 S Q 


G> 


OJ 

Kj 


^ Z K Q 1C -or LU 
—1 •—••—• z c: j u v> 
cq:c:mm<_)uo 

9 — Q_ C~ CL Lx X *-* CO _» 

z ^ %a ^ ^ ^ 

Q co c\j jo *.r^x> «^<z «. 

*—•»-*r>j'\jr^f\jr\j 


x _J 
*-» CD 
Q C 

<J<<<C<<<< 

aOcovicr>w<n(oww 
• »i r 1. i j 7 ri 


2 

to 


to 


o * o o * 
sxrraii.O’Ouj-o h- 

QU.-’C'-’SO^'OLJ o 

H") H~ 

ca ea 


o o 

CM K1 Q 53 <\J 

u_ <s x © ca cd 


a 

o 


a • 

'CtnuJO^OCUJ'Or^ScCeCcC/XaCC'CNiuu.S 5^0 

O'rjuC'oGCiAJujrj-.^s^nQC'ucC'Jonj -auj 

X to 

UJ 

I 

z f 

< I 


c 

cs 

o 

<s 


-*M , /iCO<UlurKltr'Ncr<lU.OajL»-'K'. if h- C“ 
L.Ll-.LLu.u.LlCv CLCvGTir, 

(\jojf\jr\j<\j(\iOjfOK>r^, ro*OK'tOrOKi»^rOf-ox i rOrOf^. 
S'SSQG^CQS 3 L Q S C IS' G S 3 O O 


nr cn 
Lu _; 


fCj.KlNCCb.K1K 

—• — r\j ru r\j h\ ro 

^ K1 ^ n K1 r, Ki K, 

SOGK'OQSS 


o m a 


^\i^<L''XNcco' r-. •^'“j'O^jivONcca' <a —• 
^ ^ ro Ai rj rj rj r\j rvj r\j rvj rj K' r^i 


2 •. 
M _J 
CD 

cn x- 

*-♦ X 


—•rvjro^m-cr-cc'O' 




June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 51 


291 




c 

o 


Z 

o 

M 

CO 

z. 

UJ 

CL 

CO 

z> 

to 


© 

> 

© 


© 

as © 
> 

c_ to 
x « 


-* Z -Z z 

(— ♦—4 »—I 

< cl cl cl 

9- CL CL CL 
CO ^ IP 

as- in *o cn 

S ^ r\j ^ ru 


<<<<>- 
co to to <o cr 
Z t I X • 


D 

« 

l? 


© 

«) 


ai it 

a — 

O © O 

— A- O 

O C> as 

© 


it 

< 

X 


a> c 

jc ■*- 

© 

c » > 

• C — 
T> O «- 
C ■— © 

• •» o 

x C «- 

c» o 
at a 
-c • c 
as 3 © 
(9 

V c 

X X — 

*0 o 

*-> <L> 

0 ) x 
© c c 
t- o * 

09 T> 

O « «_ 

*-■ 4) C 


>- 

Xl 

X 


• o 

n © 

K> T3 
t> C 

c « 
c a 

x o) 
CO 3 

U O to 

tA © 

M O CT' 

< c c 
x © — 

a x 

4 ff 4< 

CO 3 X 
•C 0) C 

zr « 

d «- 

1 O t- 
T . **- — 


a 

3 


2 

O 


O' 

c 


x> 

© 

o 

c 

© 

a 

ao 

3 


O 

c 

3 


T> 

© 

t5 

C 

© 

a 

CD 

3 

« 0~ 

As 

T3 — 


m 

> 

c 

X "A" 



0 



L- 


> 

£ A 

co 

CO 


t_ 

jC 

•« 





— 


c 

D 

3 

c_ 

© 

L_ 

O 

AS 


3 


c. 

© 


L. 

O 


CD 

C. 






JC 

JC 

•— 

X 

-A- 


AS 

(D 

AS 

® 


3 

O 

At 

© 

o 

T5 


O 

O 


Z 

o 

© 

© 



z 

o 

CJ 


© 


0 

* 

c 

c 

c 

T3 

Q 


T? © 

Q 

u 

C 

•— 

c 

C D 

UJ 

<i 

«s 

X. 

X 

to 


CO 

© 

© 

0 

© 


— 

AS 


--- 


C 

C 

© 

•- A* 

X 

L. 

© 

T 

•»- 

© C 

o 

X 

■V- 

AS 

AS 

< 


"3 

X 

X 

-A- 

•— 

o 

X 

CO 


_J 

CD 

oJ 

•—< 

CL 

C3 CO 

9— 

UJ 

X 

9— 

X) 

CO uJ 

c 


c 



X 


CO 

UI 

UI 

Q 

U) 

o 

9— 















CL 

CO 

o 

a 

AS 

■* 


«: 











•a 



•*- •». 


•A 

•A 

•a 

•*» 

•» 


9— 

£ 

3 

L 

I 


I 


M. 

A*. 


•A 
















S- 

CL 



« 
























nj 

C 

© 

r; 

AS 



A 





















A* 

►— 

-CL 

© 

CD 

to 

o 

CL 





















d 

to 

AS 

c 

© 

z 

X 

CO 





















Kt 

UJ 


© 

<- 

CO 

l_> 

3 








CO 


s 


fO 

d 





>o 

cr 


•• 

£L 

X 

© 


_J CL 

(O 







s 

«-< 


rvi 




3 


s 

s 


—« 


nj 


-O 

.— 

o 

c 

-I 

it 







A 

A 

A 

«k. 


V. 


d a 


A 

A 



Q 

• ™ 

1 


u 

AS 

I 

UI 

X 







z 


*— 

¥- 


9- 

9— 

A S- 

s 

X 

X 

9— 

•— 

*- 

1 

T? 






o 



*-• o 

*—4 



339—3 kOij j do: 
JtLQ.Dt-uiaQc.aa 
cozzo.<Q.a:<r'Zuj 

»— *—• •—» K V lu UJ -H M t- 

4 4 M (/) |— ^ X 4 » ki/t 
_j K' ci «. *. *.3 4«o serin 

V- -4^* 7 S 


o »— o 

J<<<<C<-tf<<<>-< 
O co try oo to to co to <o to to x x 
• r t i i x z > i >: r •• 


i 

c 

c 


CO to 
CL CL 
UI O 


9— cr 

h- o 

CP _J 

CO o 


I 

rvj z 
q o 
r m 
>■ co 
z 

ui 

U) CL 

<t to 

T. 3 

X to 


© 0 0 

*— © AS 

— c a 

C £ 

o c. © 

O AS 
0 AS AS 
•*- © 

c 

© o © 

C £ C 

As © AS 

3X3 
O As O 


r v x 

9- «< 9- 


a ifl a'/) uj a s 
J >L X UJ O tO ►-« 

UJ _A 3 CL O D X 

Ut-H Q1 lOt- 
kx C _J Z < J CO 

»-« X <1 3 X I CL 


Z H J :> 
CO C X CL 
3 O t— CO 
CO I h X t- 
T « tO a CO 
X X CL 3 CL 


<t <t 


a 


CD CD CO 2D CD CD 
0 0 3 0 

a c *-■ i <o«rxt-Hxx 

QQOOOHQaH(/)ffl?t*OMZ Z Z 
• • • .jair^wat-<o?jC'2)HH 


CO 

cl 

o 


co 

CL —< 


< 

m -S 

i or 


to 

UJ 

9L 


O O 
K S <t 
3 3 —• 


o o % 

3 O «£* o in 

3 0 0 0 3 

3 


X GO 

u_ s 
3 
S' 


co u. n s cc 

rO rO d d d 

rn rn Ki m m 

3 S (S G S 


o O d co u> Pi- d oo o d 
d lo lp jo -_o .o o r- r- 
ms'if^rororomK'. mms - . 
OGOSOOQOOQO 


IkJ X 
-J to 
CL O 
X z 
< < 
X X 
lu 

CO 
7 S 
CL 
C 
Us 9— 

ui to 
<r id 
U. X 
CL 


vO m s h ^n^mjitoccico 
O'jQJ^S^^COC'LKJPJSfS 


IP rv p- XOOLJlA— rO^c0<?X. 
SNSSSSSStCcCcprCCcr; 
K* rS| K, 'P tP X' ^ tP fP ^P tP 


a- s n'\jfpcr/i^scc'Q^ r J^ ; riP>os 

—. Pif\jfvjrjfuf\jf\jr\jr\jf\jKipototOK'K'rOKi 


9- i 

z I 

9— 

CO 
CD CL 
M UI 
Q_ UJ 
ld »-• 


—• r\j m d lo -o 


®C'Q^ r jrP?i^'0^ fan —« mj m d in 
«h «-« •—« •—< »-« »-• •—* •—« rj m rj pj r j pvj 


Page 52 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


292 




V 

c 


3 

o 


t> 

o 


> 

c- 

© 


CD 


m 




© 





> 

x> 

M 


c 

© 


K. 

c 

• 


o 

■4-F 

X 

V 

* 

ft. 

c 


• 

0) 

C 


o 

o 

© 



© 

c 

o 


c 

«- 

D 


© 

© 

05 

© 

a 

c 

t 

a 


c 

a 

o © 

to 

.— 

to 

V 

© 

cc 

«- u 


n 


t- 

a 

3 

Q — 

a 

<D 

a 

ffl 

cn 

0) 

Q > 

3 

*-» 

z 

E 

3 


to t~ 



z> 


m 

C 

© 

C 



c 


© 

jO to 

O 

© 

x: 

a 

-X 

Li 

O 

01 

40 

v 


.— 

o> 

«- o 

— 

© 

o 

X 

<0 


O G 

LJ 

a 

2D 

i 

X 

_l 



— 


— 

— 

— 



• 

QC 


X 

X 



X- 

_J 

X 

X 

*- 




C_> 

X 

co 




» 

LJ 

X 

o 

-> 



-< 

U. 

z 

Z 

LJ 




4-4 

X 

CO 

a 





<t 






• 


CO 

CO 




ru 

CO 

X 

z 




♦ 

<f 

_l 

CO 

X X 



• 


X 

_J 



4— « • 


T 

£ 

£ 



a < Q) 

ro 

I 

X 

X ts 


x <t x cr 

7 tr o 

f-4 03 _J G 


> 

a 

co 


_jQ.cn 
d < t- 
a x a 


o 

a a o s 
u k tr c 
<. >- o z 

X CD T U 


X 

C_> 


CO 


CO 

— a: — * 


co 

“tr 


x 

X ►— X X G 

ct a: a; or. • 


co 
* or 


(X. 

C-> 

CO 


bJ 




c 

CD 





X 




F—I 

Z. 





a 




a 

F—< 





X 





*— 

•• 







z 

U-F 

z. 

CO 




a 



o 

X 

4-4 

X 


o 


o 



FH 

K- 

o 

o 

o 

z 


a 





a 


z 

c 





<1 

o 



c 

X 


a 


O' 

LLi 

z 

• 

G 

X 

X 


o 



ru 

F-4 

lD 

a 

X 

G 


<. 



*-4 

N 

LU 


o 

LJ 


a 


LU 


F-4 

a 

CO 

o 


CL 



C3 


_J 


-< 


a 

a 

X 


<1 


c 

X 


C3 

X 

X 

X 


Q_ 


4—4 

UJ 

CO 

z 

►— 

o 

a 



*—» 

►— 

Q 

►—4 

4—4 


a 

z 


x 

z 

*—4 

z 


H- 

a 

F— 



ru 

F—« 

iT 

4—4 

aJ 

<■ 

o 

CO 

z 




F—4 


_J 

LJ 

a 

a 

o 


cr 



U- 

X 

F—4 


o 



to 

•—4 

tr 

X 

<1 

z 

G 


CO 


•• 

a 

o 

r— 

»— 

F—1 

z 

a> 

% 


ru 


ti¬ 




c 

a 

• 


rv. 

i 


X 

UJ 


a 


a 



i 

er 

t— 

X 


a 


a 


x 

• 

LU 

4—4 

5— 

a 

a 

—4 

o 


x 

»— 

►— 



■ X 

G 

a 


X 

• 

aJ 

tU 


a 

\ 



o 

v-4 UJ 

c 

CO 

tr 

o 

G 

r\J 


Q 

a 

a to 

<0 

< 

CL 

LU 


\ 

a 

Z 

LJ 

< 

*3 

4—4 

Q 1 

_i 

F— 


A— 

< 

<■ 

s *-» 

• 

C_ 

u_ 

—i 

-t 

N 

X 


X 

a a 

^^4 


>— 

<1 

> 

C& 

X 

s 



. 1 < 


Z 

LJ 

a 


• 

a 

a 



_J 

F—4 


o 


\ 


X 

a a 


»— 


CO 


a 

C-i 

•• 

X 

CD CQ 


►— 

2 . 

4—4 


»— 

a 

a 


o o 

S 

Xi 

<C 


a 

>- 

o 

¥— 

a 

a a 

■ ■< 

CO 


5— 

X 

X 

< 

O 

a 

e> ld 

t 

• 


F-i 

►- 

• 

• 

z 

co 

. •. • 


OJ 

S' 

X 


LJ 

<t 


CO 

M 

x 


i 

x 

Ct 


x 

Li- 




Z 

o 


cc s 

s rvj 


ciJ o 
LJ <T 


oj >o a- 
rO 3 K' 


O 

s» 


a < 
_J Lu 

cl x 

J. 4—4 

< _J 
X <t 

! i 1 4—4 


LJ 

O 


a 

• 4 

K 1 

m 

cr io 










O' 

o 

a 

r j 

CO 

00 


cc 

O' 

O' 

O' 

a O' 









O' 

O' 

a 

O' 

<t 

ro 




rO 

KT 

KA 










ro 

ro 

•o 

ro 

rO 

s- 

o 


o 

G 

S 

S' 

G G 









S 

G 

s 

G 

O 

>o 

X 

co 

a 

G 

«-• a 

ro 

to 

>o 

X 

CO O' 

S' 

—« r\j 

ro 

^r 

to 

sO 

X 

CD 

O' 

G 

Tvl 

rvj 

rvj 

a 

KT 

ro rO 

ro 

ro ro 

rO 

K*. 

ro rO 

CT 



=3 


cr 


CJ 


to 


< z 

M 

UJ 

a •< 
c *-* 
u_ a 
□r 

a i 
x i 
z i 

*~i x 
UJ 
CD CO 

»-4 < 

C- x 
o a 


^f\jm^tn«ONr O' Gi—»f\|rO^LO>DXcDC' 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 53 


293 


03 A 3 DF 00G PI ASET : STX P0,D ! GET START OF T A f3 L E 

03A5 OE 0BG PLOOPS LDX P0,O f GET PRESENT TABLE POINTER 

03A7 Ah 00 LDA A 0,X J GET CO^NAND BYTE 

03A9 2B ID BMI PIADON ; DONE 

03AB 27 10 OEQ INDEXU > GO UPDATE INDEX REG. 





Z 

O 




y- 


UI 




•< 


3 




<3 


< 




O 


03 


UJ 


3 


O 03 


y- 


• 


y— 3 


>- 


3 UJ 


<o ►— 

y- 

CD 


o o 


z 

»—« 



3 < 


03 

X 

< 


ol 


o o 

u» 

►— 


z o 

Ui 

u a. 


< 


O y- 

a— 

03 

3 

O 


*-« CO 

X 

X 3 Ui 


X 

o: 

»— 

CO 

lu y 3 


3 

UJ 

< 03 


CD •«* ID 

3 

O 

»— 

Z UI 

UJ 

Z 3 < 

X 

03 

2 

*“* Q. 

X 

y- 

3 

I— 

*—« 

r- O 

k- 

03 

JC 

z 

O 

CO 33 


t Ouj 


o 

Q. 

UI CL 

Z 

ol u u 

CO 

o 


Q 

M 

2 2 



aJ 

X 


3 <L 

3 

y- 

>• 

y- o: 

I— 

y > > 

a: 

ui 

< 

UJ o 

Ui 

ui « O 

3 

LD 

if) 

CD fc*_ 

CO 

CD CO < 

X 

•*. 


• *. *». 


^ ^ ^ 





CL 

3 

o o 


O Cl Ct 

CO 

*. * 


X C X 

< 

S 

if) 

*. 3 *. ^ s 

*—* 

CL CL 


SO. -^L CL 

a 


CD < 

< X X X X '3 
O Z JhQlu 
—i • co _J o 


ID 

C X < < X X 
UJ u_ *— cr O r- 
3 C. W CD _J cn 


X X X X < if) 
O 2 Z Z Q3 

_1 *H M M X C 


3 

X 


Cl 

2 


2 

o 

c> 

< 

O 


s 

rvj 

3 

o 


Q. 

Ol 

*o 

rvj 

r\j 




c 

«o 


s 


l 

rvj 

S 

x 

>• 




>- 


CD 



03 


3 



3 y- 

• 

03 

CO 

• 

3 2 

3 


3 

o 

3 3 

3 

3 

3 

u 

<. 

03 X 

O 

a: 

03 

> 3 

03 

03 

c 


3 

< h- 


i— 

3 

O CD 

y- z 

Z 


03 

Z <. 

C 3 

o 

y- 

o 

c y- 

3 

CJ 


y- 


3 


2 

to 

3 03 

O 3 

o 

*—• 


X 3 

y- x 

y- 


X 

■< CL 

2 < 

2 

O 

CO 

Z O 

*-• y- 

y* 

z 

►-« 

03 



•< 

3 

z a 

CL QC 

CL 


CD 

o 

3 u* 

~D 

CO 

< 

*— X 

CL 


% CO 

y- 

CO cc 

y- o 

h- 

• % 

to 

CO O 

3 CL 

Ui 

3 3 

3 

< u 

CO CL 

CO 

3 03 





O O 





c 





< x 





M 





CL 2 

• 




O 

X 




1 M 





i y- 

• 


• 

• 

i < 

< 


•< 

c 

CO 03 





« 3 





3 2 


• 

• 


CO 3 


CO 

c 


1- CD 

X 

« 

% 


<X 

T 

s 

S 


M 3 

3 

• X 

X 


C_1 

2 

<t S c 

O -0« 

3 


CD 

<1 


CD X 

if) o 

• CO 


3 _J • 

3 03 3 UJ O T 
3 0* K- O' Q 

< js >-o z 
i o r a i iu 

• • I • • a 


O 

C JUJ y 
C_> *— ►— Q 

< y >- z 

T D CD D 


s 

X 


O 

1 UJ LJ 

o >- y- o 
< y > z 
r ® ® xi 


CL 

3 

O 

03 

O 

o 

z 

UJ 


CD U 

o s 

2 X 
Il> 4 


or lu x 
o r- o 
< y z 
X CD UJ 


CO 

CL 


O 


X 

X 


CO 


II 




I CD 
I— <a 
a y- 



CD 

O 




CD 

CD 


1 — 

^“4 

CS? 

Cs? 



X 

—»-s 


CD 

w 


K. 

<S> 

ca 


3 

-a s 

G> 

O 

2 


o 
3 2 
3 < 

a 

^cocOkLiD<yo'NGuJLuff>cccr. <y xco 

Ui^CM007'\Jf5liJ(\JLJDQC5!Qr2C\i^ <t * 

X • 

Ui u 
UJ 
2 O 
<. 

< 


ou rj 

•-4 

f^lTC 

CD 

a co 

o 

u 

^4 

x\ 

=T 

IT 

4D 

CD 

3 

*—4 

<t 

<1 CD 

cr> 

CD 3D CD 

CD 

CD CD 

•ID 

CO 

L> 

3 

3 

3 

3 

3 

3 

CL 

K\ 

ro ro 

ro 

K)K»Ki 

fO 

Kl XI 

XI 

rr 

►D 

XI 

ro 

X*. 

XI 

X> 

< 


rD 

S (S 

(S 

SOS 

CD 

s s 

s 

o 

S 

S 

K 

s 

s 

S 

Li- 

1 















03 

• 















3 

1 















y- 

to 


r\j 

=» in >o 

N C 1 O 

s 


ro ki 


to 

-o r- 


oj ru nj 

rvj 

rvj rj rvj 

l>J 

ro rvj 

Xt 


K> 

x> 

ro ro 

ro 

XI 


3 


CD 

cd y- 


»-*DJKl^iT'xON0CffS'^rv|rO^riP^}Nt)(j>s, ^\J ro ? ID -O N 
^^^^,^^,^^ w ^ rvjrvjfxjfvjrurjrjfxj 


Q- *“* 
CD CL 


Page 54 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


June/July, 1977 


294 



X 

'■C 

UJ 


cr 

<r 


i 
c n 


• • 




•> 

X 


O 


u 







rvj 

rvj 


SJ 


Q 







^r 



cr 


•C 


















<■ 

cc 

<r 


<. <i 

c 

CD 


X 




►H 

>» 

e> 


M 

o 

Q_ 


CD 

>- 



Cl 


<. 


CL O 

UJ 

O 


Ui 

3: 



Q 

< 

< 


Li C 

cr 

*<1 


cr 

u» ■ • 

to 

UJ 

CO 

*—• 

lj 

C-> 

ui *—l 

U-» h- 

*-« 

rvj 

k> *- nj 

2 R < < 

UJ 

X 

jT 

c_ pa 

Q •"■O Q. .T3 Q 

f\J 

m q. n 

s -• c 

Q_ cj 

>0 r3 

>0 u. O 


o 


—1 


c 

>— 

_» 


_1 


CL 

LJ 

X c 


H- 

to 

X 


C 


CJ 

t— 

O CL 

r> 


•—• 

OX X 

o 

O 

X V X 

< 

>~ 

_l O 

2 

UI 

_J 

_» £ ^ 

o 

—1 



X 

cd ? 

U 

I 

z. 

OIL UJ 

7 

o 

LLt Ui U 1 

• 

• 

• • 

• 

►- 

. • 

• Z u o u z u o 

CJ UJ 

• 

Z U C L) Z O 7 


>- 

:< 

ui 


o 

o 


to o 
z 

_J Ui 




C 

o 


& 


O' U UJ B (\J IT > N o- CD 

o cj u r? ooooo 

KifOKiK'f^KIKlfOK^ 

(sisosasoss 


U L -« ro LO (C 

O C LiJ U UJ UJ 

Kl K K1 *0 

Q 3 S S S 5 


■< C3U. ^K>ITS < UU 

uJUliiU.L.u.u.U. L.Il 

S G Q S S Q E- S S S 


QO O' ''VI Kl ^ IP >C N C o Si »-• OJ *0 ^ IP >0 N CO O - S «-* f\i rO ^lO>C ^ 0O O' 'S •^AjT^LO-Oh'CO' S 

fMrjrOfOfOfOrOf^roKifOr^i^^cr^^^^ cr cr ip ip to ip ip ip lp ir L r tiTxC-o<oo<o-o>o>o-o>oh' 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 55 


295 





ERRATA: TVT-II MOD HAD PIN NUMBERS 
PERMUTED (AN EXCERCISE IN SPIRITUAL 
STAMINA?) 

Dear Jim, 26 April 1977 

As a professional technical writer of 15 years standing, my 
heart rejoiced at the “beautiful, immaculate, exqui¬ 
site . .. etc.” schematics accompanying Lynn Smith’s 64-char¬ 
acter/scrolling conversion for the TVT-II. I may say that my 
heart nearly always rejoices when a new issue of Dr. Dobb’s 
Journal appears, but this was a particularly powerful rejoicing, 
since I am using my system for text processing and needed 
these modifications badly. 

I gloated over the clear instructions, and the beautifully 
flowing lines, logically so simple. I was even seduced by their 
charm into believing that the diagrams are accurate. 

I first installed the scrolling conversion, which worked like 
a charm. I noticed that the diagram shows the carry-out (C4, 
pin 14 of the 7483) grounded, but since the text clearly states 
that the carry-in (pin 13) is grounded and the carry-out is 
ignored, that was no problem. 

However, when I installed the 64-character conversion, I 
was nearly driven up the wall for three evenings by the fact 
that the scroll occurred at the 33rd character and the line 
then wrapped around to catch up on itself. At the end of the 
second evening, having carefully checked all the connections 
against Lynn’s diagram (and had two other people do the 
same) and found no errors, I went ot bed muttering curses. On 
the third evening, I reluctantly plunged into the monstrous 
bowl of spaghetti that SWTP supplies instead of a logic dia¬ 
gram, and began tracing down all the counters—character, cur¬ 
sor, and line. I tried some changes based on what I thought 
was happening, but the line feed remained obstinately at the 
33rd character, sometimes joined by the home. Finally, I 
traced out and redrew, with all pin numbers, the section as¬ 
sociated with the line counter. And behold! I found that Lynn 
Smith’s connections to IC40, pins 3 and 8, are reversed. When 
1 reversed the two wires going to the new counter stage, every¬ 
thing worked like a charm. A marked up diagram showing the 
proper connections is enclosed. 

After doing all that work, I thought of several letters to 
you, all starting with the English poet Charles Williams’ acid 
remark “Hell is inaccurate,” but before going to sleep I picked 
up my bedside book and happened on the following: 

jit*******************:*:* 

The Mulla Nasrudin went into the market place and started 
to address the throng. 

“O people, do you want knowledge without difficulty, 
truth without falsehood, attainment without effort?” 

Very soon a large crowd had gathered, everyone shouting 
“Yes, yes!” 

“Excellent,” said the Mulla. “I only wanted to know. You 
may rely upon me to tell you all about it if I ever find any 
such thing.”* 

After that, what can I do except thank you and Lynn 
Smith most gratefully for five evenings on which I was kept 
out of mischief, crowned by a most beautifully scrolling 
64-character display, plus a considerably better understanding 
of how the TVT-II works? 

With all best wishes, 

Christopher Terry 324 East 35th St. 

New York, NY 10016 

*From “The Pleasantries of the Incredible Mulla Nasrudin” 
by Idries Shah (Dutton Paperback D306, New York, 
1971) 

Page 56 Dr. Dobb's Journal of Computer Calisthenics & 


CENTRONICS ANNOUNCES COMPACT MICROPRINTER 

Hudson, New Hampshire (Monday, June 13, 1977) — Centronics 
Data Computer Corp. (NYSE) introduced a compact, high speed, low 
cost microprinter — the Micro-1 — at the 1977 National Computer Con¬ 
ference. 

The microprinter produces copy on aluminum coated paper by dis¬ 
charging an electric arc to penetrate the coating, which is less than one 
micron thick. Toners and ribbons are not required. 

The printed characters, unlike those resulting from thermal printing, 
are impervious to light, temperature, and humidity. In addition, the 
finished printed page may be reproduced on most office copy ma¬ 
chines. 

Aimed at the home, hobby, and microprocessor markets, the Cen¬ 
tronics microprinter has a higher print speed (240 characters per sec¬ 
ond) and lower selling price ($595) than competitive models. Initial de¬ 
liveries are slated to occur during the last calendar quarter of 1977. 


ARTEC ELECTRONICS INTRODUCES 32K BYTE 
EXPANDABLE MEMORY BOARD 

News Release Received: 77 Jun 15 

SAN CARLOS, Calif. — Artec Electronics, Inc., has introduced a 
32K byte static memory board in modular form designed primarily for 
microcomputer hobbyists but also applicable for small business uses. 

Designated 32K-100, the board is fully compatible with the S-100 
data bus and speed-compatible with Zilog Z80-based systems. The basic 
board with all support circuits, power regulator, 8K bytes of memory 
and assembly manual sells for $290. 

Additional 8K bytes of static RAM cost $255 each, and a full 32K 
memory board sells for $1,055. The 32K-100 is available for immediate 
delivery June 15, 1977, with a five per cent discount on single-unit 
orders received before July 1, 1977. Volume discounts are allowed to 
electronic distributors and computer store outlets. 

The 32K-100 requires plus-8 single voltage only with a power usage 
of 3 amps; access time of the DMA-compatible board is 250 nanose¬ 
conds. DMA compatibility allows users to access memory directly 
without going throught the central processing unit (CPU) on the micro¬ 
processor board. 


P.S. This is, without exception the easiest conversion to install 
of any I have seen—most others, including one which needs 
only one extra chip, require chips to be removed in order to 
cut traces under them. Ugh! 

June/July, 1977 


The 32K board, fully buffered on all address and data lines, also 
features battery back-up (allowing operation at reduced power con¬ 
sumption), and a "bank select" provision so users can select the blocks, 
or banks, of memory they want to address. 

According to Artec President Robert Jones, the advantage of having 
all 32K of static RAM on one card is that "usually one has to put this 
much memory on two cards, sometimes up to eight cards. This way, 
you add 24K memory to the original 8K without any additional 
investment in more hardware." 

While the predominant use of the 32K-100 is expected to be home 
computer users, Mr. Jones sees the board also having applications for 
the "small businessman for pricing, bookkeeping and process control." 

Artec Electronics, formed about five years ago, produces a complete 
line of printed circuit boards for industrial and home computer use. 

For more information, contact Robert Jones at ARTEC, 605 Old 
County Road, San Carlos, CA 94070, (415) 592-2740; or Paul Plansky 
at TYCER-FULTZ, Palo Alto, (415) 328-6300. 



Orthodontia, Box E, Menlo Park, CA 94025 


296 








WIRE WRAPPING CATALOGETTE 


LOWER CASE MOD FOR SWTPC’s CT-1024 


News Release Received: 77-Jut-18 

This new 12 page flyer features many new products that 
O.K. MACHINE AND TOOL CORPORATION has developed 
for the serious electronics hobbyist and the lab technician. 

The products include revolutionary manual and battery 


HOBBY MAY 1977 



for quality electronic parts and tools. 


OK MACHINE & TOOL CORPORATION 


wire wrapping 
center 


powered wire-wrapping tools as well as pre-cut and stripped 
wire, wire rolls, DIP sockets and wire wrapping “kits” specially 
designed for the individual enthusiast. 

Leader of the line is the BW-630 battery powered wire¬ 
wrapping tool. The tool uses standard “C” size NiCad bat¬ 
teries, weighs only 11 ounces, features a high impact housing 
and comes already equipped with a built-in bit and sleeve for 
wrapping 30 AWG wire on standard DIP socket terminals 
(.025” square). At only $34.95 (less batteries), the tool boasts 
a positive indexing mechanism and a built-in “backforce” de¬ 
vice to protect against over-wrapping, features normally found 
only in the finest industrial tools. 

Most popular among the hobbyist on a tight budget, or to 
complement the BW-630 for occasional use, model WSU-30 is 
an extraordinary hand tool that performs 3 complete func¬ 
tions. Lightweight (less than Vl ounce) and compact (4 h. inches 
long), the tool wraps 30 AWG wire on .025 square posts. In 
addition, WSU-30 also unwraps. Finally, it strips 30 AWG wire 
nick-free by means of a unique built-in stripper. Costing only 
$5.95 the WSU-30 performs the same functions as 3 industrial 
tools at less than 1/5 the price. Its rugged all metal construc¬ 
tion ensures a lifetime of outstanding service. 

The tool line is complemented by a complete selection of 
pre-cut and stripped wire, plus a remarkable new Wire Dispen¬ 
ser that features unique cutting and stripping capability. After 
the required length of wire is pulled from the dispenser a built- 
in plunger cuts length free from roll, while a gentle pull 
through the stripping blade removes the insulation without 
nicking the wire. Costing only $3.45, the dispenser includes 


Dear Mr. Warren: May 6, 1977 

I’m forwarding another mod to the SWTPC CT-1024 for 
your consideration. This one came about because of my in¬ 
terest in word processing and a need for lower case on my 
TVT-II. It turns out that adding one of the readily available 
lower case version 2513 ROMs is a simple matter requiring 
only a few hours work and about $15.00 for parts. Hopefully 
the enclosed circuit may save someone a little time and effort 
in adding lower case to their TVT-II. 

This is strictly “no frills.” The circuitry does not include 
below line shifting or even Greek characters. All it does do is 
add the ASCII lower case alphabet. Since all characters are 
formed from a 5 x 7 dot pattern they are not as “smooth” or 
well defined as the newer terminals get with a 7 x 9 pattern, 
still they are clearly legible and, considering the price tag on a 
new terminal, look just great. 

Only three IC are used for the mod. Two of them, the 
2102-1 seventh bit memory and lower case 2513 character 
generator, are installed piggy-back as shown on the drawing. I 
used a small PC board for the 74SL00 and the cursor gating 
circuitry. 

Because two character generator ROMs are now being used 
the cursor feed to the chip enable had to be changed slightly 
by running it through a set of diode gates so that both chips 
could be controlled from the one cursor line. To do this, the 
lead feeding IC-22, pin 11, must be opened. This may be done 
either by breaking the foil on the main board near the IC or 
by carefully cutting pin 11 free from the board and bending it 
out. 

The cursor feed is connected to the diode gates by the wire 
running from point “m” on the main board. 

Installation should present few if any problems. Of course, 
a moderate amount of care should be taken while soldering the 
two piggy-back IC’s, overheating them could be catastrophic. 
Sincerely, 

R. Lynn Smith PSC #1 Box 7327 

APO San Francisco, CA 96286 



50 ft. roll of 30 AWG industrial quality kynar insulated OFHC 
silver plated solid copper wire. 

All items available from stock at local electronics outlets or 
directly from O.K. MACHINE AND TOOL CORPORATION, 
3455 Conner Street, Bronx, New York 10475. For more infor¬ 
mation just ask us for the HOBBY WRAP FLYER. 


June/July, 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 57 


297 












dr. dobb’s journal of 

COMPUTER 
C 

Running Light Without Overbyte 

Number 17 August 1977 Volume 2, Issue 7 

A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


CONSUMER NOTES 

SCCS Group Buy — Complaint & Response 9 

About Those ASCII TTY’s That You Cannot Trade For..David Jon Fylstra 10 

Some Dire Warnings of a Modem, Jef Raskin 11 

Pennywhistle Plays a Better Tune, Jef Raskin 13 

SOFTWARE 

Towards a Good p-C Language, Joshua P. Gordon 15 

On the Effects of Filling Cavities Within the Fillings of Cavities Within . .Steve Witham 16 

The APL Core Project, Texas A&M APL Committee 18 

Decoding 650X Opcodes, H.T. Gordon 20 

A High-Speed Memory Test Program for the 6502, Jim F. Butterfield 23 

Mods to 8080 PILOT, Steven Spence 24 

Z-80 Patches for MITS Basic, Martin D. Gray 25 

Real-Time Modification for Sanger’s Video CHASE, David J. Morgan 26 

One-for-One Patch to P.T. 5K Basic, Morris G. Miller 26 

An 8080 Tracer, John Walker 30 

Friend Finds Factorial Flaw, Jef Raskin 31 

HARDWARE 

VDM-1 Modifications, Lichen Wang 33 

Dissecting the SWTPC Control Interface, Phillip Schuman 35 


alisthe 


rues 


60 


rthodontia 


MI SC. 

PCF is Center for Personal Communications Law, Kenneth S. Widelitz 37 

— plus lot’s more — 





© David Dameron 1979 
















sees GROUP BUY 

Dear Jim, 1977 August 3 

I’m writing this letter to you to let you know that all is not 
wine and roses in the computer hobbyist field. There are 
snakes in our Eden. I am one of approximately forty SCCS 
Group Purchase victims. By sharing my tragic experience with 
you, perhaps I might be able to prevent a similar situation 
from re-occurring to others. 

In April and May of 1976,1 placed orders for over $1000 
worth of IMSAI products. My money was given by the SCCS 
to Mr. Thomas Hudson, President of Microprocessor Market¬ 
ing. At the time, Microprocessor Marketing was the second 
authorized IMSAI dealer in the Southern California area. In 
addition, this dealer was carrying full page advertisements 
in three national publications: 

(1) Interface Age (Sep 1976) 

(2) 73 Magazine (Aug, Sep, Oct, & Dec 1976) 

(3) SCCS Interface (June & July 1976) 

In these advertisements, Mr. Thomas Hudson portrayed 
himself as a friend of computer hobbyists everywhere and pro¬ 
claimed that IMSAI “delivered in weeks, not months”. It’s 
been well over a year now and I have not received the shared- 
memory facility, three 4K static memory boards, and twenty- 
two 100-pin edge connectors that I had ordered and paid for. 
To the best of my knowledge, the SCCS does not know the 
present whereabouts of Mr. Thomas Hudson and has not been 
able to recover the money owed to us for undelivered pro¬ 
ducts. 

I personally feel that the SCCS as a whole has been rela¬ 
tively insensitive to the plight of the Group Purchase victims. 
No civil or criminal proceedings were ever filed by the SCCS 
against Microprocessor Marketing. As far as I’m concerned, 
the SCCS has let Mr. Thomas Hudson go scott free with my 
money and that of fellow members. At a minimum, the SCCS 
could have informed its 8,000 members through its magazine 
that Microprocessor Marketing had not yet delivered on old 
orders. If the club won’t inform its membership in such a 
clear-cut case as this that there exists an unreliable dealer 
so that other members won’t get hurt, I don’t think it’s 
much of a club. However, to be fair, I should add that 
Larry Press, the editor of SCCS Interface, did try to get 
this information into the magazine but was over-ruled by a 
majority of the Board of Directors. 

Nevertheless, the Board of Directors did authorize that 
a 20% refund be made to Group Purchase victims in Decem¬ 
ber 1976 and that a monthly 10% payment be made the fol¬ 
lowing eight months. By August of 1977, the Group Purchase 
victims supposedly would have received back all of their 
money. I should add that no interest payments were requested 
by the vicitms nor was there any offerred by the SCCS. In my 
opinion, it is no coincidence that the term of the present offi¬ 
cers and the Board of Directors expires at the end of August 
1977. This was probably the minimum the SCCS could do to 
avoid getting sued by its own members. However, the SCCS 
still owes me a little over $300.00. No monthly payments were 
made in June or July. It remains to be seen if I’ll receive a 
monthly payment for August. I will let you know if I do. 

I spoke to IMSAI about Microprocessor Marketing. Micro¬ 
processor Marketing is no longer an authorized IMSAI distri¬ 
butor. I asked IMSAI if they felt they had any responsibility 
to the Group Purchase victims. Their answer (and I believe jus¬ 
tifiably, though I don’t like it) was no. The lesson I learned 
here is that authorized IMSAI dealers are not really corporate 
extensions of IMSAI. Therefore, it is the customer’s own fault 
and tough luck if he deals with a bad dealer. I therefore sug¬ 
gest to every consumer that unless he can buy the product he 
wants off-the-shelf from his computer store dealer that he 


LARRY PRESS REPLIES FOR SCCS 

Dear Jim, Received: 77 Aug 6 

Ken Young showed me a copy of his letter to you and I 
have a few comments. His basic point, that SCCS lost a lot of 
money in dealing with microprocessor marketing is true, but 
I must take exception to a few others. 

A number of visits were made to the police and the district 
attorney’s office regarding the possibility of criminal action. 
This was pursued to a fairly high level in the district attorney’s 
office, but they would not prosecute. SCCS also spent $150 
with attorneys investigating the advisability of civil action, but 
on their advice it was given to a collection agency instead. The 
basic reason is that it is costly to get a judgement, which is 
quite possibly worthless, while collection agencies only get a 
cut of what is actually collected. The collection agency has 
been unable to collect anything to date and it is doubtful 
that they will. 

I cannot speak for anyone but myself, but as I stated in the 
January, 1977 issue of Interface, I consider repayment of the 
group purchase victims to be SCCS’ primary short run, moral 
obligation. I am not a board member, but have made my views 
known to them on a number of occasions. To date 75% has 
been refunded (5% in August) and it is a struggle. 

Finally, in my opinion, it is pure coincidence that the terms 
of office of the directors and officers expire in August. 

Lest this seem like pure apology and defensiveness, let me 
repeat that SCCS was burned badly. We were burned because, 
caught up in the enthusiasm for a new movement, we behaved 
in an incredibly naive, unbusinesslike manner. I might also 
add that SCCS owes me a good deal more than it owes any of 
the group purchase victims, but I went into it with my rose 
colored eyes wide open. 


THE CORRECT PHONE FOR THOSE CHEAPO 
2311 DISC DRIVES 

Last issue, we listed an incorrect phone number for Bob 
Perez, a source of super-cheap 2311-like disc drives. His 
correct phones are (415) 961-8941 or 961-8946. 


LOW-COST WEST COAST TOUR TO NYC’s 
PERSONAL COMPUTING EXPO 

Leda Alpert a travel agent with Travel Coordinators, 9060 
Santa Monica Blvd., Los Angeles 90069, (213) 278-7933, is 
planning a tour package — including low-cost air fare — for 
people attending Byte’s Personal Computing Expo in New 
York City’s Coliseum, Oct. 28-30th, from the west coast. 


consider not spending his hard-earned money or that he order 
the product he wants C.O.D. directly from the manufacturer. 

In spite of Microprocessor Marketing, I’ve managed to con¬ 
tinue to develop my interest in personal computing and ex¬ 
plore the fascinating world of microprocessors. It would have 
been a lot easier if this tragic and traumatic experience had not 
occurred. Try not to let it happen to you. 

Sincerely, 

Kenneth Young 
3311 W. 3rd Street 
Apt. 1-319 

Los Angeles CA 90020 
(213) 383-9666 


August 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 9 


301 



We Blew It - 

ABOUT THOSE ASCII TTY’S THAT YOU 
CANNOT TRADE FOR. .. . 

& NOTES ON TTY’S FOR THE DEAF 

David Jon Fylstra 77 September 6 

Box 10051 
Stanford CA 94305 

In the last issue, Dr. Dobb's Journal printed an article 
entitled “For Free: Replace your BAUDOT TTY with an 
ASCII TTY” (June/July 1977, p. 14). which claimed, among 
other things, that 1 was “assisting in arranging....trades” of 
BAUDOT teletypes in exchange for ASCII teletypes. This 
unfortunate article was published without my knowledge 
and without my permission, and has caused me considerable 
inconvenience. The worst of the article was that Dr. Dobb’s 
saw fit to publish my business phone number as the only 
means of contacting me, resulting in a heavy load of calls for 
my secretary and me to deal with, and causing many people 
to waste their money making unnecessary long-distance 
calls during business hours. I thought about forwarding 
these calls to Editor Warren’s home phone to let HIM deal 
with it, but I am too gentle a soul for that. 

While it’s true that I helped to bring together a few 
hobbyists at the Bay Area’s Homebrew Computer Club 
with a local organization which serves the deaf for the purpose 
of exchanging ASR 33 machines for Model 19’s, the supply 
of Model 33’s was quickly exhausted; and we by no means 
have the personpower, let alone the machines, to cope with 
the volume of inquiries that this article produced. Dr. Dobb’s 
somehow failed to notice that I have not made any announce¬ 
ments about this exchange at Homebrew meetings for more 
than two months. 

Another source of confusion is the term DEAFNET. Deaf 
people would not have any idea what this refers to; it is sim¬ 
ply a term that a few of us in the Bay Area have coined to 
refer to the large numbers of people in the U.S. who use tele¬ 
types to communicate with each other. It is not a network in 
any conventional sense: there are no store-and-forward nodes, 
there is no inter-node or end-to-end protocol, it does not pack- 
etize its information. It simply consists of the many thousands 
of people who initiate individual phone calls with a BAUDOT 
teletype and a special modem, in order to transact business, to 
get emergency help, or just to chat with a friend. 

The real credit for this system used by the deaf, their 
friends, and service organizations, belongs to such pioneers as 
Robert H. Weitbrecht and H. Latham Breunig. The original 
acoustic coupler and terminal unit were invented by Weit¬ 
brecht in the spring of 1964. American Telegraph and Tele¬ 
phone Company agreed to release surplus TTY’s to the Alex¬ 
ander Graham Bell Association for the Deaf in 1968, and Dr. 
Breunig and Jess M. Smith founded a not-for-profit corpora¬ 
tion, Teletypes for the Deaf, Inc. (TDI), in June of that year, 
to organize the acquisition and distribution of the machines 
among the deaf. The 1976-77 International Directory pub¬ 
lished by TDI lists 6,000 member stations, but the actual 
number of TTY’s in use among the deaf is surely in excess of 
that number. (Much of this historical information comes from 
this Directory, which is available at a reasonable cost from 
Teletypes for the Deaf, Inc., P.O. Box 28332, Washington, 
D.C., 20005.) 

Readers interested in the technical details of this system 
would do well to peruse Weitbrecht’s original patent, “Fre¬ 
quency-Shift Teletype,” U.S. Patent number 3,507,997, 
patented April 21, 1970. This one-channel system uses a Mark 


frequency of 1400 Hz. and a Space frequency of 1800 Hz.; 
and when the transmitter is idling between bursts of charac¬ 
ters, the line is silent. If the receiving party wants to interrupt 
the sender, he or she transmits the same frequency pairs, thus 
temporarily garbaging up the transmission. Most of you will 
quickly recognize that this system is completely incompatible 
with the Bell 103A standard, the method used by the approx¬ 
imately one-half million terminals around the world today. 
The reason for this is simple: Weitbrecht developed his modem 
before the Bell 103A standard came into common practice 
and was standardized in February of 1967. Add to this the 
fact that the deaf use Model 19 speeds and the BAUDOT char¬ 
acter set instead of the universally-accepted 10-or30 character 
per second speed and ASCII character set, and you have a 
system that serves the needs of the deaf marvellously, but that 
excludes them from those one-half million potential sources 
of contact, and that ties them to that beast of a vanishing 
species, the BAUDOT teletype. 

Enter the computer hobbyist. His desire for low-cost 
hardcopy has exacerbated the problem by generating a market 
for every last BAUDOT machine left (at least that’s how it 
seems). Many deaf people are growing resentful of computer 
hobbyists and hams who contribute to the scarcity of 
BAUDOT machines. If you can possibly spare your machine, 
I urge you to find a deaf person in your area who can benefit 
from this means of access to the telephone system. Your 
machine might become that deaf person’s first experience in 
independently communicating beyond the range of his or 
her eyesight. 

Aside from parting with your ancient, noisy teletype, 
what else can you do to help the deaf? Here is an area where 
many engineers seem to rush in to create technical solutions 
for problems with which they have no direct experience. My 
personal opinion is that the best thing you can possibly do is 
to befriend a deaf person and learn to communicate with him 
on his terms - you will discover the frustrations of finger- 
spelling, the tremendously high “bandwidth” of sign language, 
and the innummerable sources of confusion in visual commun¬ 
ication; when you speak, you might notice yourself using 
your face more expressively, pantomiming with your hands. 
By the time you are successfully able to communicate to your 
friend the reason why this teletype cannot transmit to your 
ASR 33, you will be well on your way to thinking up solu¬ 
tions to these problems. My feeling is that through these 
kinds of experiences, we learn to accept the individual differ¬ 
ences among people instead of pressuring them to bend in. 

My other comment is that you should locate one of the 
organizations that serve the deaf in your area and offer your 
help. They have worked with the deaf for many years and may 
have some remarkable insights for you, and you might have 
just the technical skills that they need. Among other things, 
there is a tremendous need for help in maintaining those 
teletypes and acoustic couplers. One hobbyist group that 
called me from Greensboro, North Caroline, told me that they 
are setting up a dial-in news service for the deaf using an 
IMSAI 8080 system. There is a need for low-cost, reliable 
ASCII-to-BAUDOT-to-ASCII converters. Other ideas will 
surely occur to you. 

In conclusion, in spite of the inconvenience caused me by 
last month’s article, I must remark that it was a pleasure to 
talk with many of the people who called me from places as 
diverse as Spokane, Minneapolis, Chicago, Kingman (AZ), 
Clatskonie (OR), San Diego, and Houston. If this sample 
of peole was at all representative of the average computer 
hobbyist, then there are many fine people among hobby¬ 
ists with a genuine interest in their fellow man. 


Page 10 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 August 1977 


302 



SOUR NOTES ON A PENNYWHISTLE 

SOME DIRE WARNINGS ON A MODEM 

Jef Raskin Received: 77 March 

The Pennywhistle 103, an originate modem by M & R 
enterprises in Sunnyvale, CA (which is a sunny place), is a 
good idea at a good price, with a few problems. For electronic 
whizzkids with a barrowful of test gear these problems will 
be easily surmounted, leaving them with a fine product. On 
the other hand a few details make this kit not a project for a 
beginner. There are some surprisingly inept features to the 
Pennywhistle, and it requires some rather fancy test equip¬ 
ment for alignment. But it is good value for the dollar, and is 
alone in its class for the moment. 

The neologism “modem” stands for “modulator-demodu¬ 
lator”. The need for modems arose when somebody wanted 
to send a digital signal to New Medford (for example) and 
noticed that there was a telephone line going to New Medford. 
But the telephone lines only carried audio. So this somebody 
made a device that turned a “0” into a 1070 Hz tone, and a 
“1” into a 1270 Hz tone. This was a modulator. At the other 
end (probably in New Medford) a device was built that trans¬ 
lated a 1070 Hz tone into a “0” and 1270 Hz tone into a 
“1”. This was a demodulator. Very much like a cassette 
interface. 

The party in New Medford, as it happened, wanted to send 
digital signals back to our original inventor. At the same 
time. No problem at all, just use a different pair of frequencies 
to answer. As a person can hear and separate different tones, 
so can an electronic device. Mother Bell chose 2025 Hz and 
2225 Hz for zeros and ones going in the other direction. 

A modem that sends the low pair and listens for the high 
pair of tones is called an “originate” modem. A modem that 
sends the high pair and listens to the low pair is named an 
“answer” modem. By rather arbitrary convention, in time¬ 
sharing computer systems, the terminals are equipped with 
originate modems, the computer with answer modems. What 
the computer hobbyist needs is an originate and answer 
modem so that she or he can play either role with another 
hobbyist. A number of companies make them. They cost 
about $300 (and up, of course). The Pennywhistle is half of 
what the hobbyist needs. In any case, if you have a Penny¬ 
whistle and a friend has a Pennywhistle you just can’t hook 
up your computers and have them talk back and forth. Fooey. 
You can go one direction at a time, of course, but you have to 
switch manually. I was dissappointed; but their advertising 
is accurate - - it is clearly sold (in the ad that I have before me) 
as an “originate modem”. And it will transmit (but not recieve) 
in answer mode. What their advertising does not say is that 
test equipment not found around the average personal com¬ 
puter household is required, and that the instructions are mis¬ 
leading and incomplete. 

I regret to have to write a negative review,since the circuitry 
is quite clever and quite tolerant of almost anything. In fact, 
it is excellent. The designer must have been told, when a child, 
to be discrete. He (the amiable and talented Lee Felsenstein) 
is discrete, for the printed circuit board is almost totally free 
of integrated circuits, but is full of resistors and capacitors - - 
all of the highest quality. No junk parts here. There are seven 
transistors, about two dozen diodes, over half a gross of re¬ 
sistors, and more than a score of carefully selected capaci¬ 
tors. The list of resistors in the manual has a typo (rare in this 
manual). On page 8 read R31 instead of R37 for one of the 
three 680-ohm resistors. 

So far, for a negative review, things sound pretty good. 
The impression of quality persists throughout the instruction 
manual. It is a neat booklet, printed on good paper, typeset, 
with the schematics and drawings clear and professionally 

August 1977 


done. Pretty. And the writing starts out very well. The de¬ 
tailed explanation of how the circuit functions is clear and 
complete. But the assembly instructions start out fair-to- 
middlin’ and quickly deteriorate to plain rotten. By the end, 
they are disastrous. Did someone get tired as they were 
writing? 

At the beginning the instructions are idiot level explicit, 
as they should be: “Install the resistors. Bend the leads at 
right angles to the board ...” While this step takes a while 
(remember how many resistors there are), nobody should have 
difficulty with it. Except for one thing. The stuffing diagram, 
with little notations like Rl, R2 and so on, is on page 11;but 
the list of which resistors have which values is on page 8. 
You can tear apart the nice little booklet, or try to find each 
resistor’s value from the schematic facing page 11. Either 
way, you are going to spend a lot more time than would be 
necessary. If the stuffing diagram had component values the 
builder would be saved a lot of effort, and would tend to make 
fewer errors. 

All this criticism and this is only the first step of the 
instructions. The second step has the builder install the diodes. 
You are carefully told which end is the cathode, and where to 
put it (politely). The author of the instructions still assumes 
that you are of subnormal intelligence. This is true for me 
when I am building a kit, so I am not insulted. In the third 
step the manual is still excellent. I quote some good advice 
from it: “The capacitors which are mounted in the upright 
position have their lead holes intentionally spaced a bit 
wider than the lead spacing. This insures that a small amount 
of exposed wire is left above the board for test probes and 
clips.” This is evidence that an experienced builder wrote 
the manual. 

But step 4 - - install the IC sockets - - leads to an abrupt 
drop in quality. The question is, which way to install them? 
Where does pin 1 go? The instructions say nothing. The stuf¬ 
fing diagram says nothing. At no point on the PC board is 
there a little dot or square land to signify pin 1. Nada. Niente. 
I figured it out by comparing the lands with the schematic 
with the pinouts for the chips. It turns out, looking at the 
stuffing diagram, that all pin l’s go to the upper left. But the 
builder should have been told. The idiots are suddenly left 
to fend for themselves. Incidentally, you are never told to in¬ 
sert the IC’s. The neophyte, following the instructions liter¬ 
ally, will be left with a handful of parts. So in your manual 
add STEP 6a: Install the IC’s. Maybe not 6a. Usually wait 
until soldering, etc., is complete. 

Little problems crop up: the primary leads, supposedly 
black, were in fact white. The experienced kit builder is used 
to this. This particular problem — wrong color leads on a 
transformer (perhaps from a different supplier than that in 
the original) — is a very common occurrence and has plagued 
many kits that I have built. Big problems crop up: If the 
switches are soldered into place there is no way that they will 
fit into the holes in the case later. Maybe the two that I saw 
were a bad batch, but good advice is to leave the switches 
loose and solder them after temporarily attaching the metal 
strip onto which they mount. Ditto for the LED indicators. 
Use the case itself to determine the correct position. 

If you follow the last four steps as written you are in severe 
difficulty. You are told to solder the line cord to the board. 
If you are really clever you thought to put it through the 
hole in the case and install the strain relief first. Otherwise 
you can just go back, unsolder the line cord, figure out what 
that funny little plastic thing is for, and do it right the second 
time. This is unpardonable. You are not even told to tin the 
leads first. What happened to the writer who remembered 
to tell you to bend the leads on the resistors? 

The speaker cups come glued to the case. They promptly 
came off in every Pennywhistle I’ve heard about. Including 

Page 11 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


303 



THE BEST OF BYTE - VOLUME 1 

news release Received: 77 Jul 12 

This 384 page blockbuster of a book contains the majority 
of material from the first 12 issues of Byte magazine. 146 pages 
are devoted to “Hardware” and are crammed full of how-to 
articles on everything from TV displays to joysticks to cassette 
interfaces. But a home computer without software might as 
well be a boat anchor, so there are 125 pages of “Software 
and Applications” ranging from on-line debuggers to games 
to a complete small business accounting system. A section on 
“Theory” examines the how and why behind the circuits and 
programs, and a final section “Opinion” looks at where this 
explosive new home computer hobby is heading. 

Early issues of Byte are selling for as much as $15.00. If 
you’re not a fanatic collector, this book represents a much 
better value per dollar. “The Best of Byte - Volume 1” is avail¬ 
able for $12.95 postpaid from Creative Computing, Attn: 
Pamela, P.O. Box 789-M, Morristown, N.J., 07960, USA. 


mine. Stick them back on with cyanoacrylate glue. I used 
“Hot Stuff’. It worked fine. 

The case was a headache throughout. There are no instruc¬ 
tions at all about how it is to be assembled. I found a way of 
putting it together that made it fit OK. But next time I want 
a jigsaw puzzle I’ll go buy a jigsaw puzzle. 

Step 15 is another catastrophe waiting for a victim. I will 
quote the innocent sounding opening: “Mount the PC board 
on the metal case backplate ...” You can guess one of the 
problems. Nowhere does it say which piece is the backplate. 
But that’s really easy to figure out. The catch is that once 
you mount the PC board into the backplate there is no way 
to make the adjustments called for in the next section of 
the manual! Ho ho. 

Did you have some rubber feet left over? You will if you 
follow the instructions. I’m sure you can find a use for four 
pretty rubber feet. But the final insult in the assembly instruc¬ 
tions is step 16, the last step. “Install and wire jacks using rib¬ 
bon cable provided.” You are given a schematic and that’s 
it. As to which goes where, or what those four little lugs on 
the back of each jack are for, or where to run the wire nothing 
is said. If you are not familiar with those clever switching jacks 
and how they operate you cannot complete this step. And 
your faithful equipment reviewer is waxing wroth. 

So much for the assembly instructions. All you needed was 
the usual tools: a screwdriver, a soldering iron, strippers, some 
solder, the patience of Job and the detective qualities of 
Sherlock Holmes. Now comes the adjustment. The manual 
says, “Adjustment of the Penny whistle 103 requires a fre¬ 
quency counter, an audio oscillator and VOM or VTVM. An 
oscilloscope is nice, but not absolutely necessary.” 

I must agree, an oscilloscope is nice. A frequency counter is 
nice, too. I have a VOM, and that’s it. So much for my Modem 
project. The ADVERTISING for the Penny whistle should 
state that exotic stuff is required. It doesn’t. The manual has 
neat ’scope photos. For personal computing, the requirement 
of a frequency counter, and a statement that an oscilloscope 
is nice but not absolutely necessary (emphasis mine) just 
doesn’t hack it. Your VOM has to be able to set the output 
level to 0.14 volts RMS, 0.39 volts P-P. Mine is a fancy VOM. 
Will everyone’s VOM be able to read these voltages? I think 
not. 

In sum, putting aside my reservations about the just-plain- 
bad assembly instructions and the requirement of special 
equipment for alignment, and considering that it is originate 
only, the Pennywhistle Modem half fills a need of the personal 
computer field. 


ASSEMBLERS, BASICS, & VIDEOS 


Received: 77 Jun 20 

Dear Sir, 

I just got hold of your March 1977 issue, and it looks good, calling 
for some comments: 

1. The most complete 8080 assembler I've seen is Intel's. 
It’s also the one most likely to be available to industrial 8080 users. 
Why not try to stick to Intel's formats? The macros are real nice, 
as are all the symbol-manipulation operators (AND, OR, XOR, SHR, 
SHL). "SYMBOL SHR 8” is the easy way to get the high 8 bits of 
SYMBOL. Of course, Intel wants a lot of money for their assembler. 

2. I learned BASIC at Dartmouth. Darmouth's BASIC has two 
kinds of subroutines: the standard GOSUB and subroutine you CALL 
by NAME, with lists of passed parameters and local variables. Get a 
BASIC manual from Dartmouth and drool. . . I have a number of 
programs I wrote at Dartmouth, and I dread having to cram them into 
a run-of-the-mill BASIC. Has anyone implemented the full Dartmouth 
BASIC on an 8080? Incidentally, BASIC at Dartmouth is a compiler, 
just like FORTRAN. Typing RUN causes the system to compile your 
program, run it, and discard the object code. ALL the editing and sav¬ 
ing commands in most BASICS are emulating Dartmouth's operating 
system, not their BASIC. Dartmouth even has a language, CPS, which 
accepts BASIC, FORTRAN, and assembly-language statements inter¬ 
changeably. 

3. "Time for Super Video?" Using the computer's main memory 
for video refresh grossly slows down the computer. The reason is 
that the video generator needs data so often (a byte every 700 to 800 
nSec for a 64- character line display) that the buss spends most of its 
time servicing the video displayed the processor runs only during the 
video retrace intervals. The standard 8080 buss takes 1500 nS to access 
one byte and get ready for the next byte. With a video diplay trying to 
get a byte every 800 nS, when does the processor get the buss??? Video 
boards have their own memory so that the buss is not tied up with 
this continual refreshing of the TV screen. 

Peter Traneus Anderson 
103 N. Union St. 

Burlington VT 05401 


COMPUCOLOR USERS GROUP FORMS 

Received: 77 Jul 13 

Dear Sirs, 

A group of us have gotten together to form a CompuColor 
Users Group. This Group is dedicated to the exchange of 
programs and technical data for the CompuColor. We antici¬ 
pate issuing a news bulletin periodically. Subjects such as 
how to concatinate tapes and disks will be covered. For each 
accepted program, a member will receive a number of other 
programs. There will be an initial membership fee of $10.00. 
This is to cover the duplication and mailing of materials. Those 
wishing to join the Group may send the fee to S.P. Electronics 
at 5250 Van Nuys Blvd., Van Nuys CA 91401. Further infor¬ 
mation may be obtained by sending a large self-addressed enve¬ 
lope to this address. Among our present programs are illustra¬ 
ted versions of BLACKJACK, a right rectification program, a 
fantastically illustrated version of STARTREK, illustrated 
slot machines, etc. For the most part we will try to exchange 
recorded media rather than program listings. Anyone inter¬ 
ested is welcome to drop us a line. 

Stan Pro 

S.P. Electronics 

5250 Van Nuys Blvd. 

Van Nuys CA 91401 


TERSE HEX CLUB NOTE 

Received: 77 Jul 7 

Hex Users Club for systems with 16-24 keys. (EPA, Motorola 
Evaluation Kit II.) Restricted to 6800 based systems, for now. 
S.A.S.E. to Charles C. Worstell, 36012 Military Rd. S., Auburn 
WA 98002. Phone (206) 927-6038 (Tacoma). 


Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 August 1977 

304 


PENNYWHISTLE PLAYS A BETTER TUNE 
Jef Raskin 77 April 30 

Update to “Sour Notes on a Penny whistle” 

This reviewer was gratified to learn that a lot of the problems 
that were discovered on the Pennywhistle in the accompanying 
review have also been discovered by M&R Enterprises. Better 
still, they have corrected many of the problems. This response 
to user feedback is most praiseworthy. However many of the 
early units are still out there and purchasers of them should 
write to the manufacturer at P.O. Box 61011, Sunnyvale CA 
94088. 

In doing the review I discovered that a cyanoacrylate glue 
was better suited to holding the acoustical cups than the 
silicone gunk that M&R used. Sure enough, they discovered 
the same thing, and the rubber parts now stick on properly. 

The pots—the ones that require a frequency counter and an 
oscilloscope to set up—are now much easier to set as two of 
them are now multiturn pots, and the others are now cer-met. 
The old pots had so little resolution that the least fidget with 
the screwdriver would throw them way out of alignment. 
Unfortunately you still need the specialized equipment to 
build a Pennywhistle, and as Marty (who is M&R Enterprises) 
told me, these kits are not meant for the beginner, but for 
people with electronic expertise. 

The revision C errata sheet also states which way the IC’s 
are to be oriented. I’m glad they caught this one. A few 
resistor values have been changed and the errors in the parts 
listings have been corrected. 

I was promised that future advertising for the Penny¬ 
whistle will: 

1. Make it clear that it requires a frequency counter to align 
the Pennywhistle, and 

2. Explain what an “originate only” modem is. (See the 
review for definitions and why this is important.) 

While the instructions on final assembly have not been 
materially altered I have been told (although I have not tested 
a unit) that the case has been corrected and that the switches 
now fit in the holes they are supposed to. As the review states 
this is an excellent design electronically, and the parts quality 
is the best we’ve seen. There were problems. The manufacturer 
appears to have corrected most of them, and seems to be 
conscientiously working to improve his product further, and 
to make his advertising (which has never been untruthful) less 
misleading to the typical personal computer buff. 

PENNYWHISTLE 103 REVISION C CHANGES 

PARTS LIST 

R 77 is changed to 5 K variable, cer-met, multi-turn 
R 75 is changed to 10 K variable, cer-met, multi-turn 
R 78 is changed to 20 K variable, cer-met, CTS 360S203B 
R 79 is changed to 5 K variable, cer-met, CTS 360S502B 

CIRCUIT BOARD ASSEMBLY 

R 79 is moved to a position just below R 74. Adjustment slot should 
face the board edge. 

R 75 and 77 positions are changed to accomodate low-profile multi-turn 
units. Adjustments slots should face bottom edge of the board. 

R 76 and R 78 are moved slightly. Their adjustment slots should face 
away from the board edge. 

D 25 is inserted to the right of D 19. 

SCHEMATIC 

Value of R 75 is changed to 10 K. 

Value of R 78 is changed to 20 K. 

Connection between El and E2 is removed. 

D 22 and D 23 exchange reference designations. 

R 37 (680 ohm 1/2 watt) should be R 31. 


PCNET - A PERSONAL COMPUTING NETWORK 

Recieved: 77 Jut 6 

The PCNET (Personal Computer NETwork) Committee has 
been functioning in the Palo Alto area since the April Com¬ 
puter Faire. The committee’s goal is the creation of regional 
(followed by national) personal computer networks for the 
computer-to-computer transfer of messages and files. A set 
of network protocols (sets of conventions defining all levels of 
intercomputer communication) is almost completely designed. 
These protocols should be operable in 8K bytes of machine 
code, and are designed to be implemented in string BASIC. 

The committee believes this should be attractive to personal 
computer users. Participation will be voluntary; you can decide 
to participate (or not) on any given day of network operation. 
Network functioning will be relatively insensitive to the ab¬ 
sence of an appreciable fraction of member computers. 

Our current thinking indicates the following tentative 
equipment required for participation in the network: 

A personal computer with 12-16K 

of RAM and string BASIC. 

An originate/answer MODEM 

capable of 300BPS. 

A message service — the ability to send a message (generally 
English text, although almost any file can be sent) is quite 
valuable. It doesn’t sound very dramatic, but it is surprising 
how powerful and efficiency — improving such a message ex¬ 
change facility is. What keeps ordinary message services 
(telephone, telegraph, mail) from working as well seems 
to be a combination of factors: too slow (mail); often hard to 
catch someone (phone); hard or time consuming to use 
(mail, telegrams); expensive in terms of characters per dollar 
(phone, telegrams); etc. A computer based message system 
overcomes most of these difficulties. 

People regularly using such a system rapidly develop a 
whole new communication style. Most messages are brief — 
500 characters or less. Content tends to be much more in¬ 
formal and direct than conventional media such as business 
letters. Message system users move rapidly toward a computer- 
based personally oriented file system containing messages, 
distribution lists, text files, etc. The difference is one of kind, 
not just of degree. 

The PCNET Committee is about to start a series of exper¬ 
iments. We would welcome people with personal computer 
systems who would like to participate; we’re especially inter¬ 
ested in people in the Palo Alto dialing area. We would also 
be most interested in similar network efforts in other places. 
We’d like to avoid west coast chauvinism and want to work 
closely with people in other parts of the country. 

For further information write or call: 

Dave Caulkins 437 Mundel Way 

415-328-2411 (wk) Los Altos, CA. 94022 

415-948-5753 (hm) 


Value of R 79 is changed to 5 K. 

ASSEMBLY INSTRUCTIONS 

All IC's and the opto-isolator are inserted with their pin 1 end (with 
a notch or small indented dot) facing toward the top side of the board 
(the edge with the 25-pin connector). 

NOTE: Part No. 1458 same as No. 5558 

Polystyrene Film Capacitors can be substituted for Silver Mica 
types. 


August 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 13 


305 



S-100 INTERFACE TO FRIDEN/BURROUGHS 
TERMINALS 

Dear D.D. Received: 77 Aug l 

Just a quick note on a subject that should be of great in¬ 
terest to some of your readers: the Friden (or Burroughs) data 
terminals that were sold last year by Herbach & Rademann 
and others. After many months of sweat and toil my partner 
and I have come up with a Unique interface circuit for these 
terminals. Our circuit completely eliminates the logic box that 
was sold with these teminals, and in doing so it eliminates the 
special protocol required by that box. Instead, a conventional 
TTY driver routine may now be used to drive the terminal 
(Altair BASIC required NO changes!). 

This circuit has a number of useful features. For example, 
a single switch will cause all lower case alphabetics typed at 
the keyboard to be transmitted as their upper case counter¬ 
parts (The aforementioned BASIC can’t digest lower case!). 
We’ve also managed to solve the half vs full duplex problem 
caused by the fact that the keyboard and printer are mechani¬ 
cally linked. We have built in logic that supresses the ‘echo’ 
characters normally sent by a full-duplex system. Of course, a 
single switch disables this feature, for use on systems that sup¬ 
port half-duplex operation. Another nice feature is that no 
matter what case the last character printed by the computer 
was in, the terminal will always stop in lower case (if you’ve 
ever used one of these terminals, then you know this isn’t as 
trivial as it sounds), making it much easier to use programs 
that take a lot of numeric input. 

The entire interface circuit, consisting of some 30 or so IC’s 
and a number of discretes, has been placed on a single S-100 
PC board, which may be dropped directly into any computer 
using this bus. However, the card is so designed that by 
changing about 5 chips, it instantly converts to standard 
RS-232 serial I/O, able to communicate with virtually any 
computer. All of this is designed into the board and requires 
no trace-cutting or chip-gluing for either form of the circuit. 

We had originally planned to do the circuit in wire-wrap, 
but after building a few of them we realized it’s just too com¬ 
plex to be practical. We are planning on selling the printed 
circuit card for $55.00, or a complete kit of all parts, PC board 
with silk-screened parts layout, and complete documentation 
for $150.00. If interest is great enough to warrant a larger 
batch of PC boards than is currently planned, the prices will 
be reduced considerably. 

Interested persons should write or call one of us at the 
address and phone # below: 

Thanks, 

Bruce Ratoff or Jeff Colter Box 28-D, Apt. 13B 
(201)963-0848 1 Marine view Plaza 

Hoboken, NJ 07030 

INTRALINE EDITING MOD TO WANG’S 
PALO ALTO TINY BASIC (DDJ-5-76) 

John Bunting 
2444 N. Delaware K4 
Springfield MO 65803 

Received: 77-3-10 at Homebrew Computer 
Club from Lichen Wang 

Rubout echos deleted character. This may be repeated 
until first character in line is reached. 

Control R gives CRLF then echos corrected line. 

This saves counting backslashes and allows an up-to-date 
echo of the current line at any time before CR by hitting 
Control R. 


VDM-1 MODIFICATIONS 

Lichen Wang 

150 Tennyson Avenue 

Palo Alto, CA. 94301 

Received: 77-8-3 at Homebrew Computer Club 

VDM-1 from Processor Technology has two little bugs. 
Bug number one is when you access the screen memory 
frequently, you get a log of flickers on the screen. Bug number 
two does not happen very often, but when it happens, it 
may bomb your program. Say you have a program like this: 


LD A 0CC00H ; read from screen 

MOV E,A ; or any other instruction 


Sometimes the instruction MOV E,A will be ANDed with the 
byte read from CC00. This happens more often in Crommenco’s 
Z-l or Z-2 systems than other systems due to timing. Processor 
Technology published a modification on Access issue #1 and 
#2. But (1) you have to modify both hardware and software, 
(2) it slows down program execution considerably, (3) it does 
not remove bug number 2, and (4) it makes bug number one 
much much worse on some systems. 

To cure bug number one, we can generate a wait state (by 
pulling RDY line on the bus down) when the CPU tries to ac¬ 
cess the screen memory while the video part is using the mem¬ 
ory. The maximum wait will be 45 u sec. During truly random 
access the average wait will be 15 u sec. To our bug number two, 
we only need to change the timing of Data Out strobe. 

What follows is a modification that will remove both 
bugs - at least for the systems that I have tried, Altair 8800, 
IMSAI, Z-l, and Z-2. No software modification is needed, 
screen memory access from CPU is slowed down somewhat, 
and have but one side effect that I know of. The side effect 
is that it is difficult to read the content of the screen memory 
from the front panel after this modification. There are 5 traces 
need to be cut, and 10 jumpers need to be soldered. All mod¬ 
ifications are on the solder side of the board. Step (g) and (k) 
are for bug number two. If that is the only thing that bugs 
you, you may do these two steps only. On the other hand, 
if bug number two does not bug you, you may skip these 
two steps. 

(a) Cut trace from IC17 pin 6. 

(b) Follow the trace of step (a) to the lower right corner of 
the board, it should pass near a pull up resistor R12. 
Solder a jumper between the resistor and the trace. 

(c) Solder a jumper between pin 5 and pin 12 of IC17. 

(d) Cut trace from IC 13 pin 10. 

(e) Solder a jumper between IC 13 pin 9 and the trace of 
step (d). 

(f) Cut trace from IC37 pin 3. 

(g) Cut trace from IC35 pin 1. 

(h) Cut at IC35 the trace from IC35 pin 9toIC13pin 13& 14. 

(i) Solder a jumper between IC40 pin 6 and file trace of 
step. 

(j) Solder a jumper between IC40 pin 5 and IC35 pin 9. 

(k) Solder a jumper between pin 1 and pin 9 of IC35. 

(l) Solder a jumper between IC40 pin 4 and the trace of 
step (f). 

(m) Solder a jumper between IC40 pin 3 and IC35 pin 11. 

(n) Solder a jumper between IC35 pin 12 and IC22 pin 11. 

(o) Solder a jumper between IC35 pin 13 and IC21 pin 13. 

(p) Check the jumper between IC38 pin 13 and bus pin 3 
or 72. For most systems, this should be at bus pin 72. 


August 1977 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 33 


306 




COMMENT ON Z-80 CODE STANDARD PROPOSED 

Received: 77-Jul-1 

Dear DDJ, 

The proposal for standard Z-80 object code (DDJ, March 
1977) precludes external references with an offset such as: 
LDA xname+4 

Thus, if reference is to be made to several elements in an 
array, each element would require a separate external name. 

The problem can be relieved by adding a new type of 
record (05). This offset record would be applied after the ad¬ 
dress has been formed via relocation. The effect would be to 
add an offset to the final address. The format could be: 
3.6 Offset Record (type 05) 

The address in the program which must be offset is ex¬ 
plicitly defined as is the offset value. One address is offset 
per record. An operator code is included for future ex¬ 


pansion. Currently the operator code is always 0 ^addi¬ 
tion). For subtraction add the twos complement. 

Byte 1 Dollar sign ($) delimiter. 

2-3 Type of operator, now always ASCII 0 (=ad- 
dition/sub traction). 

4-5 Most significant byte of address to be mod¬ 
ified. 

6-7 Least significant byte of address. 

8-9 Record type 05. 

10-11 Most significant byte of offset. 

12-13 Least significant byte of offset. 

14-15 Binary checksum. 

CRLF Carriage return, line feed. 

Very truly yours, 

David L. Ripps 9 Northern Boulevard 

Industrial Programming Inc. Greenvale, New York 11548 


Page 34 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


August 1977 

307 












DISSECTING THE SWTPC CONTROL INTERFACE 

Phillip Schuman 
1354 Finley 
Lombard IL 60148 

For the new user of the SWTPC 6800 system, it seems easy 
to do I/O - just let MIKBUG* take care of it. But the question 
of how MIKBUG does I/O is a real mystery to the newcomer. 
I came up with that question and after searching through some 
manuals and schematics, finally got it all straight - - it’s magic. 
Well, not really, but it is helpful to learn how the system uses 
both the software (MIKBUG) and the hardware (PIA device) 
at the control interface port. 

I will approach this subject in four parts; the addressing 
and selection requirements of the system, the PIA (MC6820 
device) itself, SWTPC and MIKBUG usage of the PIA, and the 
software of MIKBUG and its inner workings. 

ADDRESSING 

The MIKBUG ROM software makes certain assumptions 
about the hardware configuration of the system it will be 
running on. Each I/O interface is represented by four memory 
locations, as is the control interface that is used by MIKBUG. 
All interfaces are in an address range of 8000 to 80IF (hex). 
The control interface is referenced at locations 8004 - 8007 
(hex). This meets the requirements of the MIKBUG software. 
The actual mapping of the locations is shown in figure 1. The 
selection of the proper set of addresses (an I/O port) is done 
through decoding on the mother board. The appearance of an 
80 (hex) on address lines A15, A14, A13 will indicate that the 
I/O ports are being accessed. Address lines A4, A3, A2 will 
be decoded and will select one of the eight I/O ports by pre¬ 
senting a logic low to the CS2 pin on the proper PIA. 

To enable a PIA, the CS0 and SCI (chip select zero and 
one) lines must be at logic high, and the CS2 line must be at 
logic low. The SCO and CS1 lines are constantly held at logic 
high (+5 VDC). The remaining line CS2 is tied to the address 
decoding on the mother board. Having decoded to the proper 
port (PIA), the internal registers must now be accessed. This 
is easily done because the A0, A1 addressing lines are tied 
directly to the RS0, RSI (register select) pins of the PIA. 
Figure 1 shows how the RS0, RSI lines are used to select the 
internal registers of the PIA. 


locations. There are only two memory locations per PIA sec¬ 
tion, and there are three registers to be accessed, so one mem¬ 
ory location has to do double duty. The single memory loca¬ 
tion is the control register (CR). The other memory location 
references either the output register (OR) or the data direc¬ 
tion register (DDR), depending on a bit set in the control reg¬ 
ister. 

THE PIA CONTROL REGISTER 

The control register as shown in figure 2, contains bits 
that establish the status of the PIA. Bits bO, bl would program 
the output control CA1, but are not used by the control inter¬ 
face. Bit b2 is the indicator for selecting the PIAOR or the 
PIADR: If b2 is zero the PIADR, if 1 the PIAOR. Bits b5, b4, 
b3 on the SWTPC system control the CB2 control line. In this 
usage, b5 is always held at logic high, indicating that CB2 will 
be acting in an output mode. Bit b4 is always logic high indica¬ 
ting that the CB2 output will be latched, following the logic 
state of bit b3. Bit b3 is a driver for the CB2 control line; if b3 
is low so is CB2, if b3 is high CB2 is also high. Bits b7, b6, are 
used to control the interrupt (IRQ) flags, and are not used 
in the control port. 


Figure 2. CONTROL REGISTER LAYOUT 


EH 

bs 

KH 

KH 

EH 

■39 

KH 

ra 

IRQ 1 

FLA Cr 

TRG 3. 

FLACr 

cfli Cesi) 
co uraoL 

OCR 

AC&ISS 

con r£oi_ 


THE PIA DATA DIRECTION REGISTER 

The data direction register is a bit map of the output regi¬ 
ster. Each bit in the DDR will indicate how it’s counterpart 
in the PIAOR will behave - as an input or output line. A one 
bit indicates an output mode, and a zero bit indicates an input 
mode of operation. The DDR is referenced by setting the b2 
bit in the PIACR to a zero, and then addressing the PIAOR/ 
PIADR memory location. 

THE PIA OUTPUT REGISTER 


Figure 1. PIA ADDRESSING 


riflDR/4 
PiAOtA 
fxAcAA 
fl/iORfi 
fzA OR8 
pTflCfcS 


THE PIA 



fit 

03 

Ax 

A, 

Ao 

CR 

b x 

*oo4, 6 

o 

0 

1 

o 

o 

o 


O 

0 

1 

0 

o 

1 

8oof l( 

0 

o 

1 

o 

1 


goo6 ti 

0 

o 

l 

1 

o 

o 

?o <j 6 i4 

0 

0 

1 

1 

o 

1 

*° 07 it 

o 

o 

1 

1 

1 



The MC6820 PIA is comprised of two sections; A and B. 
Each section is essentially a twin except for voltage/current 
handling capabilities. Each section has three internal registers 
that are addressed from the outside world via the PIA memory 

*MIKBUG is a registered trademark of Motorola Corporation 


The PIAOR is nothing more than a buffer between the two 
worlds we are dealing with. The manipulation of the eight 
data bits in the PIAOR depends on the settings of the bits 
in the DDR. Since each bit is a complete bi-directional data 
path, extreme care must be taken when accessing the register 
as a whole. This software concern will become apparent when 
we look at the driving software later. Each data bit is add¬ 
ressed in the outside world by an appropriate bit number as 
shown in figure 3 (note that not all bits are used by the 
SWTPC control interface). The PIAOR is referenced by set¬ 
ting the b2 bit in the PIACR, and then addressing the PIAOR/ 
PIADR memory location. 

SWTPC USAGE 

The A section of the PIA will simulate a bi-directional serial 
I/O port. Bit bO is used for serial output, and bit b7 is used for 
serial input. The two end bits were chosen because of software 
considerations as shall be seen later. No other bits of the A 
section are used, as can be seen in figure 3.A. 


August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 35 


308 









The B section is used as a clock, or rather as a counter 
driven by the data clock pulses. Since we are generating and 
receiving serial data by software simulation, the software has 
to be provided with proper timing pulses. Section B provides 
the control interface with an indication of elapsed time. The 
timed interval is equal to either the duration of a single bit, 
or a single X A bit. The data clock rate is equal to sixteen times 
the baud rate. This 16X rate is fed to the counter, which di¬ 
vides by 16 for a full bit interval, or divides by 32 for a X A bit 
interval. Bit bO will reset the counter, (logic high) and the 
counter will not start until bit bO goes logic low. The output 
status of the counter (divide by 16 or 32) is selected by bit 
b2. Bit b7 will have a logic high when the selected count is 
satisfied. Bit b6 is tied to logic high or logic low, and is used 
during the transmission of an ASCII character. It is used to 
indicate the number of stop bits to be generated, but it is 
not used for receiving characters. 

Finally the CB2 control line has 2 purposes in the control 
interface. Control line CB2 follows certain bit settings in the 
control register. To turn CB2 on (logic high) a 3C (hex) is 
loaded into the PIACR bits b5, b4, b3, b2. The CB2 line acts 
as a reader control when it is turned on by a MDCBUG LOAD 
command. In addition, the CB2 line is logic gated with the 
output RS232 line from the control interface. The RS232 in¬ 
put line is wired to be echoed on the RS232 output line. The 
CB2 output controls this echo hardware feature. If you load a 
program via a MIKBUG LOAD command, the CB2 line is ac¬ 


tive, which also means that the RS232 output line is turned off. 
After the loading is complete, a store of a 34 (hex) into the 
PIACR bits b5, b4, b3, b2 will turn off the CB2 line and re¬ 
store the hardware echo feature. The b2 bit was accessed to 
insure that the PIAOR would be selected upon referencing 
the other memory location. 

MIKBUG SOFTWARE 

Two MIKBUG programming functions will be considered; 
initialization of the PLA, and reception of characters at the 
control interface. Since the PIA is a programmable device, 
it must be configured upon a powerup or reset condition. 
The RESET line in the SWTPC system will initialize the PIA 
so that all registers will be zeroed. Starting from this zero 
state, MIKBUG software will configure the PIA for handling 
I/O operations. Figure 4.A contains a detailed listing of the 
PIA initializing sequence. Figure 45 reflects the status of 
the PIA during this period of time. After this has been di¬ 
gested, the PIA input software can be looked into. This 
software is reflected in figure 5. It is very liberally com¬ 
mented and should be easily understood at this point. Note 
the use of the ROR and ROL operations to select off the bit 
from the PIA. This was the software consideration for select¬ 
ing the two end bits for the I/O operations. 

This is the end of the road, we hopefully have shed some 
light on the SWTPC control interface, along with bringing 
MIKBUG out from behind the shadows. 


C • 

Q !U : 

c ^ , 


i C i/. 

< C =" 

o — 2 a. 

C a a 2- - or 

«? U (/ < b — 

— \r. -> c 


1 / — I/O 

■Si/*— T. — i_ 

— c a X 

b- __ Cj L/"> H 

z r- — c. v 

I 5 

> »- F o ►— i_ r\ 

l •- i r. u t_. r* 


Q JUO 


•x O 

1 <i O t- 


2 * C- * _J 


* X. * - 

* — * 

* ZL * 


w »i * v* 


r- «> 


Page 36 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


August 1977 

309 



PCF IS CENTER FOR PERSONAL 
COMMUNICATIONS LAW 

news release Received: 77 Aug 1 

The Personal Communications Foundation (PCF) is no 
longer in its formational state. It has been lifted off the draw¬ 
ing board, is actually in operation and helping Hams, CBers 
and their attorneys. 

The PCF is a non-profit, tax-exempt foundation organized 
expressly to serve as a central clearinghouse of information 
and research in the area of personal communications law. The 
PCF is the only organization of its kind because personal com¬ 
munications law is not yet formally recognized as a legal spe¬ 
cialization. This is true although statistics indicate that in 1976 
alone there were 7,000 legal matters pending involving all as¬ 
pects of personal communications. 

The cost of litigating such a specialized lawsuit can be in ex¬ 
cess of $10,000. Approximately 40% of that cost represents 
time devoted to research. An attorney with access to the PCF’s 
specialized personal communications library of briefs, cases 
and in-depth studies can eliminate much of that research time 
and consequently reduce litigation costs by thousands of dol¬ 
lars. Further, because most attorneys are not familiar with the 
nuances of personal communications law, an attorney using 
PCF materials can better represent his client. For example, the 
PCF has spent in excess of $2,000 funding a study on the issue 
of Federal pre-emption of the personal communications field 
by the Communications Act of 1934. This study was con¬ 
ducted by a constitutional law expert who is also an engineer. 
The resulting legal memoranda has already been incorporated 
into a brief before the California Court of Appeals. 

PCF is controlled by a twenty-four member Board of 
Trustees. Each Trustee is either a practicing attorney or law 


school professor. The Trustees hold amateur radio, citizens 
band and first and second class commercial licenses. 

The PCF cannot run on the energies of its Trustees alone. 
In order to continue to build its library and fund additional 
sutdies in areas where existing case law is in conflict or in 
those areas which have not been adequately briefed to date, 
substantial funding is necessary. PCF estimates it needs 
$250,000 in its first two years to be fully effective. 

Thus far the PCF has gotten off the ground thanks to signif¬ 
icant contributions by the Amateur Radio Relay League, 
Wilson Electronics and Yaesu. But the funding necessary to 
function at full potential has not been reached. As the PCF is 
a membership corporation, much of the funding is expected to 
come from membership contributions. With over 300,000 
amateur radio operators and 14,000,000 CBers in the U.S., 
membership contributions should be substantial. Four classes 
of membership have been established. These are known as as¬ 
sociate membership, for a yearly contribution of $10.00, full 
membership for a yearly contribution of $25.00, contributing 
membership for a yearly contribution of $100.00 and life sus¬ 
taining membership for a single contribution of $250.00 or 
more. All members except associate members are eligible to 
vote for Trustees. All members of the foundation will receive 
the quarterly PCF Newsletter. 

Contributions to the PCF are tax deductible. 

The PCF office has recently been relocated to 10960 Wil- 
shire Blvd., Suite 1504, Los Angeles, California 90024. The 
move was made to facilitate administration of the PCF by its 
newly elected president, Kenneth S. Widelitz, a Los Angeles at¬ 
torney. All membership contributions and inquiries should be 
sent to the PCF at the above address. 


—- rv 


*• O >- 3 — 2 ' 


C 5 . 

v~ 

C 


■ uj c 
• F U. 
< Cl 


r *- 
z a. i 


O >i- 
7? F 
C <■ 
C .' F- 

C 

C Q. 


o . 
c ~ . 


p- ► 

1 -V U, u; 
F- C X 


I f" 
I rr 


•K > * C S 


# Q V 7 i u 

■fr h < 

n c « a i/ J 


*— * 
o * 
<s. * 
< h 
if 

or a 


a 2 U SL 

a i_j - 

: < o n 

• f- “ s 

• <1 'JJ t_> ~4 

• o. > o 

• : < c a 

• TO 

1 / LT U 

L < h <1 

■p u I a 


I T — «/> 2- F- 

X ~ c -z 

’ — S u: F- C 

- * or —• c 

O. Cl l/> 

' C4 ll Z b 

C 5 T < ll 

~ -J - F- Of ‘Z' 


u. ff c N 


F C 
,0 > 


c 

U- L 

Cl 


: c u* s r 


•I/’S 
D H 


C r> 
c.' r' 

a C 
f- o 

a. f 


F <J u; 

i/* y t/> 


u r L 
F \t O 


ll — F 
I V 


zr C' 


a < c >■ ct 


~LU>_C 
O it C- CL — 2 C C. F S a. 

" a *— u c. iti •— ix r 


— u. C a <jtu C 


C F cc — UJ 


u X D 

LT l/' f~' 


’J < Q <S t— r 


& F C i 
Ll. U Ci 

1 c* f c ■ 


j z. o r* — . 

: o < — 

. a f F • 

’ < if. u. u 

3 3:. <t l 

U. c a ; 

_ a ^ K : 

-j 

-Oil 
' y 7 a <~r- > 
< T 


F 

I V Cl 


a o. 
C s 


F UJ 


u “ f -j : 

c u u i 

u. IT' < 1 1 

•- r a 

J < c. 

i x z . 

t_ . 


c I C - c 

F- | C£ K e- 

I a. — 

CL LL' I a LU 

Uj > | 3 

F— I F— 

,? h a uj it 

r ^ a. i/' u 

V. K u. Z’ 

i. C Z a u. 

a -L 

c C‘ U. 3 

c a c u 

u •- o 

f- a 

F Q. Uj UJ I 

C I/' Y F 

C U 1 < LL 

3 _ a ry 


< *1 Me O 

U. H F- IS 

a. a a a < 


hi L - - CL 'T 


Cx F- < 

X < D 
LL 
F- K 

K- <J tr. 

5 F- c 
a. 

— C. tx 




LL U. 

r> _ ^ —• 


u. 


ll Ll Q L C 


~y ^ uj * 


x _J X X 
► U.J * 
rv L- (NJ CN 


F- JL t. tn 
1 / O. 7 u.' F 
F- I _ C •> 


F, 

.1 






August 1977 

310 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 



TOWARDS A GOOD u-C LANGUAGE 

Fol ks: Received: 77 Jul 28 

I have some concepts which I would like to get some crosstalk on. 
Any response to these ideas from users of microcomputer systems in 
general, and those users with experience in the design and implementa¬ 
tion of higher-level languages, would be most appreciated. 

I am concerned about the process that is taking place regarding the 
implementation of languages such as BASIC, FORTRAN, and others 
for microprocessors. A great deal of time and energy is being spent in 
adapting these languages for smaller machines, and I believe that this 
time and energy is being misspent. The common, familiar high-level lan¬ 
guages were designed with the big computers of the day in mind: to¬ 
day's FORTRAN is a lineal descendant of the FORTRAN of the late 
fifties, encompassing all of the corners that had to be cut to implement 
a high-level language for a big machine. Similarly, BASIC was designed 
for a time-sharing environment. But more important, these languages 
were designed in an earlier era, before many of today's concepts of 
what is a "good" programming language had been evolved. 

I am not a member of the "kill BASIC” school: I believe that 
BASIC has its purposes. Indeed, as its acronym implies, it is a good be¬ 
ginners' language, excellent for those interested in neither the nuances 
and aesthetics of more sophisticated languages nor the specialization of 
the languages designed for more specific purposes. It is widespread 
(though the many dialects of BASIC make portability somewhat of a 
problem), and it is a relatively safe language for timesharing users — 
there is nothing the single user can do that is likely to bomb out an en¬ 
tire system. And, admittedly, it is quite easy to use. 

The point is, however, that BASIC was not designed with the micro¬ 
computer user in mind. It is extremely important that researchers not 
spend time and effort re-inventing the wheel: the existence of journals 
such as DDJ and KB help propagate ideas to the public, and save a lot 
of important man-hours (person-hours, whatever). But it is even more 
important to realize that the tools appropriate for one job — writing 
programs for a megacomputer — may be grossly inappropriate for an¬ 
other job. I am considering pursuing research into this field in the near 
future (probably as my doctoral research). Here are some ideas I came 
up with just in the space of a few minutes: 

T) Many uC users who will be using a high-level language on their 
own machines will have some, if not a lot, of familiarity with the assem¬ 
bly language or the machine language of their own machines. Facilities 
within my proposed language, which I refer to as GOLLY (Gordons 
Original Language?) (Yes!), would include compile-time macro facili¬ 
ties, so that the user could include assembly language code within a 
GOLLY source program. This would also facilitate experimentation and 
real-time control. 

EM PL, A MICRO “APL” FOR 8080 s 

Dated: 77 May 18 

EMPL, an APL-like interpreter, is available on Tarbell Cas¬ 
sette Tapes. It runs comfortably in 8K. The actual program 
takes 5,376 bytes. It has numeric and string vectors, user de¬ 
fined monadic and dyadic functions, double byte interger 
arithmetic (+32767), and APL operators adapted to the 
ASCII character set. The cassette & user’s manual is available 
for $10. Write: 

Erik T. Mueller 
Britton House 
Roosevelt, NJ 08555 
(609) 448-2605 


NO MO’ 8080 DISASSEMBLER, SOON 

77 July 6 

NOTICE: The 8080 disassembler printed in February ‘77 
DDJ and offered on tape by me through the Chicago Area 
Computer Hobbyist Exchange Software Library will no 
longer be available after October 1, 1977. I am perfectly 
willing to arrange for any person or group to pick up dis¬ 
tribution. 

Sincerely, 

Ward Christensen 
688 E. 154th Street 
Dolton IL 60419 


2) There are already a good number of direct memory access devices 
on the market today, notably the VDM and Cromemco's Dazzler. 
However, high-level languages in particular, and BASIC and FORTRAN 
in particular, have no standard provision for writing and reading direct¬ 
ly from memory. GOLLY would have explicit facilities for accessing 
any portion of memory easily and efficiently. Probably a complete im¬ 
plementation of GOLLY would include address checking so that cer¬ 
tain areas of memory would be protected from writing (such as the 
compiler/interpreter itself). Note: I have no idea yet whether an inter¬ 
pretive language or a compilable language is the direction in which to 
go; I welcome comments. 

3) I/O facilities should be carefully considered, and designed in such 
a way to take advantage of the I/O facilities of juC’s. Special attention 
should be paid to the difference between regular I/O devices such as 
TTY's and DMA devices such as CRT's — different facilities should be 
available for each. 

4) A language without recursive abilities is a waste of any micro¬ 
computer's potential. As far as I know, most pC’s utilize a software 
stack and use it to store return addresses for called routines, a method 
which makes recursive subroutine call at the very least simple. Neither 
BASIC nor FORTRAN allow for recursive subroutines. 

5) Current philosophy of language design, as well as the considera¬ 
tions of program proving and modularity, make a structured design im¬ 
perative — FORTRAN and BASIC are the two least structurable lan¬ 
guages around (except for maybe APL, which has both merits and pro¬ 
blems of its own, not the least of which is its beautiful but uncommon 
character set). This will probably complicate the implementation of any 
compiler, but in my own humble opinion, the benefits of a structured 
language far outweigh the disadvantages. 

These are just a few ideas. I would appreciate any response I could 
get from the readers of this magazine, either in the letters column or by 
personal correspondance. Or, for that matter, if you happen to be 
passing through Eugene, drop by. 

Joshua P. Gordon 
Dept, of Computer Science 
University of Oregon 
Eugene, OR 97403 
Phone: (503) 686-4426 


QOOOQQOQQOOQO 


MICROCOMPUTER APL CONTEST ANNOUNCED 

news release Received: 77 Aug 8 

BYTE Publications, Inc., has announced “The Great APL 
Interpreter Contest” in the August 1977 issue of Byte maga¬ 
zine. The contest was inspired by a three part article appearing 
ing the August, September, and October issues of Byte docu¬ 
menting the functional design of an APL interpreter which can 
be implemented by personal computer experimenters. One or 
more $1000 prizes will be awarded to authors of contest en¬ 
tries, which must be postmarked no later than midnight, Feb¬ 
ruary 28, 1978. 

Contestants are free to write their interpreters for any 
microprocessor they choose. Entries will, however, be judged 
on their suitability for use on small systems with a minimum 
of 16K bytes of memory, as well as on programming elegance 
and efficient use of space. Entries must be in the form of a 
publication quality manuscript which describes the implemen¬ 
tation of the interpreter and which includes source code and 
object code. Contestants should also submit machine readable 
source and object code in the form of paper tape or cassette 
tape. Judging will be done by the editors of Byte magazine. 
Those seriously interested in entering this contest should call 
Carl Helmers, or Chris Morgan at Byte, (603) 924-7217 in 
order to be included in mailings of further information about 
the contest’s progress. 

BYTE Publications, Inc. 

70 Main Street 
Peterborough, NH 93458 

oooooooooooooo 


August 1977 Dr. Dobb's Journal of'Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 15 


311 




ON THE EFFECTS OF FILLING CAVITIES WITH¬ 
IN THE FILLINGS OF CAVITIES WITHIN . .. 


Presented to the members of the Dobbs School of Computa¬ 
tional Dentistry 


Steve Witham 
168 Painter Road 
Media, PA. 19063 


Submitted for your approval: a small softwaric tidbit 1 
found floating in a mental cove--a piece of psychic drift¬ 
wood ... 

* * * 

Consider the way many Tiny BASIC interpreters work: 
the core of the program is written in machine language (ML); 
it interprets another program which is written in “Interpre¬ 
tive Language” (IL), and then the IL program interprets your 
BASIC program. This layered approach has been compared 
to an onion. (See figure 0) Okay, you know this already. 

-User P r ogreun in BASIC 

IL interpreter in ML 

-The computer 

—- Basic interpreter m IL 
(fjg.O-Your BASIC Onion ) 

Now consider how some of the more advanced BASIC 
interpreters work--for instance, Dick Wilcox’ AM-100 / 
Sixteen/8 / CM-16 BASIC (See Jim Warren’s explanation 
on p. 7, DDJ V2#l) and, I think , HP’s BASICS. After you say 
RUN, your BASIC program is digested into a more compact, 
easier-to-run form, which is interpreted by a small run-time 
program. This compact form is not just a byte-for-word sub¬ 
stitution, as with Altair 8800 and Wang 2200 BASICs, but a 
complete restructuring of statements. Line numbers and com¬ 
ments are removed, expressions are changed into Polish no¬ 
tation, line and variable references are converted into addresses, 
etc.. So your program actually gets translated (compiled?) 
into another language. Lets call it RL, for Run-time Language. 
(Let’s not call it RTL!) 

Now it seems to me that these two ideas have a natural 
attraction to each other. I mean, at least they both would 
appeal to the same (unconventional) type of compiler-writer. 
But suppose this attraction caused them to coalesce into one 
blob. If you’re the type who likes to invent compact, special- 
purpose, intermediate language, why not write two of them 
into one compiler? Implementing both of these ideas in the 
same compiler/interpreter would create a thing like figure 1. 

User program w BAS(Cx 

BAS1C-VRL compiler 

/ (on 1 BASIC editor) in IL 




And now that they’re together, the attraction grows stronger! 
Under tremendous pressures from within (limited memory 
space) and without (our hypothetical wierd programmer), 
the interpreter undergoes tremmors and shifts - - perhaps 
the programmer considers writing the IL interpreter in RL, or 
the RL interpreter in IL, or sharing subroutines between the 
sections of the interpreter - - and then it happens: rumble- 
rumble-Fwathlumph! The interpreter collapses into a tight 
ball, with all distinction between IL and RL lost! The inter¬ 
preter would now look like figure 2. 



User program m BASIC 
Compiler/editor \r\ RL/1L 
RL/lL interpreter in A\L 
Compote r 

User program in RL./IL 
(R^.C — tt looks like a(-ig J too?') 


This thing is now the most primitive form (neutron star 2 ) 
of what I call a “comp-IL-er”. From now on, let’s call this 
dual-purpose intermediate language IL, even tho it’s a dif¬ 
ferent concept than what we were using the term for. 

But this isn’t as far as it goes. If RL (now RL/IL, or just IL) 
is more compact than the straight ASCII representation of 
BASIC, why not do all of our storing of programs in IL right 
away? This would necessitate a routine (in IL, of course) to 
translate IL-coded-BASIC back into human readable BASIC, 
for LISTing and pointing out errors, for instance. You could 
probably share a lot of the already-needed BASIC-to-IL 
tables. Now we’ve advanced to stage four (see figure 3). 


User program in IL 
IL interpreter in AL 
The compote 
Compiler m IL 
Translat io n tables 



IL'to-BASIC "uAtfanslator'' 

User folks uutth 
: °vyvyvs l, T /// Computer in BA^IC. 

Basic-to-I L translator 


CFig.3—Thefg leaeej. But Uawe Eve didn't knou) what the apple contained'.) 


Now, since our translation is done with tables, why not 
allow the user to add to the tables - - i.e., have user-defined 
commands, syntax, etc.? And since we’re translating into IL, 
why not give the user full use of all the IL subroutines - - i.e., 
provide BASIC 3 keywords for all of the IL “opcodes”? 
* * * 

You are now entering the Twilight Zone. 

* * * 

For if the user defines his own commands, are the defini¬ 
tions part of his program or part of the interpreter? And if 
every IL code translates into BASIC 3 , and vice-versa, why not 
LIST the whole interpreter as a BASIC program? And if it 
In other words, with this type of comp-IL-er, what is the dis¬ 
tinction between the interpreter and a user program in BASIC, 
as viewed by someone just walking in the door? 

“No dee-fair-awnce!” proclams our visiting software chef. 
Our whatever-it-is has lost another layer. Inside, outside, they’re 
all the same side! Shall we call it a black hole? A Klein comp- 
IL-er? A Cheshire Onion (which fades out, leaving only the 
tears)? See figure 4 and decide for yourself. 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


August 1977 


312 






CENTRAL STANDARDS LIBRARY (CSL) 


news release Received: 77 Jut 11 

To help solve some of the standards problems in the hob¬ 
byist computer and microcomputer field, ALF Products is 
sponsoring a Central Standards Library. After discussions with 
several manufacturers in this field at the First West Coast 
Computer Faire, ALF has set up the CSL as a means of stan¬ 
dards information exchange for manufacturers, consumers, 
hobbyists, and others interested in standards. The Library will 
collect submitted standards and distribute them on a non¬ 
profit basis. For more information on available standards, on 
how to submit standards, and on the Library’s services; send 
$i (to cover printing and mailing costs) to: The Central Stan¬ 
dards Library; C/O ALF Products Inc.; 128 S. Taft; Denver, 
CO 80228. You will receive a copy of the first CSL Newsletter 
and the first submitted standard (a parallel interface standard). 
Manufacturers currently participating include: ALF Products, 
IMSAI Manufacturing, PolyMorphic Systems, Proko Elec¬ 
tronics, Vector Graphic, and Video Terminal Technology. 


« 'Jserpro,grWtL) WtaWGO 

V-lnterpreier (IL) 

-V-IL interpreter(IAL) 

j ' Computer 
Subroutines(lL) 

Translation table (DEVFN stoW^eats^ 

(Fitj.H Fill m the Whatsis.) 

Actually, someone may have already done this already. 
As a parallel, think of astronomy-type black holes. Even tho 
the idea was just recently discovered, they’ve been around 
much longer than Mankind (if they exist). But I’ve never even 
heard of the idea of a Klein comp-IL-er before. 

So what is it good for, besides blowing minds? Well, I think 
I’ll let that for you to figure out 0 distinguished doctors of 
tooth and toggle-switch. (But I definitely think it would 
have useful advantages.) 

And how could this all be done? I have only an inkling of 
where to begin to begin, friends. I an but a lowly programmer 
who writes things like a four-voice polyphonic 8080 tone- 
geneRator with foUr OCTave RanGe aNd DrIVeR PROGRAM 
WHICH--AARRGH! (Sorry, my commercial half got away 
with me there. All under control now. All under control.) 
SIMPLE OUTPUT CIRCCCKaaahk -- ahem. And 1 also really 
believe it CAN be done. 

Thank you, ladies and gentlemen. I will now open the 
floor (creeak!) to questions ... yes? 



1 Look at that word in a mirror sometime. 

2 

In a neutron star, all distinction between + and - charges is lost. 

3 I'm using BASIC in the Expanded sense - - a language with the struc¬ 
ture and commands of minimal BASIC, but with added commands, 
data types, etc.. 




Dear Editor Persons: 

Do you think this is too drawn out to have the desired effect? 
(That is, wide eyes with dilated pupils, soft blue glow around the head 
(caused by a surge in the Force), disorientation, repeated pronounce¬ 
ments such as "wow" and “fa-far-faarrout".) 

On the other hand, if it were shortened to remove the fun and 
games, would it be appreciated by people who hadn't thought of the 
idea already ? 

By the way, is it original? I wrote this between 12 and 2 in the 
morning. .. 


August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 17 


313 





The APL Core Project 




APL-Core 

TEXAS A&M GROUP DEMONSTRATES THE 
FEASIBILITY OF MICROCOMPUTER FULL APL 

Dale L. Schafer 
APL Committee 

Texas A&M Microcomputer Club 
1308 E. 27th Street 

Bryan, Texas 77801 Received: 77-7-7 

Dear Mr. Warren, 

I have enclosed a copy of our APL Character Set poster which was 
displayed at the APL-Core booth at the National Computer Conference 
in Dallas. 

This article has two parts. The first is a general description of our 
APL-Core project describing the results of our bench-mark tests in com¬ 
parison to BASIC and to other APL's. The second article is to accom¬ 
pany the copy of the APL Character Set. It describes the method we 
used to implement the APL modified character set. 

Any questions or comments concerning the APL-Core project may 
be addressed to me at the above address. 

General correspondence to the dub may be addressed: 

Texas A&M Microcomputer Club 

P.O. Box M9 

Aggie land, TX 77844 

One of the advantages of participating at the NCC Booth was to 
meet you, Carl Helmers, and others leading in the microcomputer 
revolution. 

One of our disappointments was that we heard very little about 
other microcomputer projects across the nation. We heard of an inter¬ 
esting ZILOG APL in San Antonio, not yet executing code as ours, 
but perhaps further along in some portions than ours. Our emphasis, 
as contrasted to some microcomputer APL ' s, is to implement an APL 
which can be expanded to a full APL on 8-bit microcomputers. As the 
enclosed article points out, there is very little reason, except the many 
lines of code required, to have a restricted subset APL. 

Yours truly. 

Dale L. Schafer 

The APL Committee of Texas A&M Microcomputer Club 
exhibited a running, but as yet incomplete, APL system at the 
National Computer Conference. The goal of the APL-Core 
project is to implement on a microcomputer the Core or cen¬ 
tral portion of the full APL language and to make it available 
so that it may be expanded to a full microcomputer APL 
system. 

As an interim goal, to determine the feasibility of the over¬ 
all goal, the Committee implemented and demonstrated at 
the NCC a working subset of APL. Only a few APL functions 
were implemented, but among the powerful features working 
and demonstrated were: 

1) Names of any reasonable length (to 30 characters). 

2) Compact data representation as: logical data stored as 
bits, character data as bytes, two byte integers, and even 
an index data type which provides extreme data compac¬ 
tion as compared to most APL implementations. 

3) Automatic conversion between numeric data types, 
including logical to integer. 

4) Multidimensional matrices (up to 15 allowed). 

The APL-Core project members (Don Ader; Charles Bell; 
Dale L. Schafer, chairman; and Randolph Wilhoit) began the 
project with serious doubts concerning memory requirements 
and execution speed with the current generation of micro¬ 
computers, but they were determined not to take an approach 
which would compromise the APL language. The results dis¬ 
pelled any doubts by the committee about the desirability of 
microcomputer APL. 


Tests of Execution Speed 

Would you believe 1000% faster than BASIC and twice as 
fast as APL on an IBM 5100? In fact limited tests show results 
many times better, so the above may be conservative estimates 
of speed to be expected over a large cross-section of problems. 
Actual test results on a selected problem are shown in the 
table. Of course the AMDAHL is not likely to be a hobby 
computer, however connect time costs for a large computer 
must be added to the worth of execution time to calculate a 
cost/performance ratio. An additional cost for memory was 
allowed for APL in comparison to BASIC on the same 
machine. 

SELECTED PROBLEM SFEED OOMTAnlSO?: 


Typical System 

Computer Purchase Cost Lanyua^e/verslon Execution time 


KITc Altalr 

• 800 - 

BASIC / HITS 

n 

O 

O 

seconds 

8800 

'5000 





VIT 3 Altalr 

8800 

“1000- 
*3200 

AFL 

/ AFL-Core 

14 

second s 

IBM 

5100 

*10,000- 
f 20,000 

AFL 

/ IBM APLSV 

82 

seconds 

AMDAHL 

470 V /6 

* 4 , 000 , 000 - 

; 10,000,000 

APL 

/ ISM APLSV 

0.22 seconds 


Test Problem: Generate 1060 consecutive Integers, then reverse 
the slcrn of the entire array times, a total of 
_ 58000 sign reversals plus loop overhead. _ 


Memory Requirements 

The present version of APL-Core uses approximately 8K 
plus the memory allocated for user workspace. The require¬ 
ment for a very powerful APL would appear to be 12K to 16K 
bytes. Because a problem written in BASIC requires approxi¬ 
mately 5 to 10 times the bulk of an APL program, it seems 
likely that the overall memory requirement for larger problems 
may even have an advantage for APL. 

In summary, the APL Committee began the project pre¬ 
pared to pay substantial penalties in memory requirement and 
execution speed to obtain the programming power of APL and 
were astounded to find instead of an execution time penalty 
an execution time bonus. We expected to of course run slower 
than the successful desktop IBM computer, but were willing 
to tolerate the delay to obtain APL power at 1/5 the cost; 
instead APL-Core runs faster at 1/5 the cost. We anticipated 
that the near compiler efficiency of APL might make it nearly 
as fast as the simple BASIC when using large operands, instead 
APL ended up in a different class, a magnitude faster or more. 

APL-CORE NOT YET USEFUL 

The only APL functions working to date are (1) Assignment, 
(2) Reshape, (3) Ravel, (4) Logical-not, (5) Index-generator, 
(6) Size-of, (7) Monadic minus, and (8) Monadic plus. All 
variable types are implemented with the exception of floating 
point, which is of course planned. The only working imple¬ 
mentation to date is for 8080 micros. Several months of work 
are ahead before we will have a useful APL available, but our 
progress to date and the reception of our NCC exhibit have 
encouraged the committee to proceed with the work ahead. 
We no longer have any doubt that APL belongs in Micro¬ 
computers. 


Page 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


August 1977 


314 



bCbCbQtDJltMIbQOjIIbailbffllbllbffllbQQrH^lIhll^ 


APL-CORE VIDEO DISPLAY OF APL 
CHARACTERS 

An attraction of the APL-Core exhibit at the National 
Computer Conference (NCC) was a large poster showing a 
modified APL character set (using the VDM-I, an ASCII Video 
Display by Processor Technology) which had been prepared by 
Vanessa Holyoak for the APL Committee of the Texas A&M 
Microprocessor Club. 

Dale Schafer, committee chairman, stated, “We had always 
thought that the essentially hardware problem of the display 
of APL characters was not our problem, and was surely being 
solved by someone else out there, but in the meantime Charles 
Bell of our committee worked up a backspace-overstrike pro¬ 
gram for the VDM which works in essence by table lookup, 
then display of the nearest approximation when a backspace- 
overstrike combination is entered on the keyboard.” This 
display program allowed the APL Committee to use a video 
monitor for demonstrations at the NCC Personal Computing 
display booth without the purchase of any special output 
equipment for demonstrations of APL. Input to the APL 
program was made using an ASCII keyboard with labels stuck 
on the front of the keys, a conventional solution for those 
who have a keyboard without special APL character keytops. 


As an example of the method, the APL logarithm symbol 
is normally input on an APL terminal as a circular (upper 
shift 0 ), backspace, then an overstrike with the asterisk (upper 
shift P). With this same keyboard sequence, Charles’s program 
would display the lower case “o” for the circular (although 
entered with an upper shift 0 ), then when a backspace is fol¬ 
lowed by the upper case P, the VDM character which looks 
like a circle with a cross is substituted on the screen (as shown 
by the accompanying reduction of the NCC poster). The APL 
display program will also allow alternate methods which will 
result in display of the same character as, a reversed sequence 
(upper shift P, backspace, upper shift 0) or, an O followed by 
several characters, then backspaces to the same character, then 
the overstruck upper shift P. 

With the full 128 ASCII characters, plus the same charac¬ 
ters with reversed cursor, close approximations could be found 
for the majority of APL characters (for example “i” used for 
iota). Some substitutions were only fair, and some could only 
become familiar after use over a period of time, however, for 
those hobbyists who cannot afford a special terminal for each 
language on his system, but has one of the video display 
boards with 128 ASCII characters, one more obstacle to the 
use of APL has been removed. In the meantime, the APL 
committee is working on APL-Core, an APL system for 
microcomputers but without the restrictions found on some 
microcomputer APL’s. 



U.” 

O 


an 


o CJ 
(/) < 
h on 
an < 

25 o 


o 

o 


CO 


w 

V. 

OJ 

•*-> 

o 

to 

i. 

to 

O 


Q_ 

< 


i a 

L. 

10 

■O 

c 

10 

■*» 

(/) 



z 

00 

— - m c f CJ 

- • I t a -i-Jnw~< 3 l:D<(D 


z 

•- o -K © © (X) *— 1 w m q 13 

z 

</) 

O * O 0 ® 1 - 1 <H> - M «t » 

i 

w 

z 

n ii n a * i + s x c^' a) o. n«- 

k. 

01 

+* 

G 

to 

VI II Al A U >- < ^ 1 + * x €»• U) 2 4 - -»> 

to 

1. 

to 

z 

□ □ □ □ SI : l l o ^ c: * □ bu v 

O 

<A 

>1 £1 xi >-i NI: i 1 U n c 3 s > ft- - a a y 

—1 

Q_ 


[»j[=][n][ 3 [ 3 E 3 nEQEJB 0 E 3 H 0 ( 3 Ein 0 

< 

(/> 

ol Q| LlI| U_| CD| XI Ml -H *| -I| Zl Zl ol CL| Ol al wl H 3 | 

z 

Q 

z 

HD>^XyNHNnfl/)lOMDO)OB 0 

> 

CO 

M^>^x>-NHCvin^-incor , -coo)o<|CQ| 

"U 

0 ) 

cz 

z 

<CQQQlilli.CDXM”>X_JZZOQ-aac/) 

■a 

o 

Z 

tsi 

<aiOQiiiii.uiHi^Jizoa.aaM 


10 

o 

CJ 

-o 


£ 

to 


t/> 

X. 

CJ 


V) 

OJ 

o 

o 

0 ) 


a v 

2 ^ 

.8 'S 

U to 

i_ 

CJ 

s S 

1 „ 
u jz 
to 

_ > 
< M 


Page 19 


315 


August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 







••• ••••• ••••# ••••• ••••• 



650X 

opcodes 



H. T. Gordon, 

Dept, of Etomology 
University of California 
Berkeley, CA. 94720 

Dear Mr. Warren, Aug. 2, 1977 

This is a write-up on 650X opcodes. The two programs in it are 
system-independent and so not right for KIM-1 USER NOTES (that 
doesn't like subroutines anyhow). 

By the way, my earlier note on a STRINGOUT revision (that you 
published) had a few typos in the program. I've not bothered to send 
corrigenda because anyone who knows what he’s doing will see them 
right away and few novices will read DDJ. In the programs / send here¬ 
with, with more complex logic, typos might give potential users a few 
headaches. / agree that direct reproduction of teletype output would 
be better, but some of us churchmice still don't have them. 

Sincerely, 

H. T. Gordon 

Three recently-published programs (a debugger by Larry 
Fish in the Aug. ’77 Kilobaud, and relocators by Ralph 
Sherman in the April ’77 DDJ and by Jim Butterfield in the 
#4 77 Kim-1 user notes) include routines for calculating the 
number of bytes required by a 650X opcode. All use quite 
different logic, and none is richly documented or coded as an 
independent subroutine. This decoding operation is a wheel 
that has probably been reinvented many times (I did it as 
an early programming exercise long ago, as a not-very-efficient 
51-byte subroutine). The following table shows the intricacy 
of the problem. It lists the 16 opcode types from X0 to XF, 
roughly in order of usage frequency in programs (650X pro¬ 
grammers try to avoid using 3-byte codes!). Decoding exe¬ 
cution time will be shorter if common codes are the earliest 
decoded, when this is compatible with an efficient bit-sifting 
routine. Types X0 and X9 are unusual in that the number of 
bytes is determined by X (the term X Q means an even number 
and X 1 an odd number). Although the last 4 types are all il¬ 
legal, coding errors may cause them; since they make up 60% 
of all illegal opcodes and are easy to sift out, this may be 
worth doing (but only the Butterfield program does it). 

The Sherman program uses mostly (AND, CMP) logic. 
It sifts out all 1-byte opcodes in 4 steps: 00, then 20, then 
(4,6)0, then X(8,A), then all 3-byte opcodes in 3 steps: 
X 1 (CJ),E,F), then X 1 (93), then X 0 (C,D,E,F). Residuals 
are 2-byte opcodes. The Butterfield program uses a sequence 
of seven (AND,EOR) siftings in an indexed loop, addressing 
a 22-byte table of operands: first the illegals X(3,73,F), 
then 20, then the X.,0 branches, then (0,4,6)0 and (0-7)8, 
then (8-F)8 and XA, then X.,9, then X(C,D,E). Residuals are 
2-byte opcodes. Although ingenious and powerful, the pro¬ 
gram optimizes byte-economy at the cost of longer execution 
time. 


Type X 

By t e 3 / 

le” 1. ./ 

i 1 ’ e 

X0 0 , , 

6 1 

3 

0 

X0* 

2 

P 

0 

M * o > 7 

2 

3 

1 

X0 2 

3 

7 

/ 

X8 

1 

16 

0 

XA 

1 

10 

6 

XI 

2 

16 

0 

X5 

2 

16 

0 

X6 

2 

16 

0 

X9 X Q 

2 

7 

1 

X9 X ] _ 

3 

8 

0 

XU 

2 

7 

9 

X2 

2 

1 

15 

XC 

3 

8 

Q 

u 

XD 

3 

16 

0 

XE 

3 

16 

0 

X3 


0 

16 

X7 


0 

16 

XB 


0 

16 

XF 


0 

16 

’""includes 

all branch 

opcodes 



The Fish program relies mostly on the 650X BIT instruc¬ 
tion. Although suboptimally coded, it heightened my aware¬ 
ness of the power of BIT, not merely for detecting the pre¬ 
sence or absence of single bits but (equally important) the 
simultaneous absence of 2 or more bits. The original program 
required 6 bit-masks in zero-page and had one error (that was 
corrected in a much more efficient revision sent to me by the 
author). I shall not analyze his bit-sifting operations, except 
to note that the very clever idea of splitting them into 2 
branches (one for types X(0-7), the other for X(8-F)) was his. 
The following revision (further optimized and coded as a sub¬ 
routine by me) saves both program bytes and execution time. 
The subroutine expects to find an opcode in the accumulator, 
and returns the correct number of bytes in the X register. 


Page 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


August 1977 


316 










021(2 

A2 

01 

BYTNUM 

LDX 

.-$01 (sets 1 -byte exit) 

0212 

2C 

25 

02 3YTS0X 

BIT 

TRICX+I 4 . (tests bit 3) 

0215 

D0 

0F 


3NE 

HALFOP (all X(6-F)) 

0217 

2C 

22 

02 

31T 

TRICK+1 (tests bits 0-k, 7) 

021A 

D0 

is 


3NE 

23YTE (all but (0,2,1+,6)0) 

021C 

C9 

20 


CMP 

7320 (compare $20) 

021E 

F0 

10 


3s:i 

3 3YTE (3-byte if =) 

0220 

60 



ITS 

(3 resi iuals 1-byte) 

0221 

A2 

9? 

TRICK 

LDX 

#97 ('li'iden data *) 

0223 

05 

it 


ORA 

DUMMY " " 

0225 

06 



pup 

n it 

0226 

2 C 

23 

02 .LiLFOP 

BIT 

IRICK+2 (tests bits 0,2) 

0229 

F0 

07 


3EQ 

13YTE (all X( 8 ,a)) 

0223 

2C 

2k 

02 

BIT 

TRICK+3 (tests bits 2,1+) 

022E 

?0 

01 


3EQ 

2BYTE (all X Q (9,B)) 




(3-byte residuals X.^9,3) ana X(C,D,E,F)) 

0230 

E 6 


3BYTE 

I MX 


0231 

E 8 


2 BYTE 

I MX 


0232 

60 


1BYTE 

RTS 



*These are valid instructions that cannot be reached in pro¬ 
gram execution, but 4 of the 5 bytes serve as data operands for 
the BIT instructions, eliminating a data table. This trickery 
(suggested by a novel step in the Butterfield program, branching 
to a 00 operand as a BRK instruction) would hopefully pass 
inspection by simple assemblers or debuggers! 

The operation should be fast since neither of its 2 branches 
involves more than 3 bit-tests and 3 branchings; most of the 
common opcodes are decoded even faster. Of its 35 bytes, the 
5 “trick” bytes serve to make it self-contained and functional 
in any 560X system. In any actual system, however, not all 
of them may be necessary, since most of them have large ROM 
programs that are a treasurehouse of bytes, at fixed addresses 
that make them usable as BIT masks. The subroutine would 
then become system-dependent; e.g., in a KIM-1 system there 
is an 08 at 1EB3 and a 14 at 1C95, so one could save 3 bytes 
by using only 05 9F in the TRICK sequence. If one can find 
all required mask bytes in ROM, the program will need only 
30 bytes and become fully relocatable. 

The main program can set the X register (e.g., to 00 or FF) 
and bypass the BYTNUM setting by using a JSR BYTNOX. 
Operation affects only the X and status registers, e.g. the 
Z flag is set only by X(8,A) and is = bit 3 if both bits 0 and 
2 are = 0, while the V flag (unused by BYTNUM) is always 
= bit 6. The main program can add any or all of the special 
operations of the Sherman and Butterfield programs. The 
special handling of 00 would be invoked by a BEQ after 
loading the opcode. Isolation of branch opcodes would be 
done after the return by 6 bytes: AND #$1F, CMP #$10, 
BEQ BRANCH. I am less enthusiastic about the screening-out 
of 64 of the 104 illegals, and I have therefore developed an 
independent legality-testing subroutine. 

There are some special problems in legality testing. E.g., 
early versions of the 650X lacked the ROR instruction and 
had only 147 legal opcodes instead of the 152 in the current 
version. There are 2 kinds of “illegals”: many are interpreted 
as valid instructions and are executed by the 650X, while 
others seem to be blind alleys that halt further operations. 
E.g., “valid illegals” such as XF cause execution of both of 
the legals XD and XE, while “invalids” such as X2 (where 


X f A) fail to execute. (I sent a note on this to BYTE long 
ago, that was accepted but has not yet been printed.) Also, 
there is added logical complexity in decoding the 6 types 
whose legality is determined by X, as shown in the following 
table of legal X values: 

X2 only X = A 
X0 all X except 8 
X9 all X except 8 
XA all X 0 , plus 9 and B 
XC all X Q (except 0), plus B 
X4 all X Q (except 0,4,6), plus 9 and B 
My attempts to program this using the BIT, that was so 
effective in BYTNUM, were so inefficient that I changed to a 
somewhat unusual logic, relying on a sequence of LSRs (that 
right-shift the opcode, lowest bit into the carry flag) to create 
extensive branch decisions. Like most first tries, the program 
must be suboptimal, especially since I have not had the advan¬ 
tage of seeing other legality programs (although the specs 
for the ECD MicroMind imply that such testing is done in their 
loading from tape cassettes). 

The program assumes that an opcode is in the accumulator. 
It acts as a filter, causing a program break if the code is illegal. 
Although operation destroys fire byte in the accumulator, it 
is preserved intact in the X register, so that it can be restored 
by a TXA in the main program after the return. 


0240 

AA 


OPLSGL 

TAX 


0241 

4a 



LSR 

A (bit 0 carry ) 

0242 

90 

09 


3CC 

TYPE02 (all evens) 

0244 

4a 



LSR 

A (odds, bit 1 -> carry) 

0245 

30 

14 


3CS 

ILLBGa (all X(3» 7,3,F) 

0247 

8 A 



TXA 

(restore opcode) 

0248 

C9 

89 


CMP 

r$89 (conpare to 89) 

024a 

F0 

0F 


BE'4 

ILLEGA (89 is illegal) 

024c 

60 



RTS 

(all other X(1,5,9,D)) 

024 D 

4a 


TYPE02 

LSR 

a (evens, bit 1 carry) 

0245 

90 

17 


3CC 

TYPE0 (all X(0,4,8,O) 

0250 

4a 



LSR 

A (bit 2 carry) 

0251 

90 

01 


3CC 

TYPE2A (all X(2 ,a)) 

0253 

60 



RTS 

(all X( 6 ,E)) 

0254 

4a 


TYPE2A 

LSR 

A (bit 3 — ? carry) 

0255 

30 

05 


3CS 

TYP4AC (all X (A)) 

0257 

C9 

0A 


CMP 

,/$0A (tests for X = a) 

0259 

F0 

04 


3EC} 

L+lGaLA ( A2 is legal) 

0253 

00 


ILLEGA 

3RX 

(otrier X2 illegal) 

025C 

4A 


TYP4aC 

LSR 

A (bit 4 -> carry) 

025 D 

30 

01 


3CS 

XLX (all odd X) 

0252 

60 


LSCaLA 

RTS 

(residual even X) 

0260 

29 

06 

1112X 

A L/ 

"■/6 (teats X = 9,3) 

0262 

C9 

04 


n \< p 

770 4 ("iust = 04) 

0264 

D0 

15 


•3 *2 

IOP LEG (illegal X, ) 


August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 21 


317 




O0 



ITS 

(lorn Is X = 9,») 

y*3-i 

!,n 


" V PS0 

lsr 

a {bit 2 -scurry) 

02 u6 

u0 

06 



TYPEhC (all X(4,Cl) 

02bA 

L.t 



LSR 

a (bit 3 -*■ carry) 

0^6 3 

B0 

0k 


PCS 

LED IT (ull X(8)) 

02c>D 

C9 

08 


CKP 

/$08 (tests 60) 

026F 

20 

0A 


3S«i 

NOTICES (60 is itle.al) 

0271 

60 


LED XT 

RTS 

(all X0 locals) 

0272 

La 


TYPBLC 

LSR 

A (bit 3 —» carry) 

0273 

F0 

06 


32Q 

NOTLEG (0L, 0C ilic'als) 

0275 

90 

05 


3CC 

TYPEL (ot ier XL) 

0277 

C9 

09 


CMP 

*f$09 (tests 9C) 

0279 

D0 

El 


3NE 

TYPLAC (residual XC) 

0273 

00 


COT LEG 

BRK 

(9C is illegal) 

027C 

29 

0D 

TYPEL 

AND 

#$0D (tests LL» 6 L) 

027 E 

C9 

0L 


CMP 

/$0L (nust = 0L) 

0260 

D0 

DA 


3NE 

TYPLAC (residual XL) 

0262 

00 



3RX 

(4L. 5L illegals) 


When OPLEGL was tested (on a KIM-1, with a simple pro¬ 
gram that caused each BRK to display the illegal opcode for 
a few seconds) all 104 illegals were correctly identified. Nearly 
half of the 67 program bytes are required by X(4,A,C). Minor 
restructuring could save a few bytes, but I have not bothered 
because other programmers may now feel challenged to create 
a subroutine that will be both more byte- and time-efficient. 

I have noted with regret the common tendency to bury 
complex logic inside special-purpose main programs instead of 
coding it as subroutines. This seems desirable to me only when 
it is vital to attain the absolute minimum execution time. The 
saving of 4 bytes needed by a JSR and RTS is a trivial gain. 
Even when its originator cannot conceive that a logic block 
could ever be useful in any other context (and who can be 
certain of that?), subroutining may offer greater structural 
flexibility, intelligibility, and ease of debugging and modifi¬ 
cation. Especially in ROMS (unalterable, but with a wonderful 
“always-there” character) rich internal subroutining can 
greatly increase the power of a system; KIM-1 users have exer¬ 
cised great ingenuity in accessing much of the programming 
in the 2K ROM, a task made more difficult by the failure of 
its designers to anticipate this. Furthermore, a microprocessor 
may be incorporated in many diverse systems (especially true 
of the 8080 and 650X chips), so that main programs are very 
often system-dependent. To the extent that they use system- 
independent subroutines, their adaptation to systems other 
than the one for which they were developed is facilitated. 


Dear Dr. Warren, August 5, 1977 

Enclosed is a one-page, one-paragraph addition to the MS I sent 
you a few days ago. It is an afterthought prompted by reading Stork's 
simulation program, in the issue of KILOBAUD / received after sending 
you my MS. Like Adam Osborne, / find instruction sets fascinating. 
They are where the real power resides. Although a primitive set, used 


S-100 BUS COMPATIBLE MUSIC BOARD 


1 news release Received: 77 Jun 30 

\ Newtech Computer Systems’ low-cost Model 6 Music 
Board enables anyone with an S-100 bus computer to pro¬ 
duce music and sound effects. Applications include genera- 
; ting melodies, rhythms, sound effects, Morse code, touch- 
; tone synthesis, and much more. 

! The Newtech Model 6 S-100 bus compatible Music Board 
I comes fully assembled and tested. Its features include selecta¬ 
ble output port address decoding, a latched 6-bit digital-to- 
analog converter, audio amplifier, speaker, volume control 
; and RCA phono jack for convenient connection to your 
1 home audio system. It employs a glass epoxy printed circuit 
board with plated-through holes, gold-plated fingers and top 
\ quality components. 

; A complete Users Manual, supplied with the Model 6 
; Music Board, includes a BASIC language program for writing 
! musical scores and an 8080 Assembly Language routine for 
1 playing them. 

; The price of the Model 6 Music Board is $59.95 through 
1 ; computer stores. Delivery is currently from stock. 

I; For information contact your local computer store, or 
;I write to: 

;; NEWTECH COMPUTER SYSTEMS, INC. 
i! 131 Joralemon Street 
:: Brooklyn NY 11201 
; | (212)625-6220 

1 . 


by experts and provided with powerful auxiliaries, will outperform a 
superior design that lacks these enrichments, in the long run class 
will tell. 

Sincerely, 

H.T. Gordon 


Like everyone else’s, most of my main programs are system- 
dependent and involve routine operations. Whatever elegance 
there is must reside in the subroutines, codable in countless 
ways. Separately publishing these makes them available to any 
program in any 650X system, and may also focus attention on 
some elements of software design in all systems (in this in¬ 
stance, the advantages of branched- vs. linear-sequence sift/sort 
operations). Opcode decoding can be useful in non-650X 
systems; e.g., a debugging program-execution-simulator by Lee 
Stork in the Sept. ’77 KILOBAUD has an opcode-byte-count 
routine in 8080 assembly language, using a linear sequence 
of 14 bit-tests (6 ANI and 8 CPI) and 14 jump-on-conditions. 
It is likely that this decoding existed previously, hidden in the 
mass of 8080 software. The absence of relative-branch instruc¬ 
tions in the 8080 set seems strange to users of later designs 
of microprocessors (although I suppose 8080/Z80 users 
would feel handicapped by their limited range!). Still, mini¬ 
computers (and their micro copies) do without them, and the 
creation of a status register and a flock of jump-on-condition 
instructions was one of many brilliant innovations by Intel 
designers in the evolution of the 8008/8080 chip. One won¬ 
ders what heights the Z80 might have reached, had these 
same designers not felt constrained to maintain software- 
compatibility with the 8080. When one sees how willing 
users are to rewrite logic blocks, instead of hunting for them 
in older software, the compatibility argument looks very 
weak! Although BASIC interpreters are not cheap, many 
versions exist for the 8080 and even for the 650X. 


Page 22 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 August 1977 


318 



MEMORY TEST FOR D.G. Z-80 

news release Received: 77 Ju125 

A new Digital Group Z-80 memory test has been an¬ 
nounced by Steiner-Parker of Salt Lake City. The test will 
automatically find memory limits and the manufacturer claims 
that it is better than any other test currently on the market. 
Cost is $5.00 plus $1.50 for shipping and handling. Write 
Steiner-Parker, 2734 So. 2700 West, SLC, UT 84119. 


CONFERENCE ON COMPUTING 
IN THE ARTS AND HUMANITIES 

Friday evening-Sunday noon, October 21-23, 1977, Warren Weaver 
Hall, New York University. Sponsored by ACM/SIGLASH* and NYU 
Departments of Computer Science, Linguistics, Art and Art Education, 
Music and Music Education. Program will include: 


PERFORMANCES 
Friday evening: Computing in the 
Visual Arts-presentations of video 
and film works. 

Saturday evening: Concert of mu¬ 
sic composed with the aid of com¬ 
puters. 

Saturday afternoon: Computer 
Fashion show; Dance demonstra¬ 
tion with computer-controlled 
lighting. 


SESSIONS 

Challenge sessions in music, 
art and language understand¬ 
ing: Computing in the arts 
and humanities-ls it a new 
medium, a tool or a distrac¬ 
tion? 

And: 

Music tape and talk sessions 
Computer vs. human poetry 
Literary analysis 
Personal Computing 
Other demonstrations and dis¬ 
cussions. 


For registration information contact CONFERENCE CHAIRMAN: 
Dr. Naomi Sager, NYU Linguistic String Project, 251 Mercer Street, 
New York NY 10012. Tel: (212)598-2294, 5. 

‘Association for Computing Machinery/Special Interest Group on 
Language Analysis and Studies in Humanities. 


A HIGH-SPEED MEMORY TEST PROGRAM 
FOR THE 6502 

by Jim F. Butterfield 

14 Brooklyn Avenue 
Toronto Ontario 

Canada M4M 2X5 Received: July 1, 1977 

A recent algorithm by Knaizuk and Hartmann (IEEE 
Transactions on Computers, April 1977) outlines an ultra-fast 
RAM test. 

The program below is based on this algorithm, but sacrifices 
testing efficiency to a small degree so as to achieve program 
compactness and simplicity. The test will detect any single 
stuck-at-1 or stuck-at-0 fault in a RAM, including the memory 
itself, the address and data lines, and the address decoders. 
Its run time is dramatically short compared to most memory 
test programs. The speed advantage becomes more pronounced 
as the amount of memory tested increases. 

Each ‘pass’ of the test follows the following pattern: 

1. Value FF is stored in every location to be tested. 

2. Value 00 is stored in every third location, giving a 
pattern of FF FF 00 FF FF 00 ... 

3. Memory is checked for all values. 

It is important to note that the above three steps must be 
done as three separate iterations. 

The above pass is performed three times, with the position 
of the 00 value changed each time. Then the whole thing is 
repeated, exchanging the FF and 00 values. 

The program given here is written for the KIM system; the 
indirect address pointer is positioned so that KIM will display 
it upon termination. For other systems, the pointer may be 
relocated and output as convenient. Subroutines and stack 
operations have been carefully avoided to allow the test to 
include page 1 of memory if desired. Memory is tested as a 
group of ‘pages’ rather than between any two arbitrary ad¬ 
dresses; this is not essential but is usually convenient and 
helps the speed. 

Address of the first and last pages to be tested should 
be placed in locations 0000 and 0001 respectively. The pro¬ 
gram starts at address 0002; it will halt showing a memory ad¬ 
dress on the display. This will be either the address of a fault, 
or (highest location tested + 1) for no fault. 


MEMORY TEST 

June, 

1977 

Jim Butterfield, XL Brooklyn Ave., 
Toronto, Ontario Canada M)jM 2X5 





0000 xx 


BEGIN 

XX 

starting nape for memory test 

0001 xx 


END 

XX 

ending page for memory test 

0002 A9 

00 

S'" ART 

LDA 

#0 zero pointers.. 

000lt A 8 



TAY 


into low-Her 

000? 6? 

PA 


STA 

pr i' r T’L 

addresses 

0007 8? 

70 

PJ0L 7 

STA 

ttao 

*00 first ti’ne, *FF second 

0019 A2 

02 


LDX 

#2 


000B 86 

72 


STX 

MOD 

3 tests in each na.ior loon 

n-'ori a? 

00 

PASS 

LDA 


set nojnter to.. 

oocv 8? 

EB 


STA 

’’OTTTH 

..start of test area 

0011 A6 

01 


TDX 

FMT) 


0013 A5 

70 


T PA 

"LAG 


0018 1,9 

FF 


E0R 

./<3: w 

reverse ”L\G 

0017 85 

71 


STA 

FLJ 13 

■FF first tine, *00 second 

0019 91 

FA 

CLEAR 

STA 

(?0IYTL),Y write above value.. 

001B C8 



INY 


..into all locations 

0'1C DO 

F3 


BNE 

CLEAR 


0C1E E6 

FB 


INC 

°0INTH 


0020 Eh 

FB 


CPX 

•’OINTH 


0022 B0 

F5 


DCS 

CLEAR 




; FLI' 

3 in all. locations; now change 1 in 3 

002/4 A6 

72 


LDX 

MOD 



0026 A5 

00 


IDA BEGIN 

set pointer. . 

OC28 85 

FB 


STA POINTH 

..back to start 

002A a5 

70 

FILL 

LDA. FIAO 

change value 

002C CA 


TOP 

DEX 


0i'2D 10 

oli 


B”L SKIP 

skin 2 out of 3 

002E A2 

02 


LDX 72 

restore 3-cour.ter 

0031 91 

FA 


STA (POINTL).Y change 1 out of 3 

0033 08 


s:<r> 

INY 


0C3U DO 

Fb 


BNE TOP 


OC36 E6 

FB 


INC POINTH 

new nage 

0038 a 5 

01 


LDA END 


003A c5 

FB 


CtP ’’OINTH 

end of test area? 

003c BO 

-7 r* 
.O 


PCS FILL 

no. keen going 



; rnemorv set iin - 

now test it 

003 E a5 

00 


IDA BEOTN 

set no’ nter. . 

00I40 85 

FP 


STA POINTH 

..hack to start 

00I42 a 6 

72 


LDX MOD 

svnchronize 3-counter 

00I4I4 A5 

71 

pno 

LDA FIX’ 

test for Eli? value.. 

OOI46 CA 



DEX 

..? out of 3 times 

00I47 10 

0)4 


BPL SLIP 

- else - 

00)49 A 2 

02 


LDX 72 

reset 3-counter 

00I4 B a5 

70 


LDA FUG 

& test for FUG value 

00I4D D1 

FA 

SLIP 

CMP (POINTL),Y make the test 

00I4F DO 

15 


BNE OUT 

branch if failed 

oc5i c8 



INY 


0052 DO 

FO 


BNE POP 


005I4 E6 

FB 


INC POINTH 


oo56 A5 

01 


LDA END 


0058 c5 

FB 


CMP POINTH 


005A BO 

E8 


BCS POP 




; above test OK - 

change A reneat 

005c C6 

72 


DEC MOD 

change 1 in 3 position 

oo 5 f, 10 

AD 


BPL PASS 

.. A- do next third 

0060 a5 

70 


LDA FUG 

invert flag.. 

0062 U9 

FF 


ECK 78 FF 

..for part 2 

006)4 30 

A1 


BMI B3DLP 


0066 8)4 

FA 

OUT 

STY POINTL 

low order adds to display 

0068 Uc 

Lf 

1C 

JMP START 

..and exit to KIM 

006B 



end 



August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 23 


319 



MODS TO 8080 PILOT 


PI LOT-8080 FOOTNOTE 


DEAR DDJ AUGUST li, 1977 

I HAVE MADE A FEW KOI'IF!CATIONS TO DP STAR* NEA T HER i PILOT- 8980 
THESE CHANGES MRV OF HAV NOT- BE OF INTEREST To OTHER PILOT USERS mUwEYER 
POOR TVPISTS LIKE ME WILL PROBABLY FINE THEM INVALUABLE 1 THE HODS 
ENCLOSED ECHO DELETED CHARACTERS AND DIifLAV THE CURRENT STATE OF ANY INPUT 
LINE IN RESPONSE TO A C 7 L 'R THE HEW CODE FITS QUITE NICELY "ON TOP’ OF THE 
EXISTING CODE WITHOUT USING ANY OP THE BUFFER SPACE 

—MODIFICATION TO ECHO DELETED CHARACTERS ON CONSOLE Dt-iiCE 


LOCATION 

OLD CODE 

NEW code 

COMMENTS 




9CBD 

28 

d r 

f?5 T > 

-! 

HLl PATCH 


0D1D 

2E 

D" 

C .J T N* 


IAI.l PATi.h 


0010 

- 

29 

DC - : h 


ORIGINAL .ode 


0011 

- 

4E 

m>: c- 


;.ele t ed >hf 1 

10 REu L 

0012 

" 

e: 0C 

•nF i.HOi 

JMF TO OUTPUT 

Crtrtf riND KE 

N0 T ES 







1- 

- USES E -’TPh JJhO. E 

iVTES 




2 ‘ 

- DELETED 

CHARACTER’! 

: ALwAYS E' 

: hoi 

L-* TO CONSOLE 


?. 

- NO SPEC! 

AL REASON 

Fjp CHOCS-. 


RST 7 E-X-Er! 

IF 


MADE THE 

CHANGE »:•: 

IMPACT 





IFICATION TO REPEAT CURRENT LINE 

LOCATION OLD CODE NEW CODE 

)N l-ONSOLE DEV 

COMMENT5 

ICE IN RESPONSE TO '.TL. R 

0C7A 

EE TP 

7 £ 12 

‘PI CTlF c 

”l.‘P 

0T?C 

Cfl. 60- 9C 

CA 20 00 

JZ F'ATCHi 

.X . ' 

0CF7 

PE 7P 

PE 12 

CPI CTuR: •: 

L.E 

0CF9 

CA, EF OC 

a. :e uu 

j: -'HtChC 

t’ES' 

0020 

- 

IS- 01 

PATCHl MY1 

M 1 , MARi END OF BUFFER’ 

0022 

- 

ol* 01 

LXI A EBuF 

OF H, _ 

002? 

- 

CD* C J - OC 

CALL C-PlF 

NEW LINE .in CO 

0020 

- 

CD 49 OD 

ChLl DSF’lt 

• JSE EM'.-TIMj DISPLAY S 

0026 

- 

Cl - E-F OC 

JMP K1N2 

-GO BACK TO NORMAL CODE 


002E 

- 

C«7 

FhTlHJ 

H ■ r-tivE k'L 

002F 


26- 01 

.••IVI M i 

■ £?JD *3F E-Lir F cLF 

OOZl 

- 

20.22. 01 

lAlD L-SfiV 

,1V jF H.'L 

0024 

- 

CD.. C4.. 0C 

CALL CPlF 

NEHlINE ON Cu 

0027 

- 

CD 49- 0D 

ChLl DSPLt 

• USE E 1ST iNG DISPLAY 

00CA 

- 

ti 

POP H 

• RESTORE h L 

002B 

- 

16- 20 

MV I fl.jYH 

• REMOVE END OF BUFFER MARI 

00’D 

40TES 


c:. ef ec 

jmp inft: 

. LiO BAD TO NORMAL CODE 


1- USES EXTRA STACT BYTES 

2- REPEATED LINE DISPLAYED TO CO DEVICE 

> PILOT ALLOWS YOU TO DELETE MOPE CHARACTERS THAN YOU INPUT 


WHEN LOADING A PROGRAM - - WATCH OUT'- 1 
4- IF YOU DELETE BACK TO A PRIOR LINE THIS CTL/fi SCHEME 
BREAKS DOWN 

ALSO.- DP STARKWEATHER S FORESIGHT IN USING PILOT SOURCE STATEMENTS TO 
INITIALIZE THE SYSTEM HAS ALLOWED HE TO CHANGE THE START-UP DIALOGUE TO 
SELECT EITHER CONSOLE OR: CASSETTE INPUT FOR: NEW PROGRAM LOADING. THE ’TRICK' 
I USED WAS TO CHANGE THE '"EDIT" ENTRY IN THE "CTLST OP CODES TABLE 10 •’TAPE" 
THE NEXT TWO BYTES THEN WERE CHANGED TO POINT TO MV TAPE INPUT ROUTINES 
THE NEW INITIALIZATION SOURCE GOES lI'E THIS 

T 

P!L0 T -8@80 i 1 
LOAD A NEW PROGRAM’ 

A 

M Y 
jn 

T TAPE OP CONSOLE’ 

A 

M TAPE 
JY 

T ENTER PILOT PROGRAM 


Dear Jim: 1977 May 14 

I have two brief footnotes for the PILOT description in 
Dr. Dobbs. Please include them if you can. 

1. The Development of PILOT-8080 was supported by a 
contract from the Lister Hill National Center for Biomedical 
Communications, National Library of Medicine, Bethesda, 
MD. 

2. A paper tape of object code for PILOT-8080 can be 
obtained for $7.00 from Processor Technology Corp., 6200 
Hollis St., Emeryville CA 94608. (415) 652-8080. 

It may be possible to quote a lower price and 1 will let 
you know by phone it if turns out so. 

Best Regards, 

John A. Starkweather 
Director 

Computer Center 
University of California 
San Francisco CA 
94143 

(415)6664528 


LIFE LINES 

Professional Users Group 
Dr. Dobb’s Journal 
P.O. Box E 
Menlo Park CA 94025 

Dear Professionals: 77-July 5 

In the April issue of DDJ, Dr. Schenker mentions “Super¬ 
life” as an example of innovative fantasy and refers to a $100 
prize. Well, that should stir up some interest. John Horton 
Conway is the originator of the Life game, as everyone knows. 
But the game has its roots in the much broader field of cellu¬ 
lar automata, going back to Von Neumann and others. I don’t 
have a bibliography handy, but a couple of titles come to 
mind: 

CODD, E.F. Cellular Automata. 

BURKS, A.W. Essays on Cellular Automata. 

One might also keep in mind related works such as Go- 
lomb’s classic, Polyominoes, and the many articles such as 
Read’s “Contributions to the Cell Growth Problem,” Canadian 
Journal of Mathematics , vol. 14, no. 1, pl-20 (1962). 

Sincerely, 

Jim Day 

17042 Gunther Street 
Granada Hills CA 91344 


TERMINATE INPUT WI T H d. Z 

LOAD 
*?. IER 

tjffi T STAR 7 CASSET~E ’ P USF ENTER 

A 

TAPE 

j 


SINCERELY 

STEVEN SPENCE 1-005 N SCO!: 

EDMOND- 01 .'COM 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


August 1977 


320 








Z—80 PATCHES FOR MITS BASIC 


INTEGRAL IMPACT PRINTER FOR $745 


Dr. Dobb's Journal of c.c.&o. Dec. 30, 1976 

SUBJECT: Z-80 MITS BASIC PATCHES 12k extended - acr 
It is amazing how quickly you can become tired of swapping CPU 
boards whenever there is a basic program to run. The following 
patches are the result of several days work studying disassembly list¬ 
ings (what the world needs is a good annotated disassembler). The 
problem with MITS Basic is the conditional parity operations; JPO 
JPE CPO CPE RPO RPE. 

The 12k basic seems to be a mix of the conditional jumps and re¬ 
turns. Fortunately, the RPE and RPO instructions follow a RST 6, 
allowing a simple patch of the RST 6 and avoiding the use of the only 
remaining one byte call (RST 7). The three byte jmps are then patched 
one at a time with a common macro. This works well on my 12k 
basic, but i understand that there are several versions around and it 
would not be a bad idea to check the patch locations to see that they 
agree with your basic. 

These patches were written and assembled on the TDL Relocating 
Assembler and the object can be loaded anywhere there is 0055H 
unused bytes. The assembler puts all address fields MSB first, so 
remember when you key in the patches, to swap the order of these 
fields. 

Martin D. Gray 245 W. Grandview Ave. 

Sierra Madre, CA 91024 


’DL ZSO PELOChTIM'S ft'. lEMSLEP VEPUDM 1.0 Pft'SE 1 

"UTS EXTMt! DftJIC 'ftf.P' Z-30 CPU MODI 


.TITLE MITS 12K EXTMD BFlSIC rflCR) Z-80 CPU HDDS' 
iMftCPO DEFINITIONS 

. DEFINE F’FtTCH t ft DPS • BRANCH. OP* I NS EPT t ‘.EXPND , V.Sk IP] = C 




. LOC 

8 DPS 

55 PATCH JPO.JPE HEPE 



.IMP 

'.EXPND 

?5 JUMP TO EXPANSION 



.PELDC 


JSBHO TO NEXT SECJ LOC 



\e::php: push 

PSW 

:;S8VE STATUS 



IMSEPT 


SSSTIO OF IMS EPT HEPE 



8H8 

8 

JJGET ACCUN fAPITY 



□P 

’.SI IF 

1S T E S T P8PITY AND BFANCH 



POP 

PSW 




JMP 

8DPS+3 

Slf.OND MOT MET 



*.2T IP: FOP 

PSW 




JMP 

IPhHCH 

:SCOND IS MET! 



S FI.: PIT 6 HEPE 



00 35 


.IOC 

25H 


00 35 

C3 0000 

JMP 

PST6 


0 0 0 0 


.PELOC 



o 0 0 0 

3D 

PST6: DCF' 

8 

SDECP AC CUM T HP ICE 

0 0 01 

3D 

DCF 

8 


0002 

3D 

DC F 

8 


0 0 0 3 

F5 

PUSH 

PSW 

5 pT 1.1 TO S THi; 1 FOP 

0004 

E3 

:thl 


* EXAMINATION IN PEG L 

0 0 05 

87 

8M8 

8 

:GET FAPITY 

0006 

E8 000E 

JPE 

. .UP1 


0009 

1 

PES 

2* L 

JPESET PARITY FLAG 

00 Of 

E3 

:thl 


* GOOD PSW BACK TO ST AO 

0 0 oc 

C 1 

PDF 

PSW 

:AMD PSW IS FIXED 

OOOD 

C9 

PET 


J SO C'UIT 

0 0 o E 

C ED5 

..UP 1: SET 

8*'_ 

•SET PARITY FLAG 

0 o 1 0 

E 3 

.' T HL 


JPSW FIXED HEPE ALSO 

001 1 

f 1 

POP 

P s w 

;IM COMES THE GOOD PS« 

0012 

C9 

FET 


: HMD 180 GOES THE FPDGF 



• C OMl'l TI0M8L JMPS • JPO 

AMD JPE* AMD THE IP A'SOC 



SPARITY 8FFECTI 

«8 PFEI'E 

.ES SOPS APE PI ED HEPE. 



*.HEPE COME THE 

Z-80 MBCPO PHTC HE'S 



.fhiii 

16 




PHTC H 

0CE8* 0CPD* JPO C 

0C E 8 

i. z. i.i 013 

♦ JMP 

. . 0001 


0 01 3 

F5 

♦ . . 0 0 O l : *1.1 * H 

PSW 


0014 

87 

♦ 8H8 

8 


0015 

E2 001C 

♦ JPO 

. . 0002 


0013 

FI 

+ POP 

p; i.i 


0 01 9 

C 3 0CED 

♦ JMP 

0CE8+3 


0 01 r 

FI 

♦..0002: POP 

P S 1.1 


0 i.i 1D 

C 3 0C F D 

♦ JMF 

OS F D ] 




PATCH 

1 oBC • 1 0C 0. JPQ [ 

1 GBC 

C 3 0020 

♦ JMP 

. . 0003 


0080 

F5 

♦..0003: PUSH 

P S I«I 


0021 

87 

♦ HUH 

H 


0 028 

E2 0029 

♦ .IPO 

..0004 


0025 

FI 

♦ *0P 

PSW 


0086 

C3 1 OFF 

+ JMP 

1 OBC + 3 


0 089 

FI 

♦..0004: FOP 

PSW 


0088 

C 3 10C0 

♦ JMF 

l 0C 0 1 




PATCH 

J 'c "'-'8. c 

F4.JPE.SUI 5 C 

8 2 38 

C 3 00SD 

♦ JMP 

.. 0005 


0 02 D 

F5 

♦ ..00 "5: F'll’H 

PSW 


0O2E 

D-.05 

♦ SUI 

5 


0 i.i 3 0 

87 

+ 8M8 

H 


0 0 51 

E 8 00 38 

♦ JPE 

. . 0006 


0034 

FI 

♦ POP 

p : u 


0 0 35 

C 3 889D 

♦ JMP 

8298+3 


0038 

FI 

+ ..0006: PDF' 

p : w 


00 39 

C3 22F4 

♦ JMP 

88F4 ] 




P8TCH 

1 18C • 11 

78* JPOt 

1 1 SC 

C 3 003C 

♦ JMP 

. . 0007 


0 0 3C 

F5 

♦..0007: PUSH 

PSW 


0 0 3 D 

87 

+ 8M8 

8 



news release Received: 77 Aug 31 

Integral Data Systems, Inc., Watertown, Mass., is now of¬ 
fering a new, full-performance, full-feature, dot matrix impact 
printer designed for use with mini or micro-computer systems. 
Printing at rates to 120 cps with up to 132 characters per line, 
the Integral Impact’s standard features include an RS-232 and 
current loop serial interface, enhanced mode (double width) 
characters and selectable character and line sizes. Multiple 
copy capability on both fan-fold and roll paper is also a stan¬ 
dard capability. 

Housed in an attractive table top console with functional 
operator controls easily accessible on the front panel, the 
Integral Impact is a complete printer system ready to plug in 
and operate. Using the RS-232 serial interface, the printer can 
be integrated into any mini or micro-computer system by 
simply attaching it to a standard serial port. Serial baud rates 
of 110 to 1200 bits per second are selectable, and for those 
who prefer a parallel interface, that capability is also provided. 
Switch settings select character sizes and line length from 80 
to 132 characters per line. 

A 5 x 7 dot matrix is used to print the standard 64 char¬ 
acter ASCII set. The print mechanism itself is very simple with 
few moving parts for added reliability, and incorporates a 
mechanism that automatically re-inks the ribbon to give an 
expected ribbon life of up to 10,000,000 characters. Line 
buffering by the microprocessor-based controller allows in¬ 
stantaneous print rates of more than 120 cps with sustained 
throughput of more than 75 cps possible. 

Unit price for the Integral Impact is $745 with quantity 
discounts available. Delivery is 30-60 days ARO. For further 
information, contact: Integral Data Systems, Inc., 5 Bridge 
Street, Watertown, MA. 02172, (617) 926-1011. 



00 3E E2 0045 ♦ J*Q . . 000? 

0041 FI ♦ PDF’ F: i.i 

0042 C3 118F ♦ .IMP 118C+3 

0045' FI ♦..0008: POP PSW 

0046 C3 1178 ♦ -IMF 1173 ] 

P8TC H 18:8•8 05*JPEI 

1882 C3 0049' ► JMP ..0009 

0049' F5 +..0009: PUSH PSW 

0048' 87 ♦ 8M8 8 

004£c E8 0052' ♦ JF'E ..0010 

004E FI ♦ PDF' PSW 

004F C3 1885 + JMP 1832+3 

0052' FI +..0010: POP PSW 

0053' C3 0905 ♦ JMP 905 1 

.PhD IX 10 
.END 


August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 


321 






REAL-TIME MODIFICATION FOR SANGER’S 
VIDEO CHASE 

David J. Morgan 

Assistant Professor of Geography 
Tire University of Texas at Dallas 
P.O. Box 688 

Richardson, Texas 75080 August 4, 1977 

Joseph Sanger gave us an exciting VDM Video Chase game 
in the May, 1977 DDJ. He mentioned planning a modification 
so that the robots would move toward you in real-time. That 
stimulated me to write the enclosed routine. 

After mastering the “static” version of Video Chase I made 
the attached modifications for a “dynamic” system which 
automatically moves the robots at you if you don’t move in 
the required time. My modification varies the required re¬ 
sponse time from about six seconds for a difficulty factor of 
zero (the original program runs at different difficulty levels) 
down to about three seconds for a difficulty factor of nine. 
You have to be pretty good at running the system to win at 
level nine. 

The modification was quite simple. In Sanger’s source 
listing there is only one place which calls the routine to input 
a move from the user. This occurs at location 015BH (line 1680) 
which has the symbolic label YMOV1. I changed the source 
as follows (changes shown in assembled code as well): 


Change from: 


015B CDA9 01 

1680 YMOV1 

CALL 

INP 

•GET 

USER 

MOVE 

Change to: 







015B CD F3 05 

1680 YMOV1 

CALL 

INPX 

•GET 

FOR 

USER 

MOVE 


•dynamic 

SYSTEM 


This sends the program to a subroutine loaded immediately 
beyond the end of Sanger’s program. 

My routine puts a timing loop around the checking of the 
input device’s status. If a normal move is input before the 
timing loop expires (i.e. the input status flag shows input 
ready) the routine accepts the normal input and returns to the 
main program. If, however, the user is too slow in responding 
and the timing loop expires, then the player forfeits his move 
and the robots advance. This forfeiture is accomplished by 
returning to the main program as though an ‘H’ move (stay 
in place) were input by the user. 

There appears to be a bug somewhere in the original version 
that I haven’t been able to find. After about three games (sets 
of nine series of kills) the program blows up. If anyone else has 
solved the problem I would like to see a patch. I haven’t been 
able to find any problems in my entry of the source code but 
I did relocate the origin above my operating system. It did 
appear to be relocatable (since the VDM is in the standard 
location and uses the standard I/O port). 

Also, why did you reprint Raskin’s report on the DZ80-80 
CPU? I though I read that a while back. 

I am busily typing in PILOT on my IMSAI. I have the 
iCOM disk system and am quite pleased with it. The power 
supply they sell (the ADTECH) is expensive and runs hot but 
the software is reliable and has served me pretty well. 



ONE-FOR-ONE PATCH TO P.T. 5K BASIC 

Received; 77-Aug 10 

Dear Jim, 

Dr. Dobb’s (and others) have proposed numerous patches 
(and patch repairs) for the integer routine of the Processor 
Technology 5-K Basic. Some of them have worked. In Tuc¬ 
son there is Howard H. Heid, a very brilliant young fellow, 
who deserves a big applause and congratulations for a true 
fix - not a patch, but a FIX - for this problem. Howard has 
been literally ‘possessed’ by this problem (in my machine) 
and the patches presented by Dr. Dobb’s, but ‘gotta-do-it- 
better’ Howard was not satisfied until the repair was made 
(get this) in THE ORIGINAL NUMBER OF BYTES. 

The solution is so simple we couldn’t see the trees (or 
something of that sort): return the routine to its original 
form, then change TWO BYTES -- 

OBB2 change C9 to 3D (DCR A) 

OBB5 change DO to FC (RP ) 

The routine now treats any fractional value (less than 1) 

in exactly the same way it handles the fractional portion of 

any other value (greater than 1). The top part of the routine 
is given below, with the proper changes. 

You have a beautiful paper.. . .thanks. 

Morris G. Miller 

Box 11496 

Tucson AZ 85734 

Fix for Integer Routine for Processor Technology 5-K BASIC 


0BBA 

0A 

Aint 

LDAXB 

0BAJB 

D6 81 


SUI 129 

0BAD 

F2 B3 0B 


JP A INTI 

0BB0 

AF 


XRA A 

0BB1 

02 


STAX B 

0BB2 

3D 


DCR A 

0BB3 

DC 05 

Aintl 

SUI FPNIB-1 

0BB5 

F0 


RP 

0BB6 

57 


MOV D,A 

0BB7 

0B 


DCXB 

0BB8 

0B 

Aint2 

DCXB 




ETC. 


Morris G. Miller 
Box 11496 
Tucson AZ 85734 


ISAACSON TO BE PC EDITOR FOR 

DATAMATION! 

We hear the rumor that Dr. Portia Isaacson, the recent chief 
wheel for the Dallas National Computer Conference — and 
prime mover behind NCC’77’s having a major program and ex¬ 
hibit activity concerning home and hobby computing — will 
become the Contributing Editor for Personal Computing for 
Datamation. It looks like the #1 data processing mag has final¬ 
ly discovered that there’s lots happening in our little corner of 
the computing world (or, they have discovered that many ad¬ 
vertising bucks are forthcoming from our corner). 

Go get ’em, Portia. 


Page 26 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 August 1977 


322 


VIDEO CHASE CONVERSION FOR A POLY VTI 

Paul Holliday 
4807 Arlene Street 
San Diego, CA. 92117 
(714) 225-6209 

Received: 77-Aug-18 

This is a copy of the patches needed to convert the game of VIDEO 
CHASE for 8080/VDM (which appeared in the May 1977 issue of Dr 
Dobb's) for use with the Polymorphics Video Terminal Interface (VTI) 
board. 

I would like to make note, especially for the novice, that entering 
the original machine code and then the patches may turn out to be 
quite a tedious chore! This of course is the opinion of a novice (myself) 
and is based upon my very first experience with entering raw code on 
my Vector 1 computer just newly "Up and Running". 

Frankly, I was not prepared for the amount of time that it took me 
to enter the code and then modify it to fit my system. For example, 
it took me about three hours to enter the original code and an addi¬ 
tional six hours to patch and de-bug. This was done with the aid of the 
Vector 1 monitor program and using a keyboard/hex entry. I would 
hate to have to enter the code via front panel bit switches! 

In any case, a distinct advantage was gained by using the hex dump 
which was so neatly provided at the end of the source code. The hex 
dump really speeds up entry of raw data and should be provided as part 
of any of the programs that you publish. The one disadvantage that I 
found with the hex dump entry was that I had a heck of a time staying 
awake! It gets pretty boring punching in numbers after thirty or forty 
minutes. My suggestion is to enter it in stages, perhaps even spreading 
it out over a few days. 

A few other tips may prove handy. Enter (or code) the program 
exactly as it appears in the dump (or listing) the first time through, and 
then immediately write (or save) the original on tape. Do this even be¬ 
fore you "try it out" for the first time. If you do this, you will always 
have an original, unmodified "Baseline" version (even if it has a few 
keypunch errors). This provides a convenient way to go back to "go" 
if (or should I say when?) something happens during modifications or 


when entering the patches. What I usually do is keep the Baseline on 
one side of the tape and the patched or modified versions on the other. 
It is generally best to keep about three iterations back if you plan on 
making changes in small, incremental steps. 

Some notes about the patch tables enclosed. All of the patches are 
oriented towards my Vector 1 system with the Poly VTI board. If you 
have such a system or combination, all of the patches in Table 1 must 
be done. I have described my hardware configuration in Table 5. The 
patches in all the Tables are in sequential (core) order for ease of entry. 

Table 1 also makes repeated reference to 'Note V which describes 
the need for bit 7 in VTI ASCII codes. However, some assemblers may 
not accept the source code value 'X'+80H as a valid input. If this is the 
case with your assembler, the exact hex value could be used instead. 
For example, 'X'+80H evaluates as D8H, which is the 8 bit ASCII 
value for the character 'X'. Actually, if you have an assembler, a better 
way would be to leave the 7 bit ASCII value as is and call a subroutine 
to insert bit 8 for the VTI. (You can use ORI 80H). 

Tables 2, 3, and 4 are merely excerpts from Table 1, and are pre- 
vided for convenience in changing or experimenting with various hard¬ 
ware/software configurations. 

In particular. Table 2 lists only those patches required for video 
terminal and keyboard input/output. This table can be used to change 
only the I/O routines and is useful for those systems where "every¬ 
thing else fits but the I/O." 

Table 3 shows the patch areas for the robots symbol only. I didn't 
make any changes for my configuration since the graphic symbol pro¬ 
duced with 07H was acceptable. In fact, I preferred the white 'blob' 
to the somewhat nondescript symbol used in the original version. You 
can use this Table to experiment with different symbols and produce 
'robots' to your liking. 

As a final note, I would like to mention that I agree with and 
heartily approve of DDJ’s general philosophy. That is, ample distribu¬ 
tion of software written by non-professionals for personal use. We all 
gain by communication and distribution of ideas and tools. All we have 
to do now is convince the hardware manufacturers to standardize and 
help stop the proliferation of diverse systems. I have not as yet run 
across two systems (hobbyist) that were exactly alike! 

Keep up the good work and keep Jef Raskin turned on. 


o o o o o o 



323 



TABif I. (Co^timoed} TMiLt 1 (^“NTCNuep^) 


[lj 

u 

<1 

D 

O 

in 

3 

Ll) 

Z 

k3v3~ |q*i|lo 

y, guyufloSu-Hi^ 

yJjio+K) ^KwolnJlJ °-v£ia* L* 9 

if'sPia'#x'afx S J k C 5 .5 3 ^ 

SS^3SS3S3SS 

ill 3| ViIjIk.^iIiI! 

</» 

<r 

3 

lu 

V 

al 

0 

% 

=t 

^ ^ tt 5 v u_ 

i'd: ^ aT(8 r£' t £ N aTz' O' 

333S43S3SS53S- 

ill U 

2 

Z 

asSggsssssscxs 

< 

? 

u. a a U. 

O o o <J 0 

SS&ftbSSgitS: 

LOC 
(Hl <) 

cJ '■iJ 00 LL C\| Go O <D 10 tf" 1 5J *31 4" 

-i v9 I'CT'a-cT -± [fi e0 o cj O £* Q 

<&■ <j- & <r 4-*i-*i-'t-r(-vr-4- i $-T i . 

ocoooooooooooo 


O 

O 

O 

O 

O 




324 













TABLE 2. (Coso-rtvuep) TMiLF 4. PATch«s frr VOO Su^.koL ®nLY 



O 

o 

o 

o 

o 

o 

o 

o 

o 

o 




o 

o 

o 

o 

o 

o 

o 

o 



August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


325 















Sample register examine / change and Full instruction trace 


AN 8080 TRACER 

Dear Jim: 

My ambition since getting involved in personal computing 
two years ago has been to produce a software system that pro¬ 
vides the user of a small system with the kind of power avail¬ 
able on a large-scale timesharing system. What with the de¬ 
mands on time imposed by the necessity of making a living, 
progress has been slow, but at last I seem to be getting some¬ 
where. I have basically settled on a design synthesized from 
MULTICS (the universal segment notion), UNIX (separation 
of system nucleus and privileged utilities, plus driver philoso¬ 
phy and the “pipe" concept), and the internal protocol from a 
radially-multiplexed data network I have developed at work. 

The main reason for this letter, however, is unrelated to all 
this neat stuff. Along the road to this system, I have developed 
an 8080 debug monitor (we must crawl before we run) which 
includes a complete interpretive trace with software break¬ 
points, trace within range for debugging subroutines and the 
ability to examine or change any machine register or memory 
location. The memory dump command permits memory to 
be examined in Hex, ASCII, or 8080 instruction format. The 
output of the trace is very easy to read (sample attached). I 
haven’t researched very thoroughly, but I don’t know of an 
8080 trace in the public domain, so if this is the first, or it 
seems of interest, I would be willing to prepare it for publi¬ 
cation in your journal.[Do! Do! -Ed.] At present, the trace is 
integrated in my 4K monitor, which includes lots of other 
commands not of general interest. Since the monitor listing 
runs to some 61 pages, it’s hardly practical to publish it all 
and let people extract the trace. If you want to publish the 
trace, I’ll do the work to extract it and make a nice trace-only 
package, but I would first like to know if you’re interested, 
since I have no need myself for such a package and otherwise 
won’t spend the week or so of spare time to dig it loose and 
clean it up for publication. [Yes - We are interested . . . even 
if it has taken 3 months to reply to your kind offer. - J.W.] 

Other than that, I now have a home-brew PL/M compiler 
running on a handy local timesharing system, and I’m pre¬ 
sently extending it to support general data structures. I in¬ 
tend to write the operating system entirely in the extended 
PL/M to make it as machine-independent as possible. 

Sincerely, 

John Walker 
Marinchip Systems 
16 St. Jude Road 
Mill Valley CA 94941 

P.S. My guess as to the size of the extracted trace routine is 
something less than 2K. 



Sample durnn 

in instruction format 

X 




„i 1000 ,a 



1 000 

LX I 

SP,2000 


1003 

MV I 

A,08 


1005 

INR 

A 


1006 

CALL 

1100 


1009 

JMP 

1005 


„i 1100 :110f 


1100 

PUSH 

PSW 


1101 

DAA 



1102 

PUSH 

PSW 


1103 

AN I 

0F 


1105 

MOV 

C / A 


1106 

POP 

PSW 


1107 

AN I 

F0 


1109 

RAR 



110A 

RAR 



110B 

RAR 


John Walker 

110C 

RAR 


Marinchip Systems 

110D 

MOV 

B, A 

16 St. Jude Road 

11 0E 

POP 

PSW 

Mill Valley, CA 94941 

110F 

RET 


4/28/77 


• tg 


> 

II 

B = 01 C 

>02 D= 

F7 E=9F H= 3F L=B5 F= 

12 P=1102 

SP=1FFC 

. rg b 

i=fc ,c = 

=de. 




A=13 

B=FC C=DE D= 

F7 E=9F H=3F L=B5 F= 

12 P=1102 

SP=1FFC 

. ton 






.g 1000 





1000 

LX I 

SP,2000 SP=2000 



1003 

MVI 

A, 08 

A=08 



1005 

INR 

A 

A=09 F=06 



1006 

CALL 

1100 

SP=1FFE [1FFF)=10 

[1FFE)=09 


1100 

PUSH 

PSW 

SP=1FFC [1FFD]=09 

[1FFC]= 06 


1101 

DAA 





1102 

PUSH 

PSW 

SP=1FFA |1FFB]=09 

(1FFA]=06 


1103 

AN I 

0F 

F=16 



1105 

MOV 

C, A 

C=09 



1106 

POP 

PSW 

F=06 SP=1FFC [1FFB 

]=09 [1FFA]=06 

1107 

AN I 

F0 

A=00 F=56 



1109 

RAR 





110A 

RAR 





110B 

RAR 





110C 

RAR 





110D 

MOV 

B, A 

B=00 



1 1 0 E 

POP 

PSW 

A=09 F=06 SP=1FFE 

(1FFD]=09 

[1FFC]=06 

110F 

RET 


SP-2000 [1FFF]-10 

[1FFE]= 09 


1009 

JMP 

1005 




1005 

INR 

A 

A=0A 



1006 

CALL 

1100 

SP=1FFE [1FFF J-10 

[1FFE]=09 


1100 

PUSH 

PSW 

SP=1FFC [1FFD1=0A 

[1FFC]=06 


1101 

DAA 


A*10 F=12 



1102 

PUSH 

PSW 

SP=1FFA (1FFB]=10 

[1FFA]=12 


1103 

AN I 

0F 

A=0 0 F-56 



1105 

MOV 

C / A 

C=00 



1106 

POP 

PSW 

A=10 F=12 SP-1FFC 

[1FFB]=10 

[1FFA]=12 

1107 

AN I 

F0 

F=02 



1109 

RAR 


A=08 



110A 

RAR 


A=04 



110B 

RAR 


A=02 



110C 

RAR 


A=01 



110D 

MOV 

B, A 

B=01 



110E 

POP 

PSW 

A=0 A F=06 SP=1FFE 

[1FFD]=0A 

[ 1FFC]=06 

110F 

RET 


SP=2000 [1FFF]-10 

[1FFE]=09 


1009 

JMP 

1005 




1005 

INR 

A 

A=0B F=02 



1006 

CALL 

1100 

SP=1FFE [1FFF]=10 

[1FFE]-09 


1100 

PUSH 

PSW 

SP=1FFC [1FFD]=0B 

[1FFC]=02 


1101 

DAA 


A=ll F=16 



1102 

PUSH 

PSW 

SP=1FFA [1FFB]=11 

[1FFA]=16 


1103 

AN I 

0F 

A=01 F=12 



1105 

MOV 

C / A 

C=01 



1106 

POP 

PSW 

A-11 F=16 SP-1FFC 

[1FFB]=11 

(1FFA]=16 

1107 

AN I 

F0 

A=10 F=0 2 



1109 

RAR 


A-08 



110 A 

RAR 


A=04 



110B 

RAR 


A=02 



110C 

RAR 


A=01 



110D 

MOV 

B, A 




110E 

POP 

PSW 

A=0B SP=1FFE ]1FFD]=0B [1FFC]=02 

11 0 F 

RET 


SP=2000 [1FFF]=10 

[1FFE]=09 


1009 

JMP 

1005 




1005 

INR 

A 

A=0C F=06 




1802 HACKERS! UNITE 

Dear Dr., August 9, 1977 

This letter is directed to all of the readership who have 
built and now program with the RCA CDP-1802CD uP. 
“Where is all of the software/hardware correspondence?’ 
Dr. Dobb, please print this letter so that we in the min¬ 
ority don’t self-extinct. The RCA CDP-1802CD is an ex¬ 
cellent uP. 

To the readers: 

Send all initial correspondence to: 

National Clearinghouse CDP-1802CD 
920 Terrace Drive 
Glenwood, Illinois 60425 

Yours very truly, 

Phil Gennarelli 


Page 30 

326 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


August 1977 



FRIEND FINDS FACTORIAL FLAW 

Jef Raskin 

It is always a pleasure to get a helpful letter from a careful 
reader. Mr. William T. Mitchell, 5805 Farnham Court, Hanover 
Park IL 60103 wrote that the example of a recursive factorial 
function in my article on MIT’s BASIC, Polymorphic System’s 
BASIC and NIBL in the April issue of DDJ was a good swiss 
cheese emulator. That is, it was full of holes. It didn’t flag 
negative arguments and did not give 0! =1 as it should. He 
suggested: 

100 DEF FNF(X) 

110 IF X<0 THEN STOP 
120 IF X<2 THEN RETURN 1 
130 RETURN X*FNF(X-1) 

140 FNEND 

Mr. Mitchell assumed in his letter that X was an integer, and 
noted that a trap should be added for non-integer X if that 
assumption did not obtain. 

By way of apology I present a bit more carefully written 
routines. Publishing even two lines of code is like putting up a 
target. May the sharpshooting readers of DDJ find any errors 
in these routines. 

Lines 100-140 are a recursive routine for X!. Lines 200 - 
280 are an iteractive routine for the same thing. They are 
included only to test the correctness of the output from the 
recursive routine. Lines 10-60 is the testing program, which 
feeds negative, positive and non-integer values to the func¬ 
tions. The output is also presented. Among other things it 
shows the impressive 8 digit precision of Polymorphic Sys¬ 
tem’s BASIC. 

I don’t believe in the practice of having error conditions 
stop a subprogram. Subprograms should send flags back to 
the main program. The main program can then send a message 
or stop, or find some way around the problem. 

Lastly, if a subprogram is recursive, it is best to check for 
correctness of the arguments outside the routine. For example, 
in computing X! the integer function in my program is in¬ 
voked X-l times. If the main program filtered out non-integers 
it would only have to be done once. Another alternative 
would be to have a routine that does the filtering and then 
calls FNF. 

Thanx to Doug Wyatt for his ever helpful suggestions. 

10 X=-5\ REM TEST A NEGATIVE ARGUMENT 
15 GOSUB 70 

20 X=5.6\ REM TEST A NON-INTEGER ARGUMENT 
25 GOSUB 70 

30 FOR X= 0 TO 13\ REM TEST INTEGER ARGUMENTS 
35 GOSUB 70 
40 NEXT X 
45 STOP 

65 REM THIS SUBROUTINE PRINTS A NUMBER AND ITS FACTORIAL 

66 REM COMPUTED TWO WAYS. 

70 PRINT X,FNF(X),FNG(X) 

75 RETURN 

> 

90 REM FNF(X) RETURNS THE FACTORIAL OF A POSITIVE INTEGER X 

91 REM IF X IS NEGATIVE, FNF RETURNS -1 TO INDICATE THE ERROR. 

92 REM AS IS CUSTOMARY 01=1. IF X IS NOT AN INTEGER THAN THE 

93 REM INTEGER PART OF X IS USED AS THE ARGUMENT TO FNF. 

94 REM THE PROGRAM OPERATES RECURSIVELY. IF X IS ZERO OR ONE 

95 REM THEN THE VALUE 1 IS RETURNED. OTHERWISE X! IS 

96 REM CALCULATED ACCORDING TO THE FORMULA X!=X*(X-1) ! 

97 REM NO VARIABLES ARE CHANGED BY THIS PROGRAM 
100 DEF FNF(X) 

110 IF X<0 THEN RETURN -1\REM FLAG NEGATIVE VALUES OF X 
120 IF X< 2 THEN RETURN 1 \REM BOTH 0!=1 AND 11=1 
130 RETURN INT(X)*FNF(X-1) 

140 FNEND 

190 REM FNG(X) COMPUTES X FACTORIAL ITERATIVELY USING THE 

191 REM FORMULA X!=2*3*4 *. ..*X. IF X IS NOT AN INTEGER 

192 REM THE INTEGER PART OF X IS USED. IF X IS NEGATIVE 

193 REM THE ERROR IS FLAGGED BY RETURNING -1. AS USUAL 

194 REM 01=1. VARIABLES I AND T ARE CHANGED BY THIS FUNCTION. 


6800 TELEPHONE I/O SOFTWARE 


Received: 77-Aug-16 

Dear Sir, 

Software Exchange is a newly formed company entering 
the field of home computing. We are developing a line of low 
cost software for the computer hobbyist. Our emphasis is on 
the practical application for the home computer. 

We are now offering two telephone application programs 
for the 6800 microcomputer. Each program includes complete 
documentation, with schematic diagrams and instructions. 

Program 1: 6800 automatic telephone dialer-$9.95 post¬ 
paid. Includes object code and punched paper 
tape in Mikbug* format, and instructions for 
adapting to other 6800 systems. 

Program 2: 6800 telephone answering device - $4.95 post¬ 
paid. Includes assembly listing and object 
code. Compatible with any 6800 system. 

*Mikbug* is a registered trademark of Motorola Inc. 

Sincerely, 

Howard Berenson, Owner 

Software Exchange 

2681 Peterboro 

W. Bloomfield MI 48033 


$100-$ 150 FOR 8080/Z-80 

WORD PROCESSING SOFTWARE PACK 


News Release Received: 77 Aug 8 

We are happy to announce the completion of our newest software 
package, THE ELECTRIC PENCIL by Michael Shrayer. It is a charac¬ 
ter-oriented word processing system and is available in four versions. 
It is currently available from the author or at many computer stores. 
Mail orders should be addressed to: Michael Shrayer, 3901 Los Feliz 
Blvd., No. 210, Los Angeles CA 90027. Standard versions are $100.00 
and Diablo versions are $150.00 (Calif, add 6% tax). 

For those in the Los Angeles area, we would be delighted to demon¬ 
strate The Electric Pencil. We can be reached any day or evening at 
(213) 665-7756. 

Late Flash! The pencil is now available for the Sol-20/Solos/Cuter 
for standard printer. Retail: $100. 


200 DEF FNG(X) 

210 IF X<0 THEN RETURN -1\REM FLAG NEGATIVE VALUES OF X 

220 IF X< 2 THEN RETURN 1\REM BOTH 01 = 1 AND 11 = 1 

230 T=1\REM T WILL BE USED TO STORE THE PARTIAL VALUES OF X! 

240 FOR 1=2 TO X\REM ONLY THE INTEGER PART OF X IS USED 

250 T=T*I 

260 NEXT I 

270 RETURN T 

280 FNEND 

> 

> 

-5 -1 -1 
5.6 120 120 
0 1 1 
1 1 1 
2 2 2 

3 6 6 

4 24 24 

5 120 120 

6 720 720 

7 5040 5040 

8 40320 40320 

9 362880 362880 

10 3628800 3628800 

11 39916800 39916800 

12 4.790016E+08 4.790016E+08 

13 6.2270208E+09 6.2270208E+09 
Stop in line 45 

> 

> 

> 


August 1977 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 31 


327 







dr. dobbs journal of 


COMPUTER 


C 


alisthenics 


60 


rthodontia 


Running Light Without Overbyte 


Number 18 


September 1977 


Volume 2, Issue 8 


A REFERENCE JOURNAL FOR USERS OF HOME COMPUTERS 


CONSUMER COMMENTS 

About Those Elusive PILOT Tapes — Ronald C. Fryxell, reply by Gregory Yob 

Some Follow-Ups and A Few New Tidbits from Readers — Jef Raskin 
Computer Applications for the Handicapped — Warren J. Dunning 


SOFTWARE 

AN INTERACTIVE PROGRAMMING LANGUAGE FOR CONTROL OF ROBOTS 

— Lichen Wang 

complete background, documentation, examples, & source listing 
A MICROPROCESSOR OPERATING SYSTEM: THE KERNEL -Max K. Agoston, Ph.D. 

complete documentation, data structure schematics & source listing 
Basic-Coded Memory Dumper — John B. Palmer 


SOFT PATCHES 

Patching Microsoft’s 4.0 Basic on P.T.’s SOL —JackL. Calaway 
Wee Improvements to MSI’s FD8 Operating System — Gary D. Gaugler 





© David Dameron 1979 




ABOUT THOSE ELUSIVE PILOT TAPES 

HELP!!!!! Received: 77-Aug-24 

On page 18 of the May 1977 issue there is an address to 
which one may direct requests for PILOT-8080 in machine 
readable form. I made such a request several months before 1 
received that issue of DDJ, and to this date I have received 
no reply?? 

Ronald C. Fryxell 
926 Maple Street 
Albion, MI 49224 

Editorial note: Dr. Starkweather says that a number of 
people have written to that address and received at best 
very delayed service. We contacted Gregory Yob of the PILOT 
Exchange and received the following. - TRW 

WHAT THE %*/&%* HAPPENED TO THOSE 
PILOT 8080 PAPER TAPES 

After much fubar, the PILOT Exchange is doing the PILOT 
8080 paper tapes. The source tape is some 5 inches thick and 
the hex format tape is a more reasonable size. I am inter¬ 
facing a punch to my IMSAI, and when that heroic struggle is 
completed, I will be able to punch those tapes, and, WILL!! Be 
assured that they will arrive, probably in 4 — 8 weeks. If that 
is a problem, give me a call. 

Gregory Yob 
The PILOT Exchange 
P O Box 354 
Palo Alto, CA 94301 
(415) 3264039 


STORE PRAISED 

Dear DDJ; Received: 77Sept 16 

Please tell your readers about a super computer store that I deal 
with. It is Computer Hobbies Unlimited, 9601 Kendrick Road, 
Richmond, VA 23235. Phone is 804-276-5056. 

Here are some examples of the service I have received from the 
proprietors, Terry and Tina: 

A factory sealed kit was missing 44 LEDS — the LEDs were replaced 
immediately by the store. 

A factory sealed kit was missing a bag of resistors, capacitors, crystal 
and an 1C. A replacement was mailed in two days by the store. The 
replacement was never received. Another replacement was provided 
in about a week. 

A CPU board I assembled was checked out by Terry. He found and 
repaired a solder bridge in 5 minutes that would have taken me an 
hour or more to find. 

I highly recommend the store to anyone who wants service and 
honesty from their computer store. 

David L. Johnson 
4106 Montreal Ave 
Prince George, VA 23875 


IMPERFECTIONS REPORTED RE 
SOLID STATE’S VB-1 & RAECO RDR 

Sirs: Received: 77-Aug-17 

I am currently working on correcting bugs in the AMSAT 
satellite monitor and adding VDM support to it. I plan on 
starting a linking loader using MOSTEK’s object standards 
(BYTE, 7/77) and a text editor using the random-access capa¬ 
bilities of the VDM-1 or VB-1 video boards. Please send me 
information about publishing in DDJ as I would be glad to 
share my work with your readers. Please see inside front cover. 
Delighted to have you share with the community. - JW 

I have several comments about my Solid State Music VB—1 
card. While it went together without any problems, I found two 
design deficiencies. A 74193 used as a modulo-15 line counter has 
a set of gates to clear it whenever its outputs are 1 1 1 1 (deci¬ 
mal 15). Fine, except that they also use the load/reset pulse to 
trigger another counter and a flip-flop. Since this pulse is very 
short, depending on the speed of the 74193,1 had to try several 
before finding one that worked. They were aware of this prob¬ 
lem, but I don’t think that the board should have been designed 
in this way to begin with. The other problem is that the video 
output is not blanked when the 2102 display page is switched 
from the refresh counters to the 8080 address bus. The result 
is “snow” that appears on the screen whenever the processor is 
accessing the display memory. I have not been able to devise a fix 
for this problem. Except for these two problems, the board works 
fine. The assembly instructions aren’t Heathkit quality, but they 
are quite satisfactory. 

I also had problems with my RAECO paper tape reader when 
trying to read yellow tape. They claim that “buff-colored tape 
can be read with a little care”, but I was unable to read it at all. 
I’ve come up with these changes, which have worked quite well: 
change R9 to 47K and remove R10. This makes the feed hole 
phototransistor match the data sensor in gain and added hyster¬ 
esis, apparently to insure valid data whenever a STROBE 
occurred. However, because of the transmittivity of yellow tape, 
if enough light were provided to trigger the sprocket hole sensor 
then the data sensors would see through the tape. Unfortunately, 
my changes require the use of a D.C.-powered lamp, as the reader 
is now sensitive to hum on an A.C. lamp. 

Phil R Kam 
WA3RVL/WB2AJX 
112 Edgemoor Lane 
Ithaca, NY 14850 


oldie but goodie available 

8K PDP-8/I WITH QUAD DECTAPES & PUNCH 
FOR S4K 

Our glorious!?) Editor spent much of a decade (no pun intended) 
in mutually supportive relationships with the 8-Family of Maynard, 
and has long had a warm spot in his heart for these quaint machines. 
(For the younger generation and the uninitiated, this eccentric dis¬ 
cussion concerns one of the first - - and, for many years, the most pop¬ 
ular -- minicomputers: the PDP-8 manufactured by Digital Equipment 
Corporation (DEC) in Maynard, MA.) 

Back in the Summer of '76, when he was idling along doing nothing 
but editing DDJ and consulting hither and yon, he stumbled upon a 
PDP-8/1 system that was being put out to pasture (sold on the used 
equipment market), and - - with heart throbbing and eyes watery - - he 
grabbed it up. To hold close, spend long wintery evenings with as he 
had for so many years, and keep him warm at night (with its power 
supply, it can keep a small room quite comfy on even the coldest days). 

Then, along came PC'76, the blossoming of DDJ, the Computer 
Faire, the Silicon Gulch Gazette, the ACM, teaching at Stanford, NCC 
in Dallas, PC'77,. . .and it goes on and on. An' our Editor has had 
little time to do more than turn his old friend on from time to time, 
and watch it glow and blink. Lest this old 8/1 feel spurned and 
lonely--for it is an honorable machine with a strong Puritan work 
ethic, not accustomed to having its diodes idle--Jim is seeking a 
good home for it. 

It's mounted in two 6' high, 19" racks, has 8K 12-bit words (enough 
to run DEC'S OS-8, DECtape DI BOL, etc.), aTC-01 DECtape controller, 
four TU-55 DECtape transports, a 20ma current-loop interface for a 
TTY, a paper-tape punch, schematics & documentation, and comes 
with a set of diagnostic programs . . . and maybe some interesting 
DECtapes. When last powered up and connected to an ASR33, a 
friend ran X-8 (DEC'S super whing-ding diagnostic & exercisor software 
system) on it for about 12 hours with nary a glitch. The version of 
X-8 being run tested the 8K of memory, TC-01, and all four TU-55's, 
but was not configured to test the punch. Price for the whole system, 
FOB Menlo Park, California, is $4,000. Contact Jim Warren, (415) 
851-7075,851-7664. 


Page 4 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Number 18 


331 



Consumer Notes 

SOME FOLLOW-UPS and 
A FEW NEW TIDBITS FROM READERS 

Jef Raskin 77-Sept-20 

Thanxs to Ray Atnip for pointing out DEC’s use of PEEK 
and POKE (in BASIC under RT-11) before Micro Soft brought 
those useful extensions to personal computer land. I apologize 
to our readers and to DEC for missing this point. I do have a 
copy of DEC’s offerings of BASIC under RT-11 and (by way 
of proclaiming innocence) point out that the manuals do not 
mention PEEK and POKE. If a reader can send me a copy of a 
DEC manual with this information for my files I would appre¬ 
ciate it. I now have about 40 BASIC manuals including a 
mimeo’d one from Dartmouth back when BASIC was first 
invented. 

I have gotten two interesting letters from Bob Hoover of 
1875 Monte Vista Dr., in Vista CA 92083. He writes that he 
has had some very bad experience with a Jade Co. (of Lawn¬ 
dale, CA) memory board. Among the problems were a missing 
chip and badly mangled sockets. The heat sinks did not fit 
the PC board and even if they had, they would not have fit 
into the Altair or IMSAI card frame. At last hearing 
Mr. Hoover had returned the board and asked for a refund. 
Mr. Hoover found a whopping problem with the Type-away 
Selectric conversion board for the S-100 bus. In his words: 
“Ground plane in lower right corner of board solidly attached 
to 5V bus. Results predictable.’’ Once the smoke had cleared 
and the traces cut apart, the board worked fine. Compliments 
to the computer for not self-destructing its power supply on 
that one! Readers ordering that board be warned. Lastly he 
reports on an interesting experiment. Mr. Hoover bought a 
“just overhauled” Selectric from the San Diego Byte Shop 
($450- a good price). He immediately sent it to IBM to be 
tested. They found that “This machine has been cleaned 
(unprofessionally) within the last week or so but I assure you 
it has never been overhauled.” A service contract on a Selectric 
is only $60 per year from IBM. It may well be worth it — if 
only to know if your equipment has really been overhauled. 

Preliminary Reviews: 

The Heuristics Speechlab has got to be one of the best 
products I have seen. The board was given to a beginner 
(not even any soldering experience) and the instructions led 
her to a perfectly completed board. This board has a lot of 
discrete components, and the manual does a superb job of 
having the builder check and double check everything. The 
documentation is incredibly good, with many experiments 
and detailed explanations. The product is called “SPEECH- 
LAB” and not only provides a speech recognizer for your 
S-100 computer, but does indeed provide a laboratory course 
on speech and sound recognition. Amazing, and a very good 
value. It even includes a microphone. 

There will a more complete review coming along soon. 
But there is a lot to test and learn. I can heartily recommend 
this product. I chose one at random from Heuristic’s stock and 
in spite of the multitude of components there were no missing 
parts. If you are at all interest in speech recognition there is 
no need to wonder if this product is for real. It is! 

Another product that is very complex is the North Star disk 
system. I am in the middle of evaluating this blend of hard¬ 
ware and software. First of all, the kit works as advertised. 
It is a solid design electronically, and the Shugart disk is a 
wonder. The price is right. And the BASIC software is one of 
the better hobbyist packages. I am disappointed in the 


pseudo-contest 

MANUFACTURERS’ DELIVERY DELAY 

Tom Williams, Assistant Editor, DDJ Dated: 77-Oct-24 

Our “pseudo-contest” for the manufacturer with the long¬ 
est delivery delay, announced in the June/July issue of DDJ, 
has received moderate response. However, a number of the 
people responding have supplied some very well-documented 
“dossiers”, which have allowed us to discuss some quite 
specific problems with the manufacturers, most of whom have 
been co-operative in furnishing information. 

All this can be a bit time-consuming as we are taking care to 
see that we talk to the proper people - usually the presidents 
of the companies. What we are finding out will be the subject 
of an article that is now taking shape around the material that 
has been received to date. 

So, this is a “last call” to anyone who wishes to send in 
documented evidence of what they consider unreasonable 
delay in delivery. 

A major article will appear in the next issue on this matter. 


OUR INDEPENDENT PRODUCT REVIEWER 
IS STILL INDEPENDENT 

Dear Jim: Received: 77-Sep-23 

Your Journal has established a reputation that is recog¬ 
nized by equipment manufacturers and consumers as being 
impartial. In an area such as data processing, where confusion/ 
distrust is never more than a rumor away, your Journal has 
served as a rock of clear thinking and open exchange. 

Mr. Jef Raskin, who heads your Product Evaluation Group, 
has given considerable support to the Poly-88 computer sys¬ 
tem in his article in the Nov/Dec 76 issue of your Journal, 
(“Poly-88—An Excellent System”, pg 16). 

Would it not be more in keeping with the image of the 
Journal to point out that Mr. Raskin is a Poly Morphic dealer? 

Robert S Hoover 
1875 Monte Vista Dr 
Vista, CA 92083 

Editorial Note: Jef, when contacted on this point responded 
as follows: 1) He was not a dealer when he wrote the article; 
2) When he discovers something good in computers he believes 
in making it available to customers; 3) He is NOT a Polymor- 
phics dealer and never has been. His name was listed in error, 
and 4) The firm he works for, Bannister and Crun, has sold 
Poly computers and Altair and IMSAI. .. 

Mr. Brian Wilcox, Vice President of Polymorphic, when 
contacted by phone, confirmed Jef’s statement. - TRW 


building instructions and the documentation which is 
extremely weak. North Star expects the buyer to have an 
oscilloscope handy. The check-out procedure requires a scope. 
If everything goes well, and you skip the check-out, an oscillo¬ 
scope is not required. There are no adjustments to be made. 
The experienced hobbyist will find the product excellent. The 
beginner will want to wait until North Star re-writes the 
manuals. 

Also under review is the Extensys 6 4K memory board. I 
was given no choice but to take a selected board, as they 
didn’t have any boards in stock when I visited their plant. A 
more complete review is coming up but I can say that this 
particular board works perfectly. No hassles. It is the first 
four-layered printed circuit board that I have seen in a hobby¬ 
ist product. There is a certain hardware slickness here that is 
quite advanced. The documentation is, again, slick. But it is 
not nearly as complete as one might wish. 


Number 18 Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 Page 5 


332 



COMPUTER APPLICATIONS 
FOR THE HANDICAPPED 


Greetings, Received: 77-Oct-3 

So, you finally got your computer up and running. What 
now? Have you spent a small fortune on your computer only 
to impress the neighbors or play Star Trek? How about putting 
your computer and your expertise in hardware design and/or 
programming to practical and worthwhile use? What about a 
project for your neighborhood computer club? The challenge 
is this: to develop computer-based systems to aid the handi¬ 
capped. The microprocessor makes possible many devices 
that were only dreams several years ago. Talking computer 
terminals and voice output reading machines would be very 
valuable to the blind. A speech recognition system and readout 
would be invaluable to the deaf. Control systems for artificial 
limbs, voice input telephone dialers and personal communi¬ 
cations devices for remote computer access are all possible. 
The literature, especially the personal computing conferences 
and publications, abounds with good and realizable ideas. It is 
up to us to implement these ideas and get them into the hands 
of someone who can really use them. Why not seek out some 
handicapped people or some organization for the handicapped 
in your community and see what they need? If your device has 
sufficient general demand, there are several not-for-profit 
organizations which could manufacture it at the lowest possi¬ 
ble cost to the handicapped. Probably the best way to find out 
what’s already been done, what’s needed, and how to do it, is 
to communicate our ideas with each other. A small group of 
interested people, under the leadership of Dr. Robert Suding 
(The Digital Group), met at PCC 77 in Atlantic City to discuss 
some problems of the handicapped and how we can help. We 
will be meeting at most major personal computing affairs and 
invite your participation. We also invite your ideas, problems 
and suggestions which may be of help in this project. To this 
end, there will be an ongoing column in BYTE to promulgate 
these ideas. Please send your suggestions and ideas to: 
Computers for the Handicapped 
c/o Warren J. Dunning 
5939 Woodbine Ave 
Philadelphia, PA 19131 



Mr John Ingram 

3301 Don Tomas Dr 

Carlsbad, CA 92008 714-229-6925 

Dr Murray Turrof 
Dept of C.I.S. 

New Jersey Inst of Tech 
323 High St 

Newark, NJ 07102 201-645-5503 
(Doing research in this area) 

Mr Ira Laefsky 
8808 Patton Rd 

Philadelphia, PA 19118 215-836-4486 
(Dept of C.I.S.-U. of Penna. Eye movement 
control of prosthetic devices) 

Mr Richard Jackson 
19880 Cranbrook No. 120 
Detroit, Ml 48221 313-341-6304 
(Will act as convention coordinator) 

Mr Marty Glassman 
9601 Ashton Rd Apt 0-28 
Philadelphia, PA 19114 
(Will write/edit magazine articles) 

Mr T.F. Bogart 

Southern Station — Box 246 

Hattiesburg, MS 39401 601-266-4292 


Ms Kathleen Murphy 
601 E 12th St 

Kansas City, MO 816-374-5081 

Mr Joseph Wise Jr 

3804 Parkmont Ave 

Baltimore, MD 21206 301-426-5169 

Ms Barbara Froding 
RD 1 

Bridgeton, NJ 

Mr Frank Whitescarver 
391 Ski Trail 
Kinnelon, NJ 07405 

Mr Douglas Cook 
3006 Hazelhurst St Rd 
Pittsburg, PA 15227 

Mr Phillip L.S. Lum 
339 Treasure Boatway 
Sarasota, FL 33581 

Warren J. Dunning 

5939 Woodbine Ave 

Philadelphia, PA 19131 215-879-9383 

(Will publish newsletter and coordinate things) 


Mr Milton E. Sussman 
16 W Gowen Ave 

Philadelphia, PA 19119 215-CH7-3181 
(will coordinate magazine articles) 

Mr Dave Day 
Box 29 

Maynard, MA 01754 

Ms Helen Baltzer 

P.O. Box 143 

West Swanzey, NH 03469 

Mr Gordon French 
614 18th Ave 

Menlo Park, CA 94025 415-325-4209 

Dr Robert Suding 
c/o The Digital Group 
P.O. Box 6528 
Denver, CO 80206 

Mr Burchenal Green 
Managing Editor, Creative Computing 
P.O. Box 789M 
Morristown, NJ 07960 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 7 


333 



^U *1* ^U >^* 

* ^ *^ ^ ^ ^ ^ ^ *^ ^ *^ *^ »T* »T* ^ rp ^ ^ ^ ^ ^ ^ ^ ^ ^ Jp Jjs Jp Jp 3p 3p 3p Jp Jp Jp ?p ^ ^ rp Jp Jp ^ ^ ^ ^ ^ ^ ^ ^ n* * V * ^ ^ ^ 


An INTERACTIVE PROGRAMMING 
LANGUAGE for CONTROL of ROBOTS 

by Lichen Wang 


Editorial Note: 

In our haste to get Dr. Dobb’s back on schedule, we made a 
horrible error. In DDJ no. 18, our layout department pasted 
up a whole section of text out of sequence in Lichen Wang’s 
article. This mistake got past everybody whose job it is to 
catch such things including myself and I take ultimate respon¬ 
sibility for it. In an effort to make things right we are reprint¬ 
ing the text of the article (for the listings, see DDJ no. 18) 
with our sincere apologies to Lichen Wang and our readers 
whom we left scratching their heads. -TRW 


Introduction 

This is a simple-minded “Tiny” language. The basic idea is 
to use an ASCII keyboard as the command input device for 
a microprocessor controlled robot. Rudimentary commands 
consisting of a single ASCII character are executed by the 
robot as soon as they are typed. Some primitive forms of 
IF-THEN-ELSE, REPEAT-n-TIMES, and run-time-macro are 
included. Paired parentheses are used to group any number of 
commands into a single command and enable one to construct 
complex structures. The run-time-macro is probably the most 
important feature that makes a simple language such as this 
one powerful and easy to use. 

Tliis language is open-ended and is not limited to any speci¬ 
fic robot. To illustrate this point, a version of this language is 
implemented on an 8080-based microprocessor to control a 
robot who has a “mind” but no “body”. Later in this article, 
two different “bodies” are attached to the robot’s “mind” as 
examples. Revisions and implementations on other micropro¬ 
cessors can be made if there are such interests. 

The Mind 

In this implementation, one uses the VDM-1 interface and a 
video display to represent the robot’s mind — so that one can 
always read what is in the robot’s mind. Other hardware 
required are: an ASCII keyboard with interface, and an 8080 
based microprocessor system with 8K of RAM at 0000-1FFF. 
The major part of the memory is used for the stack. The 
assembler listing and object code of the program are included 
following this article. 

The robot’s mind consists of an input line buffer of 58 
characters long, 15 lines of macro definition space (also of 
58 characters each) and a 4-decimal-digit accumulator. When 
one starts the program, the entire screen of the video display 
is cleared, the characters “A=0000” are displayed at the top 
right corner, and a cursor is shown at the top left corner 
(i.e., the beginning if the input line buffer). Whenever the 
cursor shows in the input line buffer, it means the robot is not 
doing anything but waiting for input from the keyboard. 
When the cursor disappears, the robot is executing a command. 


robot. More will be added when a body exists. 

K (space, blank) No operation 

+ Increment the accumulator 

Decrement the accumulator 

The no-op command is sometimes needed in IF-THEN-ELSE 
commands discussed later. When one types the character “+” 
or it replaces the cursor on the screen, the accumulator 
is changed accordingly, the “+” or is erased, and then the 
cursor reappears. (But all these happen in a flash.) Attempts 
to increment beyond 9999 or decrement below 0000 will not 
change the content of the accumulator. 

If one types the sequence of characters “(++—+)”, the 
accumulator will be changed after the “)” character is typed, 
and not while the individual “+” and ” are typed. The 
sequence is stored and displayed on the input line buffer as 
entered, and the cursor is moved to the right at the same pace. 
If a RUB-OUT (or DEL) character is typed before the closing 
“)” is typed, the input buffer is erased and the partial com¬ 
mand is not executed at all. 

The bodyless robot has two IF-THEN-ELSE commands. 
One of them tests the accumulator. The other is a random 
decision maker: 

T [then command] [else command] Test if A>0 

? [then command] [else command] Randomly choose one 

All IF-THEN-ELSE commands have this common syntax. 
The leading character, such as “T” or “?”, specifies the IF 
condition, [then command] is the command to be executed 
by the robot when the IF condition is met, and [else com¬ 
mand] is the alternate command to be executed if the IF 
condition is not met. Note that since the IF-THEN-ELSE 
itself is a commmand, it too can be used as the [then com¬ 
mand] or [else command]. Thus: “??(case 1) (case 2)?(case 3) 
(case 4)” has the same effect as “?(?(case 1) (case 2))(?(case 3) 
(case 4))” and will both cause the robot to randomly choose 
to execute one of the four cases. 

The bodyless robot has two REPEAT-n-TIMES commands. 
One repeats a fixed number of times as specified, and the 
other uses the current value of the accumulator as the repeat 
count. 

324 [command] repeats the [command] 324 times 

A [command] repeats the [command] A number of times. 

For example, “A—” will zero the accumulator, and “A+” 
will double the content of the accumulator. More complex 
sequence can be constructed using parentheses, e.g., 
34 (6+12(+—+)A+). 

Last, and by no means the least, is the macro definition 
command. It is used to define any character, which is not 
one of the basic commands, to be the equivalent of a simple 
or complex command. 

D [ch] [command] Define [ch] to be [command] 

For example, “A—” clears the accumulator, one can type 
“DZA—” and from there on simply type “Z” to clear the 
accumulator. One can also have “DX(Z34(6+12(+—+)A+))” 
for whatever purpose. 

When one types in the definition, the sequence of char¬ 
acters are entered into the input buffer, and the cursor is 

Number 20 


Page 60 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


334 



moved to the right. When the last character (which completes 
the definition) is typed, the robot will search its mind to find 
if an old macro definition of that same character exists. In 
case an old definition exists, it will be marked to be deleted 
later. The robot then searches its mind again to find an empty 
line and copies the definition there. The examples above will 
be shown as “Z=A-” and “X=(Z34(6+12(+—+A+))”, 
respectively. 

If one attempts to define a character which already has a 
meaning in this language, such as “T”, “?”, 

“A”, “D”, or any digit, the robot will erase the input buffer 
and will not do anything else. The RUB-OUT (or DEL) key 
can also be used to abort the definition without damaging the 
old definition if any. To erase an old macro definition without 
creating a new one, one types “D[ch])^”. This is consistent 
with the convention that any undefined character is also a 
no-op. 

The Body 

One can construct a very simple robot similar to the well 
known “Turtle”. Its moving parts consist of two stepping 
motors driving two independent wheels plus an idler wheel 
to keep its balance. A micro-switch attached to a bum per 
serving as its sensor and other “bells and whistles can be 
added on later. The two driven wheels are arranged like the 
wheels on a barrow cart, and not like a bicycle. When both 
stepping motors are driven forward or backward, so is the 
robot. But when the motors are driven in opposite direc¬ 
tions, the robot rotates. 

The microprocessor interface consists of one parallel input 
port and one parallel output port. One bit of the input port is 
connected to a flip-flop which in turn can be set by touching 
the micro-switch on the robot. Two other bits of the input 
port tell the micro-processor whether the stepping motors are 
ready to be pulsed. Five bits of the output port are used; one 
of them used to reset the sensor flip-flop, and two bits each — 
direction and step, for the stepping motors. Other bits of the 
input/output ports are for further expansion. 

To control the body of this robot, one adds the following 
command to what was discussed in the previous section: 

F Move forward one step 
B Move backward one step 
R Rotate right one unit angle 
L Rotate left one unit angle 

S [then command] [else command] Test & reset the 
sensor 

The “unit angle” is the smallest angle the robot can rotate. 
It is determined by the step size and the distance between the 
two driven wheels. The “S” command is an IF-THEN-ELSE 
command similar to the “T” and “?” commands discussed in 
the last section. The assembler listing and the object code of 
the modifications needed to implement these new commands 
are presented below. 

Another Body 

Another robot of a sort can be even easier to construct — 
if the micro-system has a DAZZLER. One uses software to 
control an imaginary turtle on another video display connected 
to the DAZZLER. The black & white mode is used to get a 
128 x 128 grid. The new commands added are: 

F Move forward one grid cell 
R Rotate 45 degrees right 
H Go home (i.e., the center of screen) 

N Face North (i.e., up) 

W Leave white trace 
B Leave black trace 
C Clear screen 


Note that the “B” command here is in conflict with the one 
in Section III. But since the robot has only one of these two 
alternative bodies, this does not cause any problem. The “C” 
command clears the screen to the opposite of the “trace”. 
That is, if “W” is in effect, “C” clears the screen to all black. 
If “B” is in effect, “C” clears the screen to all white. When one 
marches the turtle off the boundary, it will re-enter the 
boundary on the opposite side of the screen. The assembler 
listing and the object code of the modifications needed to 
implement these new commands are presented below. 

Programming Examples 

The following are a few examples of programs written in 
this language. These examples are heavily biased toward 
graphics and recursive macro definitions. This should not be 
interpreted as representing the strength or limitation of this 
language. One reason for using graphic examples is that the 
action of a mechanical robot such as the one described in 
Section III is more difficult to represent here than the graphics. 
Another reason is that this language has not been tested on a 
mechanical robot yet. 

There are very few programming languages that allow 
recursive definitions, and many hobbyists think recursive 
routines are difficult to understand. There are many indica¬ 
tions that the language in which one learns to express one’s 
ideas profoundly influences one’s process of thinking. It can 
be shown that recursion is really not any more difficult to 
understand than iteration. 

Example 1: A walking measuring tape 

Using the robot described earlier, one can define the 
macros: 

DM (SJ^(FM)B+) . 

DZ (A-SJ$9999R) 

Now if one types the character “Z”, the robot will clear its 
accumulator, reset its sensor, and start to rotate. When the 
robot is facing the direction that one wants to measure, one 
types the character “M” and the robot will stop rotating and 
start to execute the macro “M”. It first tests its sensor. If it 
did not touch anything, it will move forward one step and 
recur to macro “M”. This process will repeat until the robot 
finally touches something, it will go back one step, increment 
the accumulator, and return from the current level of macro 
“M”. Since the macro “M” has been nested, the robot will 
step back and increment accumulator as many times as it 
had stepped forward. This means the robot will find its way 
back to where it started from, and the accumulator will show 
the distance to the obstacle in units of the robot’s step size. 

Example 2: Windmill 

Using the robot described above, one can define macros 
to draw all kinds of windmills: 

DX (CA-8(HNARP+)) 

DP(.) 

Where “P” is a macro defined by the user to draw some 
curve. “P” should use only the “F”, “R”, and fixed number 
repeat commands and paired parentheses. After one 
defines “P”, one can type “X” to draw the windmill. The 
robot will first clear the screen, zero the accumulator, and 
then repeat 8 times drawing the pattern “P”, each time start¬ 
ing at the home position but facing a different direction. The 
accumulator will be incremented each time after “P” is drawn, 
and will be used to determine the direction of the next iteration. 

Example 3: Dragon curve * 

The dragon curve is a family of very interesting curves. 
Figure 1A shows the 3rd order dragon curve and Fig. IB 
shows the 8th order one. These curves can be constructed by 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 61 


335 




folding a strip of paper. One keeps doubling the strip and 
folds it into half the current length for n times — n being the 
order of the curve. One then opens all creases (there are 
2**n—1 of them) to 90 degrees each, and a dragon curve is 
formed. The robot of Section IV can also draw these curves — 
up to the 12th order due to the 128 x 128 resolution. One 
defines: 

DLT (-L6RJ+) G 

DJT (-L2RJ+) G 

DG4F 

DQ (HN6R30FCF4RARL) 

After these are defined, one sets the accumulator to the 
desired order (0 through 8) and types the character “Q”. 
Recall that one can zero the accumulator by typing “A—”, 
and that one can then set the accumulator to n by typing 
“n+”. The macro “G” defines the segment size of the dragon. 
One can redefine “G” to be a smaller number of “F”s so that 
higher order dragons can fit the screen. With “DGF”, up to 
the 12th order dragon can be drawn. 



Figure 1. Dragon curve of (A) order 3, and ID) order 8. 


The dragon curve is defined by the macro “L”, while 
macro “J” defines the reversed dragon curve. When folding 
the paper strip, one may observe the fact that the nth order 
dragon consists of a (n—l)th order dragon, a 90 degree fold, 
and another (n—l)th order dragon in reverse. The definition 
of “L” and “J” then becomes obvious when one adds the 
fact that the 0th order dragon is a plain strip of paper which is 
defined as “G”. The macro “Q” is used to pick a starting 
position, clear the screen and pick a starting direction. 

Example 4: Sierpinski curve ~ 

Sierpinski curves of order 1 and 3 are shown in Fig. 2A 
and 2B respectively. Like Example 3, one may define: 

DIT (—12F15RG5RI2F1+) 2R 

DG4F 

DY (HN63F2R61FRC4 (2FI)) 

After these are defined, one sets the accumulator to the 
desired order and types “Y” to draw the curve. Again, 
“G” can be redefined to a smaller number of “F”s to draw 
higher order “Y”s. For “DGOF”, the accumulator can be 
set to 5. 

The Sierpinski curve is closed and consists of four 
identical sides arranged in different directions and connect¬ 
ed by a short line “2F”. The sides are defined (recursively 
again) in the macro “I”, and the closed curve itself is defined 
in the last part of the macro “Y”, namely: “4(2FI)”. 


Footnotes: 

1. See Scientific American April 1967 pages 116-123. 

2. See Scientific American December 1976 pages 124-133. 



Figure 2. Sierpinsm curve of (A) order i, and (B) order 3. 


J 

Example 5: Hilbert curve 

Hilbert curves of 1st and 5th order are shown in Fig. 3A 
and 3B respectively. The macro definitions are presented 
without further explanation: 

DUT (-VG6RU2RGUG6RV+) 6R 
DVT (-U2RGVG6RV2RGU+) 2R 
DG4F 

D$ (HN63F2R63FC2RU) 



Figure 3. tliiocrt curve of (A) order 1, ana (U) order 5. 


Discussion 

In Section II, only a very limited number of basic com¬ 
mands, a total of 8,are included and yet it has been demon¬ 
strated that quite complicated tasks can be accomplished by 
this simple language. In practice, one would put in more 
basic commands to make the language even easier to use. One 
would also want to include more facilities, e.g., variables or a 
stack for the accumulator, etc. As is evident when one glances 
through the program listings which follow, these additions 
can be easily made. 


Page 62 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Number 20 


336 











One question that may arise is the limited number of 
characters in the ASCII code. If the keyboard is equipped 
with SHIFT and CNTRL keys, there are 128 different 
characters; and if the parity bit is not used and can be 
controlled from the keyboard, there are 256 different codes. 
One can further expand this by defining a few characters to 
be special escape characters. When the character table lookup 
routine encounters one of these escape characters, it will get 
the next character and scan a different table. 

As the title of this article implies, the scope currently is 
limited to “interactive control”; there is no provision for 
artificial intelligence. Another limitation of this language in 
its current state is that there is no way to handle concurrent 
actions and real time interrupts from the robot. The author 
looks forward to feedbacks from the readers. He especially 
welcomes ideas which would enlarge the scope of the language 
as opposed to what specific command should be included or 
deleted. 

The author wishes to thank Harvey A. Cohen and Marvin 
R. Winzenread for many interesting discussions and their 
pioneer works and publications in related topics that led to 
the development of this language. 

□ □□□ 


Of course, if robots appear, so must numbers for I and O. 

Two methods may be used, one is to have the polling after input of 
a command from the keyboard, and the other is to have it at intervals 
within the program, say after each 20 executions of a mind primitive 
routine from the commands dispatcher, and after each 1000 passes 
through the keyboard input wait loop. 

A naggy detail is that a robot may want some attention from the 
keyboard. This could be done, and would allow keyboard input during 
a run of a command by a slightly different version of I and O: 

I - Input number from keyboard & put in accumulator 

I number or A Input from Robot number FOO (The keyboard is 

Robot O) 

O value or A Write value on VDM in commands input buffer spot 

or, preferably, bottom line 

0 value or A (blank) value or A Write first argument to Robot 

indicated by second argu¬ 
ment. 

This gets me into more tangles than I started with. However, I offer 
these as suggestions towards some of the problems you mentioned in 
your document. 

I am of course interested in getting Source & Object for playing 
with. Meanwhile, thanks for an interesting afternoon of thought. . . 
Gregory Yob 
PO Box 354 
Palo Alto, CA 94301 
(415) 326-4039) 


SOME SUPPLEMENTARY OBSERVATIONS 
FROM GREG YOB 

To Lichen Wang 

Re Tiny Robot Language (TINMAN) Received:77-Oct-19 

Your design is hard to beat for conciseness. I found it a bit diffi¬ 
cult to follow the examples, but that would be clearer with a live 
machine in front of me. All in all, a very clear and clean approach. 

My first thoughts were mostly cosmetic in nature, ie, I prefer to be 
able to give multicharacter names, and locating the various tests 
embedded in a command string was sometimes confusing. Of course, 
tests can have parentheses appropriately located to mark them, and 
multicharacter command names or macro names could be done with 
a delimiter convention, ie 
•TURTLE* 

Tests could be either: 

•TEST* (first) (second) 
or 

T! (first) (second)! note that (xxx) stands for whatever goes there.. 
As I said, these are cosmetic in nature . . . 

In pondering the addition of bodies, I noted that the commands for 
the bodies outnumbered those for the mind. Since the macro facility is 
essential to the language, why not use it to implement each body rather 
than have each body eat up more characters in the ASCII set . . . The 
beginnings of such an approach would look like this (bear in mind I 
have not run it all the way through to be consistent with other aspects 
of TINMAN). Two new commands should take care of it: 

I - Input from robot & place value in Accumulator 
O (number or A) Output value to Robot 
Of course, a stack gets pretty important, so some kind of push & pop 
commands may help out as well . . . Bear in mind I am not just adding 
some more commands, I am using these to remove all commands that 
ultimately are input and output commands. 

With I, O, push & pop, then the other commands for a body may be 
written as macros. While we are at it, it might be neat to "store" screen¬ 
fuls of macros in other sections of memory or on an external device, so 
that those used for a body would not clutter the VDM display. 

A hint of an idea towards interactive 8, real-time uses would be to 
have the robot's input actually be a macro call. That is, the value 
returned by the robot would be a defined macro which is then execu¬ 
ted. This would either be an interrupt (god forbid!!) or a polling kind 
of thing where after each operation, the inputs are polled, and if one 
needs treatment, the state of the language processor is stacked, and the 
required macro is called. A suitable form might look like: 

P (robot #) (macro or command) Poll robot and do command 
or A if ready, command can then 

input whatever value from 
robot, etc. 



* 





* 



^ • 





it 





* 

E 


O 6 


CQ rH 



* 


<u 



* 

a • 


CO (0 


a i 

4J 


* 


CP 



* 

> TJ 


4-1 U 


Z E 

• * -rH • 


* 


<0 



* 

u 


05 CP 


X Q 

U 4J JD 4-1 


* 


D 



* 

CO *0 


O 


> 

•■o v-4 u 


* 


cn 


r- 

* 

O 


4-1 U 


Li 

O 0 >iO 


* 

CP 

C 



* 

- -Q 


0) Cu 


O X) 

CO CUTD Q, 


+ 

C 

IQ 


<T> 

* 

Cl, >, 


rH 


4H U 

CO 


it 

•*H 

J 

05 

rH 

* 

Cl, (D 


a 


CO 

tjs 05 <U CO 


* 

JZ 


4-> 


* 

Cl, 


4J D 


05 TJ 

a u 4-> 


* 

4-1 

CP o 

U 

* 

rH 


- 


TJ C 

4J 4J ns 


* 

O 1 

C JD 

V 

* 

1 M 


C 4J 


Oi (0 

u co >i TD 


it 

Z 1 

■ H 

O J3 

* 

ca w 


o t a 


05 4-> 

O 4-5 (U 


■it 

1 

e 

x 

E CP 

* 

Q (J 


a a 


CA CA 

a, ca tji 


it 

u 1 



<D C 

* 

CA 


* * 


* * 

* * * * 


M 

O 1 

c0 

4-4 

4-1 <0 

it 

ca < 






s 

it 

Z Ua 1 

u 

o 

as 

it 







Q 

* 

1 

CP 


Q> 

it 

4J c 






Z 

it 

Cl, 05 1 

O 

rH 

CA C 

* 

f0 <3 






M 

* 

TJ 1 

u 

o 

<U 

* 



T X 




e 

it 

CA C 1 

x 

u 


it 

E TJ 






it 

<T3 1 


4-> 

rH O 

* 


X 

V£> CA 

X 


X 

ca 

it 

S 4J 1 

a> 

c 

• **H 

* 

Q 

+ CJ 

CA 

X 

<a 

X 

it 

CA 1 

> 

o 

oa J 

* 


ca 

Eh Z 

X 

CJ X 

ca x x x 

Eh 

it 

1 

•H 

CJ 


* 

4-4 - 

a 

CA < 

Cl, 

< 00 

CJ <a ca rH 


M 

JZ 1 

4J 


c >, 

* 

O Cl, 

ca 

< a 

rH 

Eh (J 

CJ o oo ca 


it 

O 1 

U 

u 

o ca 

* 

Cl, 

ca 

-) 1 

O 

ca ca 

a <a <a ca 

Cl, 

it 

•H 

CO 

o 

•H 

* 

X, Cl, 






o 

it 

jz 

s 

Wl 

4-4 

05 

* 

CO CJ 







it 

0) 


U 

* 

1 

O 

3 3 

3 

3 3 

3 3 3 3 

o 

H 


4-1 


a> 

* 

<D Q 

X 

000*000000 

z 

it 


c 


> 

* 

> o 

o CJ w 

CA 

CA CA/CA CA CA CA 

M 

it 


w 



* 

CJ 






Eh 

it 





it 

JZ u 


<* Eh 



Z < > H 

CO 

* 


c 



* 



CA E 

X 


CA Eh < < 

►H 

* 


< 



* 

0) 4J 


CJ J 

(J 

Q 

CA CA Q Q 


* 





it 

£ <3 


Z X 

< 

CA E 

X >i >i 


* 





* 



< M E- 

CA Q CJ LA CA CA 

X 

* 

MU** 

* 

♦ 

* * 

* * 

«« * « 


a to 

CA 

CA > 

(SI X X X 


QniijueosssH 

ONkOfiuCL.CJ'S'SlOOQ 

NQCl^iSUOQS 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 11 

337 


















TJ 




CD 













4H 



5 
























C7> 





c 




P 

• 


x 

p 




CJ 

3 

CD CD 



4-1 


n- 

o 














p 



ft. 







03 



CD 

p 

03 



CD 

o 

X 


X 

CD 

• 




X P 

X X 



3 


p 

r-H 


0 





T3 







0 



CO 


a -o 

T3 



rH 

TJ 


X 

CD 

E 



CD 

E 

u 



CO 

X 



O 

CD 

P 03 



X 


0 

4-1 


c 





p 







P 

0 

CD 

CD 


3 

CD 

CD 



4-1 

CD 


3 

CO 

e 



CO 


03 


CD 

3 

o 



P 

P 

E 

CO 




4-1 

P 


•p 



>1 0 

03 







O 

x: 

> 

X 


jxC 

> 

> 


-p 


> 


O 

3 

o 




CO 

P 


p 

C 


a 



• U 

E 

•P 


o 


4-1 

0 

fe. 

p 

5 

E 

p 

N 

O 






P 

0 

p 

03 

CO 


O 

p 

p 


03 

(S3 

p 


CD 


cj 

T3 


CO 

- 

CO 

P 

o 

o o 

P <T3 

o 


P 

>i 03 

O O 



p 


3 

> 

>1 


O 

O 

o 

•P 

X 






o 

P 


X 

•iH 


o 

CD 

CD 

TJ 

X 


CD 


X 

CD 


CD 


- 

CD 


•P 

p 

p -p 

03 CD 

i 


CD 

CD p 

p P 

>i 




X 

o 

a 

* 

X 

p 

E 

r-H 

>i 






E 

03 

T 




I—I 

CO 

CO 

CD 

■P 

C 

CO 


CD 

P 

TJ 

C 

'D 

-p 

P 

c 


CO 

p 

X c 

o 


P 

O 03 

4-1 

a 


p 




o 

>i CO 

P 

0 

E 

0 






0 

-C 

•rl 

p 




CD 

CD 

> 


•H 

CD 


3 

CD 

•H 

CD 

CD 

CD 

•P 

P 

CD 

CO -P 

P -P 

£2 


CJ 

CJ X 

CD 

o 


CD 


4-1 

p 

o 

a 

p 


E 

O 

X 






E 

CJ 0D 

CD 

P 


CD 

P 

p 

p 

o 


p 


-P 

cj 

C 

4-1 

C 

r-H 

X 


CD 

P 

P c 

4-1 



(0 

o 

P P 

o 


P 


o 

0 


o 

- o 

0 


T5 










P 

CD 


rH 



CD 

•D 

CO 



_ 

CD 


CD 

•H 


P 

E 

CT> 


C -p 

C CD 

0) 


P 

03 

3 CD 



c 



4H 

0 

o 

>1 (0 

P 

E 

C 

E 






f= 

P 

P 

U) 

X 


X 

p 

p 

CO 


■H 

X 


C 

CJ 

4-1 

TJ 

4-1 

P 


O 

P 

*. 

•p 4H 

03 -O 



03 

CD 

Of ,n 

o 


•p 


'U 

4-1 

X 


Of p 

0 

O 

03 

O 






6 

0) 

3 

03 

X 


03 

0 

O 

CD 

0 


o 


o 

X 

CD 

C 

CD 

3 

4H 

O 

O 

X 

O <D 

U C 

CO 


X 

CD X 

c :* 

c 


o 


c 

3 

03 

o 

O 3 

X 

p 

CC 

p 






p 

O 

CQ 

E 

o 


H 

4-1 

2 

CC 

O 

CQ 

2 


Q 

CO 

TJ 

X 

Q 

X 

•P 

p 

Cl, 

o 

Qj T> 

CO 3 

•p 


cj 

X P 

•p 



X 


3 

X 

2 

2 

CJ CJ 

£ 

3 

— 

3 






3 

He 

He 

* 

He 


He 

* 

He 

He 

He 

He 

He 


He 

♦ 

He 

* 

He 

He 

He 

* 

He 

He 

He He 

He He 

He 



03 

o 



He 


He 

He 

He 

He 

He He 

He 

He 

He 

He 






He 




























03 

E p 

a> p 

S3 















































CD 

5 

II 














































CO 

>i CO 

CO 

3 














































P 

r-H 

- p 

a 





































Eh 









CD 

rH O 

Q C 






































2 









cn 

03 P 

II -H 

4H 




















< 

> 

Eh 















X 



Eh 







c 

3 O 

•p 








3 




< 

> 


Eh 




X 

Eh 

< 

CJ 


> 













X 



CJ 





He 

CD 

0 CD 

3 a 






CJ 



3 




Eh 

< 


< 




cj 

CO 

O 

CO 


X 










Q 



Eh 



X 



Q 


He 

C 

• p P 


p 





3 



a 



X 

X 

a 


a 




fP 

Jp 

X 

X 


CO 

CQ 









2 



CO 


X 

CC 



2 


He 

•p 

P <D 

4H 3 

3 


3 



X 



C2J 

X 


a 

X 



X 

< 


2 

X 

x 

CO 

»P 


CO 


rH 








PH 

CM 


*. 

Of 


PH 



CJ 



p 

Of x: 

•p a 

X 


»» 

ro 

r- 

M 


rH 



ro 

2 

3 

3 

CN 

3 

•* 


* 

O 


X 

Q 

a: 

X 

< 

cj 

< 



< 

X 


X 

Cl4 

CJ 

X 

X 

CO 

< 

< a 

X 

X X 

CC X 


X 

3 

0 £ 




< 

to 

lD 

a 

a 

cj 

< a 

A 

L 

G 

CC 

X 

X CJ 

X 

o 

CJ u 


























o 

O 


p 




















X 





X 




X 





X 

X 


X 







3 


Eh 

p 

TJ 0 

3 • 

• 








X 



3 








X 


M 

CM 

co x 

> 

CSJ 

< 

T 

Eh 

< 

a. 


CO 

X 

tsa 

CO 

M 

Q 

> 


Of 

X X 

3 Of 

Eh 

3 

A 

C P 

X TJ 



> 

M 

M 

CJ 



M < 

> < N 

3 


M 



> 

a. > 

< 

2 


2 

3 < 

O 

2 


CH 

ro 

2 

o « 

X 

< 


3 

X 

< 

o 

2 s 

o 

2 2 

< O 

3 

CJ 

3 

03 

p 

a 


o 

2 

X 

2 

2 

03 

> Eh 

o CC 

2 

< 

2 

2 

IS) 

2 

o 

2 

O 

CJ 

M 

< 

n 

X CJ 

5; 

n 

o 

X 

a 

o 

Of 

a 

04 

CJ 

T) 

Of 

X 

Q 

2 

O 3 

Of 

PH PH 

CJ Of 

a 


CO 

CO 

03 

o 


5; 

< CJ 

•3 

o 

3 

2 X 

2 0 3 

CJ 

M 

< 3 

M 

2 

3 

2 



























He 


- P 

• O 

CJ 

• 












































He 

CO 

• c 

E X 


CD 












































He 

•p 

OV'H 

O >i CD r O 

X 

















Q 



























X 

CD O 

P CD 

X 

03 

CJ 

















S 

Q 


























Eh 

P Of 4-1 X 

p 

E 

£h 

















CJ 

2 










r-H 













CM 








Ed 







«-H 


CM 







ro 

X 

CJ 










o 













CJ 

He 

He He 

He 

He He 

He He 

He 

He He 

CJ 







o 


o 







CJ 


Q 



3 


3 


3 








3 

3 


a 




3 




3 






3 


3 





3 

rH 



3 



3 


Q 



3 


3 


3 








3 

3 


3 




3 




3 






3 


3 





O 

3 



3 



3 


r-H 

<s> 

3 

rr 


to 


in 








3 

3 


ro 




•^r 




O 




3 

at 

■M* 


3 

3 




in 

to 

3 

3 

in 

rH 


r- 


CO 

o 

CO 

CN 


CJ 


to 








< 

r^* 


to 




CN 




m 




ro 

ro 

CN 


at 

r- 




< 

N* 

3 

CO 

at 

3 


< 


Q 

X 

to 

CN 

X 

a 

CO 

CM 

O' 

ro 

o> 

r- 

r-H 

CO 

X 

o 

CM 

m 

r-H 

at 

CJ 

r- 

< 

rH 

ro 

ro 

a 

rH 

at 

X 

to 

3 

CN 

CN 

< 

3 

CN 

CJ 

in 

CN 

a 

X 

to 

< 

X 

3 

ro 

3 

CJ 

Q 

3 

O 

3 

CJ 

r* 

CJ 

X 

3 

o 

X 

3 

CJ 

3 

CJ 

CJ 

3 

CN 

ro 


X 

3 

3 

CN 

CN 

CJ 

3 

CJ 

r** 

3 

3 

a 

X 

CJ 

ro 

r-H 


X 

CJ 

CJ 

a 

3 

CJ 

a 

•M* 

CJ 

N* 

cs 

3 

X 

r^ 

< 

X 

3 

3 

CM 

ro 

•«T 

in 

to 


CO 

at 

CJ 

3 

3 

ro 


in 

to 

at 

< 

X 

CJ 

3 

3 

rH 

CN 


to 

at 

< 

a 

3 

3 

rH 

CN 

in 

CO 

< 

CJ 

3 

rH 

CN 

m 

LO 

X 

uo 

X 

in 

X 

in 

in 

VO 

to 

to 

to 

to 

to 

to 

to 

to 

to 

r- 

r- 

r- 


r^ 

r- 

r- 

r" 


r- 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

at 

at 

at 

at 

at 

at 

at 

at 

< 

< 

< 

Q 

S3 

o 

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 

a 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

Q 

ta 

<3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

Q 

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 


















‘ 0 

0 



p 





in 




p 







cn 


• 


P 


















, 



C X 

X 



o 





0 



>1 

0 





P 


•p 


P 


O 

• 







P 













•P P 

P 



Of 





c 

C 


QfTJ 

p 





•P 


X 


0 


c 

TJ 

cn 




X 


•P 







m 


1 

p 







c 





•p 

0 


O p 

p 







p 


C 



C 




Q 0 









3 

'O 

Of 0 



ca p c/i 

P 



•p 





r-H 

0 


U HJ 

3 


p 



0 




c 


in 

0 

0 




2 X T> 

X 







3 

c 

o 

C 



cn -p -p 

0 









X 


O 

X 


0 

0 


P 


rH 


CO 

0 

•p 

E 

6 




CC p 

C 

w 







3 

• H 

p 

p 



p cn 

rH 



0 





P 



X .Q 



P 

P 


3 


rH 


u 


E 

D 





03 

0 







3 

E 


o 



rc 'O in x 




X 





0 

in 


w >, 

p 


P 

0 


U 


CO 


cn 

C 

• 

O 

cn 

0 



Cn 0 








II 


0 

(J 



0 UP U 

c 



P 





X 

CO 

• 

O 0 

o 


3 

X 


0 





o 

cn 

u 

CO 

X 



C N 

*. 



to 





< 

U) 

.G 




rH 0 O P 

0 




p 




P 

X 

TJ 

•r-l-* 

a 


X 

5 


X 


P 


X 


0 

0 

0 

P 



•p -p 

p 

c 


X 






•p 

p 

p 



U P Of X 

X 



P 

0 




o 


0 


c 



o 

3 

0 


(0 

He 

0 

p 

p 



• 


T1 P 

n 

•p 


CN 






SZ 


r; 



3 

p 



C0 

P 





p 


- E 

•p 


E 

c 

II 



0 

He 

p 

o 

X 

c 

X 

P 

cn 

He 

0 Of X 

ro 


\ 





p 


P 

cn 



P ^ ^ 


» 


0 

P 




TJ 

co 

P 

3 O 



O 


3 



Of 

He 

c 

p 

o 

o 

o 

0 

He 

0 0 

O 

p 







3 

c 

0 

•p 



«J r^TJ 

TJ T3 


rH 

D 




C X 

C0 

II p 

o 


p 

o 

a 

0 


0 



cn 


cn 

•p 


p 

He 

X X 

p 








3 

•p 


p 



x cn p p 

C 

C 


CJ X 




ITJ 

p 

E 

X 3 

Eh 


3 

E-* 

— 

2 


3 

a 

in 

p 

X 

p 

CJ 


He He 

He 

He 


CM 





He 

He 

He 

He 



P c m 0 

CO 

CO 


He 

He 




He 

He 

He 

He He 

He 


He 

He 

He 

He 


He 

2 


c 

ip 

0 


0 

cn 





3 











OOP 


E 



















CJ 

o 

0 


p 


P 


c 
















OfP X 4H 

•k 

E 




















X 

u 


3 

*■ 

o 

c 

•p 





+ 











o p >i o 


O 



















He 

P 

in 

cn 

U 

>1 0 

•p 

c 

CN 




2 






X 


3 

CN 


o -h 0 X 

2 

O 



















He 



0 

p 

p 


c 

+ 



2 

3 






X 


to 

to 


rH C 

a 


X 

2 









2 


2 






He 

cn 

p 

c 

X 

p 

0 


•p 

Q 



3 

3 






+ 


+ 

+ 


•p p 

> 

0 

CJ 

3 









3 


3 







•p 

•p 

p 

0 

c 

X 

TJ 

cn 

3 



3 

3 





- 

2 

- 


2 

He 

C 4-1 0 D 


X 

< 

3 





3 




3 


3 



X 






3 


0 

o 

0 

0 

3 



3 

U 

- 




II 

3 

3 

3 

3 

He 

•P 0 X Qf 0 

p 

Eh 

3 


- 



3 




3 


3 



3 

a 



<L> 

- 

P TJ 



0 

X 

X 3 



CJ 

X 





< 

3 

3 

3 

3 

He 

U 'O p c 

X 


X 

CJ co 




a 

a 



CJ 

a 

CJ 



3 


He 

C 

3 

0 

C 

P 

p 

P 


' hH 


2 

X 

W 

- 





3 

- 

3 

3 


E -H 

p 

0 

' 

01 

uo 

- 



<3; 

2 


8 

B 

X 

2 

X 

X 

X 3 

s 


He 

■ p 

cn 

p 

0 

o 

cn 

rH 

0 

3 2 


a 


•* 

*■ 



rH 

*» 

CJ 

* 

CJ 

CJ 

Eh 

T5 e 


P 

3 


*» 




ro - 

w 

CN 

k. «. 

* 

CJ 

» 

•> 

k. 


CJ rH 

He 

P 



X 

p 

0 

X 

X M 

< 

> X 

< 

2 

X 

X 

M 

X 

X 

X 

X 

X 

CJ 

0 rH O in 

c 

3 

X 

X 

X 

2 

X 

X 

Q CJ 3 

Q 

H 

L 

a 

3 X 

a 

3 

X 

3 

a 


D 

•p 

TJ 

cn 

p 

•p 


p 















3 

X O p - 

o 

o 



















a 

O 


C 

c 

o 

p 

in 


3 










a 


a 

a 

3 

p p p 


0 








3 




3 





3 


2 

p 

• 

0 

0 

c 


•p 

c 

M 3 

< 

Eh w 

►H 

M 

X 

3 

cm 

HH 

3 

M 

3 

3 

»P 

o 

0 

X 

f—i 

fp 

hH 

l-H 

X 

3 

CM >P 

3 


> > 

»p 

3 M 

> 

> 

►H 

3 

3 

(J 

X 

cn 


u 

0 

0 


w 

X < 

3 


X 

> 

> 2 

s 

2 

X 

X 

X 

X 

X 

a 

cn 0 -a X 

c 

0 

X 

X 

> 

> 

2 

CJ 

z > < 

tS3 o O 

X 

< X 

o 

O > 

< 

2 

3 

3 

0 

TJ 

in 

in 

X 

TJ 


3 CJ 

X 

O 3 

2 

2 

M 

CJ 

n 

3 

X 

3 

X 

X 


•p at c o 

•p 


3 

3 

V 

V 

HH 

a 

^ 2 

CJ 


2 2 

3 

CJ 

3 

2 

2 

2 

cj r> 


in 

p 

C 


P 

C 

He 















He 

H3 co p 

rH 

P 



















He 



0 

p 

•p 


0 

He 















He 

cn x E 


o 

Eh 


















He 

cn 

X 

E 

•p 


P 

E 

He 















He 

•p p E 0 

Of X 

U 


















He 

•p 


E 


a 

0 

E 

















x cn o x 

o 

o 

3 



















X 

p 

O 

' 

2 

X 

O 

















Eh at O P 

p 

p 

3 



















E-< 

w 

O 

3 

CJ P 

O 







rH 













f-H 

rH 

CN 

ro 























He He 






M 








He 

He He 

He He He He 

He 

He He 

a 

a 

a 

Q 














He 

He He 

He 

He 

He 

He He 

He 

He 

He 


3 

CN 



CJ 





3 

Q 

CJ 

3 

CJ 

U 

X 

CJ 





3 


3 

3 



CJ 

3 

CJ 




3 

3 

CN 

3 



CJ 





3 

ro 

CJ 

ro 

CJ 

CJ 

r-H 

CJ 





3 


3 

3 



CJ 

3 

CJ 




3 

3 

3 

CJ 


CO 

3 

3 

3 



X 

r-H 

< 

3 

CJ 

X 

X 

3 

< 

3 



CJ 

X 

X 

< 



3 

3 

O 



X 

3 

r^> 

3 

m 


CJ 

3 

a 

CN 



3 


ro 

ro 

ro 

ro 

X 

3 

ro 

CN 



CM 

P- 

< 

CN 



3 

in 

3 



X 

in 

CM 

r—1 

a 

3 

ro 

rH 

X 

to 

ro 

CJ 

CN 

r-H 

CN 

r-H 

CN 

CN 

r-H 

r-H 

to 

to 

ro 

m 

CN 

X 

Q 

< 

3 

X 

rH 

a 

rH 

3 

X 

X 

a 

X 

ro 

CJ 

< 

a 

CN 

ro 

ro 

CN 

X 

CJ 

CN 

CM 

CM 

CN 

CN 

ro 

CM 

3 

ro 

CM 

3 

CJ 

3 

CJ 

CJ 

to 

X 

rH 

CJ 

CM 

in 

in 

3 

CJ 

CJ 

3 

ro 

to 

r- 

at 

CJ 

X 

3 

rH 

CN 

in 

X 

X 

X 

rH 



< 

CJ 

X 

X 

3 

ro 

uo 

CO 

X 

CJ 

a 

3 

X 

X 

r- 

X 

< 

a 

3 

3 

3 

3 

3 

3 

3 

rH 

rH 

rH 

r-H 

rH 

r—l 

rH 

CN 

CM 

CN 

CN 

CM 

CM 

CM 

ro 

ro 

ro 

ro 

ro 

X 

X 





N* 



3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

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 


Page 12 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Number 18 


338 



















k 












X 


k 














X 












k 











» 

c 


k 









0 



0 

0 

• rH 







a> 





k 


X 






• 



0 

03 


■k 







X 


C 



r—1 

n 

XT' 







r-H 


e 



k 


c 




rH 

in 

E 



X 


• 

k 






0 

0 


o 



X! 

a< 

•rH 







X 


o 



k 

X 

03 


X 

• 03 

rH 

03 x 

O 

• 


03 

Eh X 

HC 






X 

> 





1X3 

x 

X 

n- 






CsJ 03 


u 



k 

03 



c 

in x 

•rH 

x c 

u 

X 


E 

X 

03 

He 







> u 


X 

u 


X 

X 


CP 






X 


X 



■k 

X 

«» 


03 

0 X 


X rH 

X 

u 

0 


X 

>i 

Hi 






o 

—- 0 


r-H 

T5 




03 

i 






X 





■k 

X 

in 



c 


o 


03 

X 

0 


O 

HC 






X 

in 


o 

TJ 


C 

X 


IS 






0 x 


X 



•k 


u 


03 

•H C 

o 

in Oi in 

O 

X 

X 

03 

U 

Hi 







c 0 



<0 


•rH 

o 





0 



in a) 


X 



k 

in 

0 


rH 

X -rH 

in 

03 

•rH 

X 

• 



X 

Hi 






,—1 

03 V-I 


0 




c 

X 

X 



X 



X 



0 


■k 

0 

X 

• 

X 

3 

r-H 

X X 


>ix id 

o 

X 

in 

Ht 



Qh 



X 

E 


X 

a 


0 



•rH 






** u 


X 

r-H 


* 

c 

u 

in 

03 

O 03 

03 

X 

CP 

0 

O X 

X 

X 

0 

Hi 


• 

O 



CJ 

E 0 


X 

•rH 


u 

•k 

>1 CP 



>. 



in x 


03 

X 


■k 

•rH 

03 

u 

X 

kJ l_i 


CJ 

c 


03 


•rH 

X 

Ht 


Q. 

1 



•—' 

O X 





O 

o 

03 

•rH 


o 

03 


O 

0 os 


O 

03 


k 

X 

i_( 

03 


03 

ro 


•rH 


>. E 

CP 



Hi 


O 

O 




CJ X 


- 

cq 


2 

2 

2 

a 


2 

2 


z 

>« 2 


X 

X 


k 

3 

03 

X 

03 

03 


• • 

u 

e 

a 

c 


0 

Hi 


1 

2 



0 

•—< 


in 

* 


* 

* 

* 

* 


* 

•# 


Hi 

Hi Hi 


* 

* 


k 

o 

X 

cj 

X 

in 03 

• 

CPX 

X 

o 

O 0 

•rH 

X 

X 

HI 


O 

Hi 



X 

X 


X 

















k 

u 

u 

03 

X 

Q) 5 

CP 

03 0) 

in 

u 

u X 

o 

c 


Hi 


c 




X 

0 O 


in 

















k 



u 


X 

03 

a r-H 


X 


CP 

0 

X 

HI 







X 


•rH 

















k 

0 

'O 

03 

03 

X x 

X 

X 

X 


03 o 



o 

Hi 


03 




in 

X 0 


X 

















k 

X 

0 

X 

in 

•rH 


c 

c 

in 

X 

w 

X 

c 

Hi 






o 

c 


d) 

















k 

X 

> 

u 

3 

X 


• 03 

03 

•rH 

0 

•H 

rH 


Hi 


in 




c 

x O 







a\ 












k 


l-l 



O X 

• 

03 X 

E 


u in 


3 

X 

Ht 


•H 




•rH 

o 


c 





IS 












k 

0 

0 

0 

rH 

03 

03 

in 

E 

X 

<U -rH 

>. 

O 

r-H 

Hi 






X 

0 


o 





Q 

- 











k 

kj 

in 

in 

r—H 

03 in 

X 

03 03 

O 

c 

X 

a 

X 

3 

Hi 

k 





0 

0 X 


•rH 





V 

CP 











k 

03 

0 

(13 

•rH 

c 

o 

CJ X 

O 

03 

5 CP 

o 

in 

O 

HI 

k 

0 




X 

CJ 


X 





CJ 

- 



CJ 

- 


2 


2 

< 


•k 


u 

X 


o w 

E 



E 

c 

CJ 


X 

HI 

k 

(J 



X 

c x 


•rH 



r-H 






»• 

is 


* 


•* 



k 

C 


X 


•rH 


in o 

03 

E 

O *«H 


u 

in 

HI 


03 



c 

X 

0 O 


c 

x 

CQ 

> 

CQ 

X 

A 

C 


< 

- 


< < 

X 

X 

L 

B 


k 

o 

X 


a 

o 

03 

•rH JJ 

X 

O 

X U 

o 

0 


Ht 


CU 


Ht 

03 

c 

X c 

. 

•rH 

















k 


u 

X 

2 

X CP 

X 

X 

X 

CJ 

X 

c 

r-H 

X 

Hi 

C 

in 


Ht 

E 

03 

03 

in 

X 


q5 















k 

a> 

03 

o 

CJ 

03 

3 

X VH 



in in 


X 

X 

k 

03 



Hi 

£ 

E 

> x 

U 

0 

X 

IS3 

Qa 

X 

X 

a, 


> M 


Oh H > 

X > 

> X Eh 

k 

i~i 

0 



Oh r-H 

O 

03 

03 


X 


c 

X 

k 

r-H 


6-1 


o 

£ 

•r-t in 

0 

X 

2 

cj 

2 

O 

X 

> 

s 

CJ O 


CJ 

2 CJ O 

2 

o o o 

X 

k 

0 


03 

1H 

£ X 

03 

C X 

u 

IS 

c x 

IS 

03 

a 

k 

X 


X 

Q 

CJ 

O 

3 3 

X 

X 

a 

O 

Qa 

X 

2 

cj a: 

2 

CQ 

X 

CJ X 2 

X 

2 

2 Oh 

X 

k 

X 

03 

r-H 

o 

3 

X 

•H u 

0 

II 

•rH c 

II 

X 

CQ 

HC 


c 

X 



CJ 

cr E 

CJ 

X 

















k 


l-H 

X 


•r-» M3 

03 

03 

X 

X 

o 03 

X 



Ht 

HI 

03 


Hi 

_ _ _ 

0 

03 

r-H 

















Ht 

E 

X 

03 

a 


1 

IS Vj 


X 

a e 

a 

X 

• 

HI 

Hi 

t-H 


HI 

X 

in 


u 

o 






Eh 











k 

O 

c 

X 

2 

>i 03 

C 

03 



E 


u 

CP 

k 

Ht 

X 

X 

He 

CJ 

•rH 

0 X 

03 







f-H 











k 

u 

03 


CJ 

03 X 

o 

03 X 

o 

X 

CJ o 

X 

03 

0 

k 



CQ 


1 — 1 

X 

X CJ 

X 

X 






CJ 











k 

X 

X 

03 

X 

E Eh 

c 

X CJ 

X 

M 

a o 

M 

X 

u 

k 


< 

Q 


a 


X ■ 

(J 

►H 






X 






cn 





k 














Hi 



2 












Q 






> 




k 

k k 

* 

Ht 

k k 

k 

* k 

* 

* * 

k 

* 

* * 

k k 

* 

k k 

■K k 

Ht Hi 

Hi Hi 

CJ Ht 

Ht Ht 

Hi Hi 

Ht 

Ht Hi 

Hi Hi 

Hi 


<3 CN 

IS IS 

q r* cr> is 

CJ x ro ro 

rOLOCNrHi—IU<T» 00 <T»vOCOCjuCr»CJrOVOCtirH(T> cr. 

(NQUU(N' v 1CQQr'QQ(aur , ‘CNKOvOUU CJ 


ro in oo o\ cj 
Q Q Q Q Q Q 
Q (^3 a S Q IS 
a Q IS IS S Q 


CJ Cu Q H M 'T lA 
G Q CJ CJ CJ U U 
IS (S <S) S) Q <S S 
SJ IS S CD Q IS CD 


us r-^ co ct> < cQ 
u u CJU CJ u 

^ cVJ PD PD Po tS 
S) CD S> (S CD S) 


CJ 

CO 

IS 

(S 













0 

0 

X 



CN 
















CN 






0 




0 

X 









0 





in 



X 

lH 

0 









0 








u 

0 


0 



TJ 


• 

CP 




X 









c 





- 

in i~i 

0 

X 

0 

in 



0 






c 








0 

X 

0 TJ 


» 

0 


CP MJ c 



in 

03 









o 





X 

0 0 

X 


X 

0 



C 

X 

in 



'D 

•rH 



CN 





X 

X 

X 

03 

X 

CP 

> 


0 

03 



0 

X 




TJ 





X 





o 

U X 

X 

V 

J 

H 



•rH 

X 

0 



C 

X 


in 






CJ 


X 

O 

O 

0 

u 


Jh 

in x 



•rH 





C 










X 

03 CJ 


T3 





,—| 

CP 

c 

U 


3 



0 

X 





03 

X 


X 


u 

0 

• 


x* CJ 



kH 

X 

1H 



3 





*• 





o 

a, 03 

c 

C 

o 

in 




c 

•rH 

0 


O 

X 


c 

0 




k 

u 

o 

«. 


lH 


in 

X 

CJ 

0 



X 

O 

0 



O 





>iX 





u 

E u 

o 

3 

X 

•rH 



X 

0 

X 

X 


X 

X 


•rH 

in 




k 

03 


in 

in 

0 

CJ 

0 

0 


in x 



c 


X 



X 





Oa-rH 






O 03 


O 





O 

X 


CJ 



0 


r-H 

o 




k 


0 

•rH 

•rH 

X 


U 

in 

X 

0 o 



0 

u 

CJ 








o 





0 

CJ X 

0 

X 

in 

MJ 





r-H 

03 


X 

c 



Ur 





CJ 

c 



TJ 

X 


0 

•rH 

U c 




TJ 

0J 



X 





CJ >i 





X 

U 

c 


X 




X 

0 

03 

U 


o 



0 





Eh 


o 

X 

• 

C 

X 

0 

U 


\ 



X 

TJ 

u 



(J 



a 


a 





X 

X 

•rH 

in 

c 

* 




c 

X 

03 


X 

k. 


u 

k. 




X 

0 


•rH 

CP 

03 


X 



.in in 



O 

0J 

03 



X 



o 


o o 






X X 

X 

•rH 

• H 

X 



X 

•rH 

O 

X 


03 

o 


O 

o 




(J 

X 

in 


0 

X 


X 

in 

CJ 

X 0 





X 



03 

O 


CJ 


2 CJ 





in 

in 



o 

CJ 



CJ 


Eh 

CJ 


2 

2 



2 




X 

X 

•H 

X 

u 


• 


•rH 

0 

0 o 



=«* 

JJ 

CJ 



2 

2 


Hi 


hi k 





0 

V-i 

X 

X 

a x 



Hi 

•K 

HI 

Hi 


Ht 

Hi 


-K 

Hi 




Q 



X 


0 

u 

X 


X 

in tj 



Ht 

Ht 

Ht 



Ht 

Ht 









X 

• -rH 

X 

CJ 


03 

















in 

X 


X 

X 

0 

o 

CP 

CJ 



















CJ 

u x 

VO 

X 

x 

E 



•vr 













Hi 


•rH 


33 

X 

X 


03 


X X 


















u 

03 

r-H 

03 

X 




VO 













Ht 

O 


• 



(J 

0 

r—H 

X 

x 3 


















03 

X 0 


E 


O 



+ 













Hi 

0 

X 

in 

0 

X 

03 

c 

X 

X 

X 


















0 

CJ X 

X 


T3 

c 



2 














X 

•H 

u 

C 

O 

u 

o 


•rH 



















in 

X 

CP 

03 

C 




CJ 













<JJ 

CJ 


0 

X 


03 


CN 


• >i 



CN 
















03 

3 


03 

X 



CJ 















0 

X 


in 

X 

c 



X ro 



CQ 

X 














0 

X 

o 

X 


X 



X 













Hi 

0 

0 

u 

TJ 

in 

U 

•H 

0 

Eh 

•H U 



X 

CQ 













k 

c 

TJ X 

u 

X 

*■ 




CJ 

■vr 

m 











■K 

c 

in 

03 

c 

0 


03 

X 

—i 

CP 



CQ 

< 







Q 


CJ 




k 

•rH 

C X 

X 


X 




CQ 

VO 

X 

CJ 










Ht 

•rH 


u 

03 

in 

TJ 

X 

X 

CJ 

•rH 0 



Eh 

Eh 

CJ 








*■ 




k 

X 

> 

X 


0 

• 



«. 

«. 




CN 



X 






X 

o 

03 


T3 

0 

c 


X 

TJ E 



*. 





CN 


X 

< 

CJ 

< 

a 

a 



3 

X 


• 

in 

X 

a 

CQ 

X 

a 

CQ 

< 


X 

a 

CQ 

CJ 

CQ 

CQ 

Q 


> 

3 

X 

X 

X 

TJ 

> 

o 

k 

Q 

03 


CQ 

CQ 

X 

< 

2 

X 

> 

X 








a 

O 

• 

T3 

C 


•rH 
















X 

O 


u 

0 

0J 

in 

u 

in 


oj in 














X 



2 

u 

O CP 

C 

0 

in 


X 

X 














CQ 

u 

• 


in 


0 


u 

>i 



X 








X 

> 


> 

< 

X 

Eh 

X 

X 

X 0 

CN 

0 

•rH 

T3 

IQ 

CQ 

X 

X 

X 

> cu 


a 

X 

CN 

X 

Qa 

Qa Eh 

X 

X 

CP 

"O 


0 

in 

X 

0 

ka 

in 0 


CQ 

X 

X 

> CU 

X 


X 

z 

O 

£ 

M3 O 

Eh 

2 

CJ 

X 

3 

u 


Ui 


C 

3 

3 

X 

X 

> 

o 

s 

CN 

< CJ 

2 

2 0 0 

CJ 

X 

3 

0 

0 

in 

X 

0 

o 

X 

X 

c X 

• 

o 

> 

X o 

s 

2 

CN 

2 

X 


o 

as s 

CQ 

M 

X 


in 


0 

CJ 

CP 

3 

a« 

Or 

X 

X 

j 

2 CJ n 

Q 

a 

3 

X 

Qa 

Qa 

X 


in 

u 

> 

•rH 

X 

u 

c 

o 

c 

•rH X 

CP 

Qa 

;r 

J 

2 

u 

X 

O 

X 








k 


u CJ x 

in 

03 

O 
















k 



Ul 





03 

0 

0J 

0 
















k 

in 

O 

X 


X 

X 
















k 

in 

U 

0 

CP 

X 

X 

in 

U 


X CP 

U 
















k 

•H 

E 0 



X 

















k 

•H 


in 

03 

X 

0J 

0 

03 

0 

C 03 


> 
















X 

0 X 

X 

Q 


X 

a 
















X 

c 

0 

X 

•H 

X 

O X 

X 

O x 

J 

X 
















Eh 

E X 

0 

> 

M3 

•H 

2 
















Ph 

•H 

u 

X 

J 

X 

TJ 

U 

Eh 

CJ X 

X 

CQ 









■pt 













X 






X 






CN 















CJ 




X 





CJ 





k 

k k 

Hi 

Hi Ht 

Hi 

Ht 

Ht 

Hi Hi 

Du 






X 






Cta 


k 

k k 

Hi 

Ht 

k 

Ht 

Hi 

Hi 

Ht 

Hi Ht 

Ht 

Ht Ht 

k k 

X 




> 





f’"' < m co o> in ro cp 

in cd cj h h (j 


CJ (S 
CJ IS 
CD CD CO 

o 

in m h x vo 
Q u CN rH CD 


IS <S 

s rs 

co cr> 

CJ CQ 

a^cjCvnmiN'THHiTi 

MDUHSUQCJQU 


(N CD 

IS (S 

< CJ vO 

CD CO CJ 


miDH(^cjco<co 

U'SCNf'-COCNCJCN 


vor^* co < m u a 
<<<<<<<< 
O Q CD <S CD CD CD CS 
QS CD CD SJ CD CD CD 


CJCulSrOvDOOCP<QCJCt, 

<<CQCQCOCQcacOfOCQCQ 

[*o c J ~J3 Q i*o rVD .~*D i'D r*o PD 

S S CD S3 S CD CD CD CD CD IS 


(N co m 
cj CJ CJ cj 
S3 <S IS IS 
CD S3 CD S3 


^r^OlCJQCJCOCN 
CJCJCJCJCJCJCJQ 
StSCDSSSSS 
SJ (S is is ro is ro ro 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 13 


339 












0 





















0 


OS 

OS 


•* 

VO 

cr> 














to 


i-H 

3 


• 

rH 

VO 

















CN 


rH 


CO 











0) 



«. 

«. 

• 

1 


03 


1 











4J 



44 


a 

rH 


• 

ax 









• 


3 



•H 

£ 

E 

S3 


44 

E 

VO 







O 

C 

, —, 

. 

O 



-Q 

44 

0 

OJ 


0 

0 

PO 







44 

0 

TJ 

u 

CD 

CD 



u 

u 




CJ 









X 

C 

O 

X 

44 


6 

0 


—. 


c 


■—' 




•—■ 


TJ 

44 

4-) 

03 

44 

CD 

ZJ 


O 

:* 

• 

lO 


0 

• 

OJ 




TJ 


C 

O 

•—• 

e 

03 

1 

O 


TJ 

CO 

JZ 

VO 


CO 

JZ 

VO 




C 


T3 

J3 


E 

kj 

C 

CD 


C 

D 

44 

as 


44 

X 

OS 




CO 


E 

O 

0 

O 

CD 

O 

X 


03 

03 

03 

%—l 


03 

03 

rH 




E 


E 

u 

x: 

O 

C 

2 

x 


a 

Eh 

2 

*— 


2 

2 





E 


O 


44 


CD 

-k 

■k 


■k 

-k 

■k 

-k 


•k 

•k 

■k 




O 


U 

(L) 


CD 

CT> 















CJ 



x 

c 

IQ 
















O 


<D 

4J 

0 

r-H 

«J 
















CQ 


0 

0 

• 1 —l 















(0 


H 

IQ 

u 

>—> 

X) 















rH 


0 

rH 

44 

















0 


■—• 

r-H 

0 

(D 

E 

















,_, 

0 

XI 

x: 

O 















r— * 


'O 

44 


44 

TJ 

04 

CQ 

E-« 


Q 




X 


Q 




T 


c 


JX 


C 

h-t 

Q 

CQ 


X 


X 

rH 

a 

< 

X 




C 


T3 

TJ 

0 

T) 

03 

X 

2 

CJ 


X 


«» 

O cn 

•* 

X 




03 

■k 

e 

C 

•W 

c 

U 

C/3 

a: 

Eh 

X 

X 

X 

< 

CJ S3 

X 

X X 

rH 


•k 

E 

■k 

e 

(0 

a tj 















•k 

E 

■k 

0 

e 



03 


X 


X 

a 






Q 



■k 

O 


0 

£ 

>. 

,— , 



XI 

X 

CQ 

X 

a 

> CJ »H 

> X Or 

M 

Eh 


U 

O. 


0 

H 

TJ 

IQ 

03 

< 

2 


X 

< 

O 2 

X 

OXO 

2 

X 

Eh 



c 

0 

E 

C 

•H 

■"3 

cj 

TJ 

04 

X 

a 

2 

T> 

X 

2 

X O 4 

< 

X 


c 

■k 

a» 


O 

03 















■k 

0 

■k 

jz 

CQ 

T5 

E 

CQ 














■k 

JZ 

* 

4-1 

• H 

C 

e 

Q 

2 













■k 

X 



JZ 

03 

0 

2 

a 



X 











*—* 


0 . 

1H 

1h 

0 

cc 

a 



a 







rH 




Eh 






s 



•-? 







a 





* 

* * * 

■k 

■k 

■k -k 

•k * 

CJ 



5 







CJ 


•k 

■k -k 

•k 


iq 


• 










C T> 











* 


U 







0 



•rH 











• 


U 




c 



X 



T> 








0 




C 

03 

0 

0 


03 

0 


D 








cn 

= 


CO 



0 

0 


x: 

x: 


U 

JZ 


U 


• 





o* 

03 

C 


rH 


TJ 

CO 

.c 

CO 

X 

X 



X 

0 

0 

0 

CJ 





“ 

r-H 

0 


X 


0 

•H 

Eh 





CO 


X 

X 

X 

CJ 

rH 





X 

x: 


r 


JZ 


- 

X 

0 

OJ 


0 

X 

ZJ 

0 

ZJ 

03 

rH 




- 


Eh 


a 


to 

V-i 

04 

O 

X 

X 



O 

u 

1 

u 


03 





X 

r 



•rH 

0 

A 

3 

D 


X 


0 

c 

0 

X 





rH 

co 



•rH 


c 

JZ 

•H 

0 

O 

O 



CO 

X 

0 

X 

0 

V4 




rH 

0 

O 


4^ 


•rH 

X 


u 

0 

0 


c 

T3 

m 


X 

CJ O 




< 

Eh 

a 


X 


X 

0 

X 


X 

X 


0 

C 

-k 

-K 

■k 

•k 

-k 




■k 

■k 

-k 


■k 


-k 

-k 

•k 

0.' 

0 

0 



05 


















JZ 




Eh 

E 


















4-' 

C 

0 


X 

E 



















04 

<0 


X 

O 




a 


OJ 












CO 

C 

H 


Eh 

CJ 




vO 


VO 












X 

X 

0 







+ 


+ 












CO 




0 

u 




2 


2 








X 




0 

«, 



JZ 

0 




X 


X 








X 




X 

S3 

___ 

___ 

X 

x: 


a a 


X 


X 





Q 


Q 

X 



Q 



T3 

T3 


X 

rH 

5 : 


X 

X 

X 



“ 


S 0 


S3 


S3 

2 

T3 

X 

G 

C 

T5 

O • 

Eh 

CJ 0 


CJ 

k. 

CJ 



S3 

rH 

u 

*• 

U 

*■ 


■» 

CJ 

c 

0 

03 

01 


X 

CJ 

CC CC 

zz 

X 

A 

L 

X X 

X 

X 

" 

Eh 

a 

CQ 

CC 

CQ 


X 

CC 

03 

c 

E 

c 

03 

>1 03 


















E 


pj 

c 


n x 


X 

X 

0 


Q 





X 


X 




X 

t~ 

CO 

6 

0 

a 

c 

CSJ 

x a 

X 

X 

z> < 

X <c 

< 

a 

H 


X 

HH 

X 

M 

Eh 

H 

X 

O 

•H 

CJ 

U 

HTl >1 

2 

< s: 

ZJ 

XOtt 

x a 

X 0 

a 

CSJ 

< > 

< 

> 

X 

> 

< 

u 



ac 

0 CO 

D 

cj n 

a, 

X 

2 O 

x 0 

0 

Or 

0 

n 

CJ 


CJ 

2 

CC 


CJ 


X 

c 

0 

X 

CO 


















CO 

•H 

0 

CO 


D 0 


















•H 


JZ 

rH 

0 

E 


















.G 

X 

X 

0 

JZ 

0 03 

Eh 

a 








Eh 








Eh 

M 

I——I 

«— 1 

E-1 -Q w 

a 

M 

rH 







CQ 














n 


Eh 







X 






X 


•k 

■k 

■k 

■k -k 

■k 

•k -k -k 

CJ 

X 

CJ 







C" 1 






Eh 



rH 

rH 

<H 


X 



rH 


S3 

S3 

S3 


rH 



S3 


CJ 

vO 

S3 


X 



OJ 

a 

X 


r- 


X 



X 

01 

< 

a 


X 

< 

a> 

Q 

OJ 

X 

CJ 

CJ CJ 

X 

OJ 

OJ 

r- 

Q 

X 

a 

S3 

ro 

VO 

0 * 

< 

X 

CJ 

X 

ro 

•*3' 


■*r 

■vr 

■^r 




X 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 



X 




r-H 

S3 

S3 


CJ 



CJ 





rH 

3 


S3 




3 






S3 

S3 

S3 


CJ 



CJ 





S3 

3 


3 




3 


X 




OJ 

S3 

S3 


CJ 



X 




S3 

X 

>3 

S3 

3 

X 


3 

S3 


X 


a 


vo 

X 

X 


ro 



X 




X 

O' 

X 

S3 

X 

X 


3 

X 


OJ 


VO 

CTV 

OJ 

a 

ro 

X 

< 

CJ 

X 

< 

■^r 

X 

rH 

X 

< 

Q 

VO 

Q 

vo 

as 

VO 

a 

VO 

OJ 

X 

X 

CJ 

CJ 

CJ 

CJ 

X 

OJ 

O' 

X 

OJ 

X 

X 

X 

a- 

CJ 

CJ 

S3 

CJ 

3 

CJ 

3 

CJ 


OJ 

X 

vo 

CO 

<T> 

CJ 


OJ 

ro 

vo 

O' 

CO 

X 

CJ 

a 

X 

(3 

X 

VO 

X 

X 

O 

X 

3 

X 

X 

X 

X 

X 

X 

X 

X 

VO 

vo 

vo 

vO 

VO 

vo 

vo 

VO 

vo 

O' 

O' 

O' 

O' 

O' 

O' 

O' 

ro 


3 3 3 3 3 


QSQQQSSO'SSl'SSliSIQSSQQSQ 








Or 





0 















TJ 

44 




44 















0 

•rH 




D 




• 

• 

c 




XJ 





> 





U 




44 

4-1 

•H 

TJ 


r a 

0 

T3 




u 

44 




0 



• 

0 

0 


C 


0 

C u 

C 




0 

0 




X 



4-3 

TJ 

r O 

0 

•tH 


44 

O O 

•rH 




in 

CP 




0 



0 



O 

E 


0 

•rH 44 

4H 




0 

H 


Or 


1 



TJ 

TJ 

5 

(TJ 



rH 

44 CQ 

0 




u 

O 


0 


c 

44 

0 


rH 

0 

a iQ 

-X 

0 

• rH 

■TJ 





4h 


44 


0 

-rH 

44 

TJ 

O 

C 

CQ 

- 

O 

r o 

c 0 

C 

• 



JZ 



D 


c 


ZJ 

r-H 




X 

3 


•rH X) 

Z) 

>1 



u 

k. 


O 



a 0 

O 

4* 


TJ 

O 

1—1 

0 

V3H 


fU 




CQ 


0 

CQ 

■k 

•rH 

0 


U 


c 

X 


XI 

0 44 

Zo 

J 



CQ 

0 

O 

X 

0 

0 

JX 

X 

O 

TJ 

O 

•rH 

0 

O 


"O 0 

c 

>1 



M 


2 

X 

>< 

2 

X 

X 

2 

2 

2 

X 

H 

2 

rH 

c 

< 

C 



■k 

-k 

-k 

•k 

■K 

■k 

■k 

•k 

-K 

-K 

■k 

-k 

•k 

-k 

*H 



<TJ 

















•H 

0 rH 




















C rH 

• 

a 


















•rH 

TJ 

0 


















0 5 

C 

1 

















c 

.a 

•rH 

0 

















<0 

44 44 

E 

2 




Eh 








X 




Eh 


•H 



X 


> 

CJ 








X 


- 


CJ 

T3 

44 

CQ 

0 

O 


X 

X 





a 

a 


a 



Q 

X 

0 

►H ' 

- 


Ph 


X 

CC 

X 


rH 


y 

2 

OJ 

CD 


- 

2 

CC 

-V 

- 

44 

CQ 

X 


X 

IH 



Q 


CJ 

tH 

a 

■* 


' 

3—3 

3H 



O 

•H 

CD 

X 

cc 

Q 

A 

A 

U 

X 

CX 

X 

CJ 

V 

X 

CJ 

X 

a 

<T3 

• — 

XI 


















E 

Eh 

O 

14 

-z 

X 

X 







X 



X 


X 



cj a vj 

0 

X 

X 

X 


> 

< 

N! 

X 

X 

X 

3 

1-3 

CQ 

3H 

X 

n 

0 

x 0 


44 

< 

3 < 

3 

O 

r.C 

2 

O 

2 < 


> 

3 

> 

< 

2 

X) 

cc 1 

0 

O 

CJ 

X 

CJ 


2 O 

n 

X 

T3 

CJ 


2 

X 

5 ; 

CJ 

n 


*H O 

-C 

fCJ 

















•—l 

a 2 

44 

>H 

















rH 



fC5 

















•rH 

>1 w 

c 

JZ 

Q 

















XI *<H 

•rH 

u 

Q 









rH 



OJ 

















a 



a 




■K 

-k -k 

•k 

■k -k 

CJ 









CJ 



CJ 





E 

o 

o 

u 

T> 

c 

3 

O 

X 

-k 


CQ 


X 

O 

04 


JZ 



CJ 


CQ 

0 

CQ 

C 

JZ 

rC 

TJ 

44 


0 


TJ 

>1 E 

E 

C 

a 

■H 

•rH 

0 - 

JZ 

4h 

u 


0 

- 

rH 

r O 

0 

tH 


jj 44 

0 

CQ 

(TJ 3 

Eh 

•H 

2 X 

■K 

•k 

•k -k 


zc - 

ii cj 

(J ts £h - 

v ' X *• 

2 a: 2 a: cd u < 

cj J x 

>XhXXXhhJi-( 

OZ>ZU&h><> 

S^-iSZ^XXSUS 


0 













TJ 

T3 










- 




c 






0 

C 








G 

” 


II 




TJ 






a 

TJ 

c 







O 



- 




O 

TJ 





3 

E 

TJ 








“ 




JZ 


CQ 

C 





0 

E 

U 







r C 


— 

CJ 


0 



(TJ 

X 




v-t 

O 









44 


JZ 




0 

E 





cn 

U 

CQ 







O 

0 

- 

44 


0 


3 

j= 

0 






• rH 







0 

c 




JZ 


C 

O 

u 




CJ 

0 

X 







OJ 

CQ 

0 


44 


•tH 

CJ 

O 




x 

C 

Eh 







CQ 

• rH 

CQ 




44 


44 





O 








(TJ 

“ 


(TJ 


TJ 


c 

u 

CQ 




c 









—H 

44 

4J 

U 


c 


0 

0 

0 




TJ 

CQ 








0 

3H 

IH 

0 


(TJ 


CJ 

4h 

CC 




u 

(TJ 

CQ 







•k 

■k 

■k 

■k 


•k 


-k 

•k 

■k 






0 




















CQ 

TJ 

CQ 




















TJ 

0 

0 




















C 

44 

X 




















TJ 

TJ 

44 




















E 

CD 

c 




















E 

H 

0 
















X 




O 

X 

kj 
















X 




CJ 


TJ • 

X 





X 










X 



• 


0 

ax 

CJ 





X 


ro 






a 


3 



• 

4H 

X 

0 

E*3 

CJ 

- 


Q 

a 


O 






zc 


' 



• 

O 


4H 4J 

X 


.—, 


2 

2 

CJ 

CJ 

Q 

Q 

a 

a 

a 

CJ 

a 

X 


•k 

• 


O 

O CQ 

0 

< 

- 


CJ 

CJ 












■k 

*—1 

Vh 

44 

0 











X 


X 

X 




•k 

TJ 

0 


U C 

X 




X 


X 

CS3 

X 

X 

< 

X 

< 

X 

X 

3H 

Eh 


C 

X 

u 

•H 

X 

> 

►H 


X 

X 

V 

2 

u 

CJ Eh 

CJ 

Ph 

< 

0 

> X 

1 — 

T3 

E 

0 

TJ 0 

< 

0 

X 


< 

2 

CJ 

n 

Q 

a 

X 

a 

X 

CJ 

X 

V 

CC 


6 

3 

jr 

ax 

CJ 

V 

u 

CC 

0 

TJ 












■k 

E 

C 

44 



















•k 

O 


0 

TJ O 


















•k 

O 

>H 

cr* 

CQ 

X 



















c 

0 

>1 *H 

X 













ro 






< 

X 

X TJ 

a 













Q 









s 













CJ 



■k 

■k -k 

■k -k 

■k 

■k 

■k -k -k 

CJ 







3 


3 

3 



»H 


3 

S3 

rH 




3 

3 









3 



rH 






3 




3 




3 

rH 

3 


3 

3 



3 


S3 

3 

3 




3 

3 









3 



3 






3 




3 




3 

3 

rH 


VO 

vr 



3 


3 

X 

ro 

X 


3 

X 

■vr 




a 




3 

rH 

3 


as 






ro 


X 


rH 


OS 


ro 

3 

CO 


CJ 

01 



3 


ro 

< 

3 

O' 


OJ 

< 

OJ 




ro 


X 


3 

CO 

OJ 


OJ 






ro 


X 


00 


OJ 


ro 

ro 

a 

ro 

a 

< 

ro 

O' 

OJ 

rH 

ro 

a 

CN 

vO 

ro 

X 

a 

OJ 

rH 

rH 

ro 

vo 

ro 

ro 

VO 

a 

X 

<05 

OJ 

X 

X 

CN 

X 

OJ 

a 

rH 

vo 

os 

a 

as 

X 

00 

a 

ro 

CJ 

X 

CJ 

CJ 

O' 

X 

<J 

X 

CJ 

CJ 

CJ 

ro 

CJ 

3 

CJ 

CJ 

CJ 

O' 

OJ 

ro 

OJ 

X 

X 

Q 

CJ 

ro 

X 

CJ 

rH 

rH 

*H 

rH 

rH 

CJ 

a 

a 

CJ 

CJ 

O' 

X 

CJ 

CJ 

CJ 

a 

3 

rH 

'S' 


ro 

as 

CJ 

a 

3 

ro 

vo 

ro 

as 

X 

X 

rH 

OJ 

ro 


vo 


00 

as 

X 

X 

3 

r-H 

■vr 

ro 

VO 

O' 

CO 

as 

u 

a 

X 

3 

ro 

■*3* 

VO 

O' 

< 

X 

X 

X 

X 

X 

X 

X 

X 

X 

3 

3 

3 

3 

3 

3 

3 

rH 

rH 

rH 

1—1 

rH 

iH 

r-H 

rH 

r-H 

»—1 

OJ 

OJ 

CM 

01 

OJ 

OJ 

CN 

CN 

CN 

CN 

CN 

ro 

ro 

ro 

ro 

ro 

ro 

S3 

3 

3 

3 

3 

3 

3 

S3 

3 

rH 

rH 

*H 

rH 

rH 

rH 

rH 

rH 

rH 

tH 

rH 

r-H 

tH 

iH 

rH 

rH 

r-H 

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 

Q 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 

3 


Page 14 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


340 












T3 














>1 
























03 



X 










03 

3-i 









4-1 

u 



34 












X 



X 





c 




34 



CD 










u 

Q3 



\ 


• 




•H 

O 



03 





X 







■rl 



•H 





•H 

03 



03 



03 




4-1 





o 

O 

4-1 

4-1 


CD 


E 




rn 4-i 


5 

c 





a 







cn 



cn 




(N 

03 

13 



r Z 



Xj 



*o 

c 


03 



u 

4-1 

CD 

•H 


u 


O 




•rl 

03 

X 

o 

•H 




4-1 








• rH 



•H 




in 

CJ' 

C 

X 

34 

u 






03 

03 

• 

4-3 



03 

in 

03 



03 


3-1 




T3 

«H 

X 

c 

X 


n* 


•H 

c 







T3 



nj 


u 


X 

03 

•rH 

Z3 

^3 




X 



4-1 

n 

u 

D 




03 

3-1 

4-1 




04 





Zi 



/\ 


cn 



•H 


s> 










03 


•H 


X 

o 

TJ 

O 



X 



03 

U 

0 

CD 



04 

u 

03 

03 


*4-1 



03 


W 

34 

P 

TD 

0) 

1 


-H 


4-1 



rH 





X 



X 


X 


cn 

03 

c 


03 

3 






03 

3 

aJ 

0) 

03 

o 

o 


JZ 

03 


o 


03 

JZ 

• 

■rl 

03 

5 

rH 

D 

rH 


X 


03 

X 


4c 





X 



X 




•H 

•3 

o 

cn 


r—i 

X 


no 



Q. CD 

03 

X 

4-> 

o 


J 

CD 

a 

4c 



3-1 

4-> 



T3 

CD 

o 

rH 

03 



X 

in 

X 





X 


03 



03 


X 


X 

rH 

CD 

•rH 

C 

03 

•H 


r—I 



03 


«H 

03 

3 

03 

03 

X 


03 

4c 

a> 


03 


CD 

4-1 

34 

CD 


03 

E 


o o 




o 



•H 


C 



c 


X 



03 


'O 

34 

> 



o 



n 

03 

3 

1 

CD 


3 


4-1 

3-1 

4c 

3 



*44 

03 

•H 

O 

03 

03 

> 

-H 


o 


•» 

03 


X 












03 

> 

*» 


D 


>1 





*—* 

x: 

E 

c 

03 

4-1 

iH 

T> 

X 



rH 


in 

O 

4-> 

cn 

1 


> 

II 

CD 


X 


w 

> 





X 


II 



T3 


03 


34 

II 

U) 

*■ 

X 

X 

34 


X 




4-J 

a 

o 

X 

03 

03 

rH 

03 

o 

X 

03 


34 


m 

•H 

•H 

*44 

03 

X 

03 



o 

03 

03 


o 



o 





T3 


rH 


o 

X 

03 

o 

0D 

3 

o 


03 



03 

in 

u 

2 

x 

CJ 

> 

o 

Z 

CJ 

s 

> 


03 

a 


T3 

X 

o 

X 

X 

a 


X 

2 

>H 

X 


X 



CJ 


CJ 



< 


o 


2 

X 

>H 

2 

Sh 

X 

X 


CJ 



x: 

u 

* 

4C 

4c 

4c 

4c 

4c 

4C 

X 



-Q 

o 

03 


■K 

•K 

4c 

* 

4c 


-K 

4c 

4c 

4c 


4c 



4c 


4c 



4c 


4c 


4C 

4c 

4c 

4t 

4c 

4C 

4c 


4C 



4-1 

•H 

03 








2 

03 


E 

4-3 

JZ 

4-1 














































-C 


3 


4-1 

in 

S3 


































in 

< 

w 








4c 

4-> 


C 

c 


v_, 

VO 

































r—i 

4-1 


- 








4c 




O *44 

• rH 

4- 

































T> 

03 


4-1 








4c 

4-1 

4-1 

03 


o 

*44 

2 

































C 

03 

w 

o 









03 

3 

3-1 

TJ 


• 

X 

































03 

a 









-3 

cn cu 03 

03 

a 

03 CJ* 

X 

































E 

03 

03 

0 






X 




C 

JZ 

C 

o 

JZ 03 

X 

X 





















X 

Eh 










6 

3-1 

E 

u 

a 


< 



CJ 

X 

4* 

o 

•H 

2 

V_i 

4-1 

4-1 34 

CJ 

CJ 





















CJ 

H4 










O 


•H 




Eh 



Eh 

X 

4c 

4J 



D 



X 

Eh 


SJ 


CN 



< 

X 

X 





s> 

CJ 

- 

< 




Eh 

CJ 










CD 

TJ 

4-1 

03 

CJ 


X 



X 

Eh 

4c 


E 

o 

4J 


co cj 


X 






CN 



* 







S) 





X 

rH 


rH 

G, 

Oh 


a. 

0A 


* 


c 


-C 

X 

X 

CJ 

X 


CJ 



in 

O 

4-1 

03 

U) 

03 

X 

CJ 

X 

X 

a 

A 

H 

2 

X 

Q 

X 

X 

X 

a 

X 

a 

< 

- 


Q 

Q 


CJ 

a 


2 

X 

X 


X 

X 


* 

TJ 

03 

rfl 

4J 








< 

03 

3-4 


34 

03 

E C 

































* 

<D 

e 




X 

J 


X 

X 


Eh 

c 

*4-4 

m 


>* 

D -H 


X 

X 


X 

















X 

X 

X 

X 




X 



X 


4J 

E 

,—, 

*H 


C/3 

X 

x 

X 

X 

X 

X 

•H 


4-1 

U3 


W 

M 

X 

X 

H4 

X 

HH 

Qh 

CJ 

> > 

> 

Q 

Q 

a 

a 

M 

> 

M > 

Q 

Or 

X 

X 

X 

X 


X 

X 

X 

X 

X 

X 

< 

03 

O TJ 

0 

cn 

ZD 

< 

O 

X 

< 

2 

CJ 

4-1 

in 

c 

•H 


in >, 

X 

< 

X 

X 

X 

> 

2 

2 

o o o 

< 

< 

< 

< > o 

X o < 

O fH 

< 

< 

Eh 

CSJ 

z 

2 

X 

CJ 

CJ 

Eh 


03 

u 

c 



X 

CJ 

X 

X 

cd 

'“D 


D 

3-4 

•H 


• 

03 T3 

X 

CJ 

Oa 

X 

£X 

2 

CJ 

X 

2 

r 

2 

Q 

a 

a 

a 


2 

X 

2 

Q 

Or 

X 

CJ 

cj 

X 

n 

IH 

H4 

X 

a 

a 

X 

4c 

a 


.-3 

03 








4C 

O 

03 

o 

03 -X 

03 

































* 

03 

(0 

E 

D 








4C 

u X) 

Cj □ 

CD 

X 03 

































* 

u 

• H 

P 

rH 








4C 

n 

E 


rH 

03 

2 H 


































•— ■ 

x: 

O 

03 

< 








D 

□ 

X 

03 

4-1 

Z3 rH 

< 


X 































< 

CH 

u 

> 

Q 








X 

C 

X 

> 

in 

2 (0 

Eh 


s 



































2 














X 


X 


rH 





CN 























■K * 

4c 4c 

* 

■K 

4c 4c 

CJ 






4c 

4C 4c 

4C 

4C 

4C 

4C 

4c 4C 

■X -K * 

CJ 


2 


2 





2 
























S) 


rH 



S3 

CN 

CJ 

S3 


S3 




X 















S3 

S3 


X 




S3 


S3 



S3 

S3 

CJ 

S3 


S3 




S3 















S3 

O 


S3 




Si 


in 



rH 

ro 

CJ 

rH 


S3 


00 


r"~ 








S3 


S3 





X 

CD 


X 




in 


X 



CO 

(N 

ro 

CO 


S3 


rH 


X 








S3 


ro 





00 

Q 


X 




< 

in 

Q 

rH 

ro 

a 

ro 

rH 

a 

in 

X 

in 

X 

CJ 

CN 


•cl* 

a 

cn 

cn 

cn 

cn 

<D 

cn 

VO 

X 

cn 

X 

ro 

a 

Q 

ro 

< 

ro 

ro 

ro 

CJ 

X 

CJ 

X 

X 

CJ 

CJ 

CN 

CJ 

X 

CN 

Q 

ro 

CQ 

a 

VID 

m 

m 

CN 

CN 

X 

CN 

X 

p- 

a 

m 

X 

a 

X 

CD 

CD 

U 

CD 

ro 

ro 

X 

lO 

a\ 

< 

Q 

X 

X 

CN 

m 

CO 

X 

CJ 

X 

S3 

CN 

ro 

*£3 

r- 

00 

<n 

<C 

CD 

CD 

Q 

X 

S3 

CN 

ro 

tt 

in 

*40 

<n 

CD 

a 

IS 

X 

CN 

Q 

Q 

Q 

Q 

a 

a 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

X 

X 

r - * 

rH 

rH 

rH 


rH 

rH 

rH 

rH 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

X 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

S3 

S3 

S3 

(S 

S3 

S3 

S3 

<S 

O 

S3 

S3 

SI 

S3 

S3 

S3 

S3 

S3 

*s 

S3 

S3 

S3 

S3 

Si 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

es 

S3 

S3 

S3 

S3 

S3 





no 

03 


03 


X 

CD 

o* 









c 

JZ 


4-3 


3 

03 

cn 







- 


0J 

4-1 


3 


E 


cn 







03 


E 



CD 


3 

U-l 

cn 







m 


E 

E 


0 

0 

CD 

O 

cn 







X 


O 

O 


X 

4-3 

0 









X 


CD 

14 


0 

D 

03 

0 

4-1 







- 



*4H 


1 

CD 


3 

•H 









14 

\ 


c 

0 

4J 

X 








o 

•K 

a) 

0 

• 

o 

X 

0 

03 

w 


o 



o 


a 

4t 

4-1 

4-1 

>1 

z 

X CJ 

> 

X 


2 

m 


z 


4c 

4c 

u 


X 

4c 

4c 

4c 

4c 

4c 


4e 

m 


4c 




OJ 

X 

01 








CN 





1 

14 


> 














0J 

m 

•H 





in 



a 





4c 

JZ 

4-1 

4-1 





uo 



o 





4c 

CD 

CD 

CD 





CN 



2 





4c 


03 

03 





\ 






X 



a» 

34 

Oh 





n 



cn 



X 


no 

rH 

4-1 

in 





<n 



cn 



X 

a 

c 

cn X) 

03 



< 


cn 


X 

cn 


X 

S3 

2 

0J 

c 

3 

14 



Eh 


cn 


*0 

cn 


CO 

•k 

CD 


•H 

in 




X 




X 



X 

CQ 

CC 

4C 

in \ 

14 


X 

CJ 

X 

< 

X 

CD 

< 

X 

CJ 



4c 


in 

O 












HC 

03 

T5 

4-1 


X 

X 








M 

a, 


34 

no 

03 


X 

X 

X 

M 

X 

CN 

X 

X 

CN 

> 2 

+ 

03 

03 X 

CN 

X < 

o 

> 

2 

rr 

> 

V 

z 

2 

*3 




3 

X 

X 

CD 

X 

2 

CJ 

n 

2 

CJ X 



4c 

03 

-C 

E 












TD 03 

TJ 'D E O 

0J T3 S) 

03 CD CD X 

4-1 03 0 

*-Q TJ >i 

C <T> /N JD 

O CT> U I 

T3 CT* O >, 0 

0\ 03 U 'U 

- 03 -H 

W 4J C > 

0 o 3 *h *h 

Z X X Q 

■K 4c 4« 4< 4t 


X si < 
- Si (N - 


cn w 

a -h -u 

O T> -h 

O u cn u 

0, 4-> u -h <D 

oo C (D T3 T3 

I) C A) T3 *n 

rQ -H -H U <N O 

•H 03 4-» O 

> E O I 4-> 2 

•h oj a -h d o 

a a o x a, _a 

4c « 4c -K -tt 4c 
S3 


2 

X 


<D S3 

u - 

o 

44 u 
0 -H 

.Q 

(13 

03 -* 
C 03 
O Z 
* * 


c 

a 

o 

CJ 


03 

4-3 

3 

o n. 

W 03 03 U S3 

- x 4J a 

X 03 a 03 4-> 

I CD -H 

'O C 0) 4-1 

C O X 03 w 

03 Z X CJ M 

■K 4c 4c 4C 4C 


1 c 
o 

O r O 

- 0) 

o a> 

2 >4 


> w > x a i 
O 3 CJ O 2 CJ 1 
Z W O Z h Q 




CJ 

Q 



a 



S3 



+ 




< 


< 



X 

X 

If) 

O 


CD 

o 



- 



- 

< 



Eh 

X 

Eh 





» 







* 


S3 ro 

S3 




X 

k. 

X 



a 

< 

X 

Eh 

X 

< 

E-* 

X 


2 

2 x X 

“ 

X 2 


X 

CJ 

H 

A 

L 

H 

X 

X 





X 



X 









X 

X 





> 

> 

X 

X 

X 

> 

X 

X 

Eh 

X 

X 

x cj 

X 

X > Eh 

U) 

X 

X > < x 

CN 

X 

Eh 

o 

o 

X 

< 

2 

O 

< 

o 

M > 

2 

X 2 

a 

2 O 

X 

CN X 

< o o x cj 

2 

o 

X 

2 

2 

X 

CJ 

M 2 

CD 

Oa 


2 

X 

If) i“D 

< 

x E 

X 

X X 

CD 

x 2 o a rD 

X X 


in 

0 

JZ 

Eh 


C/) 

a, 

Q 


4C4C4C-k4c4C4cCJ 


rH <C 

If) Eh 

□ H 

uc^o- 


a 

o 

£ no 

Eh X 


CO 

2 

Q 


S3 
S3 
X Q 

x m 
m on 
S3 CD 

ro m 
x x 

rH «H 
S3 S3 




X 




X 



X 








X 


X 



CJ 

X 


X 






X 







X 


X 





S3 




S3 



SI 








S3 


S3 



CD 

Si 


S3 






S3 







S3 


S3 





in 




CJ 

X 


CD 




00 




00 


X 



CD 

X 


X 



X 


< a 

< 






m 


a 





X 


CN 


cn 

S3 


<n 




S3 



*n 

< 


cn 



ro 

X 


X 



CN 


S3 

X 

ro 






X 


cn 



00 

in 

a 

X 

X 

CJ CN 

X 

a ^ 

X 

cn 

ro 

X 

cn 

CD *45 

< r- ro 

a <n 

CD 

a 

X 

Q ro 

cn 

a 

X 

cn 

m 

N- 

in 

CM 

m 

ro 

p- 

cn 

cn 

in 

a x cj in 

X 

CN 

X 

cn 

CJ 

X 

CJ 

X 

ro 

X 

CJ 

ro 

X 

CJ 

X 

CD CN 

S3 

CN 

r^- 

a 

Q m cn 

S3 

CD 

■N* 

r- 

CN 

CD CN 

r- 

CJ 

X 

CD ro 

ro 

a 

a 

U CN 

p» 

CD 

CJ 

X 

(J X P^ X 

CN 

CJ 

X 

CJ 

00 

cn 

< 

a 

X 

si 

X 


m 


< 

X 

CD 

a 

X 

S3 

X 

ro in 

00 

cn 

CD 

a 

X 

X *3* 

m 

in 

cn 

< 

X 

a 

X 

Si 

ro 

in 

in 

r-~ 

CO 

cn 

< Q X X 

S3 

X 

N’ 

m 

00 

00 

CO 

00 

00 

cn 

cn 

cn 

cn 

<n 

cn 

cn 

<n 

cn 

<n 

< 

< 

< < < 

< 

< 

< 

< 

< 

X X 

X 

X 

CQ 

X 

X 

X 

X 

CD 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ CJ CJ CJ 

a 

a 

a 

a 

r*H 

X 

X 

X 

X 

H 

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 

S3 

S3 

S3 

S3 

S3 

SI 

S3 

S3 

Si 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 S3 S3 

S3 

S3 

S3 

S3 

Sl 

Si S3 

S3 

S3 

S3 

S3 

S3 

S3 

SI 

S3 

S3 

Si 

S3 

S3 

Si 

S3 

S3 S3 S3 S3 

S3 

SI 

Si 

S3 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 15 


341 



0 

C VJ 


cj 



O 

4-1 


O 

4-1 

CO 




4-) 

O 








































u 


0 

u 


rH 




0 X 










































c 

CO 






CM O 

















































•H l_| 


S3 

CJ 

m 

CJ 


CN 

in 


CN 

CQ 

in 

CN 

< 

00 

S3 

S3 

N’ 

S3 

cn 

rH 

X 

rQ 

S3 

S3 


<J\ 

CJ 

< 


a 

in 

CTi 

rH 

1 —1 

S3 

CJ 

rH 











4-1 



ro 


CJ 


CJ 

CQ 

CQ 


a 

CJ 

CJ 

CJ 

a 

S3 

S3 

CN 

CN 

c; 

S3 

X 

CJ 

rQ 

S3 


CN 




CJ 

a 



X 


X 



CO 


TJ 



cj 




Q* 0 



CN 

CQ 

S3 

r- 

00 

S3 

S3 

Cl, 


in 

m 

rQ 

cti 


S3 

CN 

X 

X 

CJ 

rH 

S3 

X 

vO 



rH 

vD 

CJ 

CQ 

S3 

S3 

X 




a 


0 


TJ 

a 


u 




(0 X 


ro 

CN 

CN 

S3 

CN 

n- 

S3 

S3 

p» 

S3 

a 

S3 

CN 

CQ 

00 

m 

CJ 

rQ 

X 

in 

S3 

S3 

X 

O 




Q 




S3 

X 






Eh 


< 

x 










is 

rH 

CQ 

S3 

X 

S3 

CQ 

m 

cti 

CTi 

CQ 

cti 

a 

rQ 

S3 

S3 

ID 

< 

CN 

S3 

rH 

CT> 

rH 

X 

a 

rr 

rH 

rH 

S3 

VD 

< 

CQ 

a 

CN 

X 













a 

cq 

CN 

,_, 

CJ 

S 

r-" 




CJ 


X 


CJ 

CJ 

S3 

S3 

S3 

CJ 

in 

m 

X 

U 

X 





X 

S3 

rH 

CJ 


CJ 















CQ 


ID 


S3 

VO 

CN 

Q 


< 



cr\ 

CQ 

ai 

rH 

X 

r—H 

rH 


CN 

a 

m 

X 

rH 


CJ 

X 

rH 

rH 

rH 

CTi 



S3 


S3 








ro 


. 



ro 

ro 

CQ 

ID 

S3 

CJ 

CJ 

CJ 

S3 

CJ 

rH 

S3 


rQ 

CJ 

CQ 

< 

CO 

a 

S3 

a 

CJ 

X 

X 

O 

CN 

TT 

CN 

S3 

S3 

CN 

CN 

X 

CJ 

S3 


S3 

CJ 







\ 


4-1 















































X 


XI 


Q 

CJ 



S3 

S3 

Q 

S3 

rQ 

S3 


CN 

CQ 

CN 


CTi 

rH 

a 

a 

S3 

S3 

a 

rH 


VD 

in 

CTl 

rH 

VD 

in 

m 

in 

CTi 

S3 

r^* 

VO 

CQ 

Q* 

rH 







CQ 


o 


Z 

CJ 

CN 

CQ 

ID 

in 

CJ 

S3 

CN 

CTi 

00 


C ) 

S3 

S3 

CJ 

S3 

CJ 

CJ 

S3 

CQ 

r- 

S3 

X 

S3 

X 

CJ 

S3 

CQ 

X 

X 

X 

rH 

0 

X 

S3 

CJ 



«<r 



CQ 

CQ 


< 


u 


►H 

S3 

CJ 

ID 

S3 

a 

in 

CQ 

rQ 

< 

ID 

cr 

< 

CQ 

r* 


S3 

S3 

S3 

rQ 

rQ 

cr> 

CN 

CJ 

S3 

a 

rH 

X 

CTi 

a 

a 


CTi 

CJ 


rH 

rH 

X 


O 

H 


a, 

?: 


< Eh 

* 



Z 

S3 

CJ 

O 

S3 

0 

CJ 

< 

CN 

CJ 

CQ 

r- 

CJ 

rQ 

rH 

0 

O 

CN 

S3 

in 

CJ 

CN 

VO 

CJ 

S3 

CJ 

X 

CTi 

CJ 

CJ 

CJ 

S3 

CN 

Q 


X 

X 


O 

Q - 

a 

- 

Q - 

a 

— 

Q 1 

* 

CD 









































z Fh 

z 

+ 

Z 1 

r 

< 

Z * 

-K 

X 


CQ 

rH 

< 

CJ 

< 

Cl, 

s 

Q 


CN 

S3 

CO 

CQ 

rH 

rH 

Cl, 

CN 

X 

ID 

a 

S3 

X 

CN 

X 

S3 

m 

rH 

CN 

rH 

in 

m 

rH 

CTi 

0 

rH 

CN 

rH 

S3 

rH 

cj - 

cj 

- 

u - 

cj 


CJ ^ 


X 

* 

X 

CN 

CQ 

CJ 

CN 

Cl, 

S3 

CJ 

CQ 

CQ 

S3 

CJ 

CQ 

CN 

CN 

VO 

CJ 

S3 

S3 

CJ 

S3 

rH 

CJ 

CQ 

in 

X 


CJ 

X 

X 

X 

X 

CN 

CJ 


S3 

CJ 

S3 

rr 








Eh 



Eh 

00 

CN 

S3 

< 



in 


S3 



cti 

< 


ID 

r* 

m 

rQ 

CN 

PQ 

X 

CT* 

< 

a 


CJ 

a 

rH 



Q 

a 

G3 

X 


S3 

Q* 

rH 








M 

0 



CJ 

CN 

S3 

CJ 

S' 

CN 

CQ 

O 

O 

a 

CQ 

r-' 

S3 

CJ 

VO 

X 

CJ 

X 

1 —1 

m 

X 

CJ 

CN 

CJ 

CJ 

CT> 

G3 

S3 

CJ 

S3 

CJ 

in 

S3 

X 

CQ 

S3 

CN 

O 







D 

z 

CM 

Eh X Q 








































2 m 2 

x 

^ CQ 

2 CQ 5 O 

HH 

•H 

CQ O Z 

X 







































a a 

Q 

Q 

Q O 

Q 

Q 

a x 


rH 

X CQ CQ 

0 

cq 

O 


S3 

00 

CN 

00 

O’ 



< 

Cl, 

ID 

S3 

PQ 

00 

X 

X 

X 

a 

< 

rH 

in 

S3 

S3 



X 

CTi 

S3 

CJ 

T 

1 —1 

a 

CN 


CTi 

X 








4c 

•H 



Q 


CN 


in 

CJ 

CJ 

CM 

CN 




S3 


CN 

r- 


X 

rH 

CJ 

CN 

S3 

X 

S3 

S3 

U 


X 

CJ 


CJ 

in 

X 

CJ 

CJ 



CJ 








■K 

4-> 


CQ 

X 


X 

Cxi 

s 



< 


ID 

rQ 


in 

a 

CQ 

S3 

ID 

rQ 

CN 

CO 

m 

ID 

CJ 

iD 

S3 

u 


a 

r- 

< 

CJ 


O 


X 

a 

rH 

a 







co 

4t 

•H 


a 

< 

O' 

rH 

< 

in 

00 

CQ 

Cl, 

Q 

O' 

CN 

S3 

CJ 

CJ 

r- 

S3 

rQ 

CN 

rH 

CJ 

X 

X 

r-" 

S3 


X 


CJ 

r^* 

CJ 


VD 

CJ 

CJ 

CN 

o 

S3 

CN 







CQ 


c 

Eh Eh 

0 













































X 


►H 

►H CQ 

CJ 

CN 


CQ 

Q 

CJ 

ID 

r" 


cti 

Q 

CQ 


ct 

CN 




a 

X 

CTi 

r-l 

rH 

CJ 

S3 

CQ 

X 

rH 

CTi 


CTi 

rH 

rH 

CQ 

CQ 

in 

m 

0 

rH 







CQ 



Z < 


S3 

CN 

X 

CJ 

CJ 

CQ 

CQ 

X 

rQ 

CJ 

O’ 


CJ 

CJ 

CJ 

CM 

O 

rQ 

rH 

CN 

S3 

X 

CJ 

S3 

CJ 

S3 

S3 

r- 


CJ 

CN 


X 



CJ 

CQ 

S3 







H 4c 

4l * 

-H 4C 

M X 

Eh 

CJ 

S3 

rH 

Cl, 

s 

S3 

CTi 

CJ 

CQ 

S3 

S3 




Cl, 

< 

CO 

iD 

X 

X 

S3 

X 

CJ 

S3 

X 

X 


CQ 

< 

rH 

CN 


rH 

X 

CJ 














CJ 

CQ 

in 

S3 

CQ 


S3 

S3 

CJ 

r- 

X 

S3 

0 

O’ 

a 

S3 

CQ 

u 

0 

rQ 

rH 

X 


rH 

CQ 

m 

X 

rQ 

< 

CN 

CQ 

X 

S3 

X 

a 

CQ 


X 

CN 








< 



Q 

n 

X 

Q 

CQ 

CJ 

CQ 


a 

rQ 

Cl 

Cl, 

in 






Q 

CN 

rQ 

rH 

CT\ 

rQ 

X 

< 

a 

VD 

rH 

< 

rH 

vo 

rH 

CQ 

CN 

CTi 

X 

CQ 

CQ 

S3 

X 







S3 



m 

O 

CJ 

S3 

CJ 

O 

CN 

a 

CQ 

rQ 

rQ 

< 

< 


CJ 

CN 

a 

S3 

CJ 

CN 

S3 


CJ 

X 

CN 

CJ 

S3 


a 

O 

CJ 

S3 


a 

rH 


X 










S3 



CN 


S3 

CN 

CQ 

S3 



r* 

a 

ID 

CN 

rQ 

CJ 



S3 

ID 

S3 

rH 

C T\ 

S3 


CN 

m 

rH 

S3 

CJ 



rH 

a 


CJ 

X 


S3 



1 —1 







S3 



S3 


CN 

CJ 

CQ 

IS 

S 

S3 

CQ 

Cl, 

CQ 

CJ 

CJ 

CJ 

S3 

CN 

rQ 

CJ 

S3 

r- 

CN 

S3 

S3 

CN 

X 

S3 

S3 

CT\ 

vo 

X 

S3 

CTi 

CJ 

X 


X 


CJ 

X 

S3 












S3 

CJ 

CN 

CJ 

•S3 






X 





Q 

X 

rH 

CN 


vD 

X 

S3 

X 

S3 

CN 

VD 

Q 

a 

CN 

0 

X 

Si 

CQ 

CQ 

X 


CTi 












S3 

X 

CN 

CN 

in 

00 

S3 


r~- 

CQ 

O* 


S3 

S3 

a 

CJ 


CJ 

CJ 

00 


ID 

S3 


m 

CJ 

a 

CJ 

X 

CJ 

S3 

rH 


CQ 


X 















CQ 

CJ 

CN 

a 

a 

m 


ct\ 

CJ 



CJ\ 

ID 

cr» 

m 

a 

S3 

CTl 

a 

a 

a 

S3 

< 

Q 

CJ 

CJ 

CJ 

CN 

X 

rH 

X 







rH 

rH 


rH 

rH 


rH 





cq 

CN 

CJ 

CJ 

CJ 

CJ 

id 

CN 

CJ 

r- 

S3 

CN 

CQ 

CQ 

r- 

X 

CJ 

S3 

X 

CJ 

CJ 

CN 

m 

CJ 

CJ 

X 

r^* 

CJ 

a 

CN 

CO 


a 

ro 

CJ 



m 

S3 

S3 


S3 

S3 


S3 











































Q O' 

CTi 

CQ CO Q 

CO 

rH 




CT> 








































CQ S3 

i—1 

cq 

o* VO 


<T> 

< 



u 


S3 

S3 

S3 


S3 

S3 





S3 

IS 

S3 



S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

IS 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

o’ m 

in 

m 

m in 

m 

in 

in 



m 




CN 

CQ 


m 





< 

X 


Q 

CQ 

Cl. 

S3 

rH 

CN 

cn 

m 

vO 


00 

CTi 

< X 

cj a 

X 

X 


rH 



Q* 

in 

(N CN 

CN 

CN 

CN CN 

CN 

CN 

CN 



CN 


S3 

S3 

S3 

S3 

S 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

rH 

rH 

,—1 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 







S3 S3 

S3 

S3 

S3 S3 

S3 

S3 

S3 



S3 


S3 

S3 

S3 

S3 

s 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

cs 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 


TJ 




fO 


x: 



0 

3 

TJ 


0 

c 


TJ 












0 

U • 




0 


4-1 



4-1 

rH 

c 


3 

0 


c 












Vj 

ro in 




a 


0 



ro 

ro 

ro 


rH 



ro 




cn 








fO 

A 0 

C 



0 



a> 


In 

> 

G 


CO 

0 


G 


X 


c 









U 4-1 

•H 



lH 

W 

>1 

□ 

n* 

0 


G 


> 

cn 


6 




0 







TJ 

A 

0 U 




--- 

fO 

XJ 

rH 

0 

4-1 

a 0 

0 




O 


0 


•H 







0 

U 

TJ A (0 

cn 






<0 

4-1 

•iH 

0 

CJ 

4-1 

W 


S3 

CJ 


In 


4-1 







> 

■H 

0 4-1 u 

0 



O 

W 

HD • 

> 

3 


a 


ro 

ro 

S3 




O 


ro 







U 

X 

> ro 

•H 



JC 

0 

0 X 


U 



Q 4 u 

A 


cn 

0, 


4-1 


lH 







0 

2 

U 44 A 

1-1 


_ __ 

4-1 

G 

rH CO 

4-1 

0 

w 

- 

•H 

0 


4-1 

- 

•H 


cn 


0 







cn 


0 O CJ 

4-1 


TJ 


•rH 

rH 4-1 

0 

X 

0 

0 

-X 

4-1 

X 

O 

4-1 

.X 


0 


4-1 







0 

•» 

cn 

c 


C 

4—1 

4-J 

CO C 

CJ 

X 

>H 

z 

X 

HH 

X 

z 

hH 

X 


X 


HH 







u 

cn 

0 • 0 

0 


CO 

rO 


CJ >1 

* 

•K 

* 

-K 

-K 

* 

* 

♦ 

* 

* 


■K 


* 








4J 

U 4, A 



e 

0 *4H 

(/) 





















rH 

•H 

TJ 4-» 

44 


e 

a 0 

0 





















rH 

cn x tj 

O 


0 

0 


JD 0 





















ro 

•H 

CJ fO c/7 



CJ 

u 

U 

G 






















TJ 

ro 0 

U 




0 

>1 ro 





















44 


X 0 rH 

0 


n 

rH 

A 

ca W 





















0 

4-1 

•C TJ 

X 

* 

0 

rH 

G 

G 












X 










a 

A C 

G 

* 

4-1 

•H 

3 

0 












X 









0 

0 

• ro 

□ 

* 

CO 

2 

C 

X A 

X 


X 









X 







X 

* 

rH 

0 

— >>A 

c 


0 



X 4-1 

T. 

X 

X 

2 

a 


X 

rH 


S3 

Q S3 





a 


X 

4c 

X 

X 

TJ X 


u 

a 

TD 

>1 

Eh 

3 


Eh 

CO 

s 


- 

Eh 



Z 

- 





z 


Eh 

41 

ro 

0 

0 4-1 

Cl 

0 

0 

C 

C 

HH 44 

2 

A 

A 

►H 

X 

CJ 


A 

L 

H 

M 

X 

X 

CJ 

X 



X 

X 

CJ X 

X 

IH 


4-1 

— 

> TJ 10 

X 

A 

u 

CO 

CO • 

O 



















X 



u 0 JC 

4-1 

e 

> —• 

E 


>1 

X 





X 





X 



X 

X 

X 

X 



X 

ro 

cn 

0 2 4-1 


3 

,_, 

E 

r^ 0 

u 0) 

X 

> < 


X 

X 

■jc 

> < X 

to 

X 

VH 

X 

M 

Eh X 

X 

X 

X X 

X 

X 

< 


u 

cn 0 

cn 

c 

D 

0 TJ -H 

4-1 U 

< 

0 2 

z 

0 



OKU 

Z O 

> 

< > X 

Eh 

3 

3 

< 0 

0 

z 

Eh 

cn 

0 

0 rH 0 

•H 


0 

O 

C 44 

C 0 

CJ 

son 

X 

n 

X 

z 0 a 

n 

X 

z 

CJ*Z 


X 

X 

X 

CJ X 

X 

n 


•H 

4-1 

U rH C 


■K 

A 


ro *H 

0 rH 



















4t 


CJ 

O H 

CN 

■K 

e 

c/) 

G CJ 

TJ 




















4t 

cn 

rO 

O ‘H 4J 

X 

■K 

3 

•H 

G 0 

0 C 

cn 



















4C 

•H 

u 

cn 3 

X 


C 

x: 

0 

.C CO 

S3 





X 















x: 

A 

rH cn 0 

X 



Eh 

0 w 

Eh jC 

a 





X 








rH 







Eh 

CJ 

«JH U 

Eh 





s 





Eh 








Eh 











* M 

* * 

* 


■fc * * 

CJ 





M 








►H 





■K 

4* 4c 

4c 

4c 

4C 4C 4c 4c 

4c 


C 

o 


CO 

u 

0 0 

a c c 

O -H -H 

i 4-1 cn 

000 
Z a X 

M * -K 


0 

u 

o 

x: 

u 



A 

G 

0 


U 

TJ 

TJ 

O 

C 

C 

X 

ro 

X 

< 

X 

4C 

4c 

4« 


X 

X 

Eh 

CJ 


Eh 

CJ 

X Q 

X 

X 

X 

X 

- a - a - 

a 

- X 

X 

X 

z a z ^ 

z 

. hH 

a 

►H 

- 0 - CJ - 

CJ 

- a 

ci» 

a 


032cn2ca2cQ2cD2ffl 

QQQQQQQQQQQ 


X 

CQ 

< 

Eh 


CTi 

cj 

ID 
i—I 
CM 
(S3 


rH 



CN 


S3 





CN 



S3 






S3 



CN 

S3 



S3 


S3 





S3 



S3 






S3 



S3 

X 



PQ 


rQ 





rQ 


S3 

CQ 

X 





CQ 



CQ 

X 



CN 


in 





CQ 


S3 

in 

X 





in 



CN 

Q 

CO 

n- 

CN 

rH 

CQ 

CQ 

CJ 

in 

X 

CN 

rH 

'O 

a 

vo 

CTi 

CQ 

in 

m 

a 

rH 

rH 

CQ 

U 


X 

CJ 

X 

CJ 

X 

r- 

X 

CN 

CJ 

X 

S3 

CJ 

122 

CJ 

X 

X 

CJ 

CJ 

CJ 

X 

CJ 

r** 

< 

X 

U 

X 

S3 

CQ 

Q* 

in 

VD 


< 

X 

a 

S3 

<N 

CQ 

T 

in 

vo 

CTi 

< 

X 

rH 

rH 

rH 

rH 

rH 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

S3 

C3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

IS 

S3 

S3 

S3 

S3 

S3 

S3 

S3 



S3 


S3 


rH 


S3 


S3 



S3 


S3 


S3 


S3 


S3 


S3 

CJ 

N* 

a 

CO 

S3 

CTi 

O’ 

X 

O’ 

X 

CN 

X 

O* 

X 

CN 

CQ 

CN 

CN 

r- 

CN 

CQ 

X 

X 

rH 

CN 

O’ 

in 

r" 

CO 

< 

X 

a 

CQ 

<Q 

O’ 

O' 

O’ 

O' 

O’ 

O' 

O’ 

O' 

O' 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

CN 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


342 







c 

0 


0 











0 

.C 


4-J 


4-J 









in 

4-J 

0 

3 


•4 


4-3 









a 

O 


-O 

4-3 

o 







in 

0 

4-3 

0 

0 


•H 

0 X 







— 

4-J 


X 

4J 

u 


N o 





4-» 

'O 

4-> 

D 

0 

0 

3 

O 

4-J 

•H U 

CN 

VO 

CN 


•H 

c 

o 

CJ 

4J 

1 

O 

in 

0 

4-1 

S3 

CJ 

S3 

in 


0 

XI 

0 

£3 

c 

0 

c 

m 

Q, 0 

CJ 

ro 

CO 

0 

o 

E 

o 

X 

O 

o 

X 

0 

0 

0 X 


a 

a 

>i 

Q 

E 

M 

0 

0 

2 

CJ 

CO 

a 

ra 4-j 




4c 

4c 

o 



X 

4c 

4c 

4c 

4c 

4c 4c 

ro 

m 

rH 



o 

0 

c 

0 






CJ 

Cl, 

S3 


'5 

CO 

On <N 


a, H Eh 
o X X 
Q.O a 


c 

0 

E 

a 

o 

cj 

c 

0 

a 


a 

X . 


* — a, 


x: > 

H i 


A TJ 
C C 
0 0 
6 E 
E E 
O O 
CJ CJ 

c a; 
ai in 

A i—i 
A 0 


H 
X 

X 3 X 
W (N S CN Cn 


H Eh X 
N2Z32 
^ H < O ^ 


CO 

a 


4J 

o 

10 

o 


0 

JC 

A 

0 

N 


< CN 


H Eh Eh 3 Q 
> D U 02 

z o x co x 


4c4c4«4c4c4c4c4c4<4c(J 


* * * * * 


►H 

2 


Eh 

CO 

< 

X 


>4 

Q 

O 

a 

x 

x 

H 


X 

O 

x 

Q 

O 

CJ 

Eh 

CJ 

£0 

n 


< 00 CJ 
is CJ LD 


x < < ctv 
rO H (J CJ 
CN X ON CN 
IS CO CJ Q 

CQ CN CN ro 
CO S Q Q 

ro CJ ro <-h 
in r* q q 


h n H U] 
CQ CJ X ro 

CN CJ fN H 
Q Q Q '3 

< ay a 
r^- ro r-' r" 
Cj cn < no 
S) CJ CJ 













CJ 

CQ 




CN 

CN 

CJ 

a 

CN 












CTv 

O 




■'T 

S3 


x 

S3 












CN 


CN 

Q 


CN 

CN 

no 

< 

ro 












S3 


S3 

Cl, 


S3 

m 

CJ 

S3 

a 















■«T 

Cl, 

CQ 

CN 

CJ 

CJ 

i-4 




H 










CT» 

CN 

S3 

VO 

O 

H 

X 

3 




S3 




S3 






a 

«-H 

O 

VO 

S3 

X 

< 

•O 


CN 


CJ 

CN 

r—1 

vN 

S3 

H 

CN 




u 

CN 

S3 


r"~ 

ro 

a 

CJ 


S 


in 

S3 

S 

S3 

r* 

S3 

S3 













no 

(T» 

< 

CO 

VO 

no 

no 

CJ 

ro 

CTv 











Cl, 

a 

CJ 

CJ 

Q 

CJ 

a 

CJ 

ro 

a 

u 



•• 

*• 

•• 

*• 

•• 

•• 

•• 

•• 


co 

< 

CQ 

CJ 

S3 

CN 

N* 


CTv 

CQ 



no 

S3 

r** 

U 

S3 

S3 

S3 

S3 


00 

00 

CO 

CO 

CT> 

CTv 

CTv 

CTv 

CTv 

<Tv 



S3 


c; 

lTO 

VO 


CO 

CTv 

CN 

CN 

CN 

CN. 

CN 

CN 

CN 

CN 

CN 

CN 

CN 



S3 

S3 

S3 

CN 

CN 

CN 

(N 

CN 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 



S3 

S3 

S3 

S3 

S3 

S3 

S3 

SI 


4C 44 



4t 


O 

X 



Q3 

C 





4c 



00 



-4-J 

o 





4C 


in 




•«4 

■H 





4C 


O TO 

0 


o 

SZ 

4-» 


C 



4C 


•H C 

A 


4-> 

? 

•<4 


o 



4C 


TJ 3 

4-J 

E 

0 


in 


•H 



4C 


*»H O 


O 


H 

o 


4J 



4C 


> 3-< 

VM 

O 

A 

o 

a, 


u 



4C 


U» 

O 

u 

CN 




0 



K 


0 >i 



a 

X 

4-J 


u 



4C 


CO 

x . 

0 


u 

o 


■H 



4C 


T5 rH 

CN X 

X 

l-l 

0 

A 


T) 



4c 


c a 

X 

0 

o 

, 1 

O 





4t 


fO 

4-J X 

2 

44 

X 

X 


cO 



4c 


0 

in co 

4c 

4C 

4c 

4c 


4c 


s 

4C 

>1 

A -C 

03 CN 








>H 

4C 

TJ 

M 4-J 

rH < 








O 

4C 

O 

0 

Q 








o 

4C 

CQ 

o in 

0 








CQ 

4C 


X 0 

-C 0 









4C 

in 


Eh C 








X 

4C 

- 

X A 

4-3 

X 


X 

X 

X 

X 

X 

CJ 

4C 

4-J 

X 0 


CTv 

X 

X 

CJ 

a 

X 

X 

X 

4c 

o 

x in 

• >. 

X 

CJ 

X 

X 

X 

X 

X 

Eh 

4< 

A 

CN 3 

4-3 A 

r- 

< 

r- 

r-" 

C" 


r- 

O 

4c 

O 

rN 

o 

rH 

E4 

H 

H 

rH 

H 

H 

S5 

4c 

X 

< 0 

A T5 

S3 

r n 

O 

a 

3 

3 

3 

< 

4c 


a m 

O 0 








z 

4c 

u 

03 

3-j in 









4C 

0 

QJ 

0 

3 

3 

3 

3 

3 

3 

3 

Cl, 

4C 

A 

-C >, 

u 

o» o o 

0 a o o 

o 

4C 

4-3 

4J 03 

0 in 

X 

X 

X 

X 

X 

X 

X 


4c 

O 

rH 

(~* -H 








C 0 

4C 

c 

0 D, 

4-3 








2 

4C 

< 

u in 

° ^ 

x 







f-4 

4C 


0 -H 

c ^ 

CJ 

a 

2 





Ch 

4C 


X X 

0 X 

< 

X 

X 





in 

4c 




04 

X 

o 



X 

X 

H 

4C 

4C 4C 4C 

4C 4C 

4c 4c 4c 

CO 

CO 

X 

X 

>4 

a 

Q 

XI 












X 












X 





CTv 

<T> 

X 

CJ 

Q X 

X 

X3 





X 

X 

X 

X 

X 

X 

X 

X 






r> 

r» 


r* 


r^ 

r 





rH 

H 

H 

H 

H 

H 

H 


CJ 

CO 

CO 

< 



4c 






a 

























O 















4c 






o 

C 
















c 








A 





c 










4c 






H 

o 


C 










A 




o 


c 







X 




o 


c 








4c 



• 



VM 

•rH 


o 



c 




in 



o 




•rH 


o 






in 

O 




•H 


o 








4C 



>i 



1 

4J 


•rH 



o 




0 



-O 




4-J 


•H 


4-J 




A 

-Q 




X 


•H 

0 



in 




4C 



T3 



a 

u 


A 



•H 




•H 



o 




0 


4-> 


cn 




c 

O 




0 


X 

X 



M 




4C 


CN 

O 

aorj 

>. 

•H 

M 0 


U 



4-3 


4-3 


U 

4c 


u 




4-3 


0 


0 




0 

M 




X 


0 

D 



o 




4c 



A 

O 0 

’A 

H 

O 3H 

U 

0 



0 


•rH 


4-1 

4c 




'O 


o 


4-J 


4-> 




6 



T> 


o 


X 

CJ 



X 




4C 




H 0 

0 

lM 

4-3 -H 

O 

M 



U 


E 


c 

4c 


A 


M 


M 


o 






c 



M 


M 


O 

0 

0 


O 




4c 


4J 

in 

VM U 

0 


o r a 

4-J 

•rH 



o 


•rH 


0 



M 


0 




M 


M 




o 

M 


0 




M 

X 

X 


E 

(N 



4c 


H 

- 

1 

M 

M 

E 

o 

TJ 



H 


H 



0 


0 


5 


4-J 




o 




O 



S 


X 



0 

D 



>1 



4c 


o 

4-» 

CU U 


O 

M 

l~ 








VM 

H 


'£ 


X 


A 


4-» 


in 





;* 


-v: 


A 


X 

1 

CJ 


A 

3 



4c 


a, o 

•H O 

M 

cn 

4-3 O 


M 







O 

X) 


M 


u 




VM 


c 







CJ 


cn 


X 

C 

0 


A 

0 



4c 



XI 

H 4-J 

O 

c 

A A 

4-J 

O 



0 


0 



0 


O 


0 


•rH 


0 


0 




0 

o 


0 


•H 


0 

o 

X 


o 

0 

O 


4c 


4J 

O 

H o 

4-> 

0 

cn o 

VM 

4-3 



Z 


Z 



A 


X 


X 


X 


X 


X 




X 

X 


X 


X 


X 

z 

X 


X 


z 


4C 


0 

u 

E 

o 

in 

•H E 

0 

o 



4c 


4< 


4c 



4c 


4c 


4c 


4c 


4c 




o 

4c 


4c 


4c 



4C 

4c 


4c 

4C 

4c 


4c 


O. 


M 

E 


M 

H 

t 








7D 













■K 

0 














S 

4C 


J-J 

0 

O •*-* 


4-3 

4-J 























4c 

M 














>H 

4c 


0 

A 

in x: 

4-J 

0 

A, A 

A A 








0 












ro 

4c 

0 














Q 

4c 


o 

4J 

C rpU-i 

cn 

0 cn 

0 

VM 








E 












\ 


A 














O 

4c 

>i 



0 -H 

0 

0 

A -H 

A 

0 





H 



€ 













X 

CJ 














X 

4c 

"O 

T3 

o 

CO X 

X 

X 

X X 

in 

X 





Z 


CN 

O 












X 

















4C 

o 

C 

4-J 








X 


X 

X 

X 

in 

CJ 

X 











X 


0 

rc 


wl* 


X 


X 







X 

4c 

A 

0 


• • •• 

• • 

•• 

• « •• 

•• 

• • 

4c 

X 


3 

X 

r** 

X 


CJ 











< 



< 


X 


X 


< 







X 

4C 



3 

r-" vo 


r- 

vo in 

■<y 

ro 

4c 

a 

Eh r*- 

in 

CJ 

X 

0 

in 


X 


X 


X 


X 


X 

Eh 

- 

cn x 

3 

Ch 

H 

Eh 3 

Eh 

H 




X 

X 


H 

4c 

in 

CN 

0 







4c 

3 

VH 

3 

CO 

3 

H 

A 

CN 

- 

a 

- 

a 

- 

a 

- 

a 


a 

1 

X 

c o 



3 

H 

3 

M 

3 


s 


< 

< 

H 

s 

4c 

- 


O 

4-J 4-3 

4-J 

4-3 

4-J 4-J 

4-J 

4-> 


o 

Z 

3 


3 

•» 

A 

3 


■r 

X 

7T 

X 


X 


X 

S 4c 


H .0 


o 

** 

o 

*» 

O 



X 






4C 

4-3 


0 

•rH -H 

•H 

•H 

•H *H 

•rH 

•H 

cn 

3 

H 

3 

X 

3 

X 


3 

- 

CJ 


6 


CJ 

- 

CJ 


CJ 

— 


in o 

< 

o 

< 

U 

c a 

< 


X 

CN 

3 

3 

Q 

X 

4c 

o 

AJ 

U-l 

X X 

X 

X 

X X 

X 

X 

0 







A 













X 

M 














O 

4c 

.Q 

U 

i_, 







A 


X 





C 














0 









X 






4c 

O 

O 

0 

«. •> 

«. 


«. * 



u 

O 

X o 

H 

O M 

0 

n 











3 

* 



X 

3H 

X 

3H 

X 

H 


X 



H 


C9 

4C 

u 

a.AJ 

CN CN 

CN 

CN 

CN CN 

CN CN 

X 

X 

< 

X 

X 

X > 

4-» 

X 

X 


X 

5 X 2 

X 2 

X 

£ O' 

X 

0 A 

> 


> 

z 

> 

z 

> 

3 

3 

Z 

z 

X 

CN 


4c 



C 







0 

O 

ooxo 

2 

X 

o 

a 

a 

a 

a a a 

a 

a 

Q 

Q X 


A 




o 

£ 

3 


X 

X 

M 

< 

CJ 3 

fH 

4c 

0 

4-3 

•rH 



H Eh Eh 

H 

Eh 

X 







X 













4C 

0 














Fh 

4c 

A 

0 


z z 

z 

3 

3 3 

3 

3 





















4c 

in 0 














CO 

4C 

Eh 

a 0 

H H 

H o o o o 

o 

4c 







4c 












CN 

4c 

0 > 














VH 

4c 


c 

V-l 







4C 







4c 












X 


A O 

X 


X 


X 


X Eh 






X 

4C 


H 

0 







4c 







4c 












X 


CH E 

a 


Q 


Q 


Q 

H 


H 





4c 





























X 





Z 


S 


X 

o 


VH 




X 

4c 4c 

4c 4c 

4c 

4C 

4C 4c 

4C 

4c 

41 4c 

4C 

4c 4c 

4c 4C 






4C 

4c 4C 












Eh 4* 

4c 4c 

4t 4C 4C 

6 


CJ 


u 


cj a 


Q 





CJ 

XI 

a 

CJ 

co 

co 

< 


X 

3 


Q 

CJ 


Q 

X 


CN 


3 


no no s no 
3 Q r' Q U CJ 
3 Q 3 3 3 Q 
3 3 3 3 (S3 S3 


vocQCNs)CNuoCJ<roX 
vo -cr r- m i-- -<r i loco 

CJCJQX3iNroinvoco<n 
in tn in imo vo vo vo ^ vo o 

CN CN CN CN CN CN CN CN CN CN CN 

S3 O S3 S S S3 S S3 S S3 S 


(M CN CN 

„ s s s 

^ f, M U u U < CN < < u 

^ r- h c-* 3 r- h s o s r- 

~r, cjrocjrocjcoma^ocjc 

ro(J ^CJfOCjnoCJCuiQaUU 

rQ Q S3CNU0r-<CJQCJS>(N^T 

r^r^r-r^r^r-r^r^oococo 

^ ^ CNCNCNCNCNCNCNCNCNCNCN 
Q ^2 33333033333 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 17 


343 






c 

o 


4-1 





OS 




a> 


•r-H 


0 




4-1 




4-1 


W 4-1 


4-1 




D 




a 


O ‘H 


D 




0 




0 


a 


0 




CD 

0 



as ai 




ai 




X 

4-1 



X 4-1 


u ra 


X 




0 

S3 



QS D 


OS r-H 


03 




1 

0 



1 0 


4-1 CL 


1 




c 

0 



c 0 


c w 


C 




o 

X 



O X 


0) -H 


o 




2 

2 



Z 2 


CJ Q 


2 




4C 

4c 



■K -K 


4c 4C 


4* 



0 












0 








x: 




as 








4-1 




V4 







as 

H 




•p 




0 



S3 

o 






X 


E 



•*r 





0 


2 


o 



S3 



£ 


4-> 


2 


.c 



"T Oi 

OJ 


as 


•H 


S3 

as 




S3 CO 

0 


o 


X2 


*» 

o 

o 



*• M 

ns 


CQ 


£ 


< 

CQ 

CJ 

X 

Q 

2 Q 

Cl. 




4c 




■K 

X 

ns 


4c 


< 

Eh 

■K 


►H 

< E-« 

4c 

CO 

CO 

M CL 

4C 


Eh 

Cl} 

4c 

tsi 

> 

Eh 2 

4c 

[S3 3 

X 

X s 

4c 

03 

CQ 

OS 

s 

as 


co as 

SC 

as x 

x 

x r> 


as 



4c 

2 



* 




4c 

2 



* 

Eh 



* 

2 



-k 

Ch 



* 

hH 



* 




4c 

X 




X 




o 




O 


■K 

-K 4c 

s 


4C 

* 

* as 


■K 

4c 4c 

72 






C 












>1 









o 












r-H 




C 



03 


•H 












03 


03 


o 


U) 

4-1 


4-1 










03 


— -U 


4-1 


•rH 


0 

S3 


U 









e 

C 

03 

(N ra 


S3 


4-1 


03 

0 


03 






.—_ 



03 

■rH 

TO 

— e 


0 


•H 

0 

*_l 

03 

03 

u 

>H 


CM 


>4 

04 



xs 

4-> 

•rH 

Eh *h 


03 

03 

CO 

4-1 

m 

X 

4-1 

■rH 

Q 


— 

X 

a 

—' 

>4 

X 

4-1 

S3 

> 

as x 


X 

4-1 

o 

D 

0.1 

03 

S3 

TO 



Eh 

a 


Eh 

a 

a 


O 

•rH 

O O 


01 

S3 

CL 

O 

td 

1 

0 


1! 


as 


it 

— as 



03 

u 

T3 

00 u 


1 

O 


0 


C 

03 

to 

- 

X 

a 

2 

- 

X o 

2 

2 

> 

X} 


CL 


c 

03 

'O 

X 

2 

o 

X 

r-H 

X 

Q 

CO 

03 

Sh 

Q CO 

03 

03 

ns 

S3 

O 

>i a 


o 

X 

r-H 

2 


2 

2 

o 

Q 

+ 

\ 

2 

Q 

+ \ 

72 

z 

CO 

CO 

4-* 

Q ra 

a 

2 

2 

o 

4c 


4c 

4c 

4c 

4C 

4c 

4c 

4c 

4c 

4c 4c 

4c 

■K 

4c 

4c 

4c 

4C 4c 

03 

4c 

4c 

4c 



u 

0 

4-1 

OJ 

4-> 

X >H O 

< Q < X X 


< 

< 

as 

< 

Eh 

2 

Eh 

2 

Eh 

2 

X 

2 

HH 

2 

2 


4< 

* 

* 


* * -K 


T3 


<0 

5 



2 



< :n 



< 

CJ 











Ul 







X - 


r-H 



i—l 


*- 

X 




CM 


CM 




O 






2 

a < 

2 

os 

c 

A 

2 

OS 

2 

2 

a 

2 


CM 

as 

< 

1 


< 


2 


2 

a 

X 


2 

Q 


2 



2 



Q 










4c 


2 

2 

a 

CJ 

2 

2 > 

a 

2 

> > 

2 

2 

> 

> 

2 

X 

Eh 

M 

ESI 

as 

M 

CSJ 

OS EH 

4C 


2 

CO 

2 

2 

CS3 SO 

2 O 

Q 

< 

o o 

2 < 

o 

O 

2 

O 

2 

a, 

2 

CJ 

CL 

2 

2 

2 

4c 

ISI 

2 

so 

2 

CJ 

2 a, 

2 2 

< 

CJ 

2 2 

2 

CJ 

2 

2 

2 

CL 

as cj 

n 

Q 

cj 

X 

t-H 

as 


as 

CL 

fL 

2 

X 


2 

Q 


* as 

* 2 

* X 

04 O 

OS * * * Cl, 



p» 




r- 





(SI 

CM 







r—H 




rH 





M* 

S3 



r-H 


r-H 


2 



2 

2 





S3 

2 



2 


2 


Cl. 



2 

2 






a 



2 

CJ 

2 


CM 

cn 

2 

2 

CM 

cr* 

2 

m 

in 

r-H 

2 

2 

2 

CM 

CM 

O'* 

CO 

CJ 

CJ 

2 

2 

CJ 

CJ 

2 

Q 

CM 

CJ 

CJ 

< 

2 

2 

2 

CJ 

2 

2 

2 

(S3 

CM 

2 

lO 


2 

cr* 

CJ 

2 

<S3 

r-H 


2 

2 

CO 

2 

2 

O'* 

O'! 

O'* 

CT* 

cr* 

O'* 

cr* 

cr* 

cr* 

< 

< 

< 

< 

< 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

EM 

CM 

CM 

CM 

CM 

CM 

(S3 

S3 

(S3 

S3 

(S3 

(S3 

(S3 

(S3 

(S3 

S3 

(S3 

S3 

S3 

(S3 

S3 

(S3 

S3 




r- 



CM 




CM 



r** 




CM 









P" 




r-H 



S3 




S3 



rH 




S3 









rH 




2 



S3 




S3 



2 



CM 

2 


2 







CJ 




2 



CJ 




CJ 



2 



S3 

CJ 


2 







2 


2 

2 

< 

CJ 

2 

a 

2 

CJ 

2 

a 

C" 

cr* 

CM 

rH 

O'* 

2 

CM 

a 

2 

S3 

CJ 

cr* 

CO 

2 

2 

< 

2 

CJ 

2 

CM 

r" 

2 

CJ 

■^r 

r- 

cr* 

CJ 

2 

2 

CM 

2 

CJ 

2 

CJ 

2 

2 

CJ 

2 

CJ 

CJ 

2 

a 

CM 

2 

<r* 

< 

2 

2 

2 

S3 

2 


2 

2 

cr* 

< 

2 

2 

2 

S3 

CM 

2 

2 

CO 

cr* 

< 

2 

CJ 

a 

2 

rH 

< 

< 

< 

< 

< 

2 

2 

2 

2 

2 

2 

2 

2 

2 

2 

CJ 

U 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

CJ 

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 

S3 

S3 

Si 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

G3 

S3 


0- 




























. 


CL 








0 







































2 


0 








2 
















c 







in 


a 




c 










cn 


2 








•H 













s 



o 







03 


o 




0 


0 


0 






0 


in 




0 




2 











0 


< 



•rH 







•rH 


•*H 




0 


0 


0 




2 


TO 






2 




5 











2 


X 



4-1 





2 


H 


2 



4c 

Lj 


03 


ia 




2 



rH 




D 















a 





03 





•rH 


2 


03 



4C 

0 


2 


2 




2 


in 






0 




2 









TO 


0 


X 



u 





E 


c 


U 



4C 

in 


2 


2 


0 


o 


M* 


TO 




0 

0 



O 









0 


0 

0 

2 



o 





•H 


0 


o 










E 


■z 




2 




X 

2 












2 


X 

2 

2 



rH 





rH 




rH 



0 

2 


-X 


0 


O 




2 


03 




0 

1 

3 



JkJ 









in 


0 

I 

13 

CS3 










2 





rH 

03 


0 


2 


c 


0 


2 


S 




0 



0 









•rH 


0 

CS3 



5 







O 


S 



2 

0 


03 


•2 




0 


cn 


2 



C 

c 

0 



03 









c 


C 

0 

C 



0 ) 





<0 




0 



03 

*H 


rH 


2 


O 


03 


•2 


O 



0 

o 

X 



rH 









• H 


o 

X 

a 



z 





z 




z 



2 

CJ 


CQ 


:■£ 


CJ 


r_ 


X 


2 



0 

z 

2 



X 









2 



2 

-k 



4c 





4c 


•tc 


4c 




■K 


4c 


4c 


4c 


4C 


4c 


■K 



2 

-k 

■K 



4C 









4c 


■k 

4c 
















TJ 
















0 

































C 
















cn 















0 


















OJ 















m 
















0 






CM 












E 















\ 

0 















03 






+ 



X 


H 







E 
















2 















2 






a 



CJ 




CS3 





O 















2 

2 















2 



X 


X 

2 


2 

< 

2 

2 

X 

2 

X 


X 


O 














a 

X 






CO 













C3 

■k 

(2 

2 


T 

Ph 

S3 

X 

P~ 

2 r- 


CM 




X 


X 


2 




T 


Eh 


X 

< 

2 




2 

-T 













S3 

4< 

a 

2 

H CM 

2 

r- 

Eh 

CJ 

X 

H 1 

a 

2 

a 

0 


< 


CJ 


Eh 


2 


rH 


X 


s 

Eh 

03 




CM 

S3 !2 










0 



CO 

■k 

S3 

o 

H 

S3 

- 

S3 

2 

S3 

H 

1—1 

2 

<H 

2 

2 

- 

2 

- 

< 

- 

r-H 

- 


- 

uL 

- 

CJ 

- 

X 

1 

0 




Q cm X 


< 



X 

rH 




03 



rH 


S3 

2 

2 

'S3 

2 

S3 

- 

S3 

«■ 

SI 

2 

S> 

2 

2 

CJ 

2 

X 

2 


X 

X o 

’2 

O 

a; 


2 

O 4c 

>H 





- O 





hi 

2 




rH 



C3 

U) 

S3 

2 

H 

S3 

2 

S3 

X 

'2 

a 

CJ 

2 

S3 

2 


- 

CJ 

- 

X 

- 

'•£ 

- 

X 

- 

z 

- 

X 

- 

2 

'— 

CJ 


X 

X 

X 

X X 


2 

X 

X 

< 

CJ CJ 

X 

X 


X 


< 


0) 














TO 



































2 



2 








a 


a 

C 
















4C 


X 

X 












4c 



2 

U 

CJ 

fH 

2 

CJ 

IH 

CJ 

IH 

CJ 

IH 

CJ 

2 

CJ 

2 

0 















ZD 

4c 


2 

2 

IH 

*H <C 

g 

> 

X 

X 

> 

< CM 

X 

X 

Eh 

-k 


< 

a 

4-1 

X 

X 

< 

X 

X 

X 

X 

X 

> 

X 

X 

X 

X 

2 

CQ 2 

2 £ 

X 


X 


X 

z 

X 

£ X 

Z Qf 

4c 

CM 

2 

2 

X 

x a 

o z 

CJ o 

x z 

0 0 2 

■k 

CM 

X 

2 

03 

o 

2 

CJ 

o 

2 

o 

2 

o 

s 

o 

2 

o 

2 

X 

a 

Q 

a 

a 

a 

Q 

a 

a 

Q 

n 

Q 

Q 

a 

a 

2 


X 

X 

X 

2 

2 2 

CJ 


H 

a 

2 

O 2 

X 

X 

X 


X 

X 


X 





Eh 









2 
















CJ 














X 





4C 





CJ 









4c 















CM 

4c 

X 














4c 

X 



4c 





2 









4c 















2 

■k 

< 














4c 

CJ 


2 

4C 





X 








rH 

■k 















2 

4c 

2 




rH 










4c 

< 


[S3 






M 








a 
















X 


2 




2 











2 


a 4* 

■k 4c 





a 








CJ 4C 

4C 4c 















Eh 4c 

■K 4c 

CJ 




CJ 









4c 

4c 4c 

X 



S3 




























rH 



















S3 




























r-H 



















CO 




























S3 





















0" 

2 


P- 


CJ 




P- 


p- 















S3 




CO 

CO 

P- 







CM 








rH 

SI 


rH 


2 




i—i 


rH 



















rH 

S3 

rH 







S3 








X 

rH 


cr* 


rH 


>H 




O'* 


04 


CN 


CM 


(M 


CM 


CM 


CM 





S3 

S3 

X 







< 








2 

CM 


2 


(T* 


rH 


2 


2 


S3 


S3 


S3 


O 


S3 


S3 


S3 





S3 

S3 2 







P- 








rH 

Q 


<H 


rH 


ID 


< 


<M 

2 

rH 

C4 

cr* 

r* 

2 

CO 

KO 

2 

2 

CM 

cr* 

IO 

X 


CO 

2 

2 

r-H 

rH 

< 

2 


2 

X 

CO 

rH 

CM 

<H 

rH 

<Ti 

X 

2 



2 

U 


2 


CM 


S3 


CM 


CM 

H 1 

P* 


X 

2 

X 


cr* 

H- 

T. 

2 

< 

(J 


CJ 

2 

CJ CM 

S3 

2 

CM 

p- 

CM 

S3 

p~ 

X 

CJ 

CJ 

2 

CJ 

u < 


S3 

S3 

ro 

T 

M 1 

S3 

S3 

P* 

P- 

P' 

P- 

CM 

CN 

CJ 

Q 

2 

S3 

CM 

2 

2 

iO 

CO 

<r* 

X 

o 

2 

2 


rH 

CM 

2 


P- 

< 

Q 

2 

2 S3 

rH 

P4 

2 

<o 

P* 

X 

cr* 

< 


S3 

SI 

S3 

CM 

CM 

r- 

P- 

CJ 

CJ M' 

■M* 

m 

m 

2 

2 

2 

v£> 

2 

lO 

kO 

2 

•x> 

o 

<o 

i£> 

VO 

l£3 


P' 

P- 

r"> 

P* 

P- 

P- 

p- 

P* 

P- 

CO 

CO 

CO 

CO 

CO 

X 

X 

X 

X 


S3 

S3 

S3 

S3 

S3 

S3 

S) 

S3 

S3 

rH 

rH 

rH 

rH 

CM 

CM 

CM 

CM 

CN 

CM 

CN 

CM 

CM 

iM 

CM 

CM 

CM 

CM 


CM 

CM 

CM 

CM 

CN 

CM 

CM 

CM 

CN 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

04 


S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

IS 

S3 

Si 

S3 

S3 

S3 

S3 

C2 

(S3 

S3 

S3 

Si 

S3 


S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 


Page 18 Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 Number 18 


344 



x x x 

o co 

(N Q O 

a q o 


rc 

S3 

S 3 


X 

S3 

CO 

si 


X X X 
Q Q Q 


CQ CQ 

q a 


-K 


q >3- 03 Q Q 

cm ra o ^ Q° 


UQU 


co cq cq 

S3 S3 O 


Ci_ S3 
rH CM 
CQ CQ 
Q S3 


* 

* 


-X 


■¥. 

* 

* 

■K ■+£ 



X 

• rH 




























CM 


1 



























u 

£ 

U) 





























0 



























c 


Vd 



























o 































•rH 













X 

CQ 

CO 

CO 

ID 

CD 

CJ 

X 

p 

VO 

X 

Q 



c 

O 

X 













CJ 

CM 

CJ 

CJ 

CO 

CJ 

X 

X 

X 

X 


•vr 


.—k 

H 

03 














VD 

r- 

CD 

CM 

CJ 

rH 

< 

CJ 

CJ 

a 

vo 

00 

X 

CM 

D 

•H 

X 














p* 

o 

S3 

p 

X 

X 

p 

X 

p 

< 

S3 

S3 

i—1 

H 

X 

CM 


























ID 

* 

■X 

* 













CM 

X 

p- 

X 

p 

p 

X 

X 

X 

X 

X 

■^r 

S3 

\ 
















S3 

CM 

rH 

Q 

rH 

rH 

Q 

■—1 

ID 

in 

rH 

S3 

< 

X 
















CD 

p- 

X 

co 

X 

X 

iD 

CJ 

X 

CO 

X 

S3 

X 

CM 
















< 

rH 

X 

CJ 

X 

X 

X 

X 

X 

X 

X 

X 

CJ 

a 








= 





















'— 








>H 





















+ 








Q 








CM 

X 

CM 

S3 

C 

CM 

CO 

X 

X 

o 

< 

S3 

X 

X 


X 


+ 

+ 



O 








LD 

X 

CO 


CM 

CM 

CJ 

X 

o 

CJ 

X 

X 

S3 

S3 


Q 


X 

X 



X 








CM 

< 

X 

S3 

LD 

CD 

CD 

X 

vo 

X 

X 

X 

S3 

CO 

X 

vo 

X 

X 

FH 











S> 

CQ 

< 


X 

VD 

u 

VO 

X 

X 

S3 

S3 

CD 

o 

X 

S3 

X 

►—i 

X 



X 





















k. 

S3 


o 

X 

o 



X 








X 

CO 

CO 

rH 

X 

p 

CJ 

X 

X 

X 

VO 

X 

Q 

< 

S3 

< 

S3 


2 

■K 


X 








CD 

S3 

CJ 

CM 

CJ 

VC 

X 

CO 

S3 

S3 

X 

S3 

CJ 









!H 








X 

S3 

CD 

ID 

CD 

CM 

S3 

Q 

X 

vo 

X 

CD 

X 





X 




O 









S3 

CJ 

Q 

CJ 

S3 

CJ 

X 

S3 

X 

'O 

CJ 

S3 

HH 

H 

►H 

H 

X 

X 


Q 






















> 

X 

> 

X 

< 


O' z 

< 






















o 


o 

cj 

n 

X 

X 









CM 

rH 

rH 

LD 

p 

S3 

X 

r- 

Q 

p 

CD 

X 

X 

















S) 

S3 

X 

X 

>—i 

c; 

X 

vo 

X 

S3 

rH 

X 

Q 









X 








vO 

CO 

rH 

CO 

X 

Q 

X 

X 

X 

p 

VO 

rH 

Q 









o 








CD 

rH 

CJ 

CJ 

X 

CJ 

X 

co 

LD 

S3 

CJ 

Q 

vo 







CO 


X 

CQ 







00 

S3 

CM 

CD 

CM 

iD 

X 

CJ 

S3 

P- 

ID 

X 

X 

Z 






< 


Q 

•S3 







N* 

S3 

S3 

CJ 

X 

CD 

X 

X 

X 

S3 

X 


X 

M 






X 


o 

rH 







CM 

rH 

< 

p 

CJ 

CJ 

X 

p 

VO 

Q 


X 

X 









(J 

CM 







S3 

CM 

r- 

rH 

X 

p 

S3 

X 

X 

p 

S3 

X 

S3 







X 


Eh 

CJ 

Q 






CM 

X 

ID 

CM 

X 

p 

X 

vO 

X 

p 

p 

VO 

vo 

X 







CM 


X 

CJ 






*cr 

GO 

CJ 

CJ 

X 

rH 


CJ 

X 

S3 

X 

U 

< 

Q 







CQ 



p* 

r* 

CJ 




CM 

p* 

LD 

rH 

CM 

X 

X 

X 

< 

p 

X 

CJ 

X 

CJ 







S3 


X 

rH 

rH 

X 



rH 

S3 

LD 

X 

X 

X 

X 

S3 

CJ 

X 

vo 

S3 

r" 

ca 

CO 










X 

CD 

rH 

rH 

CD 

CD 

rH 

CM 

CO 

CO 

X 

CM 

S3 

X 

X 

p 

VD 

X 

X 

X 





CM 

CM 




X 

X 

CD 

rH 

X 

X 

r- 

'S3 

CJ 

r- 

X 

X 

c; 

S3 

X 

S3 

X 

'O 

X 

X 






3 




rH 

rH 

»H 

VC 

< CM 

CQ 

CD 

CM 

X 

X 

X 

Q 

X 

X 

X 

p 

X 

X 

S3 

cj 

X 

Q 

X 

S3 





CQ 

CQ 

CM 

Si 

CM 

CM 


CO 

S3 

S3 

X 

< 

<J 

X 

X 

so 

X 

S3 

X 

CO 

CO 

X 

VD 

S3 

CD 

< 
























X 

CQ 

X 

rQ 

Q 

CQ 
























CQ 

Q 

CQ 

Q 

CJ 

cj 




** 

** 

** 

*’ 

** 

** 

* * 

* ‘ 

** 

** 

•• 

•• 

•• 

•• 

•• 

** 

•• 

** 

•• 

" 


CQ 

iD 

r~ 

CD 

CJ 




<SJ 


S3 



CM 

CJ 

S3 

■S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

CM 

CM 

CM 

CM 

CM 

CM 




tS3 

CM 

C" 

CJ 

LD 

iD 

VO 

p- 

CO 

CD 

< X 

CJ 

Q 

X 

X 

S3 

X 

X 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 




S3 

S3 

S3 

S3 

rH 

rH 

CM 

CM 

CM 

CM 

CN 

CM 

CM 

CM 

X 

X 

X 

X 

X 

X 

S3 

S3 

S3 

S3 

X 

S) 




S3 

S3 

G3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 


* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 

* 


< 

oc 


c 




O 

o 




■J 

•H 



X 

x a 

4-> 



X 

03 O X 

O 

X 

X 


X X 

CD 



01 

a c n 

u 

£ 


> 

m x a 

•H 

O 

CD 

03 

•H fC 

Q 

z 

z 

X 

T3 x :.r 

•K 

•K 

* 

* 

■K -K 4< 






0 











4-3 









J 

0 

•H 4-3 




4-1 





•rH 

X 

£Z -H 

U3 

s 

cn 

•H 

z 




.Q 

-Q 

5 -Q 

03 

< 

03 

-Q 

< 

4H 

d) 



03 


E 

a 

E 


X 

0 

c 

—• 

03 

4-3 

H 0) 




0 



o 

xz 

-C 


0 -C 

0 

j 

0 

4Q 

o 

ax 

n 

X 

4-3 

03 

4-3 

C/3 

CS3 

03 

4-> 

4-3 

03 X 


x X 



J*! 

u 

Q 

V4 



E X 

UH 

03 /\ 

T3 

E 

CJ M 

0 

D 

0 



CS3 

X 

C 1 

C 

O 

03 U 

> 

1 

> 

U 

CJ 

4-» S 

03 

•H X 

•rH 

u 

X X 

0 

J 

0 

•H 

03 

•H < 

X 

X Q 

X 

UH 

CQ X 

X 

ac 

a 

X 

CQ 

m a 

■K 

4« -K 

•K 

1C 

* * 

•* 

■K 

* 

■K 

* 

■K Ht 


X <c X < 

X - - - 

Q<QX<XJX 

□ a 

x>a>>a>x 

-OQOOQOX 

JS<22<SW 


vc 

id 

CM 


X 





X 





X 






X 






X 

\ 




< 


S3 

< 




X 


< 

X 



ID 

< 

X 




CM 

X 

- 





X 

*. 

»■ 



S3 


•» 

*. 



a 

•> 

k. 




S3 

CSJ 




X 


S3 

X 

< 



S3 

X 

X 

<c 



S3 

Q 

< 




S3 

Q Q 

> < 

CJ 

CJ 

> 

CJ 

X 

> 

> 

CJ 

CJ 


< 

> 

> 

X 

X 

M 

> 

> 

CJ 

o 

CJ 

M 

< 3H 

o s 

i-Q 

-—* 

o 

J3 


o 

o 

X 

X 

z 

X 

o 

o 

< 

< 

z 

o 

o 

X 

X 

X 

z 

X Q 

S CJ 

X 

X 

s 

X 

< 

z 

s 

X 

X 

< 

o 

z 


X 

X 

< 

z 


X 

X 

X 

< 

o < 


VC 

ID 

CM VO 
ID 


Q CM 

O \ 

5 X 



X 



X 



< 

*5 










X 

X 

X 

< 

X CQ 

< 

X 

■^r 

CO 

< 

Eh 

X 


< s 





< 



rH 

CN 

S3 


*• S3 

•» 


S3 

< 


- 

o 










S3 

S3 

rH 

Q 

< S3 

X 

< S3 X 

E-3 

X 

X 

CQ 

z 

CJ < 



z 

CJ 

Z Q 

X 


S3 

S3 

S3 

> 

> M 

> 

> 

3H fCC 

3H 

> 

3H 

< 

< 

> > 

g 

CJ 

X 

< 

< 

> X 

X 

Eh 




O 

o z 

o 

o 

Z X 

Q 

o 

> 

Q 

z 

o o 

CJ 

z 

X 

o o o 

X 

X 

X 

X 

z 

z < 

z 

z 

< o 

< 

2 

z 

X 

< 

z z 

CJ 

X 

< 

o 

Z X 

X 

X 

Q 

a 

a 


X 

CQ 

M 

Q 


X 

< 

Eh 


f" 


X CJ 

X X 


<UC1(^QdCi-''MUCi-C'C' 

tNC'CDVDM»^CNC'(NS'3 


CN ID VO 1^ 

Q Q Q Q 

CM CM CM CM 
0 Q SQ 


CO CD < x 

q a a a 

CM CM CM CM 
S Q Q 3 


X X S> <—1 

a a j x 

CM CM CM CM 
Q S S O 


S3 X ID CM 00 

X S3 a f S rH 

CCvOtQrn^OCQtiUCCvOCQCCCVOCN'OC 
VOQQi/lCOQuJCDiDCHHUtDCasaWXUlD 

CMCQM'VOCOD^<UQUli < SHCQM , lDOCCO<XQ 
XXXXXXXXXXXXXXXXXXXXXXX 
CM CM CM CM CM CN CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM CM 
QaaaaaaasQQat^oaQQQaacisa 



CQ 



•^r 


D 


CQ 

X 






S3 



S3 


rH 


S3 

X 





a 

VO 

X 

CJ 

VO 

ID 

■O 

X 

VO 

< 

VO 

X 

X 

X 

P' 

X 

VO 

r^- 

X 

X 

CJ 

o 

CN 

CQ 

< 

'3' 

r- 

CN 

X 

X 

rH 

CN 

CQ 

ID 

vo 

X 

D 

X 

X 

X 

S3 

rH 

X 

X 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

rH 

rH 

CN 

CN 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

CQ 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 

S3 


XOnCHHClHCNQ 

X<XP-QXCJS3S3rH 


CMCVM'lDVOCCOOV<C£1 


CQCQCQCQCQCQCQCQCQCQ 

aaSQSQQSlQSl 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 19 


345 




A Microprocessor 
Operating System: 
The Kernel 


- 9 { removed! ^ 



Hrunning 1 


10 ) 


create-process 
remove-process 
start-process 
stop-process 
P operation 
V operation 
scheduler 
interrupt 
send-message, 
send-question, 
or send-answer 
wait 


by Max K Agoston, PhD 
Dept of Mathematics 
San Jose State University 
San Jose, CA 95192 

This article describes in detail the kernel for a real-time 
interactive multiprocess operating system (RIMOS for short). 
RIMOS was intended to extend the INTEL MDS system and 
because of this the kernel subroutines make use of INTEL’S 
ISIS. (The INTEL monitor was used only at the start to load 
ISIS.) However, the source code that will be listed later is 
basically usable on any computer using the INTEL 8080 
microprocessor, except that one would have to write a file 
system and make some simple changes to eliminate reference 
to ISIS. 

An Overview of the Total System 

The basic structure of RIMOS was derived largely from 
concepts for operating systems as discussed in [2] and [3]. 
RIMOS was to consist of a hierarchy of seven levels. Each 
level would make use of the operations and data structures 
made available to it by the level which was immediately 
below it but would not concern itself with their implemen¬ 
tation. Levels 1 and 2 correspond to what I shall call the 
kernel, whose subroutines are listed in Table 1. The purpose of 
the kernel is to create an environment in which program 
execution and I/O operations are handled uniformly as cooper¬ 
ating concurrent processes. 

Level 0: 

The hardware or basic machine. 

Level 1: 

This level consists of eleven routines and the appropriate 
data structure. There are eight interrupt-handlers which 
service each of the eight hardware generated interrupts. 

The scheduler is a routine that starts processes executing 
and also determines their order of execution. In general, the 
order is determined by their priority and their position in 
the queue of active processes. Processes with lower priority 
do not get to execute until all higher priority processes have 
finished. Processes of the same priority are serviced in a 
round-robin fashion with each process being allotted a fixed 
length of time to run. 

Finally, the P and V synchronization primitives are routines 
which provide the operating system with a mechanism for 
preventing processes from interfering with each other in 
critical sections. 

Level 2: 

This level consists of eight basic routines dealing with the 
primitive operations on processes and the messages between 
them (see Figure 1). Figure 1 shows the states of a process 
and how the routines transform into the other. It should 
be pointed out that even though interrupts are not disabled 
these routines are essentially “non-interruptable” in the sense 
that if any process is executing one of them then no other 
process can execute any of them, since any such attempt will 
get it stuck on a semaphore. 


The states of a process and the primitives 
that cause transitions between them 


FIGURE 1 

The create-process routine loads a process from the disk using ISIS 
and creates for the operating system a record or Process Control Block 
(PCB) of this process. 

The start-process routine takes a stopped process and inserts it into 
its appropriate place in the queue of active PCBs depending on its prior¬ 
ity. If the routine is asked to start a process which does not exist yet, 
it will create the process first and then proceed as before. 

The stop-process routine removes a process from the queue of active 
processes and puts it into a "stopped" state. Nothing else is changed 
though, so that if the process is later restarted, then it will begin exactly 
where it left off. 

The remove-process routine returns the message system resources 
of a process Q to the operating system as appropriate. If Q is not a 
"permanent resident", then its PCB is retained but flagged as being a 
"program". The difference between a stopped process and a program is 
that the former can still receive messages, whereas the latter cannot. 

The send-message and send-question routines enable a process to 
send a message to another process. In the case of the latter, an answer is 
returned eventually via the send-answer routine. Each process is allowed 
to send a fixed number of messages or questions. An attempt to exceed 
this number will return an error message. 

The wait routine allows a process Q to wait for "data". It provides 
Q with the capability of specifying exactly what it wants to wait for, 
whether it is to be a message, question, answer, or interrupt. 

Level 3: 

This level would consist of the shared TTY and CRT pro¬ 
cess calls on the I/O driver processes. Processes and their inter¬ 
action are now seen from a global point of view. 

Level 4: 

The user processes. 

Level 5: 

The job control language, which is the interface between 
the virtual machine of the user and the internal machine. 
The interpreters for this language are processes on level 4. 

Level 6: 

The user. 

Although the whole operating system RIMOS did not get 
finished, with the exception of the interrupt-handlers, all of 
the routines of the kernel (see Table 1) have been imple¬ 
mented and tested. The kernel takes up approximately 1800 
bytes of memory and the 8080 assembly language code for it 
is listed at the end of this documentation. As one can see from 
the list of user callable subroutines in Table 1, the kernel 
provides the user with a lot of power, especially with its 
message system. 

The Kernel Data Structure 

In order to understand how the subroutines of the kernel 
are implemented one must understand the underlying data 
structure. This is described next. 


Page 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


346 








THE SUBROUTINES DESCRIPTION OF PARAMETERS 


Level 1: 

Interrupt handlers 


Scheduler 

P 

P(ID, SEM) 
V 

V(SEM) 


Level 2: 

Create-process 

RESULT := CREAT(NAME) 
Start-process 

RESULT : = STARTINAME, 
PRIORITY) 

Stop-process 

RESULT := STOP(NAME) 

Remove-process 
RESULT := REMOV(NAME) 

Send-message 

RESULT := SENDMIMESSAGE, 
NAME) 


ID: indicates local or global 
semaphore 

SEM: address of semaphore 

NAME: address of process's name 

PR IORITY: specifies priority 

MESSAGE ANSWER: 2 bytes 
each 

ADDRESS: address of 3 byte 
block — 2 bytes for the 
question and 1 byte for 
identification purposes 

BIO: an integer used for identi¬ 
fication purposes. 

WTBLK: address of a 10 byte 

block whose contents are 
returned by the routine and 
which describe the data that 
was received 

MASK: 1 byte binary word which 
specifies the data that one 
is waiting for 

RESULT: an integer which is re¬ 
turned and which specifies 
the error, if any, that occur¬ 
red while attempting to 
execute the routine. 


allow only one process to execute any one of the 
level 2 routines at a time. Next, each process has a 
unique Process Control Block (PCB) associated to 
it which specifies the process completely: 

DEFINITION: A PCB consists of 37 bytes of memory 
which are divided into the following fields: 

NAME (NAM) : 6 bytes holding up to 6 alphanumeric char¬ 
acters with a blank after the last character if there 
are less than 6. 

Execution-state (EXC) : 1 byte whose relevant bits are shown 
below: 

BLOCKED bit 

PROGRAM bit 

\ I 

xxooooxx 

t t 

STOPPED bit 

RESIDENT bit 

bit interpretation when set 


PROGRAM 

RESIDENT 

BLOCKED 

STOPPED 


a permanent resident program which 
presently is not a process 
a system program whose code is never 
removed from memory 
process is waiting on a semaphore 
process is in the “stopped” state 


Send-question 

RESULT : = SENDQ(ADDRESS.NAME) 

Send-answer 

RESULT := SEN DA (ANSWER,BID) 

Wait 

RESULT := WAIT(WTBLK, MASK) 

The subroutines of the kernel and their parameters in 
PL/M notation if intended to be user callable 

TABLE 1 


GLOBAL POINTERS (each consist of 1 byte): 

Free-PCB-pointer (FP) : The free PCBs form a stack using the 
NP field in the PCB. The FP points to the head of 
this stack. 

All-PCB-pointer (AP) : This pointer points to the first process 
in the doubly-linked list of all PCBs corresponding 
to current processes. 

Current-process-pointer (CPP) : This pointer points to the PCN 
of the current running process. 

Free-message-buffer-pointer (FMBP) : This pointer points to 
the first buffer in the stack of free message buffers 
for all processes. 

Priority-i-pointer (PRP [i]) : This is a pointer to the “first” 
process in the doubly-linked circular list of all 
active (that is, non-stopped) processes of priority i. 

Number-ready-priority-i-processes (NMR [ij) : This byte speci¬ 
fies the number of ready, that is, non-blocked and 
active processes of priority i. 

DEFINITION: A semaphore is a 2 byte block of memory 

which is divided into the following fields: 

VAL (Value): 1 byte which holds in integer 1,0<1<256. 

FWP (First-waiter-pointer) : 1 byte which holds the “index” 
of the PCB of the first process waiting on the sema¬ 
phore are in a queue linked together via the NSWPs. 

The global semaphore used by the kernel (2 bytes). 

All-PCB-semaphore (AS) : This semaphore is used not only to 
prevent more than one process from tinkering with 
any one of the doubly-linked PCB lists, but also to 


Priority (PR) : 1 byte specifying the priority of this process. 

0 

clock 

1 

I/O drivers 

2 

command interpreter 

3 

real-time user 

4 

background processes 


Message-buffer-counter (MBC) : (1 byte) This field is initially 
set to a fixed number MBPP and specifies the num¬ 
ber of buffers currently available to this process 
for messages. 

Waiting-data-mask (WDMK) : 1 byte which specifies what type 
of “data” this process is waiting for because of a 
call to the wait routine. The bits have the same 
interpretation as for the parameter MASK in that 
routine. 

Received-data-mask (RDMK) : 1 byte whose first three bits 
show what type of “data” is waiting to be processed 
by this routine. The bits have the same interpreta¬ 
tion as for returned value EVENT in the wait 
routine. 

First-message-pointer (FMP) : 1 byte which points to the first 
message in the message queue. 

First-question-pointer (FQP) : 1 byte which points to the first 
question in the question queue. 

First-answer-pointer (FAP) : 1 byte which points to the first 
answer in the answer queue. 

Answer-buffer-pointer (ABP) : 1 byte which points to the 
queue of buffers that are to be used when sending 
back answers to questions asked by other processes. 
This queue is created as a protection for the 
system, so that the only buffers used are those 
which were actually intended for holding answers. 

Next-semaphore-waiter-pointer (NSWP) : 1 byte which is used 
to link together processes that are waiting on a 
particular semaphore. The semaphore itself 
contains a pointer which points to the first process 
in the queue of waiting processes. 

Semaphore-pointer (SEMP) : 1 byte which indicates whether 
or not the process is waiting on a semaphore. Its 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 21 


347 




value has the following interpretation: 

(SEMP) Semaphore on which process waits 


0 none or local semaphore which is 

private to process 
2 AS 

Last-active-PCB-pointer (LAP) : (1 byte) Whenever this pro¬ 
cess is not STOPPED, this byte holds the “index” 
of the preceding PCB in the queue of all PCBs. 
Next-active-PCB-pointer- (NAP) : (1 byte) Whenever this 
process is not STOPPED, this byte holds the 
“index” of the next PCB in the doubly-linked 
circular list of active processes with the same 
priority as this process. 

Last-PCB-pointer (LP) : 1 byte which holds the “index” of the 
preceding PCB in the queue of all PCBs. 
Next-PCB-pointer (NP) : 1 byte which holds the “index” of 
the next PCB in the doubly-linked queue of all 
PCBs. 

Data-semaphore (DSM) : (2 bytes) This semaphore, initially 
set to 0, is used by the wait routine to enable a 
process to wait for the “data”, that is, messages, 
answers, or interrupts, that it wants. 
Starting-address (STAD) : 2 bytes which are the initial starting 
address of this process. 

Stack-pointer (STKP) : 2 bytes which hold the address of the 
stack for this process. 

Temporary-stack (STACK) : 10 bytes which serve as a 

temporary stack until the user has set up his own. 
There is space for storing the program location 
counter (PLC), the program status word (PSW) 
(which consists of the accumulator and flag bits), 
and the B, C, D, E, H, and L registers. 

NOTE: The PCBs are actually implemented in memory by 
means of 20 arrays, one for each field. In this way, a PCB, and 
hence a process, is completely specified by means of a single 
integer corresponding to the index of the arrays. 

Finally, in order to be able to communicate with other 
processe each process has access to a certain number of 
message buffers which it can use to pass the messages. If a 
process sends too many messages and uses up its allotment of 
buffers, then it will be unable to send any more messages and 
will have to wait until one of its buffers has been returned. 
All message buffers are eventually returned to their sender 
(unless they are sent by mistake to a process which does not 
expect messages, so that the latter will never act on them); 
hence, there should not be any problem normally. The 
routines which handle the sending of messages are described 
in detail elsewhere. 

DEFINITION: A message buffer (MB) consists of a 5 byte 
block of memory which is divided into the following fields: 
Message-buffer-sender-pointer (MBSP) : 1 byte which normal¬ 
ly holds the index of the process which sent the 
buffer. Whenever a process Q is removed via the 
REMOV routine, this field is checked in all MBs. 
Those that contain Qs index are set to 0. In this 
way it is possible to prevent an answer being 
returned to a process that has long since been 
removed. 

Next-message-buffer-pointer (NMBP) : 1 byte which holds the 
“index” of the message buffer that is next in the 
relevant queue. 

Answer-status (ASTAT) : 1 byte whose function is to enable 
the WAIT routine to detennine the status of an 
answer. If the field is non-zero, then this means 
that this answer is a dummy, that is, the process 
which was supposed to supply the answer was re¬ 


moved before it could finish its job. (The REMOV 
routine entered a non-zero value in the answer- 
status field to indicate this before returning the 
“answer”.) 

Message (MESS) : 2 bytes. 

NOTE: The MBs (like the PCBs) are also implemented in 
memory by means of arrays, one for each field. In this way, a 
MB is completely specified to the system by means of a single 
integer corresponding to the index of the arrays. These indices 
are the integers BUFID and BID which are used by the 
message routines. 


ABBREVIATIONS USED 

PCB 

Process control block 

MB 

Message buffer 

AS 

All-PCB-semaphore 

DSM 

Data-semaphore 

FP 

Free-PCB-pointer 

AP 

All-PC B-poin ter 

CPP 

Current-process-pointer 

NP 

Next-PCB-pointer 

LP 

Last-PCB-pointer 

NAP 

Next-active-PCB-pointer 

LAP 

Last-active-PCB-pointer 

NSWP 

Next-semaphore-waiter-pointer 

STKP 

Stack-pointer 

FWP 

First-waiter-pointer in semaphore 

FMBP 

Free-message-buffer-pointer 

FMP 

First-message pointer 

FQP 

First-question-pointer 

FAP 

First-answer-pointer 

ABP 

Answer-buffer-pointer 

PRP [i] 

Priority-i-pointer 

PLC 

Program-location-counter 

MBC 

Message-buffer-counter 

WDMK 

Waiting-data-mask 

RDMK 

Received-data-mask 

NMPR 

Number of possible priorities for processes 

MBPP 

Number of message buffers allotted to each 
process 

NMR [i] 

Number of active non-blocked processes of 
priority i 

STAD 

Starting-address 

MBSP 

Message-buffer-sender-pointer 

NMBP 

Next-message-buffer-pointer 

ASTAT 

Answer-status 

MESS 

Message 

NAM 

Name-field 

PR 

Priority-field 

EXC 

Execution-state 

VAL 

Value-field of semaphore 

active = 

non-stopped 


Initialization 


Inititialization of the kernel is an easy task. The initializa¬ 
tion routine (which can be overwritten after it is finished) has 


Page 22 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


348 




to do the following: 

1. Load the kernel subroutines. (Record the address of 
CROO, LBLK, START, and SCHOO.) 

2. Set the PRP and NMR fields to 0. 

3. Set the message buffer links (the NMBP fields). 

4. Set the appropriate PCB links (the NP fields). 

5. Create those processes which are to be permanent residents. 
Call these processes PROC1, PROC2, . . . , PROCk. The 
special entry point CROO to the CREAT routine has to be 
used during initialization. The following code accomplish- 


es this step: 



LXI 

H, adri^- 


SHLD 

LBLK \ 


CALL 

CROO \ 


• 

• v 

adri is the address of where 

• 

H, adrkzr^ 

the name “PROCi” is stored 

LXI 


SHLD 

LBLK 


CALL 

CROO 



6. Call the process which is to be started first PROC. If it has 
not already been created in step 5, then repeat the proce¬ 
dure of step 5 for PROC. 

7. Set the permanent resident bits of processes PROC1, 
PROC2, . . . , PROCk. This can be accomplished by set¬ 
ting the EXC field of the processes to 41H. 

8. Call the START routine for those permanent resident 
processes that one wants in the START state (see the 
instructions for using START). 

9. Call START for PROC. 

10. Get PROC running as follows (assume that PROC was the 
j’th process created above): 


MV1 C,j 

MVI B, 0 

MVI A, j 

DI 

JMP SCHOO 

IMPORTANT NOTE: It is essential that the priority of the 

first process point is at least as high as the priorities of all the 

processes which are started in step 8 and 9 above (otherwise, 
some processes will be started running before the initialization 
routine is finished). 

A Short Trace 

In order to help the reader understand the data structure 
and initialization better, we give a short trace of the sequence 
of changes in the data structure during and after initialization 
in a simple situation. However, keep in mind the general 
comments about the code which follow below: 

1. Only 5 processes and 5 message buffers per process are 
allowed, but these numbers can be changed simply by 
changing the values of NMPCB, MBPP, and NMPR (see 
the first page of the code). 

2. The origin is set arbitrarily at 8000H (see the top of 
page 4 of my code), but this also can be changed by 
simply replacing that ORG statement with another. 

3. As things stand, after the code is assembled one has to 
record certain addresses. These are used by the initial¬ 
ization routine and by the user. For one thing, the 
user would not be able to use the kernel subroutines 
unless he knows their addresses. One could easily get 
around this by setting aside some fixed locations in 
memory to be used as entry points to the appropriate 
subroutines. 



3 £ 



iv ti¬ 
ro co 

90 Co 


Co . 
Co 


t). 

o* o 


rsJ ^ 

O 

90 o» 


r-' C>» 

S e- 

Oo Co 


& a 

©■ *0 


*4 f\j 
UJ Uj 
t£- O 
00 O* 


'if 

e- 

Co 



Number 18 


\u 

t = 

I <2 



Dr. Oobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 23 


349 






Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


350 







Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 


351 




E 

£ 


o 

o 

oc 

CL 


-* $ 
— ° 

o 

O ‘*- 
O 0) 
— .c 

5 « 

3 C 
O O 
x: u 
*° <✓> 


> r 
r 5 


O a) 
n* 45 


£ -C 
3 ♦- 

II 

to ro 
co "O 
CD co 
cn 

CD .E 
x: c 
♦- c 

^ 3 

co _ 
x: T3 

5 CD 

t 

CD 


CD 


^ T3 
CO T) 

(J 

o 

OC 


CO 

a- cu : 

W “ M 
in CD - . 

o > X 
u S O 
8 ° ir 

a_g jl 

£Ec 
o c « 

S? s - 

TD ra O 

£ r- O 

i E£ 


O M IL {*) t- O 
ir> lo ^ rr co cm 


E 

c 



O 

o 

QC 

Q_ 

O 


' ' UJ ' ' LU 

CD Q w CD Q w 


X X < X X < 
J JO j JU 


CD 

■> 

CO 

O 

O 

OC 

Q. 

O 


^ o 

S E z 
5 2 


X X < X < 

_i _i o _/ u 



I 

I 


r* 

rs 


X* 

l' 


00 


CM 

'■Lflf 

in 

j o 

a 9 



* LLJ 

C/5 CD CO 

co 

co c n 

O O Q 

Q 


CO 

a 


CM 

X 

-I 

CO 

a 



Page 26 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


352 





* 

e 



Number 18 


Dr. Dobb's Journal of Computer Calisthenics 81 Orthodontia, Box E, Menlo Park, CA 94025 



Page 27 


353 


Complete source listing begins on the page following 
the Acknowledgements and References. 





S25 FOR 6502 EDITOR & ASSEMBLER 
HEX LISTING & MANUAL 


Dear Jim, Received: 77-Oct-4 

I have just developed the following 6502 software. 

MCS 6502 Resident Assembler/Text Editor 
ASSM/TED 

ASSM/TED. coresident in less than 4K (0200-1200, 0400-1400, 
1000-2000, 2000-3000 please specify version desired). Produces relo¬ 
catable object code on tape and can store executable code in memory 
during assembly. Using the relocating loader program, one can reload 
the relocatable object code at practically any location, can assemble 
from tape or memory. 17 commands are provided which direct the 
TED to load from tape (LO), assemble (AS), run a program (RU), 
create a relocatable object file (PU), record text on tape (RE) and 
other operations. 

ASSM has 16 pseudo ops, provides listing consisting of source, 
object code, and symbol table. The user specifies the upper and lower 
boundaries of source file and symbol table (practically no limit to 
number of labels). Labels may be up to 10 characters in length. Text 
file and symbol table feature variable length storage of each entry in 
order to conserve memory. 18 error codes pinpoint any errors. TED 
features auto line numbering, file formating, and a manuscript feature. 
This software supports up to 2 tape decks, CRT and keyboard, and an 
optional printer. Shipped preconfigured for TIM based sytems but 
info is supplied in order to modify for other systems. 

Hex listing and operators manual — $25.00. 

Carl W Moser 
3239 Linda Dr 
Winston-Salem, NC 27106 


Acknowledgements 

I would like to thank C. Jan and particularly J. Richardson for 
many helpful discussions in the planning stages of this project 
which was carried out at Stanford University. Richardson’s 
advice on the actual form that the Kernel should take was 
invaluable and the overall structure was guided largely by his 
comments. Finally, thanks is also due to professor D. Allison 
for his supervision of this project. 


References 

1. E. W. Dijkstra, “The structure of the ‘THE’ — Multipro¬ 
gramming System”, Comm. ACM 11(5) 1968,341-346. 

2. K. Donovan and S. Madnick, Operating Systems, McGraw- 
Hill Book Co., New York, 1974. 

3. P. Brinch Hansen, Operating System Principles, Prentice- 
Hall, Inc., New Jersey, 1973. 

4. B. H. Liskov, “The design of the Venus operating system”, 
Comm. ACM 15(3) 1972, 144-149. 

5. D. M. Ritchie and K. Thompson, “The UNIX timesharing 
system”, Comm. ACM 17(7) 1974, 365-375. 

6. A. C. Shaw, The Logical Design of Operating Systems, 
Prentice-Hall, Inc., New Jersey, 1974. 

7. D. C. Tsichritzis and P. A. Bernstein, Operating Systems, 
Academic Press, New York, 1974. 

8. R. Watson, Timesharing System Design Concepts, McGraw- 
Hill Book Co., New York, 1970. 

9. Operating Systems Survey, the Comtre Corp., editor: A. P. 
Sayers, Auerbach Publ. Inc., 1971. 


NAME-THE-USERS’-GROUP CONTEST 
ANNOUNCED BY HEATH 


news release Received: 77 Jun 

A five-year membership is the prize in a name-the-users’- 
group contest sponsored by computer hobbyists exchanging 
information on the use of Heathkits. The more obvious 
choices will be ruled out by Heath Co.’s objections to use of 
their trademarks by an independent organization. Entries and 
requests for further information should be sent to Charles 
A. Floto, 267 Willow Street, Apt. 27, New Haven, CT. 06511. 


PACE DOS SYSTEM FOR S4500 

news release Received: 77 Jul 21 

A new disk-operating system (DOS) for the PACE Micro-processor 
Development System substantially reduces the time to assemble, edit 
and execute microprocessor and microcomputer operating and applica¬ 
tion programs. Designated the IPC-16P/840 by the Microcomputer 
Systems group of National Semiconductor Corporation, the system 
includes a dual-floppy disk drive in a stand-alone enclosure, an interface 
circuit subsystem card, a read-only memory (ROM) card containing 
firmware and complete operating software on a diskette. 

The PACE DOS includes a comprehensive file management cap¬ 
ability, support for assembly programs. Editors, Linking Loaders, Utility 
Programs and Diagnostics. The system may be installed on any IPC-16P 
PACE Microprocessor Development System with 12K words of Ran¬ 
dom-access memory (RAM) and heavy-duty power supply. 

Each disk drive accepts a diskette capable of storing 2.528 megabits 
(158K words) of unformatted data. The diskettes have a maximum of 
268 hexidecimal or 616 decimal sectors each. To ensure media inter- 
changability between drives, a single-element read/write head straddles 
an erase element which provides a blank area between data tracks. 

The PACE DOS Interface card, and the ROM Firmware card are 
inserted in any available slots in the PACE Microprocessor Development 
System. The interface card provides protocol for the dual disk drive and 
an optional user-supplied cathlode-ray-tube- (CRT) terminal such as the 
LSI ADM-3 or the Beehive Bee. Firmware, located on the card, operates 
both disk mechanisms, formats data, and controls data transfers. 

Other firmware handles data formatting and transfer between the 
PACE central processing unit and the CRT terminal. CRT Input/output 
is RS-232 compatible at transmission rates of 300 baud or 1200 baud. 
A 20 milliamp current-loop I/O, with a 110 baud rate, is also available 
for teletypewriters. 

The PACE DOS software and firmware combines an effective Mon¬ 
itor, a comprehensive File Manager, and a convenient File I/O Subsystem. 
With the combination, users reduce development time, speed debug 
procedures and simplify program testing. 

The ROM-resident Monitor provides the user with simplified man¬ 
agement control over system configuration and program execution. 
Single-word commands supply linkage to paper-tape loader, card-reader 
loader, diskettes, and the DEBUG subsystem. 

The PACE DOS File Manager, residing on diskette, facilitates file 
maintenance, handles space allocation and provides file protection. 
The user has symbolic naming of program and data files as well as sim¬ 
plified control over directories, disk file specification, and data-file 
manipulation to and from disk. The system provides four levels of file 
protection to prevent accidental program destruction. 

THE ROM resident PACE DOS File I/O Subsystem contains a col¬ 
lection of software routines that are useful for building microcomputer 
or microprocessor-based programs. 

Upon naming source and destination files, the PACE Assembler 
automatically performs the assembly operation. The DOS EDITOR 
speeds generation of new source-statement text and aids modification 
of existing text in preparation for assembly. It can also be used to edit 
non-assembler-formatted source such as lists, tables, and directories. 

The DOS Linkage Editor (LINKEDIT) relocates and links one or 
more load modules produced by the assemblers into a main program. 
LINKEDIT is command driven accepting commands from the console 
and from paper tape, punched cards, or the diskette itself. 

Also included in the DOS Software are the PROM paper-tape/ 
punch utility (PACPRO) and a disk-patching utility (DPATCH). PACPRO 
permits transferring load modules from card or diskette to paper tape 
for PROM or ROM programming or from load module paper tape to 
PROM paper tape. DPATCH allows the user to make permanent patches 
to a main program file in a manner similar to the way temporary 
patches are made in memory with a Debug program. 

The PACE DOS, IPC 16P/840 is priced at $4500 which includes 
the dual-floppy disk with complete electronics and power supply, the 
PROM card for firmware routine, the DISK/CRT interface card and 
cables. Delivery is 30 days ARO. 

National Semiconductor Corporation, Microcomputer Systems 
Group; 2900 Semiconductor Drive, Santa Clara, CA., 95051. 


Page 28 Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Number 18 


354 



TITLE 'THE KERNEL SUBROUTINES' 


Seal1 letters will denote the contents of locations referred to 
br capital letters For example, cpp = (CPP), a = (A), etc. 


iNMPCB = Total nuaber of PCBs allocated to the operatins SYstea 
;NUMB = Total nuaber of aessase buffers allocated to the SYstea 
iMBPP = Nuaber of aessase buffers allotted to each process 
iNMPR = Nuaber of priorities allowed 


i 

0 < NMPCB , NMMB 

i 

0 < 

cpp =< NTPCB 

NH>CB 

EQU 

5 

MBPP 

E8U 

5 

NltlB 

EQU 

NMPCBfMBPP 

NMPR 

EQU 

5 

HASKQ 

EQU 

1 

MASKM 

EQU 

2 

MASKA 

EQU 

4 

ISIS 

EQU 

64 

LOAD 

EQU 

6 

ERROR 

EQU 

12 


0 < Wfi 


NHPCB < 32 


i ISIS entrr point 


iResister indexed address: 
RXAD MACRO REGPR,BSADD 
LX I H,BSADD 

DAB REGPR 

ENDM 


iResister indexed load: 

RXLD MACRO REG, REGPR, BSADD 
RXAD REGPR,BSADD 
MOV REG, M 

ENDM 


iResister indexed store 
RXST MACRO REG, REGPR, BSADD 
RXAD REGPR, BSADD 
MOV M,REG 
ENDM 


(HiL) * respr + BSADD 


res «■ (respr + BSADD) 


(respr + BSADD) <- res 


iResister direct load 
RDLD MACRO REG,ADDR 
LX I H, ADDR 

MOV REG,M 
ENDM 


res <- (ADDR) 


JZR 

MACRO 

REG,LABEL 

i If res=0 , then jubp to LABEL 


XRA 

A 



CMP 

REG 



JZ 

LABEL 



ENTM 



M6A 

MACRO 


i d <- 0 , e <- 6*a 


RLC 




MOV 

E,A 

, e <- 2*a 


RLC 




ADD 

E 

i a <- 6*a 


MOV 

E, A 



MVI 

D.O 



ENDM 



STDM 

MACRO 


> (D&E) is stored at adless in (HU.) 


MOV 

M, E 



I NX 

H 



MOV 

M.D 



ENDM 



STORE 

MACRO 




PUSH 

PSN 



PUSH 

H 



PUSH 

D 



PUSH 

B 



LDA 

CPP 

i Now to load STKP with sp 


RLC 




MOV 

E,A 



MVI 

D.O 

i d «• 0 


RXAD 

D.STKP 



XCHG 




LXI 

H, 0 



DAD 

SP 



XCHG 


i (DUE) <- sp 




i (HU.) <- address of STKP 


MOV 

M,E 



1NX 

H 



MOV 

H.D 



ENDM 



RSTOR 

MACRO 




RLC 


i First to load sp with value froa : 


MOV 

C, A 



RXAD 

B, STKP 



MOV 

E.H 



I NX 

H 



MOV 

D,M 



XCHG 




SPHL 




POP 

B 



POP 

D 



POP 

H 



POP 

PSN 



ENDM 



TRNAM 

MACRO 




.Transfer & bYtes startins in location indicated bY HU. to location 
.indicated bY D8£ Note that b = 0 at end. 


JNZR MACRO REG,LABEL 
XRA A 
CMP REG 

JNZ LABEL 

ENDM 


If res is not 0, then juae to LABEL 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics 8< Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


355 



YY 


INK H 

jmf xx 

ENDM 


UNLNK MACRO LAST,NEXT 

iUnlink 4 PCB with index t (which is held in E&C) from the doublv- 
i linked list which uses pointers LAST and NEXT. We assume that 
, e = NEXTltl and a = t 

" “ = x 

e 
x 
C 


RXLD 

C, B, LAST 

, c <- (lAST C13 

RXST 

E. B, NEXT 

, (NEXTCxl) <- 

RXST 

C, D, LAST 

, (LASTCy]) <- : 

MOV 

C, A 

; Restore t to 1 

ENDM 



ORG 

8000H 

,- Origin is set 


THE DATA STRUCTURE 


N#> 

EQU 

* - 1 


ORG 

* + NMPCB 

LP 

EQU 

» - 1 


ORG 

$ + NMPCE 

NP 

EQU 

$ - 1 


ORG 

* + NMPCB 

BSM 

EQU 

t - 2 


ORG 

* + 2*NMPCB 

STAD 

EQU 

* - 2 


ORG 

* + 2*NMPCB 

STKP 

EQU 

i - 2 


ORG 

$ + 2*NMPCB 

STACK 

EQU 

* - 10 


ORG 

i + ICHtNMPCE 


Used to store the resister pairs B, 
D, H, and also the PSW and PLC 


THE KERNEL SUBROUTINES 


CPF’ BB 

AP BB 

FF BB 

FMBF BB 


AS 

DB 

1 


DB 

0 

PRP 

ORG 

$ + NMF’R 

NMR' 

ORG 

* + NMF’R 


, The 

storase alloc 

MBSP 

EQU 

t - 1 


ORG 

* + NMMB 

NMBP 

EQU 

i - l 


ORG 

* + NMMB 

ASTAT 

EQU 

f - 1 


ORG 

$ + NMMB 

MESS 

EQU 

* - 2 


ORG 

$ + 2*NMMB 


. The 

storage alloc 

NAM 

EQU 

t - 6 


ORG 

$ + 6*NMPCB 

EXC 

EQU 

* - 1 


ORG 

$ + NMPCB 

PR 

EQU 

» - 1 


ORG 

i + NMPCB 

MBC 

EQU 

* - 1 


ORG 

$ + NMPCB 

WDMK 

EQU 

$ - 1 


ORG 

1 + NMPCB 

RDMK 

EQU 

* - 1 


ORG 

* + NMPCB 

FMF’ 

EQU 

$ - 1 


ORG 

$ + NMPCB 

FOP 

EQU 

i - 1 


ORG 

* + NMPCB 

FAR 

EQU 

t - 1 


ORG 

$ + NMPCB 

ABF' 

EQU 

* - 1 


ORG 

$ + NMPCB 

NSWP 

EQU 

t - 1 


ORG 

t + NMPCB 

SEMP 

EQU 

$ - 1 


ORG 

* + NMPCB 

LAP 

EQU 

* - 1 


ORG 

* + NMPCB 

Page 30 



BLOCKED bit 
PROGRAM bit I 

(EXCltl) = XXOOOOXX 

A A 

I STOPPEB bit 
RESIDENT bit 


SCHED (INDEX) 


It is assumed that interrupts were disabled before the scheduler 
was called. The inteser INDEX is passed to the routine in the B 
resister and has the followins interpretation 


INDEX 


action to be taken and initial data 


If there is another ready process of the same pri¬ 
ority as the current one, then the next such after 
the current one is scheduled. (The current process 
will be rescheduled if it is the only ready process 
in its eueue. ) Otherwise, we try to schedule the 
first ready process of 1 outer priority. If there is 
none, then we HALT We assume that 
c - s = (PRIcpfI! 

The process corresponding to the PCB with index 
INDEX is scheduled We assume that 
c = r = IPRIINBEX3). 


> 0 


, At the end we have b = 0. 


SCHED 


•STORE 
MOV 
MV I 
ORA 
JZ 


A, B 

B, 0 
A 

ROBIN 


Jump is INDEX 


•SCHOO 


, Entry point for initialization 
; routine 

STA CPP i cpp * INDEX 

MOV E, A , e <- INDEX 

MOV D, B , d <- 0 

RXLD E.B.NAP . e <- x = (NAFLINDEX]) 

RXST E,B,PRP i (PRPIrl) <- x 

, PRFIrl now points to the PCB followins the one with 
, index INDEX 


SCHO RSTOP. 
El 
RET 


ROBIN 


RXLD A, B, NMR 
ORA A 

JZ SCH2 


i Return 
i a * (NMR[<0) 

, Jump it there is no ready process 
, of priority 1 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


356 










, The 

case where 

(NMRIil) > 0 


RXLD 

E. B, PRP 

, e e t = (PRPIil) 


MOV 

D.B 

, d <- 0 

SCHl 

RXLD 

A, D.EXC 

a *• lEXCItl) 


ANI 

0000001OB 



JNZ 

NEXT 

Jump if this process is HOCKED 


RXLD 

A, D. NAP 

. a C- !NAPIeI) 


RXST 

A, B. PRP 

i The priority pointer is set 
• to the process after the one 
, that is now t.eins scheduled 


LXI 

H, CPP 



MOV 

M.E 

, cpp O t 


MOV 

A.E 



JMP 

SCHO 


NEXT 

RXLD 

E.D.NAP 

, e e (NAPltl) 


■JMP 

SCHl 


SCH2 

INR 

C 

. Case where (NMRIel) = 0 


MVI 

A, NMPR 

, a * NMPR 


SUB 

C 



■JR 

ROBIN 

. Jump if s =< NMf'R 


El 



HALT 

HLT 


; Case of no ready processes 


P UD. SEM] 


iSEM is the address of the semaphcre and is passed to the routine in 
.the D and E resisters. ID is a 1 byte inteser seecifvins which slobal 
isemaphore SEM is referrins to. if any. It is passed to the routine 
i in the C resister 


ID semaphore 


1 

i 2 


AS 

i 0 

DSM or 

any other semaphore local 

' 


to a process 

;Neither b 

nor c mar be 

zero at the end if the semaphore had a 

; non- 2 ero value. 


P: D1 



XCHG 



JZR 

M, PZZ 

, Jump if value of semaphore is 0 

BCR 

M 

. Decrease value of semaphore by 1 

El 



RET 


i Return 

PZZ MOV 

A, C 

. a e ID 

XCHG 



RDLD 

C, CPP 

, c <- CPP 

MVI 

B. 0 

. b e 0 

RXST 

A, B, 3EMP 

i (SEMPCcppI) <- ID 

XCHG 



INX 

H 

, (Hto_! <• addr ess of FWPISEM] 

MOV 

E.M 

i e <• t = index of first process R 
. waitins on this semaphore 

MOV 

D.B 

, d * 0 

XRA 

A 


PXX. CMP 

E 


•JNZ 

FHXT 

, Jijffip if other processes waitins 
. on semaphore 

MOV 

M.C 

, fwp or (NSWPttl) e cpp 

RXST 

B, B, NSWP 

: (NSHPlcppl) <- 0 

RXLD 

A, B, EXC 

. a <- (EXCIcppI) 

Number 18 


Dr. Dobb's Journal of Computer Calisthenics 


ORT 

0000001 OB 


MOV 

M, A 

. BLOCKED bit of current process 
• bias been set to 1 

RXLD 

C.B.PR 

. c <- t = 'PRC cpp!) 

RXAD 

B.NMR 

. (HU.) <- address ot NMRti] 

BCR 

M 

. (NMRIil) *■ (NMRIi])-l 

JMP 

SCHEB 

. Note that b = 0 and c = i 

RXLD 

JMP 

E, D, NSWP 

PXX 

. e v (NSWP[13) 


V [SEMI 


.SEM is the address of the semaphore and is passed to the routine 

.in the B and C resisters 

.NOTE The D resister is not used 


V 

DI 




MOV 

H.B 



MOV 

L.C 



SHLD 

VTMP1 

i Store the address of the semaphore 


INX 

H 

i (HU.) e address of FWP1SEM] 

VXX 

JNZR 

M, VYY 

; Jump if at least one (other) process 
; is waiting on this semaphore 


LHLIl 

VTMP1 

; (HtrL) <■ address of VAL1SEM] 


INR 

M 

; Increase value of the semaphore by 1 

VOUT 

El 




RET 



VYY: 

SHLD 

VTMP2 

i Store address of the FWP or NSWPItl 


MOV 

C.M 

; c «• t = index of the next PCB whose 
. correspondins process R is waitins 
i on this semaphore 


MVI 

B.O 

i b * 0 (b may be non-zero from START) 


RXLD 

A, B, EXC 

, a * (EXCCU) 


RRC 




JNC 

VZZ 

. Jump if Rs STOPPED bit is 0 


RXAD 

B, NSWP 

, (HfcL> e address of NSWPItl 


JMP 

C 

X 


VZZ 

RLC 




ANI 

01000000B 



MOV 

M, A 

, EXCtt] now has BLOCKED (and 
, STOPPED) bit set to 0 


RXST 

B, B. SEMP 

; (SEMPItl) (- 0 


RXLD 

A. B, NSWP 

, a <• (NSWPCtl) 


LH.D 

VTMP2 

i Load address of FWP or previous NSWP 


MOV 

M, A 

i R has now been removed from the nueue 
. of processes waitin9 on semaphore 


RXLD 

A, B. PR 

i a <• r = (PR[t]l 


MOV 

E.C 

i e e t . i e , store t 


MOV 

C. A 

. c <- r 


RXAD 

B.NMR 

, (HU.) <- address of NMRtr] 


INR 

M 

, NMRtr] (- NMRtr] + 1 


RtLB 

C, CPP 

i C <" CPF 


RXAD 

B, PR 

i (HU.) «■ address ot PRIcpp] 


Of 

M 



JP 

VOUT 

i Jump if r e = (PRIcpp]) 


; Case where r < i 



MOV 

C. A 

i c e r 


MOV 

B.E 

i b * t 


JMP 

SCHED 


VTMP1 

BW 

0 


VTMP2 

DU 

0 



& Orthodontia, Box E, Menlo Park, CA 94025 Page 31 


357 





RESULT := SCAN (NAME) 


RESULT 


Status 


;NAME is passed to this routine in the H and L resisters and is the 
;address of the new name. The routine returns an inteser RESULT in 
ithe A resister with the followins interpretation: 

; RESULT Meanins 


; 1 name belonss to a process 
i 2 name belonss to a prosram 
i 3 name not found 

.At the end. the C resister will contain the index t of the last RGB 
iscanned If RESULT is 1 or 2. then b = 0 . 


SCAN 

SUB 

LBLK 


i Store NAME in LBLK (from parameter 
i block for ISIS load routine) 


LDA 

AP 


i A now holds the index t of the first 
i PCB to look at. We assume that t 0. 

SCI: 

MOV 

C, A 


i c <• t 


M6A 



i d * 0 . e e 6*t 


RXAD 

B. NAM 




XCHG 



; (BfcE) <- address of NAM16*tl 


LHLB 

LBLK 


i (HM.) <• NAME 


MV I 

B> 6 



NXTCH: 

LDAX 

B 


i Next character of name in PCB is 
i loaded into A 


CMP 

M 




JZ 

MTCH 


i Jump if characters match 


MV I 

B. 0 


i Reset B to 0 


RXLB 

A.B.NP 


i a f (NPltl) 


ORA 

A 




JNZ 

SCI 


. Jump if there are mot'e processes 

; to scan 


MV I 

A, 3 


i RESULT t 3 


RET 



. Case where name was not found 

MTCH 

DCR 

B 


. b <■ b-1 


JZ 

SC2 


i Jump if all 6 characters match 


INX 

B 




INX 

H 




JMP 

NXTCH 




i Cas 

e where a 

PCB with 

the risht name was found. Resister C 


. contains the 

index of 

that PCB. Also, b = 0. 

SC2: 

RXLB 

A, B, EXC 


i a <■ (EXCItl) 


RLC 





JC 

SC3 


; Jump if this PCB corresponds to a 





i prosram 


MV I 

A, 1 


i RESULT <• 1 


RET 




SC3: 

MV I 

A, 2 


, RESULT «• 2 


RET 





RESULT = CREA 


iThis subroutine performs the basic function of settins up a F'CB for a 
iprosram which either is already in memory or which has been loaded 
iinto memory from the disk. It is assumed that LBLK holds the address 
.of the name of the process which is to be created. The routine re¬ 
turns an inteser RESULT in the D resister which specifies any errors 
i that mar have occurred: 

Page 32 Dr. Dobb's Journal of Computer Calisthenics & 


i 0 

no error 

i 1 

error while attemptins to load file from 


disk - probably no file with that name 

i 3 

no free PCBs available 


CREA: 

BCR 

A 




JZ 

CRO 

* 

Jump if name corresponds to a prosram 

CROO 

MV I 

C.LOAB 

» 

i 

Entry point for initialization 
routine 


LX I 

B.LBLK 




CALL 

ISIS 

i 

Load prosram from disk usins ISIS 


LDA 

STAT 

; 

Test error status 


ORA 

A 




JZ 

CR1 


Jump if no error in loadins 


i Case of error while attemptins to load file from disk. Note 


i that 

ISIS specifies 

the 

error. 


MV I 

C, ERROR 




LX I 

B.EBLK 




cm 

ISIS 

i 

Type out error messase on console 


NVI 

D. 1 

i 

RESULT <■ 1 


RET 





i Case where name corresponded to a prosram. We assume that 


i b = 

0 and c = t . 

where t is the index of the PCB for this 


i prosram 



CRO: 

RXLB 

A.B.EXC 


a <■ (EXCItl) 


AN1 

01000000B 




ORI 

00000001B 




MOV 

M. A 


(EXCItl) <• 0X000001 


i NOTE 

Settins EXC here 

means that in START we have to reset 


i the STOPPEB bit to 0; however-, we save fetchins EXC in CREAT. 


MOV 

A. C 

1 

a <• t 


M6A 



d «• 0 . e * t*t 


JK> 

INIT 




i Prosram is now loaded 


CR1: 

LX I 

B.FP 


(Btf) ♦ address of FP 


LDAX 

D 


a e fp 


ORA 

A 




JNZ 

CR2 


Jump if a free PCB is available 


i No more free PCBs are available 


MVI 

0,3 


RESULT <■ 3 


RET 




CR2 

MOV 

Ci A 


C now holds the index t of a free PCB 


MVI 

B, 0 


b «• 0 


RXLB 

A, B.NP 


a e (NPltl) 


STAX 

B 


The FP is updated 


, Now 

to store the name of the process in the PCB name field. 


MOV 

A, C 


a e t 


M6A 



d e 0 . e * fe*t 


RXAB 

B, NAM 




XCHG 



(B&E) »- address of NAMI6*tl 


LHLB 

LBLK 


(HM.) * NAME 


TRNAM 



Transfer name 

CR4: 

RXAB 

B, EXC 


(HM.) * address of EXCItl 


MVI 

M, 00000001B 


(EXCItl) * 00000001, i. e., STOPPEB 
bit is set 


LHLB 

ENTRY 




XCHG 





RXAB 

B, STAB 




BAB 

B 


(HStL) <- addr ess of STABI2*tl 


STBM 





i Note 

that b = 0 , 

that 

the execution-state field has been set 


Orthodontia, Box E, Menlo Park, CA 94025 Number 18 


358 











RESULT := CREAT (NAME) 


to 0X000001 . and that STADE2t.2t+l1 contains the initial 


starting address of this process. 

Next we initialise the remaimns fields of the PCB. 


IN1T RXAD 

B, PR 


MVI 

M, 4 

, (PRttl) e4, i. e., the priority is 
, set to a default value of 4 

LXI 

D.NMPCB 

, Note that we still have d = 0 

DAB 

D 


MVI 

M,MBPP 

i (MBCCtl) <■ MBPP 


, The HOME. ROME, FMP, FOP, FAP, ABP, NSWP, SEMP, LAP, NAP', 
, and LP for this process are now set to 0 
MV I A, 11 

CR5 DAD D 

MV I M,0 

BCR A 

JNZ CR5 


Now to link the PCB at the head of the all-PCB-sueue and to 
update the AP 


DAD 

D 

, (H&L) e address of NPCtl 

LDA 

AP 


MOV 

M, A 

, (NPCtl) f ar 

ORA 

A 


JZ 

CR6 

i Jump if ap = 0. This case occurs 
; only durins initialization 

MOV 

E, A 

i (tap 

RXST 

C, D, LP 

, (LPCapll <- t 

MOV 

A, C 

i a e t 

STA 

AP 

, ap e t 


Next to set the DSM and STEP 


RLE 


, a f 2*t 

MOV 

E,A 

, e e 2*t 

RLE 


i a * 4*t 

ADD 

C 

i a * 5*t 

MOV 

L, A 

i 1 ♦ 5*t 

MOV 

H, B 

, h e 0 

DAD 

H 


XCHG 


i (Dt£) e 10*t 

MOV 

C,L 

i c e 2*t 

RXST 

B.B.DSM 

, The DSM field is set to 0 

I NX 

H 

• N N 

MOV 

M,B 

M N II 

RXAD 

D,STACK 

, (Hid.) <■ address of STACEC10H1 

XCHG 



RXAD 

B, STEP 

, (Hid.) e address of STKPC2U] 

STDM 


; (STEPC2H1) «■ address of STACK!10*t] 

XCHG 


) (Hid.) e address of STACK[10»tl 


, Now to set the top 8 bytes of the stack to 0 so that 
i when a process is scheduled for the first ti»e its 
) resisters will all be initialised to 0 


MVI 

A, 8 


MVI 

M, 0 


INX 

H 


OCR 

A 


JNZ 

CR7 


XCHG 


(Dl£) e address of STACK!10*t*81 

RXLD 

A, B, STAD 


STAX 

D 


INX 

D 


INX 

H 


MOV 

A, M 


STAX 

D 

The star-tins address for the new pr 
sram is now stored at the botto# of 
the stack. This address is loaded 
into the PLC when the process is 
started. 

MOV 

D, B 

RESULT * 0 

RET 


Note that c 5 2*t and b = 0 . 


NAME is passed to this routine in the B and C resisters and is the 
address of the name of the process to be created. The routine re¬ 
turns an inteser RESULT in the A resister with the followins in¬ 
terpretation: 

RESULT event 


0 routine completed its task successfully 

1 error while attenrtins to load file fro* 

disk - probably no file with that na»e 


i 2 

name already used by another process 


or prosra* 

i 3 

no more PCBs available 


CREAT: 

PUSH 

B 

, Store NAME on the process stack 
: Note that an interrupt could occur 
i here, so that one cannot simply 
i store NAME in memory 


LXI 

D, AS 



MVI 

Ci 2 



CALL 

P 

i PCAS1 


POP 

H 

i (HltL) «■ NAME 


CALL 

SCAN 



SUI 

3 



JM 

CR10 

i Jump if name not found amons current 




, process or rro9ram names 


MVI 

D, 2 

; RESULT <■ 2 


i NOTE 

: EXIT is a 

slobal address which is used by almost all 


i the routines. 


EXIT 

LXI 

B, AS 



CALL 

V 

i VCAS1 


MOV 

A, D 

, Set RESULT 


RET 




CR10 CALL 

CREA 

JMP 

EXIT 



, The 

parameter 

block for the ISIS load routine. It is used by 


i the routines 

SCAN, CREA, CREAT, START 

LBLK 

DU 

0 

, Pointer to filename 

BIAS 

DU 

0 

, Bias address 

RETSU. 

DU 

0 

Return switch 


DU 

ENTRY 

i Star-tins address for the prosram 
i which was loaded 


DU 

STAT 

, Status (returned) 

ENTRY 

BS 

2 


EBLK 



i The parameter block for the ISIS 
, error- routine (used by CREA). 

STAT 

DS 

2 



DU 

STAT 



RESULT = START (NAME,PRIORITY) 


,NAME is passed to this routine in the B and C resisters and is the 
.address of the name of a process which is to be started. The E 
;resister holds the inteser PRIORITY which specifies the priority 
ithat the new process is to have. A value of OFFH for PRIORITY is 
.interpreted to mean that the new process is to be started with 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 33 


359 





(NMRlil) <- (NMRliD+l 


iwhatever priority it already had. RESULT is an lnteser which is 
.returned bv the routine in the ft resister. It has the t'ollowins 
iinterpretation 


RESULT 


event 


START 


0 routine completed its task successfully 

1 error while attemptins to load file from 

disk - probably no file with that name 

2 specified process was not stopped 


PUSH 

B 

i Store PRIORITY on the stack 

PUSH 

B 

i Store NAME on the stack 

LXI 

Bp AS 


MV I 

Ci 2 


CALL 

P 

, PtASl 

POP 

H 

, (HicL) f NAME 

CALL 

SCAN 


BCR 

A 


JNZ 

NTFNB 

. Jump if name not found amons current 


i process names 


Note that C now contains the index t of the RGB with the name 
we were lookins for- and that b = 0 


i Now 

to check the STOPPED 

bit 

RXLB 

A, B, EXC 

a <- (EXCltl) 

RRC 



JC 

ST1 

Jump if process was stopped 

MV I 

B.2 i 

RESULT <- 2 

POP 

H i 

So as not to leave PRIORITY on 
stack 

JMP 

EXIT 


i Next 

to store the status 

of the BLOCKED bit 

RLC 

i 

a <- (EXCltl) 

ANI 

01000010B 


MOV 

M,A 

STOPPED bit in EXCltl lias now 
been set to 0 

ANI 

0000001OB 


STA 

ST4+1 ; 

Store the BLOCKED bit fx check¬ 


i 

ins later 

■ Now 

to store PRIORITY 


POP 

D i 

e <- PRIORITY 

MOV 

B, B 

d <- 0 

MV I 

A, OFFH i 

a <- OFFH 

CMP 

E 


RXAD 

B,PR i 

(H&L) <- address of PRltl 

JNZ 

ST7 i 

Jump if prixity is to be chansed 

MOV 

E.M - 

e <- old prixity 


ST3 


Next to compare the priority s 
with r = (PRIcppI) 


of the new process 


ST4 


MOV 

AiE 

i a <- s 

RBLD 

E. CPP 

i e <- cpp 

RXAB 

B. PR 

i (H&L) C- address of PRIcppI 

CMP 

M 


PUSH 

PSU 

• Save comparison of e and r 

, Next 

to check 

the BLOCKED bit 

MOV 

Ei A 

. e <- s 

MV I 

A, 0 

, NOTE: The BLOCKED bit has 
i stxed here by an earlier 
i instruction 

ORA 

A 

, Test the BLOCKED bit 

JNZ 

ST5 

• Jump if the new process is 

RXAD 

B,NMR 



I NR M 


i Now to link the new RGB into the appropriate active eueue 
i at the correct place. 


RXAD 

D.PRP 

; (HbL) <- address of PRPtsl 

JZR 

M.ST9 

; Jump if there are no processes 
i of prixity s 

POP 

PSW 

■ Restore comparison of e and r. 
i Note that a <- s . 

PUSH 

PSW 

, Resave comparison fx later 

JNZ 

STB 

i Jump if r does not eeual i . 
i Note that e - s 


;Case where i = r 
RDLD E,GPP 
GALL LINK. 


i e <- cpp 

i Link the new RGB in front of the 
. RGB for the current process 


i Now 

to check 

if cpp = (PRPtsl) 

MOV 

E, A 

i e <- e 

LDA 

CPP 


RXAD 

D, PRP 

, (H&Li <- address of PRPlsl 

CMP 

M 


JNZ 

STt 

. Jump if cpp and (PRPtil) are 
. unequal 

MOV 

M. C 

, (PRPtil) <- t 

POP 

PSW 

i Restore the sisn bit 

JP 

EXIT 

i Jump if i >= r 

. Case 

where the new process has hishx prixity than the 

, current one, 

so that it should be scheduled to run 

MOV 

B.C 

, b <- t 

MOV 

Ci E 

i C <- S 

PUSH 

B 

i Stxe i and t 

LX1 

B. AS 


CALL 

V 

, V1AS1 

POP 

B 


01 



JMP 

SCHED 


MOV 

M,E 

. (PRltl) <• FRI0R1TY 

JMP 

STS 


, Case 

whxe r 

does not eiual i 

MOV 

E.M 

, e <- (PRPlil) 

CALL 

LINK 

i Link the new PCB in front of the 


. RGB pointed to bv the PRPlil 
i pointer 


JMP 

ST6 




MOV 

MiC 

, (PRPlil) 

<- 

t 

RXST 

C, B, NAP 

; (NAPltl) 


t 

RXST 

C, B, LAP 

, iLAPltl) 

<- 

t 

JMP 

ST6 





CALL 

CREA 


JNZR 

D, STO 

■ Jump it error in rrosram 

MOV 

A, C 

; a * 2*t i where t is the 
i the newly xeated PCB 

RRC 



MOV 

C, A 

i c*t 

RXLD 

A, B, EXC 

• a <- (EXCltl) 

ANI 

01000000B 


MOV 

M, A 

, (EXCltl) <- 0X000000 

XRA 

A 

i a (- 0 

.JMP 

ST2 



Page 34 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


360 




LINK 


RESULT 


even l 


. 0 routine completed its task successfully 

iThis subroutine is used by START to link the PCB with index c in 1 name not found amons current process names 

;front of the PCB with index e into the doubly-linked ready list. 





STOP' 

PUSH 

B 

• Store NAME on the stack 

LINK RXST 

E, B, NAP 



LX1 

B, AS 


RXLB 

E, B, LAP 



MV I 

Ci L 


MOV 

Mp C 



CALL 

F 

, PEAS! 

RXST 

C, B, NAP 



POP 

H 

, !HMJ e NAME 

RXST 

E, B, LAP 



JZR 

H, STP2 

i Jump if current running process is 

RET 




CALL 

SCAN 

, trrins to stop itself 





BCR 

A 


i 


STOPO 


JZ 

STP1 

i Jump if name found amons current 







• processes 

. The main task of this routine is to unlink a process PCB from the 


MV I 

B, 1 

, RESULT e 1 

i ready eueue and to adiu 

st the relevant priority pointer. It is 


JMP 

EXIT 

. See CREAT 

; called by both the STOP 

and REMOV routines. We assume that b=0 . 





i c=t p and a 

i=( (EXCltl) 

shifted risht 1 ! , where t is the index 





; of the PCB whose corres 

ponding process is to be stopped. Alsoi 


, We now have 

c = 0 and b = t , where t is the index of the 

i resisters H and L are a 

ssumed to hold the address of EXCltl. 


, PCB 

with the 

name of the process Q that we were lookins for 

.We still hac 

'e b = 0 and c = t at the end. 

STF'l 

RXLB 

h. E, EXC 

, a * (EXCltl) 





RRC 







JC 

EXIT 

. Jump if process was STOPPED 

STOPO RLC 







ORI 

OOOOOOOlB 



CALL 

STOPO 


MOV 

Mi A 

, Set STOPPED bit to 1 


JMP 

EXIT 

i Note that d = 0 

ANI 

0000001OB 






RXLB 

E, B, FR 

; e e e = Ills priority 


i Case where process is trrins to stop itself. 

MOV 

BiB 

■ d * 0 

STP2 

RUB 

C.CPP 

i c <- CPP 

JNZ 

STPOl 

i Jump if 0 is blocked 


MV I 

B.O 






RXLB 

A, B, EXC 

. a * (EXCIcppI) 

RXAB 

B. NMR 

i (HSdJ f address of NMRlol 


CALL 

STOPO+1 


BCR 

M 

, (NMRlil e (NHRlil)-l 

NEWF 

RXLB 

B, B, PR 

i REMOV uses this entry point 
i d e s = (F'RIcppD 

; Now 

to remove the process from its circular list of active 


LXI 

B. AS 


. processes 



CALL 

V 

, V1AS1 

STPOl RXLB 

A, B, NAP 

■ a e (NAFltl/ = y 


MUV 

Ci D 

i c <■ s 

RXAB 

B, PRF' 

, (H&L) * address of PRPtal 


MV1 

B, 0 

i b <- 0 

CMP 

C 



DI 



JZ 

STP03 

■ Jump it Cl was the only active 
, process of priority i , i. e ., y = t 


JMP 

SCHEB 


MOV 

Ei A 

, e <- y 





MOV 

A,C 

i a <- t 





CMP 

M 

i 



RMV 

JNZ 

STP02 

Jump if t is unequal to (F'RF'lel) 







iThis subroutine is called by REMOV to free the resources of the 

MOV 

M. E 

. iPRPCal) e y 

i pr ocess that 

is about 

to be removed. 

STP02 UNLNK 
RET 

LAP,NAP 

. Unlink Os PCB from active list 







RMV: 

ANI 

01000000B 

STP03 MOV 

M, B 

i iPRPlil). p 0 

, List of active pnoritv-e processes 


JNZ 

RV11 

i Jump if 6 corresponds to a permanent- 
i 1 y resident prosram 

RET 


; is now empty. 


RXLB 

E, B,NP 

i e e (NPCt])=v 




LDA 

FP 






MOV 

Mi A 

i (NF'ltl) e fp 





MOV 

A, C 






STA 

FP 

i fp e t 

• 

RESULT = STOP' '.NAME) 


i Qs PCB is now 

back on stack of free PCBs 





LBA 

AP 


NAME is pas: 

;ed to this 

routine in the B and C resisters and is the 


CMP 

C 


.address of I 

the name of 

a process which is to be stopped. If b = 0 i 


JZ 

RV12 

i Jump if ap = t i i. e. ■ Q is the 

,then the current proces 

s is trying to stop itself. RESULT is an 




i first process in the sueue 

.integer which is returned by the routine in the A register. It 
p fias the following interpretation: 


MOV 

A,C 

, a <- t 

Number 18 


Dr. Dobb s Journal of Computer Calisthenics & Orthodontia, 

, Box E, Menlo Park, CA 94025 Page 35 


361 




RV1 


RV2. 


RV3 


RV4 


RV5 


RVfc 


RV7: 


UNLNK 

LP.NP 

i Unlink Qs PCB from the list of 


JNZR 

M, RV3 




i all PCBs 


RET 



i Now 

to return all 

messase buffers 


; Cas 

e where process 

is waitins on AS semaphore 

RXAD 

B, FMP 

i (HfcL! <• address of FMPltl 

RV8. 

RXLD 

C, B, NSWP 

, c <- (NSWPltl) 

JZR 

M.RV3 

i Jump if messase sueue is empty 


LXI 

H. AS 






1NX 

H 

, (HIcL) <- address of FWPlf 

PUSH 

B 

. Store t on stack 


MOV 

E.M 

. e <- x = index of first i 

MOV 

E.M 

i e * (FMPltl)= 2 =index of messase 




i waitins on AS 



> buffer 

RV9 

CMP' 

E 


RXLD 

C, D, MBSP 

; c * (MBSPC z3)=u 


JZ 

RV10 


RXAD 

B.MBC 

i (HtdJ <- addr ess of MBClul 





INR 

M 

i (MBClul) e (MBCtuD+1 


RXLD 

E, D, NSWP 

i e <- (NSUPCxl) 

RXAD 

D, NMBP 

. (H!cL) <■ address of NMBP[ 2 ] 


JMP' 

RV9 


CMP 

M 

i Note that a = 0 





JNZ 

RV2 

i Jump if more messases in sueue 

RV10 

MOV 

M.C 






RET 


, Note that d = 0 

i Now 

to link all the buffers in the messase sueue back 





i on ) 

the free stack 


RV11: 

OR I 

10000000B 


LDA 

FMBP 

i a * fmbp 


MOV 

M, A 

1 Reset EXC field 

MOV 

M. A 

i (NMBP! 2 )) <• fmbp 


MOV 

DiB 

, d <- 0 

POP 

B 



JMP' 

RV1 


RXLD 

A, B, FMP 

, a <• (FMPltl) 





STA 

FMBP 

i fmbp «• 2 

RV12 

MOV 

A.E 

i a <- y 





ORA 

A 

1 Test y 

. Now 

to return all 

returned-answer buffers 


JZ 

HALT 

i Jump if we were asked to 


RXAD 

B. FAP 

i (HfcL> + address of FAPltl 

JZR 

M.RV5 

1 Jump if answer sueue is empty 

PUSH 

B 


MOV 

E.M 

i e ♦ (FAPltl) = 2 . i. e.. save 
i index of first buffer 

MOV 

C.M 

1 c * 2 

RXAD 

B. NMBP 

. (HfcL) e address of NMBP! 2 ] 

CMP' 

M 

; Note that a = 0 

JNZ 

RV4 

i Jump if more buffers 

LDA 

FMBP 


MOV 

M, A 

i (NMBPC 2 ]) <- fmbp 

MOV 

A.E 

i a e 2 

STA 

FMBP 


POP' 

B 


. Now 

to return all 

Question buffers • 

r~ 

X 

H, FOP 


CALL 

RMVQA 


. Now 

to return all 

answer- buffers 

LXI 

H, ABP 


CALL 

RMVQA 


, All 

buffers from 

messase system have now been returned 

1 Next 

„ to clear those sender fields in the messase buffers 

, which refer- to the process which is beins removed 

MOV 

A, C 

, a <- t 

LXI 

D.NMMB 


INF: 

D 


LXI 

H, MBSP 


1NX 

H 


CMP' 

M 


JNZ 

RV7 


MV I 

M, 0 


DCR 

E 


JNZ 

RV6 


DCR 

D 


JNZ 

RV6 


. Finally, to remove Os PCB from any semaphore sueue 

RXAD 

B, SEMP 

i (HfcL; <- address of SEMltl 


STA 

JMP 


AP 

RV1 


remove the only process in 
existence 

dp <- y 


RMVQA 


RV13. 


DAD 

B 


JZR 

M, RV15 


PUSH 

B 


MOV 

C. M 


RXLD 

E, B, NMBP 


MOV 

MiB 

i Set memory to 0 

PUSH 

D 


RXAD 

B,ASTAT 

• (HfcL) e address of ASTAT1 2 ] 

MV1 

M, 1 

. (ASTAT1 2 ]) <■ 1 

RXLD 

E, B, MBSP 


MOV 

B.C 


MV1 

C.MASKA 

; c f 00000100 

LXI 

H, FAP 


CALL 

SSUB 


POP 

B 


JNZR 

C.RV13 


POP 

RET 

B 



RESULT = REMOV (NAME) 


•NAME is passed to this routine in the B and C resisters and is the 
■ address ot the name of a process which is to oe removed It' b = Oi 
, then the process is trnns to remove itself RESULT is an inteser 
.which is returned bv the routine in the A resister with the fol- 
.lowins interpretation: 


Page 36 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


362 



RESULT 


event 


RESULT .= SENDM (MESSAGE.NAME) 


0 routine completed its task successfully 

1 name not found amons current processes 

and rrosrams 


PUSH 

B 

i Store NAfE on the stack 

LX1 

D, AS 


MVI 

Ci 2 


CALL 

P 

, PEAS3 

POP 

H 

i (HU.) * NAME 

JZR 

H, REM3 

, Jump if this process is tryiris to 
i remove itself 

CALL 

SCAN 


SUI 

3 


JM 

REM1 

i Jump if name found amons current 



i processes or prosrams 

MV! 

D.l 

, RESULT e 1 

JMP 

EXIT 

i See CREAT 

i We 

now have b 

= 0 and c = t i where t is the index of the 

i PCB with the name of the process G that we were lookins for-. 

RXLD 

A, E, EXC 

, a * (EXCCtl) 

PUSH 

H 

i Save addr ess of EXCltl 

RRC 



CNC 

STCiPO 

■ Stop Q if it is not already stopped 

. We 

still have 

b - 0 and c = t 

POF 

H 

■ (HU.) address of EXCltl 

MOV 

A,M 

. a C- iEXCltl) 

CALL 

RMV 


JMP 

EXIT 

, Note that d = 0 

i Cas 

;e where pro 

•ess is tr-yins to remove itself 

RBLD 

C CPP 

i c <- CPP 

MV! 

BO 


RXLD 

A.B EXC 

a > (EXCTcppI) 

PUSH 

H 

i Save address of EXCIcpp] 

CALL 

STOPO+1 


POP 

H 

fPiVL ■ > address of EXCDoppI 

MOV 

A, M 

a - EXCicpp-l) 

PUSH 

B 


CALL 

RMV 


POP 

E 


JMP 

NEWP 

i See STOP 


THE MESSAGE SYSTEM 


iThe next four subroutines iSENDM, SENDG. SENDA, ana »4hIT . term the 
ibasis for the messase system between processes. SENDM allows one 
• process to send a messase to another. SENDG also is used to send 
.a messase, except that this time an answer is expected bacx. This 
i answer- is returned by the other process via SENDA. WAiT allows a 
i process to wait for either a messase, suestion, answer, or 
i interrupt. 


For definiteness assume that process Q wants to send a messase 
to process R. The 2-byte word MESSAGE is passed in the B&C 

resister pair. NAME is passed in the DbE resister pair and is 

the address of a S-bxte biock in memory contaimns Rs name. The 
routine returns a 1-byte inteser RESULT in the A resister with 
the followins interpretation: 

RESULT event 


0 The routine completed its task successfully 

1 no more messase buffers available 

2 receivers name not found amons current processes 


SENDM: CALL SM6 

MOV E.C 

LX I H. FMP 

MV I C.MASKM 

CALL SSUB 

JMP EXIT 


. |{-t= index of Rs PCB 


RESULT .= SENDG (ADDRESS,NAME) 


The only difference between this routine and SENDM is that an 
answer is expected back. The parameters are also basically the 
same. The only chanse is caused by the tact that one can only 
pass two parameters in PL/M. ADDRESS is the address of a 3-bvte 
block in memory with the followins two fields. 

BID: 1 byte 

QUESTION: 2 bytes which are the suestion (similar to MESSAGE 
in SENDM) 


The inteser BID is returned by the routine and is the index of 
the MB that was used to send the suestion. It has importance to 
this particular process only in connection with the WAIT routine 
when it awaits the answer 

RESULT is an inteser returnee in the A resister with the same 
interpretation as in SENDM 


PUSH 

B 


INX 

B 


MOV 

H,B 


MOV 

L,C 

. (HU.) <- ADDRESS+1 

MOV 

CiH 


INX 

H 


MOV 

B,M 

, (BtrC) <- QUESTION 

CALL 

SMQ 


POP 

H 

, (HU.) <- ADDRESS 

MOV 

MiB 

• Store BID in appropriate location 

MOV 

E.C 

i e <- t * index of Rs PCB 

LXI 

H, FOP 


MVI 

C, MASKS 


CALL 

'SSUB 


JMF 1 

EXIT 



RESULT .= SENDA (ANSWER,BID) 


,NOTE ME will be an abbreviation for "messase buffer". 


.ANSWER is a 2-byte word passed in the BttC resister pair and BID 
iis a 1-bvte inteser- passed in the E resister BID is the index 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 


363 









i of the MB that ss to he used to return the answer to the process 
■ that asked the original tuestion. The routine returns a 1-brte 
. inteser RESULT ir. the A resister with the following interpreta- 
. ti on 


i In case of SENDM or SENDS we now have i = t and 

i b = BID 

RET 


RESULT 


event 


SA 


SENDA 


0 routine icmrieted its task successfully 

1 the correct hut ter ?<r returnins the answer 

could not be found 

2 process to whom answer was to ne sent was 

removed 


CALL 

SA 


MOV 

E,B 

, e <- t = index of PCB which beionss 
i to process to which answer 
i is beins sent 

MOV 

B, C 

, b x- BID 

LXI 

A, FAF 


MV I 

C. MASk'A 


CALL 

SSUB 


JMP 

EXIT 



sue 


iThis subroutine is used bv SENDM and SENDS SENDA also uses 
part of it. 


PUSH 

E 


PUSH 

D 


MV! 

C, 2 


LXI 

D, AS 


CALL 

P 

FAS) 

POP 

H 

(HbL) (r NAME 

CALL 

SCAN 


CPI 

1 


JNZ 

sxx 

Jump if Rs name not found amons 

processes 

, b = 

0 and c = t , 

where l is the index of Rs PCB 

RDLD 

E.CPP 

e 1- cpp 

MV I 

B, 0 


RXAD 

D, MBC 

(H&L! <- address of MECIcpp! 

XRA 

A 

a O 0 

CMP 

M 


JZ 

SYY 

Jump it (MECIcpp!) - 0 

DCS 

M 

(MBCCcppI) C- IMBCIcpp]) - 1 

rdld 

E, FMBP 

e <- BID = fmbp 

RXLD 

A, D, NMEP 


STA 

FMBP 

fmbp (NMBPIfmbpI) 

MOV 

B, E 

Store new MB index BID in B 

RXAD 

D, MBSF 

iHSd.) <- address ol MBSPIBIDI 

JMF 1 

SMQ1 




, Entr 

t point from 

SA subroutine 

SAE 

MOV 

E, C 

e <- BID 


MV I 

D, 0 



MOV 

BiA 

, b t 

SMQ1 

LDA 

CPP 



MOV 

M, A 

; (MBSPIBIDI) <- cpp 


RXST 

D, D, NMEP 

, (NMBPCBIDj! <- 0 


RXST 

D, D, ASTAT 

, (AS1ATIBIDI) <- 0 


RXAD 

D, MESS 



DAD 

D 

H’/L) X- address of MESSI2*BIDI 


POP 

D 

, •.ME) <r ME3SAC€ or ANSWER 


STDM 


, Store MESSAGE or ANSWER in MESS 


i field of MB 


.This subroutine is used bv SENDA. 


SA: 

PUSH 

E 


PUSH 

D 


LXI 

B, AS 


MV I 

C. 2 


CALL 

P ; Pi AS) 


FOP 

B , e <- BID 


MV I 

B.O 


• Besin searchi ns answer-buffer sueue tor MB with index BID 


RDLD 

E, CPP . e <- cpp 


MOV 

D, B id <- 0 


RXAD 

D.ABP , (HtL) <- address ot ABPIcpp) 


JMP 

SA2 

SA1 

LXI 

H, NMEP 


MOV 

E,A 


DAD 

D 

SA2: 

MOV 

A, M 


CMP 

D 


JZ 

SYY i jump if no buffer found with index 



, eiual to BID 


CMP 

C 


JNZ 

SA1 i Jump if index of this buffer does not 



. esual BID 


XCHG 



RXLD 

A. B, NMBF 


STAX 

D 


. End 

of search Also, buffer has beer, uniirved from tueue. 


• Check whether sender of question tie- been re»oved in the 
meantime 


RXLD 

A, EiMBSP , tH&L 1 C- address ot MBSPIBIDI 



, a <- t * (MBSPIBIDI) 


ORA 

A , Test if a * 0 


JNZ 

SAE , Jump it sender not removed 


. Case 

where sender was removed 


LDA 

FMBP 


RXST 

A,B, NMBF , '.NMBF'IBID!) <- tube 


MOV 

A. C 


STA 

FMBP , fmbp C- BID 


JMP 

SXX 



, Exit points 


SXX: 

MVI D, 1 


SYY: 

POP H 

i Fof NAME or BID 


POP H 

, Pop return adores* from SEND* 


INF: D 

JMF' EXIT 

, Set RESULT 


SSUB 

This subroutine is used bt SENDM, SENDS, SENDA, and RMV. 

For this subroutine we expect MASLX in C. BID in B, index t of 
Rs PCB in E, and address of FXF' in HbL 


Page 38 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


364 





SSUE 

MVI 

D, 0 



DAD 

D 

; (HU.) <- address of (FMP or- FOP 
i or FAPiCtl 


JZR 

M. SSUK 



PUSH 

D 

, Save t 

SSUB1 

MOV 

E.M 

. e <- s 


RXAD 

D. NMBF 

i (H&L) <- address of NMEPIsI 


CMP 

M 

. Note that a = 0 


JNZ 

SSUB1 

, Jump if we still have not reached 
i the last MB in the sueue 


POP 

D 

i e <- t 

SSUB2 

MOV 

H.B 



, Entr 

y point from 

send-interrupt routine 

SEND I 

RXAD 

D, RDMK 

, (HfcL) <- addr ess of RDMKCt] 


MOV 

A. C 

, a <r MASKX 


DI 




ORA 

M 



MOV 

M, A 

, (RDMKEU) <- (RDMKltl) v SMASK 


RXAD 

D. WDMK 

, (HM.) <- address of WDMktt] 


MOV 

A. C 



ANA 

M 



JZ 

SSUB3 

, Jump it tWDMKIreceiverl AND SMASK)=0 


MV I 

M, 0 

■ (WDMKtreceiverli 


El 




RXAD 

D.DSM 



DAD 

D 

i •.ri&L) <- address of DSMI2*tI 


MOV 

CiL 



MOV 

B.H 



CALL 

V 

; VIDSMCreceiverl) 


RET 


, Note that d = 0 

SSUB3: 

El 




RET 


. Note that d = 0 


1 

RESULT .= WAIT (WTBLK, MASK) 

iThis routine allows a process to wait for a messase or interrupt. 

i WTBLK (passed 

in the BStC resister pair) is the address of a 10 

i byte block in 

nemor, with the followins fields. 


EVENT 

1 brte. This binary word specifies what type of 
data was received and has the same interpretation 

as MASK. 


DATA 

2 bytes that are either a messase, euestion, or 



answer. 


BUFID 

1 byte. Since it is possible to send more than one 
euestion to another process, in order to determine 
to which question an answer (obtained via the WAIT 
routine! corresponds, one merely has to check that 
the inteser BUFID matches the inteser BID that was 
returned by the SENDS routine. 

i 

SENDER 

t bytes which contain the name of the sender 

; MASK 

is a 1-brte word passed in the E resister Its bits specify 

; what 

data is beins waited tor 


MAS): 



bit 

Resuest 


0 

1 

Question 

Messase 


? 

Answer 


3-? 

Interrupts 


, Resuests for interrupts are handled first. After that, the word 
; is scanned from nsht to left. 

i The routine returns a 1-byte inteser RESULT in the A resister- 
i with the followins interpretation: 

: RESULT event 


0 

routine 

completed its task successfully 


1 


case of dummy answer 


2 

cas 

e where sender was removed 

WAIT 

PUSH 

B ; 

Store WTBLK on stack 

WT1 

RDLD 

C, CPP ; 

c <- CPP 


MV I 

B, 0 



RXAD 

B, RDMK i 

(HiLi <- address of RDMKLcppI 


MOV 

A, E i 

a <- MASK 


DI 




ANA 

M 

a <- (MASK AND (RDMKIcppID 


CMP 

B 



JNZ 

WCASE ; 

Jump if a is noi 0 


RXST 

E, B, WDMK i 

iWDMKtcppl) <- MASK. 


RXAD 

B, DSM 



DAD 

B 

iH4L) <- address of DSMI2 *cpp] 


PUSH 

D 

Save MASK 


XCHG 




MOV 

C, B i 

c <- 0 


CALL 

P+1 i 

PtDSMIcpp]) 


POP 

D 



.IMF' 

WT1 



, Case 

where desired data had beer, received 

WCASE 

CPI 

8 



JP 

CASE I 

Jump if event is interrupt 


PUSH 

H 

Store address of RBMKIcpp] on stack 


PUSH 

PSW 



LXI 

D, AS 



MVI 

C, 2 



CALL 

P 

P( AS) 


POP 

PSW 



POP 

D i 

iD!£) <- address of RDMKIcppI 


RRC 




JNC 

WAM 

Jump if question is not desired 


, Case 

of a question 


CASED 

LXI 

H,ABP-RDMK 



DAD 

D 

tHJiL) <- addr ess of ABPIcppI 


PUSH 

H 



LXI 

H, FQP-RDMK 



MVI 

A, MASKS 



CALL 

WMAIN 



JMP 

EXIT 



WAM 

RRC 




LXI 

H, FMBP 



PUSH 

H 



JNC 

CASEA 

, Jump if messase is not desired 


, Case 

of a messase 


CASEM 

LXI 

H, FMF -RDMK 



MVI 

A, MASKM 



CALL 

WMAIN 



JC 

EXIT 

, vump if sdr- = 0 , i. e., actual 
, sender has been removed in the 
, meantime 


RXAD 

B.MBC 

(HhL) C~ address of MBCIsdrl 


1NR 

M 

, (MBCIsdrl) <- iMBCIsdrDel 


JMP 

EXIT 



Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 








in WTBLK 


i Case of an answer (and no messase or question) 


LX I 

H,FAP-RDffc 


MVI 

A.MASKA 


CALL 

WMAIN 


RXD 

C.CPP 

i C <" CFP 

RXAD 

B.MBC 

i (HU.) <- address of MBCIcppI 

I NR 

M 

i (MBCIcppI) <- (MBCIcppD+1 

j*> 

EXIT 



■ Case of interrupt 

CASEI: MOV C.A , c <- (MASK AND RBMKIcpp]) 

MVI B, 1 , b <- MASKI 

UINT1: MOV A,B 

RRC , Route MASKI right 

MOV BiA 

ANA C , a <- (MASKI AND MASK AND (RDMKCcpp])) 

ORA A i Test if a = 0 

JZ WINT1 ; Jump if a = 0 

CMA 

ANA M i (RBMKIcpp]) <- (RBKCcpp]) AND -MASKI 

MOV M,A 
El 

POP H 
MOV M,B 

XRA A , RESULT = 0 

RET 


i WMAIN 

iThis subroutine does all the necessary work for WAIT. 


DAD 

D 

i (HU.) <- address of FXPIcpp) . 

. where X = M. Q. or A 

PUSH 

D 

. Save address of RDWIcpp] 

MVI 

B.O 


MOV 

C.M 

i c <- BUFID 

XCHG 


i (D&E) <- address of FXPIcpp] 

RXAD 

B.NMBP 

i (HU.) <- address of NMBPIBUFID1 

MOV 

B. A 

; Save MASKX in B 

MOV 

A.M 

i a <- (NMBPIBUFID1) 

XCHG 


i (DScE) <- address of NMBPIBUFID1 
. (HU.) <- address of FXPIcpp] 

MOV 

M, A 

i Set FXP to new value 

POP 

H 

i (HU.) <- address of RDMKIcpp] 

ORA 

A 

. Test if (NMBPIBUF1D1) = 0 

JNZ 

WM1 

i Jump if queue is not empty 


MOV A,B 

CMA 

ANA M 

MOV M. A 

WM1 POP H 

XTHL 


MOV A,M 
STAX D 
MOV M.C 

. Assemble wait block 

POP H ; (HU.) <- return address from tail 

i to WMAIN 

XTHL i Exchanse HU. with top of sUok which 

i holds WTBLK 

MOV M. B i Store record of event, nameb MASKX, 


i Appropriate bit in (RDMKIcppD has 
i been set to 0 

i (HU.) <- return address from call to 
. WMAIN 

i Exchange HU. with top of sUck 
. which holds address of FMBP (in case 
; of message or answer) or ABPIcpp] 

, Store a in NMBP1BUFID1 
, fmbF or (ABPCcppD <- BUFID 


I NX 

H 


PUSH 

H 


MVI 

B.O 


RXLD 

A, B, ASTAT 

i a <- (ASTATIBUFID]) 

ORA 

A 

i Test if a 1 0 

JNZ 

WM2 

. Jump if MB contains a dummy answer 


This can happen only if WMAIN was 
called from CASEA. It may have hap¬ 
pened that a process was removed and 
it never had a chance to answer the 
question it was asked. In that case 
(ASTATIBUFID1) was set to 1. 


RXAD 

B. MESS 


DAD 

B 

i (HU.) <- address of MESSI2*BUFID3 

MOV 

E.H 


1NX 

H 


MOV 

D.M 

, (D&E) <- MESSAGE or ANSWER 

POP 

H 


STDM 


; Store MESSAGE or ANSWER in WTBLK 

1NX 

H 


MOV 

M.C 

i Store BUFID in WTBLK 

INX 

H 


XCHG 

RXLD 

A, B, MBSP 

, a <- sdr = (MBSPIBUFID1) 

ORA 

A 

i Test if a * 0 

JZ 

WM3 

i Jump if sdr = 0 , i e . actual 


sender has been removed in the 
meantime 


NOTE: 

We assume 

that the carry bit which now is 0 stays 

that 

uay until 

we return from this subroutine 

MOV 

C. A 

i Save sdr in C 

PUSH 

D 


M6A 


; e <- i*s4~ . d <- 0 

RXAD 

D. NAM 

, (HU.) C- address of NAMI6*sdr] 

POP 

D 

i (D&E) <- address of SENDER field 



i in WTBLK 

TRNAM 


i Transfer name 

MOV 

D.B 

i d <- 0 

RET 


> Note that the carry bit is assumed 



i to be 0 


WM2 

MVI D. 1 

RET 

i Set RESULT 

WM3 

MVI D. 2 

STC 

RET 

i Set RESULT (sdr=0) 
i Set the carry bit to 1 


END HALT 


SOLUS: SOL USERS SOCIETY 


To ALL SOL USERS: 

The initial meeting of SOLUS (SOL Users Society) took 
place on July 31, 1977 at Stanford University. 

The agenda included: 

I Goals 

II Organization 

III Newsletter 

IV Hardware Review Procedure 

V Software Exchange Procedure 

VI Other Topics 

For further information, contact 


Bill Bums 

4190 Maybell Way 

Palo Alto, CA. 94306 


Page 40 


Or. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 


366 







BASIC-CODED MEMORY DUMPER 

John B. Palmer, P.O. Box 27462, Tucson, AZ. 85726 

Gentlemen; Received: 77 Jun 13 

Enclosed is a program that i enjoyed writing and just maybe some¬ 
one else might tike it. 

i am a long-time 'ham' just now turned computer hobbyist. I have an 
Altair 880B with 16K, and audio cassette and a KSR-33 Teletype. 

i like to PEEK and POKE into Basic. Without a memory dump 
it is hard to know what is going on. The PEEK feature of Basic gives values 
in decimal, i wanted a dump in octal so I wrote the enclosed program. 

This program, written in MITS 8K Basic, will give a octal or 
decimal printed page for any section of memory within the 
range of Basic’s PEEK statement. 

The left margin of the print-out gives the address in octal, 
followed by octal data from eight consecutive bytes of 
memory. The right margin gives the ASCII characters for the 
same eight memory locations. Non-ASCII values receive just 
a rather than a space. Carriage return and line feed are 
indicated by “CR” and “LF” after the respective octal data. 

The letters “P”, “I”, and “O” indicate a jump, input, or 
output instruction. However, you have to decide for yourself 
if it is a machine instruction or something else. Likewise the 
ASCII characters often are meaningless. Still, it helps. 

A decimal dump is formatted so that it can be compared 
to the octal dump, indicating the equivalent octal page. 

The decimal to octal subroutine in lines 600 to 700 may be 
of interest to others who (like me) have a Basic without the 
OCT$ feature of Extended Basic. 


DUE CREDIT 

Dear Jim, Received: 77 Jui 18 

I noticed the version of CHASE which was published in 
the May issue of Dr. Dobb’s. According to the article, the 
game originally appeared in Kilobaud No. 2. I’d like to point 
out that while Kilobaud did publish the game, it originally 
appeared in the January-February 1976 issue of Creative 
Computing which Kilobaud did acknowledge. I’m sure this 
was just an oversight but credit should be given where it is due. 

Incidentally, a friend tells me that he saw a realtime version 
of CHASE at the ComputerMart of NY (that is, the robots 
keep moving as you enter commands.) Actually, it’s not at 
all difficult to modify the game you published- just take a look 
at the keyboard and see if a move is entered rather than wait 
for a key (I think so, anyway). 

Regards, 

Steve North 


ONE OF THOSE DOPEY PUNS 

The Editor was recently discussing possible applications of 
personal computers with a friend. One possible application 
would be in physician’s offices, for use in checking out pos¬ 
sible drug interactions prior to prescribing a new pharma¬ 
ceutical for a patient who was already taking several drugs. 
(It is becoming increasingly difficult for physicians to keep 
up with the available pharmaceuticals and their possible inter¬ 
actions. Why not just put all the information in an office com¬ 
puter; tell it what drugs are currently being prescribed for the 
patient, and the new drug being proposed.. .and, let the com¬ 
puter check its interaction information for possible contra¬ 
indications?) Our glorious Editor pointed out that such a sys¬ 
tem could be updated - - say, each month - - by simply sending 
the physician a cassette tape with the newest dope on it. (At 
that point, the conversation degenerated into groans.) 


|M ORIMT "MEMDPY DUMP VITH ASCII" 

111* 1EM JB PALMER MAY77 

IP* ””1117 "YHICU TYPE# "S 

133 INPUT "C OP D "JAS 

1/1* IF M-"1" }? AS = "!)" THEM 17.7 

IS* °PIHT "C= OCTAL DtW>* D=DECIMAL DUMP# "HICH# "# 
163 GOTO 13* 

17* PS="ESTIMATED DECIMAL ADDRESS TO " 

133 PRINT 

IQ 71 IN°"T "STAPT ";5T 
209i or*INT PS»* 

210 INPUT "FINISH "JFI 
2?0 IF A$="D" THEN 700 

23 7. IF ST>PA*255+255 THEN °A=°A+ 1 : GOTO 23* 

240 MEMPY=PA*256 

253 P-.INT "STAPT AT OCTAL PAGE "J 

260 DD*PA:GO SUB 600 

270 I NT " * DECIMAL ADDr.ESS"ME; 

230 INPUT " -ALRIGHT TY/N3 "JYS 
200 IF LSFTSCYS/1)*"N" THEN 1*0 
300 PRINT:°RINT 
317 DD=PA 

32* P^INT "PAGE "I 8 GOSHA 6*0:PRIMT " G ="ME"D"; 

330 ©PINT TABC?*)"OCTAL DATA"pPCC I 6)"ASCI I": 

340 LINE=0 


353 

PRINT 



350 

DD=NE-250*?A 



370 

GO 3T*n 6*0 



33 0 

PRINT/ 



390 

FOR K** TO 7 



40* 

DD*?EEKC ME) 



410 

GO SUB 63 0 



423 

DD*PEEKCME) 



430 

IF DD=1 * THEN PRINT "LF"; 

GOTO 

490 

440 

IF DD*13 THEN PPINT "CP"; 

GOTO 

49* 

450 

IF DD=195 THEN °RINT "p " 

: GOTO 

493 

457 

IF DD=211 THEN PRINT "0 " 

: GOTO 

4Q3 

473 

IF DD*219 THEN PRINT "I " 

; G0T1 

/jOO 

43 0 

PRINT " "J 



49? 

11E=ME+ 1 



5*3 

NEXT :: 



51* 

G0F TT 3 7 1* 




520 LINE=LI♦1 

530 IF LI<>3? THEN 351 

540 IF MEM°Y>FINISH THEN 570 

550 PAGE=PA+I 

560 GOTO 300 

570 PRINT 

530 PRINT 

573 PRINT:PRINT:END 
6*0 REM DECIMAL TO OC^AL 
610 C3*0 ; 02=0 s 01 = .* 

620 IF DD>63 THEN DD*DD-64 s03=03+1:GOT) 6?* 

63* Q35 = oiGHTSCSTPSC03)* 1 ) 

640 Or>I|jf 03 J; 

650 IF DD>7 THEN DD=UD-3:*2=02+1:GOTO 650 
660 C2S=RIGHTSC^T^SC92)/ 1) 

670 PRINT CPS. 

65* 91S*PIGHTSC5TPSCDD)/1) 

690 POINT Qli; 

70 0 ~ET\TRM 

713 REN PRINT ASCII 

720 RYTE=M2-3 

730 FOo K=:1 TO 7 

74* DD=PSEKCUY+K) 

750 IF DD> 31 AND DD<9 7 THEN PRI NT CHPS<DD)JsGOTO 770 
753 op,i nt 
770 NEXT X 
730 PETURN 

790 PRINT "DECIMAL DUMP" 

500 ME*INT<ST/3)** 

310 IF ST>MS+7 THEN ME*UE+3:GOTO 310 
320 PRINT "STAPT AT DECIMAL ADD»E?S"ME 
330 IF M F#> o a* 2 5 6 + 2 5 5 THEN PAGE*PA+1:GOTO 330 
340 PPI NT : PP.I NT : DD=PA: °PI NT"ADDRES3 rn A G£ 

350 GO 3TH3 600JPPIMT " 9 V'T ARC 2 7) "DEC I MAL DATA"~PCC 1 3) "ASCI I ' 
360 PRINT 
370 PPINT ME/ 

330 FOP H«0 TO 7 
390 DD=PEEKCME) 

900 IF DD>99 THEN DDS*P.IGHTSCSTRSCDD)/3)tGOTO o30 
P10 IF DD>9 THEN DDS*"n"+PIGHTSC FT*S(DD)/ 2):GOTO 030 
P20 DDS = "00"+ R.IGHTSC r TR5C DJ)/ 1) 

930 PRINT DDS" "J 

Q40 ME*ME+1 

95* NEXT SC 

960 GO SUB 710 

973 IF ME>FI THEN 990 

930 IF ME>oa*? 56+R55 THEN PAGE*PA+1tCOTO 34* 

990 GOTO 360 

999 PRINT SPRINT;END 

OK 


Number 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 41 


367 






Original 


Change 


PATCHING MICROSOFT’S 4.0 BASIC 

ON P.T.’s SOL Address 


Dear Dr. Dobbs: 


77 Sept 5 


JPARITY STRIPPER FOR CNTL-C TEST 


Just a quick note to pass along a couple of things. First, 
the kudos and brickbats. The good guys; Dr. Dobbs, your 
publication is the most interesting of all the “home computing” 
publications. Xybek, and their PROM programming board, a 
good product with excellent documentation, and people with 
a genuine desire to help their customers, Micro-Chess, a super 
chess playing program, with good documentation and priced 
fairly. The bad guys; the multitude of manufacturers who 
have promised so much, and have delivered so little, (IMSAI, 
where’s the 12K BASIC, Processor Tech, where’s the 
8K BASIC so long overdue?). 

Attached are the patches I made for a friend so he could 
use his Altair BASIC on his new Sol. 1 know you would 
prefer an assembler listing, but I did these patches by hand. 

The program should first be loaded, the patches made, and a 
copy of the modified program be dumped before running 
the first time. The first column is the old data, the second 
column is the change. 1 understand that there may be more 
than one version of the extended 4.0, so take care that your 
version is the same as this one. 

Thanks for the neat publication. 1 enjoy it from cover 
to cover. 

Jack L. Calaway 

165 E Sierra Madre Blvd 

Sierra Madre, CA 91024 

P.S. This has been typed using Michael Shrayer’s “Electric 
Pencil Word Processor”. 

;PATCHES TO ALTAIR CASSETTE VERSION OF LEVEL 4.0 BASIC 
I FOR USE ON A PROCESSOR TECHNOLOGY SOL WITH SOLO 
JLOAD THE ORIGINAL PROGRAM. MAKE THE CHWGES AND SAVE 
I A COPY BEFORE RUNNING IT. 

ADDRESS ORIGINAL CHANGE 

i8 K V-4.0 

I DISABLE TERMINAL INITIALIZATION. SET UP CUTTER 


1 93 A 

DB 

3E 

1 93B 

FF 

00 

1 93C 

E6 

D3 

1 93D 

F0 

FA 

193E 

0F 

C9 


.'SEND NULL CHARACTER ON CSAVE. SO CLOAD WORKS OK 


0551 

F5 


E 6 

0552 

00 


7F 

0553 

00 


C3 

0 554 

FI 


70 

0555 

C9 


06 

J MAIN CHARACTER 

INPUT 

ROUTINE 


0556 

DB 


CD 

0557 

00 


IF 

0 558 

E6 


C0 

0559 

01 


CA 

0 55A 

C2 


56 

0 55B 

56 


05 

0 55C 

05 


00 

0 55D 

DB 


00 

0 55E 

01 


00 

i INPUT TEST 




0 60C 

DB 


CD 

0 60D 

00 


IF 

0 60E 

E6 


C0 

0 60F 

01 


00 

0610 

CC 


C4 

0611 

6 D 


51 

0612 

06 


05 

1 INPUT TEST 




0668 

DB 


CD 

0 669 

00 


IF 

0 66A 

E6 


C0 

0 66B 

01 


C8 

0 66C 

C0 


00 

JCASSETTE INPUT 

(NOT 

CONSECUTIVE) 

1 141 

06 


FA 

1 143 

01 


50 

1 144 

C2 


CA 

1 148 

07 


FB 

»CASSETTE OUTPUT (NOT 

CONSECUTIVE) 

1 14F 

06 


FA 

1 152 

C2 


CA 

1 157 

07 


FB 

1 CASSETTE INITIALIZATION 


1 159 

06 


F7 

1 15A 

01 


00 


PATCH 


RST 6 


0030 

00 

F5 




003 1 

00 

AF 

; Extended Mods 


0032 

0033 

00 

00 

D3 

FB 

S DISABLE 

CONSOLE SWAPPING 

FUNCTION 

0034 

00 

FI 

3 A43 

FE 

00 

0035 

00 

06 

3 A44 

43 (C) 

00 

0036 

00 

01 




0037 

00 

C9 

} PREVENT 

TERMINAL SETUP. 

AND INITIALIZE CUTTER 

1 OUTPUT TO 

THE SOLO. 

RESET THE FLAGS 

3 3EB 

DB 

3E 




3 8 EC 

FF 

00 

0547 

DB 

FI 

3 8 ED 

E6 

D3 

0 548 

00 

C5 

3 8EE 

F0 

FA 

0549 

E6 

47 

3 8EF 

0F 

C9 

0 54A 

80 

CD 




0 54B 

C2 

19 

S SHORTEN 

ILLEGAL FUNCTION 

CALL. AND OUTPUT NULL 

054C 

47 

C0 

TO CASSETTE 


0 54D 

05 

78 




0 54E 

FI 

Cl 

0349 

4C 

20 

0 54F 

D3 

B7 

0 34A 

45 

46 

0 5 50 

01 

C9 

0 34B 

47 

55 


Page 42 


368 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 



NOTES ON T.BASIC & T.PILOT 


Address 


Original 

Change 

034C 


4 1 

4E 

034D 


4C 

20 

0 34E 


20 

43 

0 34F 


46 

41 

0 3 50 


55 

4C 

0351 


4E 

4C 

0352 


43 

00 (EQM) 

J 




0353 


54 

F5 NULL PATCH 

0 354 


49 

A r 

0355 


4F 

D3 

0356 


4E 

FB 

0357 


20 

FI 

0358 


43 

06 

0359 


41 

01 

0 3 5A 


4C 

FE 

035B 


4C 

F 4 

03 5C 


00 

C9 

J OUTPUT 




0 E0 1 


DB 

FI 

0E02 


00 

C5 

0 E03 


E6 

47 

0E04 


80 

CD 

0 E05 


C2 

19 

0 E0 6 


0 1 

C0 

0E07 


0E 

78 

0 E08 


FI 

Cl 

0 E09 


03 

B7 

0 E0A 


0 1 

C9 

J PATCH 

FOR CNTL 

-C TEST 


0 E0B 


F5 

E6 PATCH 

0 E0C 


00 

7F 

0E0D 


00 

C3 

0 E0E 


FI 

C6 

0 E0F 


C9 

0F 

l MAIN INPUT ROUTINE 


0 E10 


DB 

CD 

0 E 1 1 


00 

IF 

0 E12 


E6 

C0 

0 E13 


01 

CA 

0 E14 


C2 

10 

0 E15 


10 

0E 

0 E16 


0E 

00 

0 E 1 7 


DB 

00 

0 E 13 


0 1 

00 

J INPUT 

TEST 



0 EAD 


DB 

CD 

0 EAE 


00 

IF 

0 EAF 


E6 

C0 

0 EB0 


01 

00 

0 EB 1 


CC 

C4 

0EB2 


C3 

0B 

0EB3 


0F 

0E 

J INPUT 

TEST 



0FBE 


DB 

CD 

0 FBF 


00 

IF 

0FC0 


E6 

C0 

0FC1 


01 

C8 

0FC2 


C0 

00 

JCASSETTE INPUT 

(NOT CONSECUTIVE) 

2 2F6 


06 

FA 

22F8 


01 

50 

22F9 


C2 

CA 

2 2FD 


07 

FB 


To: Dennis Allison June6, 1977 

As a user of your work via Pittman’s 6800 version of Tiny, 
1 read with care when you propose TP. 

First reaction — Horray! 

I’ll have to read it closely to see what it won’t do that Tiny 
will. If it will do all, more Horray. I manipulate strings much 
more than I do numbers on all machines that I use. 

1) Please consider that the only non-alpha character under the 
resting fingers of a terminal is the semicolon. Consider also 
that the colon has meandered around on different versions 
of ASCII terminals and typewriters. 

I have the colon 3 different places on 3 terminals in my 
office. 

Therefore; Please consider semicolon instead of colon for 
the most used punctuation in your language. 

(It’s not busy for “don’t return” since you used («>, therefore 
has no use at all.) 

2) Please put back in an external call (peek & poke, or USR). 
A majority of uses of TINY are as higher-level drivers for 
things being done partly in machine language. 

3) I hope it’s just editor translations that left out < and > in 
March ddj. 

4) If you can’t see using semicolon instead of colon, how 
about using it instead of , the second most used symbol. 


Thanks for listening. 

N J Thompson 

Univ. of Hawaii at Manoa 

Hawaii Inst, of Geophysics 


2525 Correa Rd 
Honolulu, HI 96822 
Cable Address: UNIHAW 


Dear Tom: 

Regarding your comments: 1. The choice of colon was his¬ 
torical; it’s used that way in the PILOT-73 language and other 
versions. If it’s a problem for you, you could put it on a 
toggle and let the user specify it. That could, of course, get 
him into trouble. 2. External calls are important, but are some¬ 
thing of a bandaid extension to the language. In my first cut, 
I left them out. Incidentally, there is a revised specification for 
Tiny BASIC, unpublished and unimplemented, which supports 
strings and external functions. Also, Bob Albrecht and I are 
working on a new language. 3. A lot of typo’s did creap into 
the published text. My fault too! I did proof it, but somehow 
in the rush to get DDJ out, the changes did not get made. 
4. Take a look at PCC's version of the Tiny PILOT specifica¬ 
tion. It’s a bit more detailed and has a few minor differences. 
(It was published earlier than the DDJ version but was pre¬ 
pared later.) The major difference is that '#’ need appear only 
when a number is wanted inside a string; the usual tiny BASIC 
convention works fine in assignment statements (variables 
need not be prefaced by ‘#’). 

— Dennis Allison 


;CASSETTE OUTPUT (NOT CONSECUTIVE) 


2304 

06 

FA 

2307 

C2 

CA 

230C 

07 

FB 

}CALL NULL 

ADDING ROUTINE 


230E 

06 

CD 

230F 

01 

53 

2310 

FE 

03 

2311 

F 4 

00 


Number 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 43 


369 



WEE IMPROVEMENTS TO MSI’s 
FD8 DISC SYSTEM 

Gary D. Gaugler 
2276 Beaver Valley Rd 

Fairborn, OH 45324 Received: 77-Aug-25 


This computer note describes a patch to MSI DOS Version 
.987 which will produce new output information in 
response to the “FILES” or “CATALOG” commands. The 
form of the new output is: 

filename trk sctr lngth typ begin.load end.load PC.start 

In unmodified form, DOS only lists the filename, track, 
sector, length, and file type. The patch described will add very 
useful information in determining a program’s position in 
memory. The address where the file begins in memory and 
also the address where the file ends are printed, as well as 
the address where program execution starts (PC contents). 
Further, if PC.start is not within the file’s contiguous memory 
space, it probably means that the file is a “load” file not a 
“run” file. 

To use this patch, boot DOS. Observe the “DOS READY” 
message. Load MINIDOS. Press the reset button. Use MIKBUG 
or the resident monitor to insert the patch. Execute MINIDOS 
($7700). Store $10 sectors starting at address $2400 on track 
00, sector 00 and on track 01, sector 00. Press the reset 
button, boot DOS and type “FILES c/r” to observe results. 
The patch is now installed and saved on the loaded diskette. 


Mem Address Contents of memory locations 


2F4F 

81 24 


l 

_ 

2F6E 

8D 56 

2F70 

08 

2F71 

8D 53 

2F73 

8Di 51 

2F75 

8D 52 

2F77 

8D 50 

2F79 

8D 4E 

2F7B 

BD 2A96 

2F7E 

C6 05 

2F80 

08 

2F81 

5A 

2F82 

26 FC 

2F84 

9C 0A 

2F86 

27 B1 

2F88 

7E 2F4B 


NOTE: filename is any legal 

DOS filename and password. 


ABOUT-TO-BE 1802 SOFTWARE 
LISTINGS BOOKLET 

Received: 77 Oct 4 

Very little software for the RCA CDP1802 is currently in the public 
domain. To remedy this situation I am going to publish a 10-page 
booklet listing available software. If you desire to sell or even give 
away your software please send me a listing for my review. My booklet 
will provide a complete description and cost information with a refer¬ 
ence number corresponding to a number on an ordering coupon. 

I plan to charge $1 for the booklet. This amount will also cover the 
costs associated with processing the coupons. The use of the coupon 
will reduce the costs to the person ordering from more than one source. 

The publication date is set for early December. Advance orders may 
be made at $1 per copy. Send all orders, software listings, and other 
correspondence to: 

Ross Wirth 
1636 S. 108 E. Ave 
Tulsa, OK 74128 


E-PROM PROGRAMMER FROM MINIMICROMART 

news release Received: 77 Jui 8 

A simple, low cost E-PROM Programmer kit is available from Mini 
Micro Mart for the popular 2708 series of devices. The newer 16K 
(2K x 8) Intel and Tl devices can also be accomodated. Originally 
designed to function with its series of RM 8080 and Z-80 systems, it 
is equally effective on any system that has available three latched par¬ 
allel I/O ports such as that provided by an 8255 interface 1C. These 
are found on many systems including the Intel SBC 80/10 modules. 

The programmer is software driven from the user's processor. Some 
software routines are included and are intended to run with a system 
monitor provided by Mini Micro Mart. The user may need to tailor the 
software to his own operating system. 

A power supply kit is available as a separate item. The needed 
voltages are regulated +12, +5, and -5, and a source of DC for program 
pulses in excess of 25V DC. 

The price of the kit is $24.95 and includes a zero insertion force 
socket. Order as 3164-1. With a quick change zero insertion force 
socket (Textool) order as 3164-2 at $34.95. 

Other PROM programmers are also available from Mini Micro Mart. 
For details write to Mini Micro Mart, 1618 James Street, Syracuse, 
New York 13203. Phone (315) 422-4467. 


Memory Address 

New Contents 

2B2 9 

50 

55 


54 

00 


31 

7A 



1— 

317A 

86 

22 

317C 

B7 

3057 

317F 

8D 

03 

3181 

7E 

2BCD 

3184 

BD 

2C9D 

3187 

BD 

2803 

318A 

CE 

2B69 

318D 

BD 

2EDD 

3190 

FF 

0008 

3193 

BD 

243C 

3196 

39 



Page 44 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Number 18 

370 


HEXADECIMAL CALCULATOR HELPS 
PROGRAMMERS WORK WITH COMPUTER 
NUMBER SYSTEMS 

Dallas, TX.~ A new handheld calculator from Texas Instruments 
Incorporated does arithmetic in three different number bases and per¬ 
forms conversions to and from those bases rapidly. 

Called the Tl Programmer, it is the latest productivity tool for pro¬ 
grammers and others who work with computers. The number bases in¬ 
clude hexadecimal (base 16) and octal (base 8) as well as decimal for 
everyday arithmetic. 

"The Tl Programmer will save many hours of work for people deal¬ 
ing with computers ranging from microcomputers up to the larger data 
processing installations," a Tl spokesman reports. Besides programmers, 
it is meant for systems analysts, supervisors, students, small system 
operators, computer hobbyists, logic designers and computer mainten¬ 
ance and service personnel. It sells for $49.95. 

Since most computers use a binary number system for internal data 
storage and addressing, programmers and computer users are often re¬ 
quired to convert and manipulate coded numbers in other related num¬ 
ber bases. In the past, this required time-consuming manual calculations 
and the use of addition, multiplication and conversion tables. 

Now users of the new Tl calculator can get those answers fast by 
keying in the problems in the same number system used by the com¬ 
puter. Then the calculator performs its operations in that number sys¬ 
tem and converts results to a number system which users can interpret 
more rapidly. 

For example, a computer may store a 32 bit code containing that 
many "ones" or "zeros" in binary form to represent either data or in¬ 
ternal instructions. In the hexadecimal number base, that same code 
shrinks to only eight digits which can be operated upon and stored in 
the calculator memory just as these same things are done with the long¬ 
er code in the computer system. 

Among other typical applications, the Tl Programmer will convert 
memory addresses to decimal form, add relative addresses to a base 
address to find specific computer memory locations, or determine if 
there is enough space in the computer's memory to hold a new block 
of data. Also, the arithmetic and logical functions of the calculator 
can emulate internal computer operations. 

The calculator's parentheses keys help evaluate complex expres¬ 
sions without requiring the user to store or write down intermediate 
results. The parentheses specify the order of execution of operations 
in a problem. Up to four operations can be pending at any one time 
and these can be a mixture of arithmetic of logical operations in any 
combination of the three number bases. 

The Tl Programmer represents negative numbers with a two's 
complement code in both the hexadecimal and octal bases. A one's 
complement key on the calculator also facilitates working with compu¬ 
ters which use that type of arithmetic. 

The calculator can perform bit by bit logical operations on num¬ 
bers in hexadecimal or octal. Included are AND, OR, Exclusive OR and 
SHIFT operations. 

Users will also find the calculator useful as a regular day-to-day, 
four-function machine in the decimal base. The unique combination 
of functions make it an excellent tool to handle the bulk of a pro¬ 
grammer's personal and professional requirements. Its speed in all 
number bases is essentially instantaneous. 

A constant mode can be used for all kinds of repeated arithmetic 
and logical operations. Memory features include store, recall and 



Tl HEX CALCULATOR: SI OR NO? 

Dear Ed: 77-July 1 

On page 11 of the March issue of DDJ you indicate that Tl 
no longer makes a hex calculator. Well I don’t know if they 
make one or not, but they are sure ‘nuff advertising one. Last 
week they sent me a brochure describing their “Tl Program¬ 
mer” which speaks octal, hex, and decimal and sells for a 
mere $49.95 plus tax. For more info, write to Box 53, 
Lubbock TX 79408. 

Sincerely, 

Jim Day 

17042 Gunther Street 
Granada Hills CA 91344 


ONGOING PRAISE FOR GODBOUT & MORROW’S 
STUFF 

Dear Dr. Dobb's, 77 Aug 5 

In the may issue, you ran a letter which was somewhat critical of 
the Godbout 4K memory boards. Since my initial version of my 
KLUGE-8 was entirely populated by products of the Godbout/Morrow 
stable, and I have been very happy with their products, I feel I must 
issue a rebuttal. Therefore: 

1. Solder mask. Quite unnecessary on the 4K board. George sacri¬ 
fices the ground plane on his double sided boards to leave the back 
clear of crowded traces. This requires a few extra bypass caps, but sure 
makes soldering easy. These boards are easy one-evening projects. 

2. Regulators & heat sinks. The three regulators are on a very large 
foil area at the top of the board, and don't run at all hot. So, why add 
complications? 

3. Open Collector vs. Tri-State output. I'm no engineer, but for 
the life of me, I can't see much difference in an O/C gate that's high, 
and a Tri-State buffer that's "off", except the speed. Since the open 
collector gates are fast enough, and were more readily available when 
the board was laid out, why change? I am open to education on this 
point, but they do work OK. 

4. Schematic. I don't know what better means, but the Godbout 
print has told me everything I ever asked of it. 

And some notes on the other Godbout/Morrow products: 

The Morrow Cassette Interface board. This is a really sweet package, 
'tho it took me a while to realize it. I bought one, and decided it was 
too slow, so I sold it. After a few other tries at the problem, I decided 
that slow as it was. The Morrow was very reliable, easy to program a- 
round, and didn't consume any of my scarce RAM. So, I bought 
another one, and found the price had gone up while I was messing 
around with the others. On this board, after loading it with all the ex¬ 
tras (3rd cassette channel, parallel port, and TTY/RS232 port) I did de¬ 
cide to add a heat sink on the 5-volt regulator, which ran a little warmer 
than I liked. 

The Godbout 8K memory board. This one has a solder mask and 
heat sinks. I have a borrowed one now, and just ordered one for myself. 
This board is considerably more closely-packed than the others, but 
there still are no squeeze-throughs on the soldering side, and with the 
mask it isn't at all a bad board to work on. 

The Morrow's CPU and front panel. Again, for the amount of stuff 
on it, this board is surprisingly easy to work on due to the open layout 
on the soldering side. I have had it running for almost a year now, and 
have only two minor complaints with it. It could use an extra mounting 
hole near the keypad, and give a little more rigid assembly, and I still 
haven't figured out how to trick it out of it's on-board startup routine 
and into the Boot loader in the cassette board ROM without at least 
17 keystrokes. 

I have had excellent results from everything I ordered from either 
Godbout’s or Morrow’s Micro Stuff, and recommend them highly. 

Sincerely, 

Tiny Matthews 2028 Merrily Drive 

Montgomery, AL 36111 


sum. 

Other features include an eight digit LED display, rechargeable 
battery, vinyl carrying case and AC adapter/charger. 

The calculator is being test marketed initially on a direct-mail 
basis from Texas Instruments. 

For more information contact: Texas Instruments Incorporated, 
Inquiry Answering Service, Box 5012, M/S 84 (Attn: TIP), Dallas 
TX 75222. 


Page 46 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 18 

371 







dr. dobbs journal of 

COMPUTER 

(Calisthenics ^5 Orthodontia 

Running Light Without Overbyte 

Number 19 October 1977 Volume 2, Issue 9 


CONSUMER INFORMA TION 

A Detailed Report on Product Delivery Complaints — Tom 'Williams, Assistant Editor 6 

a report on a multitude of complaints received from DDJ readers 

The Heath H-8: Pro & Con 10 

a negative evaluation & a detailed response 

Poly Doc Corrections — Richard B. Emerson 15 

additions & corrections to Polymorphic Systems’ documentation 


SOFTWARE 

Editor & a Small O.S. for the 8080 — Lorin S. Mohler 13 

notes on a low-cost software package 

Dijkstra’s Minilanguage — Neils Laughlin 19 

GRAFX — A Graphics Monitor for the 8080/TV Dazzler — Jonathan W. Mills 21 

complete documentation & source code 

Alphanumeric Plotter for Poly Video Display — Arthur Armstrong 28 

Utilities & Music on the Cosmac Elf — Edward M. McCormack 30 

PROMable IK Operating System for RCA’s Elf — Edward M. McCormack 34 

Multiple Column Accounting — Charlie Pack 36 

a journal balancing program 

OPLEGL Correction & a 6502 Scanning-Debugger — H. T. Gordon 42 




© David Dameron 1979 













16-YEAR OLD PLACES HEX ON OCTAL 

Dear Dr. Dobb, Dated: 77Sep 13 

I would like to express my opinions about the two con¬ 
version formats of computer address and data information 
currently implemented on nearly all micro- and mini-computers. 

1 believe hex to be dominant over octal in many aspects: 

1. Since all computers’ address and data word sizes are in 
multiples of four (4) bits, octal representation often wastes 
a digit; that digit representing one or two bits instead of 
three. 

2. Hex never wastes a digit: each nibble (four bits) of a number 
is represented by one hex digit. 

3. In the instance of the PDP-8, a twelve (12) bit mini¬ 
computer, one address word can be represented by four full 
octal digits without waste. But — only three hex digits are 
needed to stand for twelve bits, also without waste. 

4. When one memorizes an instruction set, types in an object 
program, or prints out an assembler listing, thousands upon 
thousands (1000/1000) of wasted characters are spewed 
out, typed in, or memorized unnecessarily when the octal 
format is implemented instead of hex (expecially the 
amazingly unorthodox ‘split’ octal is used). 

5. Octal also wastes time in many other ways. . . 1 wouldn’t 
have had to waste the time to compile this letter if octal 
did not exist. 

6. There is even an instruction on the 8080 and Z80 micro¬ 
processors which aids in the hex display of a byte by adding 
six to each nibble of the accumulator when greater than 
nine (if carry is set). 

7. As I said before, four bits are effectively represented by one, 
not one and a half, digits in the hex format. Two hex 
digits represent one and a half bytes, four hex digits repre¬ 
sent a chomp, and eight hex digits represent four bytes, 
two chomps, or whatever ails you.. . 

8. ‘Octal’ is a two syllable, five letter word, whereas ‘hex’ is a 
one syllable, three letter word. (Although it is short for 
‘hexidecimal’ which is a five syllable, eleven letter word). 

9. I find no good reason to use octal as a printing format 
instead of hex. 

In conclusion, I would like to request that more output 
listings of assemblers and octal memory dumps, etc . . be hex 
dumps and hex assembly listings. It will save space and time 
for all!!! 

By the way, DDJ and PCC are the best micro and mini 
computer publications available!!! Keep it coming!!! 

Hexidecimally yours, 

Mark J. Nitzberg 

4D41 52 4B20 4A2E 20 4E 49 54 5A 42 52 47 
115 101 122 113 040 112 056 040 116 111 124 132 102 
105 122 107 
15 South Drive 
East Brunswick, NJ 08816 

P.S. Believe it or not, I am sixteen (Ofh, 026q) years old by 
some coincidence. Also, note that sixteen more characters 
were required to represent by name in ASCII octal than hex!! 

DR. DOBB’S ADOPTS PETERBOROUGH 
PRINCIPLE 

Jim C. Warren, Jr., Editor, DDJ 

Ever since I first saw 73 magazine (a ham radio mag out of Peter¬ 
borough, NH) — and noticed that they used the "radical" scheme of 
simply numbering their issues sequentially, rather than using a Volume 
number and Issue number — I have been thinking of switching 
Dr. Dobb's to this more convenient issue-numbering practice. It's 
useful ’cause from time to time, we get queries about the "missing” 


COMPUTER NETWORKING SYMPOSIUM 
ADVANCE PROGRAM AVAILABLE 

News Release Received: 77 Oct 25 

The advance program for the COMPUTER NETWORKING SYMPO¬ 
SIUM is now available. The COMPUTER NETWORKING SYMPOSIUM 
will be held in Gaithersburg, Maryland, December 15, 1977. The 
symposium will explore the planning, implementation, evaluation and 
use of both large and small scale computer networks. Important tech¬ 
nical advances will be reported and the progress of existing networks 
will be reviewed. For a copy of the advance program write to 
COMPUTER NETWORKING, Post Office Box 639, Silver Spring, 
Maryland 20901, or call 301-439-7007. The COMPUTER NETWORK¬ 
ING SYMPOSIUM is being cosponsored by the IEEE Computer 
Society and the National Bureau of Standards. 

MORE ON MODEMS FOR CASSETTE RECORDING 

(No, There are Better Cheaper Ways) 

Alan Parker 

9660D Barrel House Road 
Laurel, MD 20810 

Received: 77 Jui 7 

What’s all the fuss about using an acoustic modem as a 
tape interface. With a good tape recorder (not a $20 wonder) 
it will work, more or less. Modems cannot tolerate any fre¬ 
quency distortion, which is what you get from tape recorders. 
The telephone lines don’t tend to change frequencies below 
7Khz or so. I found that a model worked quite well with a 
Wollensak reel to reel type deck, but did not work at all with 
my cassette unit (which is cheap). 

Now if I had a modem (which I do) I would be inclined 
to use it as a modem (which I do). For people needing a cas¬ 
sette interface, who like me don’t believe in spending $100 
for a simple circuit see the April 1, 1976 issue of Electronics, 
page 83. There is a cassette interface published there that is 
simple (6 chips), cheap (less than $15), and very low on power 
(CMOS). And it works. It can tolerate speed variations of up 
to 5% (my $20 special rings in below that). This circuit also re- 
quires no adjustments. _ 

GODBOUT RAMs SOL & GREEN PRAISE 

Dear Jim: Received: 77-Sep-9 

Just discovered that you can’t use the Godbout 8K RAM 
board with the SOL SYSTEM unless you tie the PROTECT 
line low on the board. It flips back and forth if left untermi¬ 
nated and writes erratically. Otherwise a good board and a 
bargain at $163.84. This problem will affect any computer 
that doesn’t use the PROTECT line. 

I am a Ham as well as a Computer Hobbyist and I have had 
many dealings with both John Craig and Wayne Green. In fact, 
I have sold them at least a half dozen manuscripts. I feel that I 
have always been treated fairly and honestly. Wayne likes to 
keep things stirred up but that is needed sometimes. As to 
your comments on the Computermania I’ll have to let them 
stand since I can’t dispute what you say. 


73, 

Rod Hallen 
Road Runner Ranch 
P O Box 73 

Tombstone, AZ 85638 

11th and 12th issues for each year (we only publish 10/year). It's parti¬ 
cularly appropriate right now because I have managed to get so far 
behind in our "regular monthly" publication schedule (but, we're 
catching up fast, now that we've taken on Tom Williams as our 
Assistant Editor). And, it's more regular and orderly — as is appropriate 
for a computer publication — than the Volume/Issue practice. Ya see, 
step 1 was to stop using Roman numerals for Volume numbers (some 
publications still do). Now, step 2 is to rid ourselves of (his sector/byte 
addressing in favor of simple, linear byte addressing. Note: For those 
to whom it matters — like the Post Office 2nd Class clerks — we will 
continue to give the official month of issue in the Staff Box on page 2. 


Number 19 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 5 


375 



A Detailed Report on Product Delivery Complaints 

By Tom Williams 


Tom Williams, Assistant Editor, DDJ 

In the June/July issue of Dr. Dobb’s Journal , due to a 
rising number of complaints we were receiving, we initiated a 
project which was somewhat facetiously called a “pseudo- 
contest” for the manufacturer with the longest delivery delay. 
We asked readers who felt they had been wrongly dealt with to 
submit documented details for publication. They were to 
include copies of any cancelled checks, invoices, original order 
form and any correspondence on the matter in question. In 
addition, we asked everyone submitting such documentation 
to sign a statement saying that at the time they placed the 
order they had no indication there would be more than a one- 
month delay in delivery and that they had not received an 
offer of immediate refund of their advance payment when an 
undue delay became apparent. 

We are delighted to report that response to this project has 
been only nominal. Perhaps it was a bit too much to ask of 
people when the most they could expect was not immediate 
satisfaction but merely the airing of their grievance in public 
with the documented response of the manufacturer. There 
were, on the other hand, enough people who were sufficiently 
motivated — or frustrated — to send in some very well sub¬ 
stantiated case histories. Thus, we have concluded that their 
stories are representative of something. Conversations with 
manufacturers — mostly by phone and mostly with the 
presidents of the companies involved — revealed certain 
common denominators which will be summarized in the 
conclusion of this article. We also found, not suprisingly, 
that there are generally two sides to every story and that while 
this may not constitute fairness to someone who’s had his 
$400 tied up for six months, neither is it a case of out-and-out 
fraud. Of course, there are exceptions. 

Once again it should be made clear that this investigation 
concerned itself with delayed delivery of merchandise primarily 
in cases where some form of advance payment had been made. 
It was not our intention to get into questions of the quality or 
suitability of the products themselves. It should also be noted 
that a goodly number of customers who had waited what they 
felt was an unreasonable amount of time were nonetheless 
unwilling to accept a refund that was offered. They wanted 
those goodies that badly. 

The case histories that follow are ones we received that 
were particularly well documented and which we feel, based 
on more general information available to us, are indicative of 
what is going on in the market as a whole. It should further 
be pointed out that the companies mentioned were not singled 
out as particularly major offenders; they are the cases which 
people sent us, and due to the small actual number of cases we 
received they can only serve as examples. Nonetheless, the 
cases we recount here are real enough in themselves that useful 
information can be obtained from them. 


Ohio Scientific 

On September 27, 1977, we received a letter dated Sep¬ 
tember 22 from Mr. Troy N. Belote of Fayetteville, Arkansas, 
complaining about the delay in delivery of a Sanyo video 
monitor he had ordered from Ohio Scientific Instruments of 
Hiram, Ohio. The order had been acknowledged over four 
months earlier on May 19, 1977. A telephone call to Mr. 
Belote on October 10 determined that he had finally received 
his monitor on October 5, but he was still dissatisfied with 


the service he had received from OS1. He said that he had 
contacted the Arkansas Attorney General’s office and filed a 
consumer complaint. A copy of the acknowledgement from 
OSI gave the estimated shipping date as 45 to 60 days. The 
form also stated that the customer would be notified if there 
were any delays beyond the date given. There is also no 
evidence in the documents sent in by Mr. Belote that OSI 
attempted to voluntarily notify him of a delay in delivery. 
There are, however, copies of two phone bills showing calls 
Mr. Belote made to OSI. 

A telephone conversation with Charity Cheiky of OSI on 
October 10 revealed that Mr. Belote had won a 460-Z board 
offered by OSI as one of the prizes in the 1977 Kilobaud 
sweepstakes and that OSI had offered $99 credit toward 
some other item in their catalog if the winner did not find 
the 460-Z suitable. Mr. Belote chose the Sanyo 9” monitor 
and paid the $54 difference. When I asked Ms. Cheiky why 
it took so long to ship such a standard item, she said it was 
not something they sell a lot of and on their last order from 
their supplier, they had only received a partial shipment. She 
did not say why OSI had failed to notify the customer. The 
total time for delivery in this case was from May 19 to Octo¬ 
ber 5, 1977, or 139 days. 


ECD Corporation 

Since as early as January, 1977, ECD Corporation of 
Cambridge, Massachusetts, has been running full-page color 
ads for their Micromind computer system which sells for 
$987.54 without options. Included in the ad is a coupon 
where the customer can check a box labelled: “Fantastic! 
Check enclosed: $987.54. Shipping paid by ECD.” This same 
ad appears with a few exceptions in the inside back cover of 
Byte up through the September, 1977 issue. There is a new 
ECD ad on the inside back cover of the October issue, the 
theme of which is: “It’s th’backlog that usually gets ya’. . .” 

On May 20, 1977, George Zuras of Redwood City, Califor¬ 
nia, wrote a check to ECD for $415.96 as down payment for 
a Micromind system. He was told at the time that delivery 
would be three months with the balance due two weeks 
prior to delivery. When he called back three months later, 
in August, he was told delivery would be delayed until Sep¬ 
tember and has since been told that his computer won’t 
be delivered until December, seven months following his 
order. 

When I talked to Mr. Zuras by phone on October 10, 1977, 
he did say that ECD had offered to refund his money if he 
was, unwilling to wait longer than 30 days. Mr. Zuras said he 
thought ECD was being above-board but was still miffed 
that they had had his money for so long. He was, on the other 
hand, unwilling to take the refund offered because he wanted 
that computer. 

A telephone conversation the next day with Ed Costello 
of ECD largely confirmed Mr. Zuras’ story. Mr. Costello 
said that their prototype system was working and that they 
now have a production backlog. In addition, he said ECD had 
difficulty with some of its subcontractors concerning produc¬ 
tion of a redesigned PC board. Mr. Costello also reconfirmed 
December as the tentative delivery date. 

The two sides of the story appear to match and Mr. Zuras — 
though less than delighted — says he is willing to wait. 


Page 6 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


376 





Polaris Computer Systems 

Polaris Computer Systems, reportedly of 3311 Richmond 
Ave., Houston, Texas, 77098, seems to be in the check-cashing 
business — nice work if you can get it. $25 is not the moon, 
but all Laris Pickett of Douglas, Kansas, received for his 
down payment was his cancelled check and a registered letter 
returned “undeliverable as addressed”. We checked with 
Directory Assistance and found that the original number for 
Polaris Computer Systems had been changed. The new 
number, however, had been disconnected. Other attempts to 
locate or contact Polaris via telephone information were 
fruitless. Caveat emptor! 

The Digital Group 

TJB Microsystems is a dealer in Edmonton, Alberta, and 
has had difficulty ordering from a couple of suppliers in the 
U.S. TJB’s problems have been aggravated by the fact that 
smaller companies have no one trained to deal with customs 
formalities. That old nemisis, the U.S. Postal “Service”, also 
played a certain part in TJB’s troubles. 

On February 9, 1977, John Atwood of TJB placed an order 
with Digital Group for a Z-80 system, a power supply, and a 
printer with power supply and cabinet. TJB enclosed a bank 
draft in US funds for $2166. The Z-80 system was shipped on 
April 7, the power supply, memory boards and CPU cabinet 
were shipped April 26 and the printer was not shipped until 
August 8. TJB supplied copies of the export forms to docu¬ 
ment these dates. 

1 talked with John Atwood on October 11 and his main 
complaint was that he said he had never been contacted 
voluntarily by Digital Group about the shipping delay nor 
had he received a written explanation. He added that one 
cabinet contained in that order had yet to arrive. 

The next day I called Dick Bemis, President of the Digital 
Group, and asked about TJB’s problems. He seemed quite 
forthcoming and eager to be of help. The main problem, he 
said, had been in production delays involving suppliers and, 
at the time of our conversation (October 12), Digital Group 
was discouraging printer orders because of the problem in 
supplying cabinets. 

Mr. Bemis said they had experienced delivery problems 
through July and August but that the situation had improved 
since September except for the cabinets. The steps Digital 
Group had taken to improve delivery were to hire 40 new 
people and to expand their plant facilities. 

When 1 asked about informing customers about delays, he 
observed that would be a major dedication of resources — 
resources that might better be used for production. He went 
on to say that if a partial shipment had been made, the paper¬ 
work involved with keeping the customer notified becomes 
cumbersome. At this point we cannot repress the editorial 
observation that this sounds like the kind of task you could 
train a computer to do. . . 

At any rate, according to Dick Bemis, Digital Group has 
solved most of its production problems and customers should 
not have to wait more than four weeks for delivery. 

Miniterm Associates 

TJB’s woes continue with an order placed January 12, 1977, 
with Miniterm Associates of Bedford, Massachusetts. They 
ordered six of Miniterm’s Merlin displays and four of the MBI 
firmware and enclosed a bank draft for $1336, U.S. The order 

Number 19 


was acknowledged January 21. We also have on hand a copy of 
a letter from Dave King, President of Miniterm, dated January 
21, saying that partial shipment would be made “next week” 
with the remainder to be shipped by February 14. The first 
Merlin interface was shipped February 22. The next shipment 
of three Merlins was March 23 and the last shipment was dated 
July 1. 

John Atwood told me that TJB had finally received every¬ 
thing, but only after the Postal Service had lost one box, 
reimbursed Miniterm, and Miniterm had finally reshipped. 
The impression I got from Dave King when I called October 12 
was rather vague. He cited unspecific “production delays”, 
the fact that they had moved, “paperwork problems”, and a 
lost invoice. John Atwood is conviced that Miniterm is totally 
confused. 

When 1 asked Dave King about any attempts on Miniterm’s 
part to notify the customer about delays, he said the customer 
had called several times, and he returned a phone call. He did 
say, however, that the delivery problems had been overcome 
and if 1 were to order a Merlin that day, he could ship in 
2—7 days. 

Associated Electronics 

It is a sad fact that some customers in the microcomputer 
marketplace wind up getting just plain “stuck”. One unfortu¬ 
nate who didn’t take it lying down was Herbert Shore of 
La Jolla, California. He purchased a 16K memory kit from 
Associated Electronics of Garden Grove and Fullerton, Cali¬ 
fornia, on April 17, 1977, while attending the First West Coast 
Computer Faire. He paid the full price of $314.95 for the unit 
using his BankAmericard, and has supplied us with copies of 
the sales slip and the statement showing that Associated 
Electronics had posted the sale on April 20. On June 23, 1977, 
Mr. Shore sent a letter by certified mail, cancelling the order 
and demanding a full refund. On August 16 Mr. Shore filed a 
suit in Orange County Small Claims Court to recover his 
money, court date set for September 22. 

On October 14 1 called Brice Ward, one of the owners 
of Associated Electronics to ask about Mr. Shore’s complaint. 
When he learned the nature of my call, he became quite hostile 
and said he would not discuss it. He said we could handle it 
any way we liked and hung up on me. Well, the way we like 
to handle it is to report what happened, so there it is. 

I called Herbert Shore the same day to check on the 
outcome of his court claim. He told me that Associated 
Electronics had failed to appear and he had gotten a default 
judgement. This does not seem to be an isolated incident. 

A reader sent us a clipping from the October 5 edition of 
the Valley News of Van Nuys, California, where a reader 
assistance column titled “Valley Open Line” received a letter 
from a reader who had had a similar experience with 
Associated. The reporter who called Mr. Ward to inquire about 
his reader’s complaint got a lecture on minding his own 
business and was also hung up on. In view of all this, we 
cannot recommend that you associate with Associated. 

Southwest Technical Products Corporation 

In this particular case, it is not so much the delay in 
delivery — which did exist, but was less acute than other 
cases — that is of interest. Rather, the interesting facet of this 

Page 7 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


377 



case is the effectiveness of Federal agencies when presented 
with a consumer complaint. Mr. Joseph O’Loughlin of Huron, 
Ohio, ordered a SWTPC 6800 computer on June 7, 1977, and 
enclosed payment of $395. The order was confirmed on June 
10, stating that the shipping delay was four weeks. When he 
had not received the order by July 22, Mr. O’Loughlin called 
and was told that there would be an additional four weeks 
delay. He then requested the order be cancelled and demanded 
a refund. The refund arrived within nine days (two more than 
the letter of the law) and Mr. O’Loughlin told us that he really 
couldn’t call that unreasonable. 

Mr. O’Loughlin also filed a complaint with the Federal 
Trade Commission and received a letter in reply to the effect 
that the FTC had limited resources and manpower and could 
only take action in cases affecting substantial numbers of 
customers, and that his complaint had been entered into a 
computerized system. 

I called Dan Meyer, President of SWTPC, about 
Mr. O’Loughlin’s complaint. He said he couldn’t understand 
why the customer had not been notified, as delay notices are 
generated automatically by their computer. (At this point 
we can imagine Mr. O’Loughlin despairing of computers and 
taking up needlepoint.) When asked about the reason for the 
delay, Mr. Meyer said that they had something of a problem 
since last spring, due to an unanticipated demand creating an 
order backlog. He said current delivery delays were four to 
six weeks (at the time of our conversation, October 21). Part 
of the problem, he indicated, was due to a supplier of memory 
chips (the only one in the world who makes them) having had 
a yield bust. The unavailability of parts had thrown off the 
whole production schedule. When asked about communication 
with customers, he said they get so many orders, so fast, that 
they must decide whether to devote their resources to pro¬ 
duction or to customer service. This again reveals a problem 
to which 1 shall return at the conclusion of this article. 

Processor Technology 

Dan Wingren of Dallas, Texas, appears to be a very long- 
suffering gentleman. On November 26, 1976, he ordered 
Processor Technology’s 8K BASIC and says he was told at 
the time that the tapes would be shipped in ten days or 
two weeks. He paid for the order in the amount of $66 with 
BankAmericard. After various phone calls and letters and after 
cancelling his original order, he finally received a notice dated 
March 17, 1977, saying that 8K BASIC would be available 
May 16 and that customers would be notified of any schedule 
change. He subsequently reinstated his order for 8K BASIC, 
TREK, and Gamepack, as well as for a subscription to the 
P.T. newsletter, Access. He then received a letter, dated 
March 30, 1977, from Ralph Palsson, Processor Technology’s 
Customer Service Manager, informing him that 8K BASIC 
would be delayed — probably until mid-May. 

On July 11 Mr. Wingren sent an angry letter demanding 
either immediate delivery of his order or a prompt refund. 
On July 22 his BankAmericard account received a credit in 
the amount of $70, the full amount of his reinstated order. 

I talked to Ralph Palsson of P.T. about this long delay 
and about the story on Processor Technology’s 8K BASIC, in 
general. He said that their BASIC was being totally written 
in-house. They were incorporating a lot of extra features 
(data files, text editing, etc.), and had run into a lot of soft- 

Page 8 


ware bugs along the way. A subsequent conversation with 
Bob Marsh, President of Processor Technology, turned up the 
fact that although development of 8K BASIC had been begun 
in late 1975, it was halted in mid-stream for a considerable 
period of time. He stated: “Substantial delays in delivery 
were caused by uncertainties and hassles caused by litigation 
with some members of the software team”. 

Ralph Palsson was able to give me some firm dates about 
delivery and assured me that Processor Technology had 
learned its lesson about advertising a product before it is 
actually available. Let others heed. 

I was told 8K BASIC would be completed and ready for 
production by November 15, and they would be starting 
deliveries by the second week in December. With luck, 
Processor Technology will be more accurate in the future 
than it has in announcements of the imminent delivery of 
8K BASIC. 

In the meantime, it has come to our attention that a 
Byte Shop in Boulder, Colorado, is offering PolyMorphic’s 
11K BASIC with software patches that will allow it to 
implement on a Sol-20. I talked with Terry Flander of the 
Boulder Byte Shop and he confirmed that such a package 
was available and that it included all the features of Poly’s 
11K BASIC except the PLOT and RTC. It sells for $60. Those 
interested may write to The Byte Shop, 3101 Walnut, Boulder, 
Colorado 80301, (303) 444-6550. 


Dr. Dobb’s Journal 

To no one’s surprise, our own publication received a 
number of nominations for the Grand Prize in our pseudo¬ 
contest. For devious deeds by Dr. Dobb’s we have reserved 
special treatment — a separate section at the end of this article 
wherein we summarize some of the complaints and offer our 
own explanations and lame excuses. 

Others 

Among some of the other complaints we received was one 
that could best be called a “can of worms”, with both the 
consumer and vendor investing so much ego into the argument 
that the facts of the matter become blurred. In such cases, 
though there may or may not be a legitimate grievance, it 
seems best to declare both sides winners (or losers); send them 
to their corners, and refrain from further comment. 

Summary 

Let us first repeat that the responses we received do not 
constitute a significant statistical base. They should be viewed 
as documented examples of the type of undocumented 
complaints we have been receiving for some time. We do be¬ 
lieve, on the other hand, that certain conclusions can be drawn 
from the material presented here. 

The first and most glaring fact is that there is a definite 
lack of communication between manufacturer and customer. 
People send in an order with a substantial payment, receive an 
acknowledgement, and then wait literally months without the 
slightest word on the status of their order. Aside from being 
downright illegal, this is discourteous and detrimental to 
customer relations. Many of the complainants I talked to 

Number 19 


Or. Dobb’s Journal of Computer Calisthenics 8< Orthodontia, Box E, Menlo Park, CA 94025 


378 



said they would have been content to wait longer for their 
merchandise, if the manufacturer had just taken the trouble 
to let them know that their order would be delayed and what 
the problem was. 

This “communications gap” has its origins in two different 
views of the market and what people expect of it. A mail-order 
customer may assume that ordering a computer system should 
entail no more problems than ordering a Wisconsin cheese. 
And indeed most of the ads in the magazines support this 
assumption. These ads, conceived for the most part by adver¬ 
tising agencies without sufficient supervision of the manufac¬ 
turers, awaken expectations that are very often disappointed, 
and as the market moves from the technical hobbyist to the 
more general consumer these disappointments can only 
increase. It must be incumbent on the manufacturers and on 
the publications to educate their customers and readers 
concerning the nature of this industry and the possible 
delivery problems. 

The fact is that this industry didn’t even exist three years 
ago. It is also an industry that uses the very latest available 
technology, and depends on components that are available 
from only a few sources. If one such component should 
become unavailable for some reason (like a bee flying into an 
oven causing a plant shutdown) it can suddenly stop delivery 
of a product that a company had every reason to advertise as 
deliverable off-the-shelf. 

Dan Meyer of Southwest Technical Products observed that 
it is not always the best idea to order directly from the manu¬ 
facturer. Often, a store may be able to better anticipate 
demand and order stock in advance. If a dealer doesn’t have it, 
it may not be available any faster from the factory. 

The practice of advertising products before they are 
actually available has been common in the electronics indus¬ 
try for years, but it has never been the norm in the general 
consumer market and it will have to be stopped. Many 
companies are beginning to see the error of their ways and are 
halting the practice. Many of the manufacturers are simply 
inexperienced in dealing with such a large demand and have 
become, quite innocently, over-extended. “We just didn’t 
anticipate the demand” was the answer to a great number of 
my questions. 

The fact that things are so intensely competitive will, of 
course, ultimately work to the consumer’s advantage. Com¬ 
panies which, innocently or not, do not satisfy their customers 
will not survive. And in a marketplace where it is difficult for 
honest manufacturers to establish themselves, dishonest 
companies may rip off a few unfortunates, but will not stand a 
chance in the long run. 

Dr. Dobb’s Does It Too 

On October 4. 1977, we received a registered letter from a 
reader who requests that his name not be used. He had ordered 
a subscription to Dr. Dobb’s and a copy of Volume 1 in 
January. Having heard nothing by April 25, he sent a letter 
asking what had happened and received a letter from People’s 
Computer Company dated May 17 which promised delivery. 
Our patient reader inquired once again in June, then again in 
August but to no avail. This latest missive, entering us in our 
own contest, has finally jarred a response. 

1 asked Bill Bruneau, Circulation Manager for People’s 
Computer Company, about this complaint and how typicai 

Number 19 


MOSTEK/ZILOG FLAG FLAP 

Dear Dr. Dobbs, Received: 77 Oct 31 

1 just bought a copy of MOSTBK’s Z80 Programming 
Manual, thinking it would be a useful supplement to the 
Z1LOG Technical Manual which came with my Digital Group 
Z80 CPU kit. 

Well, it’s not. But more to the point, I found a significant 
difference between the two chips. The ZILOG version sets 
the Carry flag when subtraction generates a borrow. The 
Mostek chip resets. This could lead to some very puzzling 
software behavior. Mind how you go. 

Sure do enjoy DDJ , keep it up. j p Caldwell 

P.O. Box I 16 

__Burgess, VA 22432 

it was of the situation in general. He said that since June, 
there had been very little trouble getting people their copies of 
Volume I. Prior to that time we had also committed the sin 
of advertising Volume / before it was actually available. 
Additionally, there had been problems with record keeping. 

This reader’s problem with his subscription had been fixed 
in June, but his order for Volume / had somehow slipped 
past us. Well, there we are with egg on our face. Bill Bruneau 
tells me, though, that this is atypical. If someone genuinely 
hasn’t gotten his copy of Volume / he sends it out by First 
Class Mail, but he has only had to do this in about 1% of the 
cases. 

As for subscriptions, yes, there are still problems, but we 
are catching most of them eventually. The main problems 
arise if someone’s subscription is entered incorrectly — as in 
a coding or keypunch error (human error, not the computer’s 
fault) — or if we somehow miss an update, in which case it can 
take a whole issue to find the mistake. The Postal Service has 
also played a part in the problem. Delivery time locally can 
take as long as two to three weeks and transit time to the east 
coast can take as long as six weeks. 

Additionally, there has been a severe problem with the 
Editor’s failing to produce the issues on a regular schedule. 
Jim Warren, the Editor of DDJ , has managed to badly over¬ 
commit himself, and — even as DDJ has grown and has needed 
more of his time, he has often had less time. Jim’s comments: 
“I have appologized for delayed issues before. 1 wish to repeat 
that very sincere appology. I have finally given up all hope of 
running Dr. Dobb’s as a one-person anarchy, and have found 
an Assistant Editor. Due to this, I believe that our production 
problems — which are entirely my doing — are over, and our 
publication should be back on schedule by the November/ 
December issue.. . That is, issue Number 20.” 

We are evolving a system which minimizes complaints, i.e., 
problems, which is far from perfect yet, but things are improv¬ 
ing. Specifically, virtually everyone eventually gets a response, 
but correcting the “problem” has priority over a personal 
letter. One problem is that writing a letter is within 2 magni¬ 
tudes (1%) of the subsciption price, and we can only afford 
two employees including Bill Bruneau to handle 14,000 
subscriptions. The industry average is one person per 3,000 
subscriptions. 

The research I did for this article makes me optimistic that 
as our fledgling marketplace matures, things arc improving in 
the microcomputer industry as a whole. Thus, I can close with 
the observation that we are all getting our act together. 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 9 


379 



The Heath H-8* Pro & Con 

Editor’s Preface: We have received the folio wing e valuation -criticism-of the H-8 from someone whom we know personally, 
and whose judgement we generally respect. At the author’s request, we are witholding his name, however we will forward 
any correspondence that may be directed to him immediately upon receipt. 

■4s this is a significant criticism of the H-8, we are following our policy of providing Heath the opportunity to offer a 
substantive and in-depth response to the criticisms. Heath’s director of computer products, Lou Frenzel, has been given an 
early copy of the negative article (with the knowledge of the author), and we are publishing his response in its entireity. 

We would very much appreciate additional comments and evaluations of the Heath products-compliments and com- 
plaints-from purchasers and users of the H-8 and H-ll. We are convinced that, if Heath products have imperfections, 
Heath will do their best to rectify those problems. Heath has a long history of being the definitive electronics kit manu¬ 
facturer, and we have no doubt that they will continue that tradition with their new computer kit product lines. Careful 
and responsible evaluations of their products-positive and negative—can only be of assistance to them. 

A more personal note: I had mixed feelings about allowing the publication of this “blind’’ article. I would certainly not 
have allowed it had it not been that (1)1 personally know the author and respect his technical judgement, and (2) he raises 
points and offers criticisms of the H-8 that—in several cases-I have heard from others, or have thought myself. Founded or 
unfounded, they are being discussed in the hobbyist community, and are thus worthy of being aired and addressed by Heath. 

1 have heard mixed feedback on the H-8 software. Some users have praised it; some have maligned it. I have generally 
heard praise for the usefulness of the front panel system on the H-8. Many of us questioned Heath's failure to adopt the 
“S-100 bus’’—whatever that is (it’s never been adequately defined, electronically or functionally), and Lou has provided the 
best possible response to that question-a response that is equally applicable to the other excellent non-S-100 systems, 
e.g. Digital Group, Apple, SWTPC, etc. I he anti-octal comment raises the unending octal/hex debate (I prefer octal, ‘cause 
/ only have eight fingers-and two thumbs... and, mostly because it was my mother tongue on an old PDP-8). The lack of 
an extender board will soon be remedied by Bob Mullen of Mullen Computer Co. I tend to agree with the complaint about 
the lack of standard parts desigimtions and slanted board mounting. Please note that the criticizing author maligned the H-8 
for lacking an S-100 bus, while praising Apple. .. which doesn’t have an S-100 bus. 

Regarding Lou’s rebuttal: A number of computer stores are beginning to refuse to back “mixed-vendor” systems that 
turn up problems due to unsuccessfully mixing S-100 “ standard” parts. On the other hand, Heath would hardly refuse 
to warranty a stereo tuner simply becuase it was being used with a non-Heath stereo amp. The consumer market need not 
necessarily follow the tradition of the computer industry market regarding non-support for systems incorporating foreign 
subsystems. Incidentally, Godbout Electronics is about to market an H-8 memory board.. . at noticeably lower per-byte 
cost than Heath’s memories. (This may be a faster-appearing 2nd source supplier than Heath was expecting. It will be inter¬ 
esting to note their response.) Lou commments that the tilted boards make it easy to get to components. I don’t see how 
this can be the case when one needs to reach components on more than one card. 1 do believe that Heath uses first-line parts. 
Additionally, it is my impression that they test all parts prior to inclusion in kit packages (I saw the testers when I visited 
the Heath plant in June). 

My conclusions are that: (1) The H-8 has some problems.. . as is inevitable of any new high-technology product. 
(2) Some of the criticisms are probably just-and, in some cases, are equallly applicable to other vendors’ products. (3) The 
critical author's sarcasm should be taken with a grain of salt, and perhaps reserved for the entertainment of those of vitriolic 
bent. (4) In spite of the imperfections of the H-8, Heath is well worth considering-comparing against the imperfections of 
other manufacturers. And, Heath is to be praised without end for the quality of its documentation-an order-of-magnitude 
improvement over the majority of personal computing documentation I have seen, to date. - JCW, Jr. 


A CRITICAL LOOK AT 
THE HEATH H-8 

This is probably the worst 8080 based personal computer 
system to come along in a while. While Heath (a division of 
Slumberger) is a reputable company that has put out (and 
continues to put out) many fine products backed up by some 
of the best assembly, check-out and operational manuals in 
the business, this one is a dog. It is badly designed from the 
printed circuit layout to the cabinetry to the operating soft¬ 
ware. 

The first thing that any potential customer should know is 
that the H-8 is not in any way compatible with the SI00 bus. 
Heath cannot ever afford to put out the hundreds of different 
boards that dozens of aggressive companies are producing. 
Heath claimed that they invented their own bus so that they 
could produce boards that would be cheaper than the compe¬ 
tition. Wrong. Their product is in the upper price ranges. While 
they were looking at MITS prices, independents such as God- 
bout (and others) were showing the way to really popular 
low cost items. 

The boards are tilted back at an angle as is the front panel. 
Then they are held by an aluminum bail that is screwed into 

Page 10 


RESPONSE TO CRITICAL ARTICLE 
ON THE H8 COMPUTER 

Louis E. Frenzel 
Director, Computer Products 
Heath Company 
Benton Harbor, MI 49022 

77-Oct-25 

The author’s first objection has to do with Heath not 
adopting the S100 bus. When the development of the H8 
began in 1975, the term SI00 did not exist. Nor was that 
bus widely used as it is now. The MITS Altair had only 
recently been introduced. It was the only microcomputer 
available. Naturally we looked at that machine and studied 
the bus structure. 

The SI00 bus is an old bus design that assumes you are 
using an 8080 without the system controller (8228/8238). 
There are many unnecessary signals on the bus. Less than 
half of the total 100 lines on the bus are useful or needed. In 
addition, the bus has a variety of noise and timing problems. 
It is also an expensive bus in that it uses high cost printed 
circuit board edge connectors. We knew that we could produce 
a lower cost bus with greater electrical integrity. That is what 
we set out to do as others have done (Digital Group, etc.). We 

Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


380 



CRITICISM, cont. 


RESPONSE, cont. 


each board. The boards are also attached by another screw 
at the bottom. Changing boards is a pain. The connectors 
and the mother board run along the right side of the case. 
Female connectors are soldered to each PC board and male 
connectors stick out from the backplane (sideplane???). 
This makes it easy to short power and other lines. This also 
means that they can’t use the simple and effective printed 
fingers the SI00 boards exhibit. It means more parts, more 
difficult assembly, and higher cost. Furthermore it is possible 
to push the boards onto the connectors in the wrong position. 
This is regrettably easy to do. The SI00 boards are not 
symmetrical and cannot be put in the wrong way (so long as 
there are card guides as on almost all SI00 systems). So Heath 
is wrong again. The sideplane also makes an extender board 
a sort of right-angle affair. Heath doesn’t offer one, and it 
will have to be rather mickey-mouse even if they do. There is 
no reasonable way to extend a card out sideways as the sides 
are firmly attached to the computer. It is not like having a 
lift-off top. 

The layout on the cards, in an attempt perhaps to make 
them easy to build with your feet, is wide open. There are a 
few chips here and there separated by acres of nothing. Thus 
when everybody is coming out with 16K to 64K cards there is 
Heath with an 8K card. It comes with 4K; the extra chips are 
an option. At least Heath provides sockets for all the chips. 

The front panel is not as primitive as the Altair and Imsai. 
It has a calculator style keyboard (which bends the PC board 
when you press a button firmly) and some numeric LEDs. 
Everything is in OCTAL, whereas the 8080 world is 85% Hex 
by now. Why didn’t the people at Heath notice what the 
really smart designers — like those that produced the SOL, the 
APPLE, the Poly-88 — were doing? Were their heads in the 
sand? The few clever ideas (like a beep to indicate a command 
accepted) are far outweighed by the deficiencies of the H-8. 

Heath, to be consistant, should now do to all their other 
product lines what they have done to the computer. For 
example: they shouldn’t use standard audio connectors on 
their hi-fi equipment. That way you’d have to buy Heath’s 
connectors. They could have the impedence of their audio 
power amplifier outputs set to 217 ohms, so you’d have to 
buy Heath 217 ohm speakers. Given a little more creative 
marketing, Heath would re-do all its manuals to use non¬ 
standard units of voltage and current so that you’d have to use 
Heath-designed meters to check it out. They’ve already gone 
a bit in this direction: instead of giving a familiar designation 
like 7404 on the schematic diagrams, all they show is the 
Heath house number. Thus, when debugging the circuitry 
you have to constantly reference their parts lists, then look up 
the pin-outs in the charts. While the practice of using house 
part numbers might be OK for some other things, many prac¬ 
titioners know the various ICs by the more conventional 
numbers, and can read a schematic easily if they are given. 

Heath has gotten a bit too big for its britches with the H-8. 
Let’s hope they do better with the H-l 1, which does use the 
standard Q-bus like any other LSI-11 computer. The H-8 is 
not recommended and Heath should have its corporate head 
examined for springing this kit on its trusting customers. 


felt that it was a poor business decision to perpetuate this 
design in a new product. Progress is made only when someone 
is willing to make changes and improvements. 

Since we elected to use our own bus, we took the position 
that we must support it. Users that select the H8 will want the 
wide variety of memory, interface and other accessory cards 
available for SI00 bus computers. Your author makes the 
statement that “Heath cannot ever afford to put out the 
hundreds of different boards that dozens of aggressive 
companies are producing”. He is wrong since we can afford to 
produce a wide variety of accessories. Those accessories will 
not run into hundreds, of course. If you take a critical look at 
the two hundred or so different cards available for S100 com¬ 
puters, you will Find that over 95% of them are memory cards 
of some configuration. The remaining cards are mostly inter¬ 
faces for serial and parallel I/O. A few special cards such 
as video interfaces, floppy disk controllers, the TV dazzler, 
DA/AD, speech and music synthesis are also available. You 
can be sure that many of these cards will be available for the 
H8. 

Your author also states that “Heath claims, that they 
invented their own bus so that they could produce boards that 
would be cheaper than the competition”. Not true. We made 
no such claim. The H8 cards are slightly larger than SI00 
cards but they contain about the same amount of circuitry. 
They are priced approximately the same as equivalent SI00 
cards. Naturally the pricing varies with the type of board, the 
components used, the quantity sold, the development effort 
involved and many other factors. Heath has always offered 
reasonably priced equipment, and we intend to maintain that 
policy with our computer product line. Keep in mind that 
Heath does not use surplus or graded parts to effect a one¬ 
time low price. OnlyTiigh-quality first-line parts are used. 

A major reason for not choosing the SI00 bus is that it is 
too difficult to support. We go to great lengths to help our 
customers get their computer kits together and working 
properly. This can be done only if we can be sure that the 
customer is using all Heathkit equipment, equipment designed 
to work together. Like other computer manufacturers such 
as DEC, Data General and IBM, we simply find it impossible 
to support “foreign” attachments. It is particularly difficult 
with the SI 00 bus because of the wide variety of memory and 
interface cards available and the many variations in the bus 
signals. As we have discovered in evaluating SI00 bus systems 
and cards, some of the various accessories work in some 
computers but not in others. It is impossible for us to guaran¬ 
tee the proper functioning of our computer equipment with 
attachments of someone else’s design. I believe that you will 
find this attitude exists amongst SI00 computer makers as 
well. MITS, IMSAI, Polymorphic, Processor Tech, Vector and 
others certainly do not look forward to supporting their 
computers with “foreign” accessory cards. There are too many 
variations and some combinations simply do not work. 

Some computer stores have already recognized this problem 
and are beginning to take a hard line on selling and servicing 
SI 00 equipment with different mainframes, memories and 
interfaces. The concept having many hundreds of accesso¬ 
ries available for your S100 bus computer is excellent. But in 
practice it simply does not work out. The choice is more 
limited than one suspects and care must be taken to ensure 
that the various accessory cards selected do indeed work 
properly with the mainframe. 

Many of the problems that computer hobbyists are having 
today are associated with mixing SI00 accessories and main¬ 
frames purchased from different sources. Some of these 
problems simply cannot be resolved. Neither the accessory 


Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 11 

381 



RESPONSE, cont. 


RESPONSE, cunt. 


manufacturer nor the mainframe manufacturer want to take 
the responsibility for getting the complete system to work. 
As a result, many hobbyists are simply being frustrated 
and discouraged. This is just the kind of problem we are 
trying to avoid. I think other manufacturers would do well to 
adopt a similar policy if the hobby is to grow and prosper. 
If a hobbyist wants an SI00 bus computer, he should at 
least buy all his cards from the same source if he wants to 
ensure getting a workable system. 

In my observation, interest in the SI00 bus has already 
peaked. My own research reveals that the trend is definitely 
away from the SI00 bus and toward newer, improved 
designs. The SI00 was first and it works. But it isn’t really 
a standard and it has too many liabilities. I don’t think that 
most hobbyists will stay with SI00 when something better 
comes along. Hobbyists traditionally follow developments 
in technology (e.g. “hams” with amateur radio equipment) 
and want progress as much as industry. S100 will probably 
never die, but it will fade quickly. 

Given another choice, I doubt that we would select the 
SI 00 bus for our H8 computer. Perhaps it appears as a 
bold and incorrect decision to many, but in our opinion it is 
the best choice and we intend to support it. An H8 customer 
will not be left out of the action. 

The author’s comments on the physical design of the H8 
tend to fall mostly in the nit picking category. If he had 
actually built and used a production H8 he would certainly 
realize that the items mentioned are indeed not problems. 

The card mounting scheme was used to achieve a low- 
profile cabinet. The side-mounted bus and tilted cards 
gave us the desired physical dimensions. The mounting 
bracket on each card is an excellent heat sink for the voltage 
regulators and at the same time provides extremely stable 
physical mounting characteristics. To change a card you 
simply remove two screws. There is little or no need to 
change boards frequently. Only during the early stages of 
construction and checkout may possible board changing 
be necessary. 

The connectors used on the PC cards and on the bus 
mother board in the H8 are a much lower cost combination 
than the edge connectors and the costly tooled tongue 
SI00 boards. Even though they are lower in cost they 
are certainly not less reliable. In fact, manufacturer tests 
indicate that they are far more reliable than edge connectors. 
Greater reliability at lower cost is excellent value. True, the 
male pins do extend outward from the bus and if you are not 
careful tools, wire, solder and other metallic items could 
short the pins. But the pins are neatly out of the way on the 
side of the computer, and we have never experienced a 
problem. If one is reasonably careful, I doubt that any trouble 
will be encountered. 

Several other personal computer manufacturers use a 
similar connector scheme. The connector system used in the 
SWTP 6800 computer is practically identical, and to my 
knowledge they have never encountered problems. It is also 
possible to have similar problems with edge connectors. It 
is just as easy to drop a piece of wire or solder down into an 
edge connector and also create a short. Regardless of the type 
of connector used you have to be careful when working 
around them. 

Incidentally, it is not possible to push the boards onto the 
connectors in the wrong position. If your author had 
constructed an H8 board he would have found that each is 
keyed to prevent this problem. 

As for an extender card, we have yet to find a reason to 
offer one. Because the cards are tilted, the components are 


easv to get to. Troubleshooting a card is usually done by 
placing it in one of the rear slots and removing any unnec¬ 
essary cards. This gives full access to the card with no extender 
needed. The straight up and down design of most other 
systems makes it extremely difficult to get to the circuitry 
on the card and an extender card is needed. Extender cards 
are “bad news” because they typically upset the transmission 
line characteristics of the bus and introduce or mask problems. 
We avoided that. 

The author also criticized the wide open construction of 
our cards. Incredible! This is done deliberately to make the 
card easier for beginners to build. Solder pads are larger and 
the copper lands on the card are more widely spaced. This 
makes foil shorts less likely. The easier a card is to build, the 
more likely the customer’s success will be. Heat build-up is 
also less of a problem. This certainly leads to greater customer 
satisfaction. We will continue with our open card design as 
much as we can. Yet where higher density is needed, we will 
certainly use it. 

Incidentally, the front panel PC board does not bend when 
you press the keyboard, if the panel is mounted properly with 
all hardware in place, it is solid as a rock. 

The author mentioned 16K and 65K memory cards in 
contrast to Heath’s 8K card. We felt that the 8K design was 
optimum from a size and pricing standpoint. The 65K cards 
are ridiculously expensive. The average hobbyist simply 
cannot afford them. The 16K memory cards are also expen¬ 
sive for beginners who want to start with less. As a hobbyist 
learns more about computers and becomes proficient in 
programming, he will naturally want to expand his memory. 
This is when the 16K card becomes realistic. At least it is 
realistic from a size standpoint. Even then the hobbyist must 
convince himself (or his wife!) to spend many hundreds of 
dollars. It’s a lot easier to justify an additional 4K or 8K than 
it is a full 16K. We do see the need for a higher density 
memory card, and a 16K memory card is soon to be 
announced for the H8. 

The octal versus hexadecimal issue continues to be a strong 
point of argument amongst many hobbyists and manufac¬ 
turers. For those of us who have been in the computer 
industry for many years, it is a standing joke to argue the 
pros and cons of octal vs. hex. There is no correct solution to 
this issue. Perhaps if it was important someone would have 
solved it by now. Either octal or hex works well. It seems to 
be all in what you get used to. 

We chose octal because it fits best in machine language 
programming with the 8080 instruction set. Octal is also 
more decimal-like and therefore is more intuitive for the 
beginner. Octal seems to be easier to grasp and use when first 
learning such notation. 

Octal is also used on the LSI-11 which is the heart of our 
Hll computer. We felt it would be desireable to be consis¬ 
tent despite the differences in the two machines. Octal can’t 
be all bad since the two largest minicomputer companies, 
DEC and DG, still use it exclusively over hex. 

Frankly, I think that any computer professional or 
hobbyist should be able to work with either octal or hex. 
It is silly to get emotional when one is just as easy to use 
and understand as the other. Besides, once you learn machine 
language programming you are anxious to get away from octal 
or hex coding. Most hobbyists use a higher level language 
such as BASIC or assembly language to write programs in 
which case the octal/hex problem essentially goes away. 

Finally there is the issue regarding the labeling of the 
integrated circuits with their familiar generic designations. 
Typically we have always used the Heath part number on 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


382 



EDITOR & SMALL O S. 

Dear Sir: 

Enclosed is a description of EDIT, a text editor, and SOS, 
a Small Operating System. 

These programs are designed for 8080 based microprocessor 
systems. I have noted in letters to the editor of many maga¬ 
zines that the computer hobbyist is looking for such software. 
Please pass this information along. There are many satisfied 
users of both software packages in my local area. 

EDIT and SOS are available from: 

LSM ENGINEERING 
P.O. BOX 3243 
ORANGE, CA. 92665 

EDIT is available on Tarbell block format cassette or hex 
checksum paper tape for $22.50, and SOS is available on 
Tarbell block format cassette for $15.00. California residents 
add 6% state sales tax. Dealer inquiries are invited. Complete 
documentation is included with each package. 

Regards, 

Lorin S. Mohler 
219 N. Sweetwater St. 

Anaheim, CA. 92806 

EDIT PRIMER 

EDIT is a text editor program designed to be run on an 
8080 microprocessor based system. 

EDIT can be used to generate or modify pure source files 
for BASIC, FORTRAN, assembly language or other languages, 


or plain text that uses the standard 96 character ASCII set. 
Source files can be manipulated by characters, string, line, and 
page to perform additions, insertions, replacements, and dele¬ 
tions of text. 

Commands may be concantenated to form command strings 
for execution, or a command string may be defined in a macro 
that can then be executed repeatedly. 

EDIT has provisions for tabbing, selection of console width, 
and the number of nulls output after a carriage-return line 
feed. 

Any type of terminal may be used for the operator’s con¬ 
sole, including teletype, CRT terminal, and, with appropriate 
handlers, video modules. 

Source files may be entered through the console keyboard, 
console paper tape reader, or, with properly interfaced input 
handlers, from any input peripheral device. 

Source files may be output to the console, console paper 
tape punch, or, with properly interfaced output handlers, any 
output peripheral device. 

Tarbell cassette interface handlers and source listing are 
included. Complete input/output specifications are given for 
writing the required peripheral handlers for other peripheral 
devices. 

SOS PRIMER 

Do you have to hand load a bootstrap routine every time 
you want to get your system on the air? Or are you like one of 
those who have disconnected the power switch and let the 
system run for weeks hoping the power company won’t 
hiccup? Or do you have a minimum boot stored in ROM 
that just isn’t all that could be desired? If so, SOS may be your 


■/V’ 

RESPONSE ,cont. 


schematics. But the part is easily identified by simply 
referring to the IC chart in the manual. Your author may be 
interested to note that most of the H8 diagrams do already 
incorporate the standard designations. If your author had 
reviewed actual H8 documentation he would not have made 
this point. 

I am rather surprised at the comments by this author and 
his specific topics of discussion. Most of the commentaries 
seem to be opinion or guesses rather than based on actual 
facts and experience. I doubt that the author would have 
even written the letter if he had actually constructed an 
H8 himself and used it extensively. This is the only way that 
a fair and objective evaluation can be made. 

In addition, most of the points are minor ones. While the 
prospective purchaser of a computer may be concerned with 
some of the details criticized by the author, I suspect that 
most individuals are interested in more important things 
such as: (1) which microprocessor is used, (2) physical 
appearance, and (3) software. (Your author took a slap at our 
software in the first paragraph of this article, but never men¬ 
tioned it further. Could it be that he has never seen or used 
it?) Documentation and manufacturer support are other 
important factors that are more important to the user than the 
minor items criticized by the author. The strength of the H8 
lies in the fact that it uses the popular 8080. The computer is 


attractively styled and easy to build. We believe that the 
documentation is the best available in the industry. The 
software package is complete and easy to use. It is also includ¬ 
ed with the computer at no additional charge. 

As for support. Heath also offers the best there is. A 
customer can purchase by mail order or through one of 50 
retail stores across the country. Both factory and retail stores 
offer service and parts replacement. And don’t forget the 
Heath User’s Group. Heath is a large and reputable manufac¬ 
turer who has made a major commitment to the personal 
computer business. We plan to support and upgrade the H8 
computer for years to come. Many new and exciting 
peripherals, accessories, and software are on their way. My 
advice to a prospective computer user is to base his decision 
on major points such as these rather than the nit picking 
details blown out of proportion by your author. 

The success of the H8 will be determined by the customer 
in the market place. If our first two months’ sales are any 
indication, the H8 has been well received. Initial results have 
been simply spectacular. Our H8 customers know that your 
author is wrong and so will prospective customers who review 
our documentation or try out an H8 in the store before they 
buy. We know that everyone will not like or buy the H8. But 
the H8 certainly does not deserve the unfair criticism of your 
author. 


Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 13 

383 


answer. SOS is a Small Operating System designed to be stored 
in ROM. It required less than 2K bytes (692 hex) of ROM 
(allowing room for additional routines in the remaining ROM 
area on a 2K ROM board) and 256 .bytes of RAM for scratch. 
SOS has commands for saving (CSBK), loading (CLBK), 
and verifying (CVBK) data blocks(with checksum) via a Tarbell 
cassette interface, reading binary (RBIN), and Intel hex check¬ 
sum (RHEX) paper tapes via an Oliver (or similar) optical 
paper tape reader and system utilities, including a memory 
FILL, memory block transfer (XFER), memory block verify 
(VMEM), and memory DUMP and ENTR routines. 

SOS is supplied with a commented source lisiting and infor¬ 
mation on patching SOS without reassembly to add up to four 
new keyboard commands, modify for terminal displays with 
less then 64 characters per line, and add special functions. 

The SOS package contains an operating instruction manual, 
suggested patches and information on how to externally call 
routines within SOS or execute (XEQT) subroutines outside 
SOS. The SOS object code assembled at B000 hex with scratch 
at B800 hex is supplied on cassette using a block format with 
checksum. 

Also supplied on the cassette is a line numbered source 
ready to block load into memory and assemble, wherever 
you want, with a PTC ALS-8. Information is supplied for the 
simple modifications required to allow use of the PTC PKG 1 
or similar (ESP1, IMSAI) assembler if you don’t have an ALS-8. 

The following are examples of commands below that might 
be used in the generation and editing of a text file. 

After ‘EDIT’ has been loaded and started it will display the 
bootstrap message and prompt (*). The ‘S’ symbol is the echo 
for the escape key. The 1A ' symbol indicates where a space is 
to be entered. The symbol indicates where the carriage- 
return is keyed. The prompt (*), shown in the examples to 
maintain character positioning, is output by EDIT. 

Enter the command including two escapes (SS), the remain¬ 
ing portion of the COMMAND/RESPONSE display is EDIT’s 
response. 


COMMAND/RESPONSE 


-<C00S'C80$S 


•ITHE-LAZY-BR0WN*F0X-JUMPS-MIGH“0VER«^ 
-THE QUICK DOG 

SS 


EXPLANATION 

Limit (:) the text buffer not to expand past 
memory location 1FFF h‘x. The decimal number 
displayed *3S83 1 is the character space available 
in the text buffer. (Assumes BK ram available) 

Open the cassette peripheral input («) handler 
located at C00 hex and the output (■) handler 
located at C 80 hex. 

INSERT (I) lines of te t into the text buffer. 

The cursor remains after the last character 
entered (the carriage-return). 


*TSS 

THE LAZY BROWN FOX JUMPS HIGH OVER 
THE QUICK DOG 

•BCQUICKSLAZYSS 


■1LCLAZYSQUICKSS 


*2TSS 

BROWN FOX JUMPS HIGH OVER 
THE LAZY DOG 


•LIT SS 

THE QUICK BROWN FOX JUMPS HIGH OVER 


•SHIGHS-5DL1TSS 

THE QUICK BROWN FOX JUMPS OVER 


SS 


•L1TSS 

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 


TYPE (T) the contents of the text buffer. The 
cursor is not moved. 


Move the cursor to the BEGINNING (B) of the text 
buffer, then CHANGE (C) the first occurence of the 
text string 'QUICK* to the new string 'LAZY' 

Move the cursor to the beginning of the previous 
LINE (-1L) then CHANGE (C) the first occurence of 
the text string 'LAZY' to the new text string 
'QUICK'. The cursor lemains after the last character 
changed. 

TYPE two (2T) lines starting from the current 
cursor position. 


Move the cursor to the beginning of the LINE (L) 
and TYPE one (IT) line. 


SEARCH (S) for the first occurence of the text 
String ‘HIGH’, DELETE the five preceeding (-50) 
characters before the cursor, move the cursor to 
the beginning (L) of the LINE, then TYPE one (IT) 
line. Note that afte* a successful search the cursor 
is positioned after the last character of the string 
searched for. 

CHANGE (C) the first occurence of the string 
'CARRIAGE-RETURN' to t ie null string, making 
two lines into one line. 

Move the cursor to the beginning of the LINE (L) 
and TYPE one (IT) line. 


*ZITHE-END^> 

SS 


Move the cursor to the end (Z) of the buffer and 
INSERT (I) a new text string. 


XMCJ 

s.^> 

SS 


Define a Macro (XM) to CHANGE (C) the string 
'CARRIAGE RETURN' to the String 'PERIOD 
CARRIAGE-RETURN' 


TINY BASIC & DIGITAL GROUP DISPLAY 
ON A HONEYWELL 112 


Dear Jim, Dated: 77 Sep 11 

In the May issue of Dr. Dobb's Journal you published my letter 
saying I was interested in putting Tiny BASIC onto my Honeywell 112 
computer. So I thought you might like to know how the project 
turned out. I finished building the Digital Group (TVC-F) display and 
it worked first time, and so that allowed me to begin writing Tiny 
BASIC in my assembler language. 

The complete interpreter is now up and running; it has a few extra 
features making it an extended version of Tiny BASIC. My imple¬ 
mentation allows subscripted variables, single dimensional matrix 
operations and ASCII string handling plus special screen control and 
positioning commands. 

The interpreter takes approximately 3K of memory and I have left 
IK for future expansion, the other 4K of my machine holds the basic 
program and as my machine has 12 bit words I hold 2 six bit characters 
per word making it equivalent to 8K bytes in a normal micro. 

In the memory the BASIC program is held in the following format: 

1 loc for the line number (max 4095) 

1 loc for the BASIC command (form LT for let, PR for Print, etc.) 

extra locations for the rest of the statement as required ending with 

a carriage return character. 

Space characters are not stored unless it is a character string which 
is being entered to memory (which saves a lot of space), space characters 
are automatically reinserted into the listing by the interpreter. Multi¬ 
ple statements per line are ok. As interest in the Honeywell 112 is 
probably rather restricted I don't think you would be interested in the 
Interpreter listing; however, if there is anyone in your wide readership 
who has a 112 and would like a high level language for it, I would be 
happy to supply help if possible. 

Thanks as always, Jim, for an excellent publication and good luck 
for the future. 

Yours faithfully, 

Ian D. Spencer 
Am-Museum 1A 
5353 Mechernich 
West Germany 


-B5XSS 


STRING NOT FOUND 

C 

S. 

SS 


Move the cursor to the BEGINNING (B) of the text 
buffer then attempt to execute the Macro command 
five (5X) times. Since the string ’CARRIAGE-RETURN' 
only exists twice in tiie text buffer, the "STRING 
NOT FOUND" message and the remaining unexecuted 
portion of the conmand string will appear. The 
cursor will move to the beginning of the text buffer 
due to the error. 


TYPE (T) the contents of the text buffer 

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG. 

THE ENO. 


Start the cassette drive in the record mode. 

*l p $S PUT one (IP) line of the text buffer from the current 

* location of the cursor (now at the beginning of the 

buffer) to the output teripheral previously opened 
(cassette). 

* T $$ TYPE (T) the contents of the text buffer. Note that 

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG. the text buffer is not disturbed by the PUT command. 
THE EMC. 


•B1KTSS 
THE ENO. 


*YASS 

EOT 


*BT*SS 

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG. 
THE END. 

2/54 


Move the cursor to the BEGINNING (B) of the buffer, 

KILL one (IK) line starting from the location of 
the cursor, then type (T) the contents of the buffer. 

PUT (PE), with an End of file 'EOF', the contents of 
the buffer to the peripheral previously opened. 

Move the cursor to the BEGINNING (B) of the text 
buffer, attempt to KILL ten (10K) lines, then TYPE 
(T) the contents of the text buffer. Note that 
the buffer is empty. 

Rewind the cassette tape then start the drive in the 
playback mode. 

YANK (Y) one page, then APPEND (A) another page from 
the peripheral device previously opened. 

YANK first clears the text buffer then reads In a page 
of text. The APPEND comand adds text to the end of 
the current contents of the text buffer. The 'EOF' 
message indicates that the end of file was encountered, 
requiring a peripheral reset before another YANK or 
APPEND may be performed. Stop the cassette drive. 

Move the cursor to the BEGINNING (B) of the text 
buffer, TYPE (T) the contents of the buffer then display 
the number of lines and characters (*) in the text 
buffer. 


Page 14 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


384 





POLY DOC Corrections 

By Richard B. Emerson 


Dear Mr. Warren, Received: 77 Sep 7 

It was a pleasure to have met you at Atlantic City. I’m sure 
you remember me, I was only the thousandth guy you met 
with a Byte bag, long hair, and tired feet. Seriously, we had 
talked about Jef Raskin’s piece about PolyMorphic and their 
documentation (or lack thereof). To recap, the assembly sec¬ 
tion of the system manual is not too well organized and has 
too many inaccuracies. I also mentioned that I had called 
PolyMorphic and had less than total satisfaction with a Mr. Tom 
Jensen. I had called to complain about missing parts (diodes 
for the power supply), verify the latest documentation for 
BASIC, and inquire about using IMSAI’s 4k RAM. 

As I indicated to you, I have put together a set of notes 
about the errors that I encountered. I’m sure that I have over¬ 
looked some problems and that advanced hardware types will 
find some of my remarks a bit tedious, but I hope that hard¬ 
ware neophytes will find things of value. All remarks and pro¬ 
cedures have been successfully checked out, but as I said, I 
may have overlooked some minor “gotchas”. I have not at¬ 
tempted to really verify the software section, but aside from 
odd organization, it seems to be generally in better shape. 

You suggested that I speak to the senior representative at 
the PolyMorphic booth, but I didn’t have any luck there. 
Things were rather (!) busy, so I guess I can’t complain too 
much. Needless to say, 1 am sending a copy of this set of notes 
along with the letter attached to the notes. 

I’ll be happy to help other POLY 88 people on a time 
permitting basis. To that end in addition to my address I’ve 
included my phone number. Naturally you have my permis¬ 
sion to publish any or all of the enclosed. 

Thanks for your attention and keep up the great work. 

Sincerely Yours, 

Richard B. Emerson 158 E. Butler Avenue 

Ambler, PA. 19002 


COPY OF A LETTER DIRECTED TO POLYMORPHIC 
SYSTEMS 

Dear Sirs: Received: 77Sep 2 

I recently purchased a POLY 88 system from Personal Com¬ 
puter Corp. in Frazer, Pa. The system consists of a System 2 
with IMS’s 8k RAM and IMSAI’s 4k RAM. The peripherals 
are a converted JVC receiver, a Superscope C-103, and a 
Claire-pendar keyboard. At this time the system is running 
satisfactorily, but it has been a difficult fight to get to this 
point. Problems can always be expected when attempting to 
bring any computer up for the first time. As a systems an¬ 
alyst for a large university, it is a fact that is often called to 
my attention. The problems that I encountered, however, were 
avoidable for the most part had more consideration been given 
to the manual shipped with the system. In addition to the er- 
ros and confusion in the documentation, there were missing 
diodes and sockets. 

The carton I received from Personal Computer was open, 
but all of the sub-packages were present. They had to get tapes 
for the assembler and BASIC withBPRINT from “the back 
room”. In fact, they did not have any copies of the assembler 
on hand and I had to make a copy of the assembler. I received 
summaries of the assembler and BASIC commands, but a 
second trip was required to get a copy of “BASIC: A 
MANUAL”. On opening the individual packages, I found that 
the two 60S05 diodes had not been packed, nor had two 14 
pin sockets for the cassette card. The sockets were easy to 


get around but the 60S05’s were not so easily replaced. There 
were none in stock at Personal Computer and, in order to test 
the power supply, instead of the 6 amp units, I installed 4 amp 
units. I have since been given diodes “that should work”. 
A call to your plant and a Tom Jensen resulted in the sug¬ 
gestion that I get the diodes from my retailer. If I could have 
gotten the diodes from Personal Computer , I would not have 
called. 

The difficulties with the documentation were, and continue 
to be, a far greater source of aggravation. The problem easiest 
to describe is the lack of organization. The cassette assembly 
instructions contain introductory remarks that are vital to the 
assembly of any component of the system. My unfamiliarity 
with tantalum capacitors may have resulted in damaged 
regulators; had I seen the note on polarity markings that 
might not have happened. The notes on handling CMOS chips 
are of considerable importance as well. Checkout procedures 
require the use of the Front Panel Mode, but there is no quick 
summary of how to input programs or data. That summary is 
hidden in Volume 2 and no reference is made to that list. 
Frankly I could go for pages (an entire manual’s worth!) about 
how the manual could be rewritten, but instead I suggest you 
ask a “typical” customer to build a system and note where 
problems occur. Heathkit has used this strategy with a great 
deal of success and I am sure that after-sales costs have been 
reduced as well. 

The specific technical errors, procedures, and component 
descriptions are easier to summarize. To that end I have pre¬ 
pared a page by page list of suggested corrections. Since I have 
not built the serial or printer output card, I have not written 
any comments. I did build the cassette interface and cor¬ 
rections include 1 a complete rewrite of the alignment procedure. 
I have found that, in spite of the errors in the manual, the 
system is in fact better than advertised. The BASIC manual, 
once I received a copy, is an improvement over the systems 
manual, but a more complete description of how the PLOT 
instruction works would be welcome. Tips on how to protect 
various areas of the screen as occurs in the Front Panel Mode 
would also be welcome. With that in mind, I think a simple 
newsletter would build a more cohesive group of users. There 
are significant differences in the POLY88 implementation of 
the S-100 bus and publishing notes on how to get around some 
of the difficulties that this produces would certainly get both 
thanks and increased sales of main frames. 

As I said at the outset, the system is up and running to my 
satisfaction. A complete review of the manual and more qual¬ 
ity control would have save me and, I’m sure, others a lot of 
headaches. I look forward to hearing your suggestions and 
comments on the enclosed notes. 

Sincerely Yours, 

Richard B. Emerson 158 E. Butler Avenue 

Ambler, PA. 19002 

cc: Personal Computer Corp. 


Notes on building a POLY88 System 2 — August 1977 
CPU Assembly 

P. 2 - The 2 high current diodes 60S05 are not easily re¬ 
placed. Mine were missing and I used 4 amp diodes to 
check out the power supply ONLY! 

You will need heat sink grease for the voltage regula¬ 
tors that use sinks. The 79L12 does not need a heat sink. 


Number 19 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 15 


385 



P. 8 - Double-check the positioning of the 1N4148 diode. 
Its position is not marked on the back plane. Consult 
the cassette interface notes for details on diode 
markings. 

Step 5. should refer to D3 not De. 

Fig A-l R8 is only a jumper, not a resistor. 

Fig A-2 The 6-32 x .38 screws are too long. They will snag 
capacitors and other parts on the edge of cards. 
P.10 - Do not cut the black lead to 5”. There will be no slack 
in this lead when you mount the transformer. 614” 
should be long enough. 

The three leads that are twisted together will carry 110 
VAC and are being twisted to keep hum down and 
minimize their rolling around. Don’t get over-enthu¬ 
siastic about the twisting. 

Step 14 suggests soldering the line cord at the rivets. 
It is an excellent idea as you will soon see. 

P.l 1 - It is difficult if not downright impossible to mount the 
leads without bolting the transformer in place. 

P.12- The cabinet is not finished! There are video jacks, 
sockets and various other bits of hardware that will 
need to be mounted. 

P.13- Ground Pad Location Sketch: 



3 I <2> 


_ - Li 

& 

j<x 


f— J?* 


Co Ni HECTOR, 
GtacooTs 


P.14- Record the supply voltages (and the line voltage, if 
possible).This will help when it comes time to service 
the machine. If the unloaded supply voltages are off, 
it is possible that the power line voltage may have 
changed (“brownouts”, new line loads such as air 
conditioners, etc). 

- Be sure to use liberal amounts of heat sink grease when 
installing both the regulators and heat sinks. 

P.15 - Check the polarity of the tantalum capacitors before 
installing them. There will be a plus or a stripe on the 
positive lead side of the capacitor. 

- IC43 (78M05) should read IC 34 (78M05) 

- Most sockets have some sort of mark to indicate pin 1, 
be sure to align the sockets accordingly as some outlines 
will be covered over. 

- Record all regulated and unregulated voltages. Don’t 
forget the line voltage! 

P.17 - Cl’s position on the CPU card is incorrectly marked. 
Cl should run from the THICK trace containing the 
upper half of Cl’s outline to the next THICK trace 
directly below the outline. 

DO NOT USE THE HOLE RESERVED FOR R12! 

- C25, C30, and C43 will be in the serial port compon¬ 
ents bag, bag #4. 

P.18 - D3 (1N4148) will be in bag #4 (serial port compon¬ 
ents). 

- Record all voltages as before and see how much change 
there is, or isn’t, from previous readings. 

P.19 - Verify pin l’s location before installing chips, an error 
here will be very costly! 

- The DIP switch should be oriented so that toggle 1 
is topmost and toggle 7 is closest to the fingers of the 
edge connector. 

P.20- R14 is the current limiter for the zener diode (D2) 
used to provide -12 volts to your keyboard. 

* * * 


If you are using a 1N4742 zener diode rated for 1 
watt, you may compute the value for R14 as follows: 
Look up the last voltage you wrote down for the un¬ 
regulated -18 to -22 volt supply. Subtract 12 volts 
from that value; ignoring the sign, you should get 
about 6 to 10 volts. You now have the desired voltage 
drop, but you must adjust for the voltage drop across 
D2 so add .7. Having figured the total voltage drop, 
you now must figure the current draw. The specifi¬ 
cations for your keyboard should say how much cur¬ 
rent is need at -12 volts. (A Silent 700 keyboard made 
by Claire-Pendar draws 10 ma. or .01 amps, for ex¬ 
ample) To insure good regulation, a 1N4742 diode 
needs at least 1 ma, but to include a safety margin, 
we’ll assume that there should be at 20 ma flowing 
(or .02 amps). 

The desired value for R14 = Vdrop/Itotal. In this ex¬ 
ample, assume that we have a -20 volt supply we want 
to drop to -12 volts at 10 ma. R14 = (20-12)+.7 / 
(.02+.01) = 290 ohms. Select the resistor nearest this 
value and make sure that it is rated at Vi watt. Do not 
operate the diode without its load for extended periods 
as the power through R14 will be about .6 watts! 

- R17 should be 2200 ohms (RED-RED-RED). 

- R25 should be 3300 ohms(ORANGE-ORANGE-RED). 

P.22 - 8097’s and 74367’s are interchangeable. 

- IC16 should be a 74393. 

P.23 - IC34 may also be a 74LS123. 

P.25 - To select F800h, toggles 1 and 2 should be off, the rest 
(3 -7) should be on. 

P.26- 4.4.1 see the errata notes for converting to a DB-25 
S connector. 

P.28 - The plus or minus on JMP 7 indicates the state of the 
strobe line when the strobe signal is absent. + means 
that the VOM showed a normally high state. 

P.29 - Perform 4.0 monitor mods as outlined in volume 2, 
pp 74-75. 

- Polarity for tantalum capacitors is indicated by a + or 
stripe near the positive lead. 

- IC’s may be checked by prying up one end of the chip 
and looking underneath for bent pins. Make sure that 
no pins are bent when you replace chips. 

- Check to see that all of the appropriate errata proce¬ 
dures have been completed. 

- Phase 2 of the clock is brought from pin 6 of IC 13 
to pin 49 of the bus. There is no pin 49 on IC 13! 

P.32 - Unsolder the 100 ohm resistor R19 and be sure that 
your D.C. blocking capacitors) don’t eliminate any 
biasing you wanted to send to your video monitor. 

P.43 - 33uf is, in fact correct. Ignore the gap between the 33 
and the u. 

Cassette Interface Assembly 

P. 7 - The file name for the small dumper is SMD. The cas¬ 
sette will be marked with this name. 

P.13 - A DB-25 P must be made up to mate with the DB-25 
S connector on the interface. After completing the 
voltage checks and writing down the results, wire up 
three audio cables. Refer to the sketches in appendix 
A for the proper pinouts. The only difference between 
the sketches is in how the motor control is wired. It 
is not essential that this wiring be completed in order 
to test the cassette interface. Do not connect the 
DB-25 P until all alignment procedures have beem 
completed. 

P.15 - After setting the address of the cassette interface, do 
NOT install the board in the cabinet. Because at least 


Page 16 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


386 



one trace will have to be cut, it is best that the card 
be rested on the top of the transformer. Naturally it 
is crucial that there is some sort of insulation to keep 
the card from shorting out! 

* * * 

New alignment procedures: 

While the procedures outlined originally are basically 
correct, a few significant details have been omitted. 
For alignment of the Byte/Polyphase cassette card you 
will need a logic probe (or ‘scope), a voltmeter, and a 
tantalum capacitor rated somewhere between 1 and 10 
uf at 16VDC. Once the alignment is complete the capa¬ 
citor will not be need so that, with a bit of care, capa¬ 
citors from a memory kit might supply a part for 
the alignment. 

Make sure that JMP 1 is shorted by a trace on the bot¬ 
tom of the card. Connect the capacitor’s plus or 
striped lead to pin 1 of IC6 (4027). The other end of 
the “cap” should go to pin 5 of IC1 (8T20). Be sure to 
take extra care with the CMOS chip IC6. After checking 
to see that there are no shorts from installing the capa¬ 
citor and that the card is properly insulated from the 
transformer, install the CPU and VTI cards. Connect 
the free end of the cassette interface cable to port 2 
of the CPU card (port 2 is the rightmost socket in the 
upper right corner) making sure pin 1 is in the lower 
left corner of the socket. Power up the POLY88, push 
the reset button on the front of the cabinet, and type 
a B. Measuring between TP1 and TPG (ground), you 
should see 2 to 5 volts and, of course, your logic probe 
should show a continuous high state. At TP1 we want 
to get a pulse train with 75% duty cycle. This means 
that if you are using a VOM you must multiply your 
first measurement by 0.75. Shut down the POLY88 
and tie pin 9 of IC5 (74LS86) to TPG (ground). The 
pad marked TPG near pin 14 of IC5 is recommended, 
but either one will do. 

Double check your work and then power up the 
POLY88. Adjust R27 (the variable resistor or “pot” 
on the far side of Q1 (2N5447) from the 25 pin con¬ 
nector) until you get a value equal to 75% of your first 
measurement between TP1 and TPG. A ’scope should 
show a 75% duty cycle. A logic probe should show 
a low state with positive pulses at TP3. If you see no¬ 
thing after adding the jumper to ground, check to see 
that the jumper is installed correctly and make sure 
that you typed B to activate the card. 

With the power off, remove the jumper from pin 9 of 
IC5 to ground. Cut the trace on the underside of 
JMP1, removing a ground to R21 (2200 ohms), R4 
(2200 ohms), and pin 1 of 1C4 (74LS257). Disconnect 
the capacitor you have attached to pin 5 of IC1 (8T20) 
and remove IC1. With IC1 removed and the loose 
lead from the cap clear of other components, turn on 
the power. Measure the voltage between TP3 and TPG. 
It should be 2 to 5 volts (logical high). Multiply the 
voltage by 0.25 and record both values. Turn off the 
power and replace IC1. Reconnect the temporary capa¬ 
citor to pin 5 of IC1. 

Power up the POLY88 and enter the program on p. 16. 
If you are uncertain about how to proceed, rqad 
volume 2, pp. 59-66. 

Execute the program beginning at ODOOh. Set R26 
(the pot closest to the 26 pin connector) fully counter 
clockwise and measure the voltage at TP3. Slowly 
rotate the pot clockwise until you see the voltage drop 
to 25% of the first measurement at TP3. There will be 
two positions that will give this voltage, but it is the 


People who play with bytes should expect to gel bitten (with 
a tip of the hat to Rill Bierley) - Dennis Allison 


SIERRA COMPUTING ANYONE? 

Received: 77-Oct-18 

Can you program a working Tic Tac Toe game in an hour without 
any brainstrain? 

Are you looking for a way to make a living programming games, 
systems, and exploring the strange wonders of software? 

Are you burned out on the big city? 

We are a small engineering group inventing games and toys. We live 
in Grass Valley, California in the Sierra foothills, an hour from skiing 
and two hours from Chinese food in Oakland. 

If this sounds like your ticket, send us your Tic Tac Toe program 
and a resume, to: 

Cyan Engineering 
P O Box 1875 
Grass Valley, CA 95945 
(916) 273-6194 


first position (the one closest to the full counterclock¬ 
wise stop) that counts. You are looking for a 25% 
duty cycle at TP3 or a low with positive pulses. TP2 
should show alternating l’s and 0’s. If you have gotten 
the results indicated above, the Byte and Polyphase 
procedures are complete and you should remove the 
capacitor after turning off the power. It is possible that 
some additional “fine turning” may be needed to 
match the interface to your recorder. It is helpful to 
mark the initial settings on the pots before attempting 
fine turning. 

Before mounting the cassette interface in the cabinet, 
you might consider replacing JMP2 and JMP3 with 
jumper that are accessable from the top of the card. In¬ 
stalling Molex connectors and wire jumpers will mean 
easier changes without removing the card. Be sure to 
cut the jumper traces on the under side of the card if 
you install the wire jumpers. JMP1 may be replaced 
with a single pole single throw switch. There is a hole 
near the video connector that may be used to hold 
the switch. 

General Remarks 

It cannot be repeated often enough, WHEN IN DOUBT, 
ASK!! Your POLY88 is an excellent piece of equip¬ 
ment and represents a fair-sized investment. A hasty 
action during construction can reduce chips to silicon 
ashes. Take the time to double check things BEFORE 
things get out of hand. 

A full cabinet MUST have good ventilation and convec¬ 
tive cooling is not sufficient. PolyMorphic makes a 
fan kit that may be retrofitted when you fill up the 
slots. 

When installing non-PolyMorphic cards, check to see 
if there are any signals required that are not on the bus. 
The appendix of the CPY/VTI assembly instructions 
contains a summary of differences. In most cases only 
a jumper or two will be needed, but if there is any 
doubt, ASK!! 

* * * 

Prepared by Richard B. Emerson. The contents of 
these notes are the results of personal experience. No 
other claims are made or implied. Copyright (C) 
AUGUST 1977 All Rights Reserved. 


Number 19 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 17 


387 



PILOT/CPM BUGITO 


BACKSPACER FOR 
DR SUDING’S 16 x 32 TVT 


Gentlemen: Received :77-Sep-26 

I have, I think, uncovered a bug in Pilot. 

1 interfaced Pilot to IMSAI’s CPM disk system to read 
programs off disk. The CPM ED puts a line feed (0AE1) at 
the end of each line. The program checks for this and sets up 
a character skip to take care of it. However, no account is 
made for the 1st line of the program or for statements 
following Labels. 

I fixed this by having SCAN check for TEMP “ON”. 
I set TEMP “ON” in 1EP for the first line. LOOKL sets in 
on for the labeled lines. 

There is probably a better way of doing this. I would 
appreciate any comments. 

Maurice Katzer 
5740 Gordon Lane 
Ft Smith, AZ 72903 

P.A.T.B. PATCH 

MEMORY POSITION 0011 HEX 

WAS 3A 00 08 CHANGE TO CD BB 07 


DearDr.Dobbs Received: 77 Jun 8 

Enclosed is a simple video driver for Palo Alto Tiny Basic. 
I am using it with a Polymorphic VTI board, however it should 
work with most other video boards. Depending on the parti¬ 
cular board, line 0210 may have to be changed to ANI 7F 
(E6 7F) and line 1410 changed to MVI A,20H (3E 20). 

The software switch (Control O) will turn the teletype off 
but leave the video on. 

The driver fits in after Russ Hayden’s strings, PEEK-POKE 
and CALL to subroutine extensions ( Dobb’s Vol. 2, #2) and 
doesn’t go over 2K. 

Robert Connolly P.O. Box 27087 

Tempe, Arizona 85282 


l 900 




00 1 0 

bCkN EuU 0CC00H bCkEEN AUUrcEbb 

1 900 




0020 

b->lZ EuU 1024 3CKEEN bl Z E 

1 900 




00 30 

LNLN EuU 64 LINE LE.NG1H 

1 Vide) 




00 40 

END EuU 0U0H 

1 90*i 




00 b0 

CUkb EuU 6 4FH olJkAGE FOk CUKSEK 

1900 




00 60 

OkG 7Bbrt 

0 7bb 

Eb 



0070 

VJUt RUbH H 

0 7BC 

CD 

C 4 

07 

0080 

CALL bCJUI 

0 7BF 

El 



0090 

R JR H 

0 7C0 

3A 

00 

0B 

009 b 

LUA 800H KERLACE RA 1 CM El) AREA 

0 7 G 3 

C9 



0 1 00 

t\E I BACK 13 R A1 B JU1RUI 

0 704 

K E 

0 U 


0110 

bC3Ul CRl 13 CAkhiAGE KEIUKN? 

0 7C6 

CA 

UD 

07 

0 1 20 

JZ bCKJL 

0 7C9 

FE 

20 


0180 

CRI 20H 

0 7Cb 

UB 



0 1 90 

kC 

0 7CC 

2A 

4 K 

06 

0200 

LHLU CUkb 

0 7CF 

F 6 

8 0 


0210 

J«1 808 

0 701 

7 7 



0220 

M3 V M » A 

0 702 

23 



0230 

I.NA 8 

0 703 

7 C 



0240 

MJV A# 8 

0 704 

K h 

L)0 


02b0 

CRI END 

0 706 

CA 

DU 

07 

0260 

JZ bC«OL bCkOLL IF FULL LINE 

0 709 

22 

4 K 

06 

0270 

b8LU CUkb 

0 70G 

C9 



0290 

nF. 1 

0 7 00 




0300 

•MJVEb EVEkfl8ING UR ONE LINE 

0 700 

Cb 



0310 

bCkJL RUb8 B 

0 7UE 

0 1 

00 

CC 

0320 

LAI B»bCkN 

0 7 E 1 

21 

40 

CC 

0330 

LAI 8 » bC kN♦ LNLN 

0 7 E 4 

7 E 



0 3 40 

AA MJV A # M 

0 7Eb 

02 



0 3-50 

b 1 AA b 

0 7 E 6 

03 



0 360 

I NA b 

0 7 E 7 

23 



0370 

INA 8 

0 7 Ed 

7 C 



0380 

MJV A* H 

0 7E9 

FE 

D0 


0390 

CRI END 

0 7Eb 

C2 

E 4 

0 7 

0 400 

JNZ A A 

0 7EE 




0 409 

♦ FILLb B01I0M LINE Wl 18 BLANK b 

0 7EE 

3E 

3K 


0410 

i1 MVI A,3F8 

0 7f 0 

02 



0 420 

bl AA B 

0 7 F 1 

03 



0430 

I NA b 

0 IF 2 

7B 



0 440 

MJV A» B 

0 7F 3 

FE 

U0 


0 4 b0 

CR I EN U 

0 IF b 

C2 

EE 

07 

0 460 

JNZ a 

0 7 KB 

Cl 



0 470 

R3R B 

0 7 K 9 




0479 

•HOMEb CUkbEk 

0 7F9 

21 

C0 

CF 

0 480 

LAI Hj bCKN+bblZ-LNLN 

0 7FC 

22 

4K 

06 

0 49 0 

bBLD CUkb 

0 7FK 

C9 



0 b 1 0 

RE 1 


Dear Mr Warren: Sept 26,1977 

I have enjoyed your magazine for some months now, but 
it is only of late that I have gotten my system far enough 
along to be able to implement some of your published pro¬ 
grams. I don’t know if the enclosed short subroutine may be 
of interest to your readers; if not, just file in the round file. 
After wirewrapping Dr. Suding’s TV readout device as it 
appeared in the August, 1976 issue of Byte magazine, I had to 
develop software to run it. The enclosed backspace subroutine 
is somewhat unconventional; it forces the video card to run 
backwards and replaces the character with a blank. 

Bytes 021 and 034 can be any number as long as the MSB 
equals zero. Bytes Oil, 012, and 013 are necessary to my sys¬ 
tem in order to clear the parallel keyboard latch. 

Don Woods 

12012 Pebblebrook Lane 
Carmel, Indiana 46032 


000 

315 

015 

XXX 

CALL BACK SPACE SUBROUTINE 

003 

315 

046 

XXX 

CALL BLANK OUT 

006 

315 

015 

XXX 

CALL BACK SPACE SUBROUTINE 

Oil 

*•** 

t ** 

**-* 

(clears keyboard latch) 

014 

311 



RETURN 

015 

305 



PUSH B - START OF SUBROUTINE 

016 

006 

000 


MVI B COUNT BYTE 

020 

076 

001 


MVI A 

022 

315 

050 

XXX 

CALL TVT OUT 

025 

005 



DCR B 

026 

302 

020 

XXX 

JNZ JUMP BACK IF NOT ZERO 

031 

006 

377 


MVI B COUNT BYTE 

033 

076 

001 


MVI A 

035 

315 

050 

XXX 

CALL TVT OUT 

040 

005 



DCR B 

041 

302 

033 

XXX 

JNZ JUMP BACK IF NOT ZERO 

044 

301 



POP B 

045 

311 



RETURN 

046 

076 

240 


MVI A LOAD BLANK 

050 

323 

XXX 


OUT TO TVT 

052 

257 



XRA A TURN OF TVT STROBE 

053 

323 

XXX 


OUT TO TVT 

055 

311 



RETURN 


Page 18 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


388 



Dijkstra's minilanguage 

By Neils Laughlin 

Dear Dr. Dobbs: Received: 77 Jun 6 

I am in the process of writing a compiler/interpreter for a 
version of Dijkstra's so-called minilanguage he introduced in 
his book A Discipline of Programming in 1976. 

I would like to hear from any hobbyist who is working 
along similar lines. Eventually, 1 hope to have my IMSAI 
8080 programmed exclusively with this language, eliminating 
all assembler code, even from the monitor and I/O drivers. The 
compiler will be written in the language itself and should be 
ready by January 1978.1should point out that I do not yet have 
my hardware up and running - -1 wish I bought it assembled. 

Included is a description of Dijkstra’s minilanguage as I 
will use it, along with a recoding of “Hl-LO ”, a game program 
which appeared in April 1977 issue of Kilobaud. 

Neils Laughlin 
136 S. Virgil Ave.#126 
Los Angeles, CA. 90004 
(213) 389-2714 



I. Minimum features. 

Since the compiler/interpreter is to be written in the langu¬ 
age itself, it must have the features that will support the effort. 
This means indirect recursion, arrays, subroutine calls, and 
integer and character data types. Procedures will not be im¬ 
plemented. 

II. General Structure of the Compiler/Interpreter/Editor. 
As you can see from Figure I, the system wil consist of an 

editor, source code analyzer, interpreter/debugger, and object 
code generator. One of the advantages of BASIC is the inte¬ 
grated editor and interpreter. That is not, however, an excuse 
to intertwingle the code for each function. Most interpreters 
(at least the faster ones) create and intermediate form of the 
source code, usually for a hypothetical stack machine. This is 
the job of the source code analyzer. The object code generator 
will produce position independent code. Eventually, I will 
write my own editor in the language. For now, I intend to 
patch an existing editor. 

III. I/O Statements. 

1 have not finalized the design on I/O statements. Dijkstra’s 
presentation had no I/O. I am considering two possibilities: 

1. Use BASIC type I/O statements. The sample program 
uses this, with an extra parenthesis. 

2. Use PASCAL type I/O statements. This is attractive 
because of the greater data structuring capabilities. 

/ V. Data Structuring. 

I intend to use PASCAL as a model. Of course, the first 
version will have no user types, only integers, characters and 
arrays. Even there, I intend to depart somewhat. Consider, 


VAR 


NAME :CHAR X(15); 

ADDRESS :CHAR X(25); 

AGE TNTEGER; 

SALARY : BCD 9(7)9(2); 


Here, I added a little COBOL, providing “pictures” for CHAR 
(character) and BCD (decimal) data types. The initial version, 
however, will not have BCD. 

Once I have the system up and running, I will add more 
PASCAL type data structures, starting with SET and RECORD. 

V. Statements (refer to Dijkstra’s excellent book, “A 
Discipline of Programming"). 

1. The guarded statement and the IF statement. Consider, 


IF X < 0 -> PRINT(“X IS TOO HIGH”) # 

X = 0--> PRINT(“X IS JUST RIGHT”) # 
X < 0 -> PRINT(“X IS TOO LOW”) 

FI 


The above IF statement is made up of three guarded state¬ 
ments, separated by the symbol (#). One of them is, 

X>0~> PRINT(“X IS TOO HIGH”) 

The three guards (which can be any logical expression) 
are X < 0, X = 0, and X > 0. The right arrow (-->) separates 
the guard from its statement list which can be other IF or DO 
statements. 

During runtime, one guarded statement whose guard is 
true is executed, and then control passes to the statement 
following FI. If no guards are true, the job is aborted. The 
statement IF FI is equivalent to ABORT. 

2. DO statements. 

The DO statement differs from the IF statement in the way 
the guarded statements are controlled. Both are lists of guarded 
statements, bracketed by IF FI in one case and DO OD in the 
other. Consider, 

IF A > 0 AND B > 0 ~> XV1R:=A; 

Y VIR:=B; 

DO X > Y ~> X:=X-Y # 

Y > X --> Y:=Y-X 
OD 

PRINT(“THE GCD OF “,A;” 
AND “;B;” IS “;x) FI 

The job is aborted if both A and B are not greater than zero. 
The guards for DO are X > Y and Y > X. The DO statement 
cycles through its guards, selecting a guarded statement 
whose guard is true for execution. When all guards are finally 
false (X=Y), and this holds for the initial condition as well, 
control passes to the statement following OD. The statement 
DO OD is equivalent to SKIP. 

NOTE 1: The above is Euclid's Algorithm. 

NOTE 2: For both IF and DO, the reader may note the sim¬ 
ilarity of a list of guarded statements to decision 
tables. 

NOTE 3: IF and DO provide all of the control structures 
needed - - simplicity is the key. I have tentatively 
named this language PL/MINUS ONE. 

NOTE 4: X VIR:=A. The symbol (VIR:=) is the same as 
(:=) except that it highlights initialization. 

VI. The following is a recoding of the game program “HI¬ 
LO” which was published in BASIC in the April 1977 issue of 
Kilobaud. This will give everyone a chance to evaluate the 
language with a larger program example. The function RND 
(0,100) returns an integer random number between 0 and 100. 


Number 19 


Dr. Dobb’s Journal ot Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 19 


389 









CHASING ‘CHASE’ BUG 


THE SECRET SOFTWARE SYNDROME 


Sirs: Dated: 77-Aug-20 

I have discovered a bug in the assembler language version of 
“Chase”, written by Joseph J. Sanger and published in the 
May 1977 issue of DDJ. 

The sympton was that after a few games, the program 
would crash and display garbage. After first suspecting inter¬ 
mittent hardware, I found the problem. 

Subroutine ‘DEATH’, invoked whenever you are touched 
by a robot, post or fence, jumped back to ‘START’ for 
another round after informing you of your demise. This 
left the stack pointer unrestored to its previous place. Even¬ 
tually, the stack “grew down” over the end of the program, 
causing it to crash. 

Here is a simple fix for this bug: 


LOC OBJ CODE SOURCE STATEMENT 


029A 




1 

ORG 

029AH 


029A 

C3 

F4 

05 

2 

JMP 

FIX 


05F4 




3 

ORG 

05F4H 

,-end of prog 

05F4 

31 

50 

06 

4 FIX: 

LXI 

SP,STACK 

.•fix stack 

05 F 7 

C3 

2C 

00 

5 

JMP 

START 

;back to nxt game 

05FA 




6 

END 



If 

you 

have 

an 

assembler, a ' 

“cleaner” 

fix would be to 


insert a LXI SP, STACK instruction at ‘START’ in the source 
code. 

Phil R Karn 
WA3RVL/WB2AJX 


PROGRAM HILO 
VAR NOGUESS. 

TEGER; 

BEGIN 

GAMESTATUS VIR:=1; 
DO GAMESTATUS = 1 ~> 


continued from page 19 

GUESS, RNDNO, GAMESTATUS: IN- 


RNDNO VIR:= RND(0,100); 

NOGUESS VIR:=0; 

GUESS VIR:=-1; 

DO GUESS < > RNDNO ~> 

PRINT(“GUESS”); 

INPUT(GUESS); 

NOGUESS := NOGUESS+1; 

IF GUESS > RNDNO ~> PRINT(“WRONG, TOO 

LOW”) # 

GUESS = RNDNO-> PRINT(GUESS;“ IS COR¬ 
RECT AFTER ONLY 
PRINT(NOGUESS;“ GUESS¬ 
ES”) # 

GUESS > RNDNO ~> PRINT(“WRONG, TOO 
HIGH”) 

FI 

OD 

PRINT(“DO YOU WANT TO PLAY AGAIN (1=YES, 
2=NO)”); 

INPUT(GAMESTATUS); 

DO GAMESTATUS < > 1 AND GAMESTATUS < > 2 - > 
PRINT(“FOLLOW INSTRUCTIONS, RETRY”); 

INPUT( GAMESTATUS); 

OD 

OD 

END. 


Jim Day Received: 77 Sep 27 

Professional programmers who sell software to computer 
hobbyists seem to complain alot about being ripped off by 
people who use their programs without paying for them. While 
1 have no way of knowing how valid their complaints are (will 
all those using stolen software please raise their hands?) there 
can be no doubt that software is easy to copy and hard to 
trace. 

I believe that most hobbyists are honest and wouldn’t think 
of using stolen software. Nevertheless, I consider the hobby 
market a rather risky one for software vendors. Ripoffs aren’t 
the main hazard however; the real zinger is the freebie. There 
are alot of very bright hackers out there in hobbyland. Some 
of them are software pros and some are talented amateurs. 
They’re busily writing all kinds of software for their own 
machines: monitors, assemblers, compilers, interpreters, etc. 
Much of their work is first rate. Best of all, it’s free. Hobbyists 
are more than willing to share their programs. How can com¬ 
mercial vendors compete with that? 

When faced with the choice of paying $100 or more for a 
piece of commercial software without source code or a freebie 
with source code, most people will at least try the freebie first. 
If it doesn’t work out, they can always go for the commercial 
product. 

Personally, I wouldn’t want to take a piece of sourceless 
software as a free gift, let alone pay money for it. Sooner or 
later, 1 always want to modify any software I use. Without 
the source code this can be a real hassle. (In fact, it can be a 
hassle even with the source code and full documentation.) 

I wouldn’t say that software vendors can’t make money in 
the hobby market. Far from it. But I do think they’re going to 
have to realize that the ground rules are different from the 
usual commercial practice. I believe their best bet would be to 
price their product so low that no one would be tempted to 
rip it off. Another approach would be to sell their software to 
the hardware manufacturers or computer stores who, in turn, 
would give it away or resell it for five or ten dollars. 

By refusing to sell source code, vendors are simply cutting 
down their own sales potential. This practice can’t prevent 
anyone from making a tape copy for his buddy down the 
street, nor can it keep anyone from using a disassembler to see 
what makes a program tick. Yet some vendors are so secretive 
they won’t even sell you a Basic manual unless you buy the 
whole package and sign a non-disclosure agreement. Who needs 
that kind of trip? 

Editor’s Note: It is my impression that a great many hobbyists 
rip off for-sale software, often with vengeful glee... when it is 
high priced (whatever that means-say, over $25). It is also my 
impression that very few rip off low-priced software. 

I suspect a similar situation would hold with stereo music 
tape cassettes. If the recording manufacturers priced a 22- 
minute Beatles (is my age showing?) tape at $100 or more, no 
doubt few would be sold but many would be copied. As it is, 
many are sold enough to provide a fair if not handsome profit 
for artist (“programmer”) and recorder-and some are copied. 

The problem of providing source code has some interesting 
aberrations. Let us say that the software artists sell their crea¬ 
tions to hardware manufacturers, as suggested-thereby mak¬ 
ing a fair and equitable income for their talent and labor. 
Further, let us say that the hardware maker then gives this 
software away as an inducement to buy his system. Presumab¬ 
ly the software has been configured to match his hardware. If 
so, if the sources become available, it then becomes a simple 
matter to reconfigure the software to run on competitors’ 
machines using the same microprocessor, thereby ripping off 
the market advantage obtained at significant expense by the 
original hardware maker. What then? -JW 


Page 20 

390 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 



GRAFX: A Graphics Monitor 
for the 8080/TV Dazzler 

BY JONATHAN W. MILLS 


For any readers of HP-65 Notes out there, hi! And to all the rest of 
you users of what we call big machines, greetings. / am Jonathan Mills, 
the junior half of K&J, editors of "The Recreational Programmer" 
(unabashed plug for the Notes), and now an owner of an IMSAI 8080 
which bears the same relation to my HP-65 as the 65 does to my 
ancient SR-10. 

Since / am visually oriented, I had great hopes of using the IMSAI 
for simulations that would do more than print out "THE TEMPERA¬ 
TURE AT WALLA WALLA IS 10 DEGREES CELCIUS. RAIN IS 
EXPECTED by 4 PM." No indeed! / wanted the whole weather map! 
Well, this entailed an investment in a bit-mapping graphics device of 
some sort. For reasons of dependability and ease of construction, / 
acquired a Cromemco TV Dazzler. This kit is easily built, although 
someone had removed the operating manual while it was waiting to 
be sold. No problem. A call to Cromemco, and / had it within three 
days! Super people, and efficient. 

A quick look soon showed that unless all / wanted to display was 
a "crazy quilt"of bits in their original sin (preferred states, / under¬ 
stand they're called) / was going to have to write software. Or buy a 
joystick, analog-to-digital interface, and software. Say, $200, not 
to mention a paper tape reader. Ouch. 

GRAFX is my answer to that software. Simply put, it is an inter¬ 
active program that redefines the numeric (and certain other) keys of 
your terminal/keyboard so that they control a cursor on the Dazzler 
display. The version of GRAFX that / present here is designed solely 
to let you enter pictures, diagrams, plots, etc., into memory 
MANUALLY. / also have a version running that uses subroutines for 
the cursor control functions, but while trying to keep the interactive 
features of the program by using programmed changes to executable 
code, / rewrote a floppy disk, and about 15 (sob!) other programs. 
I'll keep this tiger for the time being, rather than unleashing it 
amongst the dragons. 

So, Tom, here is the article. . . and now let's look at GRAFX! 
Jonathan W. Mills 
P.O. Box 2571 
Kalamazoo, Ml 49003 

This program provides an easy way to write graphics into a 
2K block of RAM addressed by the Cromemco TV Dazzler. 
This program accomodates the complex Dazzler interpretation 
of memory so that the user sees it as 128 horizontal lines, each 
128 contiguous bits wide, instead of four quadrants with each 
byte’s bits arranged in a “ZZ” pattern. A detailed explanation 
of this transform operation is provided in the theory of opera¬ 
tion. 

GRAFX puts the Dazzler into the 128H by 128V (“resolu¬ 
tion X 4”) mode, and black-and-white display. Other modes 
can be chosen, but consideration must be given to resulting 
“oddbalF’behavior, such as losing the cursor offscreen when 
using only 512 bytes of memory for the display, or failure of 
the cursor of “move”in the normal (64H by 64V) mode. In 
this case, the current location will go through several color 
changes as the cursor steps through the memory nybble and 
will move to the “next” location only after entering the next 
“nybble”. 

The monitor is designed to use a standard numeric keypad 
(0-9 and . and,) for cursor control. The cursor can be 
MOVEd, SET, (current bit turned on, and cursor moved to 
next location), or ERASEd (current bit erased, and cursor 
moved to next location) in any of four directions: up, down. 


left, and right. 

Three additional commands ( - and : and / ) allow for 
clearing the screen with a cursor “home”; “homing” the cursor 
without affecting the display; and jumping back to a resident 
monitor, respectively. An ASCII to HEX table is provided in 
the operating instructions in case these symbols are not clear, 
and as an aid to modify the monitor for other systems. 

GRAFX’ initialization routine does not destroy the display 
memory. This allows the user to develop complex graphics 
during successive sessions at the terminal, and to save and load 
displays for program usage. 

GRAFX may be located anywhere in memory within 437 
contiguous bytes, but IT MUST NOT BE RESIDENT WITHIN 
THE DISPLAY MEMORY! If it is, you will either crash or 
delete the monitor. Although GRAFX was designed for 2K 
of memory for the display, it may be used with only 512 bytes 
if the warning about “oddball” behavior is taken into account, 
and the cursor is kept on the screen. 


OPERATING INSTRUCTIONS 

1. Load a display from a previous session into memory, if 
desired. 

2. Load GRAFX. Be sure that it is not loaded into display 
memory. 

3. Set hi byte of display starting address into sense switches 
A15 thru A8. DISPLAY MUST BE ADDRESSED IN 512 
BYTE INCREMENTS! Thus an address such as 0100H or 
5700H is illegal, although 0000H or 5800H is alright. 

4. Begin execution of GRAFX at the INIT routine. Your 
Dazzler should output either a pattern (memory bit states) 
or a display if you loaded one in step 1. If you loaded a 
display, and it wasn’t output, check the sense switches. If 
they are correct, start looking through memory by repeating 
steps 3 and 4 for different addresses: the display may have 
been loaded into a location other than what you had inten¬ 
ded. **IF YOU DISPLAY THE MONITOR, AND KEY A 
LEGAL COMMAND OTHER THAN (BREAK), YOU 
HAVE A 99.9% CHANCE OF CRASHING IT!** 

5. When the display is active, the monitor is now executive. 
Only the following keys will be active (all others will be 
gobbled by GRAFX; none will be echoed to your teminal): 


ASCII 

HEX 

OPERATION 

- 

2D 

Clear screen, home the cursor to upper left 
of screen 

1 

3A 

Home the cursor 

/ 

2F 

Break; return to the calling system 

0 

30 

Move the cursor down one location (bit) 

» 

2C 

Set cursor at current location, then move 
cursor down one bit 


2E 

Erase current bit, then move cursor down 
one bit 

1 

31 

Move cursor right one bit 


Number 19 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 21 


391 



2 32 Set current bit, then move cursor right one 

bit 

3 33 Erase current bit, then move cursor right 

one bit 

4 34 Move cursor left one bit 

5 35 Set current bit, then move cursor left one 

bit 

6 36 Erase current bit, then move cursor left 

one bit 

7 37 Move cursor up one bit 

8 38 Set current bit, then move cursor up one 

bit 

9 39 Erase current bit, then move cursor up one 

bit 

Since it is rather too much to keep referencing a table, 1 
have made an overlay that fits nicely over the numeric keypad 
on my Hazeltine 1500. With modifications, you should be able 
to use it on any numeric keypad. (Besides changing the cutout, 
this could include modifying routines 1NCHR and MON1 to 
accept other possible ASCII characters.) Here is a scaled-down 
copy of my overlay. The original was cut out of acetate sheet, 
and the lettering done in light blue Testor’s PLA. 


(Bits are numbered 0 to 7, LSB to MSB) 

Note the “doubleZ” pattern of the Dazzler representation. 
If the Dazzler had been implemented so that it actually used 
GRAFX’ byte interpretation, simple RRC instructions would 
replace this entirely too complicated table look-up kluge! 

Using this table we can now move the cursor horizontally 
(by incrementing to the next word in the table) or vertically 
(by adding or subtracting an offset — 04H — to the current 
word in the table). Of course, special checks are needed to 
insure that the cursor hasn’t crossed either a word boundary 
(i.e., left the table of values) or a page boundary (i.e., left one 
of the four quadrants of the total display). And this brings us 
to the “big picture”: how GRAFX transforms four unfortu¬ 
nate quadrants into one big one that is 128H by 126V. 

The diagram below shows how the Dazzler divides up the 
2K of display memory: 


This overlay will make it a lot easier to use GRAFX. As you 
see, each key’s function is a combination of its X-coordinate 
(MOVE, SET, or ERASE) and its Y-coordinate (UP, LEFT, 
RIGHT, and DOWN). 


THEORY OF OPERATION 

GRAFX uses a transformation table to allow it to interpret 
the Dazzler representation of memory. Big words! What that 
means is shown in the diagram: 

GRAFX’ INTERPRETATION OF A 
BYTE IN MEMORY 

Each “bit” is actually a location in the table. 




(Bits are numbered 0 to 7, LSB to MSB) 

Page 22 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Number 19 






392 










Each quadrant contains 512 bytes in a 16H by 32V byte 
square. Since the Dazzler formats each byte into a rectangle 
that is 4H by 2V bits, each quadrant is seen to be 64H by 64V 
bits square. 

To get our 128H by 128V interpretation, GRAFX uses the 
registers H and L as a memory word pointer. Using suitable 
offsets for the quadrants’ internal boundaries (i.e., wrap 
boundaries, denoted by solid lines), and cursor bit can be 
made to move along what appears to be a path that is contin¬ 
uous. Actually, that cursor bit is madly dancing through your 
computer’s memory! 

With this as a guide, you should be able to figure out the 
boundary checks and various offsets used in the routines of 
GRAFX. 

The last thing to cover is the operation of the cursor 
output. This is done pictorially to give a “single-step” view 
of a MOVE, a SET, and an ERASE. Note that Si indicates 
that the bit is set (turned one; equal to 1) and that □ means 
the bit is reset (turned off: equal to 0). 


For a MOVE operation, 


the cursor word and 
the current memory word 



20H (Addressed by DE -• ANY + 3) 

48H (Addressed by HL but stored in C) 


are ORed to create the 
output word for display. 


68H (Stored into memory addressed by 

HL, thus output via UMA to screen) 


For a SET operation, 


the cursor word and 

the current memory word 

are OKed to get a new 
"current memory word" 



02H (Addressed by DE - ANY+1) 

B1H (Addressed by HL but stored in C) 
B3H (Which replaces cor.tents of C) 


which is ORed with 
cursor word+1 to get 

the output word for 
display. 


10H (Addressed by DE = ANY+2) 

B3H (Which is stored into memory 

addressed by HL, output via DMA) 


nrd for an ERASE operation, 


the cursor word 

is complemented to make 
the “erase bit mask" and 

ANDed with the current 
memory word to create 

a new "current memory word" 

which is ORed with 
cursor word*! to get 

the output word for 
the display. 


vm [ i 
LH j_J 



02H (Addressed by DE = ANY-*1) 

PDH (Accumulator is simply complemented) 

OBH (Addressed by HL but stored in C) 

09H (Which replaces contents of C) 

10H (Addressed by DE = ANY*-) 

19H (Which is stored into memory 

addressed by HL, output via DMA) 


And, bringing up the rear is the inevitable dump, this one 
in hex. After examining the tiny BASICs printed so far, I 
changed my mind about assembling GRAFX into location 
0100H. Instead, I have located it at 0C00H (the start of the 
fourth “K”) so that you can have Tiny BASIC, or HI, or what¬ 
ever, and GRAFX, and 2K worth of display in only 5.5K 
worth of memory. 

One last note. My hard-copy device uses a 10-bit interface. 
Although I’ve checked and rechecked the object code listing, 
there may be a dropped bit in there. I doubt it, but if strange 
things occur, compare the object listing and the source listing. 
I know the source code is correct. 

Postscript. XX in the object listing indicates the two bytes 
reserved for the stack. In the source code listing, S is equiva¬ 
lent to SP, and P is the same as PSW in Intel assmeblers. Aside 
from that, you should be able to get up and running with your 
Dazzler and this software for less than 20<t worth of elec¬ 
tricity. . . and an hour of your time! 

*************************** 


TDL’s VIDEO DISPLAY BOARD 

News Release Received: 77 Aug 29 

Technical Design Labs has introduced a video interface for S-100 
Bus microcomputers. 

The VDB is low in cost and yet provides the capabilities of video 
terminals costing thousands of dollars more. It consists of two boards, 
one piggybacked to the other. The unit occupies one edge connector 
on the bus, but takes up the space of two boards. 

The VDB contains its own display buffer memory and provides two 
pages of display, each with 25 rows of 80-characters. The display 
buffer memory does not use any memory address, thus leaving the 
entire computer memory address intact for user programs. 

This unit displays, in addition to the 96 upper and lowercase ASCII 
characters with descenders, 64 unique display symbols, thus permitting 
a graphic resolution with 160 horizontal elements by 75 vertical ele¬ 
ments. The display can accept data at a 400,000 character per second 
rate. 

The VDB provides a true hardware blinking cursor to facilitate the 
programming of special edit functions. It is addressable and indicates 
on the display screen the physical location where the next symbol will 
be written into or read from. 

A mode register allows any combination of characters to blink, 
insert or do both independently. Cursor and display may also be inhi¬ 
bited under mode register control. 

The VDB works with either modified TV set or monitor and has an 
on-board 8 bit parallel keyboard port with status strobes. 

The VDB is priced at $349 in kit form and $449 when assembled 
and tested. Software character and graphics output drivers for Z-80 
and 8080 systems are supplied. These drivers are ROMable. 

For additional information, contact Donna Galletti, Director of Sales, 
Research Park, Building H, 1101 State Road, Princeton, N J 08540. 
Telephone: (609)921-0321. 



MEMORY 

LOCATION 00 

01 

02 

_°2. 

04 

05 

06 

_°z_ 

08 

_22_ 

OA 

OB 

OC 

OD 

OE 

OF 

ocoo 

21 

87 

OD 

DB 

FF 

77 

OF 

F6 

80 

D3 

OE 

3E 

68 

D3 

OF 

C3 

0CI0 

24 

OC 

2A 

86 

OD 

70 

C6 

08 

36 

00 

23 

BC 

C2 

18 

OC 

C3 

0C20 

24 

OC 

El 

71 

11 

88 

OD 

2A 

86 

OD 

31 

B6 

OD 

4E 

1A 

B1 

0C30 

77 

DB 

00 

E6 

40 

CA 

31 

OC 

DB 

01 

E6 

7F 

47 

E5 

31 

96 

0040 

OD 

El 

3E 

2C 

B8 

CA 

52 

OC 

El 

3C 

FE 

3B 

CA 

31 

OC 

03 

0C50 

44 

OC 

31 

B4 

OD 

E9 

C6 

02 

BC 

C8 

C6 

02 

BC 

C9 

3A 

87 

0C60 

OD 

C6 

02 

BC 

08 

3C 

BC 

08 

C6 

03 

BC 

C8 

3C 

BC 

C9 

1A 

0C70 

2F 

A1 

03 

77 

OC 

1A 

B1 

4f 

El 

3A 

90 

OD 

BB 

DA 

87 

OC 

0C80 

13 

13 

13 

13 

03 

2E 

OC 

71 

3E 

EF 

BD 

DA 

9D 

OC 

IB 

IB 

0C90 

IB 

IB 

7D 

C6 

10 

6F 

D2 

2D 

OC 

24 

C3 

2D 

OC 

3A 

87 

OD 

0CA0 

3D 

CD 

56 

OC 

CA 

B2 

OC 

CD 

56 

OC 

C2 

8E 

OC 

C6 

FA 

C3 

0CB0 

B4 

OC 

C6 

02 

67 

03 

8E 

OC 

1A 

2F 

A1 

C3 

CO 

OC 

1A 

B1 

occo 

4F 

El 

3A 

90 

OD 

BB 

DA 

D1 

OC 

13 

BB 

DA 

D9 

OC 

C3 

2E 

0CD0 

OC 

13 

3A 

92 

OD 

BB 

D2 

2E 

OC 

71 

3E 

OF 

A5 

FE 

OF 

CA 

0CE0 

E6 

OC 

23 

03 

F3 

OC 

CD 

5E 

OC 

01 

FI 

FD 

CA 

F2 

OC 

01 

0CF0 

FI 

01 

09 

IB 

IB 

IB 

IB 

03 

2D 

OC 

1A 

2F 

A1 

C3 

02 

OD 

0D00 

1A 

B1 

4f 

El 

3A 

90 

OD 

BB 

DA 

34 

OD 

IB 

3A 

94 

OD 

BB 

0D10 

C2 

2E 

OC 

71 

3E 

OF 

A5 

FE 

00 

CA 

24 

OD 

2B 

13 

13 

13 

0D20 

13 

C3 

2D 

OC 

CD 

5E 

OC 

01 

OF 

FE 

CA 

30 

OD 

01 

OF 

02 

0D30 

09 

C3 

ID 

OD 

IB 

BB 

DA 

2E 

OC 

C3 

13 

OD 

1A 

2F 

A1 

03 

0D40 

44 

OD 

1A 

B1 

4f 

El 

3A 

90 

OD 

BB 

DA 

7F 

OD 

71 

3E 

OF 

0D30 

BD 

DA 

65 

OD 

3A 

87 

OD 

D6 

02 

CD 

56 

OC 

CA 

74 

OD 

CD 

0D60 

56 

OC 

CA 

79 

OD 

13 

13 

13 

13 

7D 

D6 

10 

6F 

D2 

2D 

OC 

0D70 

25 

03 

2D 

OC 

C6 

06 

03 

7B 

OD 

D6 

02 

67 

C3 

65 

OD 

IB 

0D80 

IB 

IB 

IB 

03 

2E 

OC 

00 

00 

01 

02 

10 

20 

04 

08 

40 

80 

0D90 

8B 

OD 

8F 

OD 

87 

OD 

75 

OC 

12 

OC 

6F 

OC 

00 

A6 

78 

OC 

ODAO 

Cl 

OC 

BE 

OC 

B8 

OC 

03 

OD 

00 

OD 

FA 

OC 

45 

OD 

42 

OD 

ODBO 

3C 

OD 

22 

OC 

XX 

XX 












Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 23 

393 




































































































































































































































































































































































































































































































































































































































ROUTINE 1 _ routine 2 ROUTINE I __ ROUTI NE I _ ROUTINE 2 ROUTINE 

SOUTINES FLAGS [1 1 I I ROUTINES FLAGS (TI 1 I 



mffFI 


W CJ 
r 5 < 
< .-3 
Cu U, 



Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 27 


397 









































































ALPHANUMERIC PLOTTER FOR 
POLY VIDEO DISPLAY 

By Arthur Armstrong 

Dear Jim, 

77 Sep 8 

This is a manuscript and program for you to consider for publication. 
If you are not paying but would like to print my article please do so. 

I will settle for eternal fame. 

Thanks for the job you are doing with the Journal. You have put 
me on to EMPL and PILOT and I expect that these two alone will be 
worth the ticket. 

Sincerely, 

Arthur Armstrong 

3345 Moore St 

Los Angeles, CA 90066 

Editorial Note: Profuse thanks for the material and since we do not 

pay for contributions we bestow herewith eternal fame. — TRW 

After using my Polymorphic video display board for about 
six months for drawing graphs I wanted a way that would be 
easier to use and quicker in execution. The BASIC programs 
calculating and poking into the VDM memory, while challenging 
to write, were complex and slow. This article presents the 
results of my attempt to improve the process. I won’t mention 
all the things I tried that didn’t work. Perhaps someone more 
familiar with MITS BASIC than I can offer something better. 
This patch is for MITS 3.2 8K BASIC. I suspect most basics 
would be comparable. 

The video display is considered to have coordinates from 
0 to 127 from left to right and from 0 to 47 from bottom to 
top. The plot function (PLT) uses the first two variables 
defined in the program to locate the horizontal and vertical 
coordinate, respectively. Thus, to draw a diagonal from 
bottom left to top right: 

10 X=0: Y=0 
20 FOR X=0T0127 
30 Y=X/2.7 
40 PLT 
50 NEXT 

The plot function, PLT, replaces LET in the BASIC instruc¬ 
tion list. Since LET is optional in MITS BASIC this will 
present no limitations although it may cause some trouble 
if you have programs from other sources using LET. It is not 
difficult to change from LET to PLT and conversely as will 
be described below. 

In MITS 3.2 BASIC there is an end-of-program pointer 
which contains the address of the first available memory 
location after the BASIC program text. The pointer is 
located (low, high) at hex 0245 and 0246. BASIC uses this 
pointer to locate storage locations for program variables. 
Variables are stored sequentially in the order the program 
defines them. Thus, if your program starts with X=0:Y=0 
then X will be the first variable in memory and Y will be the 
second. This structure is utilized by PLT to find the desired 
values to be plotted. 

Variables are stored in floating point form. To avoid 
going into details on floating point, suffice it to say that: 
Variables are stored in six bytes. Bytes one and two are 
used to store the variable label or name. Bit seven (most 
significant bit) of byte five is used for the sign of the var¬ 
iable. The bit is zero for a positive number and one for a 
negative. Bit seven of byte six is always one if the variable 
is greater than or equal to 0.5 in magnitude and zero other¬ 
wise. Bits six through zero of byte five represent the most 
significant part of the binary representation of the number 
(with an implied one in bit position seven). Bits six through 


zero of byte six represent an exponent or an amount to 
shift the value of byte five to obtain a binary integer for the 
variable. 

This is all the information needed by the plot function. 
PLT will determine the coordinates of the point to be plotted, 
determine if they are within the correct range for the display, 
calculate an address in the display memory for the point, 
calculate the correct value needed to generate the graphics 
character, and store this in the calculated address. 

To convert your 3.2 8K MITS BASIC to use this function: 

— change location 00A2 from 4C to 50 to change L of LET to P. 

— change location 00A3 from 45 to 4C to change E of LET to 
L. (location 00A4 contains T which is not changed) 

— change location 017E from 14 to the low address byte of 
PLT in your memory. 

— change location 017F from 07 to the high address byte of 
PLT. (changing these four locations back will restore LET) 

— insert the machine code corresponding to the listing below. 

— be sure that you use your board address in line 1430. 

To use PLT: 

— be sure that the first variable defined in your program cor¬ 
responds to the vertical coordinate. 

— write a program that will generate X and Y in the proper 
range: X from 0 to 127, Y from 0 to 47. There is no error 
if out-of-range values are used or if fractional values are 
used. 

Each time that BASIC encounters the instruction PLT it 
will jump to your patch and the patch will plot the point. 

Example: 10 X=0:Y=0 

20 FOR X=0 TO 127 
30 Y=10*SIN(X/10)+23 
40 PLT 
50 NEXT 


0000 




0010 

* POLY PLOTTER 

0000 




001 1 

* APT ARMSTP0NG 

0000 




0015 

* 7/27/77 

00 0 0 




0018 

* ASSEMBLED AT 0000 FOR TRAN SCRI PTI ON 

00 00 




0019 

* CONVENIENCE ONLY. WON’T RLN. 

0000 




0020 

* CHANGES IN 3.2 BASIC: 

0000 




0021 

* AT 00A2 CHANGE 4C TO 50 

0000 




0022 

* AT 00A3 CHANGE 45 i0 4C 

0000 




0023 

* SET THIS ADDRESS: 

0000 




0024 

* LOW AT 0 1 7E, HIGH AT 017F 

0000 




0030 

PSW EQU 6 

00 0 0 

C 5 



0040 

PUSH E 

0001 

D5 



0042 

PUSH D 

00 0 2 

E5 



0044 

PUSH H 

00 0 3 

21 

7A 

00 

0050 

LX I H,EXIT 

00 0 6 

ES 



0051 

PUSH H * SET UP FOR OFF SCREEN EXIT 

00 0 7 

16 

2 2 


0100 

M VI D, 2 

0009 

2A 

45 

02 

0110 

LHLD 0245H * END OF PROGRAM POINTER. 

000C 

4 7 



0120 

CON V MOV E, A * X INTO E ON PASS TWO. 

000D 

23 



0130 

I NX H 

000E 

23 



0131 

I NX H 

000F 

2 : 



0132 

INX H 

0010 

23 



0133 

I NX H 

00 1 1 

23 



0134 

INX H * H«L POINTS TO EXPONENT 

00 12 

7E 



0135 

MOV A,M * GET EXPONENT 

00 13 

B7 



0140 

ORA A * IS IT Z ERO? 

0014 

CA 

37 

e0 

0145 

JZ ZEP0 * YES, NUMEEP IS ZERO TOO 

0017 

E6 

7F 


0150 

ANI 7H1 * IF FIT 7 IS 1 THEJ 

0019 




0151 

* NUMEEP IS >= 0.5, USE IT. 

0019 

EE 



0155 

CMP M 

001A 

C2 

21 

00 

0160 

JNZ EX POX 

00 ID 

AF 



0162 

X FA A * IF NO. <.5 F0FCE TO Z EF0 

00 1 E 

C 3 

37 

00 

0163 

JMP ZERO 

0021 

FF. 

08 


0165 

EXPOK CPI 03H * IF EXP > 8 

00 2 3 

D0 



0170 

FNC * THEN NUMBER > 127, EXIT 

0024 

5F 



0175 

MOV E, A * EXPONENT TO E 

00 25 

2E 



0180 

DCX H 

0026 

7E 



0185 

MOV A,M * GET FFACTI0N 

0027 

F 6 

80 


0190 

0PI 8 0H 

0029 

BE 



0195 

CMP M * IS IT NEGATIVE? 

00 2A 

23 



0196 

INX H 

00 2 B 

C8 



0200 

RZ * YES, E^IT 

002C 

ES 



0212 

PUSH H 

00 2D 

6F 



0214 

MOV L, A 

00 2 E 

24 

00 


0216 

MVI H, 0 

00 30 

29 



0220 

ADJST DAD H * SHIFT FRACTION 

0031 

ID 



0225 

DCF E * ACCORDING TO EXPONENT 

00 32 

C2 

30 

00 

0230 

JNZ AEJST 

0035 

7C 



0240 

MOV A,H 

0036 

El 



0245 

POP H 

0037 

15 



0260 

ZERO DCF D 


Page 28 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


398 



COSMAC HLL? 


MODIFIED MICROTEC ASSEMBLER SYSTEM 


Dear Dr. Dobb, Received: 77 Jul 19 

Does anyone know if any high-level language has been written for 
the RCA COSMAC (1802)? (A similar request appeared in the March 
1977 issue of DDJ.) I will be getting a COSMAC system soon (the 
"COSMAC ELF" which was written up in Popular Electronics) and will 
probably write a tiny BASIC (or may be something else) for it, unless 
one already exists. 

After I get my systems running, I expect to be able to send some 
software to DDJ. [You say the nicest things.] 

Jim Howell 555 Candlestick Way 

San Jose, CA 95127 


HEATH PSEUDO-FACT 


Dear Sir, 

I have just finished rewriting and testing my version of the 
system originally written by Microtec of Sunnyvale, CA. Here 
is a brief description of the changes that 1 have made. 

Lines entered without a number but preceded by a space 
are automatically given a number 5 greater than the last 
line of the file, and added to the file. 

The lines of a file may be renumbered, with the user 
specifying the starting value and the increment. 


Heath is supposed to be planning on including a video¬ 
input jack on their models of TV kits... jus’ for us. 


0038 

23 



0262 

I NX H 

00 39 

C2 

0C 

00 

0265 

JNZ CONV * EACK TO C0MVEFT Y VALUE. 

00 3C 




0270 

* 

00 3C 




0272 

* MOV HAVE X IM E FEG AND Y IM ACC. 

00 3C 

62 



0275 

MOV H, D * ZERO TO H 

0e3D 

4 F 



028 0 

MOV C, A * Y INTO C 

00 3E 

3E 

2F 


029 0 

M VI A/2FH 

0040 

9 1 



0300 

SUE C * IS Y>47? 

0041 

D8 



0310 

P.C * YES, EXIT 

0042 




1230 

* D CONTAINS ZEP0 FO F QUOTIENT. 

0042 

D6 

03 


1240 

DI V3 SUI 3 * DIVISION EY TH FEE 

00 4 4 

DA 

4F 

00 

1250 

JC DVB1D * GO IF DONE 

0e47 

14 



1260 

INF D * ELSE EUMP QUOTIENT 

00 48 

C3 

42 

00 

127e 

JMP DIV3 * DO IT AGAIN 

004E 

C6 

03 


128 0 

EVEN C ADI 3 ♦ PEST0FE FEMAIN DEF IN A 

00 4D 




128 2 

* AND CLEAF CAFFY. 

00 4 D 




128 5 

* AT THIS POINT THE D FEGI STEP 

004D 




128 6 

* CONTAINS IN T( ( 4 7-Y) / 3) 

00 4 D 




1288 

* WITH THE PET-1 AIN DEF IN THE A FEG 

00 4 D 

4F 



129 0 

MOV C, A * SAVE FEMAIN DEF 

00 4 E 




129 5 

* NOV FUILD TOE ADDPESS. 

004E 

6A 



1 300 

MOV L, D * QUOTIENT. (H IS ZEF0) 

00 4 F 

29 



1320 

DAD H * MULT EY 64 

00 5 0 

29 



1 321 

DAD H 

00 51 

29 



1 322 

DAD H 

0052 

29 



1323 

DAD H 

0053 

29 



1 324 

DAD H 

0054 

29 



1325 

DAD H 

0055 

78 



1350 

MOV A, E * CET X 

00 56 




1360 

* CAF.PY IS STILL CLEAPED 

00 56 

I F 



1370 

FAF ♦ DIVIDE EY TV0 

00 5 7 




1375 

♦ A HAS INTCX/2) 

0057 




1376 

* FEMAINDEF IM CAFFY ElT 

00 5 7 

F5 



1 33 0 

PUSH PSV * SAVE CAFFY 

00 58 

85 



1 39 0 

ADD L 

00 59 

6F 



1 400 

MOV L, A 

00 5A 

7C 



1410 

MOV A,H 

00 5E 




1420 

* 

005E 




1421 

* I M P0 FT AN T ! 

00 5E 




1422 

* 

00 5B 




1423 

* LINE 1430 MUST ACI TOE HIGH EYTE 

00 5B 




1424 

* OF Y0UP EOAF.D ADDF.ESS. 

00 5B 




1425 

* 

00 5B 

CE 

7C 


1430 

ACI 7CH * M. £. EYTE OF SCPEEN ADDFES! 

00 5D 




1434 

* 

00 5D 

67 



1440 

MOV H, A 

00 5 E 




1450 

* H, L HAS ADDPESS F0 F PLOT CHAFACTEF. 

00 5E 




1 452 

* = EO AFD+ IN T< C 4 7-Y)/3)*INT(X/2) 

00 5E 




1 560 

* NOV CFEATE TOE GRAPHICS SYMBOL 

00 5E 

FI 



1 600 

POP PSV * GET CAFFY 

00 5F 

3E 

04 


1610 

M VI A, 4 

00 61 

DA 

66 

00 

1 620 

JC FEM1 « GO IF X REMAINDER IS 1 

00 64 

3E 

20 


1 630 

M VI A, 20H 

00 66 

0C 



1 650 

FEM1 INF C * CHECK INITIAL Z EP0 

00 67 

0 D 



1 660 

SYM DCF C * C COUNTS Y FEMAIN DEF. 

00 68 

CA 

6F 

00 

1 670 

JZ P0KIT 

00 6E 

0F 



1 680 

RFC * DIVIDE EY TV0 

0e6C 

C3 

67 

00 

1 69 0 

JMP SYM 

00 6F 




1 69 1 

* FEADY TO STORE SYMBOL ON SCPEEN. 

00 6F 




1 69 2 

* USE LEFT LIST FOP WHITE ON ELACK. 

00 6F 




1 69 3 

* ( BLACK I S 3F> 

00 6 F 




1 69 4 

* USE FIGHT LIST FOR ELACK ON WHITE. 

00 6F 




169 5 

* (VHITE IS 00) 

00 6F 




1 69 6 

* 

00 6 F 




1 69 7 

* 

00 6F 

4F 



1 700 

P0KIT MOV C# A * NOP 

0070 

3E 

3F 


1710 

MVI A, 3FH * NOP 

00 7 2 

9 6 



1715 

SUE M * NOP 

0073 

B1 



1 720 

0PA C * NOP 

00 74 

4 F 



1 725 

MOV C, A * NOP 

0075 

3E 

3F 


1 730 

MVI A, 3FH * NOP 

0077 

9 1 



1 735 

SUE C * ORA M 

00 78 

77 



1 74 0 

MOV M, A * MOV M, A 

00 79 

El 



1 74 5 

POP H * CLEAF STACK 

00 7A 

El 



1750 

EXIT POP H 

00 7E 

D 1 



1 760 

POP D 

00 7C 

Cl 



1770 

POP E 

00 7 D 

C9 



1 78 0 

RET 


The PAGE commands has been replaced by COPY which 
will copy a section of memory from one place to another. 
The start, end, and destination addresses are specified by 
the user. 

The addition of the string editing functions, FIND and 
ALTR, allowing the correction of individual characters in 
a line, without replacing the entire line. 

A MOVE command has been added which will move blocks 
of lines from one place in a file to another. 

An ASC pseudo op has been added to the assembler, sim¬ 
plifying the assembly of ASCII character strings. 

Provisions have been made, through the use of the CONT 
command, to perform multiple file assemblys, with or with¬ 
out the use of an external storage device. 

Additionally, numerous other corrections and additions 
have been made throughout the program. 

This version of the system was written to run on an IMSAI 
8080 and requires slightly over 4K for the system, which ex¬ 
pands to 5K with the use of the software memory-protect 
feature of the IMSAI memory boards. This unused memory 
is free for the user’s mass storage I/O drivers. 2K is required 
for the system’s working storage and the assembler’s symbol 
table. 

I rewrote the system for my own use but would like to 
make it available to others either by having it published or 
directly. I do not know if the original is in the public domain 
or not. The program listing is 60 pages, and the source deck 
is 3K cards. I am willing to make copies of the listing and/or 
the source deck. I do not have the facilities to make cassette 
tapes. 

Scott C. Crumpton 11130NW9P1 

Gainesville, FL 32601 

P.S. — I am sending a similar letter to Kilobaud, Byte and 
Interface Age. 


CHANGE THE ANS FLOWCHART STANDARD? 


The ACM's SIGDOC group has started a review of the flowchart 
standard (ANS X3.5-1970). The committee seeks written comments 
and suggestions for the improvement, modification, or change of the 
current standard. Or, if no change is appropriate at this time, please 
say so. 

All types and levels of suggestions and comments are welcome. 
All concerned persons in the computer field are elgible. You have 
knowledge and experience -- let them count by sending your written 
comments and suggestions to Ned Chapin, Flowchart Committee 
Chairman, InfoSci Inc., Box 7117, Menlo Park, CA 94025. 


Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


399 



HARDWARE AND SOFTWARE 


UTILITIES & MUSIC on the COSMAC ELF 

by Edward M. Me Cormick 


Received 77 Sept 22 

It is possible to do a number of interesting things with the 
basic Elf at an additional hardware cost of less than $5. This 
article describes programs to read and write programs and data 
to and from ordinary cassette recorders, to play music, to inter¬ 
face with a Teletype, to measure frequencies and to measure 
time intervals. The trick is to trade software for hardware by 
taking advantage of the precise timing control possible in the 
Elf. These applications require a 2 megahertz crystal. 

It will be noted that these programs deviate from normal 
programming practice because of the need to have the execu¬ 
tion time the same no matter which logical path is followed 
and to assure that both halves of a tone being generated are 
exactly equal. 

As a practical matter, it is often advantageous to prenumber 
all core before entering any programs or data into the Elf. 
When the program in Table 1 is executed, the content of each 
storage location is the address of that location. Thus, especially 
when entering programs manually, it is easy to see if the next 
unused location is what or where it should be. One can then 
check if too marty or too few bytes have been entered. This 
can be important in debugging. 


When the recording program runs it will first generate a 
steady 2400 hertz tone. After recording about a 10 second 
leader, the data recording is initiated by depressing the IN 
switch. The resulting data burst can be seen on the display 
and heard on the speaker. (This presumes the speaker amplifier 
given in the preceding article.) A trailer tone should also be 
recorded. 

The program for reading back from cassette is given in 
Table 3. It will read the bytes on tape into hex locations 
68 through FF. The Elf RUN switch should be turned on 
only when the cassette is playing back the 2400 hertz header. 
When the data itself is encountered it will be displayed and 
can be heard in the speaker. If core has been prenumbered it 
will generally stop with FF in the display. The recorder 
should be stopped while in the trailer. 

Pressing the IN switch then causes the program starting 
in hex 68 to be executed. When the RUN switch is turned 
off the micro is ready to read another program from the 
cassette unit. To re-execute the program at 68 the 02 in 
location 01 must be changed temporarily to 68. 


Cassette Read-Write 

The so-called ‘Kansas City’ standard makes it feasible to 
use ordinary cassette recorders for program or data storage. 
This standard uses 8 cycles of a 2400 hertz tone for a mark 
(logical 1) and 4 cycles of a 1200 hertz tone for a space 
(logical 0). Eleven bits are required for each byte; first there 
is a space to indicate the beginning of the asynchronous trans¬ 
mission, then eight marks and spaces for the byte itself, and 
finally two marks to finish. The byte rate is thus about 27 per 
second. 

The program in Table 2 will write the 152 bytes in hex 
locations 68 through FF onto tape in about 6 seconds. The 
program for doing this is stored in 00 through 62. The hard¬ 
ware for this interface is given in Figure 1. A register is used 


<1) t. 
■P V 
P T3 
<D Ci 

to o 
to o 
ft <v 
o ce 






4-TK 

--A/AA~ 

i* K. 


-a 


~o EF2 


o ■ — i WW— 
\AK 


ivaiii. 


tw 

r—1 

w 


Figure 1. Circuit for interfacing cassette to Elf. 


to reduce the voltage across the Q LED to the level needed at 
the mike input of the cassette recorder. (It may be necessary 
to experiment with this input level especially if the recorder 
does not have autolevel.) On play back the cassette speaker 
(or earphone) output is applied to a 2N2222 transistor to 
provide clean logical ones and zeroes. (The output should be 
set at the maximum to assure this.) The transistor output is 
connected to EF2 in the micro. 


Music Playing 

It is possible to program the Elf to reproduce the notes 
of the musical scale. A program for doing this is given in 
Table 4. 

The music program requires two bytes of data for each 
note and the second the pitch. Table 5 gives the hex values 
for whole note duration and pitch for various notes. For 
example, a whole note middle C is 41 33, a half note F is 
2B 24, etc. These pairs of bytes must immediately follow 
the music program, that is, start in hex AC. The data for the 
first 8 bars of Simon’s ‘Feeling Groovy’ is given in Table 6. 

The tempo of the music depends on the value in hex 77. 
The greater the value, the slower the tempo. The usual range 
is 10 to 20. 

Incidentally, this version of the music playing program 
starts at hex 68 and thus can be read by the cassette read 
program given above. However, this leaves space for only 
43 notes in a basic Elf. If the program starts at 00, then 
91 notes can be stored. 



Figure 2. Hardware interface for 20 mil Teletype. 


Page 30 

400 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 





Teletype Interface 

The circuit in Figure 2 will provide the hardware interface 
between the micro and a 20 mil Model 33 Teletype. The 
signal to drive the Teletype comes from Q, the input from 
the Teletype is on EF3. 

The program needed for both reading and writing is given 
in Table 7. When first executed, the first part of the program 
(locations 00 through 3E) causes characters read from the 
keyboard or tape reader to be written into successive core 
positions starting at 7A. Whenever core is filled or the IN 
switch is operated, the second part of the program (locations 
3F through 6F) reads from core back to the Teletype causing 
printout and tape punching if desired. Again, after reading all 
core or when the IN switch is operated it will revert back to 
reading from the Teletype. This program illustrates the basic 
input-output techniques and can be adapted for specific needs. 

Note that the system will read all 8 bits from a byte of core 
and will punch all 8 bits. Similarly, all 8 bits on tape will read 
back into core. However, striking a key on the Teletype enters 
only 7 information bits since it is an ASCII device. Likewise, 
the printer will ignore the 8th (most significant) bit. Thus, Elf 
programs as such must be initially entered from switches or a 
hex keyboard; however, this system will subsequently keep all 
8 bits intact. 


Frequency Counter 

The input used for reading back from cassettes can also be 
used when the micro is programmed as a frequency counter. 
The program for this is shown in Table 8. 

When the IN switch is operated, the program counts the 
number of cycles occurring in a one second interval and 
displays the most significant byte of that count. Operating 
the IN switch again causes the least significant byte to be dis¬ 
played. Finally, operating the IN switch results in a second 
frequency count, etc. 

The input signal should overdrive the 2N2222 to assure 
clean logical 0 to 1 crossings. The maximum input frequency 
is about 5800 hertz. 


Interval Timer 

By using a similar technique, it is possible to measure time 
intervals with the ELF. The program is given in Table 9. 

When the IN switch is operated the micro waits for the first 
0 to 1 crossing. The count in the hex display is in 16 micro¬ 
second units; thus the maximum time with this program is 
about one second. The program could be modified for decimal 
display and for larger time intervals. 




W 

c 

M 


O 

o 
















•> 




TO 




M 



• 






tH 


C - 
















M 



01 

CD 



c 




C 

a; 


(U 





j: £> 

<13 

03 03 Cm 













X 


c 


P 


a 



03 

TO 



•H 

p 


o 





o 

3 

P 

ft 

•H 

03 












ft 


•H 


<m 

bC 

oJ 


03 


c 



TO 

>, 


03 




0) 

P 

O 

>, 

03 O 


P 














-P 


•H 

a> 

a. to 


o 

4-> 

03 


ft 

ft 

J0 


CL P 



p 

•H 

TO 

JO 

P O 

• 

>-, 












E 


P 


x: 

ft 

m c 


3 

C 



o 

O 



in 

03 

N 





>> 

X 

JO 

c 













03 


in 


<u 


TO 

3 



O 

Cm 




P 


JO 

in 

P 

Cm 

Cm 

ft 


ft 











43 


bO 



c 

o 


03 

O 

•H 



O 

O 


03 

in 

ft 




ft 

O 

O 

05 

P 

3 











3 




t: 

•rH 

-P Cm 

03 

ft 

o 


<D 

ft 

03 





<D 


Cm 

JO 

03 


>, 

E 

X 

p 










ft 

C 


>> 


C 


•rH 

-P 



sz 

P 

a 


P 


<v 

i-H 

s: 


O 

o 

P 

T3 

a to 


03 

03 










03 

•H 


JO 


•rH 

-P 

bO 

>> 

•> 

p 

o 


C 

0) 

•H 


p 

O 




a 

in 

C 

rH c 

O 

c 

ft 










E 

P 



03 

-P 

c 

c D D -p 

Cm 

C JO 


o 

JO 


03 

>,o 


TO 



X 03 

a <D 

P 












03 

c 


p 

-P 

4-5 

0 

*rH O 


o 

•rH 

03 


o 

03 



ft 

a O 


C 

p 

TO 

ft 

m 


p 

TO 










K 

o 


ft 

>> 0) 

o 

o c 

Cm 

c 

SZ 

ft 

Cm 

p 

a 

o 


0) 


CM 


<D 

<D 

c 

03 C 

•H Cm 

o 

03 

c 











o 


oJ 

& 

w 

o 

c a 

O 


m 

JO 

O 


m 

p 


c 


rH 



m 

03 

E 03 

TO -H 

tD bf 

03 













-p 




ft 


Cm 




o 




a> 




P 



j: 















* 

* 

CD 

4 

* 

* 

4 CQ 

* 

FH 

4 

* 

4 

o 

4 

4 

4 

CT4 

4 

4 

4 < 

4 

4 

♦ 5 

4 4 

4 

4 

4 










f, 

rH 




CD 


CQ 

< 


rH 


CO 




CD 

00 


u 


rH rH 


ouo 



rH 

CD 










P 

w 

o 




O 



01 


o 


01 




O O 


o 


rH O 


CM 

o o 



o 

CO 









0) 

u 

o 

c 

CO 

ID 

O 


CO 

01 c N 

< ID 

U- 

01 

CM 


CD 


CO 

00 

CM 

CO 

CO 

C cc 


CC 

O CO 


rH 

CM O 









M 

1 u- < 

U-. 

< 

Ut < 

CO CC 

CO 

CO 

Ur < 

CO 

CO 


< 

CO 

Ur 

< U- < 

CO u. 

< U— 

CO Ut 

< CD 

CO 

CO 

CO 

LU 

E 








o 

Ol 

o 

CO 

ID 

ID 

f" 

CO 

<0 

CQ G 

w 

o 

rH 

CO 


CD 


CO 

CD 

CD 

Q 

U) 

o 

rH CO 

01 CO 

co < o a 

U4 

Ut 

rH 








<1) 


1 <o 

CO 

CO 

CO 

CO 

CO 

CO CO 

CO 









<4 



01 

01 01 

01 

01 

Ol Ol 

01 ID 

01 

Ol 

CD 

o 

k- 








JO 

e 






























03 








3 

£ 








5 X 













<D 









0) 








03 




03 




V) ft 







p 






rH 









</> 











ft 




03 

p 




c 


•H 



03 


in 

o 









<0 












o 




JO E 

05 

N 



ft Cm 




H 

QJ 

<D 










O 












o 




o 


4-5 



3 

•H 

c 



0) 

O 

rH 

o 

p 


>> 



X 



o 








Q 



Cm 





o> oJ 

in 

ft 



P 


it 



TO 

c 

o 


o 


03 



ft 





CD 





■'T 

| 1 

X 


Cm 

-p 

m 




<D 

03 




•> 

3 




03 

i^<M 

c 


H 



a 



0) 


O 





o 


ft 


o 

in 

U) 



- 03 

rH 

sz 



m 

Cm 

P 



O 

H 

o 

•rH 



O 



E 


a 

,*3 








C 

03 



ft 

<D 


<D 

r- -p 

o 




C Cm 




rH 

03 



p 


TO 





3 


C\J 

cc 

CM 

CM 

CM 


O 

rt 

E 


o 

•H 

U 


a 

>,o 



O 

O 

•> 



JO 

JO 

<M 

P 

c o 





Cm 

P 


U 

u. 

< 

CC 

lil 

CD 

CO 

<u 



Cm 

TO 

ft 

b3 

t: ft 

o o 





Cm 



03 


rH 

05 

3 ft 


TO 



O 

in 

2 

O 







w 

o 

CC 


c 


TO 

oj 

03 

a; 03 


*3 



O P 

Cm 

c 


•H 

o 

03 

0) 

O <D 


O 




03 

M 










rH 

ft 

-P 

03 

03 

ft 

ft c 

CO 

CM 




•rH 

O 

o 


ft 

p 

JZ 

a 

o N 


X 



TO 

p 


£ 










II 

3 

a; 


r—1 


03 





Cm 





03 



o 



•H 



C 


Cm 

ro 

o 

rH 

CO 


IT) 

CD 

C" 

(X 


X 

E-* 

CD 

* 

o 

4 

* a 

4 

* 

* 

4 

M 

4 

4 

4 

4 

> 

4 

4 

CC 

4 4 

4 

Ut 

4 4 

4 4 

w 

4 

M 


o o 

o 

O 

O 

O 

o 






























O) 

o 












CO 


o 


o 


rH 


rH 

CD 


CD 


CD 


rH < 


rH 

w 

f" 

rH CD 

O rH 


a 

CD 

a. 








rH 

-p 

w 



CD 


o 


rH 


o 


rH 

rH 


rH 


rH 


O rH 


o 

CM 

o 

O CM 

CM rH 


CO o 

CM 








03 

,— i 

c 

rH 

< 

CO 

rH 

CO 

CD 

CO 

CM 

CO 

CO o 

rH 

CD 

o < 

o 

CO 

U. < 

CM 

U. CM 

CM 

CO 

U> < 

O O 

CD < U- 

03 








W 1 

w 

r- 

Ut 

< 

Ca- 

< 

< Ut < 

Ut 

< 

CO 

CO 


CO 


CO 

CO 

u: 

CO 

CO 

Ur < 

CO U- 

Ut CO 

CO CO 

CO 

CO 

CO 

JO 








JO 

a 

o 





























03 








E-* 

0 

o 

rH 

CM 


Ul 

r- 

CO CD 

CO 

o 

UJ 

Ur 

rH 

CO 

T 

CD 


CD 

< 

o 

U3 

Ut rH 

CM 


CD CO < CO 

U1 

Ut 

rH 










►J 

1 o 

o o o o o 

o c 

o o 

o 

o 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH CM 

CM 

CM 

CM CM 

CM CM 

CM 

CM 

CO 



Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 31 


401 



o 

o 

p 

o 


c 

o 


0!) 

c 


cj 

0) 

rH 

*0 

TJ 

•H 


4-) 

id 

P • 
3 m 
TJ 0 
P 
<D O 
4-> C 

o 

C rH 

id 

o 


£ 

o cM<yinb'(DpQaoj^yb''<QOcoc^ffiacob'Cj 

•H 

a 

p| copcoPinwccojQC"CMW(ninrHW<c^'TrHC 
3 OCOOCb^b^lDlDiDininin^y^y^y^ycDCOCOCOCOlN- 

Q| 


p 

in 

=*fc **ts 5*t- «•*: . *fc Sth s*fe 0 

QCJCJPCCOCJaaWQQCJCJPCCOOQ: 


W 



w a 
0 

3 T3 
•H C 
r. co 
> 

x 

0 

SC 


0 

0 

a 


cO 

P 

u« 

< 

^y 

Q < 


Q 

Q 

o 

a 

a 

< ^y 

Q 



^y 

OJ 

OJ 

CD 



OJ 

OJ 

OJ 

OJ 

OJ 

CM 

OJ 

^y 

fH 

rH 

OJ OJ 

OJ 

OJ 

OJ 

OJ 

iH 

fH 

rH 


cO 

fH 

CD 

CO 

in 

CD 

b' 

ID 

O' 

rH 

«M 

CD O' 

in 

cj 

CJ 


CD 

a> 

a 

O 

Q 

CO 

OsJ 

CO 

OJ 

OJ 

ID 

OJ 

CD 

fH 

CO 

CO 

cm in 

OJ 

OJ 

OJ 

m 



< 

o 

Ol 

c 

CO 

CO 

< 

cj 

w 

O 

OJ 


CD 

CO 

< 

CJ w 

o 

OJ 

O’ 

co 

CO 

< 

cj w 

£ 1 

1 Q 

Q 

Q 

Q 

D 

W 

a 

W 

w 

w 

u 

w w 

a 

a 

U- 

a 

a 

U-. 

a 

a 


cd 

aj 

a 



Q < 


ca 

Q 

o pa 

a 

< 

Q 

^y 

^y 


CD 

CD 

*y 

cj 

fH 

OJ 

OJ 

OJ OJ 

CVJ 

OJ 

OJ 


CO 

fH 

OJ 

OJ 

Oj 

Oj 

OJ 

Oj 

fH 

fH 

OJ 


CO 

fH 

o 

CO 

in oj 

cj 

m 


O' 

Q 

fH 

CD 

O' 

in 

O 

o 


< 

in 


Q 

Q 

CO 

OJ 

CO 

oj m 

Oj 

Oj 

CD 

fH 

fH 

CO 

OJ 

in 

OJ 

OJ 

OJ 

in 

CO 

O' 

in 

OJ 

Ol 

o 

cj 

w 

OOJ'J 

CO 

CO < 

o a 

o 

OJ 

^y 

ID CO < CJ 

w 

o 

OJ 

^T 

t-J 1 

1 < < 

pa 

co to 

CQ 

pa 

oa 

pa 

pa 

o 

o 

o 

o 

o 

cj 

cj 

o 

a 

Q 

Q 


w 

c 

o 

E 

•H 

C/2 

o 

c 

o 

•H 

p 

p 

o 

a 

p 

o 

Cm 

(0 

p 

CO 

Q 


in 

0) 

rH 

JQ 

CO 

E- 


CD 

O 

H 

£ 

CO 

E- 






















•o 




E 












p 











CJ 



•o 

c3 












CJ Cm 







p 

c 


p 

■o 

» 

a, 

c 

p 




X 


c 

P 

P 




C -h 







o 

•H 


o 

cd 

o 

T5 

cd 

W) c 



p 


p 

3 

<D 



c 

O £ 

CJ 






c 



c 

o 

p 

CJ 


o 

5 



cd 


3 

a 

W 



p 

W 

p 



w 




W 



rH 

>, C3 

Qf 

p 

o 

• 


E 


P 

p 

P 



3 

•o 

o 


>» E 



Cm 

P 


<M 


X) P 

cd 


a*o 

0 





3 

t> o 



P 

T3 * 

p 


cd 




•H 

•H 


•rH 

CJ 

3 

o 

Cm 



p 


Cm 


•> 

O 

C <M 




Cd CJ 

w 


rH 

CD 




X) 



p 

>, P 

rH 

Cm 

<D s 

o 

P 

•H 


0 • 


cd 

w 


a. 

P 

CJ TJ 

CJ 




CJ 



CJ 

o 

cd cj 


O 

p 

w 

o 

Cd 



O <M 

P 

>J E 


2^ 

• >5 P 

c 

T3 

OJ 



3 

CO 


3 

o 

rH p 

CJ 


3 



E 

£ 


Cd a Cm 

<D cd 



P 

C xa 


cd 





C 


OJ 

C 


a 

p 

c 

CJ 

C 

Cm 

<1) 

O 


a o 

•H 

P fH 

m 


cd 

o 

•> 


P 

P 



•H 

rH 

p 

•H 

rH 

w *o 

o 

p 

0 

0 

rH 

CO 

c 


in 

£ 

>> <u 

• 


E 

o 

P 

p 

CJ 

o 



P 

rH 

>*p 

rH 

■H c 

CJ 

3 

X 

£ 

w 


cd 


o 

w 

£ T3 

OJ 



O P 

•H 

•H 

w 

Cm 



c 

cd xa 

c 

ca TJ cd 


P 

0 

J 


P 


<M 





<m 








o 



o 



Cm 




o 


CQ 

* 

M + 

* 

* * 

* 

* 

M 

* * 

* 

* 

* 

♦ 

♦ 

* 

o 

* 

* 

D 

♦ 

* * 

M 

* 

* 

+ 

p 

c 

p 

1 o 

U-. 



CD 


CD 







CD 



fH 


OJ 


CD 



ID 

CO 

•H 

p 

a 

co 



m 









CD 



o 


OJ 


O 


m 

in 

ID 

0 

in 


























p 

c 

o pa < o 

ID 

fH Q!> 

OJ 

o pa 

O CD 

fH 

O' 

^y 

fH 

CO 

OJ 

in 

u. 

in 

< 

^y 

fH «D <D 

ti¬ 

C" o 

p 

M 

1 Uf 

CO 0 * Cju 

a 

in u. 

< co 


u. u* 

in 

CD 

U-. 

m p < 

CD 

U- < CO CD 

CO CO 


ro 

CO 

CO 

0 

w 

Ol 


























w 

cd 

o 

OJ 


CD O' 

CD 

CD < 

O Q U- 

O TH 

OJ 

CO ^ 

m id 

CO 

CD 

< O Q 


O «H 

CO 

'J 

CD 

CO 

a 

£ 

1 co 

CO 

CO CO 

CO 

CO CO 

co 

co 

CO 

^y 

^y 

O’ 

^y 


^y 


^y 


■^y 



in in 

in 

in 

in 

in 



E 

O 



£ 


- 


p 











P 












Cm 


O 


o 


c 






Cm 





P 



bO 











c 


p 


3 



o 


m 

O 





cd 



C 

c 








•c 


cd 


1 

c 

O 



p 


X 






p 

>) 


•H 

•H 



<M 





cd 


p 


•o 

•H 

o 




TJ 

p 

P 





in 

cd 


m 




•H 





0 


x» 


cd 



m 


0 

0 

cd 

0 






rH 


3 

c 





p 

bO 


p 

2^ 



o If) 

0 

p 


o 

p 

TJ 

E 

TJ 

P 

c 



a. 

0 



o 



0 

P 

cd 

c 



p 

rH 


rH (0 

c 

Cm 

bO 


>> 

cd 


cd 

o 

0 



0 

TJ 


>>*H 



c 

O 


•H 


o 

cd 

cd 


= 0 

o 

t" »H 

0 

c 

X) 

o 

C 

0 


0 

If) 


o 



cd 

p 

CM 


•H 


0 

rH 


p 

E 

c 


p 

cd 

x: 

P 

o 


rH 

O 

x: 

0 

J 

0 


cd 

If) 


rH 

cd 



E 

2* 

o 

a 

0 


0 

o 


P TJ 

M W 



p 




ap 

P 


a E 


0 

p 

bo 


P 

P 

cd 

E 

E 

E 

Cd 

•H 


W TJ 


0 

c 

c 

cd 

0 

a 

c 

cd 

0 

>> 


in 



TJ 

3 

0 


0 

cd 

a 

cd 

•H 

cd 


p 

fH 

P cd p 

P P 

•H 

p 

0 

XJ 

o 

•H 

p 

X) 

xa 



in 



TJ 

p 


P 

E 

in 

w 

P 

p 


a 

II 

•H 

3 

3 


3 

rH 


o 






Cm 



O 




0 





bfl 


o 

X u. * 

a 

* a 

♦ 

E- 

o 

+ 

XI 

* 

* 

* 

* * 

* 

M 

* 

* 

Q 

♦ 

* 

* 

O 

♦ 

* 

* 

* 

0 

P 

P 

OJ 


CO 

o 

00 



o 


o 

OJ 

o 

fH 

CD Q 

o 

CO 




fH 


co 

00 

< 

O rH 

w 

a 

p 

w 

c 

o 


CD 

CO 

o 



o 


rH 

fH 

o 

o 

rH W 

rH 

CQ 




o 


OJ 

OJ 

CM 

O 

o 

CM 


o 

fH 

CO fH 

CO 

t'' CD 

in 

oa 

CO 

fH 

in 

o 

00 

o 

in o 

CD 

CD 

OJ < OJ 

a 

^y < 

in 

Q 

CC 

o 

if) 

co 

M 

CO 

w 

U. < 

a 

< a 

< 

t" 

a 

in 

co 

CO 

a 

a 

co a 

CO 

a 

< 

t'' 

CO 

a 

o 

CO 

co 

CO 

a 

a 

CO 

0 

ol 




























rH 

X) 

Ol 

o 

OJ 

co in 

CD 

C0 CD 

CD 

o 

a 

a 

o 

OJ 

^y 

CD 

co < o a 

O rH 

OJ 

CO 

in 

CD 

co 

< 

o 

w 

o 

cd 

XI 1 

1 c 

o 

o o 

o 

o o 

O 

c o 

O rH 

rH 

fH 

fH 

rH fH 

fH 

rH 

OJ 

OJ 

OJ 

OJ 

OJ 

OJ 

CM 

OJ 

CM 

CM 

CO 

E-* 




c 




c 










• 











0 




0 










0 











P 




P 

c 




0 





c 

• 

p 




0 





<m 




a 

o 




X 


o 



o 

O 

P 0 




P 




w 

O 


in 


o 

•H 

If) 



cd 

0 


0 


TJ 


P -H 




o 




0 


o 

0 



p 

0 



E 

p 

a 

E 



a 

0 3 

rH 



c 



X 

1 P 

If) 

a p 


m 

cd 

p 




cd 

p 

•H 


0 

a 

W CD 

cd 

c 





P 

cd 

cd 

E 

cd 


cd 

p 

cd 



0 

c 


P 


P 

o 

C 

> 

0 


p 



cd 

o 


0 

o 



3 

o 



P 

p 

in 



O 


•H P 

p 

0 

in 

X 



E 

•H 

p 

P 

•H 


p 

TJ 

•H 




0 

JZ 

0 


c 

c 

P 

0 

5 

0 

0 



0 

TJ 

cd 


•c 


cd 


TJ 



P 

p 

E 



p 

TJ O 

P 

p 

p 

c 



CC 

C 

0 

W 

c 


0 

W 

c 



cd 

rH 

CC 

cd 


c 

3 

C £ 

c 

0 

o 





•H 

a 

cd 

•H 


a 

cd 

•rH 



rH 

cd 

a 

m 


0 

P 

cd w 

•H 

£ 

c 

p 





0 




0 





0 




x: 






0 




* 

CC 

* 

* 

* 

CC 

* 

* 

* 

♦ 

Q 

* 

+ 

* 

* 

32 

* 

* * 

* 

* 

* 

o 



P 

1 c*' 


fH 


CD 


rH 


(D 

rH 



o 

a 

CD 



w 



ID 

CJ 



P 

If) 

CO 


o 


CD 


o 



< 



CD 

CD 

t"- 



o 



< 

ID 



c 

< 

CD 

a 

CD 

< 

CC 

a 

CC 

< 

o 


^y 

O 

o o < 

in 

CD CO 

CO 

CO < 

O 



M 

CO 

CD 

a 

< 

CO 

CC 

a 

< 

CO 

CO 

O 

o 

CO 

CO 

CO 

b' 

fH 

a p 

OJ 

CD 

CO 

CO 



o| 

0 

CD 

CQ 

O 

W 

a 


CM 

^y 

LO 


CD 

< 

CQ 

c 

a 

fH 

OJ 

co in 

ID 

b' 

CO 

< 



X I 

I CD 

CD 

CO 

CO 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

CD 

< 

< 

< < 

< 

< 

< 

< 


o 

•H 
















bC 









W 

3 
















c 







c 


e 



cd 





c 


a 






•H 




P 



0 





p 





0 


£ 

C 





P 

P 


c 

•H 



p 


>, 



cd 


cd 



•H 


o 

•rH 





cd 

in 


p a 




a 


cd 



TJ 


p 



p 


p 




o 


c 

0 


3 -H 

c 



o 


rH 




m 

cd 



cd 

CD 

•H 

P 



a 

CD 

p 

p 


p 

p 




£ 

a 

X 


P 


TJ 



p 


D. 

•H 



E 


0 



• a 

3 



CQ 

o 


p 


in 

bO 




3 

bO 





0 

bC P 

cd 


- a 

P 



cd 

p 

o 

cd 


p 

0 

<M 

o 


TJ 

0 

> 

0 



P 

0 

rH 



c a 





•rH 

p 

E 


•H 

P 

•H 

o 



p 

cd 

P 




P 

cd 

a 


o o 

a 



p 

D. 


0 


Cm 





0 


rH 

O 

bO 


0 



•H 



a 



cd 


E 

cx 



c 

a. 

m 


p 

c 

ap 

0 


P 

c 

a 



o P 

a 

c 


0 

W 

cd 


in 

P 

•H 

o 

•H 


o 

•H 

m 

m 

P 


O 

•H 

o 

o 


•H 

o 

o 


c. 

cd 

p 


n 

3 


p 



p 


•H 




P 


p 



a 




0 


b£ 


X 

a 

* 

in 

* 

* 

CO 

* 

Q 

♦ 

* 

* 

in 

* 

CQ 

* 

* 

M * 

* 

* 

* 

(X 

* 

o 

p 

p 


o 



o 








o 



^y 

ID 

co 

ID 


ID 


rH 

a 

p 


< 



f' 








rH 



CQ 

CD 

co 

CO 


CC 


o 


w 
























c 

in 

CC 

in 

c 

< o 

CO 

in 


in 

C 


CC 

CD 

C" 

CJ 

CO 

p 

c 

< 

c 

b* 

a 


M 

w 

a 

< 

a 

CO 

o 

< 

fH 

CD 

CM 

a 

< 

a 

< 

CC 

a 

CO 

CO c- 

co 

b' 

CO 

CC 

a 

0 

rH 

O 

o 

CC 

CD 

CQ 

o 

a 

a 

o 

fH 

OJ 

co 


m 

ID 

CO 

CD 

< 

CJ 

w o 

fH 

co 

*y 

ID 

b^ 

£ 

cd 

X 

1 ID 

CD 

CD 

CD 

CD 

CD 

t'' 

f' 

f'- 

f' 

f' 

b' 


C" 

b' 

b' 

b' 

b' CO 

CC 

CC 

co 

CD 

co 

E-* 


Page 32 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


402 



o 






cr 





-p 

X 







0 


x 




0 

0 






c 


bO 




-P 

^ P 



a. 

P 


<M 


•H 



M 

d 

O >>P 


V* 

0 

c 

•» 



£ 

«M 



U 

H£ C 

0 


X 

3 

0 

o 



O 



0 

O 

> 

d 

•H 

O 

X 

-p 

-p 

>> 

k 

-p 

o 

a 

>> 

O 

E 

to 

o 

•rl 


C 

d 

0 0 cr 

c 


o 

d 0 cr 


0 



to 

X 

3 

r-i 

X P 0 

3 



H "O 0 

-P 

cc 

o 

o 


X 

o 

D. 

c >> u 

o 

P 

0 

a p 

tr 



c 

0 

d 

o 

CO 

O X <M 

o 

•H 

x 

<0 O <H 

d 


0 


'C 



•H 



d 


•H 

■p 


* * N 

* * 

* o 

* 

* * 

Q 

* * * 

* * 

* 3s 

* 

Q * * 

CD 




ID 

rH 


Q ID 

O 


ID 


CD 




Q 

tH 




o 

-P 

CO 

c 


rH 

o 


CM rH 

O 


rH 






co 

CO 




o 

■sr 

o 

CO 

CO 

o o ^r 

00 

CO 

o 

rH 

CO rH 

*CT rH 


rH 

tH 

b* 


rH 


o 

M 

o 

CO 

a 

< 

CO CO tH 

a < 

CO 

w 

tH < 

cr id 

CD 

CM 

CO 

co 

CO 

ID 

CD 

CO 

Ol 

o 

in 

a 

Cf) < CO Q a 

o 

CM 

CO 

ID 

CD 00 CT> < 

CD 

o 

Q 

tH 

rH 

CM 

CO 


a 

CM 

CM 

CM 

CM 

CM CM CM 

CO 

CO 

CO 

CO 

CO CO 

co co 

CO 

CO 

CO 

CO 







c 






X 

c 




o 

tH 





0 

o 

rH 



X -H 

d 





CO 

•H 

d 



CDP 

> 




2 

w 5 

p 

> 



•H - H 

t-> 




M 

0 O 

•H 

0 



x w 

0 





tn rH 

10 

0 


u 

o 

-p 




U 

a 

o 

P 


d 

>i ° 

c 

-P 



O 

0 

0. 

c 

0 

E 

d 

•H 

c 



«m 

X d 


•H 

-P bC 

0 

rH X 


3 




tH 

X 


d d 

.« 

a0<H 

o 



P 

y a 

0 


0 0 


w x 

o 

o 



•H 

co w 

X 

O 

a o 


•rH 





d 

•H 



0 P 


Q * 

* 

* 

* 

* 


* Q 

* 

* 

C£ CD 


CD 





Q 

tH 



O 

-P 

CM 





rH 

rH 



O 

CO 











c 

CO rH 

CM 

rH 


rH 

Ih 

b- cm 

rH 


O 

M 

tH 

<T> 

ID 

CD 

CM 

CO 

CO CO 

LD 

CD 

CO 

o| 











o 

CD CO 

cn < 

CQ 

o 

Q 

tH rH 

CM 

CO 

■o CD 

a! 

| rH rH 

rH 

rH 

rH 

rH 

rH 

rH CM 

CM 

CM 

CM CM 



O 



























T5 

u 




p 






-P x 















c 




P 




P 



0 

0 




CO 







0 

co 








rH 

c 





o 




c 




c 


2 

CO 

p 




C-. 






2 

p 

0 








1 

o 


X 

•a 






3 




3 


M 

CO 

to 




•H 






M 

d 

3 




cr 




o 

•H 


c 

c 


Cm 


0 


O 



P 

O 



0 

•H 




<M 


bO 





0 

tH 

0 



0 





P 


0 

o 


•H 

0 

x 

•> 

o 


•> 

c 

o 


rH 


bO 






C 



0 

0 

0 

d 

c 

X 


0 




u 

•H 



o 



o 

•H 

0 



0 

3 


u 

rH 

c. 

0 




u 

rH 

•r-i 

c 

c 

d 

O 

a > 

o 

c 


Cm 

p 



o 

CO 


Cm 

0 


u 


CO 

X5 

u 


T5 

O 


d 

•H 

0 

t-r 




o 


CO 

0 rH 

0 

E 

«m 

o 



o 



c 



Cm 

c 


•H 

CO 


o 

o 


•H 

0 


•rH 

o 

o 

E 

P 

T5 





Cm 

o 

CO 

£ II 

jC 

0 



0 

u 

o 


0 

3 




d 





p 

0 

0 

CO 

P 


CO 


c 

0 



t. 





p 

o 

£ CO 


CC 

P 

0 

0 

o 

0 


d 

o 



P 

0 


P 

«m 


•H 

0 

c 


<m 



o 

0 

OS 

P 

5 

d 




P 


u 

tH 


•r-i 

X 

o 

Cm 

CO 


0 

0 



•H 

p 


•H 

O 


c 

N 

o 

0 

d 


0 

c 

3 

•H 

(0 

0 




•H 

o 

o 

TJ W 

•o 


d 


p 




rH 




d 



X 



o 



c 



c 


cr 


d 


rH 




d 



T5 

T3 


5 * 

CD 

* 

♦ 

* 

o 

♦ 

* 

* 


* 

* 

w 

* 

* 


* 

* 

o 

* 

* 

o 

♦ 

0 

u 


!> 

* 

o 

+ 

* 

* 

^ * 

* 

< ♦ 

< 

0 

1 o 

CM 

O 


CM 


o 




CO 

rH 

CO 



ID 


CM 

Ih 



CD 

CO 


tH 

u 

1 o 

CM 

o 




C £0 

Q 

tH 


P 

O O CM 


CO 


o 




rH 

rH 

rH 



CO 


CM 

CM 



rH 

CM 


CO 

p 

o o 

o 




coo 

o 


10 

























to 












c 

tH 


CD 

CM 

CO 

CM 

00 



CO 

a 

CD 

a 

CM 

CM 

CM 

CO 

CM 

CD 

^r 


c 

W 

cf 

0 

rH 

c 

tH 

e'¬ 

cc 

CM 

CM 

CO 

w 

CD 

W 

CM <D 

CM 

M 

1 co 

CO 

tH 

< 

tH 

CQ 

tH 

< 

CO 

< 

CO 

CO 

CO 

CM 

cn 

CO 

CO 

CO 

CO 

u 

o 

CO 

CO 

o 

M 

1 co 

en 

tH < 

CO 

< 

CO 

CO CO 

rH CO 

rH 

°1 

























JP 

d 

o| 

1 











o| 

i o 

CM 


CD 

b- 

cr> < 

o 

Q 

w 

tH 

rH 

CO 

CD 

CD 


cn < 

O 

tD 

tH 

o 

CM 



o 

O CM 


CD 

I s * 

CO 

cr> 

PC 

O 

tn o CM 

JI 

1 o 

o 

o o 

o 

c o 

o o 

o 

o 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

rH 

CM 

CM 

CM 



1 C 

o 

o 

O 

c 

o o 

O O O rH 

rH 


X 

c 


II d 





































0 

xx 








































d >> 








































0X 











E 





























u 

p 

c 





>> 




0 

O 





o 







o 
















p 

o x 

y x 




d 




p 

U 





p 


P 


u 


P 

p 

0 





P 





P 


u 



3 

P 0 

o 

d 




rH 


0 





p 




•H 


o 


3 


P 





o 

CO 




•H 


o 


0 

O 

c 

X 

0 




0 


P 


X 

1 


0 

3 


p 


X 


<M 


a 

bO 

>> 





c 

P 




X 


<M 


p 


o 


u 




TJ 

CO 

>> 



X) 


O 

a 


c 


0 




p 

c 

X 






•H 




0 




>, p 

a p 

2 






£ 

X) 


P 

d 

(0 

d 

p 


3 




& 


3 

•H 






<M 

X 



tr 





X 

3 

tn 

H 

o 



u 

P 




X 

0 

CO 

a 

3 


o 





O 

X 

c 





•H 




d 

I* 


d 



a 

0 d 


p 

X 


d 

0 

<75 

>> 


0 

u 

0 

co 

O 


o 

LD 

X 


rH 



u 

•r-i 






CO 



E 

X 


rH 

CO 

>> 


b, p 

Cm 


c 


E 

(0 


d 


c 


u 



0 



3 


0 

10 

>» O 






c 





3 


0 

E 

d p 

o co 

•H 

c 

d 


0 


X 

rH 



p 

X 

p 

0 

P 

p 

bO co 


X 

E <M 

o 

P 





u 

rH 



P 

10 


X 


rH 

CO 

a 


{h 



CO 

0 

O 

a 


TJ 

CO 

X 

L, 

X 

>.<H 

0 





•H 

o 

■H 





3 

tH 



C, 



a 

Cl 

3 

0 

a 

3 

Cm 



CO Cm 

co 


d 


d 

d 

o 

X 

•H 

Cr 

P 


P 

cn 

X 

d 

X 





P 

d 



d 

P 


p 

rH 

CO 

"OH W 

o 

P 

tH 



rH 


•H 


0 

-H 


p 

p 


X 


0 


0 


o 







0 




p 

0 


0 


•H 


rH rH 

o 

0 

a 



w 

* 

Q 

* 

cc 

tH 

* 

CD 

CD 

♦ 

CD 

* 

CD 

* 

CD 

* 


+ 

* 

* 

* 

* 

* 

CC 

* 

♦ 

* 

in 

a 

+ 

a 

* 

Q 

* 

< a a 

CC 

o 


Cr 

I CD W 



CQ 

o 





cn 


tn 


CD 

w 




b- 


CO 



rH 


CQ 


LD 


D 

a 



a a 

o 

a 

p 


P 

O' 

rH 



o 






o 


■M - 


r- 

rH 




ld 


ID 



o 




LD 


a 

rH 



O ''T 

a 

o 

0 


to 






































X 


c 

CO o 


rH 

< CO 

rH 

< 

o 


co 

CD 

CO 

CD 

C0 

o 


CD 


n < o 

CQ 

LD 

a 

ID < 

a 

a 

LD 

a 

c 

■'T 

rH 

a a 


o 

>> 


M 

1 tH 

CO 

CD 

CO 

CO 

Lh 

< 

t'' 

tn 

< 

tn < 

tn 

CD 

tn 

CO 

CO 

b' 

< 

CO C" 

CO 

C^ 

co a < 

co 

b- 

a 

ID 

a 

a 

a 

a 

a a 

a 

a 

P 

0 


Ol 






































rH 

0 


°! 

t'' 

o 

CQ 

o 

Q 

Ih 

rH 

CM 

CO 

•^T 

CD 


CO 

< CQ 

o 

a 

o 

rH 

CM 


ID 

C^ 

co 

cn 

CQ 

o 

a 

a 

rH 

CM 


a 

b* 

a < 

o 

a 

E-* 


J| 

1 CO 

CO 

CO 

co 

CO 

CO 





•0- 







ID 

ID 

ID 

ID 

ID 

ID 

LD 

CD 

ID 

LD 

ID 

ID LD 

a 

a 

a 

a a a 

a 

a 

E 

O 

























































0 



d 



















L, 



p 














C 

CO 



rH 

U 


















<M 



•H 










o 


o 


x- 

•H 



0 

X 





















X 




o 






p 


II 

a o 



X 

3 















rH X 



X 



0 




p 


c 






CO 

3 X 

u 

•H 



CO 















rH d 



d 







1 


•H 




p 


tn 



0 

X 


to 










bOP 





d 0 



0 



u 

CD 



T3 






c 


W 

2 2 

X 

0 


E 

a 









c 

d 

a 




f-r 






X 


Cr 


d 

to 

0 




3 



M 

M 

p 




o 







p 

0 

•H 


c 




<M 





u 

3 

bO 



0 

to 

C 


X 


o 


<M 



o 

tn 


ID 

o 







•r-i 

p 

X 

co 

•H 




•H CO 



O 

• 

d 

CO 

0 

C 


k 

0 

o 

C^ 

E 


o 

ID 

•H 

<M <M 


X 


• 

rH 







X 


a 

rH 




P 



P 

d 

E 


c. 

o 



X 

d 







•H 

•H 

X 

3 


CO 








0 

X 

o 

a 

a 

0 



X -H 




co 

0 

>> 




p 

XI 

bO 

U 


p 

bOP 



o 

CO 


rH 

>> 









o 


E 

E 



O X 



E 

C-t 

CO 

d 

c 

c 


CO 

XI 


0 

d 


<M 

0 

u 

a 

a 

c 




d 







C-. 

E 

o 

o 

d 

•H 



c 



d 

0 


rH 

•H 

u 

rH 


d 

p 


0 


•r-i 

u 

d 

o 

o 

d 

P 


P 

rH 







X 

t. 

d 

p 

C0 

P 



d a 




> 


0 


3 

II 

•H 


3 


rH 


X 


p 

o 

o 

X 

0 


0 

0 







3 

o 







t-r 



bO 



Q 

* 

E- X 

tH 

* 

Q_ 

+ 

o 

♦ 

CD 

* 

CD 

X 

X 

CQ 

CD 

* 

CD 

Q 

* 

* 

* 

+ 

* 

* 

a 

a 

* 

* 

* 

* 

* 

* 

a * 

* 

* 

o 

0 







































t-r 

O 







































a 

•H 

C-. 

CO 




O 


O 


o 


CO 


cn 

rH 

CD 

tn 

cn 


CM 






rH 

a 

o 




rH 




rH 


a 


> 

H) 

10 

CM 




r* 


C0 


o 


O 


rH 

rH 

rH 

CO CM 


CQ 






o 

rH 

o 




CO 




o 


a 



c 

CC 

CD 

CQ 


cc 

rH 

CO 

r- 

CO 

rH 

CO 

ID 

w 

tn 

C^ 

O 

CO 

CD 

CO 

■o 





a 

< 

o 

o 

LD 

rH 

a 

b- 


rH 

a a 

a 

a 

b- 


M 

tH 

< 

O 

w 

tH 

< 

tn 

< 

tn 

ID 

tn < 

co 

CO 

CO 

CO 

a 

CD 

a 

o 

O 

O 

O 

o 

a 

CO 

CO 

a 

a 

ID 

a 

a 

a 

a 

a a 

< 

a 

0 


Ol 






































tH 

X 


0 

o 

CM 

CO 


CD 

t"- 

CC 

< 

cc 

O 

W 

O 

rH 

CO 

CD 

b- 

cn 

CQ 

o 

a 

a 

O 

rH 

CM 

co 

ID 

b- 

cn 

< 

a 

o 

a 

a 

o rH a 


a 

d 



o 

O 

o 

o 

C O 

c 

o 

O 

O 

O 

rH 

rH 

rH 

rH 

rH 

rH 

rH 


rH 

rH 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

CM 

a 

a 

a 

a a 

a 

a 




Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 33 


403 


Table 9. Program to measure time intervals 



PROM ABLE IK OPERATING SYSTEM 
FOR RCA ELFS 


Edward McCormick 
P O Box 863 

Norco, CA 91760 Received: 77-Seot-22 

There are three significant limitations to the basic Elf 
microcomputer. They are (1) limited memory (2) lack of 
an operating system and (3) volatility of memory. This article 
describes an overall system for overcoming these limitations 
at a cost of $25 more than the basic Elf itself. It is based on 
improvements given in Part 3 of the series on the COSMAC 
Elf which appeared in the March 1977 Popular Electronics. 
The system uses IK RAM, a 256 byte EPROM operating sys¬ 
tem and an ordinary cassette to load and unload RAM. It 
operates immediately when turned on. The operating system 
facilitates program execution and manipulation of the data 
in RAM. 

The circuit of Figure 1 is the interface between the cassette 
unit and the micro. The Q output of the micro goes to the 
Mike input of the cassette unit through a suitable dropping 
resistor and also to a transistor amplifier to drive a small moni¬ 
toring speaker. The Speaker (or Earphone) output of the 
cassette unit goes to another transistor amplifier which pro¬ 
vides input to the micro through EF2 (pin 23 of the 1802). 


4?K 



MJ 

K 

•O 


ivs 

$ 


Figure 1. Hardware interface between Elf and Cassette unit. 


The IK 2102 RAM memory is that described in Part 3 of 
the Popular Electronics article. It is addressed as pages 04 
through 07. Incidentally, there is an error in Fi gure 1 
(page 65) of Part 3. A10 connects to pin 11 and A10 to 
pin 12, not the reverse as shown. 

The operating system is based on ETOPS also in Part 3 
of the series. It performs five functions (1) start program 
execution at any place in memory, (2) read from memory, 
(3) write to memory, (4) read from cassette to RAM, and 
(5) write from RAM to cassette. The function codes (entered 
from the toggle switches) are 00 through 04 respectively. To 
start execution at any memory location the switches are first 
set to 00 and the RUN switch turned on. Next, the high order 
address byte is entered in the toggle switches and the IN 
switch is depressed. The low order byte is then set in the 
toggle switches and the IN is depressed a second time. Finally, 
depressing the IN switch the third time causes program execu¬ 
tion to start at the designated address. (Register F is used as 
the program register.) Functions 01 and 02 also require similar 
entry of the starting address. The 01 function code results in 
displaying the contents of successive locations starting at the 
designated address. Code 02 causes the data in the switches 
to be loaded into successive memory locations. The Q LED 
will turn on indicating that memory is being overwritten. The 
operating system uses 07FE and 07FF of RAM. 


The cassette functions do not require the address bytes 
since they read or write all 1024 bytes of RAM. When the 
switches are set at 04 (or more) and the RUN switch is then 
turned on, the output is a constant 2400 hertz tone which can 
be heard on the monitor speaker. About 10 seconds of this 
should be recorded as a header. Depressing the IN switch 
causes the 1024 bytes of memory to be read out in KC stan¬ 
dard format in about 39 seconds. This is followed immediately 
by the 2400 hertz tone again to complete the process. 

To enter data from the cassette unit, the switches are set at 
03. However, the RUN switch should not be turned on until 
the unit is playing back in the header record. When the data is 
encountered it will be read into RAM and the process can be 
heard on the speaker and observed in the display. 

If the cassette unit does not have autolevel, it may be 
necessary to experiment to find the correct input recording 
level. On output, it was found necessary to set the volume at 
maximum to assure the clean 0 to 1 and 1 to 0 crossings 
required by the read program. The timing in the cassette 
programs presume a 2 megahertz frequency to comply with 
the KC standard. Any other crystal frequency would require 
program modification. 

The operating system is given in Table 1. This could be 
stored in the original 256 bytes of 2101 memory but would 
be volatile there. Using a 1702 EPROM eliminates this prob¬ 
lem. A 1702 is used because they are inexpensive and 
programming services are readily available. The erasable 
feature is useful when one wants to change the operating 
system. 


0 

0 

s 

* # i 

t- * * , 

t ■* * t 

r * * f 

• * . 

■ * * * 

‘•Contents*** 

t ***** i 

f * * * 

h * ♦ * 

I- * * 4 

I- * * 


0 

1 

2 

3 

4 

5 

6 

7 

8 

9 

A 

B 

C 

D 

E 

F 

00 

F8 

07 

B1 

F8 

FE 

A1 

El 

6C 

64 

FC 

FD 

33 

3B 

3F 

OD 

37 

10 

OF 

6C 

64 

21 

BF 

3F 

15 

37 

17 

6C 

64 

21 

21 

AF 

FO 

EF 

20 

3F 

20 

37 

22 

32 

34 

F6 

33 

2B 

7B 

6C 

64 

3F 

2C 

37 

2E 

30 

31 

2A 

30 

2B 

DF 

00 

00 

00 

00 

00 

00 

3 A 

3E 

7B 

F8 

04 

40 

B1 

F8 

00 

A1 

B2 

B3 

B4 

B5 

B6 

B7 

39 

9E 

F8 

80 

A7 

F8 

50 

08 

A5 

7B 

F8 

00 

51 

35 

56 

3D 

58 

F8 

00 

FC 

01 

35 

5C 

60 

FC 

ED 

3B 

56 

F8 

B3 

A2 

7A 

82 

FF 

01 

C4 

3A 

69 

35 

6E 

70 

3D 

70 

F8 

00 

FC 

01 

35 

74 

FC 

ED 

3B 

85 

7A 

FO 

F6 

51 

80 

F8 

59 

A2 

30 

8F 

7B 

FO 

F6 

51 

87 

F4 

51 

F8 

68 

A2 

85 

90 

FF 

01 

A5 

3A 

68 

64 

91 

FF 

08 

3A 

4F 

7A 

00 

00 

7A 

F8 

AO 

OO 

A6 

A7 

F8 

10 

A2 

F8 

01 

A3 

30 

AB 

31 

BO 

7B 

30 

B3 

B0 

7A 

30 

B3 

83 

FF 

01 

3A 

B4 

82 

FF 

01 

A2 

32 

C8 

F8 

07 

CO 

FF 

01 

3A 

CO 

30 

C6 

30 

AB 

86 

3A 

D7 

3F 

A3 

F8 

01 

A6 

DO 

FO 

A4 

F8 

09 

A5 

30 

E5 

87 

3A 

F4 

85 

FF 

01 

A5 

32 

ED 

E0 

84 

76 

A4 

33 

A3 

F8 

08 

A2 

F8 

OE 

A3 

30 

AB 

F8 

01 

A7 

FO 

F8 

20 

30 

A5 

F8 

00 

A7 

64 

91 

FF 

08 

32 

9E 

30 

DO 

00 

Table 1. 

Operating system for 

IK 

Elf. 










The pin connections for the 1702 are shown in Table 2. 
For convenience, they are shown in terms of pin connections 
to the 1802 itself. Note that a nine volt source is required 
by the 1702; however, this can be an ordinary battery since the 
current drain is about 15 milliamperes. Provision must be 
made to disconnect the battery since there is a three milli- 
ampere drain when the micro is turned off. 

Since a memory dump takes only one minute even with 
header and trailer records, many can be recorded on a cassette. 
Good quality tapes should be used. Verbal explanations can 
also be included. A footage indicator is also quite useful. This 
system was developed using a Panasonic 212 unit but should 
work with other cassette units. 

(Table 2-*) 


Page 34 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


404 



SUGGESTIONS FOR BETTER TINY LANGUAGES 


Dear Dennis, June 2,1977 

I like tiny PILOT, especially the added Editing and control features 
compared to WANG PATB which I use. Several comments come to 
mind: 

1. I don't like the intraline editing on PATB, echoing a Rubout 
with a backslash and no way to echo the corrected line except 
LIST. I would rather rubout echos the deleted character with the 
next rubout deleting and echoing the character before that, etc. 
Then I would use control R to give a CRLF and an echo of the 
corrected line thus far. Clear? 

2. There are several ways for interfacing calculator chips to micros. 
(See National's publication: AN-176.) It seems to me a few 
bucks and a half dozen chips is a cheap way to get a whale of a 
lot of floating point math capability. Dr. Suding's interface 
76 Jan) shows other possibilities. Why not design a language a- 
round such hardware or at least make it easy to add it later on an 
optional basis. It would be very slow but the benefits are great. 

3. Perhaps two optional break points after RUN would help debug¬ 
ging. That is, execution would stop at the first of the line num¬ 
bers encountered. 

4. How about borrowing the GET, PUT and CALL (assembly 
language subroutines) from Livermore BASIC (DDJ 77 Jan)? 

5. Why do you propose GOTO after your earlier statements (DDJ 
76 Feb)? Is GOTO not a dirty word? 

Keep up the good work. 

John Bunting 2444 N. Delaware Apt K4 

Springfield, MO. 65803 


Table 2: Pin connections for the 1 702 EPROM as related to the 1802 
unless otherwise noted. 


SIMPLIER VDM FIX 

Dear Jim, Received: 77 Jut 13 

Dan Parker, in the April issue, is quite right about the prob¬ 
lem of the VDM display not necessarily corresponding with its 
storage in memory. 

However, a simpler solution is to start the print program 
with a routine that outputs a row of spaces (64) at the begin¬ 
ning of the page. 

Jim Callas, M.D. 631 No. San Pedro Road 

San Rafael, CA. 94903 


NOTES ON CP/M’s BASIC-E 

Dear Mr. Warren, Received: 77 Jul 18 

1 would like to give you and your readers some background 
on the current status of a public domain disk Basic known as 
BASIC-E. BASIC-E was developed at the Navy Postgraduate 
School, Monterey, California for my Masters thesis. The imple¬ 
mentation is comprised of two subsystems, a compiler ■which 
generates code for a hypothetical stack machine and a run¬ 
time monitor which interprets this code. The system was 
written in PL/M and runs with Digital Research’s CP/M. 

BASIC-E provides standard floating point arithmetic pro¬ 
cessing features following the proposed ANSI standard. Ad¬ 
ditional extensions include multi-dimensional numeric and 
string arrays, logical operators (AND, OR, XOR, NOT) and 
string processing. Also, disk support methods include sequen¬ 
tial and random access to files. Strings are dynamically allocated 
as required and may contain up to 255 characters. Concatena¬ 
tion and all standard functions are implemented. Logical op¬ 
erations use 32 bit two’s complement binary representation of 
the integer portion of the variables. Files may be organized as 
either sequential or direct. Sequential files are a linear sequence 
of data items. Each reference to a sequential file retrieves the 
next data item or writes another data item. A file may also be 
declared with a user selected blocksize. These files may be ac¬ 
cessed either sequentially or randomly. 

Tire original version (version 1) was distributed by a number 
of companies including IMSAI and Digital Systems. There were 
several bugs in version 1 of BASIC-E. They involved file op¬ 
erations, string processing and some of the predefined func¬ 
tions! Also, because of the nature of the floating point pack¬ 
age, integer numbers were often printed out with an error in 
the seventh digit. I have subsequently fixed the known bugs in 
version 1 and released version.2 of BASIC-E. Both version are 
completely in the public domain. Version 2 fixes the integer 
problem mentioned above by printing only six digits of the 
seven which are maintained internally. Unfortunately, there 
are still some copies of version 2 in use which have not had the 
integer problem corrected. Structured Systems Group (Oakland, 
CA.) has a patched version of BASIC-E which retains 7 digits 
without the integer problem (versions K2.0 of the run-time 
package). 

I strongly recommend that anyone using BASIC-E obtain a 
copy of version 2. It is available through several distributors 
and at many retail outlets. I would be glad to provide a copy 
to dealers who need one for $30 copy charge. The source is 
also available in machine readable form for a $50 copy charge. 

I would like to thank the many people who have diown an 
interest in BASIC-E and by using it have helped debug it. 
Special thanks go to Gary Kildall of Digital Research for 
converting it to the resident PL/M, and to Alan Cooper and 
Keith Parsons of Structured Systems Group who continued 
to find that last elusive bug. 

Gordon E. Eubanks, Jr. 1333 No. Camino Alto, #151 

Vallejo, CA. 94950 


1702 


1802 


Other 


1 

27 


2 

26 


3 

25 


4 

15 


5 

14 


6 

13 


7 

12 


8 

11 


9 

10 


10 

9 


11 

8 


12 


+ 5v 

13 


+ 5v 

14 


Pin 

15 


+ 5v 

16 


-9v 

17 

32 


18 

31 


19 

30 


20 

29 


21 

28 


22 


+ 5v 

23 


+ 5v 

24 


-9v 


11 of 4042 


Number 19 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Page 35 


405 



MULTIPLE COLUMN 
ACCOUNTING 

Journal Balancing Program 


Charlie Pack 
25470 Elena Rd. 

Los Altos Hills CA 94022 

You are the owner of a small business. It is past the end of 
the month and it’s 1:00 AM and you’re trying to balance last 
month’s income and expenses in a multi-column check register 
journal. All of the debit and credit columns have been added 
with a small calculator. But they don’t balance. You’re off by 
13 cents! So you add the columns and rows all over again, try¬ 
ing to find the error. Finally, you find it, and re-add the 
column to get a new total. Now you’re off by $57.62 and 
there is another error! Have you ever been in a situation like 
that? Then this program is for you! 

The purpose of this program is to total and balance any 
kind of multi-accounting journal that has dollar amounts 
arranged in columns and rows (lines). The program adds 
columns vertically and rows horizontally (totals and cross¬ 
foots), and then prints various types of reports including a 
trial balance report and a statement of cash income and 
expenses. It also functions (with a video display terminal) 
as a powerful desktop adding machine. 

TTiere are several advantages in using a computer instead of 
an adding machine or calculator to balance a multi-column 
journal. It’s true, of course, that in either case all of the num¬ 
bers must be keyed in. But there the simillarity ends. The 
computer can “remember” every single debit and credit 
entry! It’s like a calculator with an almost unlimited number 
of directly addressable memories, any of which can be recalled 
individually or by column or row instantly. There is no need 
to compute column totals and then have to re-enter them to 
get a trial balance (the sum of all the debit and credit column 
totals should balance, or add up to zero). The computer will 
do it for you automatically at the touch of a key. Errors are 
easier to find and correct because numbers don’t have to be 
re-entered. Just enter only the corrected debit or credit 
amount and new totals can be computed immediately. Fur¬ 
thermore, the terminal shows a neat, formatted display which 
is much easier to read than 10 feet of adding machine tape. 
And, if you have a video display, it’s silent and doesn’t use up 
paper. So, let’s put that home computer (almost anything that 
can run BASIC) to work! 

As far as personal applications are concerned, I devel¬ 
oped this program initially to total and crossfoot a 24-column 
Economik check register which I use in a personal double¬ 
entry (debits and credits) accounting system. In this respect, 
two of its greatest values have been to save time finding 
errors and to automatically provide data that I would not 
otherwise have time to do the calculations for. More specif¬ 
ically, each time I balance the check register I get an income 
statement, a cash flow budget vs. actual statement, and a 
running balance total on my checking account. I also use it 
any time I need an adding machine! 

Page 36 


Version 1.0 of the multi-column accounting journal balanc¬ 
ing program has 322 lines (including REMarks) and is opti¬ 
mized to run under MITS Altair 8K BASIC, revision 4.0. How¬ 
ever, it is intended to run under any BASIC which supports 
2-dimensional and string arrays, and supports string processing 
using the LEFTS, MIDS and RIGHTS functions. A formatted 
print routine using the string functions is included in the 
program. 

A great convenience that 4.0 BASIC provides is the ability 
to save data (separately from the program) on a cassette and 
later re-load it. This ability permits the updating of existing 
data, so I no longer feel the need to take time to write down 
the trial balance totals every month. 

The journal balancing program itself requires about 9100 
bytes of memory, but about 3300 bytes can be saved by 
removing all REMark statements. About 500 bytes additionally 
are needed for temporary variables and work space, not includ¬ 
ing the data matrix. The data matrix requires C*4*(R+1) 
bytes, where C is the number of columns and R is the number 
of rows. If 8K BASIC occupies 6378 bytes, it can be seen that 
16K would be the minimum useful memory requirement. 

I am running the program on a 24K Altair system. My per¬ 
sonal check register journal requires 21 columns and I find 
that 90 rows are adequate to store three months transactions. 
The report formats are intended for a video display with 
lines at least 64 characters in length. Any kind of serial printer 
with adequate line length can also be used. 

The journal balancing program “thinks” of a multi-column 
journal as a matrix containing a number of vertical columns 
and a number of horizontal rows. A column represents a 
column in the journal, for example “Office rent” or “Checking 
account deposits”. A row normally represents a particular 
transaction or a line number on a journal page; or each row 
within a column can be used sequentially. In other words, 
the data matrix can be thought of as a number of elements, 
each element representing the intersection of a row and a 
column. Each element may contain a positive or a negative 
number, or zero. When the program is first started, all the 
elements contain zero values. The program allows the user to 
put numerical data into any element, after which it can 
compute row and column totals and display several types of 
reports. In normal use the contents of each element repre¬ 
sents dollar amounts from some type of accounting journal or 
work sheet; but the program can be used almost anywhere 
an adding machine is required. All results are computed to 
two decimal places. 

When the program is being used to balance an accounting 
journal or work sheet, all debits are identified as positive 
numbers and all credits are identified as negative numbers. 
A debit is an increase in an expense account, a decrease in an 
income account or an increase in an asset account (for 
example, a deposit to a bank checking account). A credit is 
a decrease in an expense account, an increase in an income 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


406 



account or a decrease in an asset account (for example, a 
withdrawal from a bank account). Normally, expense items 
are debits and income items are credits. When a transaction 
is entered into a double-entry journal, the sum of the debit 
amounts must be equal to the sum of the credit amounts. 
The journal is in balance when the total of all the debits is 
equal to the total of all the credits. Since the program 
considers debits as positive values and credits as negative val¬ 
ues, the grand total of all debits and credits entered into the 
data matrix should be zero. However, if a dollar amount is 
entered incorrectly, the journal won’t balance. The computer 
can then help the user to find the error very quickly, by 
displaying the individual column and row totads without 
the necessity of re-entering any data. 

In the journal balancing program, columns and rows may 
optionally be assigned special functions which determine how 
the data is processed by the program and how it appears on 
reports. The assignment of these special functions is control¬ 
led by assigning constant values to several subscript variables at 
the beginning of the program (this is explained in more detail 
later). The available special column functions are: 

a) expense items 

b) income items 

c) transfers to another entity, such as a fixed asset ledger 

d) transfer identification (in my system this is an account 
number in a fixed asset ledger). This number is an integer 
value and is not used in any calculations. 

e) transaction identification (in my system this is a trans¬ 
action date in the check register). This number is also an 
integer value and is not used in any calculations. 

f) bank checking account deposits (debits) 

g) bank checking account withdrawals (credits) 

h) permanent asset and liability caccounts. This includes 
bank checking account deposits and withdrawals, plus 
other accounts such as petty cash, savings account, credit 
card acounts payable, etc. Normally, asset accounts have 
debit balances and liability accounts have credit balances. 
Two or more columns can be assigned to expense items, 

income items and permanent asset and liability accounts. 
Only one column can be assigned to each of the other special 
functions. All columns for a given function must be contiguous, 
and any one column can only have one special function. 

The available special row functions are: 

a) Cash flow estimate or budget entries. In this row, the 
numbers have opposite from normal signs; this is, expense 
items are credits, income items are debits, etc. With this 
facility, the program can tell how much you are over or 
under budget. 

b) Beginning balances of asset and liability accounts. This 
allows the program to monitor and report cash flow and 
also to display the running balance on a bank checking 
account. 

Only one row can be assigned to each of the special row 
functions. The program will not work correctly if both of the 
special row functions are assigned to the same row. Assign¬ 
ment of the special row functions is optional. 

If the available special row and column functions are not 
assigned, the program functions as a simple adding machine 
with many directly addressable memories and the ability to 
add rows and columns. The income statement function does 
not work under these conditions. 

The journal balancing program allows the user to manipulate 
elements of the data matrix by means of a simple command 
structure. The functions that can be performed are: add 
numbers algebraically to a matrix element; enter numbers into 
contiguous rows within a column; set elements or columns to 
zeroes; display the contents of any element or all elements of a 
row or column; display any or all row or column totals; and 
display a trial balance report or an income statement showing 

Number 19 


all of the column totals and grand totals. Particular attention 
is given to the ability to crossfoot and balance the matrix. 

The general rules for entering commands are as follows: 
After loading the program and executing RUN, each command 
is prompted by the message: COMMAND (E, A, C, L, R, T, 
I, S, Q)? The user must enter a 1-letter function code 
followed, if required, by one or two 2-digit numbers which 
represent column or row numbers. The user must enter 1, 3 
or 5 characters as required; examples are: E0426 L07 T. 
No embedded extra spaces or other characters are allowed. 
Column and row numbers must be two digits each and must 
not exceed the bounds of the data matrix. An appropriate 
error message will appear if a mistake is made. Following are 
the descriptions of each command. The letters cc mean 
a 2-digit column number and the letters rr mean a 2-digit 
row number. The first three commands are the data entry 
commands. 

Accrr is used to accumulate numbers algebraically into the 
specified column/row element. The entry of each value 
is prompted by the message COL. cc ROW rr 
ACCUMULATE? Entry of a zero value will terminate 
the action. At that point the program rounds*T>ff the 
result to two decimal places. The program will not 
allow accumulation into the transfer ID or transaction 
ID columns (use the Enter command). 

Eccrr is used to enter numbers into consecutive rows of the 
specified column cc , beginning at row rr . Thus, 
the first entry is stored in D(cc, rr) where D is the 
name of the data matrix. Subsequent entries will be 
stored in D(cc, rr+1), D(cc, rr+2), . . . , and so on. 
Each entry is prompted by the message COL. cc ROW 
rr ENTRY? . When a zero is entered, or when the 
row counter exceeds the maximum value allowed by 
the program, the user is automatically returned to com¬ 
mand mode. Only positive whole numbers can be 
entered into the transfer ID or transaction ID columns 
(if assigned); anything to the right of the decimal point 
is ignored. Other data is rounded to two decimal places. 

If an invalid entry such as an alphabetic character or embed¬ 
ded space is made, BASIC will display an error message such as 
REDO FROM START and the data may be re-entered. In the 
beginning balance row (if assigned), data may be placed in 
only the asset/liability account columns. 

Cccrr clears the specified column/row element by setting it 
to zero. 

Ccc clears the specified column, by setting its row elements 
to zeroes. The cash flow estimate (budget) entries and 
the asset/liability beginning balance entries are not 
cleared. It is intended that the Cccrr form of the com¬ 
mand be used for that purpose. 

Lccrr causes the program to display the value contained in 
the specified column/row element. Any element in 
any column or row may be examined regardless of its 
assigned special function. 

Lee causes the program to display all non-zero items within 
column cc, along with the column total. For each row 
item within the specified column, the associated col¬ 
umn and row numbers, transfer ID, transaction ID and 
dollar amount are given. The beginning balances of 
asset accounts are not shown and not included in the 
column total (use the Lccrr or Rrr commands for 
that). If the specified column represents transfer ID 
or transaction ID, the dollar amounts are suppressed. 
Otherwise, the column total will include the estimat¬ 
ed cash flow or budget entry for that column. Any 
column may be examined with this command. 

Rrr causes the program to display all non-zero items within 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 


407 



row rr, along with the row total. In this manner any 
row may be examined. 

R causes the program to display row totals for all rows 
except the row assigned to asset account beginning bal¬ 
ances. For each row which contains at least one non¬ 
zero entry, the row number, transfer ID, transaction ID, 
row total and a running balance of the bank checking 
account are shown. TTie values of this multi-purpose 
command are that it will show immediately an out-of- 
balance condition in a double-entry system (all row 
totals should be zero); and it can be used to help 
reconcile the check register with bank statements. 
The Rrr form of the command may be used to display 
asset or liability account beginning balances. 

T causes the program to list the column totals in the form 
of a trial balance report. For each column which con¬ 
tains at least one non-zero entry, this report shows the 
column number, column name, account balance, 
estimated cash flow or budget amount and column total. 
The algebraic sum of the account balance and the 
budget entry is equal to the column total. Columns 
which represent transfer ID or transaction ID are not 
shown as their contents are not dollar amounts. The 
last line of the report shows the grand totals. In a 
double-entry system if there are not errors the grand 
totals will be all zeroes. This is the trial balance. 

I causes the program to display a statement of cash 
receipts and disbursements (similar to an income state¬ 
ment). This report is similar to the trial balance report, 
except the items are displayed in a different order 
(expenses, income items, transfers and asset or liability 
accounts) are included. For each of these columns 
which contains at least one non-zero entry, this report 
shows column number, column name, actual amount, 
budget amount and variance. The variance is the alge¬ 
braic sum of the actual amount plus the budget 
amount (remember the latter has its sign opposite from 
normal). Columns which represent transfer ID or 
transaction ID are not shown. The last lines of the 
report show a reconciliation of the ending and begin¬ 
ning net cash balance. The difference between these 
two numbers added algebraically to the sum of expenses, 
income and transfers should be zero. 

S (Stop) causes the program to stop execution and return 
to command mode in BASIC. The user may subsequent¬ 
ly return to the journal balancing program with the 
contents of all variables left intact by typing CONT. 
The purpose of the Stop command is to allow the user 
to dynamically re-assign special column or row func¬ 
tions, change column names, etc. Warning: Do not 
create a syntax error when doing this, or BASIC will 
re-set itself and destroy all of the data previously 
entered into the data matrix. It is not possible to 
change the size of the data matrix using this method. 

Q (Quit) causes the program to end and return to com¬ 
mand mode in BASIC. This command is not intended 
to allow a return to the journal balancing program 
without typing RUN and re-initializing all of the var¬ 
iables. However, some versions of BASIC allow the 
user to execute a GOTO in immediate mode, which 
would allow a successful re-start. 


A special function, such as “checking account deposits”, 
is assigned by deciding which columns or rows are to be used 
for that function and then giving the appropriate column 
numbers or row numbers to special subscript values in the 
program. Columns and rows are numbered consecutively by 
ones starting with zero (most versions of BASIC allow the use 
of the Oth element), i.e. 0, 1,2, 3, ... , etc., up to the max¬ 
imum allowed by the program. The maximum column number 
value is contained in variable C9 and the maximum row 
number is contained in variable R9. Therefore, if you want 
20 columns and 50 rows, and you do not wish to use the Oth 
column or the Oth row, line 5040 in the program should read: 

C9=20:R9=50 

Not all columns and/or rows have to be assigned a special 
function; nor do all the special functions have to be used. 
If a special function is not wanted, its associated subscript 
variables must be given a value larger than the maximum 
allowed. It is suggested to use C9+1 or R9+1 because those 
values will work regardless of the values of C9 and R9. For 
example: if the data matrix is not to contain any asset or 
liability items, line 5070 should read: 

A1=C9+1 :A2=C9+1:B1=C9+1:B2=C9+1 
Whenever the program wants to process a special function, 
a test is made first to determine if that speical function has 
been assigned. 

The names of the subscript variables for special functions 
is given in the list of variable names included at the beginning 
of the program; refer to lines 1240 through 1350 and lines 
1440 and 1450. The values for these variables are set in lines 
5050 through 5080; the user should customize this part of the 
program for his or her particular application. When assigning 
special functions or setting the bounds of the data matrix, no 
other program changes are required other than those given at 
the beginning of the program. Special functions may be 
assigned permanently by changing the program (before 
RUNning it), or assigned temporarily by RUNning the program 
and then issuing a Stop command, making the changes, and 
CONTinuing the program. 

The program contains a string array T$(C9) which has 
names (10 characters or less) for all the columns. T$(l) has 
the name for column 1, T$(2) has the name for column 2, and 
so on. When the program is first loaded for a particular appli¬ 
cation, the column name array should be set up as well as 
setting up the special functions and setting up the bounds of 
the data matrix. Refer to line 5120 in the program. 

Structured logic and “top-down” programming techniques 
should make it easier to follow and maintain the program. 
In addition, a cross-reference listing of all referenced line num¬ 
bers and variable names is provided to aid in making changes. 

The main program loop is encompassed in lines 5430 
through 5480. This routine looks up the command in a 
table (line 5390) and then does a GOSUB to the appropriate 
subrouting. Everything from line 5500 to the end of the 
program is invoked by a GOSUB. 

The formatted print routine in lines 9000-9380 is designed 
to extract additional precision from floating-point variables 
by handling the integer and fractional parts separately. MITS 
BASIC will only print 6 digits of precision, even though over 
7 digits of accuracy can be obtained. The largest amount that 
can be handled without losing precision is approximately 
$130,000. 



Page 38 


Dr. Dobb's Journal of Computer Calisthenics 8i Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


408 



SYPDOL LINK NJPBEKS WHERE HEFEKENCKD 


Special function assignments used in run samples 

L 1ST 

-,0 10 CLEAR 100 
S040 C9 = 2l !*<9«*>1 
*)Oyj E 1 = I : K2 »12: 11 = 11 s I 2 * I 9 
SOVl XI=I5*X2=16:X3=1 7 
S 07D A1=18:A2 = 21 :B1=20:B2 = 21 
5 0PO R l =0: R2 = 1 
090 DIP D(C9.R9> 

5 I 10 DIP TS(C9 > 

5 1 20 ri<l ) *"AUT OP 03 ILE" : TS <2 > = "L IC • 4 F'£eS" 

5 110 Ti< 3 > «"OFF• RENT"s T i (9 )=*'SUPPLIES" 

si90 ts(5>="jtilities" 

5 180 TJ<13>="SALES INC«"*TS(19>* M SERUICES** 
s 1 90 TSClS)>"XKi< Acer »■': T! (16>="XFR AP.OUM" 

5200 TS(I7>* M TRANS. ID":Tt(18)="CFG ACCTS" 

SP10 T*(19>="PETTY CASH":Ti(20>="W/DRAWALS" 

5220 rf< 21 >*"dkp csirs" 

s 390 KS="KACLK T1SQ" 

BREAK 

OH 


Run sample showing use of E, L and R commands 


R JN 


CCPPAND (E.A.C.L.R.T.l.S.Q)? SO 102 
C L'L • 1 ROW 2 ENTRY ? I .02 
CC’L. 1 ROW 3 ENTRY.- 1.03 
COL. 1 ROW 9 ENTRY? 1*09 
S CL. 1 HOW 5 ENTRY ? 0 
CCPPAND (E.A.C.L.R.T.l.S.Q)? E020J 
COL. 2 ROW 3 ENTRY? 2.03 
COL. 2 ROW 9 ENTRY? 2*09 
0 CL. 2 ROW S ENTRY ? 2-05 
COL. 2 ROW 9 ENTRY? 0 
CCPPAND (H.A.C.L.R. T» 1 » S » 0 > ? EOPOP 
COL. P ROW 2 ENTRY? P-02 
COL. P ROW 3 ENTRY? P*03 
C CL. P HOW 9 ENTRY ? 0 
C CPI* AND (E.A.C.L.R.T.l.S.Q) ? El 702 
COL. 17 ROW 2 ENTRY? 1702 
COL. 1/ ROW 3 ENTRY? 1703 
COL. 17 RC'w 9 ENTRY? 1/09 
C CL. 17 HOW 5 ENTRY ? 1 70S 
C 01.. 1 / ROW A ENTRY ? 0 
CCPPAND (FJ.A.C.L.ri.T.l.S.Q)? L0803 
P .03 


CCPPAND (E.A.C.L.R. T# I » S » Q > ? J02 
1 Nv/ALID CCPPAND FUNCTION ' U ° PS . ; 

CCPPAND (E.A.C.L.R.I.I»S»Q)? L02 

COL.•--ROW • - - X F' R ID--TXN ID- i APOUNT 

3 1703 2.03 

2 9 1709 2-09 

2 5 1 70S 2.05 

COLUPN TOTAL 9. I? 

CCPPAND (E.A.C.L.R.1.I.S.Q)? R09 
r CL.*--ROW •-* APOUNT 


1 9 1 .09 

9 2 -09 

HOW BALANCE J.OP 

CCPPAND (E.A.C#L»K.T.1#S»Q>? K 
ROW * --XFR ID--TXN ID--ROW TOTALS 


0 

2 1 702 9.09 

1 1 703 l 1 .09 

9 1/09 3.0 8 

5 170 5 2.05 

TOTAL ALL ROWS 25.25 


CCPPAND (E.A.C.L.R.T.I» S » Q )? Q 
OH 


CH ACC DAL 

.00 


Run sample showing Trial Balance and Income Statement reports 


CCPPAND (E.A.C.L.R. T»I»S»0>? T 


COL.*-NAPE-ACCT dal. 

1 A<J TCP COILS 182*56 

2 I.IC • l FEES 91-/5 

3 OFF. HENT 150*00 

9 S JPPLIES / 8 •59 

5 UTILITIES 139.P2 

13 SALES INC. 1.259.35- 

19 -SEHUICES 189*55- 

20 »/DRAWALS 799-67- 

21 DEPOSITS 1.993 .90 

♦♦♦••GRAND TOTALS .00 


--BUDGE I - 
200 •OO- 
AS.00- 
350 .00- 
7 5.00- 
l20 .00- 
1.100 .00 
225.00 
7 90 -00 
1.325.00- 
• 00 


•COL. TOIALS 
17.99- 
1 .25- 
.00 
3.59 
19-82 
I 59.15- 
90.95 
9 .57- 
1 1 P • 90 
.00 


CCPPAND (E.A.C.L.H.T »!«3.3)? 1 

C CL-*-NAPE-APOJM-- 

13 SALES INC. l.^o9.3-»- 

19 SERVICES 1 89*55- 

• •••* TOTAL INCOPE 1.993.90- 

1 A'J T OPO° I LE 1H2.55 

>. LIC • IF Fits 93-75 

3 OFF. RENT 3 50.00 

9 SUPPLIES /P.59 

5 JTILITIES 1 J9.P2 

•••TOTAL EXPENSES 799*57 

••SURPLUS/DEFICIT 599.23- 

• •♦♦NET CASH FLOW 699*2J- 

NKT CASH PALANCE (ENDING) 

NET CASH PALANCE (BEGIN.) 

COP PAM; (E.A.C.L.R.T.I.S. I) ? 


--Ml GE 1 - 
1.103.00 

1 . 125-0) 
200.30- 
95-30- 
150*00- 
75.03- 
1 20 . ) 0 - 
7 90 .00- 
535.00 
S»5.0‘) 


--VAR 1 A NC E 
l 59.15 
90.95 
11P.90 

1 / • 99 

l .25 
• 30 
1.59 
19.82 
9 .5 7 
119.23 
119.01 


759.2 1 

1 10 .00 NLl CASH FLOW 


5930 595) 59P0 

5970 5950 

5990 5970 

5530 59/0 

5510 5550 5530 

5590 5520 

5590 5530 5550 

5 7 10 597) 

5770 5/50 6860 5P8) 

5830 5P10 

5890 5820 

5850 5P/0 

5890 5730 5/90 5780 5850 

5930 5970 

5010 5990 

5090 5020 

5090 5930 5950 5950 

5130 5970 

5230 5190 

5 110 5270 

5350 5 110 

5390 5250 5350 

5990 5130 5150 5180 539) 

5530 597) 

5 750 5550 

5890 5530 

5910 5850 

7010 5910 

7050 7030 

70/0 7050 

/ 1 30 7080 7090 

/ 190 5910 701 0 

7190 5550 5780 

7230 5970 

79 10 59 70 

7970 7950 

7530 7510 

7710 751) 

7910 7820 

7950 79)0 7990 

8090 7810 

8593 7250 7950 7520 7520 

8 710 85 80 

8780 8730 

8810 8550 8/10 

8910 7270 7980 7590 7590 7/20 8/90 

8990 8920 

90 10 61»'0 5250 5280 5 100 5 J5) 5923 5/10 5/M 5/80 5F50 5880 7020 7090 

7 )50 70 70 71 10 7 1 50 8 ) 10 80M 80 70 8 780 P910 8950 

90 80 90 50 

9190 9120 

9150 9110 

9210 90 80 91 7|0 

9250 92 30 

931) 92D 9220 929) 

9350 91 10 

9350 9350 

973) 5530 5710 593) 5130 

98 1) 5550 5/90 59M 5150 555) 

9910 5950 

9920 5590 9710 9830 

9913 9/90 9750 9893 9850 

9990 9770 

9950 559 ) 

9950 98/0 

9970 5570 5750 

999) 97 *0 9850 991) 9920 95 30 999.) 9950 9950 


9999 

59 70 













H EC CRDS 

HEAD 

- 175 

SY 8 °CL 

T A°LF. EM HIES 

F CUM 

- 1 19 




S YPDCL 

LI NE 

N JPD. 

>.s *i 

•EnK 

(Er t;ir!NCf.L 








A 1 

l)/l 

555 ) 

55 70 

5/50 

5 75) 

5850 

58 7) 

7810 

7850 

7910 




A2 

50 7) 

5550 

55 70 

5 7 50 

5 750 

585(1 

58 70 

7810 

7 8 50 

7910 




PI 

53 7) 

585) 

7080 

7090 

7110 









B? 

5) 7) 

585) 

5850 

70 80 

7393 

/ 1 10 








c 

55 10 

559) 

55/3 

5510 

55 3) 

559) 

5550 

5550 

5 7 30 

5 7 60 

5 7 70 

5P10 

5820 


58 n 

5890 

58 7) 

5910 

5950 

50 30 

51 30 

5170 

5250 

6260 

6350 

6360 

63 70 


5 190 

5590 

55 50 

5710 

5 7 20 

5/3) 

5920 

5930 

5950 

7010 

7 8 50 

7850 

7910 


7 9 JO 

7950 

7 950 

8550 

8553 

8580 

8590 

8750 

8 780 

8 790 

8810 

9730 

97 90 


9 7 50 

9 750 

97 70 











Cl 

7250 

7 950 

7 520 

7 520 

8550 









02 

7 250 

7 950 

7520 

7520 

8550 









09 

509) 

5050 

5050 

5)7) 

5)90 

51 10 

5550 

57 50 

5850 

6270 

6310 

6690 

6850 


592) 

7030 

7050 

7380 

72 50 

7950 

7510 

7510 

7810 

9760 




U( 

50 90 

55 10 

559) 

5550 

5550 

5820 

5P30 

589) 

5960 

6030 

6170 

6250 

6280 


5320 

5350 

5 3 7) 

5550 

5 7 20 

5850 

5930 

5950 

7090 

7060 

7090 

7110 

7 850 


793 ) 

7 950 

858) 

8590 

8 7 50 









El 

5)50 

7510 

7520 











H2 

5)50 

7510 

7 520 











r 1 

5 190 

5990 

59 53 











GI 

7 99) 

7550 

7 590 

75 30 

7/20 









G2 

7 9 90 

7 5 50 

7 590 

7530 

7 7 20 









G1 

7 99) 

7 550 

7 5 90 

7530 

7 /20 









Hf 

5550 













I 1 

505) 

7 9 50 

7950 











12 

505) 

7 9 50 

7 950 











v’ 

5990 

5953 

5950 

5970 










H 

59 90 

5990 

5190 

5 533 

5590 

5550 

9 7 30 

9830 






L 

51 70 

5250 

5280 

5320 

5350 

5920 

5710 

5 720 

6 7 80 

6P60 

6880 

7020 

7090 


70 50 

7070 

7110 

7 150 

80 30 

8 / 80 

8910 

8950 

9090 

9360 




L9 

9350 

9350 












P 

51 70 

5250 

5350 

5920 

5 7 10 

5720 

5780 

5850 

6880 

7020 

7070 

7160 

80 30 


P/80 

8910 

90 30 

9050 

90 PO 

91 10 

9210 







N 

5920 

5950 

7010 

7 #20 

7950 

7 950 

8570 

8590 

8710 





PI 

72 70 

7 980 

759) 

7 590 

7 720 

8 720 

8/50 

8910 






P2 

7270 

7 980 

7 590 

7 590 

7 720 

8/50 

8950 







PI 

7270 

7 980 

7590 

7 590 

•7 720 

P7 50 

8950 







h f;c chds 

HEAD 

- 175 SYMBOL TABLE ENTRIES 

FOUND - 259 





Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 39 







•j YP n CL LINK MKB r .RS •HKHK RF.P K (ENCPRJ 


H 5660 6660 6610 5630 5690 5650 *>660 5790 6750 S /70 6880 6H JO 6890 

6860 6860 6960 3960 son 6080 60 )0 6040 61 SO 61/0 6290 6860 6260 

6280 6)20 6160 6370 6390 6660 6660 6710 6/20 6910 6910 6960 /020 

/190 /'»60 7085 /090 /I 10 /1 90 7920 7910 /990 7960 /960 PS/O P6P0 

PS00 PS00 P/10 9P)0 9890 OPSO 9P60 08/0 

hi 60 PO 666) 6/-.0 SP60 60?) 6260 6850 6860 6910 70PO 7820 / 83 O 7990 

P6P0 

M2 6)PO 6020 /)PO /990 P690 P/)l P7iO P920 

6090 60PO ->0>0 6P60 6010 6290 6P60 6910 70«0 /P20 7920 PS/O P/30 
P920 9P60 

39 ) ) 6990 i960 66 -jO 6660 9/90 9/60 9/60 9P90 9830 9P60 

S2i 9790 

S31 97 60 

S9l 9P90 

iSf 9P6) 

6680 663) 6690 56,0 6660 6/PO 6*20 SP10 6P90 6290 61/0 6980 6690 

'W20 6/PO 6920 6960 70/0 /92) 7960 /960 8671 P690 8720 

r K 6110 ft 90 

n / 2 /O 7960 / 9 PO /990 7610 / 690 050 7610 P690 P/20 

/270 / 9i0 /9P.0 / 9 90 /S10 7690 7660 7610 P690 8750 

n /2/0 / 9 6 0 79 PO / 9 90 7610 /690 7660 7610 P690 P/60 

T9 6P60 6 PPO / 110 

16 6910 70/0 7160 

FS / P20 / PSO P ) 10 P060 

r/ 7910 7960 POIO PO/O 

tp poio p)i) 

J 61/) 6260 62PO 6320 6360 6920 6/10 6/20 6/PO 6860 6PP0 /020 /090 

/060 70/0 7110 /ISO POIO 8 I 3 O 8170 P/PO P910 P960 9060 9060 9110 
9310 

j t 91 )0 9120 9160 93PO 

J I 9060 9060 9070 90PO 9110 9120 

71 F 90 P 0 9190 91 SO 9120 

72 90 6 0 9060 90 /0 922 0 92 30 

721 9210 9820 9290 9260 9120 

793 9110 9190 9160 9210 9290 9260 9110 9320 

yi ,060 669) 6P10 6170 62/0 6283 6360 6390 6660 6930 7010 7090 PSSO 

X2 6060 /610 /620 

XI 6060 6690 6P10 6170 6310 6320 6360 6190 6660 6930 7060 7060 PSSO 

RPICOHDS READ - 1/6 SYMBOL fl n LF ENTRIES FOUND - 2/2 


1010 RP1P * • • * • M IL 1 I PLE COLJPN CPECP H EG 1 1 IK *\ BALANCING R COrAF 
1020 REF VERSION 1 .0 09-16-7 / 

1010 REP WHITTEN BY CHARLIE PACK 

1 090 HEP 26970 ELENA ROAD 

1060 HEP LCS ALICS HILLS# OA • 99022 

1060 RF.P P8CNE (916) 991-0996 E 7F.M N( 6 

1070 REP * • • • *TH I S PrOGhAP PAY PE COPIED AND/OH 

10P0 RF.P JSFD 0) ANYONE *HC WANTS II* 

1 100 REP 

1110 REP* • * * • COLJPN SU°SCP.1PI VARIABLES 
1120 REP 

11.10 REP C COLJPN SUBSCRIPT 

1190 REP C1#C2 RANGE OF C0LUPN5 TO «E PHCCESSEL BY 9 SJBrC'HNE 
1160 REP (Cl LOWEST. C2 HIGHEST) 

1160 REP C9 HIGHEST ALLOWABLE COLUPN NO. (CAN PE CHANGF.C ) 

1200 REP 

1210 REP THE FOLLOWING 3ARI ARLES ASSIGN CCLUPNS TO IHE 

1220 REP INDICATED FUNCTIONS. 

| 230 REP 

1290 REP A1.A2 LCWEST#H1GHEST ASSET OH LIABILITY ACCCJNT COLUPN 
1 260 REP R1 RANP CHECKING ACC T. WITHDRAWALS COLJPN 

1270 REP P2 PANK CHECKING ACCT. DEPOSITS COLUPN 

1 280 REP NOTE: CCLUPNS B! 9 ND p 2 PUS I PE INCLUDED IN 

1 290 REP THE HANGE A 1» A2 • 

1310 REP E1.E2 LOWEST.HIGHEST EFPENSE ACCOUM COLUPN 

1320 REP II. 12 LOWEST.HIGHEST 1NCCPE ACCOUM COLJPN 

1330 REP XI TRANSFER I»D. (CATEGOHY OH ACCOUNT NO.) COLJPN 

1 390 REP X2 TRANSFER DOLLAR APOUM COLUPN 

13SO REP XI TRANSACTION I-D. (DATE OH LINF NO.) COLUPN 

1900 REP 

1910 REP*****ROW SUBSCRIPT VARIABLES 
1 920 HEP 

1 930 REP R ROW SUBSCRIPT 

1990 REP R1 ASSET ACCOUNT BEGINNING BALANCE rtOW 

1960 REP R2 BUDGET APCUNT ROW 

1 990 REM R9 HIGHEST ALLOWAPLE ROW NO- (CAN PE CHANGED) 

I 600 REM 

1610 REM•♦•••VARIABLES USED IN FORMATTED PRINT ROUTINES 
1620 REP 

1630 REM L LENGTH OF PRINT FIELD. INCLUDING LEADING SPACES 

1690 REP L9 TEMPORARY LENGTH VALUE 

1560 REM P NO. OF PLACES BEYOND DECIMAL PC1M (0 OH 2> 

1560 REM V.Vt NUMERIC VALUE TO BE PRIMED 
1570 REM VI.VIS INTEGER OF VALUE TO BE PRINTED 
1680 REM V2.V21 FRACTION OF VALUE TO BE PHINTED 


l590 REM V9S TEMPORARY STRING VARIABLE 

1600 REM 

1 610 REM*••••ACCUMULATORS 
1 620 REP 

1630 REM T TEMPORARY ACCUMULATOR 

1 690 REM T9 CHECKING ACCOUNT RUNNING BALANCE 

1650 REM T5 TOTAL OF ALL ROWS 

1660 REM T6 BEGINNING NET CASH BALANCE 

1 670 REM T7 NET CASH FLOW 

1680 REM T8 ENDING NET CASH BALANCE 

1 700 REM 

| 710 REM P1.P2.P3 VALUES TO BE PHINTED 

1720 REM T1.T2.T3 COLUMN SUB-TOTAL ACCUMULATORS 

1730 REM G1.G2.G3 COLUPN GRAND TOTAL ACCUPJLATORS 

1790 REM Pl.Gl.Tl COLUMN BALANCE 

1 750 REP P2.G2.T2 BUDGET AMOUNT 

. /60 REP P3.G3.T3 VARIANCE 

2000 REM 


2010 HLM*♦♦♦♦OTHER VARIABLES 
2020 HEM 

2030 REM D DATA ARRAY OK DIMENSION D(C9.r9> 

2090 REM J TEMPOhAHY SUBSCRIPT 7ALUE 

2050 HEM K LENGTH OF COMMAND SIRING 

2 060 REM N COUNT OF NON-ZEHC ELEPKMS 
2 110 HEP Ft COMPAND FUNCTION CODES 

2120 REP Ht TEMPORARY STRING HOLD AREA 

2 130 REM Tt COLUMN TITLE STRING ARRAY OF DIMENSION Ilf' 9) 

2190 HEP St COMPAND STRING 

2 150 REP S1S.S2S. • • ..SSS COMPAND CHARAC1ERS 1.2.. ...6 
5000 REM 

5010 REP*••♦•PROGRAM INIfIALIZA11 ON 

5020 HEP 

5010 CLEAR 100 

6090 C9=19: h9 = 29 

5 0 50 El »C9*1 :E2=C9*I X I 1 »C9*1 : I2=C9* 1 
5060 XI =C9*1 SX2 = C9*1 :X l=C9*l 
5 0 70 A I = C9 ♦ 1 : A2 = C9 ♦ 1 *"1 »C9*I :B2=C9*1 
6080 HI= R9♦1 t R2 =h9♦I 
5090 DIP D(C9 .r9> 

6110 DIP TKC9) 

5 120 REP* ••♦♦INSERT COLUPN NAPF.3 HERE 

6 390 F t = M EACLH T I SO” 

5900 REP 

6910 REP • ♦ • • •Mil N PROGRAM LOOP BKG I Nj HEnE 
5920 HEP 

5 910 I NP IT "COP PAM) ( F., A. C . L. R . I . I. , . J )" J _> ) 

5 990 K =l.KN(St) JrOh „=l TO LEN(Fl) 

,951 Ir LKp T t (S t» 1 ) = Mi ) (Kin . 1 ) H A ,9/1 
■'960 NEXT : G L i JB 99I0X1.0T0 19)0 

■>9/) ON . U3 J n 5 / )0.5530. 593.1.61 10# 6> t ). I,: i ). /9 J). 5990.9999 
5 980 (SCI C 5910 

5 990 S TOP I rtE I JRN 

6 500 REP 

5 ■> 10 REP • • • • • ACC UP JLA T E IN SPEClrl.l :cLJF\/rC» ELEMENT 

6 520 RFIM 

5510 GCSJB 9/10: Ir !«0 THEN 599) 

6 590 Ip C«XI OR C*XI 1HKN 99 >0 

5 560 GCSUO 9810: Ip H<0 I HEN 3690 

6 560 IF RoRl Oh A8>C9 OR 11 >12 T u 3*-10 

5 6/0 Ip' C«A1 OR C > 18 IHKN 99/0 

•3 61) pr I NT"C ci.." • C :"ROw" ;r ;"ACC JPJi.i I -" ; 

3 620 I NP JI I: IF TO THEN 5590 
5 6 10 U(C.R)*LCC.R>* TtGOTO 5610 

5 690 r*DCC.rt >J T = INI (A°S( T>* 100» .5 > 710 0 
3 6 60 Ip D<:.H>«0 THEN [=-(!> 

6660 DCS«rt)«r 

5 690 Rtf JRN 
3 /OO REP 

5/10 RFIM* • ♦ ♦ • ENTER IN ! ON 11 I 7r. rO.S Op iPEGIrlE! CLL' v N 
3720 RKM 

3 730 o OS JB 9/1): Ip G < J THEN >8 9') 

6 790 (j CS J n 9810: IE ft <1 P-r.\ >89) 

5 /30 Ip RoRI OR A2>C«» Or 11 >12 THEN 3 //O 
S760 Jr :<11 OR C>A2 THEN 99/0 

3 / /O ?RI\T ,, CCL."iCi ,, l»OW ,, i«(: ,, KMRY ,, 5 
3 / F ) I \P J T T:Ip' r = 0 PEN 389) 
s 8 1 0 IK C« >> 1 INii C<>X1 THEN 38)1 

3^1 (:.>»>»i\r( abs( r>)»Gcrc 6891 

68) 0 D(G»H)»1\T( 1 Q S C r > ♦ 100 ♦ . 6 ) / I 1) 

6 890 IF T <0 THEN 1 c:.;i)r-(i<(. I.R)) 

6 8 50 ft *i<* I X I F' R >.*.9 THr.N 38 90 

6 860 IF RorI CR A2>C9 OR 11 >A ' i‘-EN ./») 

38/0 Ip C«U CR C > 12 THEN 683 O 
3 K 8 O S 01 C 3//0 
3 890 r-.T JRN 
3901 RKM 

6 910 R ..Sr. I .PKOIfIED F.LEN-M •. '.(I l> : 10 ZEROES 

5 92) RE v 

69) 0 , cS JB 9/10: I r C<) TEEN 60-' 

3 99) I - 8r ) THEN 601 ) 

3 9 >0 UCS I" 98 JO: Jp RO | 8 r. \ f. 19) 

3 96) i.(C.rt>« 1: iLTO 6)9) 

60 n - Cn RO J 1 <9 

6 020 Ir OR R = i\8 llp.N 6090 

6 O 10 ncc.in-o 

9 090 F-> r R 
6 09-0 HFTJRN 
6 100 REF 

6 110 REP• • • • *C'M IP\ LIST (CUTIN -S 
6 1 20 1 - P 

6 I )0 G CS JB 9 / J ) : Ip '<0 THE 699) 

6 I 90 Ip 8 - ) 18- V 6P }•) 

6 160 G OS JB 98)0: Ip .<0 | HEN 699) 

6 16) RF.P • • • • • L IS T SPECIFIED ' ' v ' /•> . r T.M 
61/0 V»l (-;.R):L*l5lP«2x Ir :=>1 !•. ->) l H r.: '• = » 

6 180 ' 1 CS JB 9030 :PH 1 M :t»01 0 699 1 

6210 REF •••♦•! 1ST 1L! NCW.-.r. -ILr.MF i, P ,p- '1-1-1 A' |F N 

62)0 P R I N T **C CL • • - - N CW *-->rR II - - I > r II-t IMelM" 

6290 T *0 X F" Oit R =0 It .*> 

6<>6.) IF' I (C. R) =0 OR ) = R1 THr.' * IBM 
6 07,0 /*•»: S I.«6: ' -Os - - s J» 0 1)0:7 : /liOSJB 91- 

6 n /o if xi >:n rHr..\ /, m 

<S"***0 7«D(X1 *|{): If J>) fhr.\ L*9: . . , J* 9 1 ♦ 

6 110 Ir > 1 >C9 THEN 6130 

6 12 0 J = |i(M ),!<): 1 r V > ) It \ |.= / ir I * . |)»< ) i i . ^ , I* 90 V) 

6 1 3 O Jp -: = X| Or C*> ) TE-.V P.-.Pli i- ' «9 1 

6 17,0 PRINT Tl^x )0)!:V*D(C. \):L - 1 1 :> : * 90)1 

6 ) /) p.; i m : r * r ♦ 1 • (r. t > 

6)90 NEE T Ht Ip' G = > 1 0-t •:=») T» -\ •99) 

69io print ri°( 1 6>••:ol j. v \ roll'."; 

6 7|21 Print TAB* 10 ) J x V»TxI.» 1 l :P * ■•: ° 9 - : p.-t I M 

6 990 RET JrN 
63 O ) R E * 

6 310 REP• • • • • ROW LIST HO HINr.S 
6 62) REP 

63 IO Ip 8=1 THEN 6 *90 
6 690 IE K < >1 THEN 99 2 ) 

6 560 8t = il:5t = LEFrt(Kt»l ..RIGHT*(84.2) 

6 560 K=LEN(St ) :GOS JB 9810: IK <<0 THEN /1 90 


Page 40 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


410 













NATIONAL COMPUTER CLUB CONGRESS 


Received: 77 July 

Over forty-five computer club leaders and representatives, from 
about thirty computer clubs across the nation, met in Dallas for the 
first National Computer Club Congress. The Congress was held in con¬ 
junction with the 1977 National Computer Conference, which included 
a major segment on personal computing. Dr. Portia Isaacson attended 
one of the sessions of the Congress and received enthusiastic applause 
in recognition of her support as Chairman of the 1977 NCC. 

The purpose of the Congress was to exchange ideas and discuss 
issues related to club activities and programs. The central focus of the 
group was directed toward the question of a national association. Pre- 
NCC planning sessions were held this spring at computerfests in San 
Francisco, Trenton, and Cleveland. A survey of club leaders was con¬ 
ducted by mail to develop information on prospective purposes and 
structures which might be appropriate for a national association. The 
results of that survey were reported to the Congress at the beginning of 
the first session, and ensuing discussion revealed widespread agreement 
on many potential purposes. There was, however, a divergence of opin¬ 
ions on how these purposes should be accomplished and on the struc¬ 
ture of any national organization. 

A committee to define and establish a national amateur computing 
association was formed June 15 the second session of the Club Congress. 
At its initial meeting held after adjournment of the Congress, the group 
decided to be known as the Committee. The Committee includes com¬ 
puter clubs members from the Northeast, Atlantic seaboard, south, 
midwest, southwest and west. 


Throughout the next few months the Committee will be organizing 
for discussion of the services that should be provided by a national 
society for personal computing, as well as how it should be set up. 
These sessions will be held during functions attended by large numbers 
of amateur computer users. They will build on forums already held in 
San Francisco, Trenton, and Cleveland. 

Members of the Committee will meet at every opportunity under 
a rotating presiding officer. Those unable to be present will be asked 
to submit comments on the subjects to be discussed. Results of Com¬ 
mittee meetings will be publicized throughout the amateur comput¬ 
ing community. 

Further forums for discussion of issues raised by the Committee 
have been offered by SCCS Interface and Dr. Dobbs Journal. 

Initial financial support of the Committee has been assured by 
pledges of support from a few of the large regional organizations of 
computer clubs. 

The Committee is also soliciting opinions in personal contacts by 
individual members. The group may be reached through its secretary, 
Jim White, at 1202 River View Lane, Watertown, Wl 53094, or by 
calling Richard Kuzmack, (703) 821-2873. 

Also resulting from the Computer Club Congress are plans for the 
Southwest Federation of Computing Clubs. These were arrived at by 
members of nine clubs in Texas, Oklahoma, Arizona, and Louisiana 
with a total membership of about 700. The major purpose of the 
Federation is seen as communication among member clubs. Respon¬ 
sibility for Federation activities will be rotated among the clubs. 


6610 REM*****LIST ALL NON-ZERO ELEMENTS WITHIN SPECIFIED ROW 
6620 REF.***** (EXCEPT XFR ID AND TXN ID) 

6 630 PiUNT"C0L.*--KCV • - S 4M0UNT" 

6 60 T =0 l FOR C =0 TO C9 

6660 IV D(C # H ) °0 Crt C=X1 Ort C=X3 THEN 6 / 50 
6 710 V =C t L = b : M =0 IG CS J* 9030 S VRIL» 7 ! GOSUB 9030 
6 720 V«D(C#R ) :L*1 3:M=2tG0S'J8 9039 fPRINT: T«T*D<C»H > 

67S0 NEXT CxPRINT" ROW BALANCE"; 

6 780 V*T tL=I1X M»2iGOSUB 9930»PR I NTtG0T0 7 190 


6 810 HEF*****LISI TOTALS OF ALL ROWS - I TH ANY N0N-7F.RC ELEMENTS 
6 820 REF * • • • ♦ ALS 0 LISTS CHECKING ACCOUNT RUNNING BALANCE 


6890 PR INT"R0W *--XFR ID--TXN ID--R0* TOTALS-CH ACC BAL" 

6 8SO IF R1 >H9 OR 81>C9 OR B2>C9 THEN 6910 
6 P60 V»R1 XL«5IM»0 1 GOSUB 90 30 x TA = D( B2 # R1 > 

6 880 V»T4:L«92lF»2:GCS JB 903QXPR1NT 
6 910 T 5 = 0 X F OR R«9 TO R9S IF R=R1 THEN 7 190 
6920 N=Q X TO X F OR CO TO C9 

6 930 IF D<C * K) O OR C=X1 OR C«X3 THEN 7010 
6960 T*T*D<C»R)lN*N‘*l 

7 010 NEXT C: 1F N*0 THEN 7 190 
7 020 V =HxL = Sx MO :G OSUB 9039 

7 030 IK XI>C9 THEN 70S0 

7090 V»D(X1#R):IF V>0 THEN L = 9lG0SUB 9030 
7 0S9 IF X3 >C9 THEN 7070 

7060 V«D<X3»R)tIF V>0 THEN L«7iPRINT TAB(1b)JxGOSUB 9030 
79/0 PRINT T AF3 (2 3 )»: V = T x L = 1 1 S M =2 s GOSUB 9030tTb«Tb*T 
7080 IF Rl >R9 OR B1>C9 OR B2>C9 OR rt=R2 THEN 7130 
7090 IF D(0 I » R ) O AND D(S2.R)«0 THEN 7 130 
7 110 T9=T9*D(P1 .R)*D(B2#H):V-T9:L»I 3iGOSUB 9030 
7130 PRINT 
7 1 90 NEX T R 

, ISO PRINT TAB(7 >"TCTAL ALL ROWS"; 

7160 V = T5 X L*I3lM=2xG0SUB 9030tPRlNT 
7 1 90 RETURN 
7200 REF 

7210 REM*****DISPLAY TRIAL BALANCE 
7 220 REF 

7230 PR I NT"C CL •#-NAME.ACCT BAL."J 

7 299 PRINT".BUDGET-COL. TOTALS" 

7 2S0 C I =OxC2=C9lGOSUB *690 
7269 PRINT"••••♦GRAND TOTALS"; 

7 270 P1=T1xP2«T2xP3*T3iGOSUB *910 
7 390 RETURN 
7900 REM 

7910 REM*****DISPLAY INCOME STATEMENT 
7 920 REF 

7 930 PR I NT"C CL • # NAME-AMOUNT-"; 

7 990 PRINT".BUDGET-VARIANCE" 

7 9S0 IF 12 >C9 OR II >12 THEN T l O X T2O l T3 =0 l G CTO 7970 
7960 Cl =11 xC2=I2xG0SUB 8690 
7 970 PR I NT"* • • • • TOTAL INCOME"; 

7 980 PI =11 :P2 = T2 :P3 = T3 tGOSUB 8910 
7 990 G1= T1 :G2 = T2:G3«T3 

7510 IF E2 >C 9 OR El >E2 THEN T1 O l T2-0 : T3 =0 I GOT 0 7530 
7520 Cl «E1 lC2 = E2xGCSUB 8690 
7 530 PR 1 NT"* •• TOTAL EXPENSES"; 

7 590 PI=T1xP2«T2iP3=T3xG0SU» *910 
7550 G1*G1*T1:G2=G2*T2sG3*G3*T3 
7 580 PRINT"*•SURPLUS/DEFICIT"; 

7 590 PI =G1 XP2=G2tP3“G3xGCSUB 8910 
7 610 IF X2 >C9 THEN 7710 
7620 Cl«X2lC2«X2xG0SUB 8690 
7630 G1=G1*T1xG2=G2*T2xG3=G3*T3 
7 710 PRI NT"****NET CASH FLOW"; 

7 720 P1=G1 :P2=G2:P3 = G3:G0SU* 8910 
7 810 IF A2 >C 9 OR A1 >A2 THEN 60 90 
7 820 T6*01 IF R1>R9 THEN 7910 
7 850 FOR C =A 1 TO A2 i T6 = T6*D(C » R1 ) I NEXT C 
7910 T7 =0 t FOR C«AI TO A2 
7 920 N=0 s T *0 * FOR R=0 TO R9 
7 930 IF DCC»R>=0 THEN 7960 
7990 IF R=R2 OR R=R1 THEN 7960 
7 950 N = N*l X T = T*D(C»R ) 

7 960 NEXT RsIF N>0 THEN T7=T7*T 


7 990 
8010 
8030 

8 090 
8 050 
6 060 
6 0 70 
8090 
8 600 
8610 
8630 
8 690 
8 650 
6 660 
6 670 
8 680 
8 690 
8 MO 
8 720 
8 7 30 
6 750 
6 780 
8 7 90 
8 810 
6 910 
8 920 
6 950 

8 990 
9000 
9010 
9020 
9030 
9090 

9 0 SO 
9060 
9070 
9 0 80 
9110 
9 120 
9 130 
9 1 90 
9150 
9210 
9220 
9 230 
9290 
9250 
9310 
9 320 
9 350 
9 360 
9 380 
9 700 
9 710 
9730 
9 790 
9750 
9 760 
9 770 
9810 
9 830 
9 890 
9 850 
9 860 
9870 
9910 
9920 
9 930 
9 990 
9 950 
9960 
9 970 
9990 
9 999 
OK 


NEXT C 

T8=T7*T6:PRINT"NET CASH BALANCE (ENDING)"; 

V = T8jL=13:F*2iGOSUB 9030:PRINT 
PRINT"NET CASH BALANCE (BEGIN.)"; 

V = T6 : W OSUB 90 30 

PRINT" NET CASH FLOW"; 

V * T7 sGOSUB 90 30:PRI NT 
RETURN 

REM 


REF*****OUTPUT ROUTINES FOR TRIAL BALANCE OR INCOME STMT 
REF 

T I OiT2 =0 x T3 O 

FOR C=C1 TO C2 

IF C=X1 OR C»X3 THEN 8810 

N=0 : T=0 : FOR H=0 TO R9 

IF D( C » R ) =0 OR R«R| THEN 8710 

N = N*1 :IF R< >R2 THEN T«T*D(C#R> 

NEXT HJIF NO THEN 8810 
PI «T:Tl=TI*P1 
IF R2»R9 THEN 8760 

P2=D(C»R2)*T2=T2*P2IP3=P1*P2lT3-T3*P3 
V=C xL = 5xMOiG0SUB 9030 
PRINT TAB (7 ) TKCMlGOSUB 8910 
NEXT C sRETURN 

PRINT TAB(19);*V=P1 X L*l 1 :M = 2:G OSUB 9030 
IF R2 >R9 THEN 8990 

V =P2 : L= 1 3 I GOSUB 9030XV«P3lL»13 IGOSUB 9030 

PRINTxRETURN 

REM 

REM*••••FORMATTED PRINT ROUTINE 
REM 

IF M< >0 AND M« >2 THEN M=0 
L«INT(ABS(L)):IF L<2 OR L>72 THEN L-19 
V1=I NT(ABS( V ) ) XIF MO THEN V2=0»G0T0 9080 
V2«INT((ABS(V)-VI )•100♦•5 )/100 
IF V2 >*1 THEN V2 =0lV I=V1 * 1 

IF VI =0 AND M>0 THEN VI S =.GOTO 9210 

V9S =S TRS(V1 ): IF VI<1000 OR M=0 THEN 9150 
IF VI<1E*06 THEN 9190 
VS=STRS(V)xGOTC 9350 

VIS a MIDt(V9S »2*LEN(V9S)-9)•"#"*RIGHTS(V9S« 3)iGOTO 9210 
VIS=MIDS(V9S«2« LEN(V9S)~1 ) 

IF M*0 THEN V2S =""»GOTO 9310 
IF V2 =0 THEN V2S-".00"X GOTO 9310 
V9S=STRS(V2)xIF LEN(V9S>»3 THEN 9250 
V2S=MIDS(V9$#2»2)*"0"xGOT0 9310 
V2S=RIGHTS(V9S»LEN(V9S)-l) 

V9S *" "tIF V< *-*005 THEN V9S«"-" 

VS«VIS*V2S*V9S 
L9*LEN(VS) 

IF L>L9 THEN PRINT" ";xL9=L9*1 I GOTO 9360 

PRINT VS;{RETURN 

REM 

REM*****CHECK FOR VALID COLUMN 0 
IF K<3 THEN C = -l iGOTO 9920 

S2S=MIDS(SS.2«1)!IF S2S<"0" OR S2S>"9" THEN C--1IG0T0 9930 
S3S*MIDS(SS»3*1)lIF S3S<"0" OR S3S>"9" THEN C»-liGCT0 9930 
C»VAL(MIDS(SS.2#2))I IF C<-C9 THEN 9990 
C«-liGOTO 9990 

REM*****C HEC K FOR VALID ROW 0 
IF K< >5 THEN R«-ltGCT0 9920 
S9S«MIDS(SS,9#1)lIF S9S<"0" OR S9S>"9" 

S5S=MIDS(SS»5#1 >1 IF S5S<"0" OR S5S>"9" 

R=VAL(MIDS(SS»9»2))IIF R<«R9 THEN 9990 
R--1IGOTO 9960 

PRINT"INVALID COMMAND FUNCTI ON"lGOT0 9990 
PRINT"WR0NG 0 OF CHARACTERS TYPED" « GOTO 999C 
PRI NT"NCN-NUMER IC ROW OR COLUMN #"«G0TC 9990 
PR INT"C OLBMN 0 OUT OF RANGE"iGOTO 9990 
PRI NT" I LL&GAL COLUMN # FOR THIS FUNC T I ON" I GOT 0 9990 
PRI NT"ROW 0 OUT OF RANGE" iGOTO 9990 
PRI NT" ILLEGAL ROW 0 FOR THIS FUNCTION" 

RETURN 

ENDlGOTO 9999 


THEN R--1IGOTO 9930 
THEN R■- 1IGOTO 9930 


Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 41 


411 














SOFTWARE & CORRECTION 


Dear Jim, Received: 77 Oct 28 

My 650X subroutine OPLEGL, published in the Aug. '77 DDJ let 
one illegal opcode (9E) slip through its net. So there 105 illegals, not 
104. I am therefore submitting a rewrite that fixes this error and also 
spruces things up some. So that OPLEGL will be more than an academic 
exercise in sorting, I have added a primitive debugger program that uses 
both OPLEGL and BYTNUM. I am also submitting a new byte-count¬ 
computing subroutine (NUMBYT) that uses utterly different logic from 
any earlier one. It lacks the cool precision of BYTNUM, but has a fiery 
eccentricity and some novel ideas that will appeal to some users, and 
comes closer to what I feel should be the ultimate goal of subroutine 
design: to return the maximum possible amount of information to the 
main program, whether or not this is needed by the program it was 
written to serve. 

Sincerely, 

H.T. Gordon 

Agricultural Experiment Stn. 

University of California 
Berkeley, CA 94720 
©1977 by H.T. Gordon 

P.S. While I wish to make the software in this paper freely available 
without restriction to individual users, I retain full copyright for any 
commercial use. My motivation is not greed (my fee would be trivial and 
usually waived) but curiosity. Some time ago I sent a binary-to-decimal 
conversion program to MOS Technology, stating that it was to be in the 
public domain. Recently I asked them whether they had used it in their 
PET. The reply was that they did not plan to release any information on 
its programs. Puzzling, since anyone who buys a PET will be able to read 
its ROM. I am an admirer of their 6502 and KIM designs, and I sympa¬ 
thize with their desire to avoid hassles. Still, this gave me food for 
thought. Software is a trickier thing than the books and magazine 
articles for which copyright law was written, and in which changing a few 
words won't affect value. A seemingly minor software revision may so 
enhance value that its original will (and should) vanish forever. Like it or 
not, every programmer is part of a collective mind, and progress demands 
that he educate and be educated by others. There is no precise answer to 
the question: what is the value of a piece of software, and who owns 
what part of the value? In the software-cost controversy argued in DDJ 
by Tom Pittman and others, I strongly favor keeping all costs at the bare 
minimum and legal conflicts at zero, since I am primarily a user. Program 
costs are not easy to calculate. In my present "package", OPLEGL took 
a lot of time, BYTNUM much less because I was only modifuing Larry 
Fish's logic. NUMBYT was even easier because I knew what needed to be 
done, and SIMBUG was child's play. Still, all these things were simultan¬ 
eously working themselves out in my mind, and without the basic 
(originally more grandiose) concept of a scanning-debugger I would never 
have bothered with OPLEGL. This concept was inspired by Jim Butter¬ 
field's screening-out of the 64 "easy" illegals in his relocator program. I 
was receptive to this because of earlier problems caused by an illegal 
opcode. So in a way SIMBUG is a costly program. 

The real value of anything is not in its cost, but in its utility. It may 
cost a lot to produce a white elephant, but the result is still worthless. In 
our social system, utility tends to be measured in the marketplace, in 
dollars. This has worked well for hardware, and for any software that 
can be inextricably linked to hardware. Unattached software can be 
valued in dollars only to the extent that users can be compelled either 
to buy it or do without. But it is so readily diffusible and copiable that 
many users will not buy it except at a price little above the cost (in 
money and time) of copying. Copyrighted printed matter is now photo¬ 
copied illegally by individuals with complete impunity, because enforce¬ 
ment is not practical. Where law fails, we cannot expect too much of 
ethics. So the utility (in the economic sense) of even the most useful 
"software" is low. One could say the same of rainfall and sunlight! 

OPLEGL CORRECTION, AND A 
6502 SCANNING-DEBUGGER 

H.T. Gordon 

The following corrected version of subroutine OPLEGL 
adds 4 bytes to screen out opcode 9E but saves 5 bytes by 
improved logic and structure, so is down to 66 bytes total. The 
task of saving the accumulator is left to the main program. 
The accumulator will return modified by from 2 to 6 successive 
logical-shift-rights. Otherwise, only the status register is 
affected. The Z flag is set only by A2 and the 5 legals of type 
Xi(4, A, C); these also set the C flag. The C flag is set by 
X91, 5, 9, D)>8D, by X(6,E)>A6, by X o 0>90, and by all X8, 
but cleared by all others. The N flag is always the complement 


of the C flag. The V flag is not affected. This status informa¬ 
tion may or may not be useful to the main program (who can 
tell?) but one ought to know that it exists. 


Coding for OPLEGL 


0270 

4A 


OPLEGL LSR 

0271 

90 

CO 

TS. 

BCC 

0273 

UA 


LSR 

0274 

B0 

17 

BCS 

0276 

C9 

22 

CMP 

0278 

F0 

13 

BEQ 

027A 

60 


RTS 

027B 

4a 


TYPE02 LSR 

0270 

90 

10 

BCC 

027E 

4A 


LSR 

027? 

90 

05 

BCC 

0281 

C9 

13 

CMP 

0283 

F0 

08 

BEQ 

0285 

60 


LBGALA RTS 

0286 

4A 


TYPE2A LSR 

0287 

B0 

20 

BCS 

0289 

C9 

0A 

CMP 

028B 

F0 

F8 

BEQ 

02 8D 

00 


ILLEGA BRK 

028E 

4a 


TYPE0 LSR 

028F 

B0 

08 

BCS 

0291 

4A 


LSR 

0292 

B0 

04 

BCS 

0294 

C9 

08 

CMP 

0296 

F0 

0C 

BEQ 

0298 

60 


ALLOK RTS 

0299 

4A 


TYPE4C LSR 

029A 

F0 

08 

BEQ 

029C 

B0 

07 

BCS 

029E 

29 

0D 

AND 

02A0 

C9 

04 

CMP 

02A2 

D0 

05 

BNE 

02A4 

00 


N0TLEG BRK 

02A5 

C9 

09 

TYPEC CMP 

02A 7 

F0 

FB 

BEQ 

02A9 

4a 


TYP4AC LSR 

02AA 

90 

05 

BCC 

02AC 

4a 


LSR 

02AD 

C9 

02 

CMP 

02AF 

D0 

F3 

BNE 

02B1 

60 


LEGIT RTS 


A (bit 0 t* C) 
TYPE02 (even #s) 

A (bit 1 to C) 
ILLEGA (all 
X(3» 7*B,F)) 

#$22 (LSRed $89) 
ILLEGA (69 illeg.) 
(other X(1,5»9,D)) 
A (bit 1 to C) 
TYPE0 (X(0,4,8,C)) 
A (bit 2 to C) 
TYPE2A (X(2,A)) 
#$13 (LSRed $9E)) 
ILLEGA (9E illeg.) 

(other X( 6 ,E)) 

A (bit 3 to C) 
TYPI 4 AC (all XA)) 
#$0A (LSRed $A2) 
LBGALA (A2 legal) 
(other X2 illeg.) 

A (bit 2 to C) 
TYPEl+C (X(4,C)) 

A (bit 3 to C) 
ALLOK (all X 8 ) 

#$08 (LSRed $80) 
N0TLEG (80 illeg.) 

(other X0 legal) 

A (bit 3 to C) 
N0TLEG ($04, $0C, 
LSRed to 00) 

TYPEC (other XC) 
#$0D (tests LSRed 
$ 44 , $64) 

#$04. (now = 04.) 

TYP AC (other X4.) 

( 44 , 64 illeg.) 
#$09 (LSRed $9C) 
N0TLEG (9C illeg.) 
A (bit 4 to C) 
LEGIT (X # legals) 

A (bit 5 to C) 

#$02 (LSRed X=9 or 
B now = 02) 

NOTLEG (#, illeg.) 
(X-j^ legals) 


It is natural that 6502 programmers would be more con¬ 
cerned about legality than the 8080 workers (who have only 
a dozen illegal opcodes to worry about). In any program, a 
wrong-bit bug can arise by miskeying or accidental bit-change 
during transfer to or from storage. In an 8080 program, such 
an error is likely to change an opcode to a different (wrong 
but legal) one. With 105 illegals there is a higher probability 
that a legal opcode will be altered to an illegal; furthermore, if 
a branch or jump should be misdirected to an operand location 
(by miscalculation, miskeying, or bit-dropping), the operand 
may not be a legal opcode. Even if it is, I shall in a subsequent 
paragraph indicate a way of proving that it is wrong. The 


Page 42 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


412 



underlying principle of a scanning debugger is that the inherent 
structural rigidities in a program make possible the automatic 
detection of certain errors, without any execution of the pro¬ 
gram. Execution of a program bug can cause a lot of damage 
in RAM — even creating bugs where there were none before — 
so that even an imperfect pre-execution debugging scan may 
well be worthwhile. The “opcode-type-counting” aspect of 
my program SIMBUG could be used for any microprocessor. 
The “legality-testing” aspect is especially valuable for the 
650X. The 650X control unit, that knows all about the 
operands required by opcodes, knows nothing of legality and 
will cheerfully execute 93 of the illegals and be stopped cold 
by the other 12 (all type X2 except 82, A2, C2, and E2, of 
which only A2 is legal but all 4 are executed). Either way 
the result can be unpleasant, sometimes a subtle and far- 
reaching bug. It was such a bug that first aroused my interest 
in the executable illegals. 

As an introduction to SIMBUG, 1 shall try to make the 
concept more concrete by analysing a short program segment, 
written in a schematic way as 

L] O] Or K] O 3 J | K 2 O 4 B| O 5 K 3 05 

“0” indicates an operand, “J” a 1-byte opcode, “K” a 2-byte, 
and “L” a 3-byte. “B” indicates a branch opcode, a subclass 
of 2-bytes that is easy to detect (all 8 branches are type X]0) 
and has a very high usage frequency ( 10 % or more of all the 
opcodes in most programs). All 4 types are counted by 
SIMBUG. 

The debugger is initialized to pick up Lj. It calls OPLEGL 
to test its legality. If legal, it calls BYTNUM to determine 
where the next opcode is. If there are no illegality errors 
(that cause a program BREAK) it skips from code to code 
until it eventually encounters an illegal. No branches or 
jumps are taken (although more elaborate programming 
would make this possible). Operation can be terminated at any 
desired point by deliberately replacing a legal opcode by an 
illegal. 

Let us now examine the effect of an opcode error (how¬ 
ever caused) that is an alteration of a correct code to an 
incorrect but legal one, “W”. If W specifies the same number 
of bytes, the error is undetectable. If W specifies 1 or 2 bytes, 
the debugger will pick up either Oi or O 2 as the next opcode. 
Only if 0( is a legal 2-byte, or O 2 a legal 1-byte, will it pick 
up K] as the third opcode and be back “on track”. Such 
chance “error compensation” will sometimes occur. Note, 
however, that one 3-byte code has been converted into two (a 
1-byte plus a 2-byte). In the example, the counts of 1-bytes 
and 2-bytes would be too high by 1, and the count of 3-bytes 
too low by 1. The programmer is alerted to search for wrong 
3-byte. One can extend this analysis to every possible W-type 
error and see that it is highly improbable (though not impos¬ 
sible) that chance compensation will restore the correct 
counts. The difficulties are obvious: the programmer must 
know the correct counts, and in a long program the search for 
the opcode error will be tedious. The latter can be minimized 
if scanning is done in “chunks” of 256 bytes. This could be 
easily implemented in SIMBUG but I have not bothered, 
because this debugging concept is not yet (and may never 
be!) an accepted one. Improvement can wait until the simple 
version has (or has not) proved itself useful. 

The only operand errors that a somewhat more complex 
version of SIMBUG could detect are the branch offsets, and 
then only if the error caused branching to an operand. The 
debugger could calculate the location to which the offset 
directed the operation, and start a scan from that address in 
the hope that mistracking would not be compensated but 
cause it to strike an illegal. A much more positive approach 


would be for a first pass of the debugger to record the address 
of every presumptive opcode in its search area, and in a second 
pass calculate the branch locations and compare them with the 
list of opcode addresses. Failure to find a match would be a 
guarantee of error, most probably in the offset. The gain in 
debugging power might not be worth the much higher memory 
cost. Only about 10% of all operands will be branch offsets, 
and the chance of an error detection would be roughly 50-50. 
It seems to be a characteristic of all debuggers (including 
human ones) that effectiveness is subject to severely dimini¬ 
shing returns, while costs increase exponentially. 


Coding for SIMBUG 


02B3 

A0 

00 

SIMBUG 

LDY 

#0 

02B5 

A2 

07 


LDX 

#7 

02 B7 

94 

02 

CLERIT 

STY 

CNTL0,X 

02B9 

CA 



DEX 


02BA 

10 

FB 


BPL 

CLERIT 

02BC 

B1 

00 

LOADIT 

LDA 

(BASAD),Y 

02BE 

20 

70 02 


JSR 

OPLEGL 

02C1 

B1 

00 


LDA 

(BASAD),Y 

02C3 

20 

10 02 


JSR 

BYTNUM 

02C6 

F6 

02 

COUNT 

INC 

CNTL0,X 

02C8 

D0 

02 


BNE 

TSTBRN 

02CA 

F6 

06 


INC 

CNTHI,X 

02CC 

29 

IF 

TSTBRN 

AND 

Hif 

02CE 

C9 

10 


CMP 

#|l0 

02D0 

D0 

06 


BNE 

IN CAD 

02D2 

E6 

02 


INC 

CNTLO 

02Dli 

D0 

02 


BNE 

INCAD 

02D6 

E6 

06 


INC 

CNTHI 

02D8 

E6 

00 

JNCAD 

INC 

BASAD 

02DA 

D0 

02 


BNE 

NOPINC 

02DC 

E6 

01 


INC 

BASAD+1 

02DE 

CA 


NOPINC 

DEX 


02DP 

D0 

F7 


BNE 

INCAD 

02E1 

F0 

D9 


BEQ 

LOADIT 


Zere-page l*cati*ns affected: 


00 

BASAD 

lev 

scan-start address 

01 

BA SAD+1 

hi 

n ii it 

02 

CNTLO 

lew 

branch-epcede ceunt 

03 

CNTLO+1 

n 

1-byte- " " 

04 

CNTLO+2 

it 

2 _ ii n it 

05 

CNTLO+3 

ft 

n n ii 

06 

CNTHI 

hi 

branch-epcede " 

07 

CNTHI+1 

it 

1-byte- " " 

0& 

CNTHI+2 

ii 

2-byte- " " 

09 

CNTHI+3 

it 

M H II 


As befits a moronic main program, both logic and handling 
of SIMBUG are straightforward. The user inserts an illegal 
code at the point he wishes to scan to stop, keys in the start 
address in the BASAD zero-page locations, and runs SIMBUG. 
Almost instantly there will be a BREAK to whatever program- 
interrupt routine the' user has decided on (this is system- 
dependent). The user checks the current address in BASAD. If 
it is a program-opcode location, this contains an illegal. This is 
fixed and SIMBUG is started again (the address in BASAD is 
right). If the illegal was at an operand location, derailing 
occurred at an earlier point, probably by a wrong but legal 
opcode calling for the wrong number of operand bytes. There 
is also a (presumably faint) possibility that a correct opcode 
was allotted the wrong number of operand bytes. This is 


Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 43 

413 





hunted down and fixed. To play safe, it is a good idea to 
rescan from the start address. Eventually the break will occur 
at the pre-set terminator illegal. At this point, a track of legals 
exists in the program, but possibly not the intended one. A 
user who has not yet had his fingers burned may decide 
to execute the program, without bothering to check the 
opcode-type counts. Those who have previously gambled and 
lost will compare the counts from their listing with the 
S1MBUG counts, remembering that the computer is always 
right. If they agree, SIMBUG can do no more. True gamblers 
can strip SIMBUG of its 25-byte counting logic (the CLERIT 
and COUNT segments) and cut it to a super-moronic 23 bytes. 
The total byte-count of this minimal operation, including the 
two subroutines, is then 124. A less drastic stripping would 
eliminate only the branch-testing segment TSTBRN, saving 
12 bytes. 

SIMBUG was tested on the KIM-1 monitor programs. In 
the section starting at 1800, it was stopped by the illegal OF 
at 1871. This is a data word, not an instruction. The counts 
of opcode-types checked perfectly. Starting a new scan on the 
program opcode at 1873, SIMBUG stopped at the data word 
6 B at 1BFA. It had scanned so many bytes that I did not 
bother to check the type-counts. A scan from 1C00 was 
stopped by the data word 4B at 1FDF. The scan had ploughed 
through a string of data zeroes well beyond the end of actual 
programming, so the type-counts would not be correct (but 
what can one expect from a minuscule moron?). Needless 
to say, when turned on itself and its subroutines, SIMBUG 
found no flaws! 

As what I hope will be my swan song in this software area, 
I submit a radically different alternative to BYTNUM. Subrou¬ 
tine NUMBYT is fully relocatable, equally byte-efficient, but 
a bit slower. It includes some tricks that could be useful in 
other contexts. Users of the 6800 and 650X know that both 
designs have direct transfers between stack (S), accumulator 
(A), and status register (P), implemented in a different way: 
S-A-P in the 6800 but A-S-P in the 650X. The TAP instruction 
of the 6800 sets all 4 testable flags in P to the pattern of the 
4 low-order bits in A (because the P register is organized as 
xxxxSZOC), and the elaborate conditional-branch instructions 
allow sophisticated bit-analysis. However, although the pattern 
is easily stored in S for later re-use (by a PSH ACA), it has to 
pass through (and so destroy the content of) A in order to 
move into P. 

The 650X needs 2 bytes (PHA, then PLP) to move the A 
bit-pattern to P, and the 4 testable flags then reflect the 
status of the 2 highest-order and 2 lowest-order bits (because 
P is organized as NVxxxxZC). However, the pattern can be 
stored in S (either by deferring the PLP until it is needed, or 
by a PLP and PHP for both immediate and later use), and 
moved to P without affecting A. 

The price paid for these powerful flag-setting operations is 
that non-testable flags are also affected (e.g., the interrupt- 
inhibit flag). In the 6800, the stack must be reset to the 
pre-call state (if the trick is used inside a subroutine) so that 
the RTS can pick up the correct return address. However, the 
650X has the unique capability of transferring one byte, 
stored in the stack by a subroutine, to the main program. 
If an RTI is used instead of the usual RTS, the stack-stored 
byte is moved into P before the return address is picked up. 
The main program can use the status information immediately, 
and/or store it by a PHP for later use. NUMBYT uses these 
tricks both in its inner operation and to return much more 
information in its status register at exit than BYTNUM. 
Since it destroys the accumulator, the main program has the 
task of saving and restoring it if necessary. P at exit has 7 of 
the original bits in A, rotated to 0x765432, where x is always 
a zero bit and the original bit 1 is lost. The N, Z, and C flags 
therefore are = bits 0, 3, and 2. 


PRAISE FOR JAMES & MICROTRONICS 

Dear Jim: Received: 77 Mar 29 

I’m glad to see you printing the letters from satisfied cus¬ 
tomers of companies as well as the ones from dissatisfied cus¬ 
tomers. Obviously it is as important for us to know the good 
outfits to go to as the bad ones to avoid. 

Along those lines, I echo the sentiments of your other 
readers on James Electronics. If I order something on Monday, 
I have it by Friday or the following Monday. 

Another good outfit is right there at Box 7454 in Menlo 
Park - - Microtronics. I had despaired of getting turnaround 
of anything less than a month on 1702A EPROM programming, 
after experiences with two other outfits, both in the Bay area. 
Microtronics gets them back in a week, and it only costs $3 
(plus postage) for programming from a hex coding form! The 
best service at the lowest prices. They sell some hardware and 
software (on PROMS) as well as doing programming, but I 
haven’t checked those products yet. 

Jim Wilson 3250 Wing St. #402 

Ketron, Inc. San Diego, CA. 92110 


An optional modification of NUMBYT might be useful. 
Just before its fifth (PHA) instruction, bit 1 is in the C flag 
and bit 0 in the N flag. A 5-byte insertion: BCC SKIP, 
BPL SKIP, BRK will cause a program break for the 64 type 
X (3,7,B,F) illegals. This does not provide the complete 
“insurance” against illegality that OPLEGL gives, but costs 
much less in bytes and time. An added bonus is that if the N 
flag is set (bit 0=1), one knows the opcode was one of 64 
“odds” of which only 1 (89) can be illegal, so that one could 
forego a full legality test at small risk. If the N flag is clear, the 
probability of an illegal is 20 times greater and a call to 
OPLEGL might be justifiable. 

Coding for Subroutine NUMBYT 


0240 A2 01 NUMBYT 
0242 18 
0243 6A 
0244 6A 

0245 48 
0246 6a 
0247 6a 
0248 B0 0D 

024 A 6 a 
024B B0 13 
024D C9 04 
024F B0 0F 

0251 G9 01 
0253 F0 0A 
0255 40 

0256 28 NUMHAF 

0257 08 
0258 B0 05 

025A 10 05 

025C 6A 
025D 90 01 

025F E8 3BYTE 

0260 E8 2BYTE 

0261 40 1BYTE 


LDX 

#1 (se 

ts X reg. 

CLC 

(clears carry) 

ROR 

A (bit 

0 te C) 

R0R 

A (bit 

1 te C) 

PHA 

(A te 

stack) 

ROR 

A (bit 

2 te C) 

ROR 

A (bit 

3 te C) 

BCS 

NUMHAF 

(all 


type 

X (8—F)) 

ROR 

A (bit 

4 te C) 

BCS 

2 BYTE 

(X 1 (0-7)) 

CMP 

#4 


BCS 

2 BYTE 

(all but 


(6,4, 

2 ,0)0) 

CMP 

#1 


BEQ 

3 BYTE 

($20) 

RTI 

((6,4, 

0 )0) 

PLP 

(stack 

te P) 

PHP 

(P t# 

stack) 

BCS 

3 BYTE 

(bit 2=1, 


x(c. 

D,E,F) ) 

BPL 

1BYTE 

(bit 0=0, 


X( 

6 , A)) 

ROR 

A (bit 

4 te C) 

BCC 

2 BYTE 

(bit 4=0, 



(9,B)) 

ENX 



I NX 



RTI 




Page 44 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 19 


414 




ALF MUSIC BOARDS 


6502 GOODIES 


Dear Mr. Warren, Received: 77 Jut 15 

CGRS Microtech has finished a 6502 computer board for 
the S100 bus. Our board contains the 6502, TTL support 
circuitry, 2K bytes of RAM, 4K bytes of 2708 ROM, and a 
connector for our DMA control panel. 

We have also developed a T.I.M. I/O card to go with our 
computer board. 

We will soon have available a complete monitor/operating 
system along with editor/assembler/dissassembler/debugger. 
J. Swope P.O. Box 368 

President Southampton, PA. 18966 

CRGR Microtech (215)757-0284 


news release Received: 77 Jul 13 

The 10-5-9 and 10-5-10 Quad Chromatic Pitch Generator boards 
are designed to be a low-cost start in computer-controlled music genera¬ 
tion. The single board Pitch Generator produces one to four tones 
simultaneously, two boards can be used to produce eight simulta¬ 
neous tones in stereo. Each of the four tones are separately controlled 
and can produce any of 96 tones which form an 8 octave range. This 
covers the entire standard piano range, plus 8 higher pitches. Special 
connections allow later expansion with accessory boards to control 
various sound parameters. Using the optional on-board crystal oscil¬ 
lator or a 2MHz source (external or pin 49 on the S-100 bus) all pitches 
are within 0.1% of the A-440 Hz standard. The 10-5-9 is S-100 compat¬ 
ible, and the 10-5-10 is compatible with parallel output ports. Kit prices 
for both versions range from $111 to $159 (depending on the number 
of simultaneous tones), the assembled price is $185. Oscillator is an 
additional $16. Available for produce evaluation: data sheet (free), 
demonstration record ($1), and owner's manual ($3 plus $1 postage). 
ALF Products Inc.; 128 South Taft; Denver, CO 80228. (303) 234-0871. 


V.ViVi 


ZAPS CASSETTE OPERATING SYSTEM 


3000 HOLE GENERAL PURPOSE PROTOTYPING 
BOARD FOR $70 


Received: 77 Oct 17 

The ZAPS Cassette Operating System consists of a full 
Z-80 assembler, text editor, in-memory file system, labeled 
cassette tape storage system with full cyclic redundancy 
checks on all tape operations, and a variety of other soft¬ 
ware utilities. The system is entirely resident in 14K of 
memory including all buffers and IK bytes of symbol table 
space. It will run on most 8080 and Z-80 processors. It is dis¬ 
tributed on Tarbell, Digital Group, and TDL standard tapes. 

The ZAPS text editor is a full context editor, no line 
numbers are required. Only the actual data bytes are stored. 
Editor commands include input, insert, delete, replace, change, 
global change, up, down, top, bottom, string search, print 
and print current line number. 

The assembler processes the Z1LOG recommended form of 
mnemonics. A wide variety of pseudo operands are available 
including origin, end, define byte, define word, define string, 
and equate. Assembler variable names can be any length. 
All characters in the names are used to determine variable 
uniqueness. Features that the assembler shares with the rest 
of ZAPS include English error messages and the ability to 
accept numerical values in hex, octal, decimal, or binary 
form. 

The system comes with a ninety page user manual, and is 
available for $60. It can be purchased from local computer 
stores or directly from Algorithmics, P.O. Box 56, Newton 
Upper Falls, MA 02164 (617) 965-0545. 


A lews Release 


Electronic Product Associates, Inc., announces the availability of a 
new General Pupose Prototyping board for use in the Micro-68 Micro¬ 
processor systems. The 8" X 14.8" (20.32cm X 37.59cm) GP-2 board 
is exorcisor bus compatible and has complete bus buffering already 
established on-board with 8833 driver/receivers. The GP-2 board con¬ 
tains Vcc and ground busing, 3000 holes worth of blank dip patterns 
for thirty-five 24, 40 or 42 pin dip packages, or 107 14 or 16 pin dip 
packages. 

Price is $1 70.00 and they are available from stock. 

For additional details contact: 

Patti Neumann 
Vice-President 

Electronic Product Associates, Inc. 

1157 Vega Street 
San Diego CA 92110 


/'OTWWJ*! 


m *! 1 


Number 19 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 45 


415 

























































































dr. dobbs journal of 


COMPUTER 


C 


alisthe 


nics 


60 


rthodontia 


Running Light Without Overbyte 


Number 20 


November/December 1977 


Volume 2, Issue 10 


Product Review 

NEW VOICE SYNTHESIS & GRAPHICS PRODUCTS - Kenneth Young 6 

ZAPS Operating System and Assembler for the Z-80 —Jef Raskin 29 


Product Evaluation 

Heathkit’s H-8: A Consumer’s View — Paul R. Poduska, Ph.D. 
a positive evaluation by a user 


Software 

For 6502’s 

A KIM -1 Disassembler — Theodore E. Bridge 12 

MATHPAC: A Kimath Supplement — John Eaton 15 

For 6800’s 

GPM for the 6800 — Frits van der Wateren 22 

complete documentation & annotated source code 

SWTPC Editor Format Update — Phil Hughes 30 

For 8080’s 

VDM-1 Driver Mods — John Moorhead 13 

KAPIAR: AN 8080 MACROPROCESSOR - Steve Newberry 31 

complete documentation & source code 
code is in PL/M and the resulting assembler & machine code 




© David Dameron 1979 










































WILL WE MAKE IT? 

Dear Jim Warren, 

I am renewing my subscription with some reservation. 
It is November 10 and I just received the August issue 2 days 
ago. You have slightly more than \'A months to get out three 
issues in order to give your subscribers their money’s worth. 

I think it is inexcusable for you not to meet your deadlines 
when you act as a consumer advocate for computer hobbyists. 
If you do not get out your 10 issues before Jan 1, is that not 
false advertising? Maybe you will get all of the issues out-I 
think not. 

However, since you have the only publication of its kind 
I’m willing to take a chance on another year with you. A 
couple of issues ago you had quite an article on Wayne Green. 
At least he gets his magazine out on time. 

Bill Eisinger 

Bill-It looks close, but I’m betting we’ll get it in the mail 
under the wire. The rest is up to the Post Awful.-TRW 


NORTH STAR SOFTWARE PROFUSION 

Dear Jim: Received: 77 Dec 12 

Some information of interest to all personal computer 
owners utilizing a North Star Disc Drive and compatible North 
Star Software. Additional software packages, from varied inde¬ 
pendent sources, are now appearing. In fact, at my last count, 
there were 7 independent firms offering North Star compatible 
Software. I have personally purchased several packages. 

George Rompot, Business Computer Systems, 216 Collier 
Dr., Springfield, Illinois, offers two: a package of basic 
programs covering Business, Financial, Real Estate, etc., 18 
programs, $50.00, and a set of Utility programs in machine 
code, $25.00. The Utility package includes a COMPRESS, 
SORTDIR, and two other programs. Both packages are 
reasonably priced and I consider them to be excellent Soft¬ 
ware. 

The XEK assembler, disassembler and monitor package as 
offered by the Byte Shop of Westminister, California, is a 
good Software package to have available to help realize some 
of your micro’s power and capabilities (with good Software). 
At $48.00 including a good set of documentation, but not 
quite as complete as might be required to understand the full 
power of XEK package, this Software is well worth purchasing. 

H. B. Rothberg 
Box AF 

Woodbridge, CT 06525 


Product Review 

NOTES ON THE DC HAYES 
DATA COMMUNICATIONS ADAPTER 

Jef Raskin Received 77 Nov 17 

DC Hayes “Data Communications Adapter” model 
80-103A. Available from D. C. Hayes PO Box 9884, Atlanta, 
GA 30319. 

The testing reported on here was performed by Ron Crane, 
who is chairperson of the System Design Subcommittee and 
member of the Protocol Subcommittee of the PCNET group. 
As reported on in these pages, the PCNET people are trying to 
establish a set of communications guidelines that will help 
ease communication between personal computer users. This 
reviewer has attended a few of their meetings, and read their 
proposals, and if he was writing a review of their work would 
give it very high marks. 

But this is a review of the DC Hayes board. This board does 
allow two way communication between computers over phone 
lines under full computer control. This makes it one of the 
products that were wished for in the review of the Penny- 
whistle modem. However, like most products in our market¬ 
place, there are a number of problems that the naive user 
wouldn’t anticipate, and that the advanced user must deal 
with. The situation is especially complicated since a number 
of regulatory agencies and their regulations (also called 
“tariffs”) affect the use of this device. For example, though it 
is electrically possible to connect this device directly to the 
phone lines, the present tariffs require that the user purchase 
or rent a DAA (Data Access thingamabob) from the phone 
company or other vendor. The DC Hayes board then attaches 
to the DAA which then attaches to the phone line. This means 
extra bread. If you call the phone company, they may even 
tell you that you cannot use it at all. Don’t call them. In any 
case (to make a pun) the rules are being challenged in court, 
and in congress, and at the FCC (Federabobble Communica¬ 
tions Commission) and a lot of things are up in the air at 
present. Unfortunately, the 80-103A board does not quite 
meet phone company specs. The board should provide a 600 
ohm load, but is only 500 ohm. Then you need a 600 to 900 
ohm matching transformer (this required transformer and 
some protective and filtering circuits are what you get in a 
DAA). Ron points out (and has told the manufacturer) that 
changing R8 to 6800 ohms, and Rll to 470 ohms, with a 
.0039 microfarad capacitor across R8 to filter out harmonics, 
will make the device have a better output impedance, and will 
cut down on the high frequencies that the phone company 
deplores. 

It should be mentioned that this review only covers the 
analog side of the board. The S-100 portion of the interface 
has not been tested by the reviewer or by Ron. However 
some evidence has been accumulated showing that it does 
work with the computer. 

The manufacturer has promised to make the changes Ron 
has suggested. He notes that similar suggestions have been 
received from other purchasers. The overall impression is that 
this device may well prove satisfactory for inter-computer 
communication at a hobbyist level. Its specs are not as tight as 
commercial units—but then its price is far less. It has many 
features, such as automatic phone answering, that are 
otherwise unavailable. It can operate in both originate and 
answer modes (see the Pennywhistle review in the August 
1977 issue for definitions). It will probably work under good 
line conditions, but it may not work over a long distance 
circuit reliably. One reason is that the board only puts out 
—7.7db instead of the —6db (referenced to 1 mw) claimed. 
If you don’t understand the jargon, in plain English this means 
that it’s feeble. When you look at the circuit (if you like such 

Number 20 


things) you will see that the 100 ohm series resistance of the 
transformer has been neglected. Oops. 

Another oops is that the board depends on getting 1 MHz 
from the computer. If it gets something else, the tones it puts 
out will be something else. IMSAI and MITs computers have 
the right clock rate. Polymorphic systems’ is 8% too low, 
which will make the signals borderline quality, but just how 
bad it is hasn’t been tested. Z-80 systems will also sometimes 
be incompatible, especially if they are running at 4MHz. The 
proper way to build boards is to use an onboard crystal 
oscillator. We have noted this in the past. That way, even if 
you crank up the performance of your computer by goosing 
the clock, all the peripherals will still run at the right rate. 

To conclude: the Pennywhistle was 50% of the way to 
personal computer communications. The DC Hayes is 80% 
of the way there. Will someone please give us an affordable 
100 % effort? 

Page 5 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


419 



New Voice Synthesis & Graphics Products 
at the Mini/Micro Show 


Dear Dr. Dobb’s, Received: 77 Dec 19 

Enclosed is a copy of a letter I recently sent Bill Fuller and 
Neil Ferguson of the Computer Hobbyist Group of North 
Texas. It is about some of the new personal computing pro¬ 
ducts I saw at the Mini/Micro show and my preliminary evalua¬ 
tion of them. I also sent a similar letter to Sol Libes and 
Russell Gorr of the Amateur Computer Group of New Jersey. 
I’ve been particularly impressed with the work these people 
have been doing. They really do sincerely care about computer 
hobbyists. That’s why I wrote them and also the reason why 
I am writing you now. If you feel my letter to be of sufficient 
general interest to fellow computer enthusiasts, please feel free 
to use it in your publication. 

Sincerely, 

Kenneth Young 3311 W. 3rd St., Apt. 1-319 

(213) 383-9666 Los Angeles, CA 90020 

Dear Bill and Neil, Dated 77 Dec 14 

I just attended the recent Mini/Micro show held December 
6-8 in Anaheim, California. Anaheim is south of Los Angeles 
and takes approximately 35 minutes to drive there. The turn¬ 
out was moderate and it wasn’t really aimed at hobbyists. 
However, there were four new S-100 products introduced 
which 1 felt might be of interest to fellow CHGNT members: 
two speech synthesizers and two computer tablets. I’ve en¬ 
closed what little literature they had available. All these manu¬ 
facturers said they’d be delivering their newly announced 
products by mid-January. I’m a little skeptical, but we’ll see. 

Votrax is introducing a $650 assembled S-100 speech syn¬ 
thesizer. It looks very similar to the $595 Digital Group/ 
Votrax speech synthesizer except that there will be no voice 
input circuitry. The board I saw was on a Vector S-100 proto¬ 
typing board. Most of the board was covered with a dozen 
support chips I could see. The computer-synthesis-by-rule 
(CSR) facilities of this product are embedded in the hardware 
and are therefore fixed and inflexible. Votrax also plans to 
make software available at additional cost. Since they have not 
written any software yet, they don’t know yet what they plan 
to charge for it. With this product, Votrax should be giving 
Computalker some competition. Unfortunately, Votrax’s unit 
is more expensive and, like Computalker, you have to get used 
to the way it produces user-generated words before you can 
recognize what it is saying. It is possible with the Computalker 
to create very natural sounding speech. However, you must 
have a fairly deep understanding of voice synthesis techniques 
and access to very specialized equipment like an audio spec¬ 
trum analyzer. I’ve owned a Computalker for about a year 
now and I am semi-serious about obtaining a Votrax unit. My 
reasons are that the CSR facilities on the Votrax seem to be a 
little easier to use and that Votrax’s CSR generated speech 
might be a little better quality than Computalker’s. However, 
it’s difficult for me to tell which is really better without having 
the units side-by-side for comparative analysis purposes. 

Speech Technology Corporation of Santa Monica, Cali¬ 
fornia, is introducing a $495 assembled speech synthesizer 
also. This company’s approach to speech synthesis is a little 
different front that of Computalker and Votrax in that no 
CSR facilities are provided so that a user can create his own 
vocabulary. Fixed vocabularies of clearly understood words 
are provided on 2708 and 2716 EPROMs. These vocabularies 

Page 6 


range in number from 30 words to 60 words. It wasn’t clear to 
me how much these vocabularies would cost, except they’d 
be expensive. I asked the company representative if they 
planned to make any CSR software available and the answer 
was no. The only advantage I can see that this unit may have 
over Computalker and Votrax is that the speech synthesizing 
circuitry is not epoxy-encased. Perhaps this manufacturer, 
unlike other companies in the same field, might therefore 
make available to the public complete schematics of how an 
artificial voice is generated. 

Two established computer tablet companies, Summagraph- 
ics and Talos, are now entering the personal computing mar¬ 
ket. I personally think that tablets (sometimes referred to as 
“x-y digitizers”) represent a very exciting new peripheral for 
computer enthusiasts. In my opinion, tablets are much superi¬ 
or and more accurate than light pens to work with. However, 
it would take me several pages to explain why I personally be¬ 
lieve this. Maybe some computer club member might take 
some time at the next meeting to explain to interested people 
what a tablet can and cannot do for you. 1 should add that be¬ 
cause of the lack of tablet applications-oriented software in 
the microcomputer market, I cannot recommend these 
marvelous devices to everyone, especially businessmen and 
computer novices. 

Summagraphics told me that they manufactured all the 
tablets for all of Tektronix’s high resolution computer graphic 
terminals. I verified this claim with my company’s Tektronix 
representative. This really impressed me since Tektronix stan¬ 
dards are known to be quite high. I personally like the Summa¬ 
graphics tablet and have ordered one. Supposedly, it’ll arrive 
by January 15 of next year. I am obviously biased towards this 
product. You should take this into consideration in my brief 
evaluation of tablets. 

Summagraphics tablet is $555 and is called the“Bit Pad”. 
The resolution on this device is either 0.005” of 2200 x 2200 
lines or 0.1mm of 2794 x 2794 lines on an 11 inch square 
active area. You specify which resolution mode (inches or 
metric) you want when you order. I spoke to Bill Kiss, one of 
the designers of the Bit Pad, and he told me there is a jumper 
on the PC board which’U allow us to have either resolution 
mode. This is good to know especially since this capability is 
not described in their literature. Why Summagraphics didn’t 
incorporate a switch to allow a user to readily change modes 
is a mystery to me. 

The Bit Pad does not come with a power supply. This de¬ 
vice requires +5v @ 500ma regulated, +12v @ 70nta regulated, 
and — 12v @ 50ma regulated. There is an optional power sup¬ 
ply, which is an external one, that costs $95.00. It sort of 
looks like the external power supply on Radio Shack’s Z-80 
computer. For $30.00 you can put regulators onto the 
Summagraphics PC board to that you can tap the unregulated 
voltages directly off your computer power supply. 

The normal Bit Pad interface to your computer is through 
an 8-bit parallel port. Supposedly, the Bit Pad is a latched 
parallel device. Therefore, we should be able to use it with un¬ 
latched parallel devices such as Processor Technology’s 3P+S. 
(I sure hope the pulse width of the strobe signal is of the right 
length to allow me to do this.) 

There is an RS232 serial option for $125.00. I personally 
consider the serial and power supply options to not be good 
deals, and therefore did not purchase them. There is a $75.00 

Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


420 




single button cursor option which I did order. There is a little 
W' diameter piece of glass with cross-hairs on this device. Sup¬ 
posedly, this allows one to input x-y coordinates more accu¬ 
rately than with the stylus, which comes standard with the Bit 
Pad. I’m not sure how valuable this option will be, but I guess 
I’ll find out. 

At the show, Summagraphics had two Bit Pads on display. 
One of them was hooked-up to the latched parallel input port 
of Polymorphics video terminal interface (VTI) board. Two 
programs were demonstrated on the Poly setup: one of them 
was to decorate a Xmas tree with ornaments and the other was 
a paper keyboard. What’s a “paper keyboard”? Remember 
that in place of a keyboard, Summagraphics attached their tab¬ 
let to the input port of Poly’s VTI board. To simulate a key¬ 
board, Summagraphics drew a keyboard on a piece of paper 
and then taped it to their tablet. To enter a character, you 
touched the appropriate spot on the paper keyboard and the 
desired character would then immediately be sent to the com¬ 
puter! Of course, with a set-up like this, you could custom- 
make your own keyboards. The other Bit Pad was attached 
directly to a high resolution Tektronix storage display scope. 
You could draw anything you wanted to on the scope by 
moving the stylus on the Bit Pad. This proved that the Bit Pad 
resolution was high enough to draw circles and curves without 
any visible break in the figures. With the Tektronix demo, I 
discovered that when your stylus was outside the 11” x 11” 
active area of the tablet that zeros were sent to the computer. 
Summagraphics explained to me that this was not a flaw in 
their equipment, but the way it was designed. I was quite im¬ 
pressed with these demos. 

A tablet such as the Bit Pad is a marvelous input device for 
high resolution graphic displays. However, most hobbyists do 
not have high resolution graphic output devices (yet). Are 
there interesting things that can be done without a high resolu¬ 
tion graphic display? I think so. A bail-point pen cartridge can 
be used in the tablet’s stylus. (I’m hoping this ball-point pen 
cartridge is a regular one that I can buy inexpensively at any 
department store.) This will allow you to write. Therefore, if 
you had something like a multiple-choice questionnaire taped 
to the tablet, the computer could record the user’s responses 
and score it (if necessary) in real-time. With some software pat¬ 
tern recognition routines, it might even be possible to recog¬ 
nize characters (such as numbers, letters, or Oriental hiero¬ 
glyphics) printed on the tablet. There would then be little 
need to type-in user responses via a keyboard, which I person¬ 
ally consider an awkward input device anyway (especially for 
those people who can’t type). I have a friend, who is an ortho¬ 
dontist and who has also recently ordered a Bit Pad, who plans 
to try to use his tablet as a precise measuring device for deter¬ 
mining distances on dental x-rays. Even if we fail in our at¬ 
tempts to implement these initial applications, we feel that a 
tablet is such a potentially powerful tool that we should even¬ 
tually be able to find something useful and interesting for it to 
do. 

Commercial 11” x 11” tablets are several times more ex¬ 
pensive than the Bit Pad. I did a little research and found the 
costs of commercial 11 ” x 11” tablets from the following four 
companies to be: 

1) $3200 from Tektronix 

2) $2400 from Summagraphics 

3) $2500 from Talos 

4) $1600 from GTCO Corp. (qty 2549) 

The natural question to ask is why is there such a big differ¬ 
ence between the Bit Pad and its commercial counterparts, 
so I did. The answer I got was that the Bit Pad was not as pre¬ 
cise on input. Supposedly, there is a “one-point wobble”. If 
you try to input the coordinate from the same spot on the 
tablet several times, you won’t always get the same values. For 
example, one time the x-coordinate may be 1000, the next 

Number 20 


time it may be 999 or 1001. With a commercial unit, there is 
absolutely no wobble at all, but this additional reliability 
really costs a lot! Also the Bit Pad is a byte-oriented device. 
Everytime a coordinate is obtained, 5 bytes of information are 
sent to the computer. In commercial tablets, it is possible to 
send coordinate information to a computer like the IBM 370 
all at one time. I personally consider these “acknowledged 
limitations” to be relatively trivial for my purposes and con¬ 
sider the Bit Pad to be an excellent buy for the money. Of 
course, I won’t really know how good a buy this product is un¬ 
til after I’ve used it for a while. 

Talos offers a $495 assembled tablet called the “Personal 
One”. The resolution is only 256 x 256 lines on an 8 inch 
square active area. It requires two parallel ports: one for the 
x-coordinate and one for the y-coordinate. The input power 
requirement is 12v to 15v @ lOOma. I thought this device 
looked cheap and did not particularly like it. The resolution is 
too low and at $495 the price is too high. 

At the show, the Talos tablet was attached to an IMSAI 
which contained a Dazzler. The Talos software demo used 
Cromemco’s game of “Track” where the object of the game 
is to move a beam of light into the center of a spiral maze. In¬ 
stead of using a joystick as Cromemco does to move the beam 
of light, Talos used their tablet. When I played this game, I 
sometimes saw several random spots appear simultaneously on 
the TV when I inputted a single coordinate value. I asked 
Talos about this and they said random noise was being gene¬ 
rated on the AC line by the equipment of adjacent vendors at 
the show and that this was coming into the IMSAI. They said 
I wouldn’t have this problem in the privacy of my home. 
Maybe this is true, but I am skeptical. 

Talos also plans to introduce a $300 assembled color graph¬ 
ics board called the “DV-S100”. The “DV” is an abbreviation 
for “Display Video”. This product is briefly described in their 
literature. However, it was not shown at the show. This output 
device was designed to go hand-in-hand with their tablet. In 
addition to its color graphics capabilities, this board contains a 
microprocessor, two parallel ports, and software drivers in 
EPROM to operate their tablet and color graphics board. I per¬ 
sonally think an individual might have a hard time using the 
Talos tablet without this second product. 

The Talos people told me that they thought the color reso¬ 
lution of their DV-S100 would be 256 x 256! This is better 
than the color resolution on a Compucolor, which is 160 x 
192 on a 15 megahertz color monitor!!! One of my hardware 
friends was skeptical of this claim. He felt the practical resolu¬ 
tion on a color TV was about 128 x 128 since a color spot on 
a normal 5 megahertz color TV takes up 3 points. On a black- 
and-white Sanyo 4092 monitor (which a lot of us hobbyists 
own), the maximum number of horizontal points is about 400. 
Maybe our skepticsm is based on ignorance of color graphics 
technology (& lack of a working demo) and is therefore un¬ 
justified. Anyway, this product supposedly will be available in 
January. If this product is for real, I would seriously consider 
getting it. I would like to have a higher resolution computer 
graphics interface to replace my Dazzler. 

Now for some miscellaneous information. At the show, I 
saw Micro Peripherals. Micro Peripherals is a new floppy disk 
manufacturer in Southern California. There are so many 
floppy disk manufacturers here that I’m tempted to refer to 
my section of the country as “Floppy Flats”!!! Anyway, 
Micro Peripherals had a full page advertisement in the October 
1977 issue of Byte. I asked them when their S-100 minifloppy 
system would be available and they said about three months. 
Therefore, they might start delivering in March. I’m personally 
a little wary of this company. I think they may have entered 
this market a little too late. 

After the show, I checked-up on Associated Electronics of 
Fullerton, California as requested by Dick Tillbrook in the 

Page 7 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


421 



M1CROFLOPPYTM disk drive with double 
DENSITY RECORDING INTRODUCED AT NCC 


news release Received: 77 Jun 18 

DALLAS, Texas--The first flexible disk drive for 5-Vi" diskettes 
to offer double density recording of 250,000 bytes on each side of a 
diskette, was introduced at the National Computer Conference here 
today by the Pertec Division of Pertec Computer Corporation. 

The new drive, designated the Pertec Model FD200 MicrofloppyTM, 
is mechanically and functionally interchangeable with the diskette 
drive introduced earlier by Shugart Associates but permits writing 
on 40 tracks versus a 35-track limit for the Shugart SA400 unit, in ad¬ 
dition to the double density feature. The Pertec FD200 also allows 
recording on both sides of a diskette, whereas other units are limited to 
one side, according to Pertec. 

Both the signal interface connector and the dc power connector are 
compatible with the Shugart equipment, and mounting holes and out¬ 
line dimensions are the same. 

The complete FD200 measures just 5.75” by 3.25" by 8" and is 
priced to be competitive with small tape systems such as the Philips or 
3M mini-cassette drives. As a result, applications are expected in many 
types of intelligent terminals, data capture devices, personal computing 
systems, word processing units and other applications where very com¬ 
pact, low-cost data storage with random access is desirable. 

Aside from added capacity and two-sided data recording, the Pertec 
FD200 reduces interface electronics to a single circuit board using 1C 
components. Other manufacturerers' units typically use two circuit 
boards and discrete components. The single-board approach is expected 
to reduce spares stocking requirements and simplifiy field maintenance 
for OEM customers, as well as improve overall reliability through the 
reduced components count. 

Up to four FD200 drives can be "daisy-chained" on a single 34-line 
ribbon cable. 

The new MicrofloppyTMdrive also employs an IBM-compatible 
read/write head with "tunnel erase". Head life is estimated at 20,000 
hours. A special design feature prevents the head from disengaging from 
the positioning cam mechanism. 

The FD200 incorporates a molded plastic faceplate and door. Light 
emitting diodes on the faceplate indicate the drive that has been se¬ 
lected. As with Pertec's larger FD400 and 500 models, the new unit 
conforms to ECMA standards. 

Formatted capacity is 102,440 bytes per side. The data transfer 
rate of the diskette drive is 125,000 bits per second;average access time 
is 463 milliseconds. Recording density at the inside track is 2580 
bits-per-inch. 

The FD200 operates with standard 5- and 12-volt dc power supplies. 
Power dissipation is 15 watts continuous. Meantime between failure is 
rated at 8000 hours with typical error rates of 1 per 10 8 bits for "soft" 
read errors and 1 per 10* 1 bits for "hard" read errors. Write-protect 
features are incorporated in the design. 

The new FD200 Microfloppy i™*disk drive is marketed to OEM 
users by PCC/Pertec and will be incorporated in both OEM and per¬ 
sonal computing products offered by Pertec's Microsystems Division. 
Delivery of sample quantities is slated for August 1977 with production 
quantities expected in September. Unit price of the FD200 is $405. 

For further information on the new floppy diskette unit contact 
PCC/Pertec, 21111 Erwin Street, Woodland Hills, CA, 91367; phone 
(213) 999-2020. 


December issue of the Amateur Computer Group of New 
Jersey newsletter. Dick had sent in money to this company 
several months ago for a 16K memory board and has not heard 
from the company since. I visited their “office” and this com¬ 
pany is no longer in existence. According to neighbors, this 
company went out of existence in the beginning of November 
1977. All kinds of people are supposedly after them for 
money. I’m telling you this because Associated Electronics has 
a full page ad on page 109 of the January 1978 issue o{Kilo¬ 
baud. Don’t buy anything from this company!!! I’ve already 
written to Dick and told him what I’ve found. I hope he can 
get his money back, but I doubt it. I understand how the poor 
guy feels. I’ve been there... 

Sincerely, 

Kenneth Young 

Page 8 



A SELECTRIC TERMINAL FOR THE 
HOBBY MARKET 


News Release Received: 77 Aug 18 

Anderson Jacobson, Inc. (AJ) plans to enter the hobby market with 
a professional quality I/O terminal at a price attractive to the serious 
hobbyist. 

Originally selling for over $4,000, the AJ 841 is an IBM Selectric 
terminal and off-line typewriter that has been completely refurbished. 
It includes a built-in ACVII interface and numerous other features 
attractive to the professional and hobbyist alike. 

Anderson Jacobson plans to sell this unit through the medium of 
direct mail for an introductory price of $995 plus a small shipping 
charge. The standard price of the unit is $1195 plus shipping charges. 
The terminal is fully warranted for 30 days. 

Customers will be able to pick up their terminals at specified AJ 
service locations where units will be thoroughly tested before delivery. 
These locations will also provide warranty or repair service as required. 

For further details contact $teve Tritto at Anderson Jacobson, Inc., 
521 Charcot Avenue, San Jose, CA 95131, (408) 263-8530. 



The Pertec Model FD200 Microfloppy is the first flexible disk drive for 
5-1/4" diskettes to offer double density recording of 250,000 bytes on 
each side of a diskette. 

Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


422 











HEATHKIT’S H-8 

A Consumer’s View 


Copyright, 1977 
by Paul R. Poduska, PhD 
114 Warwick Street 
Lowell, MA 01851 
(617)453-2904 


Editorial Note: If nothing else, the Heath H-8 system is 
certainly sparking a great deal of comment. To those who may 
have missed it, we refer to the “H-8: Pro & Con” article in 
Dr. Dobb’s no. 19. Here now is another offering from a 
user who seems quite pleased with the system-TR W 

Microcomputers—that is to say, microprocessor-based 
computers-have, over the past several years, evolved into 
several rather distinct species: the single-board small system, 
the mother-board-based medium size system, and the full 
mainframe system. Within this last group, buyers can find 
several different styles or mainframe configurations. Some 
models have elaborate front panels with rows of toggle 
switches and LED indicators, others have no front panel 
devices at all, while still a third group incorporates numeric 
keypads and seven-segment LED displays. 

None of the main-frame types is a priori better than the 
other. Each system has its own assets depending upon the 
kinds of uses to which it will be put. And, in this regard, the 
Heathkit H-8 eight-bit microcomputer might be viewed as a 
truly general purpose system. By this I mean a system which 
has wide applicability to a broad range of users as well as 
functions. From the outset it should be made clear that the 
H-8 is not intended to rival machines which can process 
COBOL programs. Nor is it intended for extensive timesharing 
applications or dedicated use in manufacturing applications. 
Its appeal lies in its usefulness in general purpose applications— 
that is, for the non-scientist who may want to build and 
operate his own personal computer, or the scientist who may 
need a small yet rather powerful system for his or her lab¬ 
oratory work. With this in mind, I will give my views as a 
consumer of this fine product. 

The front panel of the H-8 has been designed to provide 
users with easy input and output of data and system control 
commands. The nine seven-segment LEDs display octal code 
(split-octal to be exact) which is typically easier for the 
beginner to learn and use than hexadecimal code. Similarly, 
all data and control words are entered in octal code through 
a convenient four-by-four keypad on the right-hand side of 
the panel. Both of these convenient I/O devices have a number 
of user-oriented features which make the system easy to 
access and understand. 

LED Display Capabilities: 

• Display of register pair contents, 

• Display of accumulator and flag register contents, 

• Display of any memory location and its contents, 

• Display of the program counter or stack pointer, 

• Display of input and output ports and associated 
data, 

• Display of cassette tape data record types, 

• Display of data and addresses during input from 
tape, 

• Display of remaining blocks to be output during 
a dump, 

• Display of any program running activities, e.g., 
the contents of registers or the program counter, 
and 

• Display of user generated patterns 

Number 20 


On the input side of the front panel, the console keypad 
provides the user with the following functions: 

• Input of octal characters, 

• Designation of display registers, 

• Designation of memory locations to be displayed, 

• Input of memory locations/data to be altered, 

• Increment or decrement the memory location 
displayed, 

• Altering of register contents, 

• Control of the program counter, 

• Display or alteration of accumulator contents, 

• Cancel any keypad input, 

• Load or dump from or to any desired port, 

• Execution of a stored program, 

• Single step through a program, 

• Hard restart which resets the system logic (see 
below), 

• Soft restart which stores the contents of the pro¬ 
gram, registers and accumulator on the stack, 

• Keys to enable input of decimal data under special 
control routines, and 

• Input or output of port numbers and data. 

Taken together, the numeric keypad and octal displays 
provide users with full control of the system. There is no need 
to interpret the rows of single-element LED bit patterns found 
on other main-frame systems. Similarly, the user does not 
have to go through a binary-to-octal translation process to 
enter data into memory location or registers. It has always 
amazed me why this design was not adopted from the outset 
by other small systems manufacturers, for it is much easier to 
use and would seem to have much broader appeal than the 
toggle switch, single-led indicator approach still in use. 

Perhaps the reason why the H -8 is the first system to incor¬ 
porate such comprehensive features is that the firmware that 
is needed to operate these features is costly to develop. Here 
I am speaking of the system front panel console monitor for 
the H -8 which is stored in IK of ROM on the front panel 
control board. The ROM contains a very sophisticated set 
of systems utility routines which do everything from providing 
keypad debounce logic to calculating parity checksums for 
tape input and output. Designed for Heathkit by the Wintek 
Corporation, the ROM monitor not only includes a real-time 
clock, but also provides the user with access to a number of 
memory control cells located in a small portion of the user’s 
RAM. For example, you can disable the display update by 
storing the octal value “002” at memory location “.MFLAG” 
(040 010 split octal) and then display any bit pattern you 
desire in the nine LEDs by storing appropriate octal values 
in the display segment control memory cells (040 013 through 
040 023). Or, you can turn on the horn, which is a convenient 
built-in speaker for user feedback, by executing a simple 
assembly language program that loads the speaker enable value 
of “160” into the “CTLFLG” (Control Flag) memory cell at 
“040 011”. (This should be done from a program because 
altering the contents of CTLFLG from the front panel disables 
front panel input of the last two octal digits and thereby 
prevents access to the system). 

Page 9 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


423 




The ROM monitor also includes routines for inputting and 
outputting data through the cassette interface logic on the 
serial interface board via the USART (Universal Synchronous/ 
Asynchronous Receive/Transmit device). This feature provides 
the user with easy access to the USART status register from 
the front panel via the port input keypad command as well as 
the ability to output blocks of data during a tape dump with¬ 
out having to set up the software to control the USART. 1 
could go on and on about the many advantages of this 
integrated design. At this point, however, it seems sufficient 
to state that the front panel LEDs and keypad in conjunction 
with the ROM monitor provide a very efficient and effective 
(that is, “user-oriented”) structure for operating the H-8 even 
without a teletypewriter or CRT I/O device. 

At this point it might be interesting to consider what the 
buyer gets for his or her dollars, since I mentioned the cost of 
designing such an integrated system previously. Here is a com¬ 
parison of the H-8 with a “typical” competitor: 


The H-8 

Brand "X" 

9 seven-segment LED displays 

30± single LED indicators 

Data/Control Keypad 

Rows of toggle switches 

10-slot motherboard 

22-slot motherboard 

10 amp power supply 

28 amp power supply 

Resident ROM monitor 

Optional monitor in user 
RAM 

8080A CPU 

8080A CPU 

50-pin Bidirectional Bus 

100-pin Unidirectional Bus 

Not compatible with S-100 Bus 

Uses S-100 Bus 

Easy access to system data 

Somewhat difficult access to 
system data 

Switch selectable operation for 

110 or220VAC 

110 VAC only. 

Audio feedback for user 

None 

Fully assembled and tested 

CPU board 

Unassembled, untested CPU 
board 

Quiet, convection cooling 

Fan-cooled 

Superb instruction manuals 

Archaic instruction manuals 

Fully tested and operational 
software 

Unreliable software (as 
reported to me by owners 
and dealers) 

Above-average operation manuals 

Sketchy operation manuals 

Clear assembly instructions 

Confusing instruction 
manuals 

Full factory service and warranty 

Limited service and warranty 

Low-cost peripherals that work 

Rather high-cost peripherals 
that often do not work 
(again as reported to me by 
owners and dealers) 

Price: $375 

Price: Over $800 


The above is just a brief summary comparison but does tell 
a lot about the buyer’s dollar value. If you must have an S-100 
bus system, then price is not an issue. But if you believe, as I 
do, that many companies will be coming out with H-8 com¬ 
patible boards and need dependability, reliability, and a cost- 


effective system, then the H-8 would seem to be the best buy. 
Not only does the buyer get superior hardware and hardware 
manuals, but he/she also receives without charge a complete 
software system with excellent manuals. Included in the soft¬ 
ware package are the following: 

• “PAM-8”, the front panel console monitor. A full 
listing of the ROM monitor is provided for users 
who may need to utilize its sophisticated features. 

• “BUG-8”, the software debugger program which 
provides users with easy access to and ability to 
examine and modify “core-resident” programs, 

• “TED-8”, the H-8 Text Editor, which is useful for 
writing assembly language program source code or for 
any personal text editing projects, 

• “HASL-8”, the 8K assembler which provides users 
with a rather sophisticated set of assembly language 
commands for developing 8080A source code pro¬ 
grams, and 

• Benton Harbor Basic, an 8K Basic incremental com¬ 
piler which incorporates many sophisticated features 
not found on other systems. 

All of the software is interlinked with the front panel monitor 
through the IK ROM, which provides users with console 
routines which are used throughout all of the software (e.g., 
tape dump). 

If the reader thinks that I am working for Heathkit because 
of all the positive statements that I’ve made thus far, then 
he/she should know that I don’t. The H-8 is just a very well 
designed, well executed product that cannot help but sell 
itself. It goes way beyond being a slick image of a computer 
which is very important for the inexperienced hobbyist or 
first-time user. 

But what would a story be without some disappointing 
parts? Here are a few. It is unfortunate that the text editor and 
assembler were not linked together (or user linkable through a 
linking loader). There are often times during the course of 
writing and editing a program that the user needs to go back 
and forth from one to the other until the final program 
runs. The repeated process of going back and forth from the 
text editor to the assembler is annoying and could have been 
prevented if they had been designed to be linked in core 
(user RAM). 

A second misfortune is that the text editor runs in either 
upper or lower case, but not both. This is a real minus for 
anyone who wants to do serious text editing of manuscripts 
or who just likes to see better system software design. The 
problem also extends to the Heathkit H-9 Video Display 
Terminal which cannot use both upper and lower case charac¬ 
ters. I can’t help but hink that this must have been an over¬ 
sight (of major impact) of the software/hardware designers— 
a costly one. 

A third problem for anyone who is a moderately adept 
typist is the annoyance of “command completion”, a feature 
used in all H-8 software. For the novice who can’t type fast or 
the expert who hasn’t mastered the keyboard this feature is 
nice. But for those who are used to computers in one way or 
another, or who can type, this “feature” is a real drawback. 
How many times I’ve had to reenter a line of text or program 
because I typed a “RUN” instead of “RU”, the result being 
“RUN N”, because the system adds (completes) the 
command with the last “N”. Hopefully Heathkit will offer a 
second version of their software which will let this “feature” 
be an option. 

A fourth (and last) regret is that the H-8 IK ROM monitor 
could have been expanded to include operating system 
commands which would have made software handling much 
easier. Similarly, I would have liked to see more than two 
bytes of RAM for the real-time clock so that these bytes 
could have been used directly for a twenty-four hour run- 


Page 10 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


424 



INFO 2000 DISK SYSTEM FOR HEATHKIT H8 

Press Release Received: 77 Dec 23 

INFO 2000 Corporation, announces availability of a disk 
system for Heathkit H8 computers. The complete INFO 2000 
Disk System includes PerSci Dual Diskette Drives, power sup¬ 
ply, case, intelligent controller, adapter, cables and disk moni¬ 
tor in EPROM. The INFO 2000 Adapter Board contains the 
Z80 microprocessor and all support chips, 7K of EPROM, IK 
of scratchpad RAM for the Disk Monitor, and all necessary 
logic for interfacing the disk system to the Heathkit H8. 

With the addition of the INFO 2000 Disk System and in¬ 
stallation of its Z80/Disk Adapter Board (by simply plugging it 
in) the H8 computer can operate in either of two switch- 
selectable modes. One mode enables continued use of the H8 
EPROM monitor with the existing Benton Harbor software. 
No modification is required, and the H8 will perform at Z80 
CPU speed and use the Z80 instruction set. 

The second mode supports the INFO 2000 Disk Monitor, 
and other software adapted by INFO 2000 for use with all 
their Disk Systems, including the TDL software library and 
CP/M. 

INFO 2000 Corporation offers individual consultation re¬ 
garding their Z80 Disk Systems. Dealer inquiries are wel¬ 
comed. Cost for factory assembled and tested 2000 Disk Sys¬ 
tem for Heathkit H8 is $2,750. Contact INFO 2000 Corpora¬ 
tion, 20630 S. Leapwood Avenue, Carson, CA 90746. Tele¬ 
phone (213)532-1702. 



time clock. Hopefully (again) Heathkit is making plans to 
come out with a second version of their ROM which will add 
such goodies. 

Overall, and in perspective, these misfortunes and 
misfeatures are not serious at all. They do not in any way 
impair my ability to use the H-8. But they would enhance the 
system’s utility considerably. The important services have been 
provided in a well designed package at a very reasonable cost. 
We can look forward to seeing (I am told by Heathkit) an 
excellent microfloppy disc system next year (’78), A to D/D 
to A converters, new Video Terminals, software packages, an 
EPROM board, and probably a host of devices for ham radio 
buffs who are also using RTTY systems. I still have not heard 
a thing from the HUG (Heathkit Users’ Group) although they 
were quick to cash my membership check over a month-and- 
a-half ago. But these are new services bing provided by Heath¬ 
kit, and like the somewhat inconsistent hardware service at 
many of the stores, will, I am sure, be resolved in the near 
future. All in all, Heathkit’s initial venture has been one of 
excellence and in keeping with their long history of quality 
electronic kits. I am sure that all of us will be hearing a lot 
more from and about their computer products for years to 
come. 

Number 20 


DIABLO TO 8080 INTERFACE CHALLENGE 

Dear Jim; Received: 77 Nov 28 

I am again standing in need of assistance. Having just ac¬ 
quired a Diablo series 1345 HyType II Printer, I am in the pro¬ 
cess of interfacing it to my Processor Technology SOL 20 with 
32K of memory. 

In order to get it operating as quickly as possible it will be 
interfaced initially as described for the “Qume” by Jef Raskin 
in the September issue of SCCS Interface using a software 
driver. Hopefully, I can later get a copy of the driver that is 
said to be available through the Intel 8080 Users Group. 

This kind of interface will not fully utilize the potential of 
this printer, especially for graphics, and will also occupy a con¬ 
siderable chunk of memory. In order to more fully utilize the 
printer’s potential and to minimize I/O pin assignments to a 
PTC 3P + S Module I would like to purchase, construct or 
otherwise acquire a set of PC boards which will plug into the 
two spare 56-contact sockets on the printer motherboard. This 
would then comprise an 8080 terminal microprocessor and 
interface similar to the Diablo HPR02 and 8080 Interface and 
would in effect convert the printer into a complete terminal 
with pretty extensive capabilities. The very expensive set of 
boards available through Diablo also converts the many wire 
parallel interface into a five wire RS-232 interface. 

This type of printer has recently become widely available in 
volume on the surplus market. It would seem to me that it 
may well be the wave of the future for the serious hobbyist. 
Such a PC board set might make a good series of articles for 
Dr. Dobb’s Journal especially if accompanied by a soldertail 
PC board kit. There isn’t room for wire wrap. 

It is possible that some-one has already done this. If so, I 
would like to get into contact with him. Failing that, with 
some-one who is interested in developing such a board. Any 
advice that you can give or assistance that you may be willing 
to offer will be greatly appreciated. 

Sincerely, 

Peter Nevius 2419 Brookshire Drive 

Schenectady, NY 12309 

Editorial Note: There you are, hardware hackers. Anyone out 
there care to take up the challenge? -TRW 


A NOTE FROM DAY ON DMA 

Received: 77 Nov 28 

As Peter Traneus Anderson points out in his letter 
published in the August 'll issue of DDJ, the usual way of 
doing DMA on a microprocessor leaves considerable room 
for improvement. This is especially true in the case of 
machines using the S-100 bus, which really wasn’t designed 
with DMA in mind. Fortunately, so far as I know, no one is 
under any obligation to implement DMA in such an awkward 
and inefficient manner. 

Many alternative schemes are possible, almost all of which 
are better than those currently in use. For example, one could 
use interleaved memory with odd bytes in one physical bank 
and even bytes in another. Then the MPU and a video display 
could both access memory with minimal delay. For other 
memory access techniques, see Don Lancaster’s forthcoming 
book on video displays. 

Jim Day 17042 Gunther St. 

Granada Hills, CA 91344 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 11 


425 




AKIM-1 DISASSEMBLER 


Received: 77 Oct 28 

I have just got my KIM1 up and running with a FORE¬ 
THOUGHT motherboard kit, and an 8K ECONORAM kit 
from GODBOUT. I was impressed with the quality of both 
kits. The ECONORAM kit was a little too crowded. I had to 
unsolder some of the despiking capacitors that were too 
fat to fit between the 2102s. Next time, I will put the thin 
ones in these locations. 

My first job was to get “A 6502 DISASSEMBLER FROM 
APPLE”, 0DJ VOL 1 no. 8) to work. I had more than a little 
trouble, till I discovered that the KIM1 Outch and Prtbyt 
routines were clobbering the Y register that the disassembler 
was using as a counter. You might like to publish my version 
of this program which is enclosed. If anyone wants to avoid 
the problem of hand keying it in, I would be glad to furnish 
a copy on paper tape for $1.00 or on cassette for $3.00. 

I am mainly interested in engineering applications. I would 
think that the micro computer is so cheap now that it would 
displace many applications now on time-sharing. Of course, 
the answer is in the cost of programming. That is where we 
computer buffs could perform a real service and have a good 
time doing it. Time sharing is good but the overhead is high. 
There is nothing like having your own computer right there 
when you want it. 

1 would like to use BASIC, but I fear it will be too slow 
for some of my problems. For example, a single problem in 
PIPE STRESS may need to invert a 6 X 7 matrix 20 times. If 
we could only debug with a small problem on BASIC, and 


then compile the source tape into machine language for 
running large problems. The construction of such a compiler 
is far beyond my capability. Does anyone market a BASIC 
with floating point, and arrays that will run on my KIM1? 

To work on any big engineering program, you need at least 
two people. One must be knowledgeable with the problem. 
You need feedback in working up the documentation, and in 
other ways too. I am 70, retired and available. I have a degree 
and 40 years experience in mechanical engineering. I can run 
a typewriter. Let me know if I can help you with a problem. 
I submitted the following programs to the DECUS library: 
PIPE STRESS, CRITICAL PATH METHOD, REGRESSION 
ANALYSIS, BUILDING HEAT LOSS. Having only 4 K of 
core on my PDP8f that I recently sold, BASIC was out of the 
question. Having no feedback from anybody, my documenta¬ 
tion was bad, in spite of very great effort. 

Very truly yours, 

Theodore E. Bridge 54 Williamsburg Dr. 

Springfield, MA 01108 

PS In writing the above mentioned programs for the DECUS 
library, I made good use of a FLOATING POINT INTER¬ 
PRETER in the DECUS library. It uses much less memory 
than BASIC and runs very much faster. Would anyone like 
to help me write a similar interpreter for my KIM 1 ? I worked 
up a trace routine for the interpreter. I grant that debugging 
with BASIC would be much easier. Also only a few people can 
communicate with you if you are using your own interpreter. 
However, a BASIC interpreter is not really useable on a very 
large engineering application. 


u U 

Cj - C) C) v.. c; CJ l. 
C' C.; <r ui y y 

L, 1.1 Ul Itf t'j Li 



Ul <f ui L 3 

f- ui \o <; <£ a, y 

CJ eJ c. u.' CM -* CJ C- ul y 
t, u ill ii 7 O J H -1 
bl oi 4* Jl !/) c) bl xu 


n < i; u, u. u. cu ui u. u 

U w i> n <1 W Ifl u 14 

cu (*} cu Cji cu cj o n cu r> 

u Cm u q c C Cl c c c, 

Ul lA .1 t) uO U> b I L-l I/I U) 


c» OJ 

O' u. 

Cu CJ 


u) 

o 

cu 

o 


< U. U CU CU vO 

ul UI CJ CU L) 2) 14 tl U 14 Ul 

cj o on cj in y cu < o cm ud o cj 

Cj CiWusTsTurtCjidviCi Cm 

t/1 Ul % ul to fc, 1>) « fl Si u Ul ul 


y 

ul 


CO ul 

U* Ut 

ID CU y CM 

>T Cm >f ui 

Ul u) bO Cl 


v. <i, <*, < >• _i _i j >• 10 u ,j. v u u N *4 >• u w t, 'll «uc W j u < i . si u W w u. W C W <i fl, 4 2 < n, < u ^ < ft X W 1/1 <C O >. x j ^ U O >. w h p. 

•2 I h J h U fl Cl c O 4 r>l « 4 ‘'iu U ^ J W U r; u u Cl «1 5 Ul U a Ul U 14 Cii 4 7 h 1 /) C L 2 2 >• OJ >; 2: U vi C 4 Ul «D U C'l Q O C <1 Ugl- QUQiic.lyUUp.hhis. 

hjtijuljj'. i.i,Ui4CTi4lJ > 5jUuij,.ijUjWTi4iJ4:MlJTJ4Tt.lGuT( HnwhTt'TJTJJTJTJJ*lUliil,JOiJhi£mc:aHL(i. p. 


M 

O 'll O O W III t) C. CO u. OJ U <r O O lM - 14 U M 4 O'-, CU CJ Ul U, cu 111 CO cu Ui CU — <2 c; Q ic ul 4 u U ill O Cl tu CO — ID -- y — 

iii c 0 >i u c s j u.u 4 u. uni! o c. « <r ci >j i 4 <r « 14 icycici 4 ifiu.i 4 Q u. ici ul u co cu y y u vi ui ci u; 14 u, y y cu y o 


r\i n 
q a a 


u- a 4 i c> u ) O' t. 'U 'll < CO c. a c. 'li V. u CO U Ci N U 1/1 O' - Cl C. CO e- O O |J Ci U Cj Cl 4 . U CJ Cl b; Oj S a: CC C.' si; U O' CJ in vO O' CJ CiJ O' Cl j; S Cl If) Cj y < Cl CO in L CO CJ u tu 

< u co w ai c; u, ^1 w cu c u m cj u u cu < ui u c, u < o « w cvi co u ci O' til w u u cu u u» ci cj u; id ui o cmm co y <* 6i ^ <i: w co <1: u; cj o a -o u; o <i < - ej vo o' o o y ci 


I I I I I I I I I I I I I I I I I I I I I I I 

n y h 0 u i4 c. co y <0 ^ to cl u it, cii cm iii h o> Ui ul u 

t- t- c- r- c- co Kjwe'cocowcocoo'O'ai^ao'O'C'u; 

CJ "J CU Cu <jJ CJ CU CJ CJ CU cU CU CJ cu CJ CU CU CU CU vU OJ CU CJ cu 

D C» tti 6. Ll C. ei U M G G C Cu B U C S O t. Q 6, CJ Cl Q 


— 'inr- ■-luiu.-'iM^uu.c. wrivOMc«iuuii,6icjinto<i;uiu-yioo)Uuwu.-'CuyifiM»<i;uauii, 

^Ci'i'I'.CsCJuUl.iwUOOOOUUOOUUQCjljJUODUjlliJWUWUliJu.kt.-, ku-LU-LkLU 
CU CU CU 04 CU CVJ CJ Cvj CU CU CU OJ CU CU CU CJ CJ CU CJ CU OJ CJ CU CU CU CU CU CU CJ CU CU CU CU CU CJ CU CU CJ CU CJ CU CU CU CU CU OJ cu 01 CU CJ 
Q U U C tl U k. 1 CJ y c. !j! t) O C. ti a O U L CJ ij Q C3 U fc) £ 61 O L 1 O b Cl ul a U U Ul l: B iii B O O O CJ G a & G c. 


w p F 4 

u >• <D 
U z: 4J H 
u 

_ y. W >- 
o < u 

L 14 M U 
L. O U 

I- 1 Ul 

w ^ O 

J 

u -1U 

ti'oSui 


X o 

Ui "3 CJ 


t; 


■h n co at o 


a: co ra u. — 1 


- vO cj cj y 

1 y d ui 0 

; VI Cl wl v 


01 cu cj r~ cii 
CU CU CU Cu CO 
G b) Cl w /> 


to o Gi - 
(b <r y 
'I <4 » Ul 


V W - ul 

V. CJ CM CU — 

•- cj bO ftj y 


in o y vo 

OJ c- u CJ 
C> bl wi CJ 


■J, L u l.. cl U ul u <4 >1 U U. I/I u. 1 

Q t- UI In u h 14 1/1 Q c; t/l O l/l U " I 

; j cm ti o, u iil t j 1- 4 u j ui 0 1 


.Uc!LJCi*iiiLLu; 

U^LIKUOI/IUIJI 


I., QWs.OccJttCiCtIb 

J I g . . Q . £ 3 £ s; 


^ x I 

—■ •— > r ^ ^ C. I 

JJFJuiC,IiihcFFJUi 


■ u 6. c; <t s k. > y 1 u < «. u; t: >- >. 

i u Cl i/l U U r> ; U 2 X kj 10 U Cl D. 7 , 
14 J JOUlilHUGli. JO J1UH 


o x > . o < 

U Ul u. O J 
11 JUJ 0, 


J X +■> 
l_) l_J 0 ) 

a. a. in 


O' CM CJ 0 * CJ 


u. y cj cj 
CJ CO Cm 


•j j isi y 


i'-.'J.SSO'WU(jiu,i-iuiO'U/cOO' < ScOClNQ'Jliij;<o.CJfciCO(D' CO 
lyyyycuuctctctUcocuffio'Cuclo'JluJii.yo'yyucoCiUciuy 


y ul cj id y 1 

— til CU Si -y CO ( 
HI CU <£ CU O U ( 


.. . ) I • I I I I, 1 >» i I I t I I, ■ 1 I I I I I I I I I I I ■ I I I j I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I 

yi/iuijcC' i F<;uHuiuif)Fca(MJUWcic«jy'OFtofflQidi 4 ia'' comc^o>'tuju.-.oy'or-co^;G>uu, — ojcoin\ocoo' < 3 ;ut)u,oiy 0 'o«ioulcjcu 
y y id o u w c; cj o ci - « « « - - - cicn cu cu w c«i cj 01 c\i w co 0 to o n n co n to y y y y y y y y y y m 1/1 m in u u u> u> m id ui no c- so uj uj uo no o- o- 


Page 12 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


426 


more 



KICKING THE 8080 HABIT 

Received: 77 Oct 17 

Maybe it’s just my imagination, but it seems that a lot of 
people aren’t utilizing the Z-80 to its fullest. Everyone is so 
used to writing code for the 8080 that they don’t seem to 
bother upgrading their software when they upgrade their 
CPU. Or maybe, as in my case, since we’ve been eating and 
sleeping in Intel Octal for so long that we just can’t seem to 
catch on to all the enhancements of the added Z-80 functions 
and instructions. I would like to see you guys (or, someone 
else) come out and explain all the nifty Z-80 tricks. I know 
I can’t be the only one that is stuck in the rut of 8080 code. 
(Please!! Don’t tell me I swapped my CPU board JUST for 
speed—the software potential is fantastic.) 

Michael Settle 751 Washington #115 

Arlington, TX 76011 

How about it? Anyone care to send us something on “Taking 
full advantage of Z-80’s inner mysteries”?-TR W 


MICROCOMPUTER SOFTWARE INDEX 

News Release Received 77 Nov 28 

A great quantity of software has been published in micro¬ 
computer books and magazines since late 1975. These pro¬ 
grams range from complete BASICs to assemblers, routines, 
games and direct application programs. 

The Schreier Software Index, An Index to Published Micro¬ 
computer Software, indexes hundreds of published microcom¬ 
puter programs. The SSI contains cross references and over 
130 program divisions. Many of the cited programs specify 
chip description. In addition, the S S I features complete pub¬ 
lication documentation and bibliographic data. Locating a ran¬ 
dom number routine for a 6800 or an 8080, for example, 
takes but seconds. 

Direct orders may be placed with SSI, 4327 East Grove 
Street, Phoenix, Arizona 85040. Price postpaid in the United 
States, Mexico and Canada is $5.00. The S SI is also available 
from a number of microcomputer dealers across the U.S. 


u:lel chances it'.t acllc to save 

THE Y r.ECISTET VKEN CALLING 
KIM F0UTIMES Ol'TCH S, PETEYT 


KIM 

KCC SP G 


E2LC- 

26 

66 

62 

JSF: 

56206 

begin 

63DF- 

4C 

4F 

1C 

JMP 

51C4F 

start 

63 Li¬ 

84 

tt 


STY 

SEE 

savey 

te E4- 

20 

A0 

IE 

jsf 

5 1 EA6 

outch 

63E7- 

A4 

EE 


LLY 

SEE 

gaty 

02E9- 

60 



FTS 



G3E/- 

84 

EE 


STY 

SEE 

savey 

0;3 EC- 

20 

3E 

IE 

JSF 

S 1E2E 

prtbyt 

03 LK- 

A4 

EF 


LEY 

SEE 

gety 

62F1- 

6fc 



r TS 




THESE ATE THE TABLES 


KIM 

63DC 26 44 
0044 F2 DC. 

00 45 0 3 3DC 
63DC 20 17F7 

17F7 FF DC. end of tables 
17F8 FF 63. 

1739 LA £366 start of tables 
6366 45 C 

J 18' 366450 3D6C84PP9 36224 5 2 3D6C C4CP946624533D0684609466 6 658/'. 
;1 St 31840L6E66646C6E6224433D08 C44C61 12244 33D68C449A 16226782 
J IRC- 32F4433LCP84CC9 1 6224433D6 6846 09 62 1 2 73A9662 18 18206066667 
J 1 o £ o48 59 4 D9 19 28 64AA 59 DA CA9 AC A3Ao A4L9 6 6 D8 A4A46 6 1 C8 A 1 C 2 3£C £ C 
;16C3665D6E1LA19D8A1D239D8E1CA16G2919AE69A8192224531E23685L 
S 186378245219 A1661A5L5LA5692424AEA.EA8AD296 6 7C06159 C6D6028 5E 
;186396A569295384123411A56922A6D8625A48266294885444C8546A16 
J 18 63AC 6844E89 4C £E4£ 83474L428 6E74F4CC4A72F2A48 At £A*AAi2A26 CE7 
■>1S63C£747474724468E232L.2CC22£C1A1A26P072'7288C8C4CA2648C997 
; 180 3L64444A2C8266C.C24C4F1C84EE2CAC 1 EA4EE6684EF263L 1 EA46A8F 
i 06666A60PA 


VDM-1 DRIVER MODS by John Moorhead 

Received: 77 Dec 2 

0005 * THIS IS THE VDM-1 DRIVER ORIGINATED 
0010 * BY LI CHEN WANG (DR. DOBB'S JOURNAL, 

0015 * VOLUME #1, ISSUE #6). 

0020 * 

0025 * MODIFIED TO INCLUDE SPEED CONTROL AND 
0030 * GENERALLY EMUIATE THE SOFTWARE DRIVER FOR 
0035 * PROCESSOR TECHNOLOGY'S VDM-1 VIDEO DISPLAY. 

0040 * THIS PROGRAM WILL ALSO ACT AS THE DRIVER 
0045 * FOR SOLID STATE MUSIC'S VB-1 DISPLAY. 

0050 * 

0055 * WRITTEN BY JOHN MOORHEAD, 928 J STREET, 

0060 * DAVIS, CA. 95616 TEL NO 916-758-2495 
0065 * 

0070 * MAY 5, 1977 
0075 * 

0080 * BACKSPACE = CONTROL H OR B.S. KEY 
0085 * SCREEN CLEAR = "CANCEL" = CTRL-X 
0090 * AUTO CRLF ON INPUT OF A CARRIAGE RETURN 
0095 * CHANGE SPEED BY TYPING NUMBER DURING OUTPUT 
0100 * STOP DISPLAY BY TYPING SPACE BAR 
0105 * START DISPLAY BY TYPING ANY CHARACTER 
0110 * 

0115 * NCTE - A SCREEN CLEAR MUST BE THE FIRST 
0120 * CHARACTER SENT IN ORDER TO INITIALIZE THE 
0125 * CURSOR AT THE BOTTOM LEFT CORNER OF THE 
0130 * SCREEN AND ENSURE PROPER SCROLLING. 

0135 * 

0140 * 

0145 * ENTER WITH CHARACTER IN THE ACCUMULATOR 
0150 * 

0155 * 


0160 STRT 

PUSH 

H 

SAVE SYSTEM REGISTERS 

0165 

PUSH 

D 


0170 

PUSH 

B 


0175 

PUSH 

PSW 

CHAR IS IN THE ACCUM 

0180 

LHLD 

VDMP 

GET' SCREEN POSITION POINTER 

0185 

CPI 

0DH 

IS THE CHAR A CARRIAGE RET? 

0190 

JZ 

CR 

YES - SCROLL, OUTPUT A CR 

0195 

CPI 

08H 

IS IT A BACKSPACE? 

0200 

JZ 

BS 

YES - MOVE CURSOR BACK 

0205 

CPI 

18H 

IS IT A CTRL - X (SCREEN CLEAR; 

0210 

JZ 

CLEAR 

YES - ERASE ENTIRE SCREEN 

0215 

CPI 

7FK 

IS IT A RUBOUT CHARACTER? 

0220 

JZ 

SPEED 

DON'T DISPLAY (FOR ALS-8 ONLY) 

0225 

CPI 

2 OH 

DON'T DISPLAY CONTROL CHARS 

0230 

JC 

SPEED 

EXIT TO CHANGE SPEED 

0235 

MOV 

M,A 

IT HAS TO BE DATA 

0240 

INX 

H 

UPDATE CHAR POSITION ON SCREEN 

0245 

MVI 

M,0A0H 

PUT CURSOR ON SCREEN 

0250 

JMP 

LINOV 

TEST FOR LINE OVERFLOW 

0255 BS 

MVI 

M, 20H 

REMOVE CURSOR 

0260 

DCX 

H 

BACK UP POINTER 

0265 

JMP 

BS-5 


0270 CR 

MVI 

M, 20H 

CHAR IS A CARRIAGE RETURN 

0275 

MOV 

A,L 

UPDATE NEXT CHAR POSITION 

0280 

ANI 

0C0H 


0285 

ADI 

4 OH 

SETTING UP FOR NEW LINE 

0290 

MOV 

L,A 

ADDRESS OF NEW LINE 

0295 

MVI 

A,0 


0300 

ADC 

H 

ADD WITH CARRY 

0305 

MOV 

H,A 


0310 LINOV 

SHLD 

VDMP 

SAVE POINTER FOR NEXT CHAR 

0315 

MVI 

A,7FH 


0320 

ANA 

L 


0325 

JNZ 

SPEED 

EXIT 

0330 

MVI 

M, 20H 


0335 

LXI 

H,0CFC0H SET UP DATA LINE (LINE 16) 

0340 

SHLD 

VDMP 

SAVE POINTER 

0345 

LXI 

H,0CC40H 15 LINES OF SCREEN DATA 

0350 

LXI 

D,OCCOOH TOP OF SCREEN. SET UP 

0355 

LXI 

B,03C0H TO SCROLL 15 LINES 

0360 SCROL 

MOV 

A,M 

START SCROLLING UP 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 13 


427 



0365 

STAX 

D 


0370 

INX 

H 


0375 

INX 

D 


0380 

DCX 

B 

COUNT DOWN 

0385 

XRA 

A 


0390 

CMP 

B 

15 LINES SCROLLED? 

0395 

JNZ 

SCROL 

NOT YET COMPLETE 

0400 

CMP 

C 


0405 

JNZ 

SCROL 

STILL NOT COMPLETE 

0410 

LXI 

H,0CFC0H SET DATA LINE (LINE 16) 

0415 ERASE 

MVI 

M, 20H 

PUT BLANK ON SCREEN 

0420 

INX 

H 

ERASE ENTIRE DATA LINE 

0425 

MOV 

A,L 


0430 

AN I 

3FH 


0435 

JNZ 

ERASE 

LINE NOT YET ERASED 

0440 

LXI 

H,0CFC0H SET DATA LINE (LINE 16) 

0445 

MVI 

M,0A0H 

PUT CURSOR ON SCREEN 

0450 SPEED 

CALL 

STATS 

LOOK AT KEYBOARD STATUS BIT 

0455 

CNZ 

GETIT 

IF BUSY, GET ASCII DATA 

0460 

LDA 

NEWSP 

LOAD NEW SPEED BYTE 

0465 

MOV 

H,A 

CHANGE SPEED WITH ASCII 1-9 

0470 

MVI 

L,80H 


0475 DELAY 

DCX 

H 

DELAY ROUTINE FOR 

0480 

MOV 

A,H 

VARIABLE OUTPUT SPEED 

0465 

ORA 

A 


0490 

JNZ 

DELAY 

JUMP FOR MORE TIME 

0495 

POP 

PSW 

DELAY COMPLETE 

0500 

POP 

B 

GET READY TO RETURN 

0505 

POP 

D 

TO USER PROGRAM 

0510 

POP 

H 


0515 

RET 

. 

RETURN 

0520 GETIT 

CALL 

DATA 

INPUT ASCII DATA FROM KBD 

0525 

CPI 

' 9 1 +1 

IS THE CHAR AN ASCII 1-9? 

0530 

JNC 

WAIT 

TOO BIG 

0535 

CPI 

*1' 


0540 

JC 

WAIT 

TOO SMALL 

0545 

ANI 

0FH 

REMOVE ASCII BIAS 

0550 

PUSH 

B 

SAVE REGISTER 

0555 

MOV 

C/A 

SAVE DELAY NUMBER 

0560 

XRA 

A 

CLEAR ACCUMULATOR 

0565 

STC 

. 

INITIALIZE DELAY CARRY BIT 

0570 LESS 

DCR 

C 

DECREMENT DELAY NUMBER 

0575 

JZ 

FOUND 

STOP ROTATING DEIAY BIT 

0580 

RAL 

. 

SHIFT DEIAY BIT LEFT' 

0585 

JMP 

LESS 

NEXT ROUND 

0590 FOUND 

POP 

B 

RESTORE REGISTERS 

0595 

STA 

NEWSP 


0600 

RET 



0605 WAIT 

CPI 

20H 

IS IT A SPACE BAR? 

0610 

RNZ 

. 

NO - CONTINUE 

0615 WAIT2 

CALL 

STATS 

WAIT TILL A KEY IS PRESSED 

0620 

JZ 

WAIT2 

TO CONTINUE SCREEN OUTPUT 

0625 

RET 



0630 CLEAR 

LXI 

H,0CC00H CLEAR SCREEN 

0635 

MVI 

A,0DOH 

BOTTOM OF SCREEN CHECK 

0640 CLER1 

CMP 

H 

TEST FOR END OF SCREEN 

0645 

JZ 

DONIT 

YES - DONE 

0650 

MVI 

M,20H 

PUT BLANK SCREEN 

0655 

INX 

H 

CLEAR MORE SCREEN 

0660 

JMP 

CLER1 


0665 DONIT 

LXI 

H/0CPC0H SET DATA LINE (LINE 16) 

0670 

MVI 

M,0A0H 

PUT CURSOR ON SCREEN 

0675 

SHLD 

VDMP 

SAVE POINTER TO DATA LINE 

0680 

XRA 

A 


0685 

OUT 

0C8H 

CLEAR VDM-1 STATUS LATCH 

0690 

JMP 

SPEED 


0695 VDMP 

DS 

02H 

CURRENT CURSOR POSITION 

0700 NEWSP 

DW 

00H 

CURRENT OUTPUT SPEED 


0705 * 

0710 * 

0715 * THESE ARE AUXILLIARY ROUTINES 
0720 * FOR INPUT AND OUTPUT OF THE 
0725 * DISPLAY SPEED INFORMATION FROM THE 
0730 * KEYBOARD. THEY ARE NORMALLY 
0735 * PART OF THE CALLING PROGRAM. 

0740 * 

Page 14 


SI 250 MICROKIT ICE UNIT 

news release Received: 77 Jut 5 

Los Angeles, California — Microkit, Inc., a leading manu¬ 
facturer of ready-to-use, low-cost, universal microcomputer 
systems, has announced availability of a new in-circuit emul- 
lator/EPROM programmer. 

The new MICROEMULATOR extends the editing, as¬ 
sembling and debugging capabilities of Microkits’s 8080/ 
6800/Z-80 Product Development Systems directly into a 
prototype or production system. The MICROEMULATOR 
probe plugs directly into a prototype’s CPU socket and allows 
debugging of the prototype in its own environment. Programs 
residing in the microcomputer’s RAM memory can execute 
and access the memory and I/O devices, emulating actual 
usage. In addition to basic monitor commands, provision is 
made for enabling emulation mode, single step and trace 
execution, hardware breakpoints and 2708/2704 EPROM 
programming. 

Applications include hardware/software development and 
integration, production test and depot maintenance of micro¬ 
processor systems. MICROEMULATORS are offered for 
8080, 6800 or Z-80 microprocessors and are compatible with 
any of Microkit’s tape-based or disk-based systems, including 
high-speed QUICKRUN “in-memory” operating systems which 
provide the only co-resident assembly and interactive de¬ 
bugging system in the industry. 

The complete system package consisting of an M840 
MICROEMULATOR and M841 Debug and EPROM pro¬ 
grammer is priced at $1250.00. Availability is from stock. 
Manufacturer: MICROKIT, INC., 11205 So. LaCienega Blvd., 
Los Angeles, CA 90045. Sales Contact: Bob Schaaf (213) 
641-7700. 



0745 

0750 

* 

STATS 

IN 

00H 

INPUT FROM STATUS PORT 

0755 


ANI 

40H 

LOOK AT KEYBOARD STATUS BIT 

0760 

0765 

DATA 

RET 

IN 

01H 

INPUT FROM DATA PORT 

0770 


ANI 

7FH 

REMOVE PARITY BIT 

0775 


RET 

. 



Number 20 


428 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 




MATHPAG A KIMATH 
SUPPLEMENT 


by John Eaton 
435 W. Padre #W10 
Santa Barbara, CA 93105 


Received: 77 Nov 28 

The MOS Technology KIMATH program is an arithmetic 
program that handles 16 digit Boating point operations. It 
can add, subtract, multiply and divide any two 16 digit 
numbers. KIMATH handles numbers in a BCD format; there is 
no conversion to any type of binary number. The numbers 
are stored in registers that are 18 bytes wide. The first byte 
in each register is the sign byte. Bit 7 is the sign of the mantis¬ 
sa and bit 6 is die sign of the exponent (0=+,l=—). The next 
16 bytes contain the mantissa with one digit per byte. Each 
mantissa byte contains a BCD digit in the lower four bits of the 
byte with 0 in the upper four. The 18th byte contains the 
exponent in BCD which can be from 00 to 99. The entire 
register is in scientific notation so that the mantissa must be 
between 1 and 10. 

The user has three registers in page 02: Rx, Ry, and Rz. 
When you call any operation, KIMATH will take the values 
from Rx and Ry and perform the operation and return the 
result to Rz. 

KIMATH provides several routines for moving data from 
these registers to others in page 02. The Move routines are all 
labeled after the general format MVSD. The S is the source 
register and the D is the destination register. If you see a 
“JSR MVZX” it means that the number in Rz is moved 
into Rx. 

The 18 byte format is a very inefficient way to store 
a large number of variables in memory. KIMATH has 
routines (PSTRES, PGTARG) that can store or recall a 16 
digit number from user memory and only require 10 bytes 
per number. 

KIMATH has several functions but most of them are 
limited to a range of 0 to 1. MATHPAC expands these 
functions to a far greater range and adds several other 
useful functions. 

KIMATH is designed to increase the power of a 6502 
system. Although capable of 16 digit operations, it is not able 
to directly drive a user’s I/O device. Extra routines are 
required to take the power of KIMATH and give it to the user. 
MATHPAC does just that. It takes the user’s ASCII I/O 
device and turns it into a scientific calculator. 


Using MATHPAC 

MATHPAC was designed to conform to the user’s format 
instead of forcing the user to conform to the computer’s. To 
use MATHPAC you simply type in commands in the form of 
assignment statements. For example if you type: 
@=1.234/56.78 followed by a carriage return then MATHPAC 
will figure out the value of the right side of the “=” and 
display it. (@ indicates display.) There are no restrictions on 
entering data since the program is designed to accept data in 
the same manner as a scientific calculator. You can use a 
“=” to enter a negative number and an “E” if you want to 
use scientific notation. An example is if you want to multi¬ 
ply 250 microamps by 11.75K ohms you type: 
@=250E—6*11.75E3. The program will respond by outputting 
2.9375. With MATHPAC you can add (+), subtract (—), 
multiply (*), divide (/) or raise to a power (f) any two 16 
digit numbers. 


Most scientific calculators have some form of memory 
where you can store results for later use. MATHPAC can store 
up to 26 sixteen digit numbers that can be identified by the 
letters A—Z. This is done simply by using a letter instead of 
the “@” in an assignment statement. Once a letter is defined it 
can be used in other calculations wherever a number is called 
for. For example if you type: 

A=1234 cr* 

B=345 cr 

C=A—B cr 

@=C cr *carriage return 

The computer will respond by outputting 889. It will also 
leave the numbers stored under the labels of A, B, And C. 


These letters can now be used in place of numbers in any other 
calculations. 

Table 

1. MATHPAC 

Functions: 

Code 

Address 

Result 

ABS 

3513 

Absolute value of Arg is found. No 
limitation on size. 

ACS 

343E 

Arc cosine of arg is found. Result is 
in degrees from 0 to 180. Arg should 
be less than or equal to +1. 

ALS 

32F9 

Antilog base 10 is found. Arg should be 
greater than -99 and less than +100. 

ASN 

3454 

Arcsin of arg is found. Result in degrees 
from -90 to *90» Arg should be less than 
or equal to +1. 

ATN 

346D 

Arc tangent of arg is found. Result is 
in degrees. No limit on size of arg. 

Result is from -90 to + 90 . 

COS 

3399 

Cosine of arg(degrees) is found. No 
limit on size of arg. 

DEG 

351E 

Argument in Radians is converted into 
degrees. No limit on the size of arg.- 

INV 

354A 

l/Arg is found. No limit on size of arg. 

LOG 

3210 

Log base 10 of arg is found. Arg must 
be positive and non zero. 

RAD 

3526 

Argument in Degrees is converted into 
radians. No limit on the size of arg. 

SIN 

3354 

Sin of ar^(degrees) is found. No limit 
on the size .of arg. 

SQR 

3272 

Square root of the absolute value of arg 
is found. No limit on the size of arg. 

TAN 

3370 

Tangent of arg(degrees) is found. No 
limit to size of arg. 


MATHPAC also has internal functions. Table 1 lists 13 
functions and their ranges. You will notice that most of them 
are extended over the entire range of the KIMATH registers 
whenever possible (0 to ± 9.999999999999999 E±99). To call 
a function you simply type its three letter code and the argu¬ 
ment in parenthesis. The argument can be either a number or 
a letter. Example: 

@=SQR (23.45) cr 
A=TAN (9.789E23) cr 
B=LOG(A) cr 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 15 


429 



Each line typed into MATHPAC must contain one assign¬ 
ment per line. It can be one of three types: (1) SIMPLE 
assignment such as @=A, A=34 or B=A. (2) FUNCTION 
assignment such as B=SIN (A) (3) OPERATIVE assignment 
such as @=34.5/67, A=56+89, or C=A—3. 

Two variable operative assignments cannot be mixed with 
functions on the same line. Use letters to store the results of 
calculations if mixed operations are required. If the program 
does not understand or is unable to carry out your command 
then it will respond with a “WHAT”. 


Placing MATHPAC in Your System 

Your system must have at least 5K of memory in addition 
to I/O routines. IK of RAM is required from 0000 to 03FF. 
MATHPAC itself needs 2K from 3000 to 37FF. KIMATH 
needs 2K from F800 to FFFF. Refer to Table 2 for a break¬ 
down of the memory used. The entire system will work in a 
KIM-1 with an additional 4K of memory. The user must 
obtain his own copy of MOS Technology’s KIMATH program 
and have single character input and output routines that pass 
data thru the accumulator. 

Table 2. Memory Requirements ; 


0000 —001C 
0040—007F 
0200—029A 
0300—03FF 
3000—37FF 
F800—FFFF 


Page zero use 

1/0 buffer for ASCII characters 

KIMATH Page 02 requirements 

Number storage 

MATHPAC 

KIMATH 


All the codes used by MATHPAC are ASCII. Place the 
address of your character input routine in the jump command 
at 3600. The address of the character output routine will go in 
the jump command at 3603. Address 3606 must contain either 
an OD (carriage return) or an OA (linefeed). If your terminal 
does not have an automatic linefeed with carriage return then 
use an OA, otherwise use an OD. 

Page 03 is where MATHPAC stores its data and must be 
cleared to 00. The amount of memory used is variable. Place 
a block of 11 bytes of FF where you want the memory to 
end. If you fill the last 11 bytes of page 03 with FF then 
MATHPAC will be able to store 22 sixteen digit numbers. 

The byte at address 0000 must be set to 10. This sets the 
length of all operations to 16 digits. All functions are auto¬ 
matically rounded off to 8 digits and all other operations 
are rounded off to 14 digits. You must start the MATHPAC 
program at 3607. 


routines and is useful to any of your other programs. 
MATHPAC has many similar uses when called on as sub¬ 
routines. Tables 1 and 3 show many of the different routines 
that can be called by the user programs to perform operations 
on the KIMATH registers. 


Table 3 

• MATHPAC 

support routines: 

Name 

Address 

Result 

PACKER 

3000 

Packs the ASCII data at ARGYL.ARGYH 
into Ry. No restrictions on format. 

UNPACK 

30F9 

Converts Rz into readable number and 
stores it at RES.RES + l 

STORE 

3182 

Stores Rz in memory under the ID in 
the accumulator. Returns with FF in 
accumulator if there is not enough 
room. 

RECALL 

31BB 

Finds number in memory with ID in 
accumulator. Loads it into Ry.Sets 
accumulator to FF if number not in 
memory. 

FORGET 

31D8 

Erases number from memory,ID from 
accumulator. 

INT 

329D 

Largest interger less than or equal 
to Rx is found. 

ONEX 

350A 

Rx is set to one. 

PIE 

3553 

Ry is set equal to Pi 

HEX DEC 

3558 

CNT (0003) is converted from a HEX 
number to a BCD number. 

SETC0N 

3568 

Constant from table at 37CO is loaded 
into Ry. Accumulator determines which 
one. 

CHOPIT 

3575 

Rz is scanned and PREC is set to 
cover only non zero digits. -0 is 
also corrected for. 

PACADD 

3589 

Y index is added to ARGYL.ARGYH 

RNDF 

3597 

Rx is rounded off the the lenght in 
the X index register. 

After 

you use 

MATHPAC and KIMATH for a while you 


may notice a quirk in the system. If you type @=.5—0 the 
computer will respond with —9.5. Not quite the right 
answer. This is caused by an error in KIMATH that affects 
the subtraction of zero from a positive number that is less 
than one. If you have KIMATH in RAM then you can correct 
it by changing FCBB to DO and FCBD to FO. 


Table 4. Assignment Statement Format: 


Expanding the Functions 

You may want to add some of your own special functions 
to MATHPAC. All functions take their argument from 
KIMATH’s Rx register and leave the result in Rz. If you have 
a routine that does this then you may add it to MATHPAC @ ( display) 

by placing its starting address in TAB2. If you read through A_z ( Save in memory) 

TAB1 and TAB2 you will see that there are three functions 
(FNA, FNB and FNC) that call the KIMATH routine 
MVXZ(FCFO). If you substitute your starting address for the 
first address of FCFO then calling FNA will call your function. 

If you want to get fancy and give it its own three letter code 
then you will have to reassemble both tables and insert your 
code in alphabetical order. 

Extra Uses for MATHPAC 

KIMATH is useful when it can be called by other programs 
to perform arithmetic operations. It consists of a series of 

Page 16 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Simple assignment 
single letter or 
number. 


Function 

Arg in parenthesis 
can be number or 
letter 


Operation 
two variables can 
be either letter, 
number or both 


Number 20 


430 





1 Calculator supplememnt for KIMATH 

30A9 

06 

03 


ASL CNT 




; see KIMATH manual i 

for undefined labels 

30A3 

06 

03 


ASL CNT 


oooo 10 


N 


set to 10 or lenght 

30AD 

06 

03 


ASL CNT 


0017 


PER 



30AF 

06 

03 


ASL CNT 

shift exponent 

0018 


QUADCT 



30B1 

05 

03 


OKA CNT 

combine with digit 

0019 


ID 



30B3 

85 

03 


STA CNT 


001A 


SIJN 



30B5 

38 



SEC 


001B 


CALI 



30B6 

BO 

E4 


BCS EXP1 

unconditional 

001C 


CAL2 



30B8 

F8 


EXP3 

SED 

adjust sign and exp 

0040 


LR 


I/O buffer 64 Bytes 

30B9 

68 



PLA 

old sign 

0300 


5 Page 

03 used for numeric storage. 

30BA 

48 



PHA 




; clear 

all bytes to 

00. Set last 11 

30BB 

^5 

1A 


EOR SIGN 

test signs of the 



s bytes 

of page 03 ( 

or first 11 of 

30BD 

85 

17 


STA PER 

two exp's to see 



; page 

04)to F?. 


30BF 

24 

17 


BIT PER 

if they are the same 






30C1 

50 

21 


BVC EXP6 

sign's same 

3000 20 

7C FD 

PACKER 

JSR CLRY 

routine to load raw 

30C3 

68 



PLA 

old sign 

3003 A2 

00 


LDX.VOO 

number at (ARGYL, 

30C4 

85 

17 


STA PER 


3005 A0 

00 


LDY#00 

ARGYH) into Ky. 

30C6 

68 



PLA 

old exp 

300? 84 

17 


STY PER 


30C7 

C5 

03 


CMP CNT 


3009 84 

03 


STY CNT 


30C9 

90 

09 


BCC EXP4 

new exp gtr 

300B 84 

1A 


STY SUN 


30CB 

E5 

03 


SBC CNT 

difference of exp’s 

300D B1 

08 


LDA(ARGYL), Y 

1st character 

3 ODD 

48 



PHA 

adjusted exp 

300F C9 

2B 


CMP#2B 

"+" 

30CE 

*5 

17 


LDA PER 

old sign 

3011 F0 

08 


BEG PACK1 


30D0 

48 



PHA 

adjusted sign 

3013 C9 

2D 


CMP# 2D 


30D1 

38 



SEC 


3015 DO 

07 


BNE PACK2 


30D2 

BO 

oc 


BCS EXP5 

unconditional 

3017 A9 

80 


LDA#80 


30D4 

E5 

03 

EXF4 

SBC CNT 

difference of exp’s 

3019 85 

1A 


STA SUN 

set sign neg 

30D6 

85 

03 


STA CNT 

compensate subtracting 

301B C8 


PACK1 

INY 


30D8 

A9 

00 


LDA#00 

larger number from 

301C 51 

08 


LDA(ARGYL),Y 


30DA 

E5 

03 


SBC CNT 

small by subtracting 

301E C9 

2E 

PACK2 

CMP#2E 

N ^ H 

30DC 

48 



PHA 

from zero 

3020 DO 

OF 


BNE PACK4 


30DD 

A5 

1A 


LDA SIGN 


3022 A9 

4o 


LDA#40 

decimal point found 

30DF 

48 



PHA 

adjusted sign 

3024 24 

17 


BIT PER 


30E0 

A9 

00 

EXP5 

LDA#00 


3026 30 

05 


BMI PACK3 

stop counting exponent 

30E2 

85 

03 


STA CNT 


3028 05 

1A 


ORA SIGN 

start counting down 

30E4 

18 


EXP6 

CLC 


302A 85 

1A 


STA SIGN 


30E5 

68 



PLA 

sign 

302C OA 



ASL A 


30E6 

85 

1A 


STA SIGN 


302D 85 

17 

FACK3 

STA PER 


30E8 

68 



PLA 

exponent 

302F DO 

EA 


BNE PACK1 

unconditional 

30E9 

6'-. 

03 


ADC CNT 


3031 C9 

30 

PACK4 

CMP#30 

test for 0-9 

30EB 

48 



PHA 


3033 90 

2F 


BCC PACK8 

non-digit 

30EC 

D8 



CLD 


3035 C9 

3A 


CMP#3A 


30ED 

DO 

06 


BNE EXP? 

exp not zero 

3037 BO 

2B 


BCS PACKS 

non-digit 

30EF 

A9 

BF 


LDA/VBF 


3039 24 

17 


BIT PER 


30F1 

25 

1A 


AND SIGN 


303B 10 

01) 


BPL PACK5 

not counting exp 

30F3 

85 

1A 


STA SIGN 


303D E6 

03 


INC CNT 


30F5 

68 


EXP 7 

FLA 


303F 70 

15 


BVS PACK7 

counting up 

30F6 

4C 1SE 30 


JMP EXOT 


3041 C9 

30 


CMP#30 

zero? 

3 of 9 

AD 

6A 02 

UNPACK 

LDA EL 

routine to unpack 

3043 FO 

D6 


BEQ rACKl 

place setting zero 

30 FC 

85 

03 


STA CNT 

Hz and store at 

3045 48 



PHA 


30FE 

20 C3 FB 


JSR DECHEX 

(RES.RESn ) 

3046 A9 

40 


LDA#40 

stop counting 

3101 

AO 

00 


L!)Y#00 


3048 DO 

09 


BNE PACK6 

unconditional 

3103 

2C 

59 02 


BIT SZ 


304A 70 

OA 

PACK 5 

BVS PACK? 

counting stopped 

3106 

10 

05 


BPL UNPAC1 

positive number 

304C C9 

30 


CMP#30 


3108 

A9 

2D 


LDA#2D 


304E FO 

CB 


BEQ PACK1 

leading zero 

310A 

91 

OA 


STA(RES),Y 


3050 48 



PHA 


310c 

C8 



INY 


3051 A9 

CO 


LDA#CO 

start counting up 

310D 

A2 

00 

UNPAC1 

LDX#00 


3053 85 

17 

PACK 6 

STA PER 


310F 

A5 

03 


LDA CNT 


3055 68 



PLA 


3111 

C9 

10 


CMP#10 

exp gtr 15 

3056 29 

0? 

PACK? 

AND./OF 

mask off digit 

3113 

BO 

3B 


BCS UNPAC? 

use scientific notation 

3058 9D 

48 02 


STA SY+l.X 

store in Ry 

3115 

2C 

59 02 


BIT SZ 


305B E8 



INX 


3118 

50 

OE 


BVC UNPAC3 

exp is positive 

305C EO 

11 


C?X#11 

16 digits? 

311A 

A9 

2E 


LDA#2E 

decimal point 

305E 90 

BB 


BCC PACK1 

not yet 

3ilc 

91 

OA 


STA(RES),Y 


3060 A2 

10 


LDX//10 

clamp X to 16 

311E 

A9 

30 


LDA#30 

zero 

3062 DO 

B7 


BNE PACK1 

unconditional 

3120 

C8 


UNPAC2 

INY 

display place setting 0 

3064 8A 


PACK 8 

TXA 

X=0? 

3121 

91 

OA 


STA(RES), Y 


3065 DO 

04 


BNE PACK9 

no 

3123 

C6 

03 


DEC CNT 


3067 86 

1A 


STX SIGN 


3125 

10 

F9 


BPL UNPAC2 


3069 86 

03 


3TX CNT 


3127 

88 



DEY 


306B 20 

58 35 

PACK 9 

JSR HEX DEC 

convert exp to BCD 

3128 

BD 

5A 02 

UNPAC3 

LDA szn.x 

fetch digit 

306E 8D 

58 02 

EXOT 

STA EY 


312B 

09 

30 


ORA#30 

convert to ASCII 

3071 B1 

08 


LDA(ARGYL),Y 


312D 

91 

OA 


STA(RES),Y 


3073 C9 

45 


CMP//4 5 

"E" 

312F 

E8 



INX 


3075 FO 

06 


BEQ EXP 


3130 

C8 



INY 


3077 A5 

1A 


LDA SUN 


3131 

24 

03 


BIT CNT 


3079 8IJ 

47 02 


STA SY 


3133 

30 

09 


BMI UNPAC4 


307C 60 



KTS 


3135 

C6 

03 


DEC CNT 


307D A5 

03 

EXP 

LDA CNT 

old exp 

3137 

10 

05 


BPL UNPAC4 


307F 48 



PHA 


3139 

A9 

2E 


LDA-/2E 

decimal point 

3080 A5 

1A 


LDA SUN 


313B 

91 

OA 


STA(RES),Y 


3082 48 



PHA 


313D 

C8 



INY 


3083 29 

80 


AND#80 

preserve man sign 

313E 

E4 

10 

UNPAC4 

CPX PR EC 

all digits moved? 

3085 85 

1A 


STA SUN 

new sign 

3140 

DO 

E6 


BNE UNPAC3 


3087 A9 

00 


LDA#00 


3142 

24 

03 


BIT CNT 


3089 85 

03 


STA CNT 

new exp 

3144 

30 

09 


BMI UNPAC6 


308B C8 



INY 


3146 

A9 

30 


LDA#30 


308C B1 

08 


LDA(ARGYL),Y 


3148 

91 

OA 

UNPAC5 

STA(RES),Y 

trailing zero's 

308E C9 

2B 


CMP/'23 

" + H 

314A 

C8 



INY 


3090 FO 

OA 


BEQ EXP1 


314B 

C6 

03 


DEC CNT 


3092 C9 

2D 


CMP# 2, / 


314D 

10 

F9 


BPL UNPAC5 


3094 DO 

09 


BNE EXP2 


314F 

60 


UNPAC6 

RTS 


3096 A9 

40 


LDA#40 

new exp sign ne^ 

3150 

A9 

00 

UNPAC7 

LDA#00 

scientific notation 

3098 05 

1A 


ORA SUN 


3152 

85 

03 


STA CNT 


309A 85 

1A 


STA SIGN 


3154 

20 

28 31 


JSR UNPAC3 


309C C8 


EXP1 

INY 


3157 

A9 

20 


LDA#20 

blank 

309D B1 

08 


LI.'A(ARJYL), Y 


3159 

91 

OA 


STA(RES),Y 


309F C9 

30 


CMP#30 

test for 0-9 

315B 

nfl 



INY 


30A1 90 

15 


BCC EXP3 

non digit 

315C 

A9 45 


LDA#45 

"E" 

30A3 C9 

3A 


CMP#3A 


315E 

91 

OA 


STA(RES),Y 


30A5 BO 

11 


BCS EXP3 

non digit 

3160 

C8 



INY 


30A7 29 

OF 


AND#OF 

mask off digit 

3161 

2C 

59 02 


BIT SZ 



Number 20 


Or. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 17 


431 



save exponent 


3164 50 05 
3166 A9 2D 
3168 91 0A 
316A C8 
316B AD 6 a 02 
316E 4A 
316f 4a 

3170 4A 

3171 ‘‘A 

3172 09 30 
3174 91 OA 

3176 C8 

3177 AD 6A 02 
317A 29 OF 

317C 09 30 
317E 91 OA 

3180 C8 

3181 60 


BVC UNPAC8 
LDA#2D 
STA(HES), Y 
INY 

UNPAC8 LDA EZ 
LSR A 
LSR A 
LSR A 
LSR A 
ORAflOO 
STA(RES),Y 
INY 

LDA EZ 

AND#OF 

0KA#30 

STA(RES).Y 

INY 

RTS 


positive exponent 


convert to ASCII 


convert to ASCII 


j routines to store ad recall numbers. 
i numbers are taken from Rz and stored 


321A 48 
32IB A9 00 
32 ID 8D 35 02 
3220 8D 46 02 
3223 A9 09 
3225 20 68 35 
3228 20 OB F9 
322B 20 OC FD 
322E 20 E7 FA 
3231 20 OC FD 
3234 20 ?C FD 
3237 A9 05 
3239 8D 49 02 
323C 20 08 F8 
323F 20 OC FD 
3242 20 7C FD 

3245 68 

3246 C9 10 
3248 BO 09 
324A 29 OF 
324C 8D 48 02 


PHA 

LDA#00 
STA SX 
STA EX 
LDA#09 

J SR SETCON Ry=l/SQR(10) 

JSR MUL 

JSR MVZX 

JSR LOG 

JSR MVZX 

JSR CLRY 

LDA#05 

STA SY+2 Ry=+.5 

JSR ADD 
JSR MVZX 
JSR CLRY 

PLA exponent 

CMP#10 

BCS L0GT1 exp gtr 9 

AND#OF 
STA SY+1 






> in page 03. Numbers 

are recalled to Ry. 

324? A9 

00 



LDA#00 


3182 

20 

E2 

31 

STORE 

JSR SRCH 

3251 FO 

10 



BEQ LOST2 

unconditional 

3185 

DO 

OD 



BNE ST0R1 

ID already in memory 

3253 48 



L0GT1 

PHA 


318? 

A5 

19 



LDA ID 


3254 4a 




LSR A 


3189 

48 




PHA 


3255 4a 




LSR A 


318A 

A9 

00 



LDA#00 


3256 4a 




LSR A 


318C 

20 

E2 

31 


JSR SRCH 

look for empty cell 

325? 4A 




LSR A 


318F 

FO 

26 



BEQ ST0R2 

no room in page 03 

3258 8D 

48 

02 


STA SY+1 


3191 

68 




PLA 

325B 68 




PLA 


3192 

91 

06 



STA(PTR),Y 

set ID in pg 03 

325C 29 

OF 



AND#OF 


3194 

A5 

OA 


ST0R1 

LDA RES 


325E 8D 49 

02 


STA SY+2 


3196 48 




PHA 


3261 A9 

01 



LDA#01 


3197 

A5 

OB 



LDA RES+1 


3263 8D 

58 

02 

L0GT2 

STA EY 

Ry now contains exp 

3199 48 




PHA 


3266 68 




PLA 


319A 

A9 

01 



LDA#01 


3267 OA 




A3L A 

adjust sign 

319C 

20 

04 

32 


JSR AD DM 

add one to address 

3268 8D 47 

02 


STA SY 


319F 

A5 

OC 



LDA PTR 


326B 20 

08 

F8 


JSR ADD 


31A1 

85 

OA 



STA RES 


326E 68 




PLA 


31A3 

A5 

OD 



LDA PTR + 1 


326F 85 

00 



STA N 

lenght 

31A5 

85 

OB 



STA RE3+1 


3271 60 




RTS 


31A? 

A5 

00 



LDA N 


3272 20 

13 

35 

SQRT 

JSR ABS 

square root routine 

31A9 

85 

10 



STA PREC 


3275 20 

A6 

FC 


JSR XZTST 

31AB 

20 

30 

FE 


JSR PSTRES 

Move Rz into Pg 03 

3278 DO 

01 



BNE SQRT1 


31AE 

68 




PLA 

327A 60 




RTS 


31AF 

85 

OB 



STA RES+1 


327B 20 

18 

FD 

SQRT1 

JSR MVZN 


31B1 

68 




PLA 


32?E 20 

14 

FD 


JSR MVZM 


31B2 

85 

OA 



STA RES 


3281 AD 

46 

02 


LDA EX 


31B4 

A5 

19 



LDA ID 


3284 85 

03 



STA CNT 


31B6 

60 



RTS 


3286 20 

C3 

FB 


JSR DECHEX 

exp now hex 

31B? 

68 



ST0R2 

PLA 


3289 4A 




LSR A 

divide by two 

31B8 

A9 

FF 



LDA#FF 

No room in pg 3 

328a DO 

02 



BNE SQRT2 

31BA 

60 




RTS 

328C A9 

01 



LDA//01 


31BB 

20 

E2 

31 

RECALL 

JSR SRCH 


328E 85 

03 


SQRT2 

STA CNT 


31BE 

FO 

17 



BEQ RECAL1 

not in memory 

3290 20 

58 

35 


JSR HEXDEC 

exp now BCD 

31C0 

A9 

01 



LDA#01 


3293 8D 

?C 

02 


STA EM 

31C2 

20 

04 

CVJ 


JSR ADDM 

add one to address 

3296 A9 

0? 



LDA#07 


31C5 

A5 

00 



LDA N 

recall number into Ry 

3298 85 

01 



STA NKON 


31C7 

4a 




LSR A 

329A 4C 

B5 

FA 


JMP SQRTO 



31C8 69 01 ADC#01 5 routine to find the largest interger 

31CA 85 04 STA LENGHT 1 less than or equal to Rx. 


3icc 

20 

87 

FD 


JSR CLRZ 



329D 

A5 

00 


INT 

LDA N 


3icf 

20 

El 

FD 


JSR PGTARG 



329F 

48 




PHA 

save lenght 

31D2 

20 

10 

FD 


JSR MVZY 



32A0 

AD 

35 

02 


LDA SX 


31D5 

A5 

19 



LDA ID 



32A3 

48 




PHA 

save sign 

31D? 

60 



RECAL1 

RTS 



32A4 

29 

7F 



AND#7F 


31D8 

20 

E2 

31 

FORGET 

JSR SRCH 



32A6 

8D 

35 

02 


STA SX 

set positive 

31DB 

FO 

04 



BEQ F0RGE1 



32A9 

20 

F4 

FC 


JSR MVXM 


31DD 

A9 

00 



LDA#00 



32 AC 

2C 

35 

02 


BIT SX 


31DF 

91 

OC 



STA(PTR),Y 



32AF 

50 

03 



BVC INTI 

Rx gtr than one 

31E1 

60 



FOR G El 

RTS 



32B1 

20 

71 

FD 


JSR CLRX 

Rx =0 

31E2 

D8 



SRCH 

CLD 

search page 03 for 

32B4 

AD 

46 

02 

INTI 

LDA EX 


31E3 

85 

19 



STA ID 

ID or 

FF 

32B7 

■9 

15 



CMP#15 


31E5 

AO 

00 



LDY#00 



32B9 

90 

02 



BCC INT2 

exp less 15 

31E7 

A9 

02 



LDA#02 



32BB 

A9 

15 



LDA#15 


31E9 

85 

OD 



STA PTR+1 



32BD 

85 

03 


INT2 

STA CNT 


31EB 

A9 

F5 



LDA#F5 



32BF 

20 

C3 

FB 


JSR DECHEX 

exp now hex 

31ED 

85 

OC 



STA PTR 



32C2 

85 

00 



STA N 


31EF 

20 

FF 

31 

SRCH1 

JSR ADDL 



32C4 

E6 

00 



INC N 


31F2 

B1 

OC 



LDA(PTR),Y 



32C6 

20 

?c 

FD 


JSR CLRY 


31F4 

C5 

19 



CMP ID 



32C9 20 

87 FD 


JSR CLRZ 


31F6 FO 

04 



BEQ SRCH2 



32CC 

20 

08 

F8 


JSR ADD 


31F8 

C9 

FF 



CMP.VFF 



32CF 

68 




PLA 

sign 

31FA 

DO 

F3 



BNE SRCH1 



32DO 

10 

23 



BPL INT4 


31FC 

C9 

FF 


SRCH2 

CMP#FF 



32D2 

20 

OC 

FD 


JSR MVZX 


31FE 

60 




RTS 



32D5 

20 

20 

FD 


JSR MVMY 


31FF 

A5 

00 


ADDL 

LDA N 

Add 

lenght to address 

32D8 

A9 

10 



LDA#10 


3201 

4A 




LSR A 



32DA 

85 

00 



STA N 


3202 69 

03 



ADC#03 



32DC 

20 

00 

F8 


JSR SUB 


3204 

18 



ADDM 

CLC 

add A 

to address 

32DF 

20 

OC 

FD 


JSR MVZX 


3205 

65 

OC 



ADC PTR 



32 E2 

20 

00 

FD 


JSR MVYZ 


3207 

85 

OC 



STA PTR 



32E5 

20 

A6 

FC 


JSR XZTST 


3209 

A9 

00 



LDA#00 



32 E8 

FO 

06 



BEQ INT3 


320B 

65 

OD 



ADC PTR+1 



32EA 20 

OA 

35 


JSH ONEX 


320D 

85 

OD 



STA PTR+1 



32 ED 

20 

08 

F8 


JSR ADD 


320F 

60 




RTS 



32F0 

A9 

80 


INT3 

LDA#80 






; LOG base 10 of Rx 

is found 

and stored 

32F2 

8D 

59 

02 


STA SZ 






; in Rz 

. Rx must be 

positive 

and non zero 

32F5 

68 



INT4 

PLA 


3210 

A5 

00 


LOGT 

LDA N 



32?6 

85 

00 



STA N 


3212 

48 




PHA 

save 

lenght 

32F8 

60 




RTS 


3213 

AD 

35 

02 


LDA SX 







; antilog base 10 routine. Rx must be 

3216 48 




PHA 

save 

sign 





; gtfc 

than -99 and 

less than +100 

3217 

AD 

46 

02 


LDA EX 



32F9 

2C 

35 

02 

ALOG 

BIT SX 



Page 18 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 Number 20 


432 



32EC 70 

12 



BVS AL0G2 

Rx less than 1 


33K4 

48 




PHA 

f’KE A’> 

46 

02 


L1)A EX 



33F5 

20 

5C 

FB 


JSR TANX 

1KH eg 

02 



cm'ffoz 



33F8 

68 




PLA 

. 1,303 go 

0B 



BCC AL0G2 

Exp less 2 


33F9 

85 

00 



STA N 

3105 20 

1)2 

FO 

ALOG1 

JSR INPIN 



33FB 

20 

OC 

FD 


JSR MVZX 

1 108 A-' 

35 

02 


LDA SX 



33FE 

20 

10 

FD 


JSR MVZY 

310B 4A 




LSR A 



3401 

20 

OB 

F9 


JSR MUL 

330C 3D 

59 

02 


STA SZ 



3404 

20 

14 

FD 


JSR MVZM 

HOF 60 




RTS 



340? 

20 

08 

F8 


JSR ADD 

1310 20 

K8 

U ’C 

AL0G2 

JSR MVXN 



340A 

20 

20 

FD 


JSR MVMY 

3313 20 

90 

32 


JSR INT 



34 OD 

20 

14 

FD 


JSR MVZM 

3316 20 

OC 

FD 


JSR MVZX 



3410 

4C 

OA 

35 


JMP ONEX 

33ig as 

6 A 

02 


LDX EZ 



3413 

A9 

IE 


Y 90 

LDA#IE 

331C EO 

02 



CPX-702 



3415 

4C 

68 

35 


JMP SETCON 

331E FO 

ES 



BEG AL0G1 

X=-100 


3418 

20 

7C 

FD 

Y360 

JSR CLRY 

3320 A5 

00 



LDA N 



34 IB 

AQ 

03 



LDA#03 

3322 48 




PHA 



341D 

8d 

48 

02 


STA SY+1 

3123 BO 

59 

02 


LDA SZ.X 



3420 

AO 

06 



LDA#06 

3326 0A 




ASL A 



3422 

8D 

49 

02 


STA SY+2 

3327 0A 




ASL A 



3425 

2C 

35 

02 


BIT SX 

3328 0A 




ASL A 



3428 

70 

OD 



BVS Y360A 

3329 0A 




ASL A 



342A 

F8 




SED 

332A ID 

5A 

02 


ORA SZ+l.X 



342B 

AD 

46 

02 


LDA EX 

332D 85 

17 



STA PER 



342E 

FO 

07 



BEQ Y360A 

332F 48 




PHA 

save exponent 


3430 

38 




SEC 

3330 AD 

59 

02 


LDA SZ 



3431 

E9 

01 



SBC#01 

3333 4a 




LSR A 

adjust sign 


3433 

C9 

02 



CMP#02 

3339- 48 




PHA 

save sign 


3435 

BO 

02 



BCS Y360B 

3335 20 

2C 

FD 


JSR MV NX 



3437 

A9 

02 


Y360A 

LDA#02 

3338 A5 

17 



LDA PER 



3439 

8D 

58 

02 

Y360B 

STA EY 

333A F0 

09 



BEQ ALOG3 

exp=00 


343C 

D8 




CLD 

333C 20 

10 

FD 


JSR MVZY 



343D 

60 




RTS 

333F 20 

00 

F8 


JSR SUB 







j arctrig routines 

3342 20 

OC 

FD 


JSR MVZX 



343E 

20 

C9 

34 

ACOS 

JSR ARCSET 

3345 20 

41 

FB 

ALOG 3 

JSR TENX 



3441 

2C 

47 

02 


BIT SY 

3348 63 




FLA 



3444 

10 

14 



BPL ASINI 

3349 8D 

59 

02 


STA SZ 



3446 

20 

5A 

34 


JSR ASIN1 

334C 68 




PLA 



3449 

20 

OC 

FD 


JSR MVZX 

334d 8D 

6A 

02 


STA EZ 



344c 

A9 

IB 



LDA#IB 

3350 68 




PLA 



344E 

20 

68 

35 


JSR SETCON 

3351 85 

00 



STA N 



3451 

4c 

08 

F8 


JMP ADD 

3353 60 




RTS 



3454 

20 

29 

34 

ASIN 

JSR ARCSET 

3354 20 

A8 

33 

SIN 

JSR TRIG5 

SIN(Rx) found 

and 

3457 

20 

BF 

FC 


JSR XSY 

3357 20 

03 

F8 


JSR ADD 

placed in Rz 


345A 

AD 

35 

02 

ASIN1 

LDA SX 

335A 20 

76 

33 

TRIG1 

JSR TRIG4 



345D 

29 

80 



AND#80 

335D A5 

18 


TRIG2 

LDA QUADCT 



345F 

48 




PHA 

335F F0 

OC 



BEQ TRIG3 



3460 

20 

16 

FA 


JSR DIVIDE 

3361 C9 

03 



CMP#03 



3463 

20 

OC 

FD 


JSR MVZX 

3363 FO 

08 



BEQ TRIG3 



3466 

68 




PLA 

3365 ad 

59 

02 


LDA SZ 



3467 

OD 

35 

02 


ORA SX 

3368 49 

80 



E0R#80 



346A 

8D 

35 

02 


STA SX 

336A 8D 

59 

02 


STA SZ 



3463) 

A5 

00 


ATAN 

LDA N 

336d 4c 

75 

35 

TRIG3 

JMP CHOPIT 



34 6f 

48 




PHA 

3370 20 

A8 

33 

TAN 

JSR TRIG5 

TAN(Rx) found 

and 

3470 

AD 

35 

02 


LDA SX 

3373 20 

00 

F8 


JSR SUB 

placed in Rz 


3473 

48 




PHA 

3376 20 

10 

FD 

TRIJ4 

JSR MVZY 



3474 

29 

7F 



AND#7F 

3379 20 

1C 

FD 


JSR MVMX 



3476 

8D 

32 

02 


STA SX 

337C 20 

16 

FA 


JSR DIVIDE 



3479 

20 

BF 

FC 


JSR XSY 

337F AD 

6A 

02 


LDA EZ 



347C 

20 

OA 

35 


JSR ONEX 

3382 C9 

06 



CMP#06 



34?F 

20 

08 

F8 


JSR ADD 

3384 90 

E7 



BCC TRIG3 



3482 

20 

BF 

FC 


JSR XSY 

3386 2C 

59 

02 


BIT SZ 



3485 

20 

16 

FA 


JSR DIVIDE 

3389 70 

E2 



BVS TRIG3 



3488 

20 

OC 

FD 


JSR MVZX 

338B AD 

59 

02 


LDA SZ 



348B 

20 

A6 

FC 


JSR XZTST 

338E 48 




PHA 



348E 

FO 

26 



BEQ ATAN2 

338F 20 

D2 

FC 


JSR INF IN 



3490 

2C 

35 

02 


BIT SX 

3392 68 




PLA 



3493 

50 

OA 



BVC ATAN1 

3393 8D 

59 

02 


STA SZ 



3495 

AD 

46 

02 


LDA EX 

3396 4c 

75 

35 


JMP CHOPIT 



3498 

DO 

05 



BNE ATAN1 

3399 20 

A8 

33 

COS 

JSR TRIG5 

COS(Rx) found 

and 

349A 

AQ 

99 



LDA#99 

339C 20 

00 

F8 


JSR SUB 

placed in Rz 


349 c 

8D 

46 

02 


STA EX 

339F 20 

14 

FD 


JSR MVZM 



349 F 

20 

78 

FB 

ATAN1 

JSR ATANX 

33A2 20 

00 

F8 


JSR SUB 



34 A2 

68 




PLA 

33A5 4C 

5A 

33 


JMP TRIG1 



34A3 

48 




PHA 

33A8 A9 

FF 


TRIG5 

LDA#FF 

Rx can be any 

value 

34a4 

29 

40 



AND#40 

33AA 85 

18 



STA QUADCT 



34a6 

DO 

OE 



BNE ATAN2 

33AC 2C 

35 

02 

TRIG6 

BIT SX 



34A8 

20 

OC 

FD 


JSR MVZX 

33AF 30 

OC 



BMI TRIG7 



34AB 

AQ 

12 



LDA#12 

33B1 20 

18 

34 


JSR Y360 

angle is pos 


34 AD 

20 

68 

35 


JSR SETCON 

33B4 20 

00 

F8 


JSR SUB 



34B0 

20 

BF 

FC 


JSR XSY 

33B7 20 

OC 

FD 


JSR MVZX 



34B3 

20 

00 

F8 


JSR SUB 

33BA 4c 

A ; 

33 


JMP TRIG6 



34B6 

68 



ATAN2 

PLA 

33BD 20 

18 

34 

TRIG7 

JSR Y360 

angle is neg 


34B7 

29 

80 



AND#80 

33CO 20 

08 

F8 


JSR ADD 



34B9 

OD 

59 

02 


ORA SZ 

33C3 20 

OC 

FD 


JSR MVZX 



34BC 

8D 

59 

02 


STA SZ 

33C6 2C 

35 

02 


BIT SX 



34BF 

20 

OC 

FD 


JSR MVZX 

3309 30 

F 2 



BMI TRIG? 



34c 2 

20 

IE 

35 


JSR DEG 

33CB 20 

13 

34 

TRIG8 

JSR Y90 



34C5 

68 




PLA 

33CE 20 

00 

F8 


JSR SUB 



34C6 

85 

00 



STA N 

33D1 20 

OC 

FD 


JSR MVZX 



34c 8 

60 




RTS 

33D4 E6 

18 



INC QUADCT 



34c 9 

2C 

35 

02 

ARCSET 

BIT SX 

33D6 2C 

35 

02 


BIT SX 



34CC 

70 

17 



BVS ARC2 

33D9 10 

FO 



BPL TRIG8 



34C E 

AD 

36 

02 


LDA SX+1 

33DB A5 

18 



LDA QUADCT 

angle between 

-90 and 0 

34D1 

48 




PHA 

33DD 4A 




LSR A 



34D2 

AD 

35 

02 


LDA SX 

33DE B0 

09 



BCS TRIG9 



34D5 

48 




PHA 

33E0 20 

13 

34 


JSR Y90 



34d6 

20 

71 

FD 


JSR CLRX 

33E3 20 

08 

F8 


JSR ADD 



34D9 

68 




PLA 

33E6 20 

OC 

FD 


JSR MVZX 



34DA 

8D 

35 

02 


STA SX 

33E9 20 

13 

34 

TRIG9 

JSR Y90 



34DD 

68 




PLA 

33EC 20 

16 

FA 


JSR DIVIDE 



34DE 

FO 

02 



BEQ ARC1 

33EF 20 

OC 

FD 


JSR MVZX 



34 EO 

AQ 

01 



LDA#01 

33F2 A5 

00 



LDA N 



34 E2 

8D 

36 

02 

ARC1 

STA SX+1 


Number 20 


Rz=TAN(X/2) 


give results in degrees 

angle in 1st quad 
angle in 2nd quad 

Ry=180 


Ry=Pi/2 

sign 

convert to degrees 

Rx less one 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 



34E5 20 

EC 

FC 

ARC2 

J SR MVXY 

-i is x is n 

35B6 

20 

OA 

35 


JSR ONEX 

34E8 20 

FO 

FC 


J SR MVXZ 


35B9 

68 




PLA 

34 EB A9 

01 



LDA/01 


35BA 

49 




PHA 

34ED 20 

82 

31 


J SR STORE 

o 

35BB 

AA 




TAX 

34F0 20 

OB 

F9 


J SR MUL 

X 2 

35BC 

A9 

05 



LDA*05 

34F3 20 

10 

FD 


J SR MVZY 


35BE 

9D 

37 

02 


STA SX+2.X 

34F6 20 

OA 

35 


J SR ONEX 

_ 

35C1 

20 

08 

F8 


JSR ADD 

34F9 20 

00 

F8 


J SR SUB 

1-X 2 

35C4 

20 

10 

Fil 


JSR MVZY 

34FC 20 

OC 

FD 


J SR MVZX 


3507 

20 

87 

FD 


JSR CLRZ 

34FF 20 

72 

32 


JSR SQRT 

SQR( 1-X^ ) 

35CA 

20 

OA 

35 


JSR ONEX 

3502 20 

OC 

FD 


J SR MVZX 


35CD 

20 

BF 

FC 


JSR XSY 

3505 A9 

01 



LDA/01 


35DO 

68 




PLA 

350? 4c 

BB 

31 


JMP RECALL 

Ry • ARC 

35D1 

AA 




TAX 




; 



3502 

E8 




INX 

350A 20 

71 

FD 

ONEX 

JSR CLRX 


35D3 

86 

00 



STX N 

350D A9 

01 



LD A* 01 


35D5 

20 

00 

F8 


JSR SUB 

35OF 80 

36 

02 


3TA RX+1 

Rx=l,000 

3508 

20 

OC 

rD 


JSR MVZX 

3512 60 




RTS 


35DB 

20 

A6 

FC 


JSR XZTST 




J 



35UE 

FO 

07 



BEQ RNDF2 

3513 AI) 

35 

02 

ABS 

LDA S X 

Absolute value 

35 EO 

68 




PLA 

3516 29 

Vi- 



AND/7F 


35E1 

49 




PHA 

3519 8d 

35 

02 


STA 3X 


35E2 

29 

80 



AND/80 

351B 4C 

FO 

FC 


JMP MVXZ 


35E4 

OD 

35 

02 


ORA SX 




; 



35E? 

8D 

35 

02 

RNDF2 

STA SX 

351E A9 

00 


DEC 

LDA//00 

convert to deg 

35EA 

68 




PLA 

3520 20 

68 

35 


JSR SETCON 

Pi/180 

35EB 

20 

FO 

FC 

HNDF3 

JSR MVXZ 

3523 4c 

16 

FA 


JMP DIVIDE 


35EE 

68 




PLA 




I 



35EF 

85 

00 



STA N 

3526 A9 

00 


RAD 

LDA*00 

convert to rad 

35F1 

60 




RTS 

3528 20 

68 

35 


JSR SETCON 

Fi/180 

3600 

4c 

00 

00 

INVEC 

JMP CHAR IN 

352B 4C 

OB 

F9 


JMP MUL 


3603 

4c 

00 

00 

OTVEC 

JMP CHAROT 




; 



3606 

OD 



ECHO 

BYTE OD 

352E 20 

00 

FD 

XRY 

JSR MVYZ 

raise Kx to Ry 

360? 

A9 

01 


SCICAL 

LDA//01 

3531 A9 

01 



LDA//01 


3609 

85 

IB 



STA CALI 

3533 20 

82 

31 


JSR STORE 


36ob 

C6 

IB 


BACK 

DEC CALI 

3536 20 

10 

32 


JSR LOOT 


360d 

20 

00 

36 

L00P1 

JSR INVEC 

3539 20 

OC 

FD 


JSR MVZX 


3610 

C9 

08 



CMP/08 

3530 A9 

01 



LDA//01 


3612 

FO 

F7 



BEQ BACK 

353E 20 

BB 

31 


JSR RECALL 


3614 

A6 

IB 



LDX CALI 

3541 20 

03 

r 9 


JSR MUL 


3616 

95 

40 



STA LR,X 

3544 20 

OC 

FD 


JSR MVZX 


3618 

E6 

IB 



INC CALI 

354? 4c 

:• 9 

32 


JMP ALOG 


361A 

C9 

OD 



CMP/OD 




• 



3610 

DO 

EF 



BNE L00P1 

354a 20 

EC 

FC 

INV 

JSR MVXY 

find L/Rx 

361E 

AD 

06 

36 


LDA ECHO 

354D 20 

OA 

35 


JSR ONEX 


3621 

2 0 

03 

36 


JSR OTVEC 

3550 4c 

16 

FA 


JMP DIVIDE 


3624 

A5 

40 



LDA LR 




» 



3626 

48 




PHA 

3553 A9 

21 


FIE 

LDA/21 

set Ry=Pi 

362? 

AO 

40 



LDA/40 

3555 4c 

68 

35 


JMP SETCON 


3629 

85 

08 



STA ARJYL 




} 



362B 

85 

OA 



STA RES 

3559 =8 



HEXDEC 

SED 

convert JNT from 

362D 

A9 

00 



LDA/00 

3559 E6 

03 



INC CUT 

HEX to BCD 

362F 

85 

09 



STA ARGYH 

355B A9 

99 



LDA/99 


3631 

85 

OB 



STA RES+1 

3 5 5U 18 



HEX1 

CLC 


3633 

AO 

02 



LDY//02 

355E 69 

01 



ADC .7 01 


3635 

20 

OC 

3? 


JSR LOAD 

3560 C6 

03 



DEC CNT 


3638 

BO 

12 



BC5 HAV1 

3562 DO 

F9 



BNE HEX1 


363a 

AS 

43 



LDA LR +3 

3564 85 

03 



STA CNT 


3630 

20 

IB 

3? 


JSR LTRTST 

3566 D8 




CLD 


363F 

90 

6D 



BCC FUNCTN 

3567 60 




RTS 


3641 

AS 

42 



LDA LR+2 




J 



3643 

20 

BB 

31 


JSR RECALL 

3568 85 

01 


SETCON 

STA NKON 

load constant in Ry 

3646 

C9 

FF 



CMP/FF 

356A A9 

CO 



LDA//CO 


3648 

FO 

17 



BEQ WHATC 

356c 85 

OE 



STA KOH 


364A 

AO 

03 



LDY/03 

356E A9 

37 



LDA//37 


364c 

20 

FC 

FC 

HA VI 

JSR MVYX 

3570 85 

OF 



STA KONH 


364f 

B1 

08 



LDA(ARGYL),Y 

3572 4c 

92 

FD 


JMP LOOKUP 


3651 

48 




PHA 




; 



3652 

C9 

OD 



CMP//0D 

3575 A6 

00 


CHOPIT 

LDX N 

remove urmedded 0’s 

3654 

FO 

OD 



BEQ OPS 

3577 Bd 

59 

02 

CH0P1 

LDA SZ,X 

by adjusting PREC 

3656 

C8 




INY 

357A DO 

OA 



BNE CH0P2 


365? 

20 

OC 

37 


JSR LOAD 

3570 CA 




DEX 


365A 

BO 

07 



BCS OPS 

357D DO 

P8 



BNE CH0P1 


3650 

20 

BB 

31 


JSR RECALL 

357F 8E 

59 

02 


STX SZ 

man=0,clear sign,exp 

365F 

C9 

FF 



CMP//FF 

3582 8E 

6A 

02 


STX EZ 


3661 

FO 

20 


WHATC 

BEQ WHAT 

3585 E8 




1NX 


3663 

68 



OPS 

FLA 

3586 86 

10 


CH0P2 

STX PR EC 


3664 

20 

25 

37 


JSR OPEKT 

3588 60 




RTS 


3667 

20 

OC 

FD 


JSR MVZX 




; 



366A 

A 6 

00 



LDX N 

3589 98 



PAGADD 

TYA 

add Y to ARiY 

366C 

CA 




DEX 

358A D8 




CLD 


366D 

CA 




DEX 

358B 18 




CLC 


366E 

20 

97 

35 

OUT 

JSR RNDF 

358C 65 

08 



ADC ARJYL 


3671 

20 

75 

35 


JSR CHOPIT 

358E 85 

08 



STA ARJYL 


3674 

68 




PLA 

3590 A9 

00 



LDA/00 


3675 

C9 

40 



CMP/40 

3592 65 

09 



ADC AROYH 


3677 

FO 

OE 



BEQ 0UT1 

3594 85 

09 



STA ARGYH 


3679 

20 

lb 

3? 


JSR LTRTST 

3596 60 




RTS 


3670 

BO 

7B 



BCS WHAT 

3597 A5 

00 


HNDF 

LDA N 

round off routine 

367E 

20 

82 

31 


JSR STORE 

3599 48 




PHA 

round off to X 

3681 

C9 

FF 



CMP/FF 

359A A9 

10 



LDA/10 


3683 

FO 

74 


WHATD 

BEQ WHAT 

359C 85 

00 



STA N 


3685 

DO 

80 



BNE SCICAL 

359E 2C 

35 

02 


BIT SX 


3687 

20 

?9 

30 

0UT1 

JSR UNPACK 

35A1 70 

05 



BVS RNDF1 


368A 

A9 

OD 



LDA* OD 

35A3 CD 

46 

02 


CMP EX 


368C 

91 

OA 



STA(RES ) ,Y 

35A6 90 

43 



BCC RNDF3 


368E 

C8 




INY 

35A8 AD 

35 

02 

RNDF1 

LDA SX 


368F 

AI 

06 

36 


LDA ECHO 

35AB 48 




PHA 


3692 

91 

OA 



STA(RES ) ,Y 

35AC 29 

7F 



ANF.-/7F 


3694 

A2 

00 


DISP 

LDX/OO 

35AE 80 

35 

02 


STA SX 


3696 

86 

IB 



STX CALI 

35B1 8A 




TXA 


3698 

A6 

IB 


DISP1 

LDX CALI 

35B2 48 




PHA 


369A 

B5 

40 



LDA LR,X 

35B3 20 

EC 

FC 


JSR MVXY 


3690 

CD 

06 

36 


CMP ECHO 

Page 20 



Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, 

Box E, 

Menlo Park, CA 94025 

434 













user input routine 
user output routine 
echo character 
START OF ROUTINE 

backspace routine 

backspace? 

yes 

X points to open cell 
store chars at 0040 

carriage return? 


Echo character 
assignment char 


number loaded 

letter found,test function 
function found 
fetch number into Ry 
number not in memory 

operation 
carriage return 


two number op 


result in RZ 

remove unwanted zero’s 

assignment 

s>? 

display result 
assignment a letter? 
non letter 
save result 

no room in pg 03 
unconditional 
display Rz 
car ret 


echo character 


last character? 


Number 20 



MICROSOFT-MITS EXCLUSIVE 
LICENSE TERMINATED 


FIX FOR ELDERLY EDITOR/ASSEMBLER 


News Release Received: 77 Nov 23 

Microsoft’s BASIC for the 8080 and Z-80, the first resident 
high-level language for a microprocessor, is now generally 
available on both a single copy and OEM basis. The BASIC 
became the subject of an extended legal dispute which resulted 
in the termination of an exclusive license to MITS, Inc. 

The BASIC, best known in the field as Altair tm BASIC has 
been in use for lYt years and has a user base of over 5000. 
Several software firms offer applications software written in 
Microsoft’s BASIC. Current OEM users of the BASIC include 
General Electric, National Cash Register, Applied Digital Data 
Systems, Radio Shack and Data Terminals and Communica¬ 
tions. 


Dear Dr. Dobbs, Dated: 77 Sep 6 

Here is more data on that outstanding piece of junk, the 
M-T free Editor-Assembler. My version is the one distributed 
to clubs by Processor Technology about two years ago. I have 
found PCHL assembles as DF, not E9. The fix for that is easy; 
change the code in the table. In my listing it is location F978. 

I have also found that the pseudo-op DB is counted as three 
bytes in the first pass; this makes all values in the symbol 
table be off by 2 x n (where n is the number of DB statements 
preceding the symbol). The fix for that is more subtle. In 
locations F78D (DATA1), change JMP OPZ to JMP patch (a 
four-byte area). At patch, put XRA A (AF), JMP OPZ 
(C3 6E FA). 

Jim Kaufman 
2890 15 th St. 

Boulder, CO 80302 




369F F0 

0? 



BEQ DISP2 

yes 

36A1 20 

03 

36 


JSR OTVEC 

36A4 e6 

lb 



INC CALI 


36a6 DO 

P 0 



BNE DISP1 

unconditional 

36a8 20 

03 

36 

DISP2 

JSR OUTVEC 


36AB 4c 

07 

36 


JMP SCICAL 


36AE AO 

00 


FUNCTN 

LDYtfOO 

function found 

36BO A2 

00 



LDX#00 


36B2 20 

E4 

36 


JSR LOOK 

match 1st letter 

36B5 20 

E4 

36 


JSR LOOK 

match 2nd letter 

36B8 20 

E4 

36 


JSR LOOK 

match 3rd letter 

36BB B9 

86 

37 


LDA TAB2-1,Y 

Add Hi byte 

36BE 85 

1C 



STA CAL2 

36C0 39 85 

37 


LDA TAB2-2,Y 

Add Lo byte 

36C3 85 

IB 



STA CALI 

36C5 A0 

06 



LDY#06 


3607 20 

OC 

37 


JSR LOAD 

load arg 

36CA B0 

07 



BCS FUN1 

36CC 20 

BB 

31 


JSR RECALL 


36CF C9 

FF 



CMP#?F 


36D1 F0 

26 



BEQ V/HAT 

number not in mem 

36D3 20 

FC 

FC 

FUN1 

JSR MVYX 


36D6 20 

El 

36 


JSR FUN 

perform function 

36D9 20 

OC 

FD 


JSR MVZX 


36DC A2 

08 



LDX#08 

round off to 8 digits 

36DE 4c 

6E 

36 


JMP OUT 

display result 

36E1 6c 

IB 

00 

FUN 

JMP(CALI) 

36e4 B9 

4£ 

37 

LOOK 

LDA TAB1,Y 

compare letter to table 

36E7 D5 

42 



CMP LR+2.X 

36E9 F0 

OB 



BEQ FOUND 


36EB C9 

FF 



CMP#FF 

end of table 

36ED F0 

05 



BEQ NTFND 


36EF C8 




I NY 

next position 

36FO C8 




INY 


36F1 C8 




INY 


36F2 DO 

FO 



BNE LOOK 


36F4 FO 

03 


NTFI'TO 

BEQ WHAT 

function not there 

36F6 58 



FOUND 

I NX 


36F7 C8 




INY 


36f8 60 




RTS 


36F9 A2 

05 


WHAT 

LDX//05 

output "WHAT" 

36FB BD 

06 

37 

WHAT1 

LDA WHAT2.X 


36 fe 95 

40 



STA LR,X 


3700 CA 




DEX 


3701 10 

F8 



BPL WHAT1 


3703 4C 

04 

36 


JMP DISP 


3706 57 

48 

41 


BYTE 57 48 41 

"WHAT cr If" 

3709 5 1 * 

OD 

OA 


BYTE 54 OD OA 


370C B1 

08 


LOAD 

LDA(ARGYL),Y 

load varible into Ry 

370E 20 

IB 

37 


JSR LTRTST 

3711 90 

07 



BCC LOADl 


3713 20 

89 

35 


JSR PACADD 

adjust address 

3716 20 

00 

30 


JSR PACKER 

load number 

3719 38 




SEC 


371A 60 



LOADl 

RTS 


371B C9 

41 


LTRTST 

CMP#4l 

test for letter 

371D 90 

04 



BCC BAD 


371F C9 

5B 



CMP//5B 


3721 90 

3723 38 

3724 60 

01 


BAD 

BCC OUTL 

SEC 

C = l,non letter 



CUTL 

RTS 


3725 C9 

5E 


OPERT 

CMP# 5® 

raise to power 

3727 DO 

03 



BNE OP1 

3729 4c 

2E 

35 


JMP XRY 



372C C9 
372E DO 
3730 4c 

2A 

03 

OB 

F9 

0P1 

CMP#2A 

BNE 0P2 

JMP MUL 

• 

3733 C9 
3735 DO 
3737 4c 

2F 

03 

16 

FA 

0P2 

CMP#2F 

BNE 0P3 

JMP DIVIDE 

/ 

373A C9 
373C DO 
373E 4c 

2B 

03 

08 

F8 

0P3 

CMP#2B 

BNE 0P4 

JMP ADD 

+ 

3741 C9 
3743 DO 
3745 4C 

ZD 

03 

00 

F8 

0P4 

CMP//2D 

BNE 0P5 

JMP SUB 

' 

3748 4c 

FO 

FC 

0P5 

JMP MVXZ 



Tables : 

374B 41 42 53 ABS TAB1 function code names 

374E 41 43 53 ACS 

3751 41 4C 47 ALS 

3754 41 53 4E ASN 

3757 41 54 4E ATN 

375A 43 4f 53 COS 

3750 44 45 47 de; 

3760 46 4E 41 FNA 

3763 46 4E 42 FNB 

3766 46 4E 43 FNC 

3769 49 4E 56 INV 

3760 4C 4? 47 LOS 

376F 52 41 44 RAD 

3772 53 49 4E SIN 

3775 53 51 52 SQR 

3778 54 41 4E TAN 

377B FF FF FF 

377E FF FF FF 

3781 FF FF FF 

3784 FF FF FF 

3787 FF 13 35 TAB2 function addresses 

378A FF 3E 34 

3?8D FF F9 32 

3790 FF 54 34 

3793 FF 6D 34 

3796 FF 99 33 

3799 FF IE 35 

379C FF F0 FC 

379F FF F0 FC 

37A2 FF FO FC 

37A5 FF 4a 35 

37A8 FF 10 32 

37AB FF 26 35 

37AE FF 5 1 * 33 

37B1 FF 72 32 

37B4 FF 70 33 

37B7 FF FF FF 

37BA FF FF FF 

37BD FF FF FF 

37CO 40 1? 45 32 92 51 99 40 F2 fi/180 00 

37C9 40 31 62 27 76 60 16 70 FI 1/3QK(10) 09 


37D2 00 15 70 79 63 26 79 50 F0 Pi/2 12 
37DB 00 18 F2 180 IB 
37DE 00 90 FI 90 IE 
37E1 00 31 41 59 26 53 59 FO Pi 21 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 21 


435 




GPM for the M6800 


Frits van der Wateren 
Physical Laboratory 
Wilhemina Hospital 
Amsterdam 1056 - E.G 
The Netherlands 


Received: 77 Nov 28 


This GPM version is written after an article in The Compu¬ 
ter Journal, Vol. 8, page 225, by C. Strachey. I will give a 
short explanation about GPM here. For further details see the 
article mentioned above. 

GPM is a general purpose macro generator, i.e. every 
character from the input device is directly echoed on the out¬ 
put device until the start of a macro call. This call is then 
replaced by its body, with all evaluation of parameters etc. 
And the final result appears then on the output device. 

A macro call is initiated by the $ sign and looks like: 

SMACRONAME, PARAMETER 1, PARAMETER 2; 

We see three special characters: $ , ; . The action of $ is 
already mentioned above. The , is used to separate the 
different items. And the ; closes the macro call. These charac¬ 
ters are called “warning characters” in GPM. MACRONAME is 
now evaluated with the parameters: PARAMETER 1 and 
PARAMETER 2. Beyond the standard macros which are 
implemented in the system, you must define your own macros 
to be used. This is done by the standard macro DEF. We 
want, for instance, to define a macro SEQUENCE which 
gives as a result 0123456789. In GPM this looks like: 

$DEF,SEQUENCE,0123456789; 

If we now call the macro SEQUENCE by: 

SSEQUENCE; 


we get: 


0123456789 


as a result on the output device. 

There are some other warning characters, namely: < > 
and #. The characters < and > are used as string quotes and 
have the effect of preventing evaluation of any macro calls 
inside. 

In place of an evaluation, however, one “layer” of string 
quotes is removed. The warning character #, which is always 
followed by one single character, has, during the evaluation, 
as action that it is replaced by the parameter supplied in the 
call. The character which follows # may be any number from 
0 to 9 and any letter from A to Z. A stands for 10, B for 11, 
etc. Now #1 stands for parameter 1 and so on, while #0 
stands for the macro name itself. 

Now a real example of a macro, which adds 2 to the 
contents of a memory location. We define ADD2 as: 

$DEF,ADD2,< LDAB #1 

ADDB < # > 2 

STAB #1 

>; 

We see that # in line 2 must be quoted to prevent evaluation, 
otherwise it would be replaced by parameter 2, which gives 
nothing as a result in this case. 

A call to ADD2 with DATA as a parameter, thus: 

$ADD2,DATA; 

Will give as a result: 

LDAB DATA 

ADDB #2 

STAB DATA 


Macro calls may be nested to any level. See, however, for a 
more detailed description of these techniques the article by 
Strachey. 

Standard (or machine) macros in the M6800 implementation: 

$DEF, macroname, macrobody; 

Define the macro “macroname” with body: “macrobody”. 
This macro body, in turn, may contain both macro calls 
and definitions. 

$VAL, macroname; 

This call has as a result the body of macro “macroname” 
without any evaluation. Applying this macro to a machine 
macro or a non existing macro, has nothing as a result. 
$UPDATE, macroname, newbody; 

This macro has the same sort of effect as DEF except that 
“macroname” is not newly defined but already exists, and 
is supplied with a new body, which is given as second argu¬ 
ment in UPDATE. The new body may be of equal length 
or shorter. A longer body will be truncated, but will give no 
error message. 

$CLEAR; 

Reinitializes GPM, i.e all user-defined macros are deleted 
and all current evaluations are aborted. The warning charac¬ 
ters are set to their default values. 

$DUPLEX,n; 

The only effect of DUPLEX is setting the input mode of 
the TTY to half or full duplex. When n=l the input charac¬ 
ters are echoed; when n=0 the input characters are not 
echoed. This feature is very useful when using GPM inter¬ 
actively. 

$ USER,xxxx, string; 

Goto user routine at address xxxx (hex) with “string” 
as parameter, “string”, however, may be omitted, thus: 
$USER,xxxx; when the address is shorter than 4 digits, 
the MSB digits are supplied with zeros. Non-hex characters 
are ignored. One must be familiar with the internal struc¬ 
ture of GPM, when using this macro call. 

$CW,<abcdef>; 

Change warning characters in the following sequence: 
$,;#>< So becomes “a” and becomes “b”, etc. 
This is of course an absurd example. $CW,<[ . ] ""\ / >; 
would be a more sensible definition. Now all warning 
characters are lower case characters on most terminals. 
When using this feature it is best to use this macro immedi¬ 
ately after starting GPM. 

As we see this GPM version has no error messages at all 
so everything is allowed. This is the greatest difference 
between this implementation and that of Strachey; and in my 
opinion an improvement. When you use in a definition, for 
instance, #4 as a parameter call. And it seems that in the 
actual macro call parameter 4 is not supplied, the #4 is 
replaced by the null string i.e. nothing, rather than an error 
message. This may be very handy. The only problem we can 
meet sometimes is a lack of memory space. GPM then types: 
** MEMORY FULL ** and the current evaluation is aborted. 
All macros defined so far are retained. 


Page 22 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


436 






SL nr cc 

o o <t 

I- X 

f- q o 
o <t 
jq u: i— 

x UJ 
•— «o 
<C 03 « 
X O 
O >- Z 


x 

> x 
<r x - 
wohn 


> • 

UJ cc 
X X 

H 
(— z 

IT. —• 
UJ O 
3 X 
O 

_J X 

o 
uj <r 
x f- 


co dc 

• o 

x x <r 

0<H 
X 03 
E. O 
o z 
h- x o 

h- f— 

O ►—« X 


xx 3 <txx<rxxxxx 

HOoJul2l-i:Q2aHQ 

o;x.-ox>-‘OJn3xraxo3x 


C^U<r JOKhCJXXHW 

Qoiuowujo^m/ia^h 

X -t lQ X <rCTjXh-CQ[U_Jt—x 


o 
cc l 



X X 




03 C- 

3L 


3 3 




<X 2> 


f— 

Q 

O 

o 


1 — -X 




<r 


►—t 

<C 

h- x 

X 


<r co - 




X CO 


c 

X 

X O O 

X 


X o 




3 


3 

X 

03 X Z 



X >“ Z 









X 






s 





<r 


CO 



07 

O 




X XX 

X 

X 

X 

X X 


Q 

h- 

<x 


X 

X ox 

o 

X 

f- X 

O X 

<r 

<X 

H 

•—* 

X 

O X 

X H. > 


> 

-H 03 

(— > 

— X 

X 

O 

o 

•> 

z •> 

o — o <r 

<T 

<r 

X ZD CM 

zd <r 

o •* 

X X 

CO CQ 

•x 

S3 

t-i — 

Q X O 03 


03 

X 3 X CC 

O 03 

<C «S3 


XXC2II-tKXW 
hQUJWKwah 

wjanacQjcc 


x x <t 

W U1 Q 
0-IX 


<t <t 

X X o 

CO CO o 

<X <C 33 


x <r 

ID I- 
X CO 


: i— uj 

: z X : 
►i f— ► 

) o 

« X X f 


o 

X 


a cc i 
z o ► 

<t 3 

c 

X h- f 
m < 
x > 


x uj —< h- x <i UJ 


x vo x 

3 IiJ 5C3>6J<I ic J>® 


—* e x 


xxxxxxxxxx<r 

f— Qh-QI— Qf—Qt—QQ 
WJWJWJWJWJJ 


XXX 
2 H Q 
-• 03 X 


hh X XU. 

I— UJ Z u 
ID X UJUJZ 
O Z X X -* 
X ^ O I- 3 X 

****** 


X 

ID 

f— 

UJ 


X 

<r 

UJ 









Q 





r- 


c 



Q 








re 





CM 


CM 



re 

X 

o 

S3 

O O 

<X 

<T 

— A 

— 

re 

03 — 



re CM ■‘T x 

X 

<t A CM CM 

K3 X 



“* 

S3 S3 

S3 

ca — 

re 

re 

— CM 

re 

& 

x re 



rere — — 

— 

re re re re 

re — 


re 

X 

x r- 

CO 

x re 

X 

vo 

X X 

X 

V*D r- <T MD 

C0 Q 

VO 

q r- Q x Q ov 

X 

x r- q re 

Q X CA 

VO 

X 

Q Q CM 

<t S3 

Q CM 

Q 

CM 

Q Q 

X 

<x 

•**■ CM <C 

<r re 

<T 

t"CM Xi Q <T K) 

Q Q CM X CM 

CO Q *0 

fO 

C 

'O 

iA 

JQ 

O X 

re 

CM 

<r vo 

CO 

.0 

q x re 

CM »0 

<r 

in co <r u ^ x 

re 

cm <r vo ^ 

X Q X 

S3 


— 

— — 

— — 

— — 

CM 

X 

CM CM CM 

CM 

CM CM "3 

»o »o 

fO »0 »0 ro »0 KJ K0 

<r 

-T -T <T -T 

<T -«T <T 

A 

A 


vo r- f- <T CM <7> 
<1 <T <T CM *0 <t »0 


i s n « C3 r rerererererererererererere (osQst^Qrapa s ss sss sss 


iAUjr-ir\»o®—• r- o* »o re *oa> 
— re — — — s)cj — — — re — — 

X X X X X X U. uju.ujwcou.uj 
QQQQQUJQQQQ ctSQQ 

ui5acM^r'^>oo<roUJcacM'«rin f ^' 

SrS<50taS)(S(SSJS3CS)S3SJS)S3 


e 

UJ 

in 

co 

<r 

o 


X -o 
U S D 
(- CJ h 
<c 00 I 

X VO D 
UJ El 2 
Z C 

UJ UJ c. 

O X 
Ohil 
X 2 

O X I— • *-• X 

<3 c o z e: f— 

ZU- 2 <£>-_] UJ 

►h >- J> X Ul Z 

UJ Z X ox 

CO o UJ 03 f— X UJ 

OhjiAH<hX 
X(— O CM m o; 3 h 


<t 

X 

o 






• 


• <r 

* z x 





Q 


X E O 

X • —* o 



X 

03 

X 


<C X 

X x 



• 

X 

X 


X Q O 

X <X O X 



■Ik 

X 

< 


o x <r 

O X CC X 




h- 

X 


X E 

o o x 



cc 

03 O 

X 


CD X 

X <1 X 



o 

*— < 

o 


Z (- Q 

1- X E 



r~- 

x X 



*-• z X 

CD o h- 



i • 

1- <C 

1- DC 


z x x 

Z X h- 03 



1 - o 

X 

m CM 


X X 

X ID 03 X X 



►H O 

x o 

03 


<£ f— f— 

X o <X x 

• 


0C3 X 

o 


* 

3 O Z 

• OlXHX 

Z 

X 

• 

1*- X 

03 f— 

* 

Z X 

z 

X 

<t 

CD 

X 

03 

* 

VO 

O O O ID O 

• OS 

h- 

z z 

x <r 

X X 

* 

X X 

1—• f—* 1— O 1— 1 

>- X 

—1 • 

*—1 *—* 

<t 

h- 

* 

o o 

o 

X 3— 

X 03 

f— 

-< X 

X 

* 


03 03 O) 03 

zc <z 

in Q 

f— • 

1— o • 

X 


1— «— 

(—|—f—XI— 

O 3 

o z 

x cc 

Z Z 1- Z> x 


X X 

z Z Z (— z 

<r 

DZ <t 

CO <c 

X H x 

<t X 

03 

<s <r <r 

►-4—4 — 0 — 

cc OC 

X 

X 

03 03 03 X f— 

z 

-f— h- 

0 0 0X0 

f— X 

<r cc 

x o 

03 


o 

S. 03 03 

a. a. a. C3 a. 

03 Q 

z x 

o 

• X • h- 

'N Z 

*“• 




UOffUC 

uj m uj 

x <t in 2 > 


Ul o X CO 

Z f— M Z 

Ul •-« ox 


E —< 03 — 

Xffl h 
O -i Z 

w cn o 
X — I X 
O X <2? 


o 

X 


o 

X 

o 

X 

o 


e 

X 

CD 


0 re SSS8SNSSre SSQNSNNN 


>- 

I— 

t-l 

X 


X VO 

£ si 
+ 

X f— X 

o —«o 

< aa o 

h- I x 

in r- o 


X 

x <c <r 

X — X X 

(«UN •. _J 

% <t -% is o 


>• o 

X E 
O X 
E E 
X 

E X 
X 
X CQ 
X < 
CQ X 

<r *-h 

X « 

H-* > 

<r <r 

> 

<r x 


X Q 
O X 
3 O 
3 
f— 

CQ h- 
X CO 

HH C 


O CO X 

X 3 — 

*n x *n 



* 

X 

h+ 

i— 

X CQ • 

X 

1— 03 X »-« I> 0)0 

X 


cc 




03 


S3 

* 

X 

Z 

X 

x <TH re — 

f— 

<t X X f- < X 



< 



<E 

<t h- 


S3 

* 


X 

<t 

o >- X • 


D<D‘tIX2 

X 


f— 




Z 


CO 

* 

X 

E 


<r x 2 L Oh 

03 

_I X h h t— <X 

03 

CQCQJOCQCQCOXQCaXrOCOCQCarQJQCQCnCQCD 

03 

03 

X 

<t 

<C X Hi 

CQ tO CO 

vo 

* 

<r 

X 

z 

X X • <t cc X 

< 

< X < Z z o 

<r 

OQQQQQOQQQQQQQQQQQOCC 


Q 

Q 

Q 

f— E o 

q q a 

E 

* 

X 

X 

< 

Z <C X Q O O 

X 

> O X X 03 -i 

CQ 

XXU.XXXXXXXXU_U.XXXX X X o 

X 

X 

X 

X 

03 “D X 

XXX 


* 

X 

X 


OC x o X 


X x e: h- o z; 



<t 







* 

z 

E 

X 

(— >-H • X 

— 

re x x x 



t-t 




X 



* 

X 

»—( 

X 

•*—03 1—1— 


z 03 x CQ CD 

* 

E 

H 




o 



* 

CD 


h- 

x X 03 

f— 

X h- —« X l x 

* 

x ox 

H 




f— 



* 


z 

X 

O X X X E 

X 

X x x E 00 x o 

* 

X h- x 

z 




<t 

<t E E 


* 

<r 

<r 

<t 

I> 3 X Q <1 

o 

30hH« CO) 

* 

CD Q > VO VO »- X 

M 

E 



X 

•-H < <C 


* 







* 

re x z < — — o o 


X 




0 3 3 


* 

* * 

* 

* 

****** * 

* 

******** 

* * * 

* OXXXOX003>3^Xa3X03<rrQ030 

* * * 

CD 



* * 

* <r x _J 


X 

o 

I— 

X 


8SSS008SSSSJ3SSISNCJS8-. 

rerererererererereresrererererererere® 

SW00<IuXS-.'O|Af'(^iTJQX-.'OiA p ‘ 
rerererereSI——— — — —— — — CMCMCMCM 
sossRisisssssisissrasscaQ 
^FJSSKMSSOSSSSlSSSSSQ O 


X Q 00 

x re x 
re — — ss -«r 
re re re (S re 

X X VO X 
oo u_ co <r h- 


S P3 Ss s 


o vo x 
X S — 


Q X — 
S P9 —' 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 23 

437 




x 

UJ 


VO KO 

a — 

cn co 


< <t 

o <x w 

QHQh 

<r co _j cc 


X 

‘ UJ 3 
: CQ ZD 


QQ : 

e - 


: o o 

UJ X 
> Q UJ 


' ir\ <r 

*r> 

> UJ 

i > 

SJ o 


—. a — 


u 

2 : 

UJ 

h- 

o 


Os 
3 

X I 
E 

O (S3 

O 

* * * # 


co 

> w cc 

J UJ UJ 

► Z> H- 
« ►-« O 

) o <r 
a: 

* <t 


> o 

> in x 
: <x ui 
' ^ x 

H 
M O 


<r 

c: 

uj 

_i 

1 in •* 
O UJ o 
2S >2 


<S + + 

w o o 00 

co x x x m x 

@>3<7>3H'C7>3*03 

* NJ * M * * M ^ M 


a] hfujcn o.H a.H j: w 

ZJEJZEJEOJH 

wajorQWoaOfflUa: 


UJ 

z> 

<t 

CO 


X 

: V 


X 

o 


o 

E * 


X X 
O UI 


X o 
<t <x 
X H* 
O Ui 

Q UJ 

<r o 
O 2 


3 

>- 
X 

O —J <£ 

2 ; CO •!> 

UJ UJ O 3 

£>*Z< 


o 

o 

2 

2 

X 

<r 

3 

x 


<c 

UJ 

CO 


CO 

e 

UJ 


X 

o 


X 

UJ 

CQ 

e 

uj 

£ 


X 

UJ 


E»rtU «2 .*< % J A 



U X 

X X x 3 

O 


<r e <t 

X 


Q 

0 2 H- >- O 

UI Q 

E <r 

3 O UJ 3 

f— 

H 


0 

E 3 

2 

H- 3 - m CO 3 fO K <TH A 

O 2 

3 X H. 

=> H« > 3 

H. 

M 

• * * 


<X 3 X 

<£ 

X Q +H* + X + <+ -* + 

<r <r 

E CO 

<t 3 <■ 3 

O 

2 

Q * Q 

3 

3 3-> 


3ZS2SXSXSQa><S 

co 

% ca ^ cc 

CO 0 co u 

X 

CO — 


O 

CO 3 3 S CO 

X 

2303020C03030 

w z 








3 


3 -1 






X 


H* 


E <t 






O 


O 



O 2 UJ 
E —* -J 
UJ X UJ 
EXQ 


<r <r 

x<rx3xxxx<ix) 

QQEUJ2hWQQ:Qt 
J JflQ 


X 

<c 


X O CQ 
OOO 
U.U.U. 


X X O' c X X CO 
QXUJH2HH 
3 O CQ CO h CO x 


CO 

X 


3 

U 

e 


CO 

3 X 
X CO 
3 

* * * X 


cc jixaixcjxoxiaxara. 

WXEUJEUEUJEUJEUJE 

TftjUcQOcDOaOajOcQO 


X 

<r 


CQ ro »0 

ca c\j csi 


<7\ UJ Oi 

00 <7> Q *0 


a3<7>:QC-o* < T»o—. 

CQ S Q Q S S CJ CV) 63 

SQ-iU.S-Q-*LiJU.(7i 
CO CO CO CO 00 00 CO W CM <r 'O 

VO 00<r OUJ s Rj <T VO 00 <7> 
UIUJUJUJUJUUXU.UU. 

saaaaaaaaaa 


co ca -q- <t 
a a a a 


3 —* 3 ea m • 
—* S -* U. CM • 


— —— COCOCOCOCOOOCOCOCO 

ca a a a a a s a a a sea 


—«c\jca—• —* ui co si Lx. <T C' iT\ 

a<ra-«Taina»oacoaco® 


3 

3 

3 

Q 

<t 

Q 

3 

0 

r- 

r~ 

co 

3 

CP> 

Q 

<t 

_ 

r~ 

_ 

r~ 

_ 

r- 


r- 

_ 

r* 


Q 

Q 

r*- 

a 

<t 

a 

Q 

CQ 

00 

<r 

a 

Q 

►0 

3 

CO 

cr> 

CO 

&> 

co 

C7> 

co 

as 

co 

OS 

CO 

o» 

Q 

3 

_ 

<T 

VO 

r- 

<r 

O 

3 

_ 

»o 

■<r 

VO 


<E 

0 

3 

a 

co 

<T 

VO 

co 

<t 

0 

3 

a 

ca 

a 

—• 

—> 

—• 

CO 

CO 

CO 

CO 

fO 


rO 

fO 

»o 

»o 

»o 

»o 

<r 

<T 

■«T 

<T 

•«T 


<T 


m 

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 

ca 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 

a 


co 

• 3 

x o 

<t +* 

X > 

O UJ 
X 
>- X 
00 

o 

• CO • 
X *2 
<X 3 -• 
X —' <t 
o < X 

u. o 
UJ I 
X X ui 
<t o 
X X 2 

e <r H 

O UJ 
O CO 


X X 
•UJ 
CO 2 


X 

o 

H- 

< 


CO 

X 

UJ 


o 

X 

<4> < 

— UI 

<c co X 


CO 1 
X 


x uj x 
E 2 2 
O CQ -« 


X X X X UJ x 
HQUJH2Q 
tO JQCOCQ J 


-* »Q 

<r co <c 


xxx> 
hq w; 
to J Z * 


• X 

>- o 

Q I 
O UJ 
X 

c*. I 3 
Q 3 O 
UJ *-h 


3 

— 0 

H- 2 X 






E 

3 X 

CO 3 





CQ 

<r 

O 

3 < CQ 





CO 

2 

3 <r 

<t E 





3 

0 

X E 

X 2 3 






X 

H- 

3 X E 





H* 

0 

3 

3 





O 

<1 

CO X 

2 t— J—. 

X 

3 

CQ 


<t 

E 

— H* 

*-• 3 X 

X 

CO 

CO 


X 



<t X 3 

+ " 

3 

E 

X 

fr— 

X 

CO 3 

x **z 

VO Q 



1 

CO 

H 

-* O 

0 co • 

— 3 

Q 

Q 

VO 

CQ 

X 

X 

1 3 O 

< O 


Q 

—• 

3 

CO 

H> 

3 >- 2 

II • 

<r 

<c 

<t 

CO 




VO 



II 





—. II 



vo 





<r vo 



—• 




• Q 

X 11 — 



<t 




3 2 

3 X CQ 

+ 4- + 


11 

+ + 


CQ 

CO 

E 


o 

<t 

X 

H- 

co 

0Q 

3 

CO 


* 3 X 
2 O •* 
3C % II S i 


XCOXXC3X 
HhQXUJQ 
1 CO CC 3 O CO _I 


X 

UJ 


X <x 
H* X 
CO 03 


— — — — — X 

a <1 <rn <1 uj 


<t <r <t <t <c <c 

xx<iiz<rcu<i 

t-.COQOH.QQX 
COX _| •t W 3 <t a 


03 <c cq <c <r m <r < 

<r<t<r<c<tc<i<t 

xx<ra3<r<ro<x3xco 

H-C0Q31—.QXH-3QH* 

COX 3 COCO 3 COCOX 3 X 


VO 

<r 

1 

x 


fl 

X 


X 

H 

CO 

03 


03 

CO 

E 


CO 

CQ 


co 

03 


<r 03 a t m 


CO 

03 


<r<T<r<r<r<r<s<t 


X x <t 

H. CO Q 

co X 3 


a <t < o 

ZhQtD 
CO CO 3 co 


<t 3 X CO 
H. 3 Q H* 
CO X 3 X 


# # * * I 


3 
3 
CO 
* X 


CQ 

Q 


X 

3 


<t <E <X 
x Q <r <t 
H* Q H. Q 
CO < CO 3 


CO Q 
Q 

* * <r 


CO CO — <7> H" — CO — 

ca —« — ca cm ui — csi ea <a 


> 3 a — o 


-WCOU.UCML>OUItLtiJQOOCOU.CM«JO^UUL a 

<TCJ(SQQS)QcMQQUJaQC t acaQrOQQ0CJUJQCNj 
^gQUJta(M'Oin^i7>gQs - cm^tiah^oujs 

r"r=r-H-cooococooocotocoo»<*<7>o>o>o>o>o>o><i: 
sssssscaseassst^Ri a a a a a a a a 


»0 <T CO CM *0 — Q 

co co co co co co ca 

Q»0<7><7>(7>'7»<7*v.\l 

OJ <T 1 A ^[QQIl 

«x<t<<<x<t<c<r 
a a a a a a a a 


»o co a- co —. *0 —• —* 

CO CO CO 00 CO CO co CO 

U.WWCMP'l^cO^CMUiO) 
Q»OC7>C7><^ (7t (7> O fC Q fO 

-.fO«r^oo<OL-js-.'0 

:^CQCD.ZCQ«T3fflOUU 

.-a ^ ca ca ca o ca ca <a ca ca 


►o <r co ^ — 'O o »o <r^»o 

CO CO CO 3 CO CO CO CO cocococo 

u. ^«JSH^COHCOU10> 

Q<0(7>C7^C7>C7>C^<7>»OQfO QC7>(7>C7* 

<T.JDH-/7>3QX — rOa-03 H OtfljQ 

OOOOOOOQQQQ QQQQ 

caNcacacara ca<aca<aca 


Page 24 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


ca ca a fa 

Number 20 


438 












E 


-j 



• 






UJ 


X 


X 

CD 






E 


X 


X 

2 






1 


o 


X 

*—< 






X 




E 

X X 








X 


X 

X (- 






in 


H* 


E 

x in 


I s * 




o 


o 


1 

E 


X 




o 

X 

2 


X 

x in 


o 



x 

t—i 

f—< 

X 



E O 


< 



x 

> 

o 

X 


o 

O 


t—> 



UJ 

UJ 

2 



h- 

3 •-< 


in 

X 

in 

o 

X 

X 

in 

X 

2 

X 3 



_J 

X UJ 


X 

X 

o 

1 — 

•—1 

2 X 


2 

UJ 

X l— 

X 



o 

ID 


X 


— O 

O E 

X >- 

f- 

o 

X 

o 

2 

X 

o x 



UJ 

X CQ 

o 

H- 

X 

1 - O 

X 

X 

H 


Q CD 

X f- 

< 

2 


UQ 

X 

X 

CQ 

>~ 


UJ 2 

H* *—1 

E O 

UJ 

in 

E 

in x 


E 

in 2 


X «-i 

o 

X 

X 

H 

X 

h- X 

X X 

X 

h- < 


O X 

2 1— 

Q X 


2 

E 

2 

O X 

E 

2 


I- H- •» 

UJ 2 

2 ts| 

o 


1 

*-* 1— 

X CO 

1 

*-« X 

2 

< in 

X UJ 

UJ 

»- 

O 

X 

o in 

I-* E 

X 

o x 

*—i • 

E >- 

X 

X o 


X 


x o 

X 


X X 

< CQ 

2 >- X 

1- X 

X 3 

in 



E 

1- E 

X 

X 

X UJ 

c- O 2 O 

in o 

< f- 

»- 

3 

CO 

3 

X l 

ID 

3 I— 

O h- 

-< O 

o o 

•» 

2 

O 

+ 

O X 

X x 

2 

O 

1 UJ 

u. in 

X o 

in ii 


2 

X 

2 X 

in 

< 

2 m 

X _J 

A uj o o 

1 Q X 

x ~ 

o 


1 

H 

2 X 

X 

< 

UJ 

X >- 2 2 

in < o 

>• 

X 

X 

in 

X 

-i O 

O 

X 3 


X Q 

o 

•» z 
a. ui 
KOI 
111 h H 


>- >• 

CL Q. a. _ 

u. e: o o — n — •>— • 

.3 tkooxow <ri(/)x cs <r — 


+ xx 

U) X ^ X in X V? 

3 3 — 

a. a, <r i 


+ 

>< a□ x V 0 X 1 C X x —• X X — X 

•> 3 - — •«— * • + •* •*+ * 

-su.xwxsxx'iSc-.a.wa.'Oo^oiA 


cc 

LL 


UJ 

>- 


E »— 


> 

UJ 

cc 


X u 
I— UJ 
O X 
2 X 
UJ o 
_J o 

a ^ 
2 2 
<C < 


X X ^ x 


+ 

XV? xo V?XV?X 

s<txKH:x<ts<r-. 


<t X X 
X UJ UJ 
OLQCQ 
E E 
ID X X 
ZEE 
»-* I 

2 X X 
X 

< O CL 

3 0 0 
<r I- 

* * * 


< < < < < <<<<<<<<<<<< < < < < 

cxxxxxxxxxccxxxx<<<<<<<<<<<<xxxx 3xxxxxxx<<r<r<r 

1 1 -. n i.i u n n u ,-im n A u n n u n a-01-.QI—Ql—Ql—Z Zl-Q UJQLJHQC3(/)QaHQH 


cxocox3xxxa:x<<<<cea::r:xxxxxxxxxa:xxxx<<<<<<<<<<<<xxx: 

-Ql/lOQUJQl-Qy)QQhClhJt/l!/lhQU,UJLQQI-Q[/lQQhQQ(-QhQhQhQhQH2 2hl 
UTfflJCQjWJTJjWjWOTlWjQQWjjWj-jJjWjjWjWjWjWjWJWHHW. 


I "0 —1 X X —I —J~3 _] —1 X —J l 


X 

X 

<t 


CO V? —* 

S in CQ 

00 ir>s<r- , <iQ-■ — < —• < -* s co —• co co —• v> s a- —. s <r c* —.sco-*xcoct>»oo<Qa x < r-r*>s—•<ra—«^-*sco-* 

Q-C3C9U.QUJ-iCvjS 1SSW®0JS S S 00 S ->C9SI»>«S-<(SS-«CjSCvJSSSS(S(SSSS S S —•SeOSSSScNJOCOS 

LUU.L|C3 < TUJ r ^UJU.UJCUiJ^^ < ^^U.QQU.UJ(7iaiU.UJUJU.UJaUJUJL.UjWr^W^'J3r^W^-Wf^Wr^0OCOkUJ r ^liJliJli,UJUJJUJ‘£>^^^ 

QQOa3WQCJOQQ3jQ(7'<I(7'«I<rcQCQQQ(SlSQQUjaQ3QUJQa(n<t^<C»«t(7>«l(?i«t(7Wr(S8QQ'Mi3UJQaLiJcQQ(7i<r^<i 

X<OXco<V?X<OX-*»OAr , “<73CQOXcO' < r vot '“00<lOXScOAr~(7>,T3i-3U.— IO in 1“ (MO Q u. -•rOir>VOI^<7».T3QX-.»Oir\ f ^<tO UJ CScO 
OOOUa^QQQflQLJ'jJUluulwUJU.'U.li.U.U.U.li.u.U.S'S NCJNiSSS-. _____ _ _ <M<MOJ00<M00 COCOCO'O'O'O'O'O'O'O <T 
C0CNJCSlC^CS)CSJCVJCVlC\JCVJXCVJCSlC\JXC\JC0<NJCVJC\JXC , 0CNjC\JC0C0C'J»O»O»O»O»O»O»O>O»O'O*O»O'O'O»O'O*OfO»O»O»O'O'O'OfO»O»OfO'OK)X>'OfOrO 
SiS®Sl^SSPai , JQS(SS®f5aNSSQ(SfJSISSN'5JSQ 


< < 

X CO 
CO CO — v> 

S QCJ C9 


o 

x 


X 
h- 
CD 
2 . 
X . 


x x 
2 —* 


2 V + 

—< >- 3 

2 2 X II 

X UJ O czr 

— < X o 

+ 33 

3 x i'- in 

ii O UJ O UJ UJ 

3 2 CQ 2 >- V >• 


>- 3 
X M u 
0 3 0 
o - 
*in i- 
o UJ 3 
A 2 >- o 


o 

X 

o 


in 

3 

X 


X 

in 


x >- e: 
I— X o 
in o o 
o •> 
>- «x 

2 O UJ 
< 2 >- 


X 

I 

in 


«- o 

a x t—• in >- 

< <r x + x 

CO o HLOSK) O 

3J3X20330 


3 x <t 3 x x x o < o < 

UJOQUJWEZZlC 2 x 

CD'JJC0 - )UCD H £I1 *-• CQ 


>• 2 
X < 

o o 
o in 


^ >- X >- 

± X < x 

SO I— o 

o o 3 in o 


XUJU3C 
E2WWX 
O CQ Q CQ CQ 


x 

-J 

o 


>-0 2 
_j X u 

x < a 
x a 2 

< _J X 


X X 
UJ U! 


o e 
< uj 


X 3 
X X X O X 
e e e o 2 
“3 “3 "3 2 

*-H UJ 
2 h- 
• • • X <t 
>- CD 2 < X 
_J X X 3 X 

x <r a o 

X Q 2 
< JUJ # # 


X X X X 

in —• in in — in 

0 + 0 0+0 

XXXXU.XU.X 


XX XXX 

in in x x < 

O O OOI— 

x x x x x in 


<rx <X<IX<XXXKXXXXX x< 

lOinQinainoinujujf-oininH'ininx 

JlBJ.aJaJ3QQWOajfflWa3CQCQ 


3 

UJ 


E 
X UJ 
X I—i 
I— ►-< 

o 

< f- 
X 2 

< UJ 
X x 
o X 

o o 
2 o 

2 UJ 

x in 

< o 

3 _j 

o 

* # 


X CQ 

»o 


+ 

o x o x 


O —' o -o — •> 

xoin<xinxsinx<s<—in 


< < < < < 

X3XXXXXXXX<<<<XX< 

aUiQhaWUQUlDQHQLQjX 

_jTD_jin_j-3_j_jo_J_iin_icn_]OcQ 



IS 



•O 



IS 


ea 




is 




X 

V? 

A 
























_ 


<T 






—« 


—• 




—« 




o 

V? 

< 
























X 

K5 

—« 

<S> 

O 

—* 

A 

< 

IS 

Q 


X 

<r 

<T 

<s 

CO 

Q 


CO 


rO 

< 

A 

X 

—« 

0? 

o 

r- 

C7> 



V? 


CO 

63 

< 

o 

< 

A 

< 

X 

— 

_ 

< 


— 

(S 


Q 

s 

IS 

Q 

IS 

X 

CO 

X 

63 

X 

(S 

o 

Q 


o 

IS 

S 

IS 

< 

s 

< 

IS 

<7* 

s 

cr. 



s 


cr, 

cr, 

s 

X 

X 

cr, 

s 

< 

— 

CO 

s 

5 

r- 

o 

V? 

r- 

o 

_ 

V? 

o 

s 

o 

CSJ 

_ 

V? 

< 

r- 

S 

X 

X 

X 

X 

V? 

C3 

V? 

L3 

VJ 

Q 

V? 

CQ 

cr, 

cr, 

X 

X 

Q 

CQ 

X 

CQ 

a 

s 

X 

r- 

X 

X 

u 

CQ 

oo 

CQ 


CSJ 

X 

<7> 

CO 

r~ 

CO 


CO 

O) 

CO 

r- 

co 

CO 

»o 




<7> 

X 

cr, 

X 

<Ts 

X 

cr, 

X 

s 

s 

a 

<T 

X 

X 

CQ 

00 

X 

CO 

CQ 

co 

CQ 

CQ 

a 

CQ 

CO 

<T 


<7» 

X 

X 

IS 

co 

A 

r~ 

< 

O 

X 

s 


A 

r~ 

X 

CP 

X 

— 

►o 

A 


cr, 

X 

3 

X 

_ 

CO 


A 

V? 

X 

< 

o 

X 

s 

CO 

< 

V? 

CQ 

< 

o 

lA 

lA 

A 

A 

A 

A 

V? 

V? 

V) 

V? 


V? 

V? 


r- 

r- 

r- 

r- 

r== 

r^ 

X 

X 

X 

X 

X 

X 

X 

X 

cr, 


cr, 

cr, 

cr, 

cr. 

cr, 

cr, 

cr, 

< 

< 

< 

< 

< 

< 

< 

CO 

CVJ 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

co 

co 

co 

co 

CO 

co 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

CO 

s 

KJ 

(S 

S 

IS 

63 

IS 

IS 

S> 

63 

cs 

IS 

63 

IS 

IS 

s 

IS 

63 

IS 

IS 

is 

s 

(S 

63 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 

s 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 25 


439 



X 

X 


X 

X 


X 

X 

T. 


O 

2 

UJ 


UJ 

CQ 


o- x 

• UJ 
X Q 
UJ CC 
CQ X X 
E <1 H 
UJ o z 
El O —> 

• X o 
X 0. 

<t I 
X UJ 
O CQ 

X t- 3 

g <r o • 

2 X UJ UJ 
UJ CC CC ll 

UJ cc UJ 

3 CC o 
o •> o • 

X CQ -UJ 
UJ UJ o • 
CQ >- 2 —• 


cc cc 

UJ — UJ 
CQ h- CQ 

e. x e: 
UJ UJ uj 
E _j E 

I I 

a. cq uj 
u 

UJ UJ CQ 
CC Q Q 

o o 
u. _J •—« 
UJ < > 
CQ O UJ 
O CC 
CC j fl. 
UJ 

fflO h 
E2 UJ 
UJ • cd 
e; cq - 
i ui o 

UJ >- 2 


U_ Q 
UJ UJ 
G «— 
O 
X UJ 
<t 2 
O 2 
O O 
-JO 
CQ 
X i-i 
O Q 

2 3 
*-H O 

<r 2 
x 

o CQ 
UJ 


-J 
>- UJ 
-J G 
2 

O O 

cd 

CQ * 
U_ CQ 
UJ UJ 

a >- 


CD <0 X G Q 

ui — •> a 


g <r CQ 
2CLOQ 

uj e: o cq 


+ 

WX'OX 


Ui —• G2 — •> UJ E o CQ — »— UJ 

CQ<llS3CU3<JCS3i| 1 uj£CXCQ s CQ-'3x2 3 


O X 

o o < 

ujo. j xu x — x 

CQEO *0 •*+•* 

%U2 S J3)c3S3-*0 


Q 

> 


CQ Q CQ + CQ 

X > X X 3 1> X 3 ^ X 'O X X X 3 G 

O X El X CQ O •> CQ — •« — * * * CQ 2 

lEi^OlCCIESCCXCnScQ-'O.WUa.RQ.CQccWUJ 


CQ ® UJ 


c < <t <r 

XXXXXCCXXXXXXXCCCQCCX<t<C<t<CXX <c 
WHHGHCQI-'QHClGHGWOCQQGHGhQHCC 
QCQCQ_JCQ- 3 CQ_JCQ_J_JCQ_J-3CQ-3_J_JCQ_JCQ_JCQ'Q 


<c <t <c <r <r <r <x < 

XXiClQX<IXX<<<I<tXXXXXXX0XX££tQQ:X<XXX<t<I<<XXXXXXXlCXX 

HGKUGKhQQHQHQUJUJHQhQUJhDlQUCQHCCQCQGGHQHQQhaQHQWHQ 

CQ_l: Q CQ_JrQCQ_]_|CQ_jCQ_lQ3CQ_JCQ_,caCQ_lcQ l Q3UQc0_J3_J_jCQ_JCQ_]_lCQ_]_lCQ_l-3CQ_l 


O 

e: 


Q <0 
— in 


X 

— 

ei in — g in 

—« r~ is m s 

<r io-• r> »o a <r 

— in r— 

— 

m 

aiCMTS 


in 

in is 

<£> —• — 

— ca x 

<£ U - 

m is x r- _ c 

X 

(S 

— < 

K> ca 

<T — 

X CO 

o x (3 X 

_, 

_ 

— Q 


CM 

IS—IS— — 

CM — cs — IS 

SI — ca — CM <s CM 

s — — 

X 


ca co ca is 

X 

“• -• 

— ca 

— ta — 

— <S is 

CS — 

— o co <s ca is 

ca 

s 

ca is 

CM IS 

cm ca 

IS s 

ca si 

IS IS 

—• 

ca 

— — 

(?) X 

X 

X X Q X X 

X x X X X 

g m Q x 'Q ^ 

I s - X X 

(S 

X 

x g m x 

s 

X x 

CO t- 

cof'-xcrvcnxxx 

X r- 

x x Q in Q x 

IS 

X 

Q X 

(O c*» 

<o r- 

X X 

x x 

X X 

X 

G 

X X 

<S Q 

Q 

X Q X O G 

Q Q x G c_> 

X CM X Q os <t <7* 

< Q Q 

CM 

Q 

O to CM x 

CM G G 

(?) c 

i7i <r a 

ca IS Q X G 

G CM 

G o CO CM X Q 

CM 

X' 

X Q 

c?> <r 

C71 < Q X 

Q G 

X G 

Q 

X 

Q G 

u? x 

(?) 

X Q X CM S' 

00 < o X 

■Hfncoiggx 

— ro in 

1 — 

7\ 

.13 X 8 N 

■*T 

V? X 

<t p 

X IS CM 

<r in cc < 

O X 

ca cm in *-■ <7\ o 

X 

SI 

cm m 

C7» X G 

X — 

co m 

^ cr> 

X 

G 

ca cm 

■3 x 

X 

CQ X X O O 

o o o o o 

G Q Q G G Q Q 

x uj GJ 

X 

UJ 

UJ x X X 

X 

X x 

X X 

x ca is 

s <s ca s s 

CS IS 

— _ _ — — —. 

— 

CM 

CM CM CM CM 

CM CM 

cm »o »o m 

fO 

►o 

fO 

<t <r 

IO cO 

fO 

lOiOfOiOiO 

IO IO IO »o IO 

rO »0 fQ »0 fO »Q »0 

fO »0 fO 

»o 

»o 

IOIOIO »o 

K> 

fO »o 

K) IO 

»o < < 

<T <T <T -*T 

<r <r 

<r <r <r <r < <r 

< 

<T 

< <T 

<r <r 

<r <r 

<r <r 

a- <r 

<r <r 

<T 

<T 

<T <T 

IS IS 

IS 

is ca ca ca cs 

ca ca is ca is 

5J Q S S IS Q C3 

ca oca 

IS 

(S 

CS is IS (S 

IS 

IS IS 

IS (S 

eaiscacscacaisca 

IS IS 

S CS S S IS s 

ca 

ca 

si ca 

S) SI 

IS CS 

ca ca 

CS CS 

s ca 

IS 

ca 

S S 












X 


X 



X 







X 


X 2 



o 







G 

1— 

—1 









• 

<r 

2 

o <r 



X 




X 


G C v - 


X 

1- X 


o 

X 




X 


X G 

i- 

e; 

o 


X 

»— 




h- 2 


f— X 

z 

3 

O 1 c^* 


o 

o 


G 

• 

o o 


X x 

X 

CD <0 

X x o 


<t 

<r 


X 

X 

<r —i 


3 O 

e: 

X — 

O X 


e: 

X 


X 

X 

X 1- 


<r < 

3 

<t <r 

<r 2 o 



<r 


X 

X 

<x <r 


X X 

CD 


z: -• <c 

1— (— 

X 

X 


H 

o 

x 1 - 

* 

X x 

X 

X 2 

E 

X t-i 

2 

o >- 


2 


O 2 

X 


< 


X o 

X x 

—1 

G 


X 

X 

X 

X 

X X 


x 

O X X 


o 

«- o 

• 


f— 

X X 

X K 

—i X 

1- 

f- — 

O 2 

X X 

<t 

X x 

h- 

X 

o 

X x 

X X 

X 

X 

+ 

— 

»—1 — 

TZ 

X 

2 

X x 

2 

CD X 

X <t 

t- e: 

X 

X o 

_) E X 

X 


—1 o 

X 

—i <r 

X 

2 X 

o e: 

01 3 

2 

O 2 

X o 

in i— 

X 

X x 

e: 

X o 

X 

— x 


—I 2 



o x < 

— 

•— 

o 

3 

I— 


X X 

x <r 

X 

X 

X X 

o e: 

X 

3 

o <r 

CD 

O Ik 

o 


f— 

X 

H 

h- J- 

x x 

f- <x 

o 

»- e: 

X 

X X 

h- 

X X 

a x 

J- X 

3 

CD X 

i- < 

—1 X 

X 


<t 

o o >- 


X X 

2 — 

2 h- 

X 

2 

o X 

X X 

X 

X Q 


x <r x 

X 

X X 

X 

X X 

E. 

X X 

2 0 1— 

^ o 

X 

f- X 

>~ 

• e: o 

t— 

2 E 

x »-< 

e: e: 

O 

X o 

X X —i 



2 x 

X 

f- Q O 

2 

3 


3 <t — 

o 


X < 

X 3 

G 

—' X 


2X3- - 

t—i 

1— 2 

1— 

O X X 

•> 

1— G 

X CQ O X O 

2 

o <r 

X 

X O 2 o 

o 

X ii 

X x 

X <t X O 

X 2 

o X —1 

2 >- 2 

< 

X o 

X 

e: <r <t 2 

X 

a <t 

CD —• 

< X >- 2 

O X 


CQ 

(- >- 
2 Q Q 
—•2X0 

o —• «ro 

CLkQL3333X3 


xxxxxa:xjxja:xa.xxx 

Q Z2Z2(QQUhWCQaEQ22 
JHHHH“)JQ(Q<rjJ- 3 jMH 


CQ 
El 
3 

h- 2 
X X (- 
< X 2 
I—■ (— LU 
OtQ UE 
<C 3 

cc o 
«t cc 
x <r 
o 

X cc 01 

m e; cd u 
cq -j 2 o 

—i <r 

2 -J 
X CL 

<r uj 

3 CC 


CD _J 

o a. 
x ui 
c x 


j x 
< o 
X o 


X X 
O UJ 
f- X 

<ZJ X z. x 

— UJ 3 -<3 f- 

<r z 2 s k n 


X 


<Q ^ h 
X Q —• X 
X <z < CD 


W O X Q O 
— UJ *G UJ 
<x X ^ CQ 


X 

UJ 


• o 

f- X 

x g <r 
<r x <t > 
— X -o o 
<WC3 JE 


X 

o 


o 

UJ 


UJ X 
X X 
UJ o 
X 2 
X • 
X 

2 UJ 
X Q 

x e: 

3 Z) 


XG7XXXXXXXXXOO—• XX<t 
QU]ZZZ2h(QUQXUJUJE(/:hX 
. J (Q M M M M IT, z 1 J U 2 Q fQ z U !U 


XXXXXXXX<3<CX< 
G X Q (Q G 2 2 X UJ Q CQX 
JIQ JT JhhOcQ J-JCQ 


CO -hC3 OiASSia< 5 o CM 

is iscsea — cacs — is — iso 

UJ COOOOOOOGX<rXCO<rXXXCOCOXX 
Q SISCSCaxL*-’ CMGXr-Q<£C»tS<SQX 

W M» (7> <1 □ li. - lOICffiaQU-S-. <0 
■ ; J'<r<r<<< < Tininininminin^<o<Z/ 


fO CO S3 

— uj ca 

_ _ _ isj ca cm 
cm is ca ca si cm 


r- — — u. 

IS S CM X 


— x <3 — x 
CM — <S IS — 


uMctocowii.aaiijuf' < x g u_ -s 
GCMC3(SC3caGXXUJC0CM<CMxQCM 

^co<triOQUjSiouco : nQUJQ'Oir> 
<ovo<o0<f?<o<or^t^-r— x x x r^aoccoo 

'O'O'O'OfO'CilfO'O'OfOOiO'O'O'O'O 

istaisnisrais'scacacacacscacscsis 


is 

<r 

— x is —• <r 

CO N N C3 X 


XXXGXOOOOOXsZJQIS 
G G X’ X Q ® (S <7) CM <t X CM 

t'- |-Q G 8 CM »0 00 <tQ 

OOOODCCOC7><7>C7><7><7>C7>C^<7> 
'OiO'O'OiOiOiOiC'OiO fOrO 
SJCSJOCaiScaiSlScaS IS® 


<X X 
X o 
X o 


t— <T 
*o in 
CM CM 
c a is 


X CM 
<7) <r 
»o fO 
is IS 


X X 2 

X 

<t X —• 


e: e. 


•XX 


e: - 


X 1 x 

X 

xxx 

X 

1- Q 

3 

O CL 

xxwa. 

<t O _J 




<t o 


X X o 

<t 

O X X 


H 

x K <r x 

CD X 

a x q x 

2 X X 

X X x 3 

—« x <r 


2 1— 


xxx 


<t X 1- 

2 

3 X -1 

X 

G 3 

Q 


2 

* * * 

X 


<t 


CM 


— t— X CM 


— — ® ® 


x x u? Q 


Q G X 


in r— <7» cq 


<r < < <t 


lO IQ OO 


cs ca <s ca 


O x 

I o 

X X 
X 
X X 

o o 
X o 


<t 2 
X —• 
X o 
X X 


Page 26 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


440 



3 

UJ 

o 


Q 

O 

CQ 


Q 

x 

o 


x 

o 

z: 


x 

Ul 


o 

CQ 


UJ 

X 

I—■ •• 

CO 
X X 
O UJ 


oo <r 
Q X 
2 <t 
<t X 
I— 1 o 

CO 

o 
u_ z 
UJ *-l 
Cl z 
O X 
•Q <t 
<t 3 


CM O < 
w 3 UJ : 
^ O CQ < 


CQ 

X 05 X 

x x <t x <r x X 

UHQDhJQ 
CO _) CQ CQ O 


X X 
X X X X Of X 
HQ2EUJZ 
CQ _J h O CQ O 


x < <r 
C2f o <X x X <t 
UJZQhQh 
X H _J CQ CO 


X • 

O X 
X <x 
o X 
< o 


UJ X 
2 X 


o 

X 

O-- 

<t HH 

s: xx 

o 

x <t o 


o 

X 


X 

c • 

X x 
O UJ 
X 

_l x 
_j 

<t z: 


UJ 

C5 


X X 

C^3ics 


X 

X 

X 


- >- o <t 
o <r 
WXOO J 
xha jh 
O Z 1— 

Z 1-4 X Q Z 
O O O Z ID 


— Q 
3 Z 
O UJ 


x <t x z: 
z x z: 
x “0 uj 


x 

x 

x 


<r 

z> 


Q f- 

o <r 
X 3 
3 

uj <r 
x > 

I- UJ 


X o 
3 X 


Cl Z X CM 
^ a m *3 

a. » <tu.s u 


x CM <r _1 
•*3 o <r 
— o _i z> 


<c <t <r 
x cxx<mx crcja: <x 
Q O X X Q 21 Z ID UJ X X 
—I —1 “D “D —I Q 1- JcQ - 0 n 


.. n!E5 


X 

UJ 


X 

X 

UJ 


- o _] 
J z <t 
— > 
J Z 

: x t— 

« <t _j 
3 ZD 
3 < 

J UJ U_ 

: x uj 

5 1- Q 
) 

X X 


X _J 
X _J X 

x x 0 

to ZD o 

% 3 4k 




o*##**###:> 


ui 
_J 
• CD 

* * 


UJ UJ 

: x x 

H 

Q 

Z O 

<t I- 


X 

z: + 

<00 

3 3 (53 3 

UJ U_ X X O X 


<t <t 

<r<txxxxxxx 

Q h- Q h- Q l—ZD h- Q 
_JX_1X_]X_)X3 


X + <T 
+ O + 
® 3 ® 
OXO 


XXX 
I- 3 
X J X 


•00 iA CM X 

S> —. (S3 (S3 — 


CO CD CQ O 
S3 — — CQ 


C7> lA f'' C-J 

® — —. ® 


uju.'^^r^u.uju.ujoo — r^ — r-ocou.ujr^ 00 ® ui 

QQUJOQiAOCJQSoCMQCMiA<rQQ<CJi.\J^ 

V O C0<t OUJS—> <r CO CQ 03 33 Q U_ — CM ‘TWCOtfOQ 

<c<r<c<r<rcQ!QXXXDXXcQ0DOOoc_'CJoo 

<T<T<T<T<r-«r<r<T^’<r-«T<T<r-«r'<r'«T5r'<T<r<r<T-«r 

<SNSSSSC9^SS)C9(9(9S(S»S(aSC9SS 


r- uj s 

Q lA 

00 <73 —■ — ® X —. <1 —• 0D 

Pi S Ci (S3 S3 Ul QUJSU. 

UJWulQWcQCQW^ZlIS) 
Q Wa CQ <C CM CM < CM ."Q CM 

8# CM f- <£ O Ul X — ro ^ 

QQQQQQlJQUJUIUJ 
■q--«T<r-^-'T-<T-*T- ; T<r'*T'T 


— (S — — — 

U_ VO X —> -< IA CJ in CM in <T 

U.CJ1S(SS-<SCJ8QSS 

cor-uju.xxxxxxxx 

C0 030QU. QU.QU.QU.Q 

oo<ou. — <ryj(7>cQUjQ fO 

UJ UJ UJ UJ X Li_U_U.U_U.rS) (53 


X 

X 

z 

UJ 

z 


3 — 

O X 
Q 3 
X 
Ul Ul 
z> > 
o o 


o- 

UJ 

z 

o 

Q 


CD UJ 

3 Z > 

o < o 

z E 


X CD O XX CD Z> 
« Z UJ h— •> UJ O 

<S UJcqXXSI CQ E 


<r 

2 xxxxof<txx<x 

QZl-.QXUJt-.Zh-X 
JHXjOfflXHXffl 


X 
h- 
3 Z 

z o 


<t 

X 


Ul 

X 




1— 

CD 





M 

—1 

UJ 





<t 

X 




X 

> 

UJ 




h— 


X 




»—* 

l— 

3 



1— 

3 





z 


X 

UJ 



UJ 

• z 

1 

ZD 



z: 

UJ — 

(O 

_) ^ 


• 

3 

z <r 

—* 

<X Q 


X 

o 

<t X 


> X 


— X X UJ 

X 

z o 

UJ 

z 


+ * Q 

<r 

O 1 

X 

h- o 


3-383 

» 

X Ul 

h— 

»—« — 



UJ 

o 


05 tQ 


O 

z 

<r ui 

X 

| z 

X X 

X 

<t 

^ X 

UJ 

W7 CD 

•u w 

X CQ CQ CO o 

z 

* h- 

X 



<z 

o 


<r 


II 

<t CQ <E O X X z 

X 

o X 

X 

UJ 

A V 

ZDZDQCQQt— 

o 

X o 

z 

X •— 


J X _] X —1 x x 

<c 

o 

o 

h- 3 

3 3 


E 

<c x 

o 

1 


>—< 

* 

z o 


ZC s-' 

S — 

X 

X 

h- 

X 

h- X 

II II 

o 

UJ 

H* 

z 


o o 

c 

Q 

X Z 

o 

3 — 


X z 


X o 




z 



* 

# # 

* * 

o * * 

* « 

* * 


Ul 

o 


UJ 

-J 

o 

h- 

X 


UJ UJ 
-J >- 3 
X 

X <IH 
O UJ o 
Z Ul 
*—< X x 
X J- X 
I— <t o 
X X o 
H •» 

>- *x 
z O Ul 
<t z >- 


UJ 

CQ 


X —« 

o <c 

h- X 

o 

UJ I 
> X 

o 

Z U- 
U) o 
X 


UJ CQ + 

CD X 05 X X ZD C0 X VO X 

UJ *— X *x — * — 


Ul h- 
Z X 
<r — 
z -J 

o 

x z: 

o o 

<t X 


O UJ 

z: o 


X 

-X 


X O X — X _ 

uj — — ■ ul. *vj — » — * • X * + * UJ — * 

CQ s < X •JSXIUSm-. X G3 X CQ X ® X • 


- UJ CQ — CM 


X 

X 

o 


z — X 
O O Ul 
Q Z >- 


Ul <73 
X Q *k 


XXXXXXXC3XXX<X<t<t<tXXXX<C<<t<CXX<t<CXXUl<I 
CDUJUJh-Qh-QUlQXQQh-Qh-QQl—QQh-QI—h-QQh-ZXZQ 
jQQXjXJdUTJjWJXJjXjjXjXXjJXHOOJ 


UJ 

X 


X O UJ X X 
UJCJZhE 
ZD Q CQ X ~D 


(S Q CQ — <T ® £250 
S> — —« — iA ® —Ul 


W - lA SlA 

— q — o — 


■T 

o 

X HtS-<L.S)-.<i'OS •T-OOtSCOXUJSLi.-.LJcQCQCM —. I— <73 

<s —scMSiac3S)<acMe3cMOS(as — Q<as»(si(s — sea — x pd 


o — 

X — 


ro 

CM 


coxxujor-t^cou_t3 

<S Q Q (73 CM <1 N Q vM 


(O (53 CO CM Ul 
QUjQUlQiQ 


UJ <73<73XUJXX[ v ~UJQUJCO(^- W^'UJUJL.LJWh-W^U.LJ'O^CCOV/W (73 <t CO L. UJ 
Q SOQUJQQcMUlcQQA<lA<tQUJQQ <73 < (7) <t Q Q CT^CJiTiCMOtQiACMQ^ 


A 05 Q b. - CM <T 
<T<T<T^T<r<T<T l AAA 
<T<r<r<T<T<r<T<T<r<r 

q (^ (a P3 s ro ocaca 


co x <r o uj (s 

lA IAIA IA lA 'O 
(53 (S3 S3 S S3 (S3 


—•'0 < Tin r ^'<73rnQX—.<TCOX<XOUJ(Si(M<TVOX<roX(SCO<TCOt^-C73ZQQUjX — .O 

COVOVO(OVO(OVOVOCOr~r'r^(^r'r~r>-XXXXXXXX<73<73<73<73<73<73<73<73<73(73<r<t 

<T<r<r<T<T<T<T<r<r<r<T<T'^’<T<T < T < T<r<T-«T-«r<T<T<T < T<T<r^r<T<r<T<r<T- i T<T < T 

SNPJSP3S(a8SNCJ!DfOCiNNfc)iS)(a(a(Qfi)Q'aS)0^iPO'S"JSS(S)S)K) |, 0 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 27 


441 



X 


X UJ X2 



X 

0 

X 

X 


x m 1 — 0 uj 

X 

CO 

<c 

X 

X 

<r 


x to <r 

3- 

H 

X 

to 


E 


x 0 X 1- X 

o 

►—1 

0 

z 

3— 



1— -h(/1E 

z 

cr 


'X 

O 

Li 


to x -3 

UJ 

— ( 0 

H 

X 

Z 

z 


to UJ L * 

_J 

0 cz 

UJ 

f— 


Id 


XX UJ X 


•> 

O 


z 

X 


x m x o x 

3— 

-J to 

•> 

a 

X 

X 

mm 

Q 3— (— 1— 

UJ 

_J UJ 

O 

z 

X 


h- 

Ci 0 UJ ►-« 

0 

>- 

z 

<t 

3 


z 

<r ZD 0X3 







UJ 

X 1- 3- 






• 

z: 

3—3— • Z 


0 



X 

z * 

zd 

<r to x to z ce 


— <r 



X 

Lx. UJ 

0 

Z »- 0 r) 

X 

+ z: 

X 


S. X 

XXqW 

X 

UJ H m 2 3- 

• 

0 CO 

•> 


a 3-• 

•* »z 3 

<t 

ZZhHhUJ 

S3 

UJ UJ 0 

CO 


^ X 

CO UJ " 


—< UJ 0 0 z lC 

X 3 — 

:> m m > o > 3 

— 

3 

* z 


X X X «x 
2 H Q K 
*-* tO -1 CQ 


KX<r<o,^- >< 

_J o H. H. s: , , >< 

u j ir. w -3 w x 

-H x 

Li UJ X U1 

z z o to 

U O 5* ^ 

Li Ci ZI 


H E oa. UJ 
33 a: z: t- 

OO • ZD tO 

x x x 3 u r) 

<t lu ' re e; 

x to <t 

X >- ZD >- X 

to z x to x 
3<whhv: 

J I H Ll.’ h 
Jh UJ 

<t —• Z Z X X 

O 3 m O O t-> 

* * * * * * ■ 


X X 

X XX — 

UJ X X + 

x cs. H-. VO h- o 
!2>-<X-Xal 

: % z * z m 


+ x cn 

O I—* 00 O OX 

ui x — o uj • 

iD 2 3 » «X 3cQ Q 


<t <x <c <t<t <r mm na m m <r <r 
xxxxxxxxxc?xx<txxrn»-xu-cQXf-xuj<i_i_j_j_j_j_j_j_j<i<t< 3 :x<cxxxx 

QhQUhjjaujUJhOQZh3JEJ3EJEC:QWOtOO(OOWO^(-a:QQWHQE 

ji/]juwuojiicDCOjjMun/);tioajWo~jo/r] x <t x ** x <r x <r x ciorQXX-Dtn_j-D 


o 

X CQOffl 
*-< Q O Q 
Z> X X u. 


00 X UJ *3 
ROQl\l 

<r Tj a u. 
vo tZJ vo to 
ia a ia *a 

S> S3 S3 <SJ 


<c 

•A CM *0 f-O 
— 53 S3 S3 

X UJ A- f** UJ 
Q <t <c r s - 


1AQUJCi«iI , 'C' : T(SSo 
_rOXS)S)S>S3UJ—.Lo¬ 


ts O 0(0 U-> IACQ s 
pa -u-*ss--h® 


UJU-UJC7>U.Lj_XUJC7\C~U.UJVOCOLi_(S 30-.U.R3—.Q-.oV0C0C0C30O>00(7300(7V'0r^S3UJVOCiU.UJUJ 
QQUJ(SQI^r'QPj^iQ<lS)Q COOJOOCOOOCOcvjOOOJkJiA^ iT\ iA 0- A 1 — <7S CO C3 CO 22 QO VC 

pQk-cvi<i><ru‘ : Jk-'Oinwcc<toujc3W' < T'ai!0<iuQS-<Tinco(73oQk-' / )inco<rq 
p-r^r^ cocooococ30ooooooo^ov<7vo>ovo>cA(7^<r<r <z <x. <x <t<<coaj!ii(Ba 3 ffla;DJ 5 { a u ^ u LjO 

lAlAiAiAiAiAiAiAiAlOlAiAiAiOiAiAiAiAi/MAiAiAiAlAiAiAiAiAiAlAiAiOlAlAiOiAlAiAlAiAlAlA 
is®pa<^pacap3pa(3r.ac5aeapaS3(3 os3[S3ras3S353S3ra pa q pa ea sj pa ea ca sq s sn n n pa 


to 



z 

0 X 



0 

3- ZD 


>~ • 

►—1 

X 


Q X 

3— 

to < 


O <£ 

O 

X > 


CQ X 

< 

X 


• O 


1 - X 


X z 

O 

z <r 


0 OH 

Z 

H M 


c- *-i to 

II 

O 3- 


X >- 1 - x 

to 

X *-» 


3- Q O *-h X 

X 

z 


x 0 <X X X 

X X 

z: *-• 


Z CQ _J 

X X 

X 


X O 3- X 

X 3— 

(3 X 


J >*Z UJ E 

X 0 

X 


3- » C3 •-* 

3 

3- X 

ti 

3- X tO •‘CO 

Q X 

X X 

X 

X E X O •• 

" X 

to 3 — 

0 

O X >- Z Q 

— <t 


V 

X 

0 

0 



X 

CD 

<r - 3 — 

3— 

A 

X 

X 

X 


X 

3— 

X 

Z 3- z 

O 

3— *1 

X 


0 


X X z x 

<t 

<r 

0 z X 

■-* 

X 

X 

3— 

X 

X 

X S3 x — k ju_ 1 

0 


X u zz 


<x » 

0 

O 

0 

• X 

•CQ JEmXXXQXX 

X 

X 

0 z :td 

• to 

3—■ & 

X 

z 

X 

IO CO 0 

^WhWO^DZDO 

ZD 

z: 

< ZD CD 

X —1 


< <£ 

< 

••to 

•-.to 

xxxxxx<rx 0 

s: 

pa x 

— X 

QHHHHXHEU 


• X 

• X 

XtOtOtOtOOtO-jX 

X 

X 3- 

X 3—• 


z 

X 0 

X 0 



X <c 

X < 


X 

X X 

X X 


0 

X <t 

ZD «t 

3— 

< 

x x 

Q X 

*-* O 

c- 

& 0 

O 

z 2 * 

*-H tO 

* * 

* * * 

* * * 


x<ra.uj<ta.c3a.uj<t<ta.a:< 

DQEJQEUEZahE JIX 

JjOfflJUcQUcQjWTUaj 


E. o X X o 

• x < i- o z 

<X <t X 

O * 3 hO W 

X UJ O <t <C 

o 3 z z z: x 

<t UJ =3 

T. z ui X UJ - 

IHIUJ 
X <t 3- 1—3— 


******* 


moo x 

C\l U 2 X U »VO Ci 

— Q h CO — ui 

X ->fc CU.CJi>Q.-<XO 


f- z <r o- < 

•-« ZD XXX 

X U UJ H 

to 3— «»X » 

UJ • CO X to 

00 UJ C a] 


X — <T X — •> 

ZD Z> < — ID <t 3 CM 


X<XXX*-*XXXXXXXXXC?XX<_JXXX<t 

QQWCOaEhaUHQt/3ikUJUJHiQX2hQh 

xx-D-Dxmto_ixco_j-i_ioxmtoxxm'-*toxio 


o vo 00 o <c pa cm 

Si S3 S3 S3 Pi — S3 

xxxxxxr-uj''T 

OQOQO -«T (73 C~ <r 

IA CO <1 o UJ N - K) W 
SiCSSSS-.-.-.-. 
lAiA»A»AiAtAiAiAiA 
papapapapaopaisca 


lA f- 
<X CO 

COQCOWUJ<S ( -Q-.'<TU.^(OSOC 

ssscacarQScQs^cvisisu. 

UJVO—.Luo-• —, VO VO r~ UJ X S 

o < oo cm <t co cm 00 co ooovt^r-csj 

o UJ ra CO < T'O00<tO tjJ ®C0(A00 
— — CM CO CMCOCMCM CO CM'OrO'O'O 
(AiAlAiAiAiAiAtAiAiAiAiAiAiA 
(SSSOSP3KSO I SSRC5R 


r- uj lvj 

Qia <r 

COO—— S)S)K)COO— CO — O VO K) — UJ UJ — m CM 

sm las n (O -• n cj cm Pi ca - — — cm s> sj cm — pj 

UJVOQQUJJLi.UJUJU.UaUJ(7l(7>^k.UJVO<tOOU.UJ^ 

QCO.'3 3)LdCOUQkQQrQQKIQCMQQ<tCM«QQ<r 

<^ 0 ^— <rVOCO<rC-?UJ?JCO(A r ^'COC73.'rjQX — ^<Tk300 
(0'0'0<T<r<T^ , <rT'TiniAi/MAinirilAiAlA'C^'CWM3 
iAlAlAiAi/MAlAiAlAlAiAlAiA'AiAir\iAiAiAifViAlAiAiA 
(aQ^PJfJv^NSNlvjrapgMSRCaPJNStSlKiaK)^ 


Page 28 


Or. Dobb’s Journal of Computer Calisthenics 81 Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


442 



Product Opinion 


A 16 

@221 

ACIA 

010D 

ADD 

01A2 

ADDS 

Z1D7 

APPEND 

04 7E 

APPLY 

02C 8 

APPLY. 

02 78 

816 

0023 

BEG 

0018 

BOTTOM 

0225 

C 

000C 

C0 

0000 

CLtAH 

04E8 

CLEAR. 

0609 

CMP 

0456 

COPY 

025 4 

COPY. 

02C5 

COPY. . 

03A2 

c« 

Z4A6 

cw. 

05 E2 

CW1 

04B 4 

CW2 

04CD 

DEF 

0461 

DEF. 

05 D 9 

deldef 

04D2 

DU PL . 

0614 

DUPLEX 

05 1C 

duplx 

0027 

E 

000E 

END 

001 D 

endfn 

03A5 

ENDFN. 

02 7E 

EX 

013E 

EXIT 

2277 

F 

0006 

FIND 

Z15E 

fmacro 

0344 

FN 

0281 

FOUND 

0167 

full 

01 FA 

FULLL 

01 FD 

FWAM 

01 0F 

FWS 

0622 

GETARG 

03 76 

GO.MAC 

05C 1 

gpm 

0100 

H 

000A 

HLP 

0422 

INCH 

012B 

I NHEX 

05 AA 

I NIT 

05 05 

K 

0017 

L 

0019 

LDARG 

0366 

ldarg. 

02 78 

LOAD 

0140 

LOCAL 

03E9 

lwai? 

211 1 

MB0DY 

035D 

MEMFUL 

0214 

movarg 

0393 

M0VDWN 

042F 

M0VN 1 

0442 

HEWH 

029A 

NEXT 

0195 

NEXTCH 

0113 

nexte 

03CA 

NIL . 

05CE 

N0L0C 

03F6 

NOP 

05 32 

NUMBER 

01E6 

NXTHEX 

05 8A 

nxtitm 

02A2 

OUT C 1 

0154 

0UTCH 

0150 

p 

0008 

PUSH 

022A 

Q 

001 0 

Q 1 

0258 

G2 

0267 

03 

02 6C 

R 1 

013C 

R2 

014D 

REACHD 

0387 

READS 

0128 

RST ART 

02 0D 

RSU8 

01C4 

S 

001 1 

SAVEX 

001 F 

SCAN 

025 7 

SEARCH 

0170 

SETUP 

0164 

SIMPLX 

2535 

SPUN 

049D 

START 

0237 

START. 

039F 

STRT 

04A3 

SUB 

01B1 

SWC 

051 6 

TH 

0122 

UPD. 

05 FD 

UPDATE 

053A 

UPDEND 

05 71 

UPDM0V 

0558 

UPDONE 

05 78 

USER 

05 7B 

USER. 

05 EA 

V 

0013 

VAL 

04DZ 

UAL . 

05 F4 

VAL 1 

04 DE 

W 

0015 

WRITES 

0148 

ZERO 

01F8 


MICRO V2E 


O 

<r 

h- 

O'j 

s: 

a. 

C5 


o 

CC 

o 

< 

s: 

ui 


o 

cc 

o 

3 


x 3 3 w 

o 3 3 s a: 

<1 3 Ci 3 N M 

3 ET 3 O 00 3 CO U» 

5 ) 3 3 3 V. 00 CO \ «/> 

S <£ 3 OOiTV 3 UJ -f X bZ »X + 

DC <T 3 \ • CO 00 (-* U3 ^ CC + * UJ X 

. tz> in •> co ^ cc + • \ *<r t— »<icclc_jLiJ 

. + ui • \ * uj or oc _j + • Q <r *u;<<a. j 

JU.HU.3 + *WUJUJ<JJI1.0iJJUU;dO. 

JUJ<CUJ0 333WW> <tCDD.a.O J JQD 

^Q0Q\00\r33'S>> v v33\00\Q * 


aojj-uocQjjomcQoafQocQiiiofQfflocQ^ o 
QOQMQOQOoOQOQQOOQOOQOQCZr 2 
U.U.U. U.It.U.U.U.U.U.U.U_U-U-U_U-U.U,U_U.U.UJ UJ 

(A 


UJ 

Q 


CQ • 
3 
* O 


os 

u: 

to 

ra 


-J 

«x 

> 


Q 

a. 

3 


a: 

<c 

UJ 

_1 

o 


-J 

a. 

3 

O 



ir\<r<r in f O-=J'iA(AiAin'^ 

SUM SUCOSDDCClQ 

OiQ CnJ^CO^UcM^ 20 

□ Q UJ U1UJUIUJUJU-U.U. 

lAiAlA lAlAlAlAiAlAlAlA 

333 33333333 


3 

CO 

■‘Tintnmtn'O <r tz> <r m 
C 03 Q 00300030003 

cqq — t^cr»Qc\j<rcxjUj 
U.U.3333-* — — — 
(T»irvVO^>VOCOCOCOV3VO 
3333333333 


CO 

os 

o 

X 

X 

UJ 


3 

3 

3 

3 

3 


ZAPS OPERATING SYSTEM AND ASSEMBLER 
FOR THE Z-80 

Jef Raskin Received 77 Nov 17 

ZAPS is a software development system for Z-80 based 
computers. It uses the full ZILOG mnemonics and has a nicely 
integrated editor. I have not tested this system, which is why 
this is called a product opinion. My opinion, based on the well- 
written documentation, is that this is a quite professional and 
hard-working assembly language program development 
system. According to Algorithmics, and I have no reason to 
doubt this, ZAPS will run on Cromemco, IMSAI, TDL and 
other Z-80 and 8080 systems that do not have their own 
firmware monitor. This rules out the new Cromemco 
systems, and the Poly 88. In fact, it should work on any Z-80 
or 8080 system that has a front panel, or that doesn’t preempt 
low memory locations. Algorithmics provides a version suited 
to your computer. ZAPS comes on a cassette tape to the 
Tarbell specifications. I noticed that the write protect tabs 
were not removed from the tape I received. System software 
should always have these tabs removed by the manufacturer. 

The ZAPS system should appeal to advanced hobbyists and 
commercial users who have the usual cramped feeling from 
using hobbyists systems. ZAPS, for example, allows symbols 
to be of any length, thus making code much easier to read. 
I was surprised to notice that file names could only be 8 
characters long—I wonder why they didn’t carry the unlimited 
length idea throughout. File names? Yup. Files are stored 
and retrieved from tape by their name. A good feature. Up 
to 16 named files can be stored in memory, and handled 
directly. Experienced programmers will know how useful that 
can be. The user can work in base 2, 8, 10 or 16 as she or he 
pleases. 

While the version I was sent is teletype oriented (shudder) 
the manual also described the much more pleasant video 
version. 

The ZAPS manual tends to give you the information you 
need when you need it. I was about to wax wroth when I read 
that backspace was CONTROL Z, which would not allow me 
to use the backspace button on my machine. However, before 
I could work up a healthy indignancy, the manual told me 
how to change it to the standard ASCII CONTROL H. This 
took the wind from my sails, leaving me only with the weak 
comment that the default should have been with the standard 
ASCII backspace. 

The ZAPS system has extensive facilities to tell if bits 
have been blown on tape or in memory. It is forever 
calculating cyclic redundancy codes and checking them. If 
you want a system you can be confident in, it should have 
some such feature. 

The assembler allows relocatable code and setting up 
character strings, with appropriate pseudo-ops for each of 
these abilities. In all, it looks like it is worth very much more 
than the piddling $60 that they ask for it. If it works as well 
as it looks, the advanced hobbyists and pros should find it 
a useful tool. ZAPS is available from Algorithmics, Inc., 
P.O. Box 56, Newton Upper Falls, MA 02164. 



Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 29 


443 



SWT PC EDITOR FORMAT UPDATE 


COLLEGE NEEDS INFO ON DESKTOP SYSTEMS 


Dear People, Received 77 Oct 21 

Attached is a program which converts a tape in the format 
required by the original SWTPC Editor (MP-E) to a format 
usable by the new co-resident Editor-Assembler (MP-EA). 
The program assumes that the input tape has no line numbers 
and creates an output tape with line numbers starting at 1 
and incrementing by 1. 

For anyone not wishing to type in the program it is 
available in source form on an AC-30 compatible (Kansas 
City) co-resident Editor-Assembler format cassette for $5.00 
postpaid from Specialized Systems Consultants, PO Box 2847, 
Olympia, WA 98507. 

Also, is anyone interested in MUMPS on a microprocessor? 


Received: 77 Dec 15 

I am currently surveying the market for desk top type 
systems that could be used in a Business School programme, 
for teaching computer languages, running interactive simula¬ 
tion and possibly C.A.L. and/or C.A.I. Any direction on the 
above could be most gratefully received. 

B.J. Trohon Algonquin College 

Master, Business Division 315 Pembroke St. East 

Pembroke, Ontario K8A 3K2 
Canada 


Phil Hughes 


PO Box 2847 
Olympia, WA 98507 


000 10 
00020 
00030 


NAM SRF 

S.S.C. POB 2847 Olywpia, WA 98507 10-1977 

REFORMAT SWTPC TAPES FROM EDITOR TO CORES 


00040 





OPT 


NOG 

00050 





OPT 


O 

00060 





OPT 


P 

00070 





OPT 


NOS 

00080 




• 




00090 


El AC 

INEFE 

EQU 


$E1 AC 

00100 


El D1 

OUTEEE 

EQU 


$E1D1 

00110 


E0C8 

OUT 4 HS 

EQU 


$ E 0 C 8 

00120 


800 

4 

CPIA 

EQU 


$8004 

001 30 




* 




00140 

0100 




ORG 


$100 

00150 

01 00 

7E 

0300 


JMP 


START 

00160 

0103 

7 E 

0300 


JMP 


START 

00170 




* 




00180 

0200 




ORG 


$200 

00190 

0 200 

000 

2 

CDPTR 

RMB 


2 

00200 

0202 

000 

2 

SAVX 

RMB 


2 

0021 0 

0204 

000 

2 

CSAVX 

RMB 


2 

00220 

0206 

006 

0 

CAS BUF 

RMB 


128 

002 30 

0286 

0002 

LINE 

RMB 


2 

00240 

0300 




ORG 


$300 

00250 


0300 

START 

EQU 


• 

00260 

0300 

BD 

0 3DD 


JSR 


CINIT 

00270 

0303 

7F 

0286 


CLR 


LINE 

00280 

0 306 

7F 

0287 


CLR 


LINE+1 

00290 

0309 

CE 

0 3E2 


LDX 


IBUF 

00300 

0 30C 

86 

02 


LDA 

A 

12 

0031 0 

0 3 0 E 

A7 

00 

LOOP 

STA 

A 

0 ,X 

00320 

0310 

08 



I NX 



00330 

0311 

86 

20 


LDA 

A 

1 ' 

00340 


031 3 

LUP2 

EQU 


* 

00350 

0313 

A 7 

00 


STA 

A 

0 ,x 

00360 

0315 

08 



INX 



00370 

0316 

BP 

0 3 BA 


JSR 


CGET 

00380 

0319 

81 

1 A 


CMP 

A 

# $ 1 A 

00390 

031 B 

27 

08 


BFQ 


EOFP 

00400 

031 D 

81 

0D 


CMP 

A 

• $ 0D 

00410 

031 F 

26 

F2 


BNE 


LUP2 

00420 

0 32 1 

86 

04 


LDA 

A 

• 4 

00430 

0 32 3 

20 

E9 


BRA 


LOOP 

00440 

0325 

86 

03 

EOFP 

LDA 

A 

#3 

00450 

0327 

A 7 

00 


STA 

A 

0,X 

00460 

0329 

CE 

0 3E2 


LDX 


• BUF 

00470 

0 32 C 

86 

1 2 


LDA 

A 

• $1 2 

00480 

032E 

BD 

El D1 


JSR 


OUTEEE 

00490 

0331 

C6 

80 


LDA 

B 

• $ 80 

00500 

0333 

4F 


DELAY 

CLR 

A 


0051 0 

0334 

BD 

El D1 


JSR 


OUTEEE 

00520 

0337 

5 A 



DEC 

B 


00530 

0338 

2A 

F9 


BPL 


DELAY 

00540 

0 3 3 A 

08 



INX 



00550 

0 3 3 B 

86 

02 


LDA 

A 

• 02 

00560 

0 3 3 D 

BD 

E 1 D1 


JSR 


OUTEEE 

00570 

0340 

20 

10 


BRA 


LNUM 

00580 

0342 

A6 

00 

OUTLUP 

LDA 

A 

0 ,X 

00590 

0344 

08 



INX 



00600 

0345 

81 

03 


CMP 

A 

• 3 

0061 0 

0347 

27 

2 A 


BEQ 


DIE 

00620 

0349 

36 



PSH 

A 


00630 

0 3 4A 

BD 

El D1 


JSR 


OUTEEE 

00640 

034D 

32 



PUL 

A 


00650 

0 34E 

81 

04 


CMP 

A 

• 04 

00660 

0350 

26 

F0 


BNE 


OUTLUP 

00670 


0352 

LNUM 

EQU 


* 

0 0 6 P 0 

0 352 

B6 

0287 


LDA 

A 

LINE+1 

00690 

0355 

8 B 

01 


ADD 

A 

• 1 

00700 

0357 

1 9 



DA A 



00710 

0358 

B7 

0287 


STA 

A 

LINE+1 

00720 

0 3 5B 

B6 

0286 


LDA 

A 

LINF 

00730 

0 35E 

89 

00 


ADC 

A 

#0 

00740 

0360 

1 9 



DAA 




CASSETTE BUFFER 
LINE NUMBER 


STX 

PUT OUT LINE NUMBER 


INCREMENT AND OUTPUT LINE NUM 


00750 

0361 

B7 

0286 


STA 

A 

LINE 


00760 

0 364 

FF 

020 2 


STX 


SAVX 


00770 

0367 

CE 

0286 


LDX 


• LINE 


007P0 

0 36A 

BD 

E0C8 


JSR 


OUT4HS 


00790 

036D 

FE 

0202 


LDX 


SAVX 


00800 

0370 

on 



INX 




00810 

0371 

20 

CF 


BPA 


OUTLUP 


00820 


0173 

DIF 

poll 


* 


00830 

0.17 3 

R6 

04 


LDA 

A 

• 04 


00840 

0375 

BD 

E 1 D1 


JSR 


OUTEEE 

OUTPUT EOT 

00BS0 

0378 

86 

0 3 


LDA 

A 

• 03 


0 0 R f. 0 

0 37A 

Bn 

FI D1 


JCP 


OUTER® 

OUTPUT FTX 

0 0 R 7 o 

0 3 7 D 

R6 

1 4 


LDA 

A 

• SI 4 


0ORR0 

0 37F 

BD 

E 1 D 1 


JSR 


OUTFE® 


00890 

0 ->82 

3F 



SWI 




00900 




* CASSRFTTE 

INPUT ROUTINES 

00910 




* 





0O920 




* RESET CASSETTE DATA 

POINTER 

00930 


031 

B 3 

CREAD 

EQU 


• 


00940 

0383 

86 

1 1 


LDA 

A 

• $1 1 


00950 

0385 

BD 

E 1 D1 


JSR 


OUTEEE 


00960 

0388 

86 

3C 


LDA 

A 

• $ 3C 


00970 

0 3 8 A 

B7 

8007 


STA 

A 

CPIA+3 


00980 




* LOOK 

FOR 

S9 



00990 

0 3 8 D 

BD 

El AC 

RD ADR 

JSR 


INEEE 


01000 

0390 

81 

53 


CMP 

A 

• »S 


0 10 10 

0392 

26 

F9 


BNE 


RD AD R 


01020 

0394 

BD 

E 1 AC 


JSR 


INEEE 


01 0 30 

0397 

81 

39 


CMP 

A 

• *9 


01040 

0 399 

26 

F2 


BNE 


RDADR 


0 1050 




* GET 

DATA 




01060 

039B 

37 



P f H 

B 



01070 

039C 

5 F 



CLR 

B 



01080 

0 3 9 D 

BD 

El AC 

RDCHR 

JSR 


INEFE 


0 1090 

0 3A0 

A 7 

00 


STA 

A 

0 ,X 


01100 

03A2 

08 



INX 




01110 

0 3A3 

5C 



INC 

B 



01120 

0 3A4 

Cl 

80 


CMP 

B 

# $80 


01130 

0 3A6 

26 

F5 


BNE 


RDCHR 

GET NEXT CHAI 

01140 




* IGNORE CHECKSUM 


01150 

03A8 

BD 

E 1 AC 


JSR 


INEEE 


01160 

0 3 AB 

BD 

El AC 


JSR 


INEEE 


01170 




* STOP 

READER 



01180 

0 3 AF 

86 

1 3 


LDA 

A 

#$13 


01190 

0 3 B0 

BD 

El D1 


JSR 


OUTEEE 


01200 

0 3 B 3 

86 

34 


LDA 

A 

#$34 


01210 

03B5 

B7 

8007 


STA 

A 

CPIA+3 


01220 

03B8 

33 



PUL 

B 



01230 

03B9 

39 



RTS 




0 1240 




* 





01250 




* GET 

CHARACTER FROM 

CASSETTE 

01260 


03: 

BA 

CGET 

EQU 


* 


01 270 

0 3 BA 

FF 

0204 


STX 


CSAVX 


01280 

0 3 BD 

FE 

0200 


LDX 


CDPTR 


01290 

0 3C0 

A6 

00 


LDA 

A 

0 , X 


0 1300 

0 3C2 

08 



INX 




01310 

0 3C3 

8C 

0286 


CPX 


•CASBUF+128 

01 320 

0 3C6 

27 

07 


BEQ 


CBMPTY 


01330 

0 3C8 

FF 

0200 


STX 


CDPTP 


01 340 

03CB 

FF, 

0204 


LDX 


CSAVX 


01350 

03CE 

39 



RTS 




01 360 

0 3CF 

CE 

0206 

CBMPTY 

LDX 


• CA S BUF 


01370 

03D2 

36 



PSH 

A 



0 1380 

0 3D 3 

FF 

0200 


STX 


CDPTR 


0 1 390 

0 3D6 

8D 

AB 


BR° 


nop *r 

FT LL ruffe® 

01409 

PITS 

32 



PUL 

A 



0 1410 

0 3P 9 

Fi’ 

0204 


LDX 


CSA«*X 


?o 0 3DC 39 



R'T’S 




0 14 10 




* 





01440 




* INTTTALIZ 

l CASSETTE 

DATA POINTER 

01450 


0 3 DD 

CINIT 

EQU 


* 


01460 

03DD 

FF 

0204 


STX 


CSAVX 


01470 

0 3E0 

20 

ED 


BRA 


CBMPTY 


01480 


03E2 

BUF 

EQU 


* 


01 490 




* 





01500 

A0 4 8 




ORG 


$ A0 48 


01510 

A0 4 8 

01 00 


FDB 


$0100 


01520 





END 





TOTAL ERRORS 00000 


Page 30 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


444 



ssssssssssssssssssssssssssssssssssssssssssssssssssss* 



by Steve Newberry 
24225 Summerhill Ave. 
Los Altos, CA 94022 


KAPIAR is a general purpose macro processor for the 8080. 
With the exception only of a few added subroutines (ISIS I/O 
routines, display, signon, recovery, etc.) it is a literal transla¬ 
tion into PLM of the RATFOR program MACRO which ap¬ 
pears in Chapter 8 of “Software Tools” by Kemighan and 
Plauger. K. and P. credit Dennis Ritchie for the design, hence 
the name KAPIAR. The programming was carried out on the 
Intel MDS computer running under ISIS II at the Stanford 
University Microcomputer Laboratory under the supervision 
of Dennis Allison. 


Instructions for Use 

KAPIAR has six predefined macros: DEFINE, which 
defines other macros; IFELSE, which enables such definitions 
to be conditioned upon input; INCR and DECR, which 
increment/decrement the (numerical) argument by one; 
SUBSTR, which returns a substring of a given string; and 
DELETE, which cancels a previous definition (and reclaims the 
space occupied by that definition). 

In addition to these macros, there are also the special con¬ 
trols: Control-A, which APPENDS the result of a macro to the 
immediately preceding string; Control- C, which CEASES the 
operation of KAPIAR and returns to ISIS; Control-D, which 
DISPLAYS the contents of the macro table; and the 
ampersand *&’ which, when immediately followed by carriage 
return, is the line continuation character. 

Macro definitions/calls may be nested to depths of not 
more than 255 and may be recursive. Up to 256 short (ie., 
name+defn =< 14 characters) may be entered at the macro 
table at one time. 

The format for macro DEFINITION is: 

DEFINE(<name>=[<definition>]) 

NB: No spaces!!! 

Sometimes the square brackets may be omitted, or the equals- 
sign replaced by a comma, but the above format always works 

Number 20 


(subject only to requirements for additional pairs of square 
brackets as detailed below). 

Up to nine (9) parameters may be specified by placing the 
dummy parameters $1,... $9 in the definition string. $0 may 
also be used and will always be replaced by the macro name. 

The format for macro calls is either just the macro name 
itself (when no parameters are passed) or: 

<name> (<parmlist>) 

where <parmlist> is a (possibly empty!) sequence of up to 
nine real parameters separated by commas. The parameters 
will be passed in the order of their appearance, eg., the first 
will replace all occurrences of $1, the second of $2, etc. 

Although KAPIAR will routinely pass through unchanged 
any textual material not (containing strings) defined to be 
macros, it is good practice to enclose all lines of non-macro- 
active text in square brackets. 

Example: 

Suppose you have already defined a macro a=[whammo!]. 
Then whenever KAPIAR sees an occurrence of ‘a’ surrounded 
by non-alphanumeric characters (other than ‘[’ and “]’) it 
will substitute ‘whammo!’ for that occurrence—even if you 
had intended otherwise. ‘[Hello, isn’t it a nice day?]’ will 
pass through unchanged. If you omit the brackets the output 
will be: Hello, isn’t it whammo! nice day? Indeed, the 
question of when and where to use square bracket pairs, 
and how many pairs to use, constitutes the principal diffi¬ 
culty in programming with KAPIAR. 

Example: 

If you wish to re-define a macro then the occurrence of the 
name (in the new definition) must be enclosed in brackets. 
Thus, the sequence 

‘DEFINE(A=[B] ) DEFINE(A=[C]) A’ 
will define A to be B, will define B ( not A!) to be C, and will 
return C for the call A by first replacing A by B and then 
replacing B by C. 

Example: 

If you wish to delete a macro previously defined, then the 
occurrence of the name (in the DELETE command) must be 
enclosed in brackets. (Otherwise the DELETE command will 
be applied to the macro expansion rather than to the macro 
name.) Thus, the sequence 

‘DEFINE(A=[B]) DEFINE(B=[C]) DELETE(A)’ 
will not delete A=[B], but will delete B=[C] instead! 

Conditionals, Substrings and Recursion 

The format for the conditional is: 

IFELSE(strl ,str2,str3,str4) 

If strl = str2 then str3 will be pushed back on the buffer- 
stack for rescan. Otherwise str4 will be pushed back. 

Example: 

The sequence ‘DEFINE(A=[IFELSE($1,$2, same, dif- 
erent)]) A(grommet, grommet) A(grommet, blivet)’ will 
return ‘same different’. The use of the conditional 
together with INCR and DECR enables (among other things) 
recursive definitions by McCarthy’s device: 

f(n) = IF n=0 THEN f(0) ELSE g(f(n-1), h(n)) 
which carries over to IFELSE as 

DEFINE(f=[IFELSE(Sl,0,a,[g(f(n-l), h(n))])]) 
where a = f(0). 

Page 31 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


445 




rssssssssssssssssssssssssssssssssssssssssssssssssssss 


Example: 

The classic recursive definition of sum in terms of successor 
‘s’ and predecessor ‘p’ is: 

sum(m,n) = IF m=0 THEN n ELSE sum(p(m), s(n)) 
which carries over as 

DEFINE(sum= [IFELSE($ 1,0,$2,[sum(DECR($ 1), 
INCR(S2))])]) 

One may, in similar fashion, define product and exponent, but 
the execution is hilariously slow, eg., exponent (4,2) takes 
fifteen seconds to come up with 16. 

The SUBSTR function takes three arguments: string, i, j 
and returns the substring of string which begins with the i-th 
character and contains j characters. If j is not specified then 
the substring extends to the end of the string. 

Example: 

SUBSTR (abcdefg,2,3) returns ‘bed’. SUBSTR (abcdefg,2) 
returns ‘bedefg’. 

Example: 

We define a function LENGTH, of one string argument, 
which returns the number of characters in the string. If the 
string is null (contains no characters) then return 0, else return 
1 plus the length of SUBSTR ($ 1,2). 

DEFINE (LENGTH= [IFELSE($ 1 „0,[INCR(LENGTH 
(SUBSTR($ 1,2)))])]) 

NB: The function is defined for the null case. 

Example: 

We define a function REVERSE, of one string argument, 
which returns the characters of the string in reverse order. 
If the string is of length one then return the string, else return 
the first character appended to the string minus the first 
character. [In what follows, the “at-sign” <® will be used to 
indicate the placement of the Control-A which is the APPEND 
operator.] 

DEFINE(REVERSE= [I FELSE(LENGTH($ 1), 1 ,$ 1, 
[REVERSE(SUBSTR($1,2))] ]& [[(^SUBSTR 
(SI,1,1)])]) 

This exemplifies the usage of the continuation character 
*&’ which will be explained below. NB: REVERSE is 
undefined for the null case. 

Continuation Character 

The continuation character *&’ may be used at any point 
on a line and as many times as desired. The only requirement 
is that all “open” (ie., unbalanced) left-brackets be “closed” 
(i.e., balanced) prior to the occurrence of the ‘&’, that it be 
immediately followed by <crlf>, and that the unbalanced 
left-brackets be re-opened at the beginning of the next line. 
The reason for this is that KAPIAR will not SEE the amper¬ 
sand-carriage-return-linefeed if it occurs within square 
brackets. And, presumably, you want the square brackets to 
enclose at least some part of the next following line. Further 
examples follow. 

Example: 

We define a function DEBLANK, of one string argument, 
which returns the non-blank characters of the string in the 
order of appearance. DEBLANK will be used to demonstrate 
some of the oddities of the APPEND command. If the first 
character is a blank then return DEBLANK of the rest of the 
string, else return the first character followed by Control-A 

Page 32 


and then DEBLANK the rest of the string. [This won’t work, 
but it will be instructive to see why it fails.] 

DEFINE(DEBLANK=[IFELSE(SUBSTR($1,1,1), , 
[DEBLANK(SUBSTR($ 1,2))],] &[ [SUBSTR($ 1,1,1) 
@DEBLANK(SUBSTR($1,2))])]) 

This definition will return the de-blanked version of the argu¬ 
ment string and then go into an infinite loop. Suppose the 
string had been ‘a b’: Since ‘a’ is not a blank the recursion 
step is invoked, and we get ‘a@b@DEBLANK( b)’. Since 
‘ ’ is a blank, the “true-part” is invoked, and we get 
‘a<®DEBLANK(b)’. Since ‘b’ is not a blank, the recursion 
step in invoked, and we get ‘a@b@DEBLANK( )’. Since the 
null string ° is not a blank, the recursion step is invoked and 
we get ‘a@b@@DEBLANK( ), etc., and that is the infinite loop. 
When this happens to YOU, and you may be quite sure that it 
will, don’t be in a hurry to hit the interrupt switch, because 
this is a typical infinite loop which will blow up the evaluation 
stack (or the input bufferstack) and KAPIAR can recover 
from that eventuality. Go take a short walk, or otherwise 
dispose of about a minute or so and KAPIAR will give you an 
error message and a prompt. 

OK, so we know how to fix this problem. We DELETE 
the faulty definition and write: 

DEFINE(DEBLANK=[IFELSE($ 1,,, [IFELSE(SUBSTR 
($1,1,1), ,[DEBLANK(SUBSTR] ] ]&[[[($1,2))], 
[SUBSTR($1,1,1)@DEBLANK(SUBSTR($1,2))])]))]) 
Now if we apply this version of DEBLANK to the test string 
‘a b’ we will get ‘a@b@\ and since Control-A is a non-printing 
character, it will look to us like ‘ab’. And the output of 
REVERSE, for the same input, will look to us like ‘b a’ even 
though it really is ‘b<® @a’, because KAPIAR can see 
Control-A’s. So if you wish to define a function: 

DEFINE(PALINDROME= [IFELSE(DEBLANK($1), 
DEBLANK(REVERSE($ 1 )),yes,no)]) 
you will have to further modify DEBLANK to eliminate 
occurrences of Control-A as well as blanks. Even then if 
you write REVERSE(DEBLANK($1)) instead of DEBLANK 
(REVERSE($1)) it won’t work. (Try it!!) Anyhow, it takes 
PALINDROME three whole minutes to verify that “A MAN 
A PLAN A CANAL PANAMA” is a palindrome, so that 
should tell you something about recursive definitions. 

To recapitulate: 

DEFINE wants the second parameter in brackets, and if a 
redefinition, then both parameters in brackets. 

DELETE wants the macro-name in brackets. 

IFELSE wants the fourth parameter in brackets if it in¬ 
volves any macro-active text (definitions or calls). 

&<crlf> wants balanced square brackets. 

Control-A can be a trap. When working out a definition 
involving it, use @ instead and then go over to Control-A. 

Recursion can be a trap. Watch out for null-case versus 
unit-case terminations. 

Programming with KAPIAR 

The usual application of KAPIAR is the manipulation/ 
transformation of'text: You (1) build up a collection of 
defined macros (which constitute the program), (2) create 
a file in which the program is followed by the text (the data), 

Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


446 



and (3) submit this file (the runfile) to KAPIAR for processing 
in batch mode. 

When KAPIAR signs on, it tells you how to select batch 
mode (enter the name of the runfile and hit <cr>), or inter¬ 
active mode (enter two <cr>’s). In either mode, KAPIAR 
copies its output to the file :F1 :KAPIAR.SAV. 

Normal procedure is as follows: (1) type KAPIAR <cr> 
and select interactive mode. It is a good idea to have your 
macros already written out. (2) Test each macro until you 
are satisfied that it does what you intend and then type a 
left hand square bracket, some comment to the effect that 
the following definition is okay, then the DEFINE statement 
as tested, then a right hand square bracket <cr>. KAPIAR 
will output this to the save file. Then go on to test the next 
macro, etc. (3) When all the macros have been tested and 
saved, then exit KAPIAR (Control-C<cr>) and EDIT the save 
file. KAPIAR.SAV will contain, in addition to the commented 
DEFINE statements, all the junk output from your testing. 

(4) Copy the edited file containing the tested DEFINE state¬ 
ments to : F1 :<filename>.PGM, and write-protect it. 

(5) Somehow, get your data into :F1 :<filename>.TXT. 

(6) Now COPY : F1 :<filename>.PGM, :F1 :<filename>.TXT 
to : F1 :<filename>.RUN. (7) Now reload KAPIAR and select 
batch mode by responding to the prompt with : F1 :<file- 
name>.RUN. Your output will appear in :F1 :KAPIAR.SAV. 

Closing Remarks 

In the development/testing phase you will often find it 
useful to display the macro-table (Control-D) to check that 
what you think you typed in is what KAPIAR really got. The 
tilde ‘ " ’ is an end-of-string marker. The ascii EM, SUB, 
FS, GS, RS, US and tilde have special significance to KAPIAR 
so if you must use any of them in text then be sure to enclose 
them in square brackets. Of these, only tilde is a printing 
character. All other ascii printing characters may be freely 
used. 

If you get hung in a loop, wait for a minute or so before 
interrupting out. KAPIAR will be able to recover if any of the 
stacks blow up, and most loops will blow up at least one stack. 
Remember that if your definition doesn’t work (or loops) 
then you have probably omitted some square bracket pairs 
or parenthesis pairs of a null case terminator or have failed 
to take into account the presence of the APPEND operator 
as a string element. KAPIAR always acknowledges a new defi¬ 
nition by giving an extra <crlf> (blank line) before the 
prompt. If you don’t get that blank line then KAPIAR is 
waiting for more right hand parens or brackets. 

Finally, it should be remarked that KAPIAR is most appro¬ 
priately employed with simple non-recursive string 
replacement macros. Quoting Kernighan and Plauger, “Beware 
of becoming too clever with macros. In principle, [KAPIAR] 
is capable of performing any computing task, but it is all too 
easy to write unreadable macros that cause more trouble 
than they save work.” 

Theory of Operation 

KAPIAR consists of two large stacks (BUF and EVALST), 
a large macro table (TABLE), two small stacks (ARGSTK and 
CALLST), a large procedure (EVAL), the mainline driver, and 
a supporting cast of service routines. (See Appendix.) 

The driver corresponds to the subroutine MACRO of 
Software Tools, pp 270-71, and does the scanning. EVAL 
(p. 273) does the text-replacement and parameter-substitu¬ 
tion. 


Macro definitions are entered in TABLE by DODEF and 
INSTAL. The format of the representation in TABLE is: 

‘<name> "<definition> "’, where tilde ‘ ”’ is the end-of- 
string marker. 

Driver calls GETTOK, which loads either alphanumeric 
strings or single non-alphanumeric characters into TOKEN. If 
TOKEN is alphanumeric then driver calls LOOKUP to see 
whether or not TOKEN is a macro name in TABLE. If not, 
then driver calls PUTTOK. If we are not in the middle of 
evaluating some other macro then TOKEN is irrelevant to 
the macro business and PUTTOK sends it on to the outside 
world. Otherwise PUTTOK pushes it onto EVALST for 
further processing. If TOKEN was found by LOOKUP in 
TABLE then the name and definition are pushed (by 
PUTTOK) onto EVALST in reverse order: <definition> ’ 
<name> ’ and CP is incremented to record the level of macro 
nesting. 

Now driver calls GETTOK again, and looks for a left hand 
paren to signal the beginning of the parm-list. (If it doesn’t 
find one, it pushes an empty paren-pair back onto the buffer- 
stack BUF and tries again.) The contents of the parmlist 
(possibly empty) are pushed back onto EVALST until a 
balanced right hand paren is encountered. At this point, 
EVALST looks like this (assuming that we are not nested in 
some other macro): 

<definition> '<name> ’<parm 1>, ... ,<parm k> * 
Driver then calls EVAL, which begins by looking at the 
bottom of the stack: if <definition> corresponds to any 
of the special symbols DEFTYPE, INCTYPE, etc., the EVAL 
knows that this is a predefined macro and calls the appropriate 
subroutine (DODEF, DOINCR, etc.,) otherwise EVAL starts 
scanning <definition> backwards, from right to left, looking 
for ARGFLAG ‘$’. Any character which is not preceded by 
‘S’ is pushed back onto the bufferstack BUF. Anything which 
is preceded by ‘S’ is regarded by EVAL to be a decimal digit d, 
0 < = d < = 9, and the d-th string above <definition> in 
EVALST is pushed back instead. If d is zero then ^name>is 
pushed back, otherwise <parm d> is pushed back. E\ X„. loes 
some clever pointer-juggelry with the help of the short stacks 
ARGSTK and CALLST to avoid doing something stupid if the 
parmlist contains fewer actual parms then anticipated by 
<definition>. EVAL does rely on the user to indicate by 
consecutive commas the absence of initial or intermediate 
elements of the parmlist. 

When EVAL has pushed back all the replacement text 
and/or real parms invoked by the macro call it returns to 
driver, which then flushes that portion of EVALST by 
resetting the pointers AP, CP and EP. Driver then resumes 
the scanning of input from BUF by calling GETTOK and the 
next cycle begins. 

There is an exception to the above-described process: When 
the scan turns up a left hand square bracket, driver throws it 
away and goes looking for the matching right hand bracket, 
passing everything in between to PUTTOK without further 
analysis. When driver finds the matching right hand bracket 
it throws that away too, and then resumes the normal scanning 
process. 



Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 33 


447 



Appendix 


The cast of characters in order of appearance: 

OPEN, READ, WRITE, CLOSE and EXIT are ISIS subroutines 
for file I/O. Consult ISIS PROGRAMMER’S MANUAL 
for details. 

PUTC takes one parm, CHR, byte, and writes that single char¬ 
acter out to both the console and to :F1 :KAPIAR.SAV. 
Called by REMARK, PBSTR, INSTAL and EVAL. 

CRLF outputs a carriage-return and linefeed. Called by 
REMARK, EIGHTY and DISPLAY. 

REMARK takes one parm, STRSPTR, address, outputs a 
crlf and the ascii string pointed to by STRSPTR. Called 
by GETC, PUTBAK, GETTOK, INSTAL, SEEKNBR, 
PUTCHR, PUTTOK, PUSH and driver. 

EIGHTY takes one parm, CHR, byte, outputs crlf and 80 
copies of CHR. Called by DISPLAY, GETC. 

DISPLAY takes two parms, INDEX, ARRAYSPTR, addresses, 
outputs crlf, eighty dashes, all ascii characters of the 
array in the closed interval [head, tail], eighty dashes 
and a crlf. Called by GETC. 

SIGNON outputs the sign-on message and sets up the run for 
either interactive or batch operation. 

GETC returns the next character from the standard input 
buffer, calls SIGNON at startup time and updates 
the state-vector deque by calling SAVESTATES when¬ 
ever a new bufferload of input arrives from the console. 
Also handles special control characters Control-A, 
Control-C and Control-D. Called by GETTOK, affects 
BUF and BP. 

SAVESTATES maintains a deque of state-vectors for recovery 
purposes. 

PUTBAK takes one parm, CHR, byte, pushes it back on the 
input bufferstack. Called by EVAL, PBSTR and 
GETTOK, affects BUF and BP. 

PBSTR takes one parm, INSPTR, address, calls PUTBAK for 
each character in the string pointed at by INSPTR. 
Called by EVAL and MACRO, alters BUF, BP through 
the action of PUTBAK. 

INDEX takes two parms, STRSPTR and CHR, address and 
byte. Returns zero if CHR not in STR, else returns the 
index of CHR in STR. Called by EVAL. 

TYPE takes one parm, CHR, byte. Returns DIGIT if CHR is 
a digit, returns LETTER if CHR is a letter, otherwise 
returns CHR. The code for TYPE differs substantially 
from that given in “Tools”. Called by GETTOK. 

GETTOK takes two parms, TOKSPTR and TOKSIZ, address 
and a byte constant (upper limit on length of TOKEN). 
As a side-effect either loads TOKEN with alphanumeric 
string and EOS or with a single character. As a function, 
returns a byte value signifying which (ie., alpha string 
or single non-alpha). Called by driver, affects TOKEN. 

SCOPY takes four parms, FROMSPTR, I, TOOSPTR, J, 
addresses, and copies the string beginning at .FROM(I) 
and ending with EOS to the position beginning at 
.TOO(J). [‘TO’ is a PLM reserved word, hence the 
spelling ‘TOO’.] Called by INSTAL and LOOKUP, 
alters contents of TABLE and DEFN. 

INSTAL takes two parms, NAMESPTR and DEFPTR, ad 
dresses, calls SCOPY to enter the strings beginning at 
.NAME and .DEFN in TABLE. Called by driver and 
DODEF, alters TABLE, NAMDEXINTBL (a 1-dimen¬ 
sional address array holding the initial locations (in 
TABLE) of the name-definition string-pairs), PLAST 
(an address variable indexing string entries in TABLE). 

EQUAL takes two parms, STR1SPTR and STR2SPTR, ad¬ 
dresses, and returns either YES or NO according as 
STR1 = STR2. Called by DELETE. 


DELETE takes one parm, NAMSPTR, address, and removes 
the last definition of NAME from TABLE. Called 
by EVAL, alters TABLE. 

PUTCHR takes one parm, CHR, byte. If CP is zero then passes 
CHR to output by calling PUTC, else pushes CHR onto 
EVALST and bumps EP. Called by driver and PUTTOK, 
alters EVALST and EP. 

PUTTOK takes one parm, STRSPTR, address, is an elabora¬ 
tion of PUTCHR to handle strings. See comments, 
“Tools” pp. 28Iff. Called by driver, alters EVALST and 
EP. 

PUSH takes three parms, EP, ARGSTKSPTR, AP, addresses, 
pushes current value of EP onto ARGSTK and bumps 
AP. Called from driver. 

LOOKUP takes two parms, NAMESPTR and DEFNSPTR, 
addresses, looks to see if NAME is entered in TABLE. 
If so, copies <definition> to the temp DEFN by calling 
SCOPY. Called by driver, alters DEFN. 

EVAL takes three parms, ARGSTKPTR, I, J, addresses. Con¬ 
tains eight of its own private procedures, DODEF, 
DOIF, CTOI, PBNUM, DOINCR, DODECR, MIN 
and DOSUBSTR. Consult THEORY OF OPERATION 
above for details. Called by driver, alters TABLE (by 
calling DODEF) or BUF and BP. The driver is analyzed 
in THEORY OF OPERATION above. 

RECOVER is a non-procedure which technically belongs 
to driver, but is intuitively more like a subroutine. It 
is entered by a GOTO from any of GETTOK, INSTAL, 
PUTCHR, PUTTOK, PUSH and driver. It pops the tops 
of the various state-vector deques to their target point¬ 
ers, moves everything (in each deque) up one notch, 
enters the program-entry initial values at the bottom of 
each deque, and jumps to RESTART in driver. The 
deques preserve the values of the critical pointers (AP, 
CP, EP, PLAST, TLAST and STACKPTR) for the 
previous 32 linebuffer inputs from the -onsole. (See 
GETC above.) Whenever a stack blows up, RECOVER is 
jumped to, and the state of KAPIAR restored to that 
preceding the last bufferload of input from the console. 


For Further Reading 

Brown, P. J., Macro Processors and Techniques for Portable Software, 
Wiley, London, 1974. 

Campbell-Kelly, M. An Introduction to Macros, American-Elsevier, 
New York, 1973. 

Cole, A. J., Macro Processors, Cambridge Computer Science Texts 4, 
Cambridge University Press, Cambridge, 1976. 

Kernighan, Brian W. and P. J. Plauger, Software Tools, Addison - 
Wesley, Reading, MA, 1976. 

Mooers, C. N. "TRAC, A Procedure-Describing Language for the 
Reactive Typewriter", Communications of the ACM 9:3, (March, 
1966), pp 215-219. 

Strachey, C. "A General Purpose Macrogenerator," Computer Journal, 
8:3, (March 1965) pp. 225-41. 

Wegner, P., Programming Languages, Information Structures and Ma¬ 
chine Organization , McGraw-Hill, New York, 1968. 

Waite, William M., Implementing Software for Non-Numeric Appli¬ 
cations, Prentice-HalI, Englewood Cliffs, N. J., 1973. 


Page 34 Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


448 



/* ISIS SYSTEM DECLARATIONS */ 


OPEN PROCEDURECAFT. FILE, ACCESS, MODE, STATUS)EXTERNAL. 
DECLARE (AFT, FILE, ACCESS-, MODE, STATUS' ADDRESS, 
END OPEN, 


READ PROCEDURE(AFT, BUFFER COUNT, ACTUAL, STATUS) EXTERNAL, 
DECLARE (AFT, BUFFER, COUNT, ACTUAL, STATIUS) ADDRESS, 
END READ, 


WRITE PROCEDURE!AFT, BUFFER, COUNT, STATUS) EXTERNAL, 
DECLARE (AFT, BUFFER, COUNT, STATUS) ADDRESS, 
END WRITE. 


CLOSE PROCEDURE(AFT, STATUS) EXTERNAL, 
DECLARE (AFT, STATUS)ADDRESS, 

END CLOSE. 


EXIT PROCEDURE EXTERNAL, 
DECLARE STATUS ADDRESS, 
END EXIT, 


* MACROS LITERALLY CONSTANTS */ 

DECLARE IS LITERALLY LITERALLY , MAXPTR IS '256', BUFSIZE IS 4096 
ARGFLAG IS 24H , CR IS 'ODH', LF IS 'OAH', 

EOS IS OFEH , ALPHA IS '41H', EVALSIZE IS '4096 . 

LETTER IS 41H', DIGIT IS O', DEFTYPE IS 01FH'. 

MAXLINE IS 80', EOFF IS OFFH', HAXTBL IS '4096', 

MAXTOK IS 122 ■ MAXDEF IS 1024', EQUALS IS "3DH', 

LPAREN IS 28H', RPAREN IS 29H', STAR IS '2AH', 

LBRACK IS '5BH . RBRACK IS 5DH , DASH IS '2DH', 

COMMA IS '2CH , YES IS T, NO IS 'O'.IFTYPE IS '01EH . 
CALLSIZE IS 256 , ARGSIZE IS '1024'. DELETYPE IS '01DH', 
INCRTYPE IS 01CH', DECRTYPE IS 01AH'. 

SUBSTRTYPE IS '019H*. BLANK IS '20H'; 


GLOBAL DECLARATIONS 


DECLARE (BUFACT. INSTAT, OUTACT, OUTSTAT, INPAFT, SAVAFT, STATUS, 
AP, BP, CP, EP, HEAD, TAIL, PLAST, STKSAVO, TLAST) ADDRESS, 
TABLEIMAXTBL) BYTE, BUF(BUFSIZE) BYTE, INTERACTIVE BYTE, 
EVAL$T(EVALSIZE) BYTE, NAhDEXINTBL(256) ADDRESS, 

DEFNlMAXDEF) BYTE, ARGSTKtARGSIZE) ADDRESS, 

(APS-AV, CPSAV, EPSAV, PLASTSAV, TLASTSAV, STKPTRSAV) (32) 
ADDRESS, START BYTE, TOKEN(MAXTOK) BYTE, INFILNAM(15) BYTE, 
CALLST(CALLSIZE) ADDRESS, PLEV(CALLSIZE) BYTE, 

BALP(3) BYTE DATA (MV)', EOS), DEFNAMI7) BYTE DATA 
tD', E , F , T, N', 'E', EOS), DEFTYP(2) BYTE DATA 
‘DEFTYPE, EOS), CONDNAM'7) BYTE DATA ('I', 'F', 'E', 'i', "S', 
CONDTYP(2> BYTE DATA (IFTYPE.EOS). (T, NLB) BYTE, 

DELTNAM(7) BYTE DATA ('D','E','L'. E','T'.'E'.EOS). 
DELTYP(2) BYTE DATA (DELETYPE.EOS), INCRNAM(5) BYTE DATA 
( I N , C', R ,EOS), DECRNAM(5) BYTE DATA 
( D - E C - R ,EOS), $UBSTRNAM(7) BYTE DATA 
('S', U. B , 'S'■, 'TVR'.EQS). INCRTYP(2) BYTE DATA 
(INCRTYPE,EOS), DECRTYP(2) BYTE DATA (DECRTYPE,EOS), 
SUBSTRTYP(2) BYTE DATA (SUBSTRTYPE,EOS), 


PROCEDURE DECLARATIONS 


PUTC PROCEDURE (CNR), 

; STATEMENT I 19 

, PftOC PUTC 

0678 212F4?. LXI H.Ofl 

067B 71 MOV M,C 

DECLARE CHR BYTE, (OUTACT, OUTSTAT) ADDRESS, 

OUTACT = 1. 

, STATEMENT * 21 

067C 210100 LXI H.1H 

067F 223043 SHLD OUTACT 

CALL WRITElSAVAFT. CNR, OUTACT, OUTSTAT), 

, STATEMENT « 22 

0682 2AOCOO LHLD SAVAFT 

0685 E5 PUSH H ,1 


: 

i 


0686 

012F43 

LXI 

B, CHR 

0689 

C5 

PUSH 

B i 

06SA 

2A3043 

LHLD 

OUTACT 

068D 

44 

MOV 

B,H 

068E 

4D 

MOV 

C.L 

068F 

113243 

LXI 

D, OUTSTAT 

0692 

CDOOOO 

CALL 

WRITE 


IF INTERACTIVE THEN 


, STATEMENT # 23 
INTERACTIVE 


3A2220 LDA INTERACTIVE 

IF FAR 

D2AF06 JNC 81 

CALL WR!TE(0, CHR OUTACT, OUTSTAT), 

, STATEMENT ft 24 


6°C 

010000 

LXI 

B, OH 

>c*F 

C5 

PUSH 

£ 

)6A0 

012F43 

LXI 

£•, CHR 

»6A3 

rs 

PUSH 

B 

•6A4 

2A3043 

LHLD 

OUTACT 

6A7 

44 

MOV 

B, H 

fcAS 

4D 

MOV 

C.L 

:.h 

113243 

LXI 

D, OUTSTAT 

)tAC 

CDOOOO 

?l 

RETURN. 

CALL 

WRITE 


SThTEHENT ft 26 


LENGTH PF'CCED 1 IRE‘:TRfPTF ADDRESS, ♦ COMPUTE LENGTH OF STRING 
STATEMENT ft 2" 





PhX LENGTH 



vOO 

21354; 

l(I 

H, STRP 


<v>B3 

70 

MOV 

M, B 


06B4 

2B 

OCX 

H 


06E5 

71 

MOV 

M, C 

28 

: 


DECLARE STRIPTF: ADDRESS 

2* 

: 


LNGTH = 0. 



OftBt 

210000 

LXI 

H, OH 


06B C 

223642 

SHLD 

LNGTH 




DO WHILE STR(LNGTH) 2 




8100 



06BC 

2A3&43 

LHLD 

LNGTH 


06BF 

EE 

XCHG 



06C0 

1A 3443 

LHLD 

STRPTR 


06C3 

19 

DAD 

D 


06C4 

7 £ 

MOV 

A.M 


0tC5 

FEFE 

CPI 

OFEH 


06C 7 

■:AD406 

JZ 

8101 

31 



LNGTH = LNGTH 

1. 


>6CA 

2A3643 

LHLD 

LNGTH 


06CD 

23 

lNx 

H 


06CE 

223643 

SHLD 

LNGTH 

32 



END t* DO-WHILE 

*/ , 


0&D1 

C3BC06 

JMP 

8100 




8101 


33 

2 


RETURN LNGTH, 



OoD4 

2A3643 

LHLD 

LNGTH 


06D7 

C° 

RET 


34 

2 


END LENGTH. 



STATEMENT ft 29 


STATEMENT ft 30 


35 1 CRLF PROCEDURE, 

, PROC CRLF 

36 2 CALL PUTC(CR), 

CfcDS OEOB MV I C, ODH 

06DA CD7806 CALL PUTC 

37 2 CALL PUTC (LF) !** 

06DD OEOA MV1 C.OAH 

06DF CD7806 CALL PUTC 

38 2 END CF1F, 


STATEMENT ft 31 


STATEMENT ft 32 


STATEMENT ft 33 


STATEMENT ft 34 


STATEMENT ft 35 


STATEMENT ft 36 


STATEMENT ft 37 


STATEMENT ft 38 


BYTE, LNGTH ADDRESS 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 35 


449 




REMAR) PROCEDURE iSTRIFTR. 
PROC REMARK 


GENERAL--PURPOSE MESSAGE PRINTER »/ 
, STATEMENT I 


DECLARE (STRiPTR, STAT) ADDRESS, STRING BASED STR4PTR (1) BYTE. 
L ADDRESS. 


DISPLAY PROCEDURE (INDEX, ARRAY$PTR). /* SHOW CONTENTS OF ARRAY #/ 
. STATEMENT # 55 

PROC DISPLAY 


OoE: 

215**3 

LXI 

H, STRPTR+1H 

$ 

0742 

214343 

LXI 

H,ARRAYPTR+1H 

0&E6 

•0 

MOV 

M, B 

0745 

72 

MOV 

M.D 

06E’ 

:b 

DCX 

H 

s 

0746 

2B 

DCX 

H 

OoE© 

'1 

MOV 

HiC 

V 

0747 

7 ; 

MOV 

M.E 


L = LENGTH! STRING), 




Obi* 

2A3843 

LHLD 

STRPTR 



06EC 

44 

MOV 

B.H 



OoED 

4D 

MOV 

CiL 



06EE 

CDB006 

CALL 

LENGTH 



06F1 

22X43 

SHLD 

L 

42 

2 


CALL CRLF, 




06F4 

CBoeot 

CALL 

CRLF 

43 

2 


CALL WRITEISAVAFT, STRSPTR, 



06F7 

2A0C00 

LHLD 

SAVAFT 



OoFA 

E5 

PUSH 

H 



06FB 

2A3843 

LHLD 

STRPTR 



06FE 

E5 

PUSH 

H 



06FF 

2A3C43 

LHLD 

L 



0702 

44 

MOV 

B.H 



,)"Y? 

4D 

MOV 

C.L 



0704 

1i3A43 

LXI 

D,STAT 



."O 7 

CDOO0O 

CALL 

WRITE 

44 

- 


CALL WRITE vO. STRftPTR, L, 



070A 

010000 

LXI 

B, OH 



0700 

C5 

PUSH 

B 



070E 

2A3S43 

LHLD 

STRPTR 



0711 

E5 

PUSH 

H 



0712 

2A3C43 

LHLD 

L 



0715 

44 

MOV 

B, H 



0716 

4D 

MOV 

C,L 



0717 

113A43 

LXI 

D,STAT 



071A 

CDOOOO 

CALL 

WRITE 

45 

2 


RETURN, 





071D 

C9 

RET 


46 

* 


END REMAR), 

i 

47 

i 


EIGHTY: PROCEDURE(CHR), 

/* PUT ( 




, PROC 

EIGHTY 




07 IE 

213E43 

LXI 

H. CHR 



0721 

71 

MOV 

M, C 

48 

2 


DECLARE 

(CHR, I) 

BYTE, 

49 

o 


CALL CRLF, 




0722 

CDD806 

CALL 

CRLF 

50 

2 


DO I = 1 

TO 80, 




0725 

213F4? 

LXI 

H, I 



0728 

3601 

nvi 

M, 1H 




@102. 





072A 

3E50 

MVI 

A, 50H 



072C 

213F43 

LXI 

H, I 



072F 

BE 

CMP 

M 



0730 

DA4107 

X 

@103 

51 

3 


CALL PUTC(CHR), 




0733 

2A3E43 

LHLD 

CHR 



0736 

4D 

MOV 

C,L 



0737 

CD7806 

CALL 

PUTC 

52 

3 


END. 





073A 

213F43 

LXI 

H, I 



073D 

34 

I NR 

M 



073E 

C22A07 

JNZ 

@102 




@103: 



53 

2 


RETURN, 





0741 

C9 

RET 



STATEMENT I 41 


STATEMENT * 42 


L. STAT), 
STATEMENT I 43 


DECLARE (ARRAVSF'TR, I. INDEX) ADDRESS, 
ARRAY BASED ARRAY$PTR (1) BYTE, 
<CHR, LINE) Byte, 


STAT), 

STATEMENT # 44 


STATEMENT » 45 


STATEMENT * 46 


STATEMENT • 47 


STATEMENT * 4? 


STATEMENT I 50 


STATEMENT I 51 


STATEMENT « 52 


STATEMENT # 53 


STATEMENT # 54 


CALL EIGHTY(DASH), 


074C 

0E2D 

MVI 

C, 2DH 

074E 

CD1E07 

CALL 

EIGHTY 



CALL CRLF, 


0751 

CDD806 

CALL 

CRLF 



HEAD, LINE = Oi 


0754 

210000 

LXI 

H, OH 

0757 

221800 

SHLD 

HEAD 

075A 

7D 

MOV 

A, L 

075B 

324743 

STA 

LINE 



TAIL = INDEX, 


075E 

2A4043 

LHLD 

INDEX 

07ol 

221 ACM) 

SHLD 

TAIL 



DO I = HEAD TO TAIL, 

0764 

2A1800 

LHLD 

HEAD 

0767 

224443 

SHLD 

I 



@104 


076A 

111A00 

LXI 

D, TAIL 

076D 

01444? 

LXI 

B, 1 

0770 

CDOOOO 

CALL 

@P0098 

0773 

DABA07 

X 

@105 



CHR = ARRAY <1) i 

0776 

2A4443 

LHLD 

I 

0779 

EE. 

XCHG 


077A 

2A4243 

LHLD 

ARRAYPTR 

077D 

19 

DAD 

D 

077E 

7E 

MOV 

A, M 

077F 

324643 

STA 

CHR 



CALL PUTC(CHR), 

0782 

2A4643 

LHLD 

CHR 

0785 

4D 

MOV 

C,L 

0786 

CD7806 

CALL 

PUTC 



IF (CHR = CR) 

THEN 

0789 

3A4643 

LDA 

CHR 

078C 

FEOD 

CPI 

ODH 

078E 

C29607 

JNZ 

@2 



LINE = 0; 


0791 

214743 

LXI 

H. LINE 

0794 

3600 

MVI 

M, OH 


STATEMENT « 57 


STATEMENT » 5? 


STATEMENT « 60 


STATEMENT » 61 


STATEMENT tt 62 


0796 3A4743 
0799 FE4F 
079B D2A507 


079E 214743 
07A1 34 
07A2 C3AD07 


IF LINE < 79 THEN 

LDA LINE 
CPI 4FH 

JNC @3 

LINE = LINE ♦ li 


STATEMENT I 63 


STATEMENT « 64 


STATEMENT » 65 


STATEMENT « 66 


STATEMENT I 67 


LXI H,LINE 

I NR M 

JMP @4 

!3 

ELSE /* LINE IS FULL 
DO, 


07A8 214743 
07AB 3600 


CALL CRLF 
LINE = Oi 


LXI H, LINE 

MVI M, OH 


STATEMENT ft 69 

STATEMENT ft 70 


STATEMENT 4 71 


Page 36 

450 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 



07AD 110100 
07BO 2A4443 
07B3 19 
0764 224443 
07B7 D26A07 


END /* DO I = HEAD 

LX I D.1H 

LHLD I 

DAD D 

SHLD I 

JNC £104 

£105 

CALL EIGHTY(DASH)• 


*/. 

, STATEMENT 4 72 


07BA 0E2D MVI C.2DH 

07BC CD1E07 CALL EIGHTY 

CALL CRLF; 

07BF CDD806 (ML CRLF 

RETURN, 

07C2 C9 RET 

END DISPLAY, 


STATEMENT I 73 


STATEMENT I 74 


STATEMENT • 75 


STATEMENT • 76 


SIGNGN PROCEDURE, /* SET/CLEAR INTERACTIVE FLAG #/ 
. STATEMENT • 77 

, PROC SIGNON 

DECLARE I ErTE 


’ v 

: 



DO I = TC 14 

, STATEMENT 4 79 



0 7 CS 

214843 

LX1 

H I 



0 *C6 

3oOO 

MVI 

M.OH 





8106 




0 7 C8 

3E0E 

MV! 

A.OEH 



0 7 CA 

2148*3 

L>I 

Hi I 



•rcD 

BE 

•IMF 

M 



07CE 

DAE:v 7 

JC 

£lV? 

80 




INFILNAMil) 

* 20H, /* BLANK IT GUT */ 






, STATEMENT 4 80 



TD1 

2A4o*? 

LHLD 

I 



3‘D* 

2o00 

MVI 

Hi 0 



07&6 

01 IE40 

»_t I 

E. INFiLNAM 



fyTfi 

09 

DhD 

6 



07DA 

h20 

MVI 

M, 20H 

81 

3 



csiri 

STATEMENT 4 81 



•/’DC 

2148*3 

L * I 

H. 1 



07DF 

34 

I* 

M 



>7E0 

C2C807 

.-NI 

*i 

£106 

82 




INTERACTIVE = 

'jFFm, 






STATEMENT « 82 



0 7 E; 

112-20 

LX! 

n,INTERACTIVE 



07E6 

36FF 

MVI 

M, yFFri 

83 

2 



:all rehDu 

BuF 128, .BUFACT, . INSTAT); j 






, STATEMENT 4 83 



0 7 E9 

010100 

lXI 

B, 1H 



07EB 

C5 

PUSH 

B , 1 



0 7 EC 

012210 

LXI 

B.BUF 



•rEF 

,*-c, 

PUSH 

B 2 



0T0 

018*300 

a I 

B. 80H 



•: ,7 F3 

C5 

PUSH 

B , 3 



0T4 

1104O0 

LXI 

D. INSTAT 



07F7 

010200 

UI 

B. BUFACT 



OTA 

CDOOOO 

CALL 

READ 

84 

2 



CALL CRLF. 

, STATEMENT 4 84 



OTD 

CDD806 

CALL 

CRLF 

85 

2 



CALL REMAR)i 

, STATEMENT 4 85 



oeoo 

014000 

LXI 

E.I-7C0H 



0803 

CDE306 

CALL 

REMAR) 




FOF BATCH—MODE OPERATION, RESPOND BY ENTERING NAME OP 

86 

2 



CALL REMAR)■ 

, STATEMENT 4 86 



0806 

01SBO3 

LXI 

B,4-77BH 



0809 

CDE306 

CALL 

REMARK 



('(AND HIT RETURN) OTHERWISE HIT RETURN TWICE', l 

87 

2 



CALL CRLF, 

, STATEMENT • 87 



080C 

CDD806 

Cft-L 

CRLF 

88 

2 



CALL READ<1, 

INFILNAM, 15, BUFACT, INSTAT), 






, STATEMENT 1 88 



080F 

010100 

LXI 

B, 1H 



0812 

C5 

PUSH 

B i 1 



0813 

011E40 

LXI 

B,INFILNAM 



0316 

C5 

PUSH 

B , 2 


♦ FLUSH BUFFER §/ 


0817 

010F00 

LXI 

B, OFH 

081A 

C5 

PUSH 

B 

081B 

110400 

LXI 

D. INSTAT 

081E 

010200 

LXI 

B,BUFACT 

0821 

COOOOO 

CALL 

CALL READ!I. 

READ 

BUF, 113, 1 

0824 

010100 

LXI 

B, 1H 

0827 

C5 

PUSH 

B 

0828 

012210 

LXI 

B, BUF 

082B 

C5 

PUSH 

B 

082C 

017100 

LXI 

B.71H 

082F 

C5 

PUSH 

B 

0830 

110400 

LXI 

D,INSTAT 

0833 

010200 

LXI 

B, BUFACT 

'3836 

CDOOOO 

CALL 

READ 


IF (INFILNAH(O) AND 7FHI O 01 

0839 

3A1E40 

LDA 

INFILNAM 

083C 

E67F 

ANI 

7FH 

083E 

FEOD 

CPI 

ODH 

'3840 

CA5D08 

JZ 

£5 


, STATEMENT • 89 

, 1 

. 2 
. 3 

DH THEN 

, STATEMENT * 90 


CALL OPEN! 1NPAFT, INFILNAH, 1, 0, STATUS), 
. STATEMENT « 92 


5 ., 

s 

^ 96 2 

s„, 

s 

V 98 2 

I. 

s™. 


<3843 

010A00 

LXI 

B,INPAFT 

0846 

C5 

PUSH 

B , 1 

0847 

011E40 

LXI 

B,INFILNAM 

084A 

C5 

PUSH 

B , 2 

084B 

010100 

LXI 

B.1H 

084E 

C5 

PUSH 

B , 3 

084F 

110E00 

LXI 

D, STATUS 

0852 

010000 

LXI 

B, OH 

0855 

CDOOOO 

CALL 

OPEN 



INTERACTIVE = 

= 0, 




, STATEMENT 1 

0858 

212220 

LXI 

H,INTERACTIVE 

085B 

3600 

MVI 

M, OH 



END, /t IF-DO 

♦/ 


RET 

END SIGNON, 


, STATEMENT • 94 


STATEMENT • 95 


STATEMENT • 96 


GETC PROCEDURE BYTE, /# RETURNS NEXT CHAR FROM STD INPUT BUFFER t/ 
i STATEMENT « 97 

i PROC GETC 
DECLARE (CHR, I) BYTE, 


SAVESTATE: PROCEDURE, 


, PROC SAVESTATES 

DECLARE I BYTE, 


DO I = 0 TO 30, 


STATEMENT • 99 


/* PUSH ALL VALUES DOWN ONE ♦/ 
STATEMENT * 101 


0943 

214B43 

LXI 

H.I 

0946 

3600 

MVI 

M, OH 


•108 



0948 

3E1E 

MVI 

A, 1EH 

094A 

214643 

Lxl 

H, I 

0940 

BE 

CMP 

M 

094E 

DA06(iA 

JC 

£109 



APSAVil) = APSAViI+1), 




, STATEMENT 1 

0951 

2A4B43 

LHLD 

I 

0954 

2600 

MVI 

H,0 

0956 

01253E 

LXI 

B, APSAV+2H 

•3959 

29 

DAD 

H 

•395A 

09 

DAD 

B 

0*5B 

E5 

PUSH 

H , 1 

•395C 

2A4B43 

LHLD 

I 

095F 

2600 

MVI 

H, 0 

0961 

01233E 

LXI 

B. AFSAV 

0964 

29 

DAD 

H 

'3965 

'39 

DAD 

6 

0966 

E3 

XTHL 

, 1 

0967 

4E 

MOV 

C, h 

0968 

23 

INX 

H 

0969 

46 

MOV 

B,M 

096A 

El 

POP' 

H : 1 

096B 

71 

MOV 

MiC 

096C 

23 

INX 

H 

096D 

70 

MOV 

M, B 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 37 


451 





CPSAV(I) = CPSAV(I+l)i 

$ 

10 7 

A 



STKPTRSAVin « STKPTRSAVXI+1); 




i STATEMENT 1 103 

V 






STATEMENT 4 107 

096E 

2A4B43 

LHLB 

I 

s 



09E2 

2A4E43 

LHLD 

i 

0971 

2600 

MVI 

Hi 0 



nvr c , 

2600 

f. Vi j 


0973 

01653E 

LXI 

B. CPSAV+2H 

s 




01653F 

. ,* 

B.STKPTRSAV+2H 

0976 

29 

DAB 

H 

$ 





DAD 


0977 

09 

DAD 

B 



O'jEE 

O'? 

DAD 


0978 

E5 

PUSH 

H i 1 



ijQCf 

E5 

PUSH 

H , l 

0979 

2A4B43 

LHLD 

1 

S 



09ED 

2A4B4; 

LHLD 

I 

097C 

2600 

MVI 

Hi 0 

s 



.'iOFO 

2600 

MVI 

H,0 

097E 

01633E 

LXI 

B, CFSAV 

s 



r,Q F7 

Oli33F 

LXI 

B.STKPTRSAV 

0981 

29 

DAD 

H 



09F5 

29 

DAD 

H 

0982 

09 

DAD 

B 



0°F6 

09 

[»AD 

l 

0983 

E3 

XTHL 

. 1 

s 



09F7 

E? 

XTHL 

: 1 

0984 

4E 

MOV 

Ci M 




•'.OP?; 

4E 

MOV 

C,M 

0985 

0986 

23 

46 

INX 

MOV 

H 

B,M 

$ 



09F9 

09FA 

4A 

INX 

MOV 

h 

£,M 

0987 

El 

POP 

H i 1 

s 



09FB 

El 

POF 

H . 1 

0988 

71 

MOV 

M,C 

\ 



09FC 

71 

MOV 

M,C 

0989 

23 

INX 

H 

s 



09FD 

23 

INX 

H 

098A 

70 

MOV 

M,B 



09FE 

70 

'■MOV 

Mi B 



EPSAV(I) = EPSAVd+l), 

> 

108 

4 



END: 

, » HJ-LOOP, I = 31 »/ 




. STATEMENT # 104 

s 






i STATEMENT 4 108 

098B 

2A4B43 

LHLD 

I 

5 



09FF 

214B43 

LX! 

H. I 

098E 

2600 

MVI 

H,0 



0A02 

34 

I NR 

M 

•>990 

01A53E 

LXI 

B,EPSAV+2H 



0AO3 

C24809 

.IN2 

§108 

0993 

29 

DAD 

H 

s 







0994 

09 

DAD 

B 

V 

109 

3 



APSAV(I) = AP, /* TOP OF STACK! 

0995 

E5 

PUSH 

H , 1 

$ 






, STATEMENT 4 109 

09°6 

2A4B43 

LHLD 

I 



0A06 

2A4B43 

LHLD 

1 

0999 

2600 

MVI 

H.0 

s 



0A09 

2600 

MVI 

HiO 

099E 

01A33E 

LXI 

B.EPSAV 

V 



OAOB 

01233E 

LXI 

B, AF'SAV 

099E 

29 

DAD 

H 

s 



OAOE 

29 

DAD 

H 

099F 

09 

DAD 

B 



OAOF 

09 

DAD 

B 

09A0 

E3 

XTHL 

i 1 

s 



0A10 

E5 

FUSH 

H ; 1 

09 A1 

4E 

MOV 

C,M 




0A11 

2A1000 

LHLD 

AP 

09A2 

23 

INX 

H 

s 



0A14 

EB 

XCHG 


09A3 

46 

MOV 

B,M 



0A15 

El 

POP 

H , 1 

09A4 

El 

POP 

H i 1 

> 



0A16 

73 

MOV 

M,E 

09A5 

71 

MOV 

M. C 




0A17 

23 

INX 

H 

09A6 


INX 

H 

s 



0A18 

72 

MOV 

M,D 

09A7 

70 

MOV 

M,B 

110 

3 



CF’SAVU) = CP. 



PLASTSAVlI) = PLASTSAV! Itlli 






- STATEMENT 4 110 




. STATEMENT 1 105 

s 



0A19 

2A4B43 

LHLD 

I 

09A8 

2A4B43 

LHLD 

T 




0A1C 

2600 

MVI 

H, 0 

09AB 

2600 

MVI 

H, 0 

$ 



0A1E 

01633E 

LXI 

B, CF'SAV 

09AD 

01E53E 

LXI 

B,PLASTSAV+2H 



0A21 

29 

DAD 

H 

09B0 

29 

DAD 

H 

s 



0A22 

09 

DAD 

B 

09B1 

09 

DAD 

B 




0A23 

E5 

PUSH 

H i 1 

09B2 

E5 

PUSH 

H i 1 

s 



0A24 

2A1400 

LHLD 

CP 

09B3 

2A4B43 

LHLD 

I 



0A27 

EB 

XCHG 


09B6 

2600 

MVI 

H, 0 

s 



0A28 

El 

POF' 

H ; 1 

0 u BS 

0lE33fc 

LXI 

B-PLASTSAV 




0A29 

73 

MOV 

11, E 

09BB 

29 

DAD 

H 




0A2A 

23 

INX 

H 

09BC 

ov 

DAD 

B 



0A2B 

72 

MOV 

PI, D 


E3 

XTHL 

i 1 

111 

3 



EPSAV(I) = EP, 

09BE 

4E 

MOV 

Ci M 

s 






i STATEMENT » 111 

09BF 

23 

INX 

H 

§ 



0A2C 

2A4B43 

LHLD 

I 

09C0 

46 

MOV 

B,M 



0A2F 

2600 

MVI 

H, 0 

Q9C1 

El 

POP 

H , 1 



0A31 

01A33E 

LXI 

B,EPSAV 

09C2 

71 

MOV 

M,C 

s 



0A34 

29 

DAD 

H 

0»C3 

23 

INX 

H 

5 



0A35 

09 

DAD 

B 

09C4 

70 

MOV 

M,B 



0A36 

E5 

PUSH 

H i 1 



TLASTSftV(I) = TLASTSAVl1+11, 



0A37 

2A1600 

LHLD 

EP 




. STATEMENT # 106 

s 



0A3A 

EB 

XCHG 


09C5 

2A4B43 

LHLD 

I 

c 



0A3B 

El 

POP 

H i 1 

09C8 

2600 

MVI 

H, 0 

c 



(M3C 

73 

MOV 

M,E 

09Cft 

01253F 

LXI 

B, TLASTSAV+2H 

> 



0A3D 

23 

INX 

H 

09CD 

09CE 

09CF 

09B0 

29 

09 

E5 

2A4B43 

DAD 

DAD 

PUSH 

LHLD 

H 

B 

H , 1 

I 


112 

3 

0A3E 

0A3F 

72 

2A4B43 

MOV H,D 

PLASTSAV!I) = PLASTi 

i STATEMENT * 112 

LHLD I 

09D3 

2600 

MVI 

H, 0 

s 



0A42 

2600 

MVI 

H, 0 

09D5 

09B8 

09D9 

09BA 

01233F 

29 

09 

E3 

LXI 

DAD 

DAD 

XTHL 

B; TLASTSAV 

H 

B 

i 1 




0A44 

0A47 

0A48 

0A49 

01E33E 

29 

09 

E5 

LXI 

DAD 

DAD 

PUSH 

B, PLASTSAV 

H 

B 

H , 1 

09DB 

09DC 

4E 

23 

MOV 

INX 

C,M 

H 

$ 



0A4A 

0A4D 

2A1COO 

EB 

LHLD 

XCHG 

PLAST 

09BB 

09DE 

46 

El 

MOV 

POF 

B,M 

H , 1 



0A4E 

0A4F 

El 

73 

POF' 

MOV 

H , 1 

M,E 

0*DF 


MOV 

Mi C 

s 



0A5O 

23 

INX 

H 

0°Eo 
0 r 'E 1 

70 

MOV 

n 

tliE 

* 



0A51 

72 

MOV 

M,D 


Page 38 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


452 



TLASTSAV(I) = TLAST. 

. STATEMENT ft 113 

LHLD I 


0A55 

2600 

MVI 

H, 0 

0A57 

01233F 

LXI 

B, TLASTSAV 

0A5A 

» 

DAD 

H 

0A5B 

09 

DAD 

B 

0A5C 

E5 

PUSH 

H i 1 

0A5D 

202000 

LHLD 

TLAST 

0A60 

EB 

XCHG 


0A61 

El 

POP 

H , 1 

0A62 

73 

MOV 

M,E 

0A63 

23 

INX 

H 

0A64 

72 

MOV M,D 

STKPTRSAV(I) = STAC 

, STi 

0A65 

2A4B43 

LHLD 

I 

0A68 

2600 

MVI 

H, 0 

0A6A 

01633F 

LXI 

B, STKPTRSAV 

0A6D 

29 

DAD 

H 

0A6E 

09 

DAD 

B 

0A6F 

E5 

PUSH 

H , 1 

0A70 

210000 

LXI 

H, 0 , 1 

0A73 

39 

DAD 

SP 

0A74 

EB 

XCHG 


0A75 

El 

F’OP 

H , 1 

0A76 

73 

MOV 

M,E 

0A77 

23 

INX 

H 

0A78 

72 

MOV 

M, D 


OABF 2A0200 
0AC2 110010 
0AC5 CD0000 
0AC8 2B 
0AC9 221200 


BP = BUFSIZE - BUFACT - li /* -1 TO 

ACCOUNT FOR THE EOS */ 

. STATEMENT # 123 

.D BUFACT 

! D 1000H 

1 8P0095 

[ H 

.D BP 

RETURN, 

, STATEMENT ft 124 

END RIGHT WUSTIFY, 

, STATEMENT ft 125 


/* G E T C EXECUTION BEGINS HERE 


STATEMENT ft 126 


STATEMENT « 115 


RET 

END SAVESTATES, 


085E 

2A1200 

LHLD 

BP 

0861 

012210 

LXI 

B, BUF 

0864 

0? 

DAD 

B 

0865 

7E 

MOV 

A, M 

0866 

FEFE 

CPI 

OFEH 

0868 

C2F008 

JNZ 

86 


DO, 




IF START THEN 


086B 

3AA33F 

LDA 

START 

086E 

IF 

RAR 


086F 

D27808 

JNC 

87 


STATEMENT « 116 


RIGHTWUSTIFY PROCEDURE (COUNT), /# MOVE INPUT TO HIGH END OF BUF 
, STATEMENT « 117 

i PROC RIGHTJUSTIFY 


0A7A 

214D43 

LXI 

H,C0UNT+1H 

0A7D 

70 

MOV 

M, B 

0A7E 

2B 

OCX 

H 

0A7F 

71 

MOV 

nc 


DECLARE (COUNT) ADDRESS, 


BUF(COUNT) = EOS, 

i STATEMENT I 119 


CALL SAVESTATES, 

CALL SAVE 

•JMP 88 

*7: 

ELSE 

START = 1; 


IF INTERACTIVE THEN 


STATEMENT ft 128 


STATEMENT ft 1 29 


STATEMENT « 130 


, STATEMENT • 131 
INTERACTIVE 


0A80 

2A4C43 

LHLD 

COUNT 

V 



0881 

D2BD08 

JNC 

89 

0A83 

012210 

LXI 

B, BUF 

S 

132 

3 



DO, 


0A86 

09 

DAD 

B 

133 

4 



OUTACT = 2i 


0A87 

36FE 

MVI 

M, OFEH 






, STATEMENT « 133 



DO I = 0 TO COUNT, 

s 



0884 

210200 

LXI 

H,2H 




, STATEMENT * 120 

$ 



0887 

220600 

SHLD 

OUTACT 

0A89 

214A43 

LXI 

H, I 

134 

4 



CALI WRITEIO, ('> '), OUTACT, OUTSTAT ) , 

0A8C 

3600 

MVI 

M, OH 






, STATEMENT 1 134 


8110: 






088A 

010000 

LXI 

B, OH 

0A8E 

114C43 

LXI 

D,COUNT 

V 



088D 

C5 

PUSH 

B ; 1 

0A91 

3A4A43 

LDA 

I 

s 



088E 

01BE00 

LXI 

B,S-7D0H 

0A94 

CDOOOO 

CALL 

8P0101 



0891 

C5 

PUSH 

B , 2 

0A97 

DABFOA 

JC 

8111 

s 



0892 

2A0600 

LHLD 

OUTACT 




BUF(BUF$IZE-1 - I) s BUF(COUNT - I), 

V 



0895 

44 

MOV 

B,H 




i STATEMENT » 121 

s 



0896 

4D 

MOV 

C, L 

0A9A 

3A4A43 

LDA 

I 



0897 

110800 

LXI 

D, OUTSTAT 

0A9D 

114C43 

LXI 

D,COUNT 

N 



089A 

CDOOOO 

CALL 

WRITE 

OAAO 

CDOOOO 

CALL 

8P0101 

\ 

135 

4 



CALI REABtt, BUF 123, BUFACT, INS,AT' 

0AA3 

012210 

LXI 

B. BLIP 

S 






STATEMENT 1 135 

0AA6 

09 

DAD 

B 



089D 

010100 

LXI 

B- 1H 

0AA7 

3A4A43 

LDA 

I 



08A0 

C5 

PUSH 

E 1 

OAAA 

11FF0F 

LXI 

D, OFFFH 

s 



08A1 

012210 

LXI 

B, BUF 

OAAD 

E5 

PUSH 

H , 1 

s 



08A4 

C5 

PUSH 

B 2 

<W£ 

CDOOOO 

CALL 

8P0096 



08A5 

018000 

LXI 

B.80H 

0AB1 

012210 

LXI 

B, BUF 



08A8 

C5 

PUSH 

B 3 

0AB4 

09 

DAD 

B 

s 



08A9 

110400 

LXI 

D,INSTAT 

0AB5 

Cl 

POP 

B ; 1 




08AC 

010200 

LXI 

B. BUFACT 

0AB6 

OA 

LDAX 

B 

s 



08AF 

CDOOOO 

CALL 

READ 

0AB7 

77 

MOV 

M, A 

136 

4 



CALL RIGHT WUSTIFY • BUFACT) • 



END, 

N 






i STATEMENT « 136 




, STATEMENT 1 122 

V 



08B2 

2A0200 

LHLD 

BUFACT 

0AB8 

214A43 

LXI 

H. I 

s 



08B5 

44 

MOV 

BiH 

OABB 

34 

inr 

M 



08B6 

4D 

MOV 

C.L 

OABC 

C28E0A 

JNZ 

8110 

s 



08B7 

CD7A0A 

CALL 

RIGHTJUSTIFY 


STATEMENT « 137 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 39 

453 


CALL READ)INPAFT, BUF, 123, . BUFACT, INSTAT), 
, STATEMENT > 139 


CALL REMARK!. ("MACRO-TABLE IS:', E0S))i 
i STATEMENT » 158 


08BD 

2A0A00 

LHLD 

INPAFT 

§ 



0926 

01C000 

LXI 

B, 4-866H 


08C0 

E5 

PUSH 

H ; 1 



0929 

CDE306 

CA_L 

REMARK 


08C1 

012210 

LXI 

B, BUF 

N 

159 

3 


CALL DISPLAY(TLAST, . TABLE); 

08C4 

C5 

PUSH 

B ; 2 

V 






i 

STATEMENT » 159 

08C5 

018000 

LXI 

B.30H 

S 



092C 

2A2000 

LUD 

TLAST 


08C8 

C5 

PUSH 

B i 3 



092F 

44 

MOV 

B.H 


08C9 

110400 

LXI 

D,INSTAT 



0930 

4D 

MOV 

C, L 


08CC 

010200 

LXI 

B, BUFACT 

s 



0931 

112200 

LXI 

D, TABLE 


08CF 

CDOOOO 

CALL 

READ 

S 



0934 

CD4207 

CALL 

DISPLAY 




IF BUFACT 

O 0 THEN 

160 

3 


CALL EIGHTY(STAR); CALL CRLF; 




; STATEMENT 4 140 






i 

STATEMENT « 160 

08D2 

3E00 

MVI 

A, OH 

s 



0937 

0E2A 

MVI 

C, 2AH 


08D4 

110200 

LXI 

D, BUFACT 




0939 

CD1E07 

CALL 

EIGHTY 


08D7 

CDOOOO 

CALL 

8P0101 

s 






i 

STATEMENT » 161 

08DA 

B5 

URA 

L 



093C 

CDD806 

CALL 

CRLF 


08DB 

CAE908 

JZ 

§11 

S 

162 

3 


END; 






CALL RIGHTSJIJSTIFY(BUFACT), 







i 

STATEMENT » 162 




, STATEMENT 4 141 

s 




§15: 




08DE 

2A0200 

LHLD 

BUFACT 

163 

2 


RETURN CHR, 




08E1 

44 

MOV 

B, H 






i 

STATEMENT t 163 

08E2 

4D 

MOV 

C,L 

s 



093F 

3A4943 

LDA 

CHR 


08E3 

CD7A0A 

CALL 

RIGHTJUSTIFY 

$ 



0942 

C9 

RET 



08E6 

C3F008 

JMP 

§12 

164 

2 


END GETC; 





ELSE 

DO. 

STACKPTR = STKSAVOi 

. STATEMENT I 143 

LHLD 3TK3AVO 
•30TO ChLLSIGHON- 

STATEMENT # 144 

JMP CALLS IGN»:-N 
END, <♦ ELSE-DO * 

. STA T EMENT « 145 


08F0 2A1200 
08F3 012210 
08F6 09 
08F7 3E7F 
03F9 AS 


08FA 

324943 

STA 

yt 


BP - BP ♦ 

1, 


03FD 

2A1200 

LHLD 

BP 

0900 

•p 

I NX 

H 

0901 

221200 

SHLD 

BF 


IF CHR = 1 

•HEN 


0904 

FE01 

CPI 

1H 


i STATEMENT « 164 


PUTBAK: PRXEDURE (CHR), /* PUSH CHARACTER BACK ONTO INPUT #/ 
i STATEMENT » 165 

i PROC PUTBAK 

I 214E43 LXI H, CHR 

» 71 MOV M, C 

DECLARE CHR BYTE, 


STATEMENT « 167 




§12 



0AD1 

2A1200 

LHLD 

BP 

146 

4 

END * ELSE-DO ♦ 


N 

0AD4 

2B 

OCX 

H 




SWEMEET 4 146 


0AD5 

221200 

SHLD 

BP 



§10 


S 

168 2 

IF BP 

= OFFFFH THEN 

147 

3 

END ♦ IF EO''E c ' 

= EOS */ 








STATEMENT # 147 

0AD8 

11FFFF 

LXI 

D, OFFFFH 





s 

OADB 

CDOOOO 

CALL 

§P0095 

143 

2 

CHF = BUF -BP' AND TH 

MAS* OFF PARITY BIT */ 

$ 

OADE 

B5 

ORA 

L 




-IThTEMENi 4 148 

OADF 

C2EE0A 

JNZ 

@16 


IF CHR' = 3 THEN CHR - OFF* 


0909 

3A4943 

LDA 

CHR 

090C 

FE03 

CP! 


090E 

C21609 

JNZ 

§14 

0911 

214943 

LXI 

H, CHR 

0914 

36FF 

MVI 

M, OFFH 


§14 

IF CHR = 4 THEN 


STATEMENT 4 149 


CONTROL-A APPENDS THE RESULT OF 
, STATEMENT I 150 


STATEMENT * 151 

ONE STRING-MACRO TO THE PRECEEDING STRING §/ 
♦ CONTROL-C FORCES CEASE (CONTROL 
STATEMENT 4 152 


STATEMENT 4 153 


RETURNS TO ISIS) §/ 

/♦ CONTROL-D (CRLF) DISPLAYS 

MACRO-TABLE #/ 

, STATEMENT * 154 


171 

0AE2 

0AE5 

3 

OIDOOO 

CDE306 

LXI 

CALL 

GOTO RECOVER, 

B.S-0A12H 

REMARK 

172 

0AE8 

3 

C34305 

JMP 

END; 

RECOVER 


OAEB 

C3F90A 

JMP 

@17 


STATEMENT I 168 


CALL REMARK). ("**# ERROR: TOO MANY CHARACTERS 

PUSHED BACK ",EOS))i 
, STATEMENT » 170 


STATEMENT I 171 

STATEMENT 4 172 

STATEMENT » 173 


§16 

ELSE BUF(BP) = CHR, 


OAEE 

2A1200 

LHLD 

BP 

0AF1 

012210 

LXI 

B, BUF 

0AF4 

09 

DAD 

B 

0AF5 

3A4E43 

LDA 

CHR 

0AF8 

77 

MOV 

M, A 


RET 

END PUTBAK; 


STATEMENT # 174 


STATEMENT 4 175 


PBSTR: PROCEDURE (IN$PTR); /* PUSH STRING BACK ONTO INPUT t/ 
, STATEMENT 4 176 

i PROC PBSTR 




0919 

FE04 

CPI 4H 

$ 

OAFA 

215043 

LXI 

H,INPTR+1H 



091B 

C23F09 

■JNZ §15 

OAFD 

70 

MOV 

M, B 

155 

2 



DO, 

s 

OAFE 

2B 

XX 

H 

156 

3 



CALL EIGHTY(STAR), CALL CRLF; 


OAFF 

71 

MOV 

M, C 


091E 

0E2A 

MVI 

C, 2AH 

0920 

CD1E07 

CALL 

EIGHTY 

0923 

CDD806 

CALL 

CRLF 


STATEMENT « 156 

STATEMENT » 157 


DECLARE (I, INSPTR) ADDRESS, IN BASED INSPTR (1) BYTE, 


Page 40 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


454 


178 

2 


I 

= LENGTH! IN) - 

1. /♦ F! 



OBOO 

2A4F43 

LHLD 

INPTR 



0B03 

44 

MOV 

B, H 



0B04 

4D 

MOV 

C.L 



0B05 

CDB006 

CALL 

LENGTH 



0BO8 

2B 

XX 

H 



0BO9 

225143 

SHLD 

I 

179 

2 


DO WHILE I O OFFFFH, 





#112 




OBOC 

01FFFF 

LX I 

B.OFFFFH 



OBOF 

115143 

LXI 

D. I 



0B12 

CDOOOO 

CALL 

epoioo 



0B15 

B5 

ORA 

L 



0B16 

CA2F0B 

JZ 

8113 

180 

3 



CALL PUTBWUNIIlli 



0B19 

2A5143 

LHLD 

I 



0B1C 

EB 

XCHG 




0B1D 

2A4F43 

LHLD 

INPTR 



0B20 

19 

DAD 

D 



0B21 

4E 

MOV 

C.M 



0B22 

CDCDOA 

CALL 

PUTBAK 

181 

3 



1 = 1-1; 




0B25 

2A5143 

LHLD 

I 



0B28 

2B 

XX 

H 



0B29 

225143 

SHLD 

I 

182 

3 


END /» DO-WHIIE 

t/i 



0B2C 

C30C0B 

JMP 

#112 





#113 


183 

2 


RETURN; 




0B2F 

C9 

RET 


184 

2 


END PBSTF:. 


185 

1 


INDEX PROCEDUREtSTRIPTR. 

CHR- BYTE, 





PROC INDEX 




0B30 

215543 

LXI 

H. CHP 



0B33 

73 

MOV 

M,E 



0B34 

2B 

XX 

H 



0B35 

70 

MOV 

M,B 



0B36 

2B 

XX 

H 



0B37 

71 

MOV 

M, C 

186 

2 


DECLARE STRtPTR ADDRESS. STR 

187 

2 


INDEX = 1. 




0B38 

215643 

LXI 

H,INDEX 



0B3B 

3601 

MVI 

M, 1H 

188 

2 


DO WHILE STRI INDEX) 0 EOS, 





#114 




0B3D 

2A5643 

LHLD 

INDEX 



0B40 

2600 

MVI 

H.O 



0B42 

EB 

XCHG 




0B43 

2A5343 

LHLD 

STRPTR 



0B46 

19 

DAD 

D 



0B47 

7E 

MOV 

A.M 



0B48 

FEFE 

CPI 

OFEH 



0B4A 

CA6°0B 

•JZ 

€115 

189 

3 



IF 3TR(INDEX) = 

CHP THEN 

. < 



0B4D 

2A5643 

LHLD 

1NXX 



0B50 

2600 

MVI 

H.O 



0B52 

EB 

XCHG 




0B53 

2A5343 

LHLD 

STRPTR 



0B56 

19 

DAD 

D 



0B57 

3A5543 

LDA 

CH< 



0B5A 

BE 

CMP 

M 



0B5B 

C2620B 

JNZ 

#18 

190 

3 



RETURN INDEX, 




0B5E 

3A5643 

LDA 

INXX 



0B61 

C9 

RET 






#18 


191 

3 



INDEX = INDEX ♦ 

1 , 



0B62 

215643 

LXI 

H,INDEX 



0B65 

34 

I NR 

M 


STATEMENT I 173 


STATEMENT » 179 


; STATEMENT « 180 


STATEMENT I 181 


, STATEMENT • 182 


;tutement # is: 


STATEMENT * 134 


STATEMENT l 185 


IN STRING- STR ♦/ 


STATEMENT » 13- 


STATEMENT 4 189 


STATEMENT I 1% 


STATEMENT « 191 


192 3 END /# DO-WHILE */, 

0666 C33D0B JMP #114 

•115 

l 9 ? 2 RETURN •) 

0669 3Ew MV! A.nH 

0B66 C9 PET 

1*4 2 END INDEX 



TfPE PROCEDURE • 1 

CHR - BYTE, 


. PRX 

TYFE 


0B6C 

215743 

LXI 

Hi CHR 

0B6F 

71 

MOV 

M.C 


DECLARE CHP BYTE. 



IF 130H > 

CHR- AND -CHR 

0B70 

3A5743 

LDA 

CHR 

0B73 

D630 

SUI 

30H 

0B75 

9F 

SBB 

A 

0B76 

2F 

CMA 


0B7 7 

F5 

PUSH 

PSW 

0B78 

3E39 

MVI 

A, 39H 

0B7A 

215 7 43 

LXI 

H.CHR 

0B7D 

°6 

SUB 

M 

0B7E 

9F 

SBB 

A 

0B7F 

2F 

CMA 


0B80 

Cl 

POP 

g 

0B81 

48 

MOV 

C. E 

0B82 

A1 

ANA 

c 

0B83 

IF 

RAF: 


0B34 

D28A0B 

JNC 

#19 


RETURN DIGIT. 


0B87 

3E00 

MVI 

A, OH 

.0B89 

C9 

RET 



DETERMINE T^E OF :hATm-;tef 
. STATEMENT f 1^5 


39H* THEN 
STATEMENT i 


#19 

ELSE 

IF i(clH <:= CHR' AND (CHR 


0B8A 

3A5743 

LDA 

CHR 

0B8D 

D661 

SUI 

61H 

0B8F 

9F 

SBB 

A 

0B90 

2F 

CMA 


0B91 

F5 

PUSH 

PSW 

0B92 

3E7A 

MVI 

A, 7 AH 

0B94 

215743 

LXI 

H, CHR 

0B°7 

96 

SUB 

M 

0698 

«F 

SBB 

A 

0B99 

2F 

CMA 


OBOA 

Cl 

POP 

B 

0B9B 

48 

MOV 

C,B 

0B9C 

At 

ANA 

C 

0B9D 

F5 

PUSH 

PSW 

0B9E 

7E 

MOV 

A, M 

0B9F 

D641 

SUI 

41H 

0BA1 

9F 

SBB 

A 

0BA2 

2F 

CMA 


0BA3 

F5 

PUSH 

PSW 

0BA4 

3E5A 

mi. ; 

A.5AH 

0BA6 

96 

SUB 

d 

OBA 7 

9F 

SBB 

A 

0BA8 

2F 

CMA 


OBA* 

Cl 

POP 

B 

OBAA 

48 

MOV 

•:.b 

OBAB 

A1 

AMh 


OBAC 

Cl 

POP 

£ 

OBAD 

48 

MOV 

C E 

OBAE 

B1 

ORA 


OBAF 

IF 

RAR 


obbo 

D2B60B 

JNC 

41ri > CHR) 

€21 

AND 'CHR 


0BB3 3E41 MVI 

0BB5 C9 RET 

#21 
ELSE 

RETURN CHR 

0BB6 3A5743 LDA 

0BB9 09 RET 


* 7 AH- OP 
STATEMENT 4 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 41 


455 


OBBA 

C? 

RET 


GETTOK 

PROCEDURE (TOr'lFTR 

: TOKSIZ' 



. PROC GETTCfr 


OBBB 

215A43 

LXI 

H.TOKSIZ 

OBBE 

73 

MOV 

M.E 

OBBF 

2B 

OCX 

H 

OBCO 

70 

MOV 

M,B 

0BC1 

2B 

OCX 

H 

0BC2 

71 

MOV 

M. C 



DECLARE TOK$F'TR ADDRESS, ' 



(CHR, GETTOK. I- ' 



DO I = 0 TO TORSI 

[Z-li !* 

0BC3 

215D43 

LXI 

Hi I 

0BC6 

3600 

MVI 

Hi OH 



8116 


0BC8 

3A5A43 

LDA 

TOKSIZ 

OBCB 

3B 

[NCR 

A 

OBCC 

215B43 

LXI 

Hi I 

OBCF 

BE 

CMP 

M 

OBtiO 

DA100C 

X 

8117 



CHF;, TOKEN(I) = 

= GETC, 

0BD3 

CD5E08 

CALL 

GETC 

0BD6 

325B43 

STA 

CHR 

OBDo 

2A5D43 

LHLD 

I 

OBDC 

2600 

MVI 

Hi 0 

OBDE 

EB 

XCHG 


OBDF 

2A5343 

LHLD 

TOKPTR 

0BE2 

19 

DAD 

D 

0BE3 

77 

MOV 

M. A 



GETTOK = TYPE(CHR), 

0BE4 

2A5B43 

LHLD 

CHR 

0BE7 

4B 

MOV 

C.L 

0BE8 

CD6C0B 

CALL 

TYPE 

OBEB 

325C43 

STA 

GETTOK 



IF •GETTOK O LETTER) A 

OBEE 

3A5C43 

LDA 

GETTOK 

0BF1 

0641 

SUI 

41H 

0BF3 

C6FF 

ADI 

255 

0BF5 

9F 

SBB 

A 

0BF6 

F5 

PUSH 

PSN 

0BF7 

3A5C43 

LDA 

GETTOK 

OBFA 

D600 

SUI 

OH 

OBFC 

C6FF 

ADI 

255 

OBFE 

9F 

SBB 

A 

OBFF 

Cl 

PDF' 

B 

OCOO 

43 

MOV 

C,B 

0C01 

A1 

ANA 

C 

0C02 

IF 

RAR 


X03 

D2090C 

•JNC 

823 



GOTO exit,- 


0C06 

C3100C 

JMP 

EXIT 



823 




END /* DO I = 0 

*/, 

0C09 

215D43 

LXI 

H.I 

OCOC 

34 

INR 

M 

OCOB 

C2C80B 

JN2 

8116 



8117 



EXIT 

IF I >= TOKSIZ THEN 



EXIT 


0C10 

215A43 

LXI 

H, TOKSIZ 

0C13 

3A5D43 

LDA 

I 

OC-16 

BE 

CMP 

M 

0C17 

DA230C 

X 

824 


, STATEMENT # 202 


STATEMENT # 203 


SINGLE NON-ALPHA 


FORTRAN TO PLM ARRAY CONVERSION */ 
STATEMENT # 205 


STATEMENT • 206 


STATEMENT t 207 


STATEMENT I 208 


STATEMENT # 209 


STATEMENT I 210 


STATEMENT * 211 


, STATEMENT » 215 

824 

IF I > 0 THEN '* SOME ALPHA NAS SEEN »/ 
. STATEMENT # 216 


0C23 

3E00 

MVI 

A, OH 

0C25 

215D43 

LXI 

H, I 

0C28 

EE 

CMP 

M 

0C2? 

D2410C 

JNC 

825 


CALL FUTBAKITOKENIII); 


STATEMENT * 218 


OCX 

2A5D43 

LHLD 

I 

0C2F 

2600 

MVI 

Hi 0 

0C31 

EB 

XCHG 


0C32 

2A5843 

LHLD 

TOKPTR 

0C35 

19 

DAD 

D 

0C36 

4E 

MOV 

C.M 

0C37 

CXDOA 

CALL 

I = I - li 

PUTBAK 

0C3A 

215D43 

LXI 

H.I 

0C3D 

35 

OCR M 

GETTOK = ALF-HA, 

0C3E 

2B 

XX 

H 

0C3F 

3641 

MVI 

END /# IF-X 

M. 41H 

*/■ 


STATEMENT # 219 


STATEMENT I 220 


STATEMENT I 221 


/» aSE SINGLE CHARACTER TOKEN »/ 

TOKEN! HI! = EOS; 

. STATEMENT » 222 


0C41 

2A5D43 

LHLD 

I 

0C44 

2600 

MVI 

H,0 

0C46 

010100 

LXI 

B, TOKEN*1H 

0C49 

09 

DAD 

B 

0C4A 

EB 

XCHG 


0C4B 

2A5843 

LHLD 

TOKPTR 

0C4E 

19 

DAD 

D 

0C4F 

36FE 

MVI 

RETURN GETTOK, 

MiOFEH 

0C51 

3A5C43 

LDA 

GETTOK 

0C54 

C9 

RET 

END GETTOK, 



STATEMENT « 223 


STATEMENT I 224 


225 1 SCOPY. PROCEDURE (FROMPTR. I, TOOtPTR, J); /* COPY STRING AT 

FROM! I) TO T001J1 */ 

, STATEMENT I 225 


0C55 

216543 

LXI 

H.J+1H 

0C58 

72 

MOV 

M. D 

0C59 

2B 

XX 

H 

0C5A 

7? 

MOV 

M.E 

0C5B 

2B 

XX 

H 

0C5C 

70 

MOV 

H,B 

X5D 

2B 

XX 

H 

0C5E 

71 

MOV 

M,C 

0C5F 

2B 

XX 

H 

X60 

D1 

POP 

D 

0C61 

Cl 

POP 

B 

0C62 

70 

MOV 

M,B 

X63 

2B 

XX 

H 

0C64 

71 

MOV 

H,C 

X65 

2B 

XX 

H 

0C66 

Cl 

POP 

B 

0C67 

70 

MOV 

M,B 

0C68 

2B 

XX 

H 

X69 

71 

MOV 

M,C 

X6A 

D5 

PUSH 

D 


DECLARE IFRCTOPTR, T004PTR, I, J, Kl, K2) ADDRESS, 

(FROM BASED FR0M4PTR, TOO BASED TOOiPTR) (II BYTE, 


CALL REMARK! ( w* ERROR: TOKEN TOO LONG 
, STATEMENT # 213 
LXI E, 4-0B1EH 

CALL REMARK 

GOTO RECOVER; 

, STATEMENT t 214 

JMP RECOVER 


0C68 2A6443 LHLD J 

0C6E 226843 SHLD K2 

228 2 Kl = I, 

0C71 2A6043 LHLD I 

0C74 226643 SALE Kl 


, STATEMENT I 227 


STATEMENT * 228 


Page 42 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


456 



230 


231 

yy> 

233 

234 

235 

236 

237 


238 

239 



BO WHILE FROMrtl 

» <: eos 



241 

n 


IF PLAST O OFFFFH THEN 

'* THEN PLAST. TLAST = 0 





STATEMENT • 229 

s 







STATEMENT « 241 


8118 




V 



OCB 7 

01FFFF 

LX I 

B.OFFFFh 


or" 

2A&643 

lHLD 

K1 


0 



OCDA 

111COO 

LXI 

B.PLAST 


0C 7 A 

EB 

XCHG 



> 



OCDD 

CDOOOO 

CALL 

8P0100 


0C7B 

2A5E43 

LHLD 

FROHPTR 


S 



OCEO 

B5 

ORA 

L 


OCT 

19 

DAD 

D 





0CE1 

CA150D 

JZ 

826 


OCT 

7E 

MOV 

A, M 


0 

242 

2 



IF (TLAST * NLEN * DLEN 

> MAXTBL# OR (PLAST ,= MAXPTR) THEN 

0C80 

FEFE 

CFI 

OFEH 


> 







STATEMENT « 242 

0C82 

CAAAOC 

JZ 

811* 


N 



0CE4 

2A7043 

LHLD 

NLEN 



T00tK2 

) = FROH(Kl) 


V 



0CE7 

EB 

XCHG 







STATEMENT » 230 

C 



0CE8 

2A2000 

LHLD 

TLAST 


0C85 

2A6643 

LHLD 

ki 





OCEB 

19 

DAD 

D 


0C88 

EB 

XCHG 



N 



OCEC 

E5 

PUSH 

H 

1 

0C89 

2A5E43 

LHLD 

FPOMPTK 


s 



OCED 

2A6E43 

LHLD 

DLEN 


0C8C 

1« 

DAD 

D 


c 



OCFO 

Cl 

POP 

B 

1 

0C8B 

E5 

PUSH 

H 

1 

o 



0CF1 

09 

DAD 

B 


0C8E 

2A6843 

LHLD 

K2 


> 



0CF2 

110010 

LXI 

D.1000H 


0C91 

EB 

XCHG 



S 



0CF5 

CDOOOO 

CALL 

8P0095 


OC K 

2At 243 

LHLD 

TOOPTR 


C 



0CF8 

9F 

SBB 

A 


0C95 

1? 

DAD 

D 





0CF9 

010001 

LXI 

B.100H 


0C96 

Cl 

POP 

c 

1 




OCFC 

111C00 

LXI 

D.PLAST 


0C« 7 

OA 

LDAX 

B 


s 



OCFF 

F5 

PUSH 

PSW 

1 

0C98 

77 

MOV 

M, A 


s 



ODOO 

CDOOOO 

CALL 

8P0100 



K2 = K 

2 ♦ 1, 






0D03 

9F 

SBB 

A 






STATEMENT # 231 




0D04 

2F 

CMA 



or oo 

2A6843 

LHLD 

K2 


N 



0005 

Cl 

POP 

B 

1 

0C9C 

23 

INX 

H 


s 



0D06 

48 

MOV 

C,B 


0C°D 

226843 

SHLB 

K2 





ODO 7 

B1 

ORA 




K1 = K1 ♦ 1 






0DO8 

IF 

PAR: 







STATEMENT 1 2:32 

N 



0D09 

D2150D 

■JNC 

82 7 


OCAO 

2A6643 

LHLD 

k 1 


s 

243 

2 



DO 



0CA3 

23 

INX 

H 


V 

244 

3 



CALL RE.MAR) • • ERPOP TOO MhN) DEFINITIONS EOS:/, 

0CA4 

226643 

SH.D 

Kl 









STATEMENT 4 244 


END /§ 

DO-WHILE 

•/, 


> 



ODOC 

oiroi 

LXI 

B. $-OBF c -H 






STATEMENT I 233 

\ 



ODOF 

CDE306 

CALL 

REMAR) 


0CA7 

C3770C 

JMP 

8118 



245 

3 



GOTO PECO 1 

.'EF 



til? 











STATEMENT # -45 


T00(K2) 

= EOS; 






0D12 

C34305 

JMP 

RECOVER 





i 

STATEMENT tt 234 

N 

246 

3 



END 



OCAA 

2A6843 

LHLD 

K2 









STATEMENT 4 24t 

OCAD 

EB 

XCHG 



0 





877 



OCAE 

2A6243 

LHLD 

TOOPTR 







826 



0CB1 

19 

DAD 

D 


N 

247 

2 


PLAST r PLAST * 

1 


0CB2 

36FE 

MVI 

M,OFEH 


s 







STATEMENT * IV 


RETURN, 







0D15 

2A1C00 

LHLD 

FLA: t 





i 

STATEMENT « 235 




0D18 

23 

INX 

U 


0CB4 

C9 

RET 






0D1? 

221COO 

SHLD 

fLAS 7 



END SCOPY; 



s 

248 

2 



MAMDEXINTBL'PLA' 

»T • = TLA; T 

+ ; 





STATEMENT » 236 








2 T ATEME. “ 2-," 









0D1C 

2A2000 

LHLD 

TLAST 







> 



0D1F 

23 

IN* 

H 



INSTAL PROCEDURE (NAME4PTR. DEFPTR), /♦ ADD NAME AND DEFINITION TO TABLE #/ 

s 



0D20 

E5 

PUSH 

H 

1 





STATEMENT « 237 

V 



0D21 

2A1C00 

LHLD 




i PROC 

INSTAL 


o 



0D24 

012330 

_it 

r M'.r ; 


0CB5 

216D43 

LX! 

H,DEFPTR*1H 

> 



£027 

29 

DAD 

4 


0C'B8 

72 

MOV 

M, D 


s 



0D28 

09 

DAD 

p 


0CB9 

2B 

DCX 

H 





0D29 

Cl 

POP 

B 

i 

OCBA 

73 

MOV 

M, E 


0 



0D2A 

71 

MOV 

M.C 


OCBB 

2B 

DCX 

H 


> 



0D2B 

23 

INX 

4 


OCBC 

70 

MOV 

M, B 


N 



0D2C 

70 

MOV 

M.B 


OCBD 

2B 

DCX 

H 


s 

249 

2 



CALL SCOPY1 NAME. 0, .TABLE, TLAST + 

CJCBE 

71 

MOV 

M, C 









STATEMENT « 249 


DECLARE 

: (NAME4PTR, DEFPTR) 

ADDRESS, 




0D2D 

2A6A43 

LHLD 

NAMEPTR 




DEFN BASED DEFPTR 

(1) BYTE, 

N 



0D30 

E5 

PUSH 

H 

1 



NONE BASED NAHE$PTR il! BYTE, 

s 



0D31 

010000 

LXI 

B, OH 




(DLEN, 

NLEN) ADDRESS, 

c 



0D34 

C5 

PUSH 

B 

2 






o 



0D35 

2A2000 

LHLD 

TLAST 







> 



0D38 

23 

INX 

H 



NLEN = 

LENGTH( 

NAME) ♦ 1. 


s 



0D39 

EB 

XCHG 







STATEMENT » 239 

V 



0D3A 

012200 

LXI 

B,TABLE 


OCBF 

2A6A43 

LHLD 

NAMEFTR 


o 



0D3D 

CD550C 

•CALL 

SCOPY 


occ2 

44 

MOV 

B.H 



250 

2 



CALL SCOPY! DEFN, 0, TABLE, TLAST + NLEN +1), 

0CC3 

4D 

MOV 

CiL 


S 






1 

STATEMENT « 250 

0CC4 

CDB006 

CALL 

LENGTH 


V 



0040 

2A6C43 

LHLD 

DEFPTR 


OCC-7 

23 

INX 

H 


c 



0D43 

E5 

PUSH 

H 

1 

0CC8 

227043 

SHLD 

NLEN 





0D44 

010000 

LXI 

B, OH 



DLEN = 

LENGTH' 

DEFN) ♦ 1, 


N 



0D47 

C5 

PUSH 

B 

2 




i 

STATEMENT * 240 

s 



0D48 

2A7043 

LHLD 

NLEN 


OCCB 

2A6C43 

LHLD 

DEFPTR 





0D4B 

EB 

XCHG 



OCCE 

44 

MOV 

B.H 





0D4C 

2A2000 

LHLD 

TLAST 


OCCF 

4D 

MOV 

C.L 





0D4F 

19 

DAD 

D 


OCDO 

CDB006 

CALL 

LENGTH 


s 



0050 

23 

INX 

H 


0CD3 

23 

INX 

H 





0D51 

EB 

XCHG 



0CD4 

226E43 

SHLD 

DLEN 


c 



0D52 

012200 

LXI 

B. TABLE 







0 



0D55 

CD550C 

CALL 

SCOPY 



Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 43 


457 


251 2 


264 1 


SEEKNP* FWKEDU»E 'ABDEX' ADDRESS 


TLAST = HAST ♦ NLEN ♦ DLEN. 

, STATEMENT » 251 


11 

2A7043 

EB 

LHLD 

XCHG 

NLEN 

§ 

•'DPI 

2P34* 

PROC SEEVNBP 

KTAEDEi 

0D5C 

2A2000 

LHLD 

TLAST 

N 

0DB4 

70 

MOV 

M.B 

0D5F 

19 

DAD 

D 

V 

0DB5 

2B 

XX 

H 

0D60 

E5 

PUSH 

H ; 1 

C 

0DB6 

71 

MOV 

M.C 


STATEMENT 4 1-.4 


0D61 2A6E43 
0064 Cl 
0D65 09 
0D66 222000 


LHLD DLEN 

POP B 


DECLARE II. TABDEX; ADDRESS, 
DO I = 0 TO PLAST. 


252 

2 



RETURN. 


0 



0DB7 

210000 

LXI 

H, OH 






STATEMENT ft 252 




ODBA 

227943 

SHLD 

I 



0D69 

C9 

RET 


s 





4122 


253 

2 



END INSTAL. 





ODBD 

U1C00 

LXI 

D.PLAST 






STATEMENT * 253 

0 



ODCO 

017943 

LXI 

B.I 










0DC3 

CDOOOO 

CALL 

4P0098 







S 



0DC6 

DAECOD 

X 

4123 

254 

t 


EOUAL 

PROCEDURE(STR1SPTR. STR2SPTR> BYTE. /♦ COMPARES 

V 

267 

3 



IF NAMDEXINTBL!I) = TABDEX 1 






TWO STRINGS */ 







i ST AT 






. statement'# 254 




0DC9 

2A7943 

LHLD 

I 





• PROC EQUAL 


N 



ODCC 

012330 

LXI 

B.NAMDEXINTBL 



0D6A 

21754 

3 LXI 

H: STR2PTR+1H 

s 



ODCF 

29 

DAD 

H 



0D6D 

72 

MOV 

M.D 




ODDO 

09 

DAD 

B 



0D6E 

2B 

DCX 

H 




ODDI 

117743 

LXI 

D.TABDEX 



0D6F 

73 

MOV 

M.E 

N 



0DD4 

CDOOOO 

CALL 

CP0099 



0D70 

2B 

DCX 

H 

s 



0DD7 

65 

ORA 

L 



0D 7 1 

70 

MOV 

M.B 

c 



0DD8 

C2DF0D 

JNZ 

42° 



0D72 

2B 

DCX 

H 


268 

3 



RETURN I. 




0D73 

71 

MOV 

M.C 

> 






ST*! 

255 

2 



DECLARE (STRliPTR. 

STR2SPTR > ADDRESS. I BYTE. 

s 



ODDB 

2A7943 

LHLD 

I 





ISTRl BASED STRliPTR, STR2 BASED STR24PTR) (1) BTTE, 




ODDE 

C9 

RET 



STATEMENT • 266 


236 

? 

0D74 

1 

217643 

[ = 0. 

LXI 

H. I 



0D77 

3600 


MVI 

M. OH 

257 

2 


DO WHILE STRKI) 

= STR2 11) . 





4120 





0D79 

2A7643 


LHLD 

1 



0D7C 

2600 


m 

H.O 



0D7E 

EB 


XCHG 




0D7F 

2A7243 


LHLD 

STRlPTR 



0D82 

19 


DAD 

D 



0B83 

E5 


PUSH 

H 



0D84 

2A764S 


LHLD 

I 



0D37 

260*) 


MVI 

H, 0 



0D8° 

EP 


XCHG 




0D8A 

2A744? 


LHLD 

8TR2FTR 



ODBD 

19 


DAD 

D 



0D8E 

Cl 


POP 

P 



0D8F 

OA 


LDAX 

5 



0D9O 

BE 


CMP 

M 



onoj 

C2AE0D 


JNZ 

4121 

258 

3 



IF STM* I' ^ EOS t HEN 



0D°4 

2A7643 


LHLD 

I 



OP 07 

2600 


MVI 

H.O 



opoo 

EP 


XCHG 




0D9A 

2A7243 


LHLD 

STP1PTP 



0D9D 

19 


DAD 

D 



OD°E 

7E 


MOV 

A.M 



OD°F 

FEFE 


CPI 

OFEH 



0DA1 

C2A70D 


JN! 

428 

25° 

3 



RETURN YES 




0DA4 

3E01 


MVI 

A. 1H 



0DA6 

09 

428 

RET 


260 

3 



I = I 

* 1. 




ODA 7 

2P64.3 


LXI 

H.i 



ODAA 

34 


INF: 

M 

261 

3 


END '* 

DO-WHILE 

♦/ 



ODAP 

C3 7 90D 

412! 

.WF' 

4120 

262 

2 


RETURN 

NO 




ODAE 

3E00 


MVI 

A. OH 



ODBC 

C9 


RET 



STATEMENT « 256 


STATEMENT I 25? 


OBDF 110100 
0DE2 2A7043 
0DE5 19 
0DE6 227943 
ODE 0 P2BD00 


129 

END l* DO-LOOP •»/. 

LX I P,1H 

LHLD I 

DAD D 

SHLD I 

JNC 4122 


STATEMENT I 268 


STATEMENT « 269 


ODEC 013801 
ODEF CDE306 


STATEMENT ft 253 


CALL REHARM ' ♦** ERROR TABDEX NOT FOUND IN NAMDEXINTBL ,EOSH, 
, STATEMENT ft 270 
LXI B S-0CB4K 

CALL REMAP! 

END SEEKNBR. 

STATEMENT ft 271 
RET 


SEEKSTR PROCEDUREISTPIPTP' ADDRESS 't FIND STRING IN r ABLE» RETURN INDEX *J 
STATEMENT ft 2 7 2 

i PROC SEEKSTR 
ODF? 217C43 LXI HSTRPTRMH 

0DF6 70 MOV M.B 

ODF 7 2B PCX H 

0DF8 71 MOV M.C 

DECLARE xI. J, K. STR4PTR! ADDRESS. 

STRING BASED STRfPTR (1) BYTE. 


U4.D PLAST 

SH.D I 

DO WHILE I O OFFFFH; 


•7ATEMENT # 25° 


STATEMENT ft 26v 


STATEMENT ft 261 


STATEMENT I 274 


STATEItNT • 275 


STATEMENT ft 


ODFF 

01FFFF 

LXI 

B, OFFFFH 

0E02 

117D43 

LXI 

D.I 

0£05 

CDOOOO 

CALL 

4P0100 

0E08 

B5 

ORA 

L 

0E09 

CA830E 

JZ 8125 

J = NAMDEXINTBL! I). 

OEOC 

2A7D43 

LHLD 

I 

OEOF 

012330 

LXI 

B.NAMDEX] 

0E12 

29 

DAD 

H 

0E13 

0? 

DAD 

B 

0E14 

5E 

MOV 

E.M 

0E15 

23 

I NX 

H 

0E16 

56 

MOV 

D.M 

0E17 

EB 

XCHG 


0E18 

227F43 

SHLD 

K = 0; 

J 

0E1B 

210000 

LXI 

H, OH 

0E1E 

228143 

SHLD 

K 


i STATEMENT ft 276 


STATEMENT ft 277 


Page 44 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


458 


DO WHILE t$TRING(K) = TABLE!J)) AND (STRING(K) O EOS); 
; STATEMENT # 278 


DELETE PROCEDURE(NAMSPTR); 


/* REMOVES LAST DEF N OF NAME FROM TABLE */ 
; STATEMENT ft 288 


0E21 

2A8143 

LHLD 

K 




0E87 

218443 

LXI 

H, NAMPTR+1H 

0E24 

EB 

XCHG 


s 



0E8A 

70 

MOV 

M, B 

0E25 

2A7B43 

LHLD 

STRPTR 

s 




2 B 

rfj 

H 

0E28 

19 

DAD 

D 



0E8C 

71 

MOV 

m r 

0E29 

E5 

PUSH 

H ; 1 

289 

2 



DECLARE (DEXDEX 

: Y ’iA-'HFTR. TABDE * 1 AMF:E« : 

0E2A 

2A7F43 

LHLD 

J 

s 





NAME BASED NA^IPT B 1 'Ert 

0E2D 

012200 

LXI 

B, TABLE 

v 







0E30 

09 

DAD 

B 

s 

290 

2 



TABOEX = SEEKSTR 

1 NAME * TASDEX FulNi.* INTO TABLE *• 

0E31 

D1 

POP 

D ; 1 






STATEMENT ft 290 

0E32 

1A 

LDAX 

D 

N 



0E8D 

2A8343 

LHLD 

NhMF t R 

0E33 

96 

SUB 

M 

\ 



0E9O 

44 

MOV 

B.H 

0E34 

D601 

SUI 

1 




0E91 

4D 

MOV 

C.L 

0E36 

9F 

SBB 

A 



0E92 

CDF30D 

CALL 

SEEKSTR 

0E37 

F5 

PUSH 

PSW ; 1 



0E95 

228D43 

SHLD 

TABDEX 

0E38 

1A 

LDAX 

D 

s 

291 

2 



IF TABDEX O OFFFFH THEN 

0E39 

D 6 FE 

SUI 

OFEH 

S 






. STATEMENT ft 291 

0E3B 

C 6 FF 

ADI 

255 



0E98 

01FFFF 

LXI 

B OFFFFH 

0E3D 

9F 

SBB 

A 



OE Q B 

118D43 

LXI 

r tabdex 

0E3E 

Cl 

POP 

B ; 1 

s 



0E9E 

CDOOOO 

CALL 

8P0100 

0E3F 

48 

MOV 

CiB 




0EA1 

B5 

ORA 

L 

0E40 

A1 

ANA 

C 

$ 



0EA2 

CAS1OF 

JZ 

831 

0E41 

IF 

RAR 


292 

2 



DO, 


(€42 

D2560E 

JNC 

8127 

s 

293 

3 



EEXDEX » SEEKMRtTfiBDEX)- /* FIND T4BDEJ IN NftHDEXINTEL */ 



J * J + 1: 








, STATEMENT ft 293 




; STATEMENT ft 279 

s 



0EA5 

2A8D43 

LHLD 

TABDEX 

0E45 

2A7F43 

LHLD 

J 



0EA8 

44 

MOV 

B.H 

0E48 

23 

INX 

H 

s 



0EA9 

4D 

MOV 

CiL 

0E49 

227F43 

SHLD 

J 

s 



OEAA 

CDB10D 

CALL 

SEEKNBR 



K * K ♦ 1; 


s 



‘DEAD 

228543 

'SHLD 

DEXDEX 




; STATEHiNT ft 280 

294 

3 



IF DEXDEX < 

BLAST THEM '♦ CRUNCH TABLE T C OVERLAY THE NAMED MACRi 

0E4C 

2A8143 

LHLD 

K 






, STATEMENT ft 294 

0E4F 

23 

INX 

H 

s 



OEBO 

011C00 

LXI 

B,PLAST 

0E50 

228143 

SHLD 

K 

c 



0EB3 

118543 

LXI 

D.DEXDEX 



END /» DO-WHILE */i 

s 



0EB6 

CDOOOO 

CALL 

8P0098 




; STATEMENT ft 281 



0EB9 

D2230F 

JNC: 

832 

0E53 

C3210E 

JMP 

8126 

s 

295 

3 



DO, 



1127: 

IF STRING(K) = TABLE(J) THEN 


) THEN /* FOUND IT */ 
; STATEMENT ft 282 


0E56 

2A8143 

LHLD 

K 

\ 


OEBF 

228943 

SHLD 

J 

0E59 

EB 

XCHG 


C 

297 

4 


K = NAMDEXINTBL (DEXDEX+l), 

0E5A 

2A7B43 

LHLD 

STRPTR 

s 





i STATEMENT 

0E5D 

19 

DAD 

D 


0EC2 

2A8543 

LHLD 

DEXDEX 

0E5E 

E5 

PUSH 

H i 1 

s 


0EC5 

012530 

LXI 

B,NAMDEXINTBL+2H 

0E5F 

2A7F43 

LHLD 

J 

v 


0EC8 

29 

DAD 

H 

0E62 

012200 

LXI 

B, TABLE 

s 


0EC9 

09 

DAD 

B 

0E65 

09 

DAD 

B 


OECA 

5E 

MOV 

E.M 

0E66 

D1 

POP 

D ; 1 

N 


OECB 

23 

INX 

H 

0E67 

1A 

LDAX 

D 



OECC 

56 

MOV 

DiM 

0E68 

BE 

CMP 

M 



OECD 

EB 

XCHG 


0E69 

C2790E 

JNZ 

830 


OECE 

228B43 

SHLD 

K 



RETURN NAHDEXINT6LII)> 

298 

4 


DO I = 

0 TO (TLAST - K), 




; STATEMENT ft 283 

s 





; STATEMENT 

0E6C 

2A7D43 

LHLD 

I 

V 


0ED1 

210000 

LXI 

H, OH 

0E6F 

012330 

LXI 

B, NAMDEXINTBL 

s 


0ED4 

228743 

SHLD 

I 

0E72 

29 

DAD 

H 



8128: 



0E73 

09 

DAD 

B 

s 


0ED7 

018B43 

LXI 

B. K 

0E74 

5E 

MOV 

EiM 

\ 


OtDA 

112000 

LXI 

D,TLAST 

0E75 

23 

INX 

H 

s 


OEDD 

CDOOOO 

CALL 

8P0098 

0E76 

56 

MOV 

D.H 


OEEO 

EB 

XCHG 


0E77 

EB 

XCHG 


N 


0EE1 

218743 

LXI 

Hi I 

0E78 

C9 

RET 




0EE4 

CDOOOO 

CALL 

8P0104 


830: 

1 * 1 - 1 ; 


NE\ TABOEX IS NAMDEX!NTBLiDEXDE a/ 
STATEMENT ft 296 


NEXT MACRO IN TABLE 


THE BLOCK MOVE 


STATEMENT ft 284 


TABLE OI) = TABLE (K+I); 

; STATEMENT ft 299 

LHLD I 


END /t DO-WHILE 
JMP 81 

8125: 

RETURN OFFFFHi 

LX I H. 

RET 

END SEEKSTR; 


STATEMENT ft 285 


STATEMENT ft 286 


STATEMENT ft 287 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 45 


459 


statement * 300 


OEFF 110100 
0F02 2A8743 
0F05 19 
0F06 228743 
0F09 D2D70E 


END /♦ DO-LOOP ♦/ 

STj 

LXI D.1H 

LHLD I 

DAD D 

SHLD 1 

JNC §128 


HAST = HAST - !) - J), 

STATEMENT ft 301 


OFOC 

018943 

LXI 

B, J 

OFOF 

118B43 

LXI 

D,K 

0F12 

CDOOOO 

CALL 

§P0098 

0F15 

112000 

LXI 

D. TLAST 

0F18 

CDOOOO 

CALL 

§P0102 

0F1B 

EB 

XCHG 


0F1C 

2B 

DCX 

H 

0F1D 

73 

MOV 

M, E 

0F1E 

23 

INX 

H 

0F1F 

72 

MCA) 

M, D 



END; /* IF-DO 

0F20 

C32A0F 

■JMP 

§33 



§32 




ELSE 

/# 



TLAST = 

TABDEX - 1, 

0F23 

2A8D43 

LHLD 

TABDEX 

0F26 

2B 

DCX 

H 

0F27 

222000 

SHLD 

TLAST 



§33 




PLAST = PLAST - 1, 

0 F2A 

2A1C00 

LHLD 

PLAST 

0F2D 

2B 

OCX 

H 

0F2E 

221COO 

SHLD 

PLAST 




EVALST(EP) = 

CHR, 

0F62 

2A1600 

LHLD 

EP 

0F65 

012320 

LXI 

B,EVALST 

0 F68 

09 

DAD 

B 

0F69 

3A8F43 

LDA 

CHR 

0F6C 

77 

MOV 

M. A 



EP = EP + li 


0F6D 

2A1600 

LHLD 

EP 

0F70 

23 

INX 

H 

0F71 

221600 

SHLD 

EP 


END f* ELSE-DO ♦/, 


§35 

END PUTCHRi 


, STATEMENT I 31S 


STATEMENT « 319 


STATEMENT I 320 


STATEMENT » 321 


END, /* IF-DO »/ 


RET 

END DELETE, 


STATEMENT « 302 


STATEMENT « 30? 


STATEMEN T * 304 


STATEMENT * 305- 


STATEMENT « 306 


STATEMENT » 307 


PUTTOK PROCEDURE (STRSPTR); /♦ PUT A TOKEN EITHER ON OUTPUT OR INTO 

EVALUATION STACK */ 

, STATEMENT I 322 

i PROC PUTTOK 


OF 75 

219143 

LXI 

H,STRPTR+1H 

0F78 

70 

MOV 

M, B 

0F79 

2B 

DCX 

H 

0F7A 

71 

MOV 

H, C 


DECLARE STRSPTR ADDRESS, STR BASED STRIPTR (1) BYTE, I BYTE, 

I = 0, 


0F7B 219243 
0F7E 3600 


LXI H, I 

MVI M. OH 

DO WHILE STR(I) O EOS, 


STATEMENT « 324 


, STATEMENT ft 325 


0F8O 2A9243 
0F83 2600 
0F85 EB 
0F86 2A9043 
0F89 19 
0F8A 7E 
0F8B FEFE 





> 



0F8D 

CAE60F 

JZ 

§131 


PUTCHR 

PROCEDURE(CHR); /* PUT SINGLE CHAR ON OUTPUT OR INTO 

EVALUATION STACK */ 


326 

3 

0F9O 

01FFFF 

IF CP = OFFFFH THEN 

i STATEMENT # 326 

LXI B, OFFFFH 



, STATEMENT * 308 



0F93 

111400 

LXI 

D. CP 



i PROC PUTCHR 

s 



0F96 

CDOOOO 

CALL 

§P0100 

0F32 

218F43 

LXI H,CHR 




0F99 

B5 

ORA 

L 

0F35 

71 

MOV H,C 

$ 



0F9A 

C2AE0F 

JNZ 

§37 



DECLARE Cm BYTE, 

327 

3 



CALL PUTC(STR(I))i 




s 






, STATEMENT 1 327 



IF CP = OFFFFH THEN 

V 



0F9D 

2A9243 

LHLD 

I 



; STATEMENT » 310 

s 



OF AO 

2600 

MVI 

H, 0 

0F36 

01FFFF 

LXI B,OFFFFH 



0 FA2 

EB 

XCHG 


0F39 

111400 

LXI D,CP 

s 



OF A3 

2A9043 

LHLD 

STRPTR 

OFX 

CDOOOO 

CALL §P0100 




0FA6 

19 

DAD 

D 

0F3F 

B5 

ORA L 

s 



0FA7 

4E 

MOV 

C,M 

0F4O 

C24D0F 

JNZ §34 



0 FA8 

CD7806 

CALL 

PUTC 



CALL PUTC(CHR); 



OFAB 

C3DF0F 

.JMP 

§38 



, STATEMENT » 311 






§37 


0F43 

2A8F43 

LUJ) CHR 

s 





ELSE 


0F46 

4D 

MOV C,L 

328 

3 



DO, 


0F47 

CD7806 

CALL PUTC 

329 

4 



IF EP > EVALSIZE THEN 

0F4A 

C3740F 

JMP §35 

s 






, STATEMENT I 329 



«34 


0 Ft£ 

110010 

LXI 

D,1000H 

2 

ass 

S 

0FB1 

211600 

LXI 

H. EP 

DO, 

0FB4 

CDOOOO 

CALL 

SP0104 

3 

IF EP > EVALSIZE THEN 

s 

0FB7 

D2C30F 

JNC 

139 


0F4D 

110010 

LXI 

D.1000H 

0F50 

211600 

LXI 

H,EP 

0F53 

CDOOOO 

CALL 

§P0104 

0F56 

D2620F 

JNC 

§36 


0F59 016301 
0F5C CDE306 


STATEMENT « 313 


CALL REMARK! ('t« ERROR EVALUATION STACK OVERFLOW '.EOS)), ^ 

i STATEMENT « 315 X 

LXI B,I-0DF6H X 

CALL REMARK ^ 

GOTO RECOVER; ^ 


CALL REMARK!. ('§#* ERROR EVALUATION STACK 

OVERFLOW', EOS)), 

i STATEMENT I 331 

OFBA 018901 LXI B.S-0E31H 

OFBD CDE306 CALL REMARK 

GOTO RECOVER, 

i STATEMENT « 332 

OFCO C34305 JMP RECOVER 


STATEMENT I 316 


, STATEMENT » 333 


JMP RECOVER 


STATEMENT « 317 


Page 46 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


460 



334 

4 



EVALSTIEP) 

= STR(I), 



0FC3 

2A9243 

LHLD 

I 



0FC6 

2600 

MV1 

H, 0 



0FC8 

EB 

XCHG 




OFC* 

2A9043 

LHLD 

STRPTR 



OFCC 

19 

DAD 

D 



OFCD 

E5 

PUSH 

H 



OFCE 

2A1600 

LaD 

EP 



0FD1 

012320 

LXI 

B,EVALST 



0FD4 

09 

DAD 

B 



0FD5 

D1 

POP 

D 



0FD6 

1A 

LDAX 

D 



0FD7 

77 

MOV 

H.A 

335 

4 



EP = EP ♦ 

1; 



0FD8 

2A1600 

Lao 

EP 



OFDB 

23 

INX 

H 



OFX 

221600 

sao 

EP 

336 

4 



END /§ ELSE-DO */, 





838 


337 

3 



I = I ♦ 1; 




OFDF 

219243 

LXI 

H.I 



0FE2 

34 

INR 

H 

338 

3 



END /# DO-WHILE 

t/i 



0FE3 

C3800F 

JMP 

8130 





8131 


339 

2 



RETURN, 




0FE6 

C9 

RET 


340 

2 



END PUTTOK, 



STATEMENT I 334 


STATEMENT « 335 


STATEMENT » 336 


STATEMENT « 337 


STATEMENT • 338 


STATEMENT • 339 


STATEMENT I 340 


PUSH PROCEDURE (EF ARGSTKIPTR, AP) ADDRESS, /# PUSH EP ONTO ARGSTK, 

RETURN NEW POINTER AP 

, STATEMENT « 341 


0FE7 

219843 

LXI 

H.AP+1H 

OFEA 

72 

MOV 

H.D 

OFEB 

2B 

XX 

H 

OFEC 

73 

MOV 

M,E 

OFED 

2B 

XX 

H 

OFEE 

70 

MOV 

M.B 

OFEF 

2B 

XX 

H 

OFFO 

71 

MOV 

M.C 

0FF1 

2B 

XX 

H 

0FF2 

B1 

POP 

D 

OFFS 

Cl 

POP 

B 

0FF4 

70 

MOV 

M.B 

0FF5 

2B 

XX 

H 

0FF6 

7 1 

MOV 

H»C 

0FF7 

D5 

PUSH 

D 


DECLARE (AP, EP. ARGSTKIPTR' ADDRESS. ARGSTK BASED 
ARGSTKIPTR • !> ADDRESS; 


343 

2 


IF AP : ARGSIZE THEN 



OFFS 

110004 

LXI 

D, 400H 



QFFP 

219743 

LXI 

Hj AP 



OFFE 

CDOOOO 

CALL 

8P0104 



1001 

D20D10 

JNC 

840 

344 

-i 



DO- 


345 

3 



call remark 

crrqR 



1004 

01AE01 

LXI 

P I-0E56H 



100 7 

CX306 

CALL 

REMARK' 

346 

3 



GOTO RECOVER 




100A 

C34305 

.IMP 

RECOVER 

347 

3 



END, 






840 


348 

2 


ARGSTK(AP) = EF 




100D 

2A°743 

LHLD 

AP 



1010 

29 

DAD 

H 



1011 

EP 

XCHG 




1012 

2A954? 

OLD 

ARGS T I FTP 



1015 

19 

DAD 

D 



1016 

E5 

PUSH 

H 



1017 

2A9343 

Lao 

EF 



101A 

EP 

XCHG 




101P 

El 

Pdf' 

H 


STATEMENT • 345 


STATEMEN" * 34" 


STATEMENT * ?4? 


1CIC 

7 3 

MCi'/ 

ME 

I01D 

■>o 

INX 

H 

101E 

7 2 

MOV 

RETURN AP+1, 

M,D 

101F 

2A97<! 

3 iaD 

AP 

1022 

23 

INX 

H 

1 : 

09 

RET 



STATEMENT * 34* 


LOOKUP PROCEDURE .NAHEIPIf DEFNlPfR* B>TE 


* LOCATE NAME. EXTRACT 
DEFINITION FROM TABLE 
351 


1024 

219C43 

LXI 

H.DEFNPTPtlH 

1027 

7 2 

MOV 

M.D 

1028 

2B 

XX 

H 

1029 

73 

MOV 

M,E 

102A 

2B 

XX 

H 

102B 

70 

mov 

M.B 

102C 

2P 

XX 

H 

102D 

71 

MOV 

M.C 


: (I, J, K, NAMEIPTR. DEFNIFTR) ADDRESS. 
NAME BASED NAMEIPTR (1) BYTE; 

DEFN BASED DEFNIFTR (1) BYTE. 


* LHLB PLAST 

sat* I 

DO WHILE I O OFFFFH- 


STATEMENT I 353 


STATEMENT ft 354 


1034 

01FFFF 

LXI 

B-OFFFFH 

1037 

11°D43 

LXI 

D I 

103A 

CDOOOO 

CALL 

8P0100 

103D 

B5 

ORA 

L 

103E 

CAC210 

JZ 8133 

J = NAHDEXINTBKITi 

1041 

2A9D43 

LaD 

I 

1044 

012330 

LXI 

B.NAMDEX1 

1047 

29 

DAD 

H 

1048 

09 

DAD 

B 

1049 

5E 

MOV 

E,M 

104A 

23 

INX 

H 

104B 

56 

MOV 

D.M 

104C 

EB 

XCHU 


104D 

220F43 

saD 

K = 0, 

•J 

1050 

210000 

LXI 

H> OH 

1053 

22A143 

SHLD K 

DO WHILE (NAME(K) = TAEL! 

#134 

1056. 

2AA143 

LaD 

K 

1050 

EB 

XCHG 


105A 

2A°94: 

Lac 

NANEPTR 

105D 

19 

DAD 

D 

105E 

E5 

PUSH 

H 

105F 

2AOF43 

LaD 

J 

1062 

012200 

LXI 

B. TABLE 

1065 

09 

DAD 

P 

1066 

D1 

POP 

D 

1067 

1A 

LDAX 

D 

1068 

96 

SUB 

M 

106° 

D601 

SUI 

1 

106B 

9F 

SBB 

A 

106C 

F5 

PUSH 

PSW 

106D 

1A 

LDAX 

D 

106E 

D6FE 

SUI 

OFEH 

1070 

C6FF 

ADI 

255 

1072 

9F 

SBB 

A 

1073 

Cl 

POP 

B 

1074 

48 

MOV 

C. B 

1075 

A1 

ANA 

C 

1076 

IF 

RAF: 


1077 

D28B10 

JNC 

J * J ♦ li 

8135 

107A 

2A9F43 

LaD 

J 

107D 

23 

INX 

H 

107E 

229F43 

saD 

J 


STATEMENT » 355 


STATEMENT « 356 


STATEMENT I 358 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 47 


461 





K = K ♦ 1; 


N 

372 2 


DODEF 

PROCEDURE 

(ARGSTKPTF 



, STATEMENT ft 359 

s 






1081 

2AA143 

LHLD 

K 







1084 

23 

INX 

H 





PROC DODEF 


1085 

22A143 

SHLD 

K 


127C 

21B943 

LXI 

H, J+1H 



END /* DO-WHILE */, 


127F 

72 

MOV 

M, D 




, STATEMENT • 360 

s 


1280 

2B 

XX 

H 

1088 

C35610 

JMP 

@134 



1281 

73 

MOV 

M,E 



@135: 


$ 


1282 

2B 

XX 

H 



IF NAME(K) = 

TABLE(J) THEN /* GOT ONE */ 


1283 

70 

MOV 

M, B 




i STATEMENT * 361 

s 


1284 

2B 

XX 

H 

108B 

2AA143 

LHLD 

K 

$ 


1285 

71 

MOV 

M, C 

108E 

EB 

XCHG 



1286 

2B 

XX 

H 

108F 

2A9943 

LHLD 

NAMEPTR 


1287 

D1 

POP 

D 

1092 

19 

DAD 

D 

s 


1288 

Cl 

POP 

B 

1093 

E5 

PUSH 

H i 1 



1289 

70 

MOV 

M.B 

1094 

2A9F43 

LHLD 

J 

s 


128A 

2B 

XX 

H 

1097 

012200 

LXI 

B,TABLE 


128B 

71 

MOV 

M,C 

109A 

09 

DAD 

B 

s 


128C 

D5 

PUSH 

D 

109B 

D1 

POP 

D , 1 


373 3 



DECLARE (ARGSTKPTR, 


IN TABLE 

STATEMENT « 372 




CALL SCOPY( 

TABLE, J+l, DEFN, 0) 

$ 

128D 

01B643 

LXI 

8 1 




, STATEMENT « 363 

1290 

11B843 

LXI 

D, J 

10A1 

012200 

LXI 

B,TABLE 

1293 

CDOOOO 

CALL 

@F0098 

10A4 

C5 

PUSH 

B , 1 

s 

1296 

3E02 

MVI 

A, 2H 

10A5 

2A9F43 

LHLD 

J 


1298 

CDOOOO 

CALL 

@P0094 

10A8 

23 

INX 

H 

0 

129B 

D2D712 

JNC 

@42 


10A9 E5 PUSH H 

10AA 2A9B43 LHLD DEFNP1 

10AD 44 MOV B.H 

10AE 4D MOV C. L 

10AF 110000 LXI D, OH 

10B2 CD55X CALL SCOPY 

364 4 RETURN YESi 

10B5 3E01 MVI A. 1H 

10B7 C9 RET 

365 4 END /# IF-DO */, 

@41 

366 3 1=1-1, 

10B8 2A9D43 LHLD I 

10BE 2B OCX H 

10BC 229D43 SHLD I 

367 3 END f* DO-WHILE ♦/ 

10BF C33410 .IMF' @132 

@133 

368 2 RETURN NO, 

10C2 3E00 MVI A, OH 

10C4 C° RET 

369 2 END LOOKUP, 


STATEMENT ft 364 


STATEMENT ft 365 


•STATEMENT ft 366 


STATEMENT « 367 


STATEMENT I 368 


STATEMENT ft 369 


ARGSTK BASED ARGSTKF'TR ili ADDRESS, 

IF J-I :■ 2 THEN f* NB "JAY MIWJS EYE" (N 0 T 

MINUS ONE > 

STATEMENT * 374 


A2 = ARGSTK*1+2', 


STATEMENT ft 376 


I29E 

2AB643 

LHLD 

I 

12A1 

010400 

LXI 

B,ARGSTK+4H 

12A4 

29 

DAD 

H 

12A5 

09 

DAD 

B 

12 A6 

EB 

XCHG 


12A7 

2AB443 

LHLD 

ARGSTKPTR 

12AA 

19 

DAD 

D 

12AB 

5E 

MOV 

E,M 

12AC 

23 

INX 

H 

12AD 

56 

MOV 

O.M 

12AE 

EB 

XCHG 


12AF 

22BA43 

SHLD 

A2 



A3 = 

ARGSTK!1+3) i 




, STATEM 

12B2 

2AB643 

LHLD 

I 

12B5 

010600 

LXI 

E, APGSTK+6H 

12B8 

29 

DAD 

H 

12B9 

09 

DAD 

B 

12BA 

EB 

XCHG 


12BB 

2AB443 

LHLD 

ARGSTKPTR 

12BE 

19 

DAD 

D 

12BF 

5E 

MOV 

E,M 

12C0 

23 

INX 

H 

12C1 

56 

MOV 

D, M 

12C2 

EB 

XCHG 


12C3 

22X43 

SHLD 

A3 



CALL 

INSTAL( EVALST(A2), 


EVAL PROCEDURE (ARGSTKPTR. I J) 


1X5 

21A843 

LXI 

H, J+1H 

1X8 

72 

MOV 

M, D 

10C9 

2B 

XX 

H 

1XA 

73 

MOV 

M, E 

1XB 

2B 

DCX 

H 

10CC 

70 

MOV 

M, B 

10CD 

2B 

XX 

H 

10CE 

71 

MOV 

Mi C 

1XF 

2B 

XX 

H 

10 D0 

D1 

POP 

D 

10D1 

Cl 

POP 

B 

10D2 

70 

MOV 

M,B 

10D3 

2B 

XX 

H 

10D4 

71 

MOV 

M, C 

10D5 

D5 

PUSH 

D 


/* EXPAND ARCS I THRU J EVALUATE 
BU!L T IN OR PUSH BACK DEF N 
STATEMENT # 370 


DECLARE ARGSTKPTR ADDRESS, ARGSTK BASED ARGSTKPTR (1) ADDRESS 
ARGNO BYTE, (I, J, K, M, N, T, TD) ADDRESS, 

DIGITS(11) BYTE DATA !7FH, 30H,31H, 32H, 33H, S4H, 35H, 36H, 37H,; 
/* PADDED ON LEFT TO SIMULATE FORTRAN ARRAY */ 


12C6 2ABA43 
12C9 012320 
12CC 09 
12CD E5 
12CE 2ABC43 
12D1 09 
12D2 EB 
12D3 Cl 
12D4 CDB50C 


12D7 C9 x RET 
381 3 END DODEFi 


, STATEMENT ft 378 


STATEMENT I 379 


, STATEMENT t 380 


STATEMENT « 381 


Page 48 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


462 











1345 




382 

2 


D0IF 

PROCEDUREIRRGSTKfPTR, I, J), /* EVALUATES IFELSE HACR0 */ 

$ 



5E 

MOV 

E.M 






, STATEMENT • 382^ 



1346 

23 

INX 

H 




i 

PR0C D0IF 



1347 

56 

MOV 

D-H 



12D8 

21C343 

LXI 

H.J+1H 

s 



1348 

EB 

XCHG 




12DB 

72 

MOV 

M,D 




1349 

22CA43 

SHLD 

A5 



12DC 

2B 

XX 

H 

390 

3 



IF EQUAL! EVALST(A2). EMRLSTCA3)- = YES THEN /« MUMP 



12DB 

73 

mov 

MiE 






STATEMENT • m 



12DE 

2B 

rcx 

H 

s 



134C 

2AC443 

LHLD 

A2 



12DF 

70 

NOV 

M.B 

V 



134F 

012320 

LXI 

B.EVALST 



12E0 

2B 

rcx 

H 

s 



1352 

09 

DAD 

B 



12E1 

71 

NOV 

M-C 



1353 

E5 

PUSH 

H i 1 



12E2 

2B 

OCX 

H 

s 



1354 

2AC643 

LHLD 

A3 



12E3 

D1 

POP 

D 

s 



1357 

09 

DAD 

B 



12E4 

Cl 

POP 

B 

s 



1358 

EB 

XCHG 




12E5 

70 

NOV 

M.B 



1359 

Cl 

POP 

B i 1 



12E6 

2B 

rcx 

H 

N 



135A 

CD6A0B 

CALL 

EQUAL 



12E7 

71 

NOV 

M-C 

s 



135D 

FE01 

CPI 

1H 



12E8 

D5 

PUSH 

D 

S 

391 


135F 

C27113 

JNZ 

€44 

383 

3 



DECLARE (A2. 

A3- A4, A5. I, J, ARGSTKIPTR) ADDRESS 

3 



CALL PESTRI EVflLST(A4>)i 





ARGSTK BASED ARGSTKIPTR (1) ADDRESS- 






- STATEMENT « 391 







s 



1362 

2AC843 

LHLD 

A4 

384 

3 



IF J-I < 5 THEN /# V.IAY MINU'S EYE ♦/ 




1365 

012320 

LXI 

B, EVALST 






STATEMENT » 384 

$ 



1368 

09 

DAD 

B 



12E9 

01C043 

LXI 

B, I 



1369 

44 

MOV 

EiH 



12EC 

11C243 

LXI 

D.J 

s 



136A 

4D 

MOV 

C.L 



12EF 

CD0000 

CALL 

€P0098 

V 



136B 

CDFAOA 

CALL 

PBSTR 



12F2 

EB 

XCHG 


s 



136E 

C37D13 

.IMF 

€45 



12F3 

3E05 

HVI 

A-5H 





€44 




12F5 

CD000C 

CALL 

€P00?6 

s 





ELSE 




12F8 

D2FC12 

JNC 

€43 

V 

392 

3 



CALL PBSTR 

' EVALST'A5)'. 

385 

3 



RETURN, 


s 






. STATEMENT « »; 






STATEMENT 1 385 



1371 

2ACA43 

LHLD 

A5 



12FB 

C9 

RET 


N 



1374 

012320 

LXI 

B. EVALST 




€43. 


V 



1377 

09 

DAD 

B 

386 

3 



A2 = ARGSTK(I+2>. 

s 



1378 

44 

MOV 

B-H 






STATEMENT # 386 



1379 

4D 

MOV 

C-L 



12FC 

2AC043 

LHLD 

I 



137A 

CDFAOA 

CALL 

PBSTR' 



12FF 

010400 

LXI 

B.ARGSTK+4H 

s 





€45 




1302 

29 

DAD 

H 

S 

3<>3 

3 



RETURN 




1303 

09 

DAD 

B 






, STATEMENT * 39? 



1304 

EB 

XCHG 




137D 

C* 

RET 




1305 

2ABE43 

LHLD 

ARGSTKPTF 

s 

394 

3 



END DOIF 




1308 

19 

DAD 

D 

V 






STATEMENT 4 3°4 



1309 

5E 

NOV 

EiM 

s 









130A 

23 

INX 

H 









130B 

56 

NOV 

D.M 

s 

395 

2 


CTOI PROCEDURE!INSPTR I) ADIKESS. '* ASCII TO INTEGER CONVERSION 



130C 

EB 

XCHG 








STATEMENT • 395 



130D 

22C443 

SHLD 

A2 

s 





. PROC CTOI 


387 

3 



A3 = ARGSTK d*3). 



137E 

21CF43 

LXI 

H, I*1H 






-. STATEMENT tt 387 

N 



1381 

72 

MOV 

M.D 



1310 

2AC043 

LHLD 

I 

s 



1382 

2B 

rcx 

H 



1313 

010600 

LXI 

B.ARGSTK+ 6 H 

s 



1383 

73 

MOV 

M,E 



1316 

29 

DAD 

H 



1384 

2B 

rcx 

H 



1317 

09 

DAD 

B 

N 



1385 

70 

MOV 

M-B 



1318 

EB 

XCHG 


s 



1386 

2B 

OCX 

H 



1319 

2ABE43 

LHLD 

ARGSTKPTR 




1387 

71 

MOV 

M-C 



131C 

19 

DAD 

D 






AND BUMP INDEX 1 



131D 

5E 

NOV 

E,N 

396 

3 



DECLARE (D. 

I. INIPTR VAL) ADDRESS. IN EASED INIPTF; d‘ °YTE 



131E 

23 

INX 

H 

s 









131F 

56 

MOV 

o.n 

V 

397 

3 



DO WHILE INd) = BLANK 



1320 

EB 

XCHG 


s 






, STATEMENT « 



1321 

22C643 

SHLD 

A3 





€136 


388 

3 



A4 = ARGSTKd+4), 

s 



1388 

2ACE43 

LHLD 

I 






STATEMENT 1 388 

V 



138B 

EB 

XCHG 




1324 

2AC043 

LHLD 

I 

s 



138C 

2ACC43 

LHLD 

INPTR 



1327 

010800 

LXI 

B.ARGSTK+ 8 H 



138F 

19 

DAD 

D 



132A 

29 

DAD 

H 

N 



1390 

7E 

MOV 

AiM 



132B 

09 

DAD 

B 

\ 



1391 

FE20 

CPI 

20H 



132C 

EB 

XCHG 


5 



1393 

C2A013 

JNZ 

€137 



132D 

2ABE43 

LHLD 

ARGSTKPTR 

398 

4 



I 8 I ♦ li 




1330 

19 

DAD 

D 






. STATEMENT 1 398 



1331 

5E 

NOV 

EiM 

s 



1396 

2ACE43 

LHLD 

I 



1332 

23 

INX 

H 

$ 



1399 

23 

INX 

H 



1333 

56 

MOV 

D.M 



139A 

22CE43 

SHLD 

I 



1334 

EB 

XCHG 


399 

4 



END- 




1335 

22C843 

SHLD 

A4 

s 






i STATEMENT * 39* 

38° 

3 



A5 = ARGSTKd+5). 

s 



139D 

C38813 

JMP 

€136- 






, STATEMENT 1 389 

s 





€137 




1338 

2AC043 

LHLD 

I 

400 

3 



VAL = Oi 




133B 

133E 

010A00 

29 

LXI 

DAD 

B.ARGSTK+0AH 

H 

* 



13A0 

210000 

LXI 

S T ATEMEN r 4 4<- 
H OH 



133F 

09 

DAD 

B 




13A3 

22D243 

SHtf' 

VAL 



1340 

EB 

XCHG 


$ 









1341 

2ABE43 

LHLD 

ARGSTKPTR 









1344 

19 

DAD 

D 

s 










Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 49 

463 





DO WHILE IN-! 

) ■ £0S 



8138 


13A6 

2ACE43 

LHLD 

{ 

13A9 

EB 

XCHG 


13AA 

2ACC43 

LHLD 

INPTR 

13AD 

19 

DAD 

D 

13AE 

X 

MOV 

A, M 

13AF 

FEFE 

CPI 

OFEH 

13B1 

CAF413 

JZ 

8139 



D = INDEX! 

DIGITS' ! 

13B4 

2ACE43 

LHLD 

I 

13B7 

EB 

XCHG 


13B8 

2ACC43 

LHLD 

INPTP 

13BB 

19 

DAD 

D 

13BC 

5E 

MOV 

E.M 

13BD 

013500 

LXI 

B, DIGITS 

13C0 

CD300B 

CALL 

INDEX 

13C3 

6 F 

MOV 

LA 

1X4 

2600 

MVI 

Hi 0 

13C6 

22D043 

SHLD 

D 



IF D = 0 THEN 

13C9 

xoo 

m 

A, OH 

1XB 

11D043 

LXI 

BiD 

13CE 

CDOOOO 

CALL 

8P0101 

13D1 

B5 

ORA 

L 

13D2 

C2D813 

•JNZ 

846 



GOTO QUITli 

13D5 

CX413 

JMP 

QUIT1 



846: 




VAL = lOtVAL + D - 

13D6 

21D243 

LXI 

H, VAL 

13DB 

CDOOOO 

CALL 

8P0031 

13DE 

E5 

PUSH 

H 

13DF 

2AD043 

LHLD 

D 

1X2 

Cl 

POP 

B 

1X3 

09 

DAD 

B 

1X4 

2B 

DCX 

H 

13E5 

EB 

XCHG 


13E6 

2B 

DCX 

H 

1X7 

73 

MOV 

M.E 

1X8 

23 

INX 

H 

1X9 

72 

MOV 

1 = 1 + 1; 

HiD 

13EA 

2ACE43 

LHLD 

I 

13ED 

23 

INX 

H 

13EE 

22CE43 

SHLD 

I 



END /* DO-WHILE */; 

1X1 

C3A613 

JMP 

8138 


'STATEMENT # 401 


STATEMENT 4 4 /2 


/* NON-DIGIT 
STA T EMENT 4 40:' 


STATEMENT # 404 


STATEMENT I 405 


8139. 

40? 3 QUIT! RETURN VAL 

QUIT1: 

1X4 2AD243 LHLD VAL 

13F7 C? RET 

40? 3 END CTOI, 


PBNUM PROCEDURE iN’-, 


STATEMENT * 40': 


INTEGER TO ASCI! * PUSHBAD. TO BUF * 
: STATEMENT # 410 




M = NUM MOD 10. 

1404 

2AD843 

LHLD 

NUM 

1407 

EB 

XCHG 


1408 

210A00 

LXI 

H, OAH 

140B 

CDOOOO 

CALL 

^PiVJTO 

HOE 

22D643 

SHLD 

M 



CALL PUTBAMDIGITS^ 

1411 

2AD643 

LHLD 

M 

1414 

013600 

LXI 

B.DIGITS+1H 

1417 

09 

DAD 

B 

1418 

4E 

MOV 

C,M 

1419 

CDCDOA 

CALL 

PUTBAK 



NUM = 

NUM/10; 




, SI 

141C 

2AD843 

LHLD 

NUM 

141F 

EB 

XCHG 


1420 

210AO0 

LXI 

H, OAH 

1423 

CDOOOO 

CALL 

8P0029 

1426 

EB 

XCHG 


1427 

22D843 

SHLD 

NUM 


STATEMENT #414 


END, 

/# UNTIL NLIM = 0 
DO WHILE NUM O Oi 


STATEMENT #418 



142A 

XOO 

MVI 

A, OH 


142C 

110843 

LXI 

D, NUM 


142F 

CDOOOO 

CALL 

8P0101 


1432 

B5 

ORA 

L 


1433 

CAX14 

JZ 

8141 

419 

4 


GOTO REPEAT, 


1436 

C30414 

JMP 

REPEAT 

420 

4 


END; /# PHONIED UP 


1439 

C32A14 

JMF' 

8140 


RET 

END PBNUM, 


DOINCR. PROCEDURE(I, J); 


STATEMENT #41? 


STATEMENT # 421 


STATEMENT # 422 


/* INCREMENT ARGUMENT BY ONE 
, STATEMENT I 423 


143D 

21DD43 

LXI 

H.J+1H 

1440 

72 

MOV 

m.d 

1441 

2B 

DCX 

H 

1442 

73 

MOV 

M,E 

1443 

2B 

XX 

H 

1444 

70 

MOV 

M.B 

1445 

2B 

XX 

H 

1446 

71 

MOV 

H. C 


DECLARE (I, J, K) ADDRESS, 


K = ARGSTKU+2); 


STATEMENT # 425 


1447 2ADA43 
144A 010400 
144D 2? 

144E 09 
144F EB 
1450 2AA343 
1453 19 


B,ARGSTK+4H 

H 

8 

ARGSTKPTR 

D 


1X8 

210543 

LXI H.N+1H 

V 

1454 

5E 

MOV 

E.M 

13FB 

70 

NOV M, B 

s 

1455 

23 

INX 

H 

13FC 

2 B 

x:< h 

1456 

56 

MOV 

D, M 

1XD 

71 

MOV M, c 

s 

1457 

EB 

XCHG 




DECLARE (M, N, NUM,- ADDRESS 

V 

1458 

22X43 

SHLD 

K 


13FE 2AD443 
1401 22D843 


LHLD n 
SHLD NUM 
REPEAT 


STATEMENT #412 


STATEMENT #413 


145B 2ADE43 
145E EB 
145F 012320 
1462 CD7E13 

1465 23 

1466 44 

1467 4D 

1468 CDF813 


CALL PBNUM(CTOK. EVALST, K) ♦ l)i 

i STATEMENT # 426 

LHLD K 


STATEMENT # 427 


Page 50 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


464 



DGDECR PROCEDURE!1, J), 


STATEMENT # 42S 


'* DECREMENT ARGUMENT BY ONE 
STATEMENT I 429 


146C 

21E343 

LXI 

H, J+1H 

146F 

72 

MOV 

M, D 

1470 

2B 

XX 

H 

1471 

73 

MOV 

M,E 

1472 

2B 

XX 

H 

1473 

70 

MOV 

M, B 

1474 

2B 

XX 

H 

1475 

71 

MOV 

N,C 



XCLARE 

(I, J, K) 


K = ARGSTK(I+2). 


STATEMENT « 431 


1476 2AE043 
14^9 010400 
147C 29 
147D 09 
147E EB 
147F 2AA343 

1482 19 

1483 5E 

1484 23 

1485 56 

1486 EB 

1487 22E443 


USA 2AE443 
148D EB 
148E 012320 
1491 CD7E13 

1494 2B 

1495 44 

1496 4D 

1497 CDF813 


ARGSTkPTR 

D 

E.M 

H 

D»M 


CALL PBNUHICTOK EVALST, K) - 1). 

. STATEMENT I 432 

LHLD K 


RET 

END DODECRi 


STATEMENT # 433 


STATEMENT • 434 


MIN PROCEDURE(H,N) ADDRESS, 


STATEMENT « 435 






i PRX MIN 




149B 

21E943 

LXI 

H.N+1H 



149E 

72 

MOV 

M, D 



149F 

2B 

XX 

H 



14A0 

73 

MOV 

M, E 



14A1 

2B 

XX 

H 



14A2 

70 

MOV 

M. B 



14A3 

2B 

XX 

H 



14A4 

71 

MG'-' 

MsC 

436 

3 



XCLARE (M, N 

7AL ■ t 

437 

3 



IF M <= N THEN 



14A5 

11E343 

LXI 

D.N 



14A8 

01E643 

LXI 

B.M 



14AB 

CD0000 

CALL 

@P00°? 



14AE 

DAB514 

X 

@47 

438 

3 



RETURN M. 




14B1 

2AE643 

LHLD 

M 



14B4 

C9 

RET 






@47 


439 

3 



ELSE RETURN N, 



14B5 

2AE843 

LHLD 

N 



14B8 

C9 

RET 






@48 


440 

3 



END MIN, 




14B9 

C9 

RET 



STATEMENT I 437 


STATEMENT « 438 


STATEMENT I 439 


STATEMENT ft 440 


DOSUBSTR PROCEDURE!I, J', 


PRO! DOSUBSTR 


/* SELECT SUBSTRING ♦ 

STATEMENT ft 441 


14BA 

21EF43 

LXI 

H, J+1H 

14BD 

72 

MOV 

M, D 

14BE 

2B 

XX 

H 

14BF 

73 

MOV 

M,E 

14C0 

2B 

XX 

H 

MCI 

70 

MOV 

M, B 

MC2 

2B 

XX 

H 

I4C3 

71 

MOV 

h, C 



XCLARE 

'AP, FCi 



IF J-I C 

3 THEN 

14C4 

01EC43 

LXI 

B> I 

14C7 

UEE43 

LXI 

D.J 

14CA 

CDOOOO 

CALL 

BP0098 

14CD 

EB 

TCHG 


MCE 

3E03 

MVI 

A, 3H 

MDO 

CDOOOO 

CALL 

@P0096 

14D3 

D2D714 

JNC 

@49 



RETURN 


14D6 

C9 

RET 



@49 

IF J-I < 

4 THEN 

14D7 

01EC43 

LXI 

B, I 

MM 

UEE43 

LXI 

D, J 

MDO 

CDOOOO 

CALL 

@P009S 

14E0 

EB 

XCHG 


14E1 

3E04 


r ■*- 

14E: 



if 

•4ES 





2PA/V 

1 *1 

- 'Ah 

UE3 


shl: 

nc 

!*E C 

C3I315 

imp 

9** 


@5 '• 

ELSE 




, =. 


14F2 

2AEC43 

LHLD 


14F5 

01080C 

IV 

f . 

!4F8 

2 Z 

DAI 1 

rl 

14F- 

0 C 

DAD 

c 

!4 P A 

EE' 

XCHG 


!4rp 

2AA342 

LHLD 

ARGST1 FT* 

14FE 

19 

DAD 

£. 

i4rr 

5E 

MO*' 

L1 

icy, 

23 

IN* 

H 

1501 

56 

MOV 

£.,H 

1502 

EE 

XCHO 


1503 

22F44? 

SHLt 

y 



NC = 

CTO I- E V# 

1506 

2AF443 

LrLD 

f 

1509 

EB 

XCHO 


150A 

012320 

LXI 

B, EVALST 

150D 

CD7E1? 

CALL 

CTOI 

1510 

22*6*3 

SHLD 

NC 



ENP 



STATEMENT ft 443 


STATEMENT ft 444 


STATEMENT ft 445 


, 44f 


NUMEEF. i J CHARS 


STATEMENT I 44 ; 


<♦ ORIGIN *! 
3TATEMENT ft 451 


1513 

2AEC43 

LHLD 

! 

1516 

010600 

LX I 

E APC4 T r>« 

15P 

2 g 

DAD 

H 

151A 

09 

DAD 

v 

151B 

EB 

XCHG 


151C 

2AA34? 

LHLD 

ARGSTkPTR 

151F 

19 

DAD 

j} 

1520 

5E 

MOV 

E M 

1521 


IN* 

H 

1522 

56 

MOV 

DM 

1523 

EB 

XCHG 


1524 

22F443 

SHLD 

k 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 51 


465 






452 3 


455 

45* 


457 4 


458 5 


1571 9F 

1572 Cl 

1573 48 

1574 

1S7T 


A1 

IF 


15 7 6 D2B815 


AP = ARGSTK(I*2); /* TARGET STRING 
■ STATEMENT ft 452 


§ 


45? 5 


K = K - li 


. STATEMENT ft 45? 


1527 

2AEC43 

LHLD 

I 

v 



15AE 

2AF443 LHLD 

K 

152ft 

010400 

LX I 

P,ARGSTK+4H 

C 



15BI 

2B BOX 

H 

152D 

2 ? 

DAD 

H 

s 



15B2 

22F443 SHLD 

K 

152E 

0 ? 

DAD 

P 

460 

5 


END, 

/# DO-WHILE */ 

152F 

EE 

XCHG 


s 





, STATEMENT » 460 

1530 

2AA343 

LHLD 

ARGSTKPTR 

v 



15B5 

C39715 JMP 

@142 

153; 

1 ° 

DAD 

[i r 

s 




@143 


1534 

5£ 

MOV 

E. M 

461 

4 


END; 


15:5 

12 

IN 1 . 

H 

s 





. STATEMENT ft 461 

,c 3 i 

56 

MC ! V 

E M 

s 




@52 


153 7 

EE- 

XCHG 


s 

462 

3 



RETURN, 

1538' 

22F043 

SHLD 

LP 





, STATEMENT 1 462 



FC = AF 

• W: PVALST 1 -1 ■* FIRS r CHAR if SUBSTRING */ 



15B8 

C? RET 





STATEMENT » 452 

s 

463 

3 


END DOSUBSTR, 

15?P 

2AF44 • 

_HlD 

K 

* 





, STATEMENT ft 463 

153E 

EP 

"MmG 







153F 

012220 

LX I 

P EvALST 






1542 

CD7E13 

CftLL 

C T C'I 

s 






1545 

EP 

XCHG 






/♦ EVftL EXECUTION BEGIN 

1546 

2AF042 

lac 

AP 

s 






1^-40 


DAE- 

n 






154A 

2P 

OCX 

H 

s 






154E 

22F24: 

SHLD 

FC 

s 

464 

2 


T = ARGSTK(I), 




IF ‘FC : 

>- AP* AND .FC : AP ♦ LENGTH' EVALST‘.AP))) THEN 

s 





; STATEMENT ft 464 




STATEMENT ft 454 



10D6 

2AA543 LHLD 

I 

154E 

01F0 4 3 

LX I 

B. AP 

N 



10D? 

29 DAD 

H 

1551 

11F243 

LX I 

D: r C 

s 



10DA 

EB XCHG 


1554 

CDOOOO 

CALL 

8P0098 

s 



10DB 

2AA343 LHLD 

ARGSTKPTR 

1557 

9F 

SEP 

A 



10DE 

19 DAD 

D 

1558 

2F 

CMA 




10DF 

5E MOV 

E, M 

1559 

F5 

PUSH 

PSW 1 

s 



10E0 

23 INX 

H 

155A 

2AF04? 

LHLD 

AP 

s 



10E1 

56 MOV 

D, M 

iwn 

012320 

LX I 

B EVALi-T 



10 E 2 

EB XCHG 


1560 

.)<} 

DAD 

\ 



10E3 

22B043 SHLD 

T 

1561 

44 

MOV 

B:H 

s 

445 

2 


TD = EVALST(T)i 


1562 

4D 

MOV 

C. L 






STATEMENT ft 465 

1563 

CDB006 

CALL 

LENGTH 

$ 



10E6 

012320 LXI 

B,EVALST 

1566 

EP 

XCHG 




10E? 

09 DAD 

B 

<.%? 

2AF04? 

LHLD 

AF 

N 



10EA 

6 E NOV 

L.M 

156A 

19 

DAD 

C 

V 



10EB 

2600 MVI 

H.O 

156E 

11F243 

LX I 

D, FC 

s 



10ED 

22B243 SHLD 

TD 

156E 

CDOOOO 

CALL 

@P0102 

466 

2 


IF TD = DEFTVPE THEN 


pop 

MOV 

ANA 

RAF: 

■JNC 

DO 


@52 


= FC * MIN'NC LENGTH* EVALST(FC))) - li 
STATEMENT ft 456 


DO WHILE K >= FC. 

■ STATEMENT ft 457 


@142 


! 


STATEMENT ft 466 


467 2 


10F0 

10F2 

10F5 

10F6 


10F? 

10FC 


3E1F 

CDOOOO 

B5 

C20C11 


MV I 
CALL 
ORA 
JNZ 


A, 1FH 
@P00«4 
L 

@53 


CALL DODEF( ARGSTK. I, J), 


STATEMENT ft 467 


2AA343 

E5 


LHLD 

PUSH 


ARGSTKPTR 

H 


1570 

2AF243 

LHLD 

FC 

\ 

10FD 

2AA543 

LHLD 

I 

157C 

012320 

LXI 

B,EVALST 

V 

1100 

44 

MOV 

B,H 

15 7 F 

0 ° 

DAD 

B 

s 

1101 

4D 

MOV 

C.L 

1580 

44 

MOV 

B.H 

1102 

2AA743 

LHLD 

J 

1581 

4D 

MOV 

C.L 

s 

1105 

EB 

XCHG 


1582 

CDB006 

CALL 

LENGTH 


1106 

CD7C12 

CALL 

DODEF 

1585 

EB 

XCHG 


S 

1109 

C37B12 

JMP 

@54 

1586 

2AF643 

LHLD 

NC 


@53 



1580 

44 

MOV 

B.H 

N 


ELSE 



158A 

4D 

MOV 

C.L 

V 448 

2 

IF TD = 

IFTYPE THEN 

158B 

CD9B14 

CALL 

MIN 

S 





158E 

EP- 

XCHG 


hoc 

3E1E 

MVI 

A, 1EH 

158F 

2AF243 

LHLD 

FC 

HOE 

11B243 

LXI 

D, TD 

1592 

1 ? 

DAD 

D 

s 

ini 

CDOOOO 

CALL 

@P0101 

1593 

2B 

DCX 

H 

$ 

1114 

B5 

ORA 

L 

1594 

22F443 

SHLD 

K 

1115 

C22B11 

JNZ 

@55 


STATEMENT ft 468 


46« 2 


CALL DOIF( ARGSTK, I. J). 


STATEMENT ft 46? 


1118 2AA343 


LHLD ARGSTKPTR 


1597 

01F243 

LXI 

B. FC 

$ 

11 IB 

E5 

PUSH 

H 

159A 

11F443 

LXI 

D.K 

me 

2AA543 

LHLD 

I 

159D 

CDOOOO 

CALL 

@P0098 

N 

11 IF 

44 

MOV 

B;H 

15A0 

DABS15 

X 

@143 

V 

1120 

4D 

MOV 

C.L 




CALL PUTBAK(EVALST(K).), 

S 

1121 

2AA743 

LHLD 

J 




, STATEMENT ft 458 

1124 

EB 

XCHG 


15A3 

2AF443 

LHLD 

K 

1125 

CDD812 

CALL 

DOIF 

15A6 

012320 

LXI 

B.EVALST 

s 

1128 

C37B12 

■JMP 

«56 

15A9 

0 ? 

DAD 

B 

§ 


@55 



15AA 

4E 

MOV 

C.M 


ELSE 



15AB 

CDCDOA 

CALL 

PUTBAK 






§ 


Page 52 


Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia. Box E, Menlo Park, CA 94025 


Number 20 


466 














470 

2 


IF TD = 

DaETYPE THEN 

480 2 

e 

iS 

! 

a( 

J). 






, STATEMENT » 470 







112B 

3E1D 

MVI 

A, 1DH 

119C 

2AA543 

LHLD 

I 



1120 

11B243 

LX I 

D. TD 


ll^F 

44 

MOV 

B.H 



1130 

CD0000 

CALL 

8P0101 

c 

11A0 

4D 

MOV 

C.L 



1133 

B5 

ORA 

L 

s 

11A1 

2AA743 

LHLD 

J 



1134 

C25A11 

JNZ 

857 

11A4 

EF 

XCHG 


471 

2 


DO. 




11A5 

C DBA 14 

CALL 

DOSUBSTR 

472 

3 


J = 

ARGSTK(I+2)i 


11A8 

C37B12 

..IMF' 

864 


STATEMENT I 460 


STATEMENT » 472 


B.ARGSTK+4H 

H 

B 


T ♦ LENGTH! EVALST(T)) - 1, 

STATEMENT » 482 


113F 

EB 

XCHG 


$ 

11AE 

2AB043 

LHLD 

T 

1140 

2AA34? 

LHLD 

ARGSTKPTR 

11AE 

012320 

LXI 

B.EVALST 

114; 

19 

DAD 

D 

s 

11B1 

09 

DAD 

B 

1144 

5E 

MOV 

E.M 

c 

11B2 

44 

MOV 

B.H 

1145 

23 

INX 

H 

s 

11B3 

4D 

MOV 

C.L 

1146 

56 

MOV 

D.H 

11B4 

CDB006 

CALL 

LENGTH 

1147 

EB 

XCHG 


s 

11B7 

EB 

XCHG 

1148 

22A743 

5HLD 

J 


11B8 

2AB04? 

LHLD 

T 



CALL DELETE! 

EVALST(J)). 

$ 

1 IBB 

19 

DAD 

D 




. STATEMENT « 473 

11BC 

2B 

DCX 

H 

114B 

2AA743 

LHLD 

J 

s 

11BD 

22AA43 

SHLD 

K 

114E 

012320 

LXI 

B.EVALST 

V 

483 3 


DO WHILE (K > T) AND (K 

1151 

09 

DAD 

B 

s 





1152 

44 

MOV 

B.H 



8144 



O OFFFFH). /♦ PLM INTEGERS ARE NON-NEGATIVE §/ 

STATEMENT I 483 


MOV C.L 
OE CAa DELE 

END; /« IF-DO */ 

12 JMP 858 

857 

asE 

IF TD = INCRTYPE THEN 


U5A 

3E1C 

MVI 

A, 1CH 

115C 

11B243 

LXI 

D. TD 

115F 

CDOOOO 

CALL 

8P0101 

1162 

B5 

ORA 

L 

1163 

C27511 

■JNZ 

859 



CALL DOINCRd. 

J)i 

1166 

2AA543 

LHLD 

I 

1169 

44 

MOV 

B.H 

116A 

4D 

MOV 

C.L 

116B 

2AA743 

LHLD 

J 

U6E 

EB 

XCHG 


116F 

CD3D14 

CALL 

DO I NCR 

1172 

C37B12 

JMP 

860 



859 



asE 



IF TD = DECRTYPE THEN 

1175 

3E1A 

MVI 

A, 1 AH 

1177 

11B243 

LXI 

D. TD 

117A 

CDOOOO 

CALL 

8P0101 

117D 

B5 

ORA 

L 

117E 

C29011 

JNZ 

861 



CALL DODECR!I. 

J); 

1181 

2M543 

LUD 

I 

1184 

44 

MOV 

B.H 

1185 

4D 

MOV 

C.L 

1186 

2AA743 

LiLD 

J 

1189 

EB 

XCHG 


118A 

CD6C14 

CAa 

DODECR 

118D 

C37B12 

JMP 

862 



861: 



ELSE 



IF TD = $UBSTRTY*E THEN 

IPO 

3E19 

MV! 

A, PH 

1P2 

11B24; 

LXI 

D TD 

1195 

CDOOOO 

CALL 

8P0101 

1198 

B5 

O&A 

L 

1199 

C2AB11 

JNZ 

86? 


STATEMENT # 474 


STATEMENT i 475 


STATEMENT « 476 


STATEMENT I 477 


i STATEMENT « 478 


11C0 

11B043 

LXI 

D.T 

11C3 

01AA43 

LXI 

B. K 

11C6 

CDOOOO 

CALL 

8P0098 

11C9 

9F 

SBB 

A 

11CA 

01FFFF 

LXI 

B.OFFFFH 

11CD 

11AA43 

LXI 

D.K 

1 IDO 

F5 

PIJSH 

PSW 

I1D1 

CDOOOO 

CAa 

8P0100 

1104 

B5 

ORA 

L 

11D5 

C6FF 

ADI 

255 

11D7 

OF 

SBB 

A 

11D8 

Cl 

POP 

B 

11D9 

48 

MOV 

C.B 

11 DA 

A1 

ANA 

C 

11DB 

IF 

RAR 


11 DC 

D26312 

JNC 

IF EVALST(K- 

8145 

1) O ARGF 

1 IDF 

2AAA43 

LHLD 

K 

UE2 

2B 

DCX 

H 

11E3 

012320 

LXI 

B.EVALST 

11E6 

09 

DAD 

B 

11E7 

7C 

MOV 

A. H 

he? 

FE24 

CP! 

24H 

11EA 

CAFB11 

jT *^5 

CALL P'.-TBAM EVALST U- 

11ED 

2AAA43 

LHLD 

K 

11F0 

012320 

in 

l. EVALST 

11F3 

•3° 

DAD 

B 


STATEMENT « 484 


iTA ; EMEH T 4 465 


ARON*} = INDEX• DIGITS EVALST* M) - 
STATEMENT 4 487 


11FB 

2AAA43 

LHLD 

K 

11FE 

012320 

LXI 

B.EVALST 

1201 

09 

DAD 

g 

1202 

5E 

MOV 

EM 

1203 

013500 

LXI 

E • DIGITS 

1206 

CD300B 

CALL 

INDEX 

1209 

3D 

DCF: 

A 

120A 

32A Q 43 

STA 

IF '.ARON! 

ARGNG 
? OFFH. 

1200 

3AA943 

LDA 

ARGWC' 

1210 

D6FF 

■3UI 

OFFH 

1212 

C6FF 

ADI 

255 

1214 

9F 

SBB 

A 

1210 

01A543 

LXI 

B.I 

1218 

11A743 

LXI 

D..J 

121B 

F5 

PUSH 

PSW 

rat 

CDOOOO 

CALL 

epoo9& 

121F 

13 

INX 

[i 

1220 

1A 

LDAX 

P 


/* "JAY MINUS EYE" 


STATEMENT « 48S 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 53 


467 





CALL IP0094 

:BE A 

F*OF B 1 

MOV C,E 

ANA C 

m 

JNC ®67 

DO; 

N = I ♦ APGNG ♦ 1, 

STATEMENT « 490 


MAINLINE DRIVER BEGINS HERE */ 


END /# IF-DO 


*/i 

STATEMENT I 493 


SKIP OVER i §/ 

. STATEMENT « 494 


LHLD K 
DCX H 

SHLD K 

END f* ELSE-DO, 


*/» 

STATEMENT I 495 


CALLSIGNON CALL SIGNON, 

0231 310000 LXI 

CALLSIGNON 
0234 310000 LXI 


, STATEMENT » 503 
SP» BSTACKftORIGIN 


sp bstacksorigin 


CALL SIGNON 


122C 

3AA943 

LDA 

ARONO 

> 

504 1 

: 

CALL OPEN! SAVAFT, 

( FI KAP1AR. SAV '), 2, 0. STATUS), 

122F 

11A543 

LXI 

D, I 

s 





i STATEMENT ft 504 

1232 

CDOOOO 

CALL 

8P0014 

s 


023A 

OlOCOO 

LXI 

B,SAVAFT 

1235 

23 

INX 

H 


023D 

C5 

PUSH 

B , 1 

1236 

22AE43 

SHLD 

N 


023E 

01CD01 

LXI 

B,$-71H 



M = 

ARGSTKtNh 

s 


0241 

C5 

PUSH 

B , 2 




- STATEMENT ft 491 

V 


0242 

010200 

LXI 

B,2H 

1239 

29 

DAD 

H 

s 


0245 

C5 

PUSH 

B , 3 

123A 

EB 

XCHG 



0246 

110E00 

LXI 

D,STATUS 

123B 

2AA343 

LHLD 

ARGSTKPTR 

N 


0249 

010000 

LXI 

P. OH 

123E 

19 

DAD 

D 



024C 

CDOOOO 

CALL 

OPEN 

123F 

5E 

MOV 

E.M 

s 






1240 

23 

INX 

H 


/♦ 


INITIALIZATIONS */ 

1241 

56 

MOV 

D.M 

N 






1242 

EB 

XCHG 


s 

505 

1 

AP 

BP, EP = 0 

/♦ FORTRAN TO PLM ARRAY CONVERSION #/ 

1243 

22AC43 

SHLD 

M 

s 





, STATEMENT ft 505 



CALL PBSTRt EVALST(M))i 


024F 

210000 

LXI 

H, OH 




, STATEMENT ft 492 

N 


0252 

221000 

SHLD 

AP 

1246 

2AAC43 

LHLD 

M 

s 


0255 

221200 

SHLD 

BP 

1249 

012320 

LXI 

B,EVALST 



0258 

221600 

SHLD 

EP 

124C 

09 

DAD 

B 

506 

1 

cp. 

PLAST, TLAST = 

= OFFFFH, 

124D 

44 

MOV 

BiH 





, STATEMENT ft 506 

124E 

4D 

MOV 

C> L 

s 


025B 

2B 

DCX 

H 

124F 

CDFAOA 

CALL 

PBSTR 



025C 

221400 

SHLD 

CP 


025F 221COO SHLD PLAST 

0262 222000 SHLD TLAST 

STKSAVO = STACKPTR. 

0265 210000 LXI H. 0 

0268 39 DAD SP 

0269 221EOO SHLD STKSAVt 

BUF(BP) = EOS, 


STATEMENT « 507 

0 


STATEMENT ft 508 


LHLD K 
DCX H 
SHLD K 

END /* DO-HHILE #/, 


STATEMENT ft 496 


STATEMENT ft 497 


JMP 

ei45 

IF K = T THEN 


/♦ DO LAST CHARACTER »/ 
, STATEMENT ft 498 


•68 

END /* ELSE-DO 


STATEMENT ft 500 


STATEMENT ft 501 

STATEMENT ft 502 


0275 21A33F 

O' 7 "? 3601 


CALL INSTAL DEFNAM 


STATEMENT ft 509 


TATEMENT ft 510 


1263 

01B043 

LXI 

B, T 


511 1 

; 

CALL 

INSTAL! CONDNAM, CONDTYP), 

1266 

11AA43 

LXI 

D,K 

s 





, STATEMENT 

1269 

CDOOOO 

CALL 

@P0098 



0283 

11130*) 

LXI 

D-CONDTYP 

126C 

B5 

ORA 

L 



0286 

OlOCOO 

LXI 

B,CONDNAM 

126D 

C27B12 

JNZ 

m 


0289 

CDB50C 

CALL 

INSTAL 



CALL PUTBAK(EVALST(K)), 

512 : 

[ 

CALL 

INSTAL' DELTNAM, DELTYP), 




. STATEMENT ft 499 






, STATEMENT 

1270 

2AAA43 

LHLD 

K 



028C 

111C00 

LXI 

D, DELTYP 

1273 

012320 

LXI 

B.EVALST 


028F 

OllS'X 1 

LXI 

B, DELTNAM 

1276 

09 

DAD 

B 


0292 

CDB50C 

CALL 

INSTAL 

1277 

4E 

MOV 

C, M 

s 

513 

1 

CALL 

INSTAL 1 INCRNAM, INCRTYP), 

1278 

CDCDOA 

CALL 

PUTBAK 

V 





, STATEMENT 


0295 112F00 LXI D. INERTYP 

0298 011E00 LXI B,INCRNAM 

02°B CDB50C CALL INSTAL 

CALL INSTAL' DECRNAM, DECRTYP), 

, STATEMENT ft 514 

029E 113100 LXI D.DECRTYP 

02A1 012300 LXI B, DECRNAM 

02A4 CDB50C CALL INSTAL 

CALL INSTAL< SUBSTRNAM, SUBSTRTYP), 

, STATEMENT ft 515 

02A7 113300 LXI D.SUBSTRTYP 

02AA 012800 LXI B,SUBSTRNAM 

02AD CDB50C CALL INSTAL 


Page 54 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


468 



/♦ “ACTIVE" CODE BEGINS HERE 

RESTART T = GETTOK( TOKEN, HAXTOK)i 

i STATEMENT ft 516 

RESTART: 


CALL PUTCHR!EOS), 

. STATEMENT I 532 

ltd t.GFErt 

CALL PUTCHR 

AF = PUSH* EP. AR6STK. AP). 


02B0 

1E7A 

MVI 

E,7W 

> 





i STATEMENT ft 533 

02B2 

01A43F 

LXI 

B, TOKEN 

s 

0328 

2A1600 

LHLD 

EP 


02B5 

CDBBOB 

CAa 

GETTOK 

$ 

032B 

E5 

PUSH 

H 

, 1 

02B8 

322D43 

STA 

T 

032C 

2A1000 

LHLD 

AF' 



DO WHILE T O EOFF, 


02BB 3A2D43 
02BE FEFF 
02C0 CA0D05 


02C3 3A2D43 
02C6 FE41 
02C8 C28003 


LDA T 

CPI OFFH 

JZ #147 

IF T = ALPHA THEN 


STATEMENT « 517 


STATEMENT • 518 


/# CASE 1 */' 


LDA T 

CPI 41H 

JNZ 669 

DOi 

IF LOOKUP! TOKEN, DEFN) = NO T1CN 

; STATEMENT I 520 


STATEMENT I 521 


02CB 

112332 

LXI 

D, DEFN 

02CE 

01A43F 

LXI 

B, TOKEN 

02D1 

CD2410 

CALL 

LOOKUP 

0204 

FEOO 

CPI 

OH 

0204 

C2E202 

JNZ 

670 



CALL PUTTOK! TOKEN), 

0209 

01A43F 

LXI 

B, TOKEN 

02X 

CD750F 

CAa 

PUTTOK, 

02DF 

C37D03 

JMP 

671 



670 




ELSE /# 

DEFINED, 


02E2 2A1400 
02E5 23 
02E6 221400 


02E9 110001 
02EC CDOOOO 
02EF D2FB02 


02F2 01DC01 
02F5 CDE306 


CP = CP ♦ li /* THIS IS THE ONLY PLACE THAT CP 

GETS INCREMENTED */ V 

, STATEMENT i 523 V 

LHLD CP ^ 

INX H ^ 

SHLD CP ^ 

IF CP > CALLSIZE THEN \ 

, STATEMENT I 524 ^ 

LXI D, 100H ^ 

CALL 6P0095 ^ 

JNC 672 N 

DO, \ 

CAa REMARK,!. ( #*♦ ERROR. CW1-STACK OVERFLOW .EOS))i ^ 
, STATEMENT I 526 ^ 

LXI B.4-116H N 

CALL remark: V 


JMP RECOVER 
END, 


CALLST(CP) = AP, 


STATEMENT I 527 

STATEMENT > 528 

STATEMENT » 529 


02FB 

2A1400 

LHLD 

CP 


02FE 

012D40 

LXI 

B,CALLST 


0301 

29 

DAD 

H 


0302 

09 

DAD 

B 


0303 

E5 

PUSH 

H i 

1 

0304 

2A1000 

LHLD 

W 


0307 

EB 

XCHG 



0308 

El 

POP 

H i 

1 

0309 

73 

MOV 

M, E 


030A 

23 

INX 

H 


030B 

72 

MOV 

M, D 




AP = PUSHIEP, ARGSTK, 




i 

SI 

030C 

2A1600 

LHLD 

EP 


030F 

E5 

PUSH 

H i 

1 

0310 

2A1000 

LHLD 

AP 


0313 

EB 

XCHG 



0314 

012336 

LXI 

B, ARGSTK 


0317 

CDE70F 

CAa 

PUSH 


031A 

221000 

SHLD 





CAa PUTTOK! DEFN), 

O' 

031D 

012332 

LXI 

B, DEFN 


0320 

CD750F 

CALL 

PUTTOK 



032F EB 
0330 012336 
0333 CDE70F 
0336 221000 




036E 

010000 

LXI B,BflJ> 



0371 

CDFAOA 

CALL PBSTR 





673: 

541 

4 



PLEV(CP) = Oi 



0374 

2A1400 

LHLD CP 



0377 

012D42 

LXI B.PLEV 



037A 

09 

DAD B 



037B 

3600 

MVI H, OH 

542 

4 



END, 





671: 

543 

3 



END /# IF T * ALPHA 



037D 

C3FF04 

JMP 674 





669 





ELSE 

544 

2 



IF T = LBRACK THEN 



0380 

3A2D43 

LDA T 



0383 

FE5B 

CPI 5BH 



0385 

C2DC03 

JNZ 675 

545 

2 



DOi 

546 

3 



NLB = li 



0388 

212E43 

LXI H, NLB 



038B 

3601 

MVI M,1H 

547 

3 



DO WHILE li 


XCHG 

LXI B, ARGSTK 

CALL PUSH 

SHLD AP 

CAa PUTTOK! TOKEN), /* STACK NAME */ 

. STATEMENT ft 534 

LXI B,TOKEN 

CALL PUTTOK 
CALL PUTCHR!EOS)i 

, STATEMENT ft 535 

HVI C,OFEH 

CAa PUTCHR 

AP = PUSH(EP, ARGSTK AP), 

i STATEMENT ft 536 

LHLD EP 

PUSH H ,1 

LHLD AF' 

XCHG 

LXI B,ARGSTK 

CALL PUSH 

SHLD AF' 

T = GETTOK! TOKEN, MAXTOK); /§ PEEK AT NEXT */ 

. STATEMENT ft 537 

MVI E. 7AH 

LXI B,TOKEN 

CALL GETTOK 

STA T 

CAa PBSTR! TOKEN)! 

, STATEMENT ft 538 

LXI B,TOKEN 

CALL PBSTR 

IF T O LPAREN T)€N /§ ADD 0 IF NOT PRESENT #/ 
, STATEfcNT ft 539 

LDA T 

CPI 28H 

JZ 673 

CAa PBSTR!. BALP), 

; STATEIOT ft 540 


STATEMENT ft 541 


STATEfcNT ft 542 


. t/i 

STATEMENT ft 543 


STATEMENT ft 544 


STATEMENT ft 546 


STATEMENT ft 547 


/* CASE 2 t/ 


T = GETTOK!. TOKEN, MAXTOK); 

, STATEMENT ft 548 


038D 

1E7A 

MVI 

E, 7M 

038F 

01A43F 

LXI 

B, TOKEN 

0392 

CDBBOB 

CALL 

GETTOK 

0395 

322D43 

STA 

T 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 55 


469 


549 

4 




IF T = LBRACK THEN 

$ 

567 

2 



IF T = LPAREN THEN 






STATEMENT « 549 

c 






; STATEMENT t 567 



03<»8 

3A2D43 


LBA T 

o 



03F2 

3A2B43 

LDA 

T 



039B 

FE5B 


CPI 5BH 

> 



03F5 

FE28 

CPI 

28H 



039D 

C2A703 


JNZ @76 

s 



,);f" 

C21804 

JNZ' 

@85 

550 

4 




NLB = NLB + li 

s 

568 

2 



DO 







, STATEMENT 1 550 


569 

3 



IF PLEVIC 

P) 7 THEN 



03AO 

212E43 


LX I H-NLE 







, STATEMENT « 569 



03A3 

34 


I NR M 

N 



03FA 

2A1400 

LHLD 

CP 



03A4 

C3D003 


.IMP @77 

s 



03FD 

012B42 

LXI 

B.PLEV 





@76 





0400 

09 

DAD 

B 






ELSE 




0401 

3E00 

MV I 

A, OH 

551 

4 




IF T = REPACK THEN 

N 



0403 

E€ 

CMP 

M 






i STATEMENT I 551 

s 



0404 

D20DC4 

JNC 

@86 



03A7 

3A2D43 


LBA T 

V 

570 

3 



CALL PUTTOK.(. TOKEN!, 



03AA 

FE5D 


CPI 5DH 







, STATEMENT # 570 



03AC 

C2BF03 


JNZ @78 

N 



0407 

OIA43F 

LXI 

B,TOKEN 

552 

4 




DO, 

s 



040A 

CD750F 

CALL 

PUTTOK 

553 

5 




NLB = NLB - 1. 






@86 







, STATEMENT I 553 


571 

3 



PLEVICP) 

= PLEVICP) ♦ 1. 



03AF 

212E43 


LXI H,NLB 

> 






, STATEMENT 1 571 



03B2 

35 


DCR M 

s 



040D 

2A1400 

LHLD 

CP 

554 

5 




IF NLB = 0 THEN 

v 



0410 

012B42 

LXI 

B.PLEV 






i STATEMENT » 554 




041? 

09 

DAD 

B 



03B3 

7E 


MOV A. h 




0414 

34 

INR 

M 



03B4 

FEOO 


CPI OH 

s 

572 

3 



END, 




03B6 

C2BC03 


JNZ @79 

s 






, STATEMENT 1 572 

555 

5 




GOTO QUIT, 

V 



0415 

C3FF04 

JMP 

@87 






, STATEMENT » 555 






@85 




03B 9 

C3D903 


JMP QUIT 

N 





ELSE 






@7 9 


s 

573 

2 



IF T = RPAREN THEN 

556 

5 




END- 







, STATEMENT 1 573 






, STATEMENT # 556 




0418 

3A2B43 

LDA 

T 



03BC 

C3D003 


JMP @80 

N 



041B 

FE29 

CPI 

29H 





978 


s 



041B 

C27E04 

JNZ 

@88 






ELSE /# END OF ARGUMENT LIST */ 

c 

574 

2 



DO, 


557 

4 




IF T = EOFF THEN 


575 

3 



PLEV(CP) 

= PLEVICP) - li 






. STATEMENT » 557 







, STATEMENT * 575 



03BF 

3A2D43 


LBA T 

s 



0420 

2A1400 

LHLD 

CP 



03C2 

FEFF 


CPI OFFH 

v 



0423 

012B42 

LXI 

B.PLEV 



03C4 

C2D003 


■JNZ @81 




0426 

09 

DAD 

B 

558 

4 




00, 




0427 

35 

DCR 

H 

55° 

5 




CALL REHARM ('*** ERROR EOF IN STRING .EOS) )i 

s 

576 

3 



IF FLEV'CP) > 0 THEN 






I STATEMENT » 559 

v 






, STATEMENT « 576 



03C7 

01FC01 


LXI B.$-1CBH 




0428 

2A1400 

LHLD 

CP 



03CA 

CDE306 


CALL REMARK 

> 



042B 

09 

DAD 

B 

560 

5 




GOTO RECOVER i 

s 



042C 

3E00 

MVI 

A, OH 






. STATEMENT * 560 

v 



042E 

BE 

CMP 

M 



03CD 

C34305 


JMP RECOVER 

o 



042F 

B23B04 

JNC 

@89 

561 

5 




END, 


577 

3 



CALL PUTTOK1 TOKEN), 






, STATEMENT * 561 

N 






, STATEMENT 4 577 





981 


s 



0432 

01A43F 

LXI 

B,TOKEN 





@80 





0435 

CB750F 

CALL 

PUTTOK 





@77 





0438 

C37B04 

JMP 

@90 






CALL PUTTOK! TOKEN), 

> 





@89 







, STATEMENT 4 562 

s 





ELSE /♦ 

END OF ARGUMENT LIST #/ 



03D0 

01A43F 


LXI B, TOKEN 

v 

578 

3 



DO, 




03D3 

CD750F 


CALL PUTTOK 

0 

579 

4 



CALL PUTCHR(EOS), 


END r* EX'-WHILE #/, 


, STATEMENT I 579 


STATEMENT » 563 


, STATEMENT # 564 
QUIT 

03D9 C3FF04 .JMP 982 

975 

END It IF T = LBRACK »/; 

ELSE '* CASE 3 »/ 

IF CP = OFFFFH THEN /♦ NOT IN A MACRO AT ALL 4/ 

STATEMENT t 565 


03DC 

01FFFF 

LXI 

B,OFFFFH 

03DF 

111400 

LXI 

D. CP 

03E2 

CDOOOO 

CALL 

@P0100 

03E5 

B5 

ORA 

L 

03E6 

C2F203 

•JNZ 

CALL PUTTOK( 

@83 

TOKEN), 

03E9 

01A43F 

LXI 

B,TOKEN 

03EC 

CD750F 

CALL 

PUTTOK 

03EF 

C3FF04 

JMP 

@83 

@84 


STATEMENT » 566 


043B 

OEFE 

MVI 

C.OFEH 

043D 

CD320F 

CALL 

PUTCHR 



CALL EVALi ARDSTK, CALLSTICP), 




STATEMENT * 

0440 

012336 

LXI 

B. ARGS T K 

0443 

C5 

PUSH 

c. t 

0444 

2A1400 

j n 

CP 

0447 

012D40 

LXI 

B, CALLST 

044A 

2? 

DAD 

H 

Q44B 

O 9 

DAD 

5 

044C 

E5 

PUSH 

H , 2 

04 4 D 

2A1000 

LHLD 

AP 

0450 

2B 

DCX 

H 

0451 

E3 

XTHL 

, 2 

0452 

4E 

MOV 

C,H 

0453 

23 

I NX 

H 

0454 

46 

mov 

B.M 

0455 

B1 

POP 

D i 2 

0456 

CDC510 

CALL 

E7AL 


/• CASE 5 ♦/ 


/* CASE 4 »/ 


Page 56 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Number 20 


470 



581 4 


AP = CALLSTICP). 


0459 

2A1400 

LHLD 

CP 

045C 

012D40 

LXI 

B.CALLST 

045F 

29 

DAD 

H 

0460 

09 

DAD 

B 

0461 

5E 

MOV 

E.M 

0462 

23 

INX 

H 

0463 

56 

MOV 

D.M 

0464 

EB 

XCHG 


0465 

221000 

SHLD 

AP 



EP = 

ARGSTK(AP). 

0468 

012336 

LXI 

B.ARGSTK 

046B 

29 

DAD 

H 

046C 

09 

DAD 

g 

0460 

5E 

MOV 

E,M 

046E 

23 

INX 

H 

046F 

56 

MOV 

D.M 

0470 

EB 

XCHG 


0471 

221600 

SHLD 

EP 



CP = 

CP - li /* 

0474 

2A1400 

LHLD 

CP 

0477 

2B 

DCX 

H 

0478 

221400 

SHLD 

CF 



END, /* ELSE-DO */ 


f* POP EVA. STACK ♦/ 
STATEMENT ft 581 


STATEMENT ft 582 


GETS DECREMENTED t/ 

i 583 


§?o 

END. /# IF-DO */ 


STATEMENT ft 584 


STATEMENT ft 585 


ELSE /# CASE 6 */ 

IF ((T = COMMA) ClR (T = EQUALS)) AND (PLEV(CP) = 1) THEN 

I* NEW ARGUMENT t/ 

. STATEMENT ft 586 


047E 

3A2D43 

LDA 

T 

0481 

D62C 

SUI 

2CH 

0483 

D601 

SUI 

1 

0485 

9F 

SBB 

A 

0486 

P5 

PUSH 

F“=>W 

04$ 7 

3A2B4: 

LDA 

T 

04 6A 

D63D 

SUI 

SDH 

:48C 

5601 

SUI 

1 

043E 

ac 

SBB 

A 

048F 

Cl 

POP 

B 

04% 

48 

MOV 

C.B 

*491 

B1 

ORA 

C 

0492 

2A14-V. 

LHLD 

CP' 

04% 

012D42 

LXI 

B.PlEV 

r>4V£ 

09 

DAD 

B 

04*5- 

F5 

PUSH 

PSW 

049A 

"E 

MOV 

A.M 

.>498 

D601 

SUI 

1H 

04 ?D 

060! 

SUI 

1 

049F 

9F 

IBB 

A 

04A0 

Cl 

PDF’ 

B 

04A1 

48 

MOV 

C.B 

04A2 

A1 

ANA 

C 

04A3 

IF 

RAR 


04A4 

D2C004 

JNC 

§92 



DO 




CALL PUTCHR(EOS); 

04A7 

r €FE 

mi 

C.OFEH 

04A* 

rp320F 

CALL 

PUTCHR 



» = PUSHtEP. AKGSTK 

04AC 

2A1600 

LHLD 

EP 

04AF 

E5 

PUSH 

H 

04B0 

2A1000 

LHLD 

AP 

04B3 

EB 

XCHG 


04B4 

012336 

LXI 

B.ARGSTI 

04B7 

CDE70F 

CALL 

PUSH 

04BA 

221000 

SHLD 

AF 



END. 


04BD 

C3FF04 

JMP 

§93 




IF Mi s 26H) 

hND 'BUF'BP* = ODHj AND !BUF(BP+ll = OAHM THEN 





, STATEMENT ft 591 

04C0 

3A2D4? 

LDA 

T 


04C3 

D626 

SUI 

26H 


04C5 

D601 

SUI 

1 


0407 

9F 

SBB 

A 


04C8 

2A1200 

LHLD 

BP 


04CB 

012210 

LXI 

B.BUF 


04CE 

09 

DAD 

B 


04CF 

F5 

PUSH 

PSW 

■ 1 

04D0 

7E 

MOV 

A.M 


04D1 

D60D 

SUI 

ODH 


04D3 

D601 

SUI 

1 


04D5 

9F 

SBB 

A 


04D6 

Cl 

POP 

B 

. 1 

04D7 

48 

MOV 

C.B 


04D8 

A1 

ANA 

C 


04D9 

2A1200 

LHLD 

BP 


04DC 

012310 

LXI 

B. BUF+1H 


04DF 

09 

DAD 

B 


04E0 

F5 

PUSH 

PSH 

. 1 

04E1 

7E 

MOV 

A.M 


04E2 

D60A 

SUI 

OAH 


04E4 

D601 

SUI 

1 


04E6 

9F 

SBB 

A 


04E7 

Cl 

POP 

B 

i 1 

04E8 

48 

MOV 

C.B 


04E9 

A1 

ANA 

C 


04EA 

IF 

RAR 



04EB 

D2F904 

JNC 

§94 




BP = BP ♦ 2i 1* 

'h' (CONTINUATION CHARACTER) 





GETS THROWN AWAY ♦/ 





. STATEMENT ft 592 

04EE 

2A1200 

LHLD 

BP 


04F1 

23 

INX 

H 


04F2 

23 

INX 

H 


04F3 

221200 

SHLD 

BP 


04F6 

C3FF04 

JMP 

§95 




§94 





ELSE 


/# CASE 8 #/ 



CALL PUTTOKL 

TOKEN) i 

/* JUST STACK IT */ 





. STATEMENT ft 593 

04F9 

01A43F 

LXI 

B.TOKEN 


04FC 

CD750F 

CALL 

PUTTOK 



T = GETTOKf TOKEN, MAXTOR). 





04FF 

1E7A 

HVI 

E.7W 

1 


0501 

01A43F 

LXI 

B, TOKEN 



0504 

CDBBOB 

CALL 

GETTOK 


s 


0507 

322D43 

STA 

T 


s 

595 

2 

END /§ 

DO-WHILE 

*/i 

1 

s 


050A 

C3BB02 

JMP 

§146 


s 



§147 




s 

596 

1 

IF CP O OFFFFH THEN 


s 


050D 

01FFFF 

LXI 

B. OFFFFH 


s 


0510 

111400 

LXI 

D.CP 




0513 

CDOOOO 

CALL 

§P0100 

STATEMENT ft 588 


0516 

B5 

ORA 

L 



0517 

CA2305 

JZ 

§96 


STATEMENT ft 589 


STATEMENT ft 594 


STATEMENT ft 595 


STATEMENT ft 596 


CALL REMARK' ('##* ERROR UNEXPECTED EOF .EOS)). 

, STATEMENT ft 598 

LXI B.$-304H 

CALL remark: 

GOTO RECOVER, 


$96: 

IF NOT INTERACTIVE THEN 


STATEMENT ft 599 


STATEMENT ft 600 


/* CASE 7 */ 


, STATEMENT ft 601 
INTERACTIVE 


Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 57 


471 



CALL CLOSE'INPAFT, STATUS); 

. STATEMENT I 602 


052A 

2A0A00 

LHLD 

INPAFT 

052D 

44 

MOV 

B,H 

052E 

4D 

MOV 

C,L 

052F 

110E00 

LXI 

D, STATUS 

0532 

CDOOOO 

897 

CALL 

CLOSE 


CALL CLOSE(SAVAFT. 

STATUS), 

0535 

2A0C00 

LHLD 

SAVAFT 

0538 

44 

MOV 

B. H 

0539 

4D 

MOV 

CiL 

053A 

110E00 

LXI 

D, STATUS 

053D 

CDOOOO 

CALL 

CLOSE 


STATEMENT I 603 


, STATEMENT » 604 


/* RECOVER TRIES TO BACK UP THE CRITICAL POINTER’S TO PREVIOUSLY 
VIABLE VALUES IF 32 FAILURES OCCUR IN SUCCESSION THEN THESE 
POINTERS. ARE ’SET TO PROGRAM-ENTRY INITIAL VALUES t/ 


0540 CDOOOO CALL EXIT 

RECOVER /» NB THIS IS NOT A PROCEDURE #/ 
i STATEMENT I 605 


0543 

310000 

LXI 

SP, 8STACKS0RIGIN 

0546 

3A2220 

LDA 

INTERACTIVE 

0549 

IF 

RAR 


054A 

D27306 

JNC 

898 


IF INTERACTIVE THEN 
DO; 

DECLARE (J, K) BYTE, I LITERALLY '31'i 

AP = AP$AV(I); /* TOPS OF STACKS POP TO THEIR POINTERS #/ 
i STATEJ€NT • 608 
LHLD APSAV+3EH 




0550 

221000 

SHLD 


609 

2 



CP = CPSAV(I), 






. STATEICNT 1 609 



0553 

2AA13E 

LHLD 

CPSAV+3EH 



0556 

221400 

SHLD 

CP 

610 

2 



EP = EPSAV(I); 






; STATEMENT • 610 



0559 

2AE13E 

LHLD 

EPSAV+3EH 



055C 

221600 

SHLD 

EP 

611 

2 



PLAST = PLASTSAV(I); 






i STATEMENT « 611 



055F 

2A213F 

LHLD 

PLASTSAV+3EH 



0562 

221C00 

SHLD 

PLAST 

612 

2 



HAST = TLASTSAV(I); 






, STATEMENT t 612 



0565 

2A613F 

LHLD 

TLASTSAV+3EH 



0568 

222000 

SHLD 

TLAST 

613 

2 



STACKPTR = 

STKPTRSAV(I) 






, STATEMENT I 613 



056B 

2AA13F 

LHLD 

STKPTRSAV+3EH 



056E 

F9 

SPHL 


614 

2 



DO J * 0 TO 30, /# ALL VALUES HOVE UP ONE PLACE 






, STATEMENT « 614 



056F 

21F843 

LXI 

Hi J 



0572 

3600 

HVI 

M, OH 





8150: 




0574 

3E1E 

HVI 

A, 1EH 



0576 

21F843 

LXI 

H.J 



0579 

BE 

CMP 

M 



057A 

DA4306 

X 

8151 

615 

3 



K = I - 

J; 






, STATEMENT * 615 



057D 

21F843 

LXI 

Hi J 



0580 

3E1F 

HVI 

A, 1FH 



0582 

96 

SUB 

M 



0583 

23 

INX 

H 



0584 

11 

MOV 

H. A 

616 

3 



AF’SAV(K) 

= APSAV(K-l); 






, STATEMENT 1 616 



0585 

3D 

DCR 

A 



0586 

4F 

MOV 

Ci A 



0587 

0600 

HVI 

B,0 



0580 

21233E 

LXI 

H.AF’SAV 

Page 58 


Dr. 1 

Dobb's Journal of Computer Calisthenics . 


058C 

09 

DAD 

£ 

058D 

09 

DAD 

£ 

058E 

E5 

PUSH 

H , 1 

058F 

2AF943 

LHLD 

K 

0592 

2600 

HVI 

HiO 

0594 

01233E 

LXI 

B, APSAV 

0597 

29 

DAD 

H 

0598 

09 

DAD 

B 

0599 

E3 

XTHL 

- 1 

059A 

4E 

MOV 

C.M 

059B 

23 

INX 

H 

059C 

46 

MOV 

B.M 

059D 

El 

POP 

H , 1 

059E 

71 

MOV 

HiC 

059F 

23 

INX 

H 

05A0 

70 

MOV 

CPSAV(K) = 

M, B 

CPSAVik-l). 

, STATEMENT ■ 

05A1 

3AF943 

LDA 

k 

05A4 

3D 

DCR 

A 

05A5 

4F 

MOV 

C. A 

05A6 

0600 

HVI 

BiO 

05A8 

21633E 

LXI 

H,CPSAV 

05AB 

09 

DAD 

B 

05AC 

09 

DAD 

B 

05AD 

E5 

PUSH 

H i 1 

05AE 

2AF943 

LHLD 

K 

05B1 

2600 

HVI 

H, 0 

05B3 

01633E 

LXI 

B-CPSAV 

05B6 

29 

DAD 

H 

05B7 

09 

DAD 

B 

05B8 

E3 

XTHL 

; 1 

05B9 

4E 

MOV 

C,M 

05BA 

23 

INX 

H 

05BB 

46 

MOV 

B.M 

05BC 

El 

POP 

H ; 1 

05BD 

71 

MOV 

H,C 

05BE 

23 

INX 

H 

05BF 

70 

MOV 

EPSAV(K) = 

M,B 

EPSAV(K-l); 

; STATEMENT 1 

05C0 

3AF943 

LDA 

K 

05C3 

3D 

DCR 

A 

05C4 

4F 

MOV 

C. A 

05C5 

0600 

HVI 

B.O 

05C7 

21A33E 

LXI 

H,EPSAV 

05CA 

09 

DAD 

B 

05CB 

09 

DAD 

B 

05CC 

E5 

PUSH 

H ; 1 

05CD 

2AF943 

LHLD 

K 

05D0 

2600 

MVI 

H, 0 

05D2 

01A33E 

LXI 

B, EPSAV 

05D5 

29 

DAD 

H 

05D6 

09 

DAD 

B 

05D7 

E3 

XTHL 

. 1 

05D8 

4E 

MOV 

C,M 

05D9 

23 

INX 

H 

05DA 

46 

MOV 

B,M 

05DB 

El 

POP 

H , 1 

05BC 

71 

MOV 

M,C 

05DD 

23 

INX 

H 

05DE 

70 

MOV M. B 

PLASTSAV(K) = PLASTSAV(K-l), 

, STATEMENT 1 

05DF 

3AF943 

LDA 

K 

05E2 

3D 

DCR 

A 

05E3 

4F 

MOV 

Ci A 

05E4 

0600 

MVI 

B.O 

05E6 

21E33E 

LXI 

H,PLASTSAV 

05E9 

09 

DAD 

B 

05EA 

09 

DAD 

B 

05EB 

E5 

PUSH 

H , 1 

05EC 

2AF943 

LHLD 

K 

05EF 

2600 

MVI 

HiO 

05F1 

01E33E 

LXI 

B,PLASTSAV 

05F4 

29 

DAD 

H 

05F5 

09 

DAD 

B 

05F6 

E3 

XTHL 

i 1 

05F7 

4E 

MOV 

C,M 

05F8 

23 

INX 

H 

05F9 

46 

MOV 

B.M 

05FA 

El 

POP 

H i 1 

05FB 

71 

MOV 

HiC 

05FC 

23 

INX 

H 

05FD 

70 

MOV 

M,B 


Number 20 


472 



PROGRAMMABLE I/O CONTROLLER 


t>2 0 


TLASTSAV1M 


TLASTSAV(k-l), 

, STATEMENT I 620 


422 3 


623 2 


624 2 


625 2 


626 


627 2 


628 2 


05FE 

3AF°43 

IDA 

k 

0601 

30 

OCR 

A 

0602 

4F 

MOV 

C> A 

0603 

0600 

HVI 

B. 0 

0605 

21233F 

LSI 

H, TLASTSAV 

0608 

0 * 

DAD 

B 

060« 

0 ? 

DAD 

B 

060A 

E5 

PUSH 

H , l 

060B 

2AF g 43 

LHLD 

K 

060E 

2600 

HVI 

Hi 0 

OolO 

01233F 

LXI 

B,TLASTSAV 

■0613 

29 

DAD 

H 

0614 

0 ? 

DAD 

B 

0615 

E3 

XTHL 

. 1 

0616 

4E 

MOV 

C.M 

0617 

23 

INX 

H 

0618 

46 

MOV 

B.M 

0610 

El 

POP 

H i 1 

061A 

71 

MOV 

MiC 

061B 

23 

INX 

H 

061C 

7 0 

MOV 

H,B 



STkPTRSAV(K) = STkPTRSAV(K-l). 




, STATEMENT • 621 

061D 

3AF943 

LDA 

K 

0620 

30 

DCR 

A 

0621 

4F 

MOV 

C. A 

<>622 

0600 

MVI 

B.O 

0624 

21633F 

LX I 

H,STkPTRSAV 

0627 

0 * 

DAD 

B 

0628 

09 

DAD 

B 

062? 

E5 

PUSH 

H ■ 1 

062A 

2AF*43 

LHLD 

K 

0620 

260*) 

MVI 

H, 0 

062F 

01633F 

LXI 

B.STKPTRSAV 

0632 

29 

DAD 

H 

0633 

09 

DAO 

B 

0634 

E3 

XTHL 

i 1 

0635 

4E 

MOV 

C.M 

0636 

23 

INX 

H 

0637 

46 

MOV 

B.M 

0638 

El 

POP 

H , 1 

063* 

71 

MOV 

H,C 

063A 

23 

INX 

H 

063B 

70 

MOV 

M.B 



END /♦ DO-LOOP */ 




, STATEMENT 1 622 

063C 

21F843 

LXI 

H.J 

063F 

34 

m 

M 

0640 

C27405 

JNZ 

8150 



ei5i 




It BOTTOM OF DEQUES GET FROGRAM-ENTRY INITIW. ’ 



CPSAV(O). 

PLASTSAV(O). TLASTSAV(0) = 0FFFFH, 




. STATEMENT 1 623 

0643 

21FFFF 

LXI 

H, 0FFFFH 

0646 

22633E 

SHLD 

CPSAV 

0649 

22E33E 

SHLD 

PLASTSAV 

064C 

22233F 

SHLD 

TLASTSAV 



APSAV'0), 

BP- EPSAV(O) = 0; 




, STATEMENT 1 624 

064F 

210000 

LXI 

H. OH 

0652 

22233E 

SHLD 

APSAV 

0655 

221200 

SHLD 

BP 

0658 

22A33E 

SHLD 

EPSAV 



STACKPTR = 

= STKSAVOi 




, STATEMENT « 625 

065B 

2A1E00 

LHLD 

STKSAV0 

065E 

F9 

SPHL 




BUF(BP) = 

EOS; 




, STATEMENT » 626 

065F 

2A1200 

LHLD 

BP 

0662 

012210 

LXI 

B.BUF 

0665 

09 

DAD 

B 

0666 

36FE 

MVI 

M, 0FEH 



START = 0; 

. STATEMENT 1 627 

06.68 

21A33F 

LXI 

H,START 

066B 

3600 

MVI 

M. OH 



GOTO RESTART; 




, STATEMENT » 628 

0660 

C3B002 

JMP 

RESTART 


News Release Received: 77 Aug 25 

I 0 R announces the PI04800, a six port programmable I/O control¬ 
ler. The PI04800 is a 5 X 10 ench printed circuit board, designed to 
meet a wide range of user needs. All data transfer is parallel; a single 
input or output being accomplished by executing one processor instruc¬ 
tion. It is compatible with the S-100 bus. 

The controller will interface the computer to printers, keyboards, 
CRTs or any other parallel device with or without handshaking strobes. 
It may be operated with or without interrupts, in either the isolated 
I/O or in the memory-mapped mode. 

The PIO4800 contains two channels with three different modes for 
each channel. Each channel may be programmed for up to three eight 
bit ports, which may be operated simultaneously. Whether a port is to 
be an input, an output, or a bi-directional port is determined by a 
control word. This control word determines the mode of each port, the 
direction, strobes, and interrupt capabilities. 

Price of the PI04800 kit is $149. Dealer inquiries send attention 
Dept. D-200. 

For further information contact: I 0 R, Box 28823, Dallas, Texas 
75228, (214) 358-2671. 


EXPANDOR’S BLACK BOX PRINTER 


News Release Received: 77 Sept 23 

Expandor, Inc. has announced a printer for the computer hobbyist. 
The BLACK BOX Printer is a low cost ($396), fully assembled, 80 
column, 10 character per second impact printer. Utilizing a print 
cylinder (not a dot matrix) containing a 64 ASCII character set, up to 
three copies are possible on tractor (or pressure) fed 8’/4" wide paper. 
The printer is shipped ready to connect to (almost) any microprocessor 
parallel port. The printer has a parallel interface included, requiring 7 
data bits, a ready and a strobe. AC power is supplied for the printer, 
but the TTL logic interface requires +8 to +10 VDC from the micro. 

Full documentation is supplied with the printer including trouble 
shooting guides, installation and maintenance instructions, printer and 
interface schematics, plus instructions on how to wire up to the 1-0 
parallel port. Expandor states that most users are able to service their 
own printer with the documentation supplied. However, Expandor 
does in-shop service, or provides parts to the user. A 90 day warranty 
is offered. 

The BLACK BOX Printer is only 4.5" H, 13" W, & 10" D, weighing 
11 lbs, which makes it easily transported. The printing mechanism is a 
time-proven, reliable, long life design. The printer may be pulsed 
character by character with the last character and line visible. The only 
option is the base and cover for $29.95. Otherwise, the printer is 
shipped complete — ready to connect and use. Detailed literature is 
available from Expandor, Inc., 612 Beatty Road, Monroeville, PA 15146, 
or by phoning (412) 373-0300. 


629 2 END; /» IF-DO ♦/ 

, STATEMENT I 629 

0670 C37606 JMP 899 

898 
ELSE 

630 1 GOTO LOGOFF, 

, STATEMENT I 630 

0673 C32A05 JMP LOGOFF 

899 

I* END RECOVER ♦/ 


631 1 END KAPIAR4M0DULE, 

i STATEMENT I 631 

0676 FB El 

0677 76 HLT 


MODULE INFORMATION: 

CODE AREA SIZE = 15B9H 5561D 

VARIABLE AREA SIZE = 43FAH 17402D 
MAXIMUM STACK SIZE = 0014H 20D 

903 LINES READ 
0 PROGRAM ERROR!S) 

END OF PL/M*80 COMPILATION 




Number 20 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 59 


LIGHT THRUPUT ON PAPER TAPE 



11 th HOUR INFO ON 8080 PILOT 

Dear Jim, Received: 77 Nov 3 

On page 24 of the August issue there is an unfortunate pub¬ 
lication of a letter 1 wrote you in May, describing what at that 
time I thought would be the arrangements by which those 
interested in PILOT could get a tape of the object code as pub¬ 
lished in DDJ. Prior to publication of the Guide and the 
assembly listing (April and May issues but actually later than 
the May letter), I called in the correct information and that is 
what was included in the original publication. 

Ah well, bugs lie in wait and are not easily stamped out 
completely. Machine-readable versions of various types can be 
obtained from either: 

PI LOT-8080 

Computer Technology Branch 

Lister Hill Center, National Library of Medicine 

8600 Rockville Pike 

Bethesda, MD 20014 

(301)496-1647 

or: The PILOT Exchange 
P.O. Box 354 
Palo Alto, CA 94301 
(415) 326-4039 

I am working with Processor Technology to create an 
extended SOL/CUTER version of PILOT, having cursor and 
tape controls, editing, etc. — close to being finished. They will 
distribute this version. 

After 13 years of being Acting Director or Director of the 
Computer Center, I have returned to being a Professor full 
time. Please note my new address and phone. 

John A. Starkweather, Ph.D. 

Langley Porter Institute 
University of California 
San Francisco, CA 94143 
(415) 681-8080, ext 464 


Dear Jim: Received: 77 Nov 28 

In his letter published in the DDJ #18, Phil Karn mentions 
problems regarding semi-transparent paper tape. I wonder if 
he has tried using polarized light. Two inexpensive pieces of 
polarizing material, one above the tape and one below, might 
solve the problem. Light would still filter through the tape, 
but would be de-polarized in the process and would be 
rejected by the second polarizer. Light passing through the 
holes would still be polarized and be picked up by the sensors. 
I haven’t tried it, but it should work. (Are there people still 
using paper tape?) 

Sincerely, 

Jim Day 17042 Gunther St. 

Granada Hills, CA 91344 


DATA ENCRYPTION HARDWARE GETS NBS 
VALIDATION 

news release Received: 77 Oct 31 

A small but vital piece of hardware containing a microelec¬ 
tronic chip only 1 cm square has been tested and validated 
at the Commerce Department’s National Bureau of Standards 
(NBS)—marking the first NBS validation of a commercial 
implementation of the Federal Data Encryption Standard 
published early this year. 

The device is capable of enciphering or deciphering 64 bits 
of computer data in 40 microseconds. The metal oxide semi¬ 
conductor device was developed by Rockwell International’s 
Collins Group. 

Other companies, among them IBM and Motorola, Inc., 
have announced their intention to build data encryption hard¬ 
ware for NBS validation under the standard, designed for use 
by Federal departments and agencies in protecting valuable 
or sensitive computer data during transmission. 

Additional standards are being developed for applying 
data encryption to communications and data storage systems. 
Besides these anticipated uses, according to Dr. Dennis K. 
Branstad, NBS project leader for the data encryption standard, 
are applications in personal identification systems and in visa 
validation procedures. “The devices will be commercially 
available for use outside the government in operations 
requiring computer security, as in electronic fund transfers, 
credit card verification, and proprietary data transfer”, 
Branstad notes. 

Electronic encryption devices can be imbedded in computer 
terminals, communications processors, cash issuing machines 
and identification mechanisms. Stand-alone devices that have 
high physical security as well as electronic effectiveness are 
being built with data encryption features. 

Capabilities of the NBS Computer Security Laboratory- 
part of the Bureau’s Institute for Computer Sciences and Tech¬ 
nology—are based on sophisticated equipment including: a 
data encryption standard device designed and implemented at 
NBS, a microprocessor, a minicomputer, and the necessary 
interfaces and software for testing a variety of commercial 
devices. 

One of the validation tests consists of 12 million encipher¬ 
ing and deciphering operations using random data and keys. In 
the microprocessor, results of a commercial device can be 
tested against results- of the NBS device. The 12 million 
tests can be performed in nine hours. 

Upon successful completion of the tests, a validation 
certificate is issued to the manufacturer. The certificate 
allows the manufacture and sale of identical devices to 
Federal agencies desiring to use the standard. 


Number 20 

474 


Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Box E, Menlo Park, CA 94025 


Page 63 



Index 


This is an index to articles and programs, but some letters have also been indexed. References are of the form 
issue number/page numbers. Those in normal type are references to programs. References separated by a 
comma are connected in some way; those separated by a semicolon are completely distinct. Unless otherwise 
marked, a program is in assembly language. Except for author entries the processor type is marked or clear from 
the context. In general, a program can be found by author, processor type, and program type. 

The following table gives the correspondence between month/year and issue numbers. 


Vol 1- 1976 Vol2- 1977 Vol 3 — 1978 


January 

1 

11 

21 

February 

2 

12 

22 

March 

3 

13 

23 

April 

4 

14 

24 

May 

5 

15 

25 

June/July 

6 

16 

26 

August 

7 

17 

27 

September 

8 

18 

28 

October 

9 

19 

29 

November/December 

10 

20 

30 


1802. see COSMAC 
6502 

arithmetic 

floating-point 7/17-19, errata 10/57 
trig functions (extensions to KIMATH) 20/15-21 
article 

programming tricks 28/29 
cassette interface 27/31-33 
disassembler 8/22-25 

(BASIC) 21/6, errata 23/3, 27/39 
games 

lunar lander 7/22-25 
mastermind 8/26-27 
text editor 29/4-12 
utilities 

breakpoint routine 3/17-19, errata 8/33 
debugger 19/42-44 
memory test 17/23; 21/4-5 
monitor 7/20-21 

opcode decoder 17/20-22, 19/42-44; 22/5-7 
relocator 14/30-31 
string output 8/33, 10/50, 12/8 
see also Apple-II; KIM-1; BASIC, tiny: Pittman 6502 

6800 

articles 

LISP 28/24-25 

SWTPC I/O control interface 17/35-37 
Resident Assembler 8/19-21 
programming tricks 6/19-10; 29/3 
disassembler 13/30-33 


8080 emulator 28/4-18 

GPM (macroprocessor) 20/22-29 

graphics 16/19-20 

interface to IEEE 488 bus 16/31-55 

utilities 

display test 26/30 
memory clear 29/43 
memory test 5/9; 25/28-33 
timer routines 9/21 

see also SWTPC; BASIC, tiny: Pittman 6800 
8080 

arithmetic 

multi-precision 13/15-23 
expression evaluator 29/34-40 
articles 

BASEX (language) 30/26-31 + 

8080 emulator (on 6800) 28/4-18 
Intel-NEC chip differences 10/14-15 
programming tricks 6/9-10; 28/29 ; 29/3 
disassembler 12/30-43, 17/15 ; 21/38-46; 27/4-18 

(BASIC) 13/25-29 
games 

button button 6/38-39 
chase (a dot) 10/58-59 
life 10/60; 24/10-11 
oops (line drawing) 9/30 
unizap (teaser) 5/10-11 
see also games: chase (by robots) 
graphics, see graphics: 8080 



language; 

ACT (macroprocessor) 24/27-46, (PL/M) 23/20-45 
BASIC, see BASIC 

CASUAL 10/19-32, 72/4, 12/44-45 

KAPIAR (macroprocessor) 20/31 -59, errata 23/3 

LISP 30/4-11 

MINOL 4/9-17 errata 6/36, 7/32 
PILOT, see PILOT: 8080 
miscellaneous 4/5;8/12;8/18 
music program 2/6-7, 3/6, 8/32-33, 16/21 
operating system 

Kernel 18/20-40 
text editor 6/13-26 
utilities 

backspace routine for display 19/18 
binary tree routines 30/15-17 
bootstrap 6/8 

compactor (for BASIC programs) 9/31 

debugger 9/26-29 

diskette copier (ISIS) 30/40-41 

disk file dumper (Northstar) 28/38-41 

drivers 

disk 12/12-17 
display 2/34;30/48-49 
modem 26/4-16 
loader 3/16, 7/31 
memory 

clear 8/32-33 

dump 26/18-23; 27/4-18; (vocal) 28/42-46 
test 8/32-33 
monitor 4/18-32 

reformator (for assembler programs) 6/10 
relocator 13/8-9, 22/14-20 
sort (quicksort) 24/20 
status push/pop routines 29/3 
word processor 29/18-29 
see also H-8; Microsoft; Mits; Polymorphics; 

Processor Technology; SOL 

8086 

description of 27/19-21 


Absbire, Jim 10/52-53 

accounting program (BASIC) 19/36-41 

acoustic coupler, see modem 

ACT (macroprocessor) (PL/M) 23/20-45, (8080) 24/27-46 

Agoston, Max K. 18/20-40 

Akingbehin, Kiumi 29/4-12 

Alevy, Gary 12/28-29 

Alexander, Mark 10/34 -50 

Allen, Dave 16/7 

Allison, Dennis 1/1 -12;2/4-5; 13/34 35; 29/13-15 

Anderson, James 29/30-33 

Anderson, Ken 25/17-20 

APL. see also EMPL 

APL Core Project 17/18-19 

Apple-ll (6502) 

utilities for BASIC 
renumber 23/4-9 
append 23/4-9 

erased program recoverer 26/31-33 
see also 6502, KIM-1 
arithmetic 

binary calculator (KIM-1) 23/13-15 
expression evaluator (8080) 29/34-40 (BASIC) 6/11-12; 
10/52-53 

floating-point (6502) 7/17-19, errata 10/57 
miscellaneous functions (BASIC) 29/13-15 
multi-presicision (8080) 13/15-23 


square root routine (algorithm) 13/23 
trig functions (extension to KIMATH) (6502) 20/15-21 
see also number systems: conversions 
Armstrong, Arthur 19/28-29 
Arnold, John 1/13-17, 2/13-31 
Arnold, Mark 2/8-12 
Assembler, 6800 Resident 
article on 8/19-21 


Barber, Jerry 11/8-62 
barcodes 14/36-43 
BASEX (language) 30/26-31 + 

BASIC 

criticisms of 2/4-5; 30/18+ 
games in. see games 

LLL (Lawrence Livermore Labs) (8080) 11/8-62 
miscellaneous functions (BASIC) 29/13-15 
tiny 

design and history 1/1-12 

Denver (F.J. Greeb) (8080) 3/20-30, errata 8/34 

Palo Alto (Lichen Wang) (8080) 5/12-15, 6/35 

extensions 12/6-17; 15/6; 19/18; 26/34-141; 29/3 
Pittman 6502 

extensions 30/32-33 
Pittman 6800 

extensions 9/23; 12/5; 12/7 
Texas (Whipple/Arnold) (8080) 1/14-17; 2/13-31 
extensions 2/34; 6/34; 8/30-31 
see also CASUAL; FOCAL; MINOL; NIBL; SCELBAL 
and under manufacturer's names ' 

Baum, Allen 8/22-25 
Baunach, S.C. 16/31 -55 
benchmarks (BASIC) 15/8 
binary tree routines (8080) 30/15-17 
black box, computer as 14/34-35 
Boaz. Ray 5/9 

book reviews: 9/36; 11/15; 11/62; 14/46 

bootstrap (8080) 6/8 

Borgerson, Mark J. 7/29-30 

Boute, R.T. 22/46 

Bowles, Kenneth L. 23/16-19 

Bradshaw, Jack 7/20-21 

breakpoint routine (6502) 3/17-19, errata 8/33 
(KIM-1) 16/25-27 

Bridge, Theodore E. 20/12-13; 26/24-27; 30/12-14 
Britton, Keith 30/34-39 
Broom, J. 7/8-9 

Broucke, R. 16/12+; 76/73-74;16/17-19 
Buchanan, Martin 9/32-35. 10/54-55. 13/37 
bus 

IEEE 488 16/31-55 
S-100 7/8-9;25/40-46 
STD 30/34-39 
business software 

accounting program (BASIC) 19/36-41 
calculator, see arithmetic 

calculator chip, interface to micro 1/18, errata 7/16 
cassette 

interface, modem as 10/7, 14/6-7, 19/5 
interface (6502) 27/31-33 
I/O (6502) 26/24-27,29-47 
CASUAL (8080) 10/19-32, 12/4. 12/44-45 
Cecil, Alex 23/20-45. 24/27-46 
CHAOS (operating system) 26/3, 27/3 
Chapman, David 30/78+ 

Christensen, Ward 12/30-43 
Cline, Arthur W. 23/11-12 
Coats, Jack O. 3/16 



codes & cyphers 7/12-15; 8/35-36 ; 9/16-18; 12/9-10; 
(BASIC) 15/9 

Cohen, Harvey A. 13/12-13; 24/10-11 

Comer, Edward I. 12/11 

compactor (for BASIC programs) (8080) 9/31 

compiling, article on 25/4-16 

computer control of tape deck 8/3-6 

computer crime bill 28/36-37 

COSMAC (1802) 

article on 15/34-44 
utilities 

I/O, monitor, music, timer 19/30-35 
CP 1600 11/3+ 

CP/M (operating system) 4/5 
CRT. see display 

curve-fitting routine (FOCAL) 30/12-14 

Dahl, Aubrey 28/20-23 
Data-Boy^^ (speech digitizer) 29/30-33 
data communication, see networks 
Dazzler, TV. see graphics: 8080: dazzler 
DEAFNET 17/10 
debugger 

for 6502 19/42-44 
for 8080 9/26-29 
for Z-80 24/12-18 
delivery delays, report on 19/6-9 
Denney, D. 7/8-9 
Dickenson, John 11/8-62 
Digicast™ Project 29/16-17 
Dinely, M.G. 13/15-23 
disassembler 

for 6502 8/22-25; (BASIC) 21/6, errata 23/3, 27/39 
for 6800 13/30-33 

for 8080 1 2/30-43, 17/15 ; 21/38-46; 27/4-18 
(BASIC) 13/25-29 
for Z-80 (BASIC) 26/42-44 
disk, floppy 

diskette copier (8080/ISIS) 30/40-41 
file dump (8080/Northstar) 28/38-41 
interface and driver (8080) 12/12-17 
displays 

plans for display board 6/30-33 

ideas for 6/28; 10/8; 12/4; 15/17; 16/11 

utilities 

backspacer (8080)19/18 
driver (8080) 2/34; 30/48-49 
tester (6800) 26/30 
Dompier, Steve 2/6-7 

Eaton, John 20/15-21; 23/13-15 
Eckard, Royce 11 /8-62 

EDITHA (machine-code editor) (6502) 25/34-39 

editor, machine-code 25/34-39 

editor, text, see text editor 

Elizondo, Ed 27/41 

Elliott, Dan 12/24 

Emerson, Richard B. 19/15-17; 26/18-23; 27/27-30 

EMPL 14/12-16; 16/11 

emulator (of 8080 on 6800) 28/4-18 

Espinosa, Chris 8/33 

expression evaluator, see arithmetic 

F8 

FD8 disk system, modifications to 18/44 
Ferguson, Mickey E. 12/7 
Finkel, LeRoy 7/36-37 

Fisher, Eugene R. 9/26-29; 11/8-62; 12/12-17 
floating-point, see arithmetic 


FOCAL (FCL65E version) 30/12-14 

Formaniak, Peter G, 13/10-11 

FORTH 25/21-27; 28/26-27;28/28 , 30/44-46 

French, Gordon 22/22-39 

Fullmer, Howard 25/40-46 

Fylstra, David Jon 17/10 

Gabrielson, Mike 24/20; 27/19-21 ; 29/34-40; 30/15-1 7 
games 

acey-ducey (BASIC) 7/26-27 
button button (8080) 6/38-39 
chase 

(a dot) (8080) 10/58-59 
(by robots) for (8080/VDM) 15/10-17 
errata 19/20 
modifications 

impatient robots 16/30 
real time 17/26 
to Poly VTI 17/27-29 
proper credit 18/41 
rewrite for (8080/Dazzler) 22/30-41 
life 

(BASIC) 1/13; 16/12+ 

(8080) 10/60; 24/10-11 
(FORTH) 25/24 
(STRUBAL) 28/28 
further references 17/24 
lunar lander (6502) 7/22-25 
mastermind (6502) 8/26-27 
number guess (STRUBAL) 23/10 
oops (8080) 9/30 
slots (BASIC) 7/26-27 
stars (BASIC) 7/26-27 
teaser (brain teaser, unizap, shooting stars) 

(8080) 5/10-11; (BASIC) 7/29-30; 12/11 
tiny trek (MINOL) 6/37, errata 7/31 
trap (BASIC) 7/26-27 

zapp the moon man (CASUAL) 10/24; (BASIC) 12/24 
Garetz, Mark 7/22-25 
Gaugler, Gary 28/4-18 
Gerhold, George 27/46-47 

Gordon, H.T. 12/8; 17/20-22. 19/42-44; 22/5-7; 25/34-39; 
28/29 

GPM (macroprocessor) (8080) 20/22-29 
graphics 
6502 

GT6144 14/32; 30/32-33 
6800 

oscilloscope 16/19-20 

8080 

dazzler 19/21 -27; 22/22-29; 22/30-41 
P.T. VDM 8/28-29; 16/28-30; 18/8-19 
Poly VTI 13/12-13; 19/28-29; (BASIC) 16/17-19 
hardware 20/6-8; 26/41 
Graves, Rod 13/41-44 
Greeb, F.J. 3/20-30; 6/13-26 
Greenlaw, Richard 27/4-18 
Gruhn, David 12/9-10 

H-8 

bad review 19/10-13, retraction 21/3 , parody 21/5 
reviews 20/9-11 ; 30/22-25 
Hahn, Harvey E, 3/15 
Hancock, Us 24/12-18; 27/22-26 
handicapped 16/4; 17/10 ; 18/7 
Happy Udy 1/5-10 
hardware 
new 

8080 floppy disk interface 12/12-17 
6502 programmable 1C tester 28/33-35 


477 



hardware, new (cont.) 

homebrew TV display board 6/30-33 
modifications 

H-9, lower case 28/30-32 
I MSA I 

RAM-4A fix 3/6, 13/7 
memory clobberer fix: 8/17; 16/60 
VDM-1, fix 17/33-34 
TVT-11 

64 char/line & scrolling 12/25-27, 
proper credit 15/45, 
errata 16/56, 
extension 22/46 
64 char/line 12/28-29 
lowercase 16/57 
bell 26/47 

proposed 

segmented memory 12/11 
extended addressing 14/35 
Hayden, Russ 12/6-7 
Heathkit. see H -8 
Hertzfeld, Andy 26/31-33 
hexadecimal (or hex), see number systems 
HI, tiny 9/32-35, 10/54-55, 13/37 
Hicks, Bruce 16/21 
Hudson, David 16/19-20 
humor 8/17, 10/32; 14/44; 22/3 
Hutchinson, Perry C. 21/10-17 

1C tester, programmable (6502) 28/33-35 

IM6100 7/10 

IMSAI 

hardware fixes 

to RAM-4A 3/6; 13/7 
for memory clobberer 8/17; 16/60 
Intel-NEC chip differences 10/14-15 

index 

to The Computer Hobbyist 5/26-27 
interface 

cassette (6502) 27/31 -33 
floppy disk (8080) 12/12-17 
IEEE 488 bus (6800) 16/31 -55 
ISIS (operating system), analysis of 21/10-17 


James, John S. 25/21-27; 28/26-27; 28/36-37 
Julich, Paul M. 30/40-41 

KAPIAR (macroprocessor) (8080) 20/31 -59, errata 23/3 

Kee, Henry L. 9/23, 12/5 

Kelb, Carl 7/26-27 

Kendall. Bruce R. 16/22 

Kernel (operating system) (8080) 18/20-40 

Kheriaty, Larry 27/46-47 

Kildall, Gary A. 22/10-13 

KIM 1 (6502) 

breakpoint routine 16/25-27 
calculator, binary 23/13-15 
cassette I/O 25/24-27, comments on 29/41 
curve fitter (FOCAL) 30/12-14 
disassembler 20/12-13 
editor (for machine code) 25/34-39 
graphics routine 14/32 
programmable 1C tester 28/33-35 
see also 6502; Apple-ll 
KIMATH (arithmetic routines) 

extension to (6502) 20/15-21 
Kushe. Willi 16/26-27 


language, interpretive 

for tiny BASIC 1/6-12 
language, programming 

comments on design of 3/7; 3/15; 17/15 
Dijkstra's (hacked up) 19/19-20 
implementation ideas 17/16-17 
miscellaneous 30/18+ 
for robots (8080) 18/8-19; 25/17-20 
translation techniques 25/4- 16 

see also ACT; APL; BASEX; BASIC; CASUAL; EMPL; 
FOCAL; FORTH; GPM; HI; KAPIAR; LISP; MINOL; 
NIBL; PASCAL; PILOT; SAM76; SCELBAL; 
STRUBAL 

Laughlin, Neils 19/19-20 
Laurer, G.J. 14/36-43 
law 28/36-37 

LAZARUS (erased program recoverer) (6502) 26/31-33 
LEDIP (text editor) (6502) 29/4 12 
linkage editor, see relocator 
LISP 

for 6800 28/24-25 
for 8080 30/4-11 
list processing 

article on 24/4-8 

LLL BASIC, see BASIC: LLL (Lawrence Livermore Labs) 
loader 

for 8080 3/16, 7/31 
for SC/MP 21/13 
Longtin, Brent 16/8-10 
LS1-11, interface to S -100 bus 11/3 


McCormick, Edward M. 19/30-35 
MacDougall, John 22/42-43 
machine-readable characters 15/45 
McKeeman, William M. 25/4-16 
macroprocessor 

ACT (8080) 23/20-45, 24/27-46 
GPM (6800) 20/22-29 
KAPIAR (8080) 20/31-59, errata 23/3 
SAM76 21/18-37; see also SAM76 
Marek, Larry A. 27/42-45 

MATHPAC (trig function routines): KIMATH extension (6502) 
20/15-21 

math programs, see arithmetic 
memory clearer 

for 6800 29/43 
for 8080 8/32-33 
memory dumper 

for 8080 26/18-23; 27/4-18; (vocal) 28/42-46 
(BASIC) 18/41 
memory tester 

for 6502 1 7/23; 21/4-5 
for 6800 5/9; 25/28-33 
for 8080 8/32-33 
for Z-80 22/42-43 
microcomputers 

in electronic toys 16/24 

microprocessor, see 6502; 6800; 8080; 8086; COSMAC (1802); 

CP1600; F8; IM6100; PACE; SC/MP; Z-80 
microprocessor instructions, proposed 16/60 
Microsoft BASIC 

renumbering program 27/34-38 
Mills, Jonathar\W. 19/21-27 
MINOL (8080) 

documentation and code 4/9-17, errata 6/36, 7/32 
game 

tiny trek 6/37, errata 7/31 
Mits BASIC 

modification for two terminals 9/24-25 



modem 

as cassette interface 10/7. 14/6-7. 19/5 

driver 26/4-16, errata 27/43, comments 29/41-42 

reviews 

DC hayes board 20/5 ; 26/4-16, 27/43, 29/41-42 
IDS board 26/4-16, 27/43 
Penny whistle 103 17/11-12. 17/13 
Monagan, James 22/8-9 
monitor 

for 6502 7/20-21 
for 8080 4/18-32 
for COSMAC (1802) 19/30-35 
Moody, Bob 16/15-16 
Morgan, David J. 24/22-25 
Mork, Phil 28/42-46 
Morrow, George 25/40-46 
Moser, Carl 21/4-5; 27/31-33 
Mueller, Erik T. 4/9-17; 14/12-16 
music 

program (8080) 2/6-7, 3/6 8/32-33, 16/21 
printing of 3/10-11 

bibliography of computer music 7/33-35 
networks 

Digicast^^ project 29/16-17 
PCNET 17/7, 17/13, mentions of 26/4. 30/47 
other: (D.C. area) 14/3; (EFTS) 16/61-62; (DEAFNET) 
17/10; (bulletin board) 26/44 
Newberry, Steve 20/31 -59 
NIBUSC/MP) 

documentation and code 10/34-50, errata 15/4 
criticism 22/21, response 26/45 
Northstar 28/38-41 
number systems 
conversions 

binary to decimal (algorithm) 1/2 
octal to hex 16/13-14 
hex to octal 16/13-14 
hex vs octal 19/5; 22/45-46 
miscellaneous 15/4 
Nurse, Howard L. 28/30-32 

Ockers, Stan 14/32 
octal, see number systems 

opcode decoding (6502) 17/20-22, 19/42-44; 22/5-7 
operating system 

CHAOS 6/3; 7/3 
ISIS (analysis of) 21/10-17 
Kernel (8080) 18/20-40 
Unix™ 4/3. 6/3. 7/3 
optimizing (a program) 22/5-7 
OZNAKI project 13/12-13, 24/10-11 

PACE 

review of PACER 9/12-13 
Pack, Charlie 4/18-32, 19/36-41 
Palmer, John B. 18/41 
Parker, Dan S. 14/10-11 
PASCAL 23/16-19 
PCM-12 (review of) 7/10 
PCNET. see networks 
Pearce, Craig A. 21/5 
Peterson, Richard K. 13/36-37 
Pfafman, Fred 13/7 
PILOT 
8080 

code for 15/18-33 
documentation 14/17-29 
errata 19/18, 20/63 


modifications 

editor 22/43-44; 24/22-25 
other 17/24 
on North Star 27/26 
Common 27/46-47 
information exchange 14/17 
tiny 

proposal 13/34-35, responses 18/43, 19/35 
see also FOCAL 

Pittman, Tom 6/9-10; 8/19-21; 12/3-4 
Poduska, Paul R. 20/9-11 
'polish joke' 4/18, explanation 7/35 
Poly88 (review of) 10/16-18 
Polymorphic's BASIC 
review of 14/8-10 
printer driver for 27/27-30 
Polymorphic's documentation, corrections 19/15-17 
Poly VTI. 13/12-13; 16/17-19 
POW(word processor) (8080) 29/18-29 
printer 

driver routines (8080) 14/10-11, 19/35; 27/27-30 
(6800) 12/7 
Processor Technology 
BASIC 

INT function fix 8/34; 10/9, 13/4; 17/26 
tape load/save 16/23-24 
assembler fix 13/7 ; 16/22 
G.P. Memory module fix 27/41 
programming languages, see languages, programming 
programming tricks 6/9-10; 28/29; 29/3 
programs 

miscellaneous 

interactive peek/poke (BASIC) 22/8-9 
stencil cutter (BASIC) 29/17 
see also under processor type (for machine and assembly 
language) or program type 
Pugh, Tim 26/4-16 
Purdin, Titus 28/38-41 

Rankin. Roy 7/17-19 
Raskin, Jef 13/25-29; also most reviews 
reformator (intel to proc tech assembler) (8080) 6/10 
relocating machine code 
article on 22/10-13 
relocator 

for 8080 13/8-9:22/14-20 
for 6502 14/30-31 
for Z-80 13/8-9 

renumbering routines for BASIC 23/4-9; 27/34-38 
reviews 

computers 

DZ-80 15/7 
H-8 20/9-11; 30/22-25 
PACER 9/12-13 
Poly88 10/16-18, errata 13/5 
miscellaneous 8/15-17; 14/46; 15/5; 18/5; 24/19-20 
modems 17/11-12; 17/13; 20/5 
software 

Mits BASIC, Poly BASIC and NIBL 14/8-10, errata 
16/7, 17/31 
other 20/29; 26/17 
Rice, Lloyd 4/6-8 
Ritter, Terry 25/28-33 
robots 22/4 ; 18/8-19; 25/17-20 
Roichel, Ancelme 21/18-37 
Roth, Richard L. 22/14-20 

SAM76 21/18-37; 23/46; 26/46-47; 30/19-21; 30/44-45 
Sanger, Joseph Jay 15/10-17 


479 



Santore, Ron 6/38-39; 16/23-24 

Savir, D. 14/36-43 

SCELBAL 2/8-12 

schedule program (BASIC) 16/15-16 

Schuman, Philip 17/35-37 

SC/MP 

loader 21/13 
language 

NIBL. see NIBL 

subroutine manager 13/36-37, 30/44 
Scully, Tim 22/43-44 

Selectric: converting to an I/O device 13/41-44 

Shaw, Dan M. 13/8-9 

Shepard, John C. 5/10-11 

Sherman, Ralph 14/30-31 

Simmons, Webb 21/8-9 

Simpson, Philip 22/30-41 

Skovgaard, Erik 21/13 

Smith, Glendon 6/30-33 

Smith, R. Lynn 12/25-27; 16/57 

Smith, Stephen P. 21/6 

Snell, John 7/33-35;9/12-13 

software 

editorial on 12/3-4, response 16/7, 16/8-10 
piracy 5/3;19/20; 22/20; 25/3 
SOLI8080) 

disassembler for 21/38-46 
file routines for ALS-8 27/42-45 
patches to run Mits BASIC 18/42-45 
sort routine (quicksort) 24/20 
speaker, using TV, for computer output 12/4 
speech 

digitizing 28/42-46; 29/30-33 
synthesis 

article on 4/6-8 
reference to paper on 8/9 
products 3/12; 5/7-8; 8/7-8; 20/6-8 
Stallings, Gordon 13/30-33 
standards 

proposed 

memory map 9/22 
S-100 bus 7/8-9; 25/40-46 
Z-80 code 13/10-11 , response 17/34 
Starkweather, John A. 14/17-29; 15/18-33 
status push/pop (8080) 29/3 
Stedman, John O. 9/16-18 
Stiefel, Mai 7/12-15 

string output routine(6502) 8/33, 10/50, 12/8 
STRUBAL 23/10; 28/28, 30/44-46 
structured programming 
article on 21/8-9 

Stumpf, Adolph P. 2/34; 10/9; 13/4 
Suding, Robert 1/18 
Swank, Joel 28/33-35, 30/32-33 
SWTPC 

6800 I/O control interface 17/35-37 
miscellaneous 20/30 


Teeter, John 11/8-61 
telephone, see also networks 
telephone company 7/36-37 
terminals 

for trade 16/14, retraction 17/10 
Singer/Friden/Burroughs 10/9; 12/27; 15/5; 17/33 
Terry, J.M. 24/4-8 
text editor 

for 6502 29/4-12 
for 8080 6/13-26 


Thompson, Bill 6/11 -12 
timer routines 

for 6800 9/21 

for COSMAC (1802) 19/30-35 
tiny BASIC, see BASIC, tiny 
tiny BASIC extended, see BASIC, tiny: Texas 
trace routine (Z-80) 23/11-12 
tree, binary 

manipulation routines (8080) 30/15-17 
Trenholme, John B. 27/34-38 
TVT-II 

driver (8080) 2/34 
see also hardware: modifications 
TV. see display 

TV Dazzler. see graphics: 8080: dazzler 
Univac II 

article on 28/20-23 

Unix^^ (operating system) 4/3, 6/3, 7/3 

utilities see under type of processor, computer or utility 

Van Buer, Darrel 14/6-7; 30/4-11 

Van Der Wateren, Frits 28/24-25; 20/22-29 

Van Dyke, Don 21/38-46 

Van Valzah, Bob 10/19-32, 12/44-45 

Wadsworth, Nat 2/8-12 

Wang, Lichen 5/12-25; 6/8; 17/33-34 ; 18/8-19 
Warme, Paul K. 30/26-31+ 

Warren, Jim C., Jr. 

editorials 2/3; 3/3; 4/3; 5/3; 7/3; 9/3-4; 10/3-4 
other 4/5; 8/3-6; 9/6-7; 11/7; 16/5-6; 29/16-17 
Watson, Herman 29/18-29 
Wayne Watch 16/5-6 
Weisbecker, Joe 15/34-44 
Whatis (expression evaluator) 29/34-40 
Whipple, Dick 1/13-17; 2/13-31 
Wilcox, Bob 3/6 
Wilcox, Dick 11/3-7 
Williams, Steve 16/15-6 
Williams, Tom 19/6-9;30/22-25 

Winzenread, Marvin R. 8/28-29; 9/30-31; 10/58-59; 10/60; 

15/9; 16/28-30 
Witham, Steve 17/16-17 
word processor 

for 8080 29/18-29 

Wozniak, Steve 7/17-19; 8/22-25; 8/26-27; 23/4-9 

Vob, Gregory 22/22 -29 
Young, Kenneth 20/6-8 

Z-8 

article on 26/28-30 

Z-80 

differences Zilog-Mostek chips 19/9, retraction 21/13 
disassembler (BASIC) 26/42-44 
miscellaneous 7/11 
patches 

for Microsoft 8K BASIC 12/20 
for Mits 12K BASIC 17/25 
utilities 

debugger 24/12-18 
memory tester 22/42-43 
miscellaneous 27/22-26 
relocator 13/8-9 
trace troutine 23/11-12 
see also 8080 
Zeigler, John 3/17-19 
Zolman, Leor 26/34-41 









5484-X 

$18.95 


IB 

HAYDEN BOOK COMPANY, INC. 

Rochelle Park, New Jersey 


ISBN 0-8104-5484-X 









