for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor...

76
NO. 75 U.S. Edition: International Edition: $2.50 $3.50 SEPTEMBER 1984 for the Serious Computerist v - - y ! '‘■hS'S- Structure Tree Utility Introduction to FORTH FORTH Multi-Tasking Time Series Forecasting TWERP

Transcript of for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor...

Page 1: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

NO. 75 U.S. Edition: International Edition:

$2.50$3.50 SEPTEMBER 1984

for the Serious Computerist

v - - y

!

'‘■hS'S-

Structure Tree Utility Introduction to FORTH FORTH Multi-Tasking

Time Series Forecasting TWERP

Page 2: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

FLASH! Gets the Gold

at the Computer OlympicsThe Styles Electric Works 1541

FLASH! dashed off with the gold at the Computer Olympics here.

The 1541 FLASH! loaded and saved programs and files three times faster than an unenhanced Commodore

« 1541 disk drive could.... faster than Faster than any otherany other disk disk drive with com-H r iv a ” patible disk format.U I IV c . . . _________ Three times faster!

The device delighted the home crowd, which watched the 1541 FLASH! set a meet record, and leave its competition in the dust.

Once installed, the 1541 FLASH! is transparent. Computer operations all remain unaffected as it speeds up every disk-related function. The FLASH! is a permanent installation with both a software (ROM) and a hardware component. Through key­board commands or a hardware switch, you can even return to the old, slow loading method—if you really want to.

And there is nothing new to learn for the FLASH! No special tricks or

techniques. Once it’s in, just watch it go.

But if you’re really serious about programming, the 1541 FLASH! is a gold mine. The manual will show you how to write software allowing data transfer to and from the 1541 disk drive at speeds up to 10 times the normal.

For programs that usually load with a “ ‘*’,8,1 ” command, just hit Shift/Run-Stop. A spreadsheet pro­gram like BUSICALC 3 then loads in about 25 seconds.

The 1541 FLASH! even adds 21 ex­tra commands for the Commodore 64 user. Some of these include edit­ing, programming and loading com­mands, as well as “DOS Wedge” commands. You can ignore all these commands, though, and just enjoy the rapid disk operations.

It wowed the crowd at the Com­puter Olympics. Once you see its sheer speed, you’ll know why. Call its coach, Styles Electric Works, to place your order or to get more info.

1541 FLASH!, an add-on assembly, for the Commodore 64/1541 costs only $79.95.

nj Skyles Electric Works\TI 2 3 1 E South Whisman Road

Mountain View, CA 94041 (4 1 5 )9 6 5 -1 7 3 5

Available from your local Commodore 64 dealer or call 1-800-227-9998.1541 FLASH! is a trademark of Skyles Electric Works. Commodore 64 is a trademark of Commodore.

Page 3: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Want to become an Apple expert?

Join the club.A.P.P.L.E.

Apple PugetSound Program Library ExchangeThe Apple PugetSound Program Library Exchange is the world’s first, oldest, and largest Apple computer user group. Our membership is comprised o f Apple enthusiasts throughout the world, and we provide support for all levels o f technical ability, from beginner to seasoned program author.

A membership in A .P .P .L .E . will bring the Apple owner 7 day per week hotline privileges for techni­cal assistance when you need it, plus the international magazine Call— A .P .P .L .E ., and incredible discounts on our fully supported, low priced, world famous software products, and hardware.

A .P .P .L .E . is a member owned, non-profit service organization. Write today for a free copy of our magazine and club information, or join by filling out the enrollment coupon

exciting games useful utilities high quality graphics finance and education

VALUESOFTA product whose time has come.

Fully supported, guaranteed, high quality software at low prices.

VALUESOFT INCLUDES:2wor<l"ro“iSingproemsUncommon at

$ 1 2 . 5 0 per disk, program contains its own document on disk.

The quality VALUESOFT line of software is available through the Apple PugetSound Program Library Exchange.

NEW lie OWNER?programs for the He now in stock

Graphics UtilitiesWord Processing Database

Join Now and Receive 10 FREE (5_1/4 )

~ lfo A.P.P.L.E.

pioneering Apple computing

since 1978.M ail (0

A P P L E

2 1 2 4 6 6 8 th A v e .S .

K en t. W A 9 8032

{206 )872-2245

or ca ll o u r toll-free n u m b e r

1-800-426-3667

(24 Mrs. O rde rs O n ly )

C M E M B E R S H IP S 26 one-tim e

a p p lic a tio n fee + S25 first year

d ue s . S 5 1

~ F R E E IN FO +■ C a l l- A .P .P L E

P lease send free in fo rm a tio n

N a m e ____

A ddress

C i t y ____

S ta te ___

Phone

. Z i p ___________

M/C V ISA *

Exp. Date__

A d d it io n a l fo re ign p o s ta g e re q u ired fo r m e m b e rs h ip o u ts id e the U S

J

Page 4: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Featured This Month

This month we enter into the world of FORTH, in addition to a varied selection of other exciting subjects, programs and projects.

Time-Series Forecasting — enter into the world of Nostradamus with the sagacity of Einstein. This program uses various forecasting techniques to predict the future, from interest rates to the Dow Jones. Includes versions for the Apple, Atari, Commodore 64 and CoCo.

Introduction to FORTH — a look at the world of FORTH. Who would be interested in FORTH, why, what features does it offer, its uses and implementations.

Textfile Write Edit Read Program — for all of you Apple users who have cursed when they wanted to read a text file and only got an error message. This program is an invaluable help in writing, reading, and editing text files.

Multi-Tasking for FORTH — this program allows seperate tasks to run in the ’background’ while still having the FORTH interpreter available in the 'foreground.' A concept and program with powerful implications.

Transforming dBase II Files — find out how to alter your dBase II files so that you can use them with Wordstar/Mailmerge to produce personalized letter forms.

Stepper — who has step-traced his way through an assembler program only to have to suffer through jumps to monitor routines? This program saves from this time consuming annoyance, making debugging a little more enjoyable.

Structure Tree Utility — nothing is worse than forgetting the calling structure of a word in FORTH. With this program you can easily recall which came first — the chicken or the egg.

68000 Exception Processing — how to take advantage of the 68000's capabilities, software exception processing in general and hardware exception processing for the SAGE.

Graphic Print for C64 Part 3 — the final installment of this excellent series provides the programs and techniques required to generate full color pictures on your standard printer!

Approximating the Square Root of the Sum of Squares — a fast and time saving method for dealing w ith that candidate for 'th e m ost often used calculation' — the square root.

IMCftO

„ „S£LF 0" C «U« COMPUTW" pv,s FO. . . M ■ » SBOUL° » > - " * • *

H I..H use"

O'» FIRST LEVEL D

A PERFECT package

MASTER DIAGNOSTICS

There is only one thing / smore important than your ^ p C Ip p K Z

Maintaining itMOTHERBOARD ROM IfST APPLESOFT CAW) fFSr INTEGER CARO TfST MOTHERBOARD RAM TEST I6K MM CARO TEST’AUX RAH TEST- 80 COLUMN CARD TEST" PARALLEL CARO TEST SPEAKER FUNCTION TEST SQUARE WAVE MOOULAUON ON BOARD HELP

THE TESTS INCLilOEDISK ORIV? SPEED CALIBRATION DRIVE HEAD READ/WRITE TEST WRITE PROTECT SWITCH TEST DRIVE H€A0 CLEANING ROUTINES DISK 0WVE MAINTENANCE 0C HAVES MICR0M00EM H TEST PAOOLE 4 SPEAKER TESTp toou 4 button testPAOOLE DRIFT *EST INTERNAL MAINTENANCE FORTY PACE MANUAL

MONITOR SKEWING TESTS MONITOR 4 MOOULATOR CALIBRATIONMONITOR TEXT PAGE TEST MONITOR TEST PATTERN MONITOR 4 TV WE ALIGNMENT L0 RES COLOR TESTS HI RES COUW TESTS LISSAJ0US PATTERNS RNO H( RES COLOR GENERATOR GENERAL MAINTENANCE •APPLE III

HOW MANY DISKETTES HAVE YOU INITIALIZED WITH YOUR OISK ORIVES HUNNING TOO FAST OB TOO SLOW’ THINK ABOUT WHAT THAT COULD MEAN

OIO YOU KNOW THAT THE OR1VE SPEEO OF YOUR APPLE SHOULD BE AS CLOSE TO 300 RPM AS POSSIBLE? LIKE A RECORO OR TAPE SYSTEM V ABIES WITH MOTOR SPEED SO DOES A DISKETTE

WHEN WAS THE LAST TIME YOU CLEANED THE READ,'WHITE HEAOS OF YOUR ORIVES?THEY SHOULD HAVE BEEN CLEANEO LAST MONTH. ANO WITH OUR PROGRAMMED UTILITIES YOU COULO DO SO AT THE PUSH OF A BUTTON

MOW ABOUT THE WHITE PROTECT SWITCH? IS IT WORKING PROPERLY SO YOU WONT DESTROY YOUR PROGRAM OISKETTE OR PROTECTED DATA?

THEBE S LOTS MORE ANO IT WILL ONLY TAKE IS MINUTES A MONTH TO KEEP YOUR HIGH TECHNOLOGY EOUIPMENT RUNNING AT HIGH PERFORMANCE. PREVENT PROBLEMS OR OIAGNOSE PROBLEMS AND SAVE YOURSELF ONE OF THOSE OAYS

WITH MASTER DIAGNOSTICS ANYONE CAN DO IT.

THE PROGRAM THAT PAYS FOR ITSELF

W HEN O R D ER IN G SPEC IFYversion II & II plus or version l ie

□ master diagnostics $55.00

□ master diagnostics + plus $ 75.00

D IA L 1 - B O O - B 3 5 - 2 2 4 6

C T n n r - T * Ptwa pnwxMs e-wytftng nMtttd » maintain your compute' Th* emir* pKtuga <( housed in our wn moUMd cm* to prefect againM ««« *tectnc>ty, >-r«y and affwr contaminarw.

• " t h ? 3jISoiSoSTlCS OISKETTE • CRT SCREEN CLEANER• FORTY PMj E PROCEDURE MANUAL • COMPUTER/DRIVE HOUSING CLEANER• HEAD CLEANING KIT - “ •• RE USEABLE CHAMOIS TIPPED WANOS

h llK R O MTechnical Products, Inc.

25 Prospect Street, Leominster MA 01453

2 MICRO No. 75 ■ September 1984

Page 5: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

X f Buy this 68000 computer, Tand we’ll give you a 65C02...free.

The MTU-140 has always been a good deal, because it ’s such a versatile computer.

; Now when you purchase an MTU-140 ($3995) you get the new 65C02 processor chip free. And, by adding the DATA- M OVER board ($1080) you’ll have a 68000 com puter to b o o t. .. .plus a total of 335KB RAM to share between them. The 65C02 is ju st like the 6502 plus 8 new instructions and 2 new addressing modes using the latest high speed CMOS technology. With the CODOS/ DMXMON operating system , you choose which processor is in con trol. . . or have both running simultaneously, each perform ing flaw lessly . . . the way MTU com puters have always worked.

Our custom ers are sold on the MTU-140. They know we designed it for thinking people .. .to extend their abilities. They have found it easy to custom ize for their own needs .. .providing solutions they had not thought possible. We think you will a g re e . . . the MTU-140 is tailor-m ade for people who need their own professional

! computer.| The MTU-140 is fast. At the

touch of a button, you can load

32KB in ju st 2.6 seconds. . . and another 20KB in ju st 1 second! Plus, both C PU ’s can perform other tasks during disk opera-

i tions . . . even service interrupts. Few computers offer this freedom .. . none with both 65C02 and 68000 processors! Equipped with the DATAMOVER, the MTU-140 provides:• 8MHz 68000 plus 256KB RAM

with 2 DMA ports• 1MHz 65C02 plus 80KB RAM

with multiple DMA ports• Dual 1MB 8" Floppies lor

ultra-reliable operation• DMA disk operations into

memory, no CPU interference• DMA hi-res Graphics/Text

display, no CPU interference• 96 key detached keyboard with

5 separate cursor keys• 8-bit D/A speech and music

port• Fiber optic light pen• 2 Parallel, 1 serial port• Internal expansion card slots• CODOS/DMXMON Operating

system using device inde­pendent channels

• Full screen, bidirectional scroll editor, handles 1MB files

• MTU-BASIC with graphic & disk extensions

• Communications with at­tended/unattended use— source available

• Graphic editor, slideshow presentation

| • 4-part harmony instrument I synthesizer music

• Over 50 machine languageutilities

Choose from our extensive selection of so ftw a re ... for the 65C02: MTU-BASIC (std ),MTU-C ($200), M TU-FORTH ($79), 6502/65C02/6511 m acro assem bler ($150),... for the 68000: MTU-BASIC 1.5 ($50), Motorola com patable, m acro cross-assem bler ($200), FORTH68K-83 (with source $250), FORTH68K-83 META CO M PILER ($250),... 68000 MAGIC/L ($495), Digital R esearch CP/M68K with C j language ($ca ll). F or word processing, W ORDPIC ($420) m ixes graphics with text. And you can run any CP/M 2.2 program with the PROGRAM- M OVER Board (MTU-CP/M, Z-80A, 64KB RAM-$650).

F or laboratory use, the M ULTI-0 System ($1500) offers IE E E -488 bus, clock calendar, 2 parallel & 2 serial ports, 12 bit D/A & A/D (8 channels) with up to 16,000 samples/second, 5,000/second sustained to disk from MTU- BASIC! It is fully en closed ... including connectors, power supply and all driver software for interfacing all devices to CODOS and all languages. And for signal analysis work, our DigiSound-16 offers 16-bit linear, 100,000 samples/second, variable internal or external sample clock, 64KB DMA RAM buffer, and parallel port

, in terface to work with any com puter ($2995).

Interested? Call or write MTU today for details. We ju st made a good deal even b e tte r . . .with a free 65C02.

M icro Technology Unlimited2806 Hillsborough St.

Raleigh, North Carolina 27607 (919) 833-1458

Page 6: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Publisher/Editor-ln-ChiefRobert M. Tripp

Associate PublisherCindy Kocher

Production ManagerJennifer Collins

Technical EditorMark S. Morano

Technical EditorMike Rowe

Advertising ManagerW illiam G. York

Circulation ManagerLinda Hensdill

Office ManagerPauline Giard

Shipping DirectorMarie Ann Wessinger

ComptrollerDonna M. Tripp

AccountingLouise Ryan

Contributing EditorsCornells Bongers

Phil Daley David Malmberg

John Steiner Jim Strasma

Paul Swanson Richard C. Vile, Jr.

Loren Wright

Dealer Sales RepresentativeAlison Churchill

M IC R O is published m on th ly by:M IC RO , Chelm sford, M A 01824 .Second C lass postage paid at:

C helm sford, M A 0 1 8 2 4 and additional m ailin g offices.U SPS Pu blication N um ber: 4 8 3470 .ISSN : 02 7 1 -9 0 0 2 .Send subscrip tions, change of address, U SPS Form 35 7 9 , requests for back issues and all o the fu lfillm en t qu estions to:

M IC RO P .O .B o x 6502 C helm sford, M A 01 8 2 4

or call 617/ 256-3649 .Subscrip tion Rates: (per year):U.S. S24.00 or $42.00 for two years Foreign surface mail: $27.00 Air mail: Europe $42.00 Mexico, Central America, M iddle East, North Africa, Central Africa $48.00 South Am erica, South Africa, Far East, Australia, New Zealand $72.00

Copyright © 1984 by M ICRO.All Rights Reserved.

{^Introduction to IS FORTH

Kenneth Butterfield

The basic Why's and Wherefore’s about the FORTH language.

18Multi-Tasking in A Technique and ProgramFORTH for Running Multiple Tasks

Under FORTH.Kenneth Butterfield

24Structure Trees in a f o r th u tility that PrintsFORTH the Structure of a FORTH

Word.Michael Dougherty

27 Textfile Write Edit Now reading, writing, andRead Program editing textfiles is easy.

(T.W.E.R.P)N. D. Greene

Graphic Print for C-64, Part 3Michaelxf. KeryajT~"

Add Full Color to Your Graphic Printouts -Without a Color Printer.

36Approximating the Square Root of the Sum of the SquaresChris Williams

A Very Fast Method of Calculating this Useful Function.

44 Interface Clinic: A Major Hardware Interface

Design a major hardware interface - a receiver board for the 32K CoCo.

Ralph Tenny

4 MICRO No. 74 • August 1984

Page 7: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

WQ7568000 Exception

T / Processing -----------------

Mike Rosing

How 68000 Uses Exception Processing to Handle Software and Hardware.

1 **0 Transferring dBase II Files For Use With Wordstar/Mailmerge

^ Robert R. Carroll

Alter your dBase II files and use them to produce personalized letter forms.

Stepper

Chester H. Page

Step-Trace fa c ility that a llow s you to bypass m on ito r routines.

L {Time-Series Q I Forecasting

Brian Flynn

A Program to Predict the Future - That Runs on the Apple, Atari, C64 or CoCo.

'■ ' rV ' j : ' H * " r ’ : 1

13 Wizard A game u tiliz ing theC64’s ca pab ilitie s to the m axim um — tha t even le ts the player create his own m ateria l.

14 Stockerl For the seriouss tock market investor, a program for p red icting perform ance tha t can in te rac t w ith a tim e-shared data base.

13 Person-to-Person A feature packedcom m un ica tion package fo r the Apple, tha t inc ludes a m a iling lis t capab ility .

14 MMP-1000C A fu ll-fea tu re Modem com m un ica tions

package fo r any A tari, inc lud ing all required hardware and software.

13 Mail Now! A user-friendlym ailing lis t program fo r the C64.

2 Highlights 68 Books7 Guest Editorial 69 Catalog8 Editorial 71 Lyte Bytes

10 Feedback 72 Advertiser Index11 Spotlight 72 Coming in October

No. 74 ■ August 1984 MICRO 5

Page 8: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

From the editors of A.N.A.L.O.G. Computing

$14.95

THE

F N F L O E ]

COMPENDIUMT h e best A T A R I k H om e C om p u ter Programs from the first ten issues of A .N .A .L .O .G . Com p u ting Magazine.

The ANALOG Compendium is available at selected book and computer stores, or you can order it direct. Send a check or money order tor $14.95 * $2 shipping and handling to: ANALOG Compendium, P.O. Box 615, Holmes, PA 19043

Or you can order by phone with MasterCard or VISA. Call toll free: 1-800-345-8112 (in PA. call 1-800-662-2444). For orders outside the U.S., add an additional $5 air mail, $2 surface.

Page 9: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

by Mike Dougherty Littleton, Colorado

Languages like FORTH represent an important turning point for computer users. Until now, computer usage was managed as a "closed shop.” Users desiring computer aid were faced with either working with a software expert who might not understand their problems, or becoming their own software expert at the expense of effort applied to the original problem. In either case, the actual solution to the user problem was hindered.

In the last decade, the closed shop cycle was being discarded by several new software environments. Working in a scientific field which changed far faster than conventional software support, Charles Moore developed the language and operating system FORTH. In a sense, this language placed software development in the hands of the user. Users were able to quickly develop and modify software without the software middle man. Parallel to FORTH, the software engineer was also finding similar help in the environment of UNIX and C. The UNIX/C combination allowed the nebulous field of software support to be directly used by the software engineer. UNIX/C allowed each software engineer to build the tools needed to analyze, design, write, test and document software effectively. In education, Seymor Papert was developing an environment called LOGO to teach concepts in mathematics and programming. Papert's methods were based upon the students writing their own software rather than being passive subjects for CAI drill and practice.

From the viewpoint of the user, these languages re p re se n t th e tru e seco n d g e n e ra tio n of software — languages which allow the user to directlyapply a computer to user problems. These secondgeneration languages may be characterized by the"toolbox” approach to problem solving. Each of the new computer environments allows the user to construct individual tools (functions, modules, etc.) which may be combined to solve problems. Instead of relying on an intermediate software engineer to design and build a single program, the second generation languages allow the user to build upon past software to solve new problems.

The toolbox approach becomes a software metaphor for the normal human process of learning. Learning typically consists of building upon previous knowledge. Forexample, speech must be learned in steps, each step building upon the last. A small child will first learn simple nouns and verbs. These words will be combined into short sentences to express desires. Adjectives, adverbs and prepositional phrases are later added to express more complex desires or ideas. Thus, learning to speak is a process of building new speech tools upon those previously learned. This process of synthesis is a natural and well practiced process for most people. The toolbox approach utilizes this concept for software development. (It should be pointed out that this "bottom up” methodology is not perfect. Just as many children who can talk must still be taught "proper" English in school, the building blocks must be rearranged or modified when the goal at the top is missed.]

Notice that the toolbox approach complements the normally advocated "top down” methodology. This is not bad. Rather, it is a reflection of two different problem environments. Top down programming was developed to aid software engineers dealing with complex programming tasks. Complex software is not limited to large government projects — even the Apple Lisa's integrated software required a 200 man-year effort! These systems require a different methodology than used in a laboratory or learning environment.

Given a set of requirements, a complex project may be successfully decomposed, layer by layer, into small, easily programmed and tested units. This decomposition will detail the interfaces between software functions and allow different portions of the software to be developed by different programmers or teams of programmers.

Although validated by several pilot projects and used in many actual projects, this top down methodology (called structured analysis and structured programming by Yourdon) requires two strong foundations. First, the software requirements must behave as a "damped o sc illa to r ." Although many requirem ents change throughout a project, these changes must converge to zero. That is, for a final product to be generated, the final requirements must be set prior to delivery. (In the real world, this is not always the case!) Top down methods are not very effective when requirements are vague.

Secondly, the right personnel must be found to perform the software decomposition. Proper decomposition requires a well structured, highly analytical thought process. Unfortunately, most of us do not adequately possess the skill and talent required for this job. In my limited experience with complex projects, the front end decomposition is, simply stated, very difficult. Not only is the decomposition difficult to do, there are problems in determining whether the decomposition is correct or even complete. Finally, the ultimate project success, years down the schedule, will depend upon proper and valid decomposition. Good software analysts can easily be worth their weight in gold.

Who are the readers of MICRO? I suspect that most of the readers fall into the toolbox category. Like myself, they are interested in using their personal computers for solving the wide range of problems encountered in everyday living, not programming complex U.S. Defense Projects. Since everyday problems cannot always be an ticip a ted , the softw are req u irem en ts change continuously. In addition, it is difficult and cost prohibitive to find a software 1 ‘middle m an" with as much knowledge as the user. Only the user fully knows the problems to be solved. The toolbox approach simply makes good sense for most MICRO readers.

Where does this leave MICRO? I think that MICRO should expand to cover these new software environments. Versions of FORTH are available on most micros; similar versions of LOGO are supported on both Atari and Apple (LOGO Computer Systems, Inc.I; UNIX is rapidly becoming the de facto operating system for the 68000

No. 75 ■ September 1984 MICRO 7

Page 10: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

e d tfa n id tmicroprocessor family. Details of specific implementa­tions as well as the general philosophy behind each software environment need to be covered. Each language has its own niche with unique advantages and disadvantages. The languages discussed here are not free — they do require investment in software, hardware and effort. By covering these second generation user languages, MICRO will allow the readers to determine what they should invest in their current or future personal computers. These languages are receiving attention from many sources and I feel that MICRO must seriously consider their coverage.

Mike Dougherty has worked in the software field since 1977 and is currently a Software Engineer with Martin M arietta Denver Aerospace in Colorado. He has specialized in developing real time data acquisition and control systems. While most of his software has been written in assembly language, in the last few yers he has used FORTH for work and personal projects. He has submitted several FORTH programs/articles, the first of which, Structure Trees appears in this issue.

Discover ForthJoin the FORTH Interest Group

T h e FO R TH In te re s t C ro u p (F IG ) is a n o n -p r o f it m e m b e r-s u p ­p o r te d o rg a n iz a t io n , d e v o te d to th e F orth c o m p u te r language . Jo in o u r 4 7 0 0 + m e m b e rs a n d d is c o v e r F orth . W e p ro v id e o u r m e m b e rs w ith th e in fo rm a tio n a n d se rv ice s th e y n e e d , i n c lu d in g :

O v e r fifty local FIG chapters (g e n e ra l a n d sp e c ia l in te re s t) m e e t th ro u g h o u t th e w o r ld o n a re g u la r basis.

Forth D im ensions m a g a z in e is p u b lis h e d s ix t im e s a ye a r an d a d d re sse s th e la te s t F o rth new s. A o n e ye a r s u b s c r ip tio n to FD is fre e w ith FIG m e m b e rs h ip .

The F IG -Tree is th e F lG -s p o n s o re d , o n - lin e c o m p u te r d a ta base th a t o ffe rs m e m b e rs a w e a lth o f F orth in fo rm a tio n . D ia l (4 1 5 ) 5 3 8 -3 5 8 0 u s in g a m o d e m a n d ty p e tw o c a rria g e re tu rn s .

Forth publications: a w id e v a r ie ty o f h ig h q u a lity and re s p e c te d F o r th -re la te d p u b lic a t io n s ( lis tin g s , c o n fe re n c e p ro c e e d in g s , tu to r ia ls , e tc .) are ava ila b le .

The FIG H O T LINE (41 5) 9 6 2 -8 6 5 3, is fu l ly s ta ffe d to h e lp you.

The Job Registry h e lp s m a tc h F o rth p ro g ra m m e rs w ith p o te n t ia l e m p lo y e rs .

All this and m ore fo r o n ly $1 5 .0 0 /y r . ($ 2 7 .0 0 fo re ig n ) Just ca ll th e FIG H O T L IN E o r w r i te a n d b e c o m e a FIG m e m b e r (V IS A o r M C a c c e p te d .)

u o n i miss o u r u p c o m i n g \ (4 1 5 ) 9 6 2 -8 6 5 36 th A n n u a l For th C o n v e n t io n \ i o r t h \ pQ g o x i i o s N o v e m b e r 7 6-7 7, 7 984 a t t h e \ I „ , eres. \ San C a rlo sH y a t t Pa lo A l t o in Palo A l to , CA. \ Q roup \ C A 9 4 0 7 0Ca ll o r w r i te f o r de ta i ls . \ ____)

M ICRO Goes FORTH

I agree with the position set forth by Mike Dougherty in the preceeding editorial. Starting with this issue, MICRO intends to provide regular support for programming in FORTH. Our recent Reader Survey indicates that approximately one-fifth of you already program in FORTH. This means that many of you are capable of providing FORTH oriented material for MICRO. The primary thrust should be FORTH programs and utilities that can be added to other reader's 'toolboxes'. Since FORTH is fairly standardized and is available for all microcomputers, the value of each well-written FORTH program extends far beyond the bounds of the microcomputer that it was written on. This should be a refreshing change from machine specific BASIC and assembly programs. If you are a FORTH devotee, here is an opportunity to share your accom plishm ents and enthusiasm with other serious computerists.

Of course, if one-fifth of the readership program in FORTH, then four-fifths do not! For these readers, MICRO would like to provide introductory tutorials, ‘how-to-get- started' projects, buyers guides to FORTH materials for specific microcomputers, complete applications and utilities, and overall, an incentive to make the effort to learn a new language. Make no mistake — it does take effort. You will have to purchase a version of FORTH for your system, install it, use an editor that may be totally different from that which you are familiar with, learn a whole new way of approaching and solving problems and memorize a strange, new vocabulary. But, MICRO will be there to help.

The editors at MICRO are not FORTH experts. We are just learning to use FORTH. On the one hand, this means that we will be very sympathetic and understanding about the difficulties other programmers encounter in getting into FORTH. On the other, it means that we will be very dependent on those of you who already are experts to provide the articles and programs that will make FORTH a successful part of MICRO. If you have never tried FORTH, try it. If you are a FORTH enthusiast, support it.

Atari

It was not.suprising to find from the Reader Survey that the two most popular microcomputers were the Apple (39%) and the Commodore 64 (39%), with Atari (13%) a distant third. Still, I feel that the Atari family of microcomputers has many features that should make it interesting to the serious computerist. Unfortunately it has: a ‘game orientation' stigma attached to it; a non- M icrosoft BASIC w ith a num ber of ‘odd-ball' constructions — especially in dealing with strings; some annoying aspects such as the ‘beeping', the ‘graphic mode key' where the right-hand ‘shift key' should be, and so forth. MICRO'S coverage of the Atari has been weak relative to that of the Apple and Commodore. This is not due to our lack of interest! It is due to a lack of good article submissions on the Atari. Although only about one-third as many readers own Ataris as own either Apples or C64s, I would estimate that we get ten (10) or more submissions for each of these computers to one (1) received for the Atari. We try to convert some articles submitted for other micros to the Atari, (see Time - Series Forecasting in this

[Editor’s Note: This ‘Guest Editorial' is essentially a very thoughtful letter MICRO received from the author in April. Since it expressed many o f our thoughts very eloquently, we obtained permission to use it as an editorial.j

8 MICRO No. 75 ■ September 1984

Page 11: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

issue], but this is a lot of extra work. While it might be tempting to just drop the Atari, I still have hope for this micro. Especially now that Jack Tramiel, the man who took Commodore to the top, has taken over Atari. While Atari may currently be down, do not count it out. If those of you who use Ataris start submitting 'meaty' articles, then you will see a lot more in MICRO on the Atari. Let's hear from you.

A dvertisers

The money you pay for your copy of MICRO, whether through a subscription or at the counter, does not begin to pay for the cost of producing it. If MICRO was dependent solely on its distribution revenue, then you would be receiving an 8 to 12 page newsletter. The additional revenue required to run MICRO comes primarily from advertising. Advertisers pay to run ads for one reason: they want to make sales. How does an advertiser know if his ad is working in MICRO? While a few have a special 'department number' or other encoded information in their address, most do not. They will only know that you saw their ad in MICRO and were positively affected by it

If You Tell Them!When you contact an advertiser to buy a product or for more information, please tell them that you saw it in MICRO. You can not over-estimate the effect this will produce. The size of MICRO is determined primarily by the amount of advertising. If you want to see MICRO grow, then

Support Your Advertiser.

Editor-in-Chief

On The Coverr amil v

1 _____F O U R - G E N C R A T I O N 5

2__________ F IRST -FAMILYJ ___________(, Kt AT-GRANDPAREN f 54______________ < . " J A»AH AND KMC 3_________ GHAMDPARCNT S 4_____________ GRAMMY AND GRANDPA 2_______ N LI CL. CAR — FAMILY 3_________ PARE NTS 4_____________ < . " ) MOM AND DAD 3_________ CHILDREN 4_____________ C.**> JACK AND JILL

For computerists who want to communicate with 'third generation' computers, our tree (a 'structure tree1 which was generated by Dougherty’s 'Structure Tree U tility'), might bring to mind Dr. Moore, who named his solution FORTH (fourth generation language). As Nature creates trees of brilliant variety, so can the user of FORTH.

Cover Photo by Cindy K ochei

with a difference!SuperTerm — the only software that communicates w ith them all! Information networks such as CompuServe; business and university mainframes; free hobby bulletin boards.

Professionals and students: SuperTerm's VTI02 emulation gets you on-line in style. Advanced video features, graphics,

a full-screen editing, 80/132 column through sidescrolling,j extended keyboard — perfect for EDT, DECMail, etc. Even| download your workfiles and edit off-line! Full printer and1 editor support; other emulations available,i| Researchers and writers: SuperTerm's built-in text editor| helps you create, edit, print, save, send and receive text| files — articles, stories, reports, inventories, bibliographies — in| short, it s your information w ork station. Access| CompuServe, Dow Jones Information Network,| Dialog/Knowledge Index, Western Union's Easylink, The| Source, and many more. Optional Sprinter accessory saves| printing time and S (see below).

I Computer hobbyists: Join in the fun of accessing hundreds| of free bulletin board systems (BBS) for Commodore, Apple,I TRS-80, etc. Text mode w ith all BBS systems; up/downloadingI w ith Commodore BBS systems IPunter protocol). Special*•; protocol for up/downloading w ith other SuperTerm owners.| Popular "redial-if-busy” feature for use w ith automodems.

1 Get the information you need, for business or for fun,* w ith the software that communicates with them all!

4 Requires. Commodore 64. disk drive, and suitable manual- or auto-modem. Printer optional. Software on disk w /fre e backup copy Extensive manual in deluxe binder.

SuperTerm'sSPRINTER Accessory.......... $69”

With the Sprinter accessory, SuperTerm can perform concurrent printing — as text appears on your screen, it s simultaneously printed on your printer. Includes all necessary hardware for connecting your parallel printer and computer via the cartridge port. Simply plug-in and go. Free utility software for printing and listing as a stand-alone interface.

Requires, parallel printer such as Epson. Gemini. Microlme. C.ltoh.|Min. speed 35 cps.)

Commodore 64 is a trademark o f Commodore Electronics, Ltd,

(816) 333-7200MIDWEST

Send for a free brochure.

MAIL ORDER: Add $150 shipping and handling ($350 for C O .D \ VISA/Mastercard accepted (card# and exp. date). MO residents

fefl i r j i n *** sates tax. Foreign orders payable1 ■ ■v * \ V in c . U.S.$. 05. Bank ONLY; add J5 shpAndlg.

311 WEST 72nd ST. • KANSAS CITY • MO • 64114

No. 75 - September 1984 MICRO 9

Page 12: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

£ e e c (J U c 6 ,

To The Editor

I believe that the most basic need in the micro field is the tranportability of software from one brand of computer to another.

I, unfortunately, purchased a good computer that is no longer very popular. I have converted it to CP/M to relieve the software problem, but find that even that uses a nonstandard disk format which is difficult to get translated from the usual IBM format. Even with CP/M there are about 20 different disk formats.

I believe in innovation but I find it difficult to understand why a program written in a high level language cannot be portable between almost all micro-computers in some reasonably convenient way.

I'm in the process of determining what my next com­puter will be. But I do not intend to buy the latest model every year. The big question is not what is "state of the art" or what is fastest, it is what computer is the software going to be available for in five year or ten years. Now, most new software is being written for the IBM PC. Even CP/M-80 is being ignored by many vendors. Until recently, I thought that maybe I.B.M . would be good for many years but now I'm almost convinced that technical limitations will prevent if from being effectively expanded to larger systems such as UNIX and ADA. However, I do not think that a Motorola 68000 based system will domin­ate without the support of at least one large company in a moderate price range. I know that all software writers

cannot provide all software for all formats and all languages when almost all computers are different. So why cannot all computers be provided with a second standard ASCII disk format which is common to all computers for the purpose of transporting software and data. Then the addition of software translaters such as Apple Basic to Commodore Basic or even Basic to Pascal could reduce a nasty problem to one that is managable by most users. I doubt that every one is going to agree on any standard by which this can be done, so maybe a solution would be for a technically oriented magazine such as MICRO to publish the software and hardware specs needed to read from the various disk formats.

C. M. Nelson Indianapolis, IN 46256

The following limerick was submitted by Margie Joseph of Los Angeles, CA.

Though sometimes her memory would slip And sometimes her mind took a flip,But now don’t dispute'rShe's got a computerHer memory's a silicon chip.

JMCRO

lllllllllllllllllllllillllllllllllllllllllllllll|lllllllllllllllllllllllllllllllllllllllllllllllllllll|l|l|l|l|l|||||l|l|||l|l|||||||!ll|!lll!|lllllljllllllllllllllltlll

APPLE

• Gives names and loca tions of various Integer BASIC, Monitor, Applesoft, and DOS routines and te lls what they ’re used for

• L ists Peeks, Pokes and Calls in over 2000 memory locations

• Explains how to use the in fo rm ation fo r easier, better, faster softw are w riting

The revised ed ition w ith lie Appendix is now available at a new low price of only $19.95.(plus $2 sh/h).For the 35,000 people who already own previous ed itions, the lie Appendix is ava ilab le separate ly for jus t $5.00.

WE’VE w ADDED APPLE lie

|GUIDE & ATLAStSO NOW THERE’Sj vNOTHING MOREy

TO SAY!

10

MICRO INK =

P.O.Box 6502 |

Chelmsford, MA 01824 Z

phone 617/256-3649 (use VISA or MasterCard) s

l!lllllll!lllllllllllll!llll|llll!lllllllllllllllll!ll|]|llllllllllllll!llllllllllllllllll|llllllllllllllllllllllllllllllll!lllllllllllllllllllllllllllllllllllllllllllllll

MICRO No. 75 - September 1984

To order, send check or Money Order to:

Page 13: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

McMill 68000 Coprocessor System

Distributor

Stellation Two P.O. Box 2342 Santa Barbara, CA 93120 (805] 966-1140

IntroductionThe M cM ill 68000 Coprocessor System is designed for the Apple II and He. It is a peripheral board that enables the Apple to run 68000 programs. The CPU is a 68008 chip that utilizes direct memory access logic allowing the 6502 and 68008 to alternate memory cycles. All memory and I/O slots can be directly accessed via the 68008. Using alternating cycles while the 68008 is running, the 6502 continues to execute at one-half speed or faster. Special address translation logic resolves conflicts among 68000 exception vectors, 6502 zero page and Apple II I/O space locations. The fact that the McM ill 68008 is truly a coprocessor that runs simultaneous tasks with the 6502 is a particularly powerful advantage. (During disk access, game paddle reads and any other timing-loop dependent functions the 68008 must, of course, be halted.)

InstallationThe M cM ill 68008 Coprocessor System board is painless

'and easy to install. All that is necessary is inserting the board in one of the peripheral card slots. There aren’t any additional connections or worries to deal with.

What is ProvidedThe package includes the M cM ill coprocessor board, Hardware Documentation Guide, a Motorola Inc. MC 68000 Microprocessor Programming Card, a floppy disc entitled Fig Forth, version 1.0 Mountain View press, hardware warranty [McMill will repair or replace free of charge any board that is defective within one year of the original purchase date, damage caused by accident, misuse, or tampering not included).

You can also order the S-C 68000 Cross Assembler with the M cM ill Coprocessor System. This is an excellent assembler as those who already have their 6502 version will attest to. All S-C assemblers use the same set of directives and commands, making adaption to different chips very easy. The 68000 version has some differences from the standard S-C Macro Assembler, such as expres­sions being expanded to 32 bits, and other alterations necessary to accommodate the code and syntax differences in the 68000. All variances are clearly documented. Included in their latest version are 10 new commands and7 new directives, improving what is already a fine product.

No. 75 - September 1984

Under a special arrangement with Addison-Wesley Publishing Company Stellation has been allowed to provide a monitor from Tim King and Brian Knight's book 'Programming the M 68000.' The book takes the reader through the world of the 68000 and how to program it. A floppy disk with their monitor and a debugger is provided. The monitor/debugger is compatible with the S-C Macro assemblers source files, allowing easy editting and assembly.

What is Not ProvidedThe board itself hasn't any ROM or RAM. None of the languages most 68000 users would use are provided, namely C, Fortran, UNIX, and LISP. Although a version of C is due to be released, this is still a serious shortcoming.

DocumentationThis is where the McM ill package is the weakest. The Hardware Documentation Guide could cover more and include a schematic diagram that is legible. Expanded hardware documentation is scheduled for release, which will hopefully correct the shortcomings of the present version. The Monitor/Debugger relies on the information in King and Knight's 'Programming the 68000' for documentation. The information needed is basically there but the organization is not. It is organized as a chapter in a book [which is what it is), not as documentation for software. Although the Mountain View Press Fig FORTH is included with the McMill package, you have to send away to Mountain View Press to get the complete documentation (for a nominal charge). This strikes me as a good way to create unhappy and frustrated users. It would make more sense to charge more for the package and deliver it complete, rather than inconveniencing and possibly annoying the user.

PriceThe M cM ill with FORTH is $229.00; with the S-C Assembler it is $299.00.

ConclusionThis package has its ups and downs. It does gives theApple user an inexpensive way of upgrading to a 68000machine, while not having to give up the familiarityof his present machine. On the other hand the poordocumentation, lack of on board RAM and ROM, Fortran,LISP and UNIX are enough to discourage many users. Forthose who are soley interested in getting into 68000Assembler, using the S-C Macro Assembler with theMcM ill board is an inexpensive means of doing so. In theend it depends on what your needs and expectations are asto whether this is a product for you. «•/*«/%-^ IQ iQ

77~MICRO

Page 14: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Super Action Software!

DENVER, COLORADO

Perplexian C hallenger $23.95The incredibly .-•yspor'.'iivy three-a

p a c e f ig h te r is -n vo',:’' h a n d s Spi t

c o n t in u o u s d is p la y C: ',-CL.r S f'ip S

c: a tn r e e - d im e 'is ;c r d l . a n im a te d vie

r ais \o y c± v c k c c n '^ o i

; l i ee n g ra p h ic s pr'O'-'ide

iS t ru m e n ta t io n as w e l

r- o t s p a c e

You. as a 3 'lo t. m u s t u t i l iz e :rg h tm n g fa s t re f le x e s to d e s t ro y

in va d in g s h ip s , a nd avo id th e ir " e tu r n f r e S ,rn U ta n e c u S ly , you

m u s t m a n e u v e r y o u r sh ip to c a p tu re s p a c e d e b r is t h a t

r e m a n s fro m th e e x p lo s io n s

O u ts ta n d in g g ra p m c s fe a tu re s in c lu d e s m o o th 3 -D

ro ta t io n s , s p l i t s c re e n s , a nd th e n o s : in c re d ib le h /gh-

" e s o l j t ic n h y p e rs p a c e s e q u e n c e e v e r p ro d u c e d

P ro g rs m m e c e n t ir e ly m m a c h in e la n g u a g e , th is a c t io r -

s t r a te g y g a m e :s g u a ra n te e d to b lo iv you aw a y

A ll th e p ro fe s s io n a l fe a tu re s yo u e x p e c t a re in c lu d e d ,

a u to m a t ic s e if -c e m c . h igh s c o re r e te n t io n , p a u se , a n c

p ro v is io n s fo r 1 to 4 p la y e rs . A d d to th is , fe a tu re s you d c n 't

e x p e c t like e a s y - lo a d in g a nd m u s ic d u r in g th e load. P e rp le x ia n

C h a lle n g e r is a g a m e th a t b r in g s th e a rc a d e e x p e r ie n c e to y o u r h o m e

C Y B E R W O R L D £3995T h is f iv e - s c r e e n a rc a a e a d v e n tu re p a c k s th e c o m p u te r w ith

in te n s e g ra p h ic s a nd s o u n d ! Y o u a re a s p e c ia l C y b e r le a g u e

a g e n t in a u n iv e rs e fu ll o f h o s t i le a lie n s a n d v ic io u s ro b o ts .

J o y s t ic k a n d k e y b o a rd t r a n s p o r t yo u th ro u g h 3 - D ro o m s ,

s p a c e o a r n e r s , f le e ts o f in v a d e rs , a n d w a rs h ip - r id d e n

q u a d r a n ts o f s p a c e O v e r 1 0 0 s p r i te s , 8 n e w c h a r a c te r s e ts ,

a n d d o z e n s o f m n d -b o g g lm g s o u n d e f f e c t s m a k e up th is m u l t i ­

la y e re d a d v e n tu re . A n im a t io n , a c t io n , a nd s t r a te g y all

c o m b in e d in to a g a m e s o e x te n s iv e t h a t tw o d is k s id e s a re

la m m e d w ith g a m e p ro g ra m s a nd d a ta ! R e a c h th e u l t im a te

ra n k o f a d m ira l a n d yo u m a y c a rv e a n ic h e t r th e p e rm a n e n t

h ig h - s c o r e Ust. A fu l l- s iz e b o o k q u a li ty m a n u a l w i th fu l l- c o lo r

c o v e r s is in c lu d e d to g u id e you th ro u g h y o u r m o s t e x c it in g

g a m e e x p e r ie n c e

C D f Z C l R d $39.95Ju m p from ropes ro ladders, dodge p lum m ering boulders and

duck under deadly arrows in your quest for sparkling d iam onds,

gleam ing bars o f gold, and glistening pearls. W ith joystick in hand

you m ust explore forty dazzling screens, each a new and exciting

adventure. Take the key co unlock rhe doorw ay to your nexr spine-

tingling level, Each key restores your magical powers, a llow ing you

ro cas rover ren d ifferent spells. W ith rhese magic spells you have the

power to overcome vicious creatures, terrifying traps, and perilous

plunges.

Your W i:a rd is realistically animated m every possible direction.

Dozens o f movements are possible — ju m p over burn ing fires,

sh im m y up or dow n ropes and ladders, even slip dow n treacherous

slid ing staircases! Magic porrals move your W izard through m idair

and prorect you from a myriad o f fully-animated fiendish monsters.

Catch an elevator to the top o f the screen and dart through slid ing

gates in your quest for magic and treasure.

W iza rd ’s fascinating variety o f screens are sure to please and

entertain, and o f course you can bu ild an un lim ited num ber o f your

ow n levels using the construction set provided w ith your game.

fiWtz ft sf ki ;

^PROFESSOR *3435A n i n - d e p t h s e t f - l u l u r i a l f o r t h e C o m m o d o r e 6 4 o n a t w o -

s i d e d d i s k . T h i s m e n u - d r i v e n t u t o r i a l c o v e r s e v e r y a s p e c t

o f y o u r C - 6 4 — B A S I C , k e y b o a r d , s o u n d , m u s i c , s i m p l e a n d

a d v a n c e d g r a p h i c s . Q u i z z e s l e s t y o u r c o m p r e h e n s i o n at

t h e e n d o f m a n y l e s s o n s ' O n - s c r e e n i l l u s t r a t i o n s , s o u n d

e f f e c t s a n d f u l l - c o l o r i n t e r a c t i v e g r a p h i c s m a k e l e a r n i n g

e a s y a n d m e r e s t i n * . T h e P R O F E S S O R i s y o u r O N L Y c h o i c e

f o r a n a l l - i n - o n e , t h o r o u g h t u t o r i a l a b o u t I h e C o m m o d o r e 6 4 f

flio tfy m o g ’ s ^ Im r $39.95R e a l- lim e a d v e n tu re e x c ite m e n t a ! its b e s l SoWe c o u n iie s s

puzz les an d s lay o ve r a dozen rn o n s te rs by us ing the huge v o c a b u la ry o f o ve r 20 0 w o rd s T w o c h a lle n g in g d if f ic u lty le ve ls a w a it yo u w ith o ve r 80 a reas , e a ch fu lly d e s c r ib e d in O ld E ng lish s c rip t

M e n a c in g m o n s te rs , k m vm g v illa ins . ta lle re d c o a e b o o k s a nd tre a c h e ro u s te rra in a re ju s t a le w of the s itu a tio n s you m u s t o v e rc o m e m yo u r q u e s t fo r the th irte e n p r ic e le s s tre a s u re s M o re than s e v e n ty o b |e c ts a re in v a lu a b le to you in yo u r s e a rc h fo r g lo ry and w e a lth 1

A fu ll-s ize . th o ro u g h ly illu s tra te d m a n u a l <s in d u c e d F e a tu rin g c o lo r fro n t a nd b a ck , b o o k q u a lity , and a lo id -o u t m ap this 'e x tra fu rth e r e x te n d s th e p ro fe s s io n a lis m of 'h is g a m e T he

fo llo w in g a re q u o te s Irom u n s o lic ite d te s tim o n ia ls sen t to us by a d v e n tu re rs .n G c th m o g s La ir

' I ha ve e x tre m e ly e n io y e d G u th m o g s La ir a nd p lan to buy m o re a d v e n tu re g a m e s

S co tt T u lm a n M e m p h is . TN

G o tn rn o g 5 L a ir is the Desf a d v e n tu re I ve eve.’ p iayedD e n n is M a n o c h io . Jr

S a ra toga

Supershipper 64A c o m p l e t e m u l t i - p r i n t e r s h i p p i n g s y s t e m w h i c h o p e r a t e s

1 >(i t h e i n e x p e n s i v e C o m m o d o r e 6 4 . O i l e r s a l l i h e f e a t u r e s

ol m o r e e x p e n s i v e , m o r e c u m b e r s o m e b u s i n e s s s o f I w a r e a t a

l o w . l o w p r i c e . F u l l - s c r e e n , f u l l - c u r s o r e d i t i n g o n a l l d a t . i

e n l r v . P n r i l s j m o i c e s . C O D. l a g s , m a i l i n g a r i d s h i p p i n g

l a b e l s . S o r t s y o u r c u s t o m e r l i s t a p h a b e t i c a l l y . b y c i t y s t a l e

o r b y s a l e s p e r s o n . K e e p s c o m p l e t e r e c o r d s o f a l l i r n o i c e s

a n d a c c o u n t s o n d i s k — u p I n 8 0 0 a c c o u n t s p t i d i s k ! A u t o ­

m a t i c b a c k u p s , p r o d u c t c h a r t s a n d m a n y o t h e r f e a t u r e s

a r e a l s o i n c l u d e d .

Supershipper Accounting' /' he a c c o u n t i n g s u p p l e m e n t t o ( h e S u p e r s h i p p e r 6 4 . P r i n t s

s t a t e m e n t s , b a n k d e p o s i t s , p a s t d u e a c c o u n t s a n d d a i l y or

m o n t h l y s . d e s r e p o r t s . B r e a k s d o w n s a l e s c o m m i s s i o n s a n d

p r i n t s a l l c u s t o m e r ' s p a s t I r a n s a c l i o n s . A l s o p r o v i d e s

i n v e n t o r y c o n t r o l f o r u p l o ZOO d i f l e r e n t p r o d u c t s . T h e o n l y

w a y t o f u l l y c o m p u t e r i z e y o u r b u s i n e s s !

Supershipper 64 $99.95Supershipper Accounting $79.95

Progressive Peripherals & Software2186 South Holly, Suite #2, Denver, Colorado 80222

Call fo r more inform ation or a dealer near you.

TELEX: 8 8 8 8 3 7 (3 0 3 )7 5 9 -5 7 1 3 (3 0 3 )7 5 7 -0 8 3 0 TWX: 91 09971 314

Page 15: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

'le o U c a ^Product Name: Person-to-PersonEquip. Req’d:

Price:Manufacturer:

Apple II, I I + , He - DOS 3.3Modem recommended-Hayes, Apple orNovation$39.95Trutec Software, Inc.1700 Solano Ave.Berkeley, CA 94707

Product Name: WizardEquip. Req'd: Commodore 64Price: 39.95Manufacturer: Progressive Peripherals & Software

2186 South Holly, Suite #2 Denver, CO 80222

Description: If you must have a game, it should at leastutilize the built-in capabilities of yorn computer to the maximum. Wizard does! The game is of the "Donkey Kong” genre in which you move around the screen to reach an ultimate destination, while getting points by taking treasures and avoiding fatal hazards. Through the use of sprites, clever sound effects, a superior collection of options, a large number of screens and many unique concepts, it goes far beyond similar games. For example, there are 'spells' that can be used to ward off calamity. Some of these, such as ‘invisibility’, can protect you from harm, but at the same time may make it more difficult for you to move around the screen since you can only see the wizard against colored backgrounds. Also, the invisibility 'wears off' as you use it to avoid destruction. High scores are automatically maintained on disk.

Pluses: The utilization of the Commodore 64's sprites,sound, programmable characters and color provide an excellent demonstration of the capabilities of the computer and should inspire programmers to improve their own displays. The game involves more than just the complex coordination found in many other games. A good deal of strategy is required to master the game. The game is even fun to watch while another plays, so that sharing the game in a multi-player mode is enjoyable. The choice of screens, speeds, spells and so forth keep the game from getting repetious, even after many hours of play. The most significant feature is the ability to generate your own screens! This goes beyond merely playing the game. This gives the novice a chance to experience the joy of 'programming' a computer to make it do what he wants. He can design screens as complete as those that come with the package, with hazards, spells, colors and the like.

Description: A full-featured communications program including a mailing list/telephone list file, auto-dialing, including secondary carriers, terminal program with auto log-on and printed output, including form letters and mailing labels. The entire program is menu-driven with consistancy of response throughout the program. The 80 page documentation is easy to read and completely explains any possible questions. The manual includes many examples of command files.

Pluses: This program has all the bells and whistles of standard communications/ terminal programs, plus it incorporates a complete mailing list program with telephone numbers that can be searched and dialed, including pass word numbers to carriers such as MCI and SPRINT. A single keystroke can dial and log-on to such as CompuServe and Source, upload electronic mail, check your mailbox, download its contents, sign off and hangup.

Minuses: None noted.

Skill level required: No prior experience required.

Reviewer: Phil Daley

Product Name: Mail NowEquip. Req’d: Commodore 64 with disk and printerPrice:Manufacturer: Cardco, Inc.

313 Mathewson Wichita, KS 67214

Author: S. & S. Faure and G. Coggin

Description: A user-friendly mailing list program for 600 names per disk with add, delete, modify and sorting options. The printer options include one or more rows of labels, repeat labels, and printer codes for double strike, enhanced, etc. There is also a convert function to change the file format into one readable by the Write Now! word processor.

Minuses: It may become habit forming.

Documentation: Very extensive for a game. Providesmore than enough information to play the game and to create new screens.

Skill Level: With the variety of speeds and screen difficulty, the game is suitable for all ages. The new screen creation is limited only by the users imagination, not any knowledge or training limitations.

Reviewer: Robert M. Tripp

Pluses: If you are familiar with label systems, the manual is almost superfluous - the program is that easy to follow. The search command quickly and easily can find a string in any major field. Modify quickly changes any data. The program performs flawlessly.

Minuses: If you like slapstick comedy, read the manual. Otherwise just use the program and forget the satire.

Skill level required: No prior knowledge required.

Reviewer: Phil Daley

No. 75 • September 1984 MICRO 13

Page 16: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Product Name: StockerlEquip. Req’d: Apple II, II + , He - CP/M only

with Z80 card, TRS80 Mod III, 4, II,12, 16 card

Price: $300.00Manufacturer: Engineering Management Consultant

P.O. Box 312 Fairfax, Virginia 22030

Description: This package is designed to help the user forecast stockmarket turning points, enabling better investment and profit performance.

Pluses: Using a unique Moving Window-Spectral method Stockerl saves time in stockmarket forecasting. Inputting of historical data is easy and user friendly (prompting provided). Stockerl employs a univariate model (one vari­able in, the same variable out). Future values are predicted using historical data which is input in a user oriented data editor. Data can be entered in a Create mode or Update mode. Statistical comparison is provided in addition to graphical representation and comparison. Charts/graphs are in an easily readible form. One free hour on the Electronic Forecast Information Service is also included in the package.

Minuses: If the user is not very familiar with stocks and forecasting he is apt to be lost with this program. This is certainly not a program for the uninitiated. At one point through an error entered into the program we ended up in

OS9APPLICATION

SOFTWAREACCOUNTS

PAYABLE

$349ACCOUNTSRECEIVABLE

$349

GENERALLEDGER

withCASH

JOURNAL

$449

PAYROLL

$549SMALL

BUSINESSINVENTORY

$349COMPLETE DOCUMENTATION $19 .95

OS9 & BASIC 0 9 ARE TRADEMARK OF MICROWARE, INC. & MOTOROLA CORP.

SPECIALTY ELECTRONICS

(405) 2 3 3 -5 5 6 4 2 1 1 0 W. WILLOW - ENID, OK 73701

an infinite loop. A second try did not produce this prob­lem. Unless you are a serious player of the market it would be hard to justify the cost of this program.

Documentation: The manual provided is clearly laid out and reasonably easy to read. Instructions and descriptions are understandable if the user has an understanding of the subject. It is assumed the user is familiar with his com­puter's operating system. Technical data is provided, as are sample case studies, and a bibliography. The manual does suffer from a number of typos.

Skill level: Intermediate to advanced.

Reviewer: Mark S. Morano

Product Name: MPP-1000C ModemEquip. Req'd: Any Atari ComputerPrice: $149.95Manufacturer: Microbits Peripheral Products

225 W. Third Street Albany, OR 97321 503/967-9075

Description: There probably is not any easier way to get into telecommunications with your Atari. The package consists of the modem which plugs into a joystick port and a standard telephone connector; a cartridge containing the terminal software; and a short manual. The program is totally menu driven, making it simple for anyone to use. The following features are supported: display disk drive 1 directory; direct transfer of information between disk and modem; buffer modem to memory and then copy to a specified device and visa versa; select between full/half duplex, ASCII/ATASCII translations, X-modem protocol on/off, 38/40/80 column display, no/odd/even parity; auto answer; enter/save/load up to ten phone numbers to be used to dial number, and more. By combining the various features, files may be up/down loaded from Atari Bulletin Boards (BBS), other Ataris and other computers. A CompuServe demonstration package is included, and, thoughtfully, a list of bulletin board services listed by state throughout the country so that you have someone to talk to when you first get started.

Pluses: Extremely easy to connect, use, and understand.

Minuses: None noted.

Documentation: Basic information is covered well Afew more examples of combining the various options for specific tasks would have been useful.

Skill level: Any and all.

Reviewer: Robert M. Tripp

AlCftO

14 MICRO No. 75 ■ September 1984

Page 17: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

■ (p c tf u n e

'^ In tro d u c tio n ^ * *to

FORTHI I S i IH I 3 F1I in i im i = 1RP in r irnr= in r = ---------1

Basic why’s and wherefore’s about the FORTH language.i--------- 3 RI— = —= in i = i n i-------= i n i^ ^ ^ = i n r = i n [ ^ ^ ^ = in r = -------in r = --------in r= i

by Kenneth Butterfield Los Alamos, New Mexico

In the early spring of 1978, I first le arn ed of FO R T H from an a d v ertise m en t for P e tF o rth by Programma International. At the time, I was doing scientific calculations and was looking for a language that would be faster than the Pet BASIC. Another goal I had for the PET was to use it to control experiments in a physics laboratory. I called Programma to find out if FORTH was suitable for my needs. The call was transferred to the programmer who had written PetForth which really gave me a feeling that I was getting first class service! My first question was Is FORTH a good Language'! and the response was the classic, I don ’t use languages, I just piogiam them! The question Is FORTH a g o o d la n g u a g e ! re m ain e d unanswered. I hope to provide my answer to this question, as well as to the questions What is FORTH!, and

Who would be interested in FORTH!First, FORTH is more than just a

language. It can be a stand-alone operating system that provides basic support for terminal and disk control. Multi-tasking and multi-user FORTH systems are available. FORTH also provides a block structured high level language that can be used in an interpreted or compiled mode. Among some of the block structures provided are th e D O ... lo o p , B E G IN ... WHILE...END, and BEGIN...UNTIL loops and the IF .. .E L SE .. .ENDIF control structure. On the other hand, FORTH has been called a pseudo­machine language because the key words used for moving data from place to place are very simple and similar in use to the techniques used in assembly language.

FORTH can have all of the above features because it is an extensible

language. Most implementations of FORTH have a small kernel written in machine language and the remaining 80-90% of the language is written in FORTH. Any new 'words' (FORTH's name for a procedure or subroutine) are defined using the previously compiled words. Each new word becomes part of the FORTH 'dictionary' (list of words or commands) and are available for use in future definitions. The programs that you write become part of the language.

One of the nicest features available in FORTH is the on-line interpreter. Commands may be given to FORTH from the keyboard in a similar manner to the ‘immediate mode' of most BASIC interpreters. T h is allows FORTH to be used as a calculator. Another use for the interpreter is in program development and. debugging. The interpreter allows the programmer

No. 75 ■ September 1984 MICRO 15

Page 18: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

to try out a sequence of commands, one at a time, to verify their consequences. After the sequence has been shown to work properly, it can be given a name and compiled into the language for future use. A program [word) is activated by typing its name in the interpreter mode, or by entering the name in the list of names that makes up the definition of a new word.

FORTH was originally written by one man, Charles Moore, to provide a better media for program development than the languages available at the time. One of its first uses was in real time computer graphics where, it is said, FORTH provided a marked increase in speed over FORTRAN! 1). The first widespread use of FORTH was in the computer control of large telescopes, and FORTH continues to be the language used at many of the world's largest observatories. In fact, my early interest in the language grew when a fellow student informed me that FORTH was the language he used when doing his research at the Kitt Peak Observatory. It seemed to me that a language that could control a large telescope should be useful in other control applications.

More recent uses of FORTH continue the computer control theme. Two applications are the control of robot cameras for special effects in the motion picture industry[2), and remote sensing of water depth and speed for aid in navigation of large barges on inland waterways(3). FORTH is still strong in the area of computer graphics. Charles Moore has a CAD-CAM system that runs in 28K of memory(4). FORTH has been shown to be very useful in research laboratory settings where the experiments vary from day to day. It is important to have a language that is flexible, allowing the measurement (spectrom eters, A D C ’s, etc.) and control devices (stepping motors or relays) to be connected in new and often changing configurations.

New uses for FORTH are being developed all of the time, and some of the most exciting are in the area of artificial intelligence. LISP is the language usually associated with AI projects, but there is a marked similarity in the underlying structures of LISP and FORTH. Both languages treat data and programs as lists, and have the feature that a program can create and manipulate a list that will later be used as a program. Programs written for the two languages are

similar except for the notation. LISP uses a parenthetical notation while FORTH uses a parenthesis free notation originally derived for formal logic by a Polish logician, Lukasiewicz. The difference in usage can be compared to the difference in using an algebraic calculator such as produced by Texas Instrum ents, versus a 'Reverse P o lish ’ calcu lator from Hewlett Packard

In the FORTH compiler, new words are added to the dictionary, and can be used in the definition of future programs. The structure of a word consists of a header section containing the name of the word and pointer and a data section. The data can be either a constant, a variable, a list of variables, or a list of addresses if the word is an executable word. It is LISP's ability to treat a list as either data or program th a t m ak es it u se fu l for AI programming. It is not surprising, then, that FORTH can also be used for AI applications. What is surprising is that F O R T H m ay have s ig n if ic a n t advantages for some projects.

For instance, in a knowledge-based system developed by General Electric to diagnose and troubleshoot large electric locomotives, a FORTH system operating on a PDP-11 minicomputer was found to be smaller and faster then a LISP system operating on a VAX computer(2). If you think that such a system would be out of your reach, a program recently became available for CP/M based computers that supplies an expert system language written in FORTH. A recent article uses this language to develop a w eather prediction program(5).

Hopefully, I have convinced you that FORTH is a powerful language that is useful for many different applications. Not only has FORTH been used to control large telescopes and explore artificial intelligence, it has been used to program text editors, data base systems, spreadsheets and, of course, games. Application programs of these types are often available from the same vendor that sells a version of FORTH for your machine.

If you are interested in FORTH there are many good sources of in fo rm a tio n . V ariou s com p u ter magazines print articles on FORTH either occasionally or on an annual basis. Other sources of information include newsletters and books.

MICRO has told me that it plans to publish more FORTH articles now that

their emphasis has returned to reaching the experienced users. Dr. Dobbs Journal has had an annual FORTH issue for several years. It comes out in September and is usually very good. S ev era l o th e r m ag azin es have published an article on FORTH at one time or another. You might check the availability of back issues.

One of the best information sources is the FORTH INTEREST GROUP, FIG, (PO Box 1105 San Carlos, CA.94070). FIG publishes a bi-monthly newsletter and has local chapters in many cities. Membership in FIG is $15 and includes a subscription to FORTH Dimensions. FIG also has source l is t in g s of FO R T H for m any m ic ro p ro c e s s o rs and m any m inicom puters. The FIG-FORTH in s ta lla tio n m anu al is a very interesting document and I highly recommend its purchase because it contains vocabulary listings with descriptions of the use of each word. It also contains a complete FORTH implementation written in FORTH as an example of how large programs can be written!

There are several good books available ranging from introductory level to advanced application. Starting FORTH by Brodie is a very good introductory text with the caveat that it uses FORTH Inc. syntax. Threaded Interpretive Languages by Loeliger is a very good text on the design and im p le m e n ta tio n of th read ed interpreters (FORTH is only one example] and would be a good choice for more experienced computerists. Mountain View Press, Inc. (PO BOX 4656 Mountain View, CA. 94040) lists over 30 books and manuals, a dozen of these being general descriptions of FORTH.

One last source that should not be overlooked is the instruction manual that comes with a FORTH system. There are many vendors that supply FORTH systems, and many of these have very good documentation that comes with their product.

This brings up my final topic. If you decide to get a FORTH system, what should you buy? As usual, a simple question like this cannot be answered simply. First you have to decide whether to implement your own version of FORTH using a source listing (from FIG) or to purchase a complete system. There are complete systems for practically every computer that has been on the market for more

16 MICRO No. 75 ■ September 1984

Page 19: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

than a few months. In fact, one computer (Jupiter Ace at $150) comes with FORTH as its main language. If you decide on a complete system you then have to decide on which FORTH standard to use.

Most people will want to purchase a complete system from a vendor. This has the advantage of having a working program immediately, and someone to complain to when it doesn't function in the expected manner. The main standards that exist are original FIG- FORTH, FORTH79, and FORTH83. These are all standards defined by FIG. Fortunately, FORTH83 supercedes FORTH79 and should become the most common standard as vendors update their product. Original FIG-FORTH is very common and can be extended to meet the later standards.

Another version of FORTH comes from FORTH Inc. This company was started by Charles Moore, so their FORTH has to be considered as a standard because it is the 'original’ FORTH. FORTH Inc. produces a very professional package for many different computers. They might be considered the Rolls Royce of FORTH systems.

There are many vendors that

produce a FORTH that does not meet any of the above standards for one reason or another. Quite often these sy stem s have a m arked speed improvement over a standard system. Be aware, however, that the speed increase is usually obtained at the sacrifice of portability to other machines (including other processors) which is one of the main benefits of the standard systems. Another possible sacrifice that is sometimes made is the ability to produce ROMable code. Of course this capability may not be something you need. Then too, this ability may not be an option on a standard system.

My recommendations for personal use would be to buy a FIG-FORTH compatible system, and preferably one that has enhancem ents to m eet FORTH83 standards. This type of system can run programs written for many different computers. Your first system should probably be a complete system purchased from a vendor. If you are really brave or foolhardy you might consider the option of configuring your own system starting with FIG source code. I have done this for a 6809 computer and succeeded (mostly) in

getting it to work. This is a particularly good route for someone who has built a computer from scratch. Implementing your own system is not easy, but it is tre m e n d o u sly s a t is fy in g w hen completed! In any case, FORTH is a very interesting language that is well worth learning.

References1) Marlin Ouverson, Interview with

Charles Moore, FORTH Dimensions vol. 6, 2, pg. 2, July/Aug. 1983.

2) Kim Harris, Forth Applications Conference, FORTH Dimensions vol. 6, 2, pg. 31, July/Aug. 1983.

3) Peter J.Largeren, FORTH : Cheaper than Hardware, FORTH Dimensions vol. 6, 2, pg. 13, July/Aug. 1983.

4) Robert Berkey, FORMAL 1983: A Review, Programming Techniques, FORTH Dimensions vol. 5, 5, pg. 34, Jan./Feb. 1984.

5) Jack Park, Expert Systems and the Weather, Dr. Dobbs Journal vol. 9,4, pg. 24, April 1984.

JMCftO

C64-FORTH/79 New and Improved

for the Commodore 64C64-Forth/79T“ for the Commodore 64-$99.95

• N ew and im p ro v ed F O R T H - 7 9 im p lem e n ta tio n w ith ex te n s io n s .

• E x te n s io n p ack ag e in clu d ing lines, c irc les , scaling, w in d o w in g , m ix ed h igh re s -c h a ra c te r g rap h ics and sp rite grap h ics.

• Fully co m p a tib le flo a tin g p oint p ack ag e includ ing a rith m e tic , re la tio n a l, logical and tra n sc en d e n ta l fu n ctio n s .

• S tr in g e x te n s io n s in clu d ing L E F T $ , R IG H T $ , and M ID $ .• Full fe a tu re s c re e n ed ito r and m acro a ssem b ler.• C o m p a tib le w ith V IC p erip h era ls in clud ing disks, data se t,

m od em , p r in te r and cartrid g e .• E xp an d ed 1 6 7 page m an u al w ith ex am p les and application

screen s .• "S A V E T U R N K E Y " n o rm ally a llow s ap p licatio n p ro g ram

d is tr ib u tio n w ith o u t licen sin g o r ro y a lties .

(C o m m o d o re 6 4 is a tra d em a rk o f C o m m o d o re )

TO ORDER-D is k only .-C h e c k , m o n e y o rd e r, b an k card, C O D 's add $ 1 .6 5 -A d d $ 4 .0 0 p o stag e and h an dlin g in U S A and C an ad a -M a ss . o rd e rs add 5% sa les tax -F o re ig n o rd e rs add 20 % sh ippin g and handling -D e a le r in q u ir ies w elco m e

PERFORMANCE MICRO PRODUCTS770 Dedham Street Canton, M A 02021 VISA

(617) 828-1209M oriwC<vd

ATTENTION COMMODORE 64 OWNERS:Is THE CLONE MACHINE really dead?”

Yes, there comes a time when a product grows old and isn’t the latest state of the art. Thank goodness we understand that here at Micro-W. Our all new version (known as SUPER CLONE) will surely prove that we are still numberone in the back-up business. You’ll still get the old reliable Clone Machine but we've added the following:1) A fast clone copy (approx.

14 minutes) that1 s simple to use2) A Super Unguard utilility that quickly handles errors 20 thru 29 (and you don’t even have to disassemble your drive like some of our competitors suggest)3) A new unique way to back-up formerly uncopyable software.Don't worry if you are a registered owner of our earlier version, we've got you on file and this upgrade will only cost you $10 plus shipping and handling. Dealers, call us for stock balancing on old merchandise .STILL ONLY $49 95*

Available from:S h o u ld 'v e m a d e back ih S u p e r C lon e

1342B Route 23 Butler. N.J. 07405 CALL: (201) 838-9027 To OrderDealer and Distributor Inquiries Invited.

* W e w ill a llo w $ 1 5 tra d e cred;'. fo r an y o th e r cop y p ro g ra m : r a i yo u have p u rch a se d to w a rd the p u rch a se o t S U P E R C L O N E a t $ 4 9 9 5 ; ou m us t p ro v id e y r .a r o r ^ n a . p u rc h a s e d p ro d u c t and s ta le w h y y o u w a n t ou rs ns ie a d T h is o f f c rr.dy be * i ;h c :ra w n at any tim e

r rwalldDlfc: num. ,

M ic r o n ^DISTRIBUTING. INC

No. 75 - September 1984 MICRO 17

Page 20: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Multi-Tasking in FORTHby Kenneth Butterfield

Los Alamos, New Mexico

SUMMARY

Multi-tasking is a method of allowing your computer to work on more than one program (task) at a time. I present a program that allows two separate tasks to run in the 'background' while still having the FORTH in terp re ter available in the 'foreground'. The sample tasks are a clock display, and an animated bouncing ball. These can be replaced by just about anything; including separate control programs for 'software robots'. I have given enough detail to allow you to develop other uses of multi-tasking.

I----------- IHE iB C iR F= ini— inr= i mi------------1

A technique and program for running multiple tasks under FORTH.

i 1B 1 iBl -in i in i in i m i-----------

FORTH is more than a language; it is an operating system as well. In addition, FORTH has the advantage of being changeable, and extendable. This makes FORTH an ideal media for learning how to implement various system operations. This paper will show how to implement one type of multi-tasking system. It includes a demonstration program comprised of two separate tasks (programs] that display the time, and a bouncing ball on the screen while FORTH is waiting for input from the keyboard.

To run this multi-task system you will need a fig-FORTH system with an assembler. The multi-task words will work on any 6502 based machine with modification being required only in the stack partitioning (see section on extensions). Stack partitioning is defined in RESET.POINTERS, and I have shown partitions for two FORTH systems. The demonstration is written for either PET or CBM machines with version 3 or 4 BASIC. It should be easy to m od ify m o st p arts of the demonstration to work on other computers.

For those who are very thorough

proofreaders, the demonstration can be setup using screens 110, 111, 115, 116, and 117. Screens 112, and 113 are useful for debugging. Be sure the assembler screens for your system are loaded and then load screen 117. The o th e r sc re e n s w ill be loaded automatically. As compilation takes place you will be told that some words (KEY, EXPECT) are not unique. When the prompt appears, run START. If everything is correct you will have a clock and a bouncing ball displayed on the top of the screen. In addition, FORTH will be ready for input from the keyboard. Hit a RETURN and you should get an 'OK' response. Try adding two numbers and printing the result. While you are typing, the d isp lay w ill operate n o rm ally . However, when you hit return it will stop m om entarily while FORTH interprets the line, and then it will start up again. Now enter the following line.

: TEST 100 0 DO I . LOOP ; TEST

Note that the display is halted unril TEST completes. Next enter

TEST1 100 0 DO I SLEEP . LOOP ; TEST1

This time the display should continue while the numbers are being printed. The lesson here is that you can define any FORTH word so that the multi­tasking continues simply by inserting sleep anywhere inside the most active loop.

If you are the cautious type, or if the demonstration didn’t work, you will want to debug each module separately. Screen 112 contains a simple example of multi-tasking that can be used to test screens 110 and 111. If you don’t have a Pet computer this screen will be the easiest way to try multi-tasking, since it w on 't require m odifying the demonstration screens to run on your machine. Each of the tasks in the demonstration can be tested in a regular (single-task) FORTH by removing the SLEEP in KEY, BB, and CLOCK. Once all of the pieces are w orking properly, go back one paragraph and try again.

A few words are in order regarding the new input structure used in the multi-tasking demonstration. It is based on the FORTH model and stores every key (including cursor keys). Both the back cursor and delete keys will

18 MICRO No. 75 ■ September 1984

Page 21: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

back up one space. All other cursor keys are entered as part of the input. When FORTH tries to interpret the line you will get errors for any cursor key. If you want to change the way FORTH reads in a line all you need to do is change the definition of EXPECT. This is how PET INPUT works in Cargil and Riley's FORTH. Incidently, you can modify PET INPUT by adding a SLEEP in one of the inner loops, and have much nicer input for the multi-tasking system.

TYPES OF MULTI-TASKING

There are many techniques that can be used to implement multi-tasking programs. These range from being straightforward to being involved and co m p le x . M ost m u lti-ta s k in g techniques are simple in theory regardless of how difficult they are to implement. I will describe a couple of methods, then show how to program one method using FORTH.

The most familiar method of performing a series of tasks is to do them sequentially. In FORTH this is done by defining a word for each task. Next, these words are invoked in order, either from the keyboard or from another word. In BASIC the tasks would be a set of subroutines and a main program would be used to call the subroutines in order. This method of multi-tasking is sometimes called the hen - and - piglets method [ 1 ].

The hen-and-piglets method is fine for simple programs. It requires no programming overhead. It is simple to understand, and it is easy to add another routine into the loop. The main problem with this method is that a slow task must finish before any other task can start. How many times have you waited for a long printout? Another problem is that it might be hard to determine the location for the RETURN required for each subroutine. For instance, in a terminal emulator program, getting characters from the keyboard and from the modem are separate tasks. Sending characters to the CRT and to the modem are other tasks. Or are they? Characters are sent to the modem only when received from the keyboard. Should the task be to get a character and send it? What if no character is present? In this case the task boundary becomes confused if a RETURN is required.

Another type of multi-tasking is tim esh arin g . For users of big computers, timesharing is a well known, and often cursed, way of life. Timesharing has advantages, but it is complex. I am prejudiced against timesharing because it is almost synonymous with multi-user systems. I bought a computer to have it to myself. On the other hand, timesharing offers advantages to a single user who can run more than one task at a time. An example of this is spooling of printer output. Spooling means writing the listing to a disk file (fast), and then copying the file to the printer (slow) using a separate task. This task will share time with all other scheduled tasks making it look as though several things are being done at the same time.

Timesharing is complex because the time to switch tasks is usually determined by a clock that interrupts the CPU. The next task to run is determined from a list of tasks and their priorities. This requires some c a lc u la tio n and adds to the programming overhead. Fortunately, there are other methods of multi­tasking that can also have tasks run at what appears to be the same time.

SLEEPThe method I am going to implement is called SLEEP. SLEEP resembles the hen-and piglets method, but has some im portant differences, the main difference being that each routine is a closed loop. Instead of a RETURN at the end of the task, a call to SLEEP is inserted anywhere in the closed loop of the routine. SLEEP then changes the current task to the next task in a list. In a sense SLEEP plays the part of the main control loop in the hen-and- piglets method.

As in the hen-and-piglets method, tasks are changed under simple and direct programmer control. There are no automatic switchings of tasks at unknown times and places as might happen in a timeshared system. There is also no need to write interrupt handling routines. The order of the tasks which will be run is determined by SLEEP. There is no need to calculate priorities at the time of a switch so overhead is kept to a minimum.

Unlike the hen-and-piglets method, tasks do not have to be completed sequentially. SLEEP can multi-task a

series of routines so that they appear to run simultaneously. This is possible because the call to sleep does not have to be at the end of the routine. If it is placed inside of a loop (say at a point that requires waiting for I/O), then only one pass through the loop will be completed before another task is given time to run. Note that the call to sleep can be anywhere in the loop. It can be at the start, the end, or anywhere in the middle. The programmer can chose a place that makes sense to him. When SLEEP next calls (awakens) the routine, the loop will continue from where it left off. SLEEP’S ability to run tasks simultaneously is similar to time-sharing, so spooling is one of its possible uses.

One of the main advantages of SLEEP over hen-and-piglets is that each task can have its own stacks and variable storage. If each task has separate storage for data stack, it will not interfere with any of the the other tasks! In fact, two tasks may be the same program. It is not necessary to have separate copies of the programs for each task. Only the data storage needs to be separate. Of course, tasks can interact with each other, when desired, through the use of shared memory.

IMPLEMENTATION OF SLEEP

T h ere are sev eral g eneral considerations that need to be kept in mind when implementing a SLEEP system. Each task should either be an endless loop, or have some way of removing itself from the list of tasks. There needs to be a way to call SLEEP. There needs to be a way to set up new tasks. And last, there needs to be a way to switch stacks, variable memory, and program control.

For the sample m ulti-tasking system implemented here, each of the tasks will be an endless loop. This keeps the system easier to understand by removing spurious FORTH words. Many problems will require that the tasks be endless loops, so this system is useful as it stands. For instance, in the terminal emulator program mentioned earlier, the tasks that monitor the keyboard and modem continuously check for receipt of characters. When a character is received from either the keyboard or the modem, it is stored in the appropriate buffer. A third task will check to see if the modem buffer has

No. 75 ■ September 1984 MICRO 19

Page 22: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

anything in it. If there is a character, it will be written to the screen. Then the task will loop back to the start. A fourth task would m onitor the keyboard buffer and send characters to the modem. All four tasks would be endless loops. They would be written and debugged independently of each other, simplifying the programming effort. In each of the four tasks, a single call to SLEEP would be added somewhere in the loop to tie the system together.

FORTH provides a simple way to call sleep. All that needs to be done is to compile the name SLEEP somewhere within the main loop of the task. This can be done directly or indirectly. Because one of the better places to put SLEEP is at the end of a loop, one way to compile SLEEP indirectly is to redefine LOOP, REPEAT, UNTIL, etc. T h is m akes program m ing look identical to a non-SLEEP environment. One problem with this approach is that m ore than one SLEEP may be compiled. This makes a task sleep more times then necessary. The task will still run but at a slower pace and with more overhead for the SLEEP program . Even though in d irect compilation of SLEEP can be slower, I generally use it because it is easier. Words that work in a normal FORTH environment need only to be reloaded using the new loop words to work with SLEEP.

The initialization of the FORTH SLEEP system has several steps. Tasks must be added to the list of tasks to run. Separate stacks (and variable storage areas) must be set up. The return stacks for each of the tasks must be initialized. The last step is to start the system. In the example given on screen 112 these steps are done by running NEW.TASKS and MAIN. NEW.TASKS uses RESET.POINTERS to create separate return and data stacks for each task, and uses INIT.TASK to initialize the return stack. MAIN starts the multi-tasking system after it has been initialized. It also serves as the list of tasks to run.

MAIN, the main control word, awakens four tasks over and over until the break or stop key is pressed. Each task prints its number and then puts itself to sleep. When it is reawakened, it executes the AGAIN to loop back. Thus, the output is a list of the task numbers printed repeatedly in order.

In the example, the data and return stacks have been partitioned into five pieces by RESET.POINTERS. One piece is for each of four slave tasks and one is for the main task. INIT.TASK pushes the parameter field address (PFAJ of the word acting as a task onto the appropriate location in the return stack. The data stack needs no initialization.

The key to changing tasks is the word SWITCH. SWITCH saves the current stack pointers, resets the stack pointers for the next task, and transfers co n tro l. T h e actual transfer is performed by the FORTH word ;S.

In ordinary operation, ;S is compiled into a colon definition by ;. Hence, it serves as a return from subroutine. ;S pops an address off the return stack and places it in the IP (in stru ction pointer) register. ;S finishes with a jump to NEXT which loads the W register from the address in the IP. NEXT concludes by jumping indirectly via the W register to machine language code. (That's three levels of indirection in ;S.)

The words TS1, TS2, TS3, and TS4 are required for SWITCH to work properly. They push the task number on th e data s ta ck and, m ore importantly, set up the return stack for the eventual return to MAIN. The return stack preparation is devious. The : used to define TS1, etc., compiles th e word DOCOL. DOCOL is FORTH's jump to subroutine. It pushes the current value of the IP onto the return stack. The ; (actually ;S) of TS1 is never executed. After the stacks have been switched, the jump to ;S at the end of SWITCH is performed instead. This passes control to a new task |TASK1). The new task will execute until it reaches SLEEP. The stacks are switched again, and finaly the return address pushed to the return stack by TS1 is loaded into the IP. Control is now returned to MAIN. Hence, the SWITCH located in SLEEP serves as the ; for TS1 and vice versa. Similar actions occur for TS2, TS3 and TS4.

The initialization of the return stack can now be understood. (See definition of INIT.TASK.) TASK1 will put the PFA on the data stack. The PFA is then stored on the return stack, ready to be used by SWITCH. The array RP contains the initial values for each of the separate return stack pointers. The return stack is located in page one of

memory. The stack grows toward low memory, and the stack pointer points to the next available address. (See Figure 1.) Thus $0101 is added to the value obtained from RP when the storage address for initializing the return stack is calculated. The PFA of the task is used because it points to the list of code field addresses (CFA's) of the words comprising the task. Hence, it is the address of an address that points to machine code. Counting the return stack pointer, the three levels ofindirection needed for ;S are nowevident. [A m ore com plete discussion o f the FORTH inner interpreter is contained in reference 4],

address value return stack

pointer

01BF

01BE

01BD PFA HI

01BC PFA L0

01BB ... <== RP=BB

Figure 1. Initial return stack#1 where PFA is the parameter field address of the task that will be TASK1.

EXTENSIONS OF THE EXAMPLE

There are several points to consider when using SLEEP with a more complex set of tasks. These points include determining the size of the stacks and the technique used to store the list of tasks to be switched. You will also need to consider what types of FORTH words are suitable for m ulti­tasking and where to place any variable torage.

An example of where things can go wrong can be easily demonstrated. While the demonstration (screen 117) is operating define the following word.

: BALL A 12 300 0 DO MOVE POS DRAW SLEEP

LOOP DROP DROP ;

This BALL looks like BB except that it runs for only 300 times. When you run it, however, it doesn’t act at all the same. In fact, the original ball is also acting very strange. What went wrong? The problem is that both BB and BALL use the variables DX and DY. When one of them needs to change direction, the direction for both is changed. This is an example of tasks sharing data when they shouldn’t. To fix this

20 MICRO No. 75 - September 1984

Page 23: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

problem either BALL should be redefined starting from the definition of DX and DY, or DX and DY should be stored on the stack instead of in variables. Since each tasks has its own stack, there will be no interaction.

In the 6502 version of FORTH, the data stack and return stacks are limited in the amount of memory that they have available. The FORTH return stack uses the 6502 stack pointer. This limits the size of the stack to one page of memory. In addition, The terminal input buffer (TIB) uses some of the same space. Therefore, it is very important to estimate the size for each of the tasks to be multi-tasked and to p a rtitio n the s ta ck m em o ry accordingly. Two bytes of the return stack are used for each level of nesting of FORTH words. In addition, each active DO LOOP requires another four bytes, two bytes for the index counter, and two for the counter limit.

The data stack has even less space available then the return stack. FORTH sets aside part of the zero page of memory for this stack and uses the 6502 X register as a stack pointer. Zero page is also used for the IP W, and other FORTH registers. To make matters worse, the PET uses half of zero page for the operating system. Other computers may also reserve zero page storage.

The exact location of the data stack limits will vary from one vendor's version to another. For FULLFORTH, the stack is from 4 to 6E. For FORTH by Cargil and Riley, the stack is from 20 to 88. SO can be used to find the start (high limit] of the data stack. SO is a user variable that is normally used during an ABORT to set the data stack pointer. The lower limit is a little harder to find. You will have to decompile the word ?STACK [2], Most versions of FORTH come with a word to perform this function. If your version does not, you will have to do it by hand.

If either of the stacks is not long enough for the multi-tasking system you are implementing, then you will have to set up separate stack storage areas for each task. SWITCH will need to be modified to copy the various stacks into and back out of the separate storage areas. If care is taken in the rewriting of SWITCH, only the

currently used parts of the stack will be copied. This care will minimize the time needed to switch from one task to another. The advantage of stack swapping is that each task can have a full sized data and return stack. The disadvantage is that the overhead time (the time spent while not doing the required tasks] is larger than for partitioned stacks.

A nother con sid eratio n when implementing multi-tasking is the method which is used for saving the list of tasks to be executed. MAIN serves this function in the current example. Using the technique illustrated by MAIN, it is possible to change tasks at any time, even while multi-tasking is going on. However, there will always be the same number of active tasks. If you only want three tasks, NUL.TASK can used to replace one of the active tasks. The price paid will be the time sp en t sw itch in g to and from NUL.TASK. The following line can be used to replace task 2 by NUL.TASK.1 NUL.TASK RP 2+Cg 101-H

Any of the other tasks can be similarly replaced simply by changing the '2' to the proper number.

If it is absolutely required that the number of tasks be variable, some other technique must be developed to switch from one task to another. Screen 113 is one way that it can be done. The variable NUM.TASK is used to store the current number of tasks. The constant MAX.TASKS is the maximum number of allowed tasks. A new word TASK.SWITCH replaces TS1, TS2, TS3 and TS4. SLEEP will still be used by each of the tasks to return to NEW.MAIN. NEW.MAIN uses a DO LOOP index to determine which task to execute next. When all of the current tasks have been called once, it loops back to the BEGIN. NUM.TASK is used to set the number of active tasks for this set of calls.

This new technique allows the adding or subtracting of tasks, but the initialization and task rem oval problems are more complicated than with the original system. You will need to consider what to do when task 2 is to be removed while task numbers 3 and 4 are still required. There are also problems associated with adding a new task to a list of tasks that have been in

operation for a period of time. In this case only the new task's stacks should be initialized. If all of the stacks were initialized, each would 'forget1 everything that it had already accomplished. In many situations that could be a disaster. I have not given any listings for solving these problems because the solutions depend upon whether stack partitioning or stack switching is being used.

With either MAIN or NEW.MAIN th e re are som e im p o rta n t co n sid e ra tio n s for the task s themselves. First, tasks must be colon definitions. Tasks should either be endless loops |BEGIN...AGAIN), or provisions for termination of the task will be required. Each task must call SLEEP somewhere within the main loop of the task. The last consideration has to do with the storage of any variables used by the separate tasks.

The best place to store variables is on the data stack. If a FORTH variable is used for storage, and more than one task uses that variable, there is a good possibility for confusion. This problem can be formally stated as: tasks used in a m ulti - tasking system have to be reentrant. Reentrant means that two versions of the same task can run at the same time (but not necessarily in synchronization). It isn't always possible to use the data stack, and there are at least two solutions for variable storage provided by FORTH.

When only a small number of variables are required, defining USER variables is a good solution. A user variable is used just like a regular variable. The advantage is that USER variables are addressed indirectly through the user pointer (UP). The UP can be changed for each task to point to separate user table areas. Of course these areas must be set aside and protected. If USER variables are used then SWITCH should be expanded to include switching the UP. 6502 FORTH has 128 bytes set aside for the original user table, and the first 48 variables are pre-defined as system variables. These system variables will need to copied into each of the user tables during initialization.

If your application needs more storage than is available in USER variables, separate vocabularies for each task might be a solution. This

No. 75 ■ September 1984 MICRO 21

Page 24: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

o

o

©

Q

©

O

©

©

SCR it 1100 CR ." TASK SWITCHING ROUTINES " BASE g HEX

1 ( STORAGE FOR TASK STACK POINTERS )

2 ( ROOM FOR 5 BYTES )

3 0 VARIABLE RP 3 ALLOT 0 VARIABLE SP 3 ALLOT

4 0 VARIABLE TASK# ( CURRENT ACTIVE TASK )

5 CODE SWITCH ( INDEX... ) ( SWITCHES TO NEW TASK )

6 ( GET OLD AND NEW TASK NUMBERS )

7 TASK# IDY, 0 ,X LDA, TASK# STA, INX, INX,

8 ( SAVE PRESENT POINTERS )

9 TXA, SP ,Y STA, TSX, TXA, RP ,Y STA,

10 ( SET NEW POINTERS )

11 TASK# LDY, RP ,Y LDA, TAX, TXS, SP ,Y LDA, TAX,

12 ( SWITCH TO NEW TASK )

13 ' ;S JMP,14 BASE ! — >

SCR #

0 CR

1 234

567

8

9

10 11 121314

15

BASE g HEX

111. " TASK SWITCH— 2

SLEEP 0 SWITCH

TS1 1 SWITCH ;

TS2 2 SWITCH ;

TS3 3 SWITCH ;TS4 4 SWITCH ;NUL.TASK BEGIN SLEEP AGAIN ;

TASK INITIALIZATION WORDS )

RESET.POINTERS ( INIT. POINTERS

SWITCH TO TASK

SWITCH TO TASK

SWITCH TO TASK SWITCH TO TASK

E8 1 RP + C! 8B 2 RP + C! 6B

80 1 SP + C! 50 2 SP + C! 40

( 60 1 SP ... 30 ... 20 ...INIT.TASK ( ADDR, INDEX___ )

RP + Cg 101 + SWAP OVER !

1 SLEEP CFA SWAP 2 + !BASE ! ;S

)RP

SP

+ C! 54 4 RP + C!

+ C! 30 4 SP + C!

10 IS FOR FULLFORTH+ )

( INDEX IS TASK NUMBER )

( ADDR IS CFA OF WORD )

( NEEDED FOR FIRST RUN )

SCR # 112

0 CR ." MULTI-TASKS FOR FORTH " BASE g DECIMAL

1 : MAIN BEGIN ." MAIN" TS1 TS2 TS3 TS4 ?TERMINAL UNTIL

2 : TASK1 BEGIN CR ." TASK 1 " SLEEP AGAIN

3 : T A S K BEGIN CR . " TASK 2 " SLEEP AGAIN

4 : TASK3 BEGIN CR ." TASK 3 " SLEEP AGAIN

5 : TASK4 BEGIN CR ." TASK 4 " SLEEP AGAIN

6 : NEW.TASKS ( INITIALIZE STACKS AND RUN MAIN RUN LOOP )

7 RESET.POINTERS

' TASK1 ' TASK2

1 TASK3 1 TASK4

MAIN. " ALL DONE

INIT.TASK

INIT.TASKINIT.TASK

INIT.TASK

9

10 11 121314 ;15 BASE ! ( RESTORE BASE ) ;S

SCR # 113

0 CR ." NEW MAIN LOOP ROUTINE0 VARIABLE NUM.TASK (CURRENT NUMBER OF ACTIVE TASKS )

4 CONSTANT MAX.TASK ( MAXIMUM NUMBER OF TASKS )

: TASK.SWITCH SWITCH ; ( REQUIRED TO SUPPLY ; )

: NEW.MAINBEGIN NUM.TASK g 1+ 1 DO I I . TASK.SWITCH LOOP

7TERMINAL UNTIL

;S

allows for the use of standard variables and arrays. Each task, with all of its storage variables and arrays, will have to be compiled into a vocabulary. If the same FORTH word will be used for two of the tasks, then it will have to be loaded tw ice , once in to each vocabulary. Vocabularies offer as much storage as you have memory. The only disadvantage is that the PFA’s of words that will be tasks may be a little more d ifficu lt to obtain . T hus, the initialization process may be more complicated then in the example.

CONCLUSION

The answer to the question What axe the objectives o f a m ulti - tasking system! will depend on who is asking the question. Most people would agree that the first two objectives are to switch between tasks (programs) and to avoid having tasks interfere with each other. Two other objectives, mutually exclusive, are to make the task switching transparent to the user and to optimize input/output operations. There is a set of implementation requirements that will have to be satisfied for whatever set of objectives is chosen. I have covered many of these requirements in the text, but an explicit listing of them might be in order. Multi-tasking requires a method of:1) initializing the system2) maintaining separate task data storage3) initiating the task switching4) adding new tasks5) terminating tasks that have been completed.

All o£ this must be done in a way that minimizes the time required. After all, multi-tasking is useless if the tasks never get a chance to run.

The FORTH program described in this paper describes how to implement the type of multi-tasking called SLEEP. The key word in this program is SWITCH. SWITCH trades the system and task variables associated with the old task for those variables associated with the new task. Because of its importance, SWITCH has been coded in machine language. All of the other

22 MICRO No. 75 ■ September 1984

Page 25: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

FORTH w ords are high level definitions. Very little time penalty is incurred for the high level words because these w ords are used infrequently. The balance between machine language and FORTH words in this program was chosen to illustrate the point that the speed of operation of a program can often be improved when only a small piece is written in machine language. [Since the initial submission o f this article, two related articles on multitasking have appeared. See references 5 and 6.]

REFERENCES

1) A Sim ple Im plem en tation o f M ulti-tasking , by Wendell Brown, BYTE, Vol 6, 10, Oct. 1981, pg 1762) fig - FORTH 6502 Assem bly Listing, by W.F. Ragsdale, Sept. 1980, Forth Interest Group, PO Box 1105, San Carlos, Ca. 94070

3) fig - FORTH Installation Manual, by W.F. Ragsdale, Nov. 19804) fig-FO R T H Interpreters, by C. H. Ting, FORTH Dimensions Vol 6, #1, May/June 1984, pg 125) A Simple Multitasker, by Ray Duncan, FORTH Dimensions, Vol 5, #2, July/August 1983, pg 206) A S im p le M u lt it a s k in gEnvironment, by Martin B. Perti, FORTH Dimensions, Vol 5, #2,July/August 1983, pg 22

3 Q E 3 0 E

Ken recently completed his graduate degree in Physics at the University of New M e x ico . He has been programming small computers for over 15 years, and doesn’t trust a computer that he can't carry, or software that doesn’t come with the source code. He has worked in a variety of fields, ranging from ranching in Colorado, to Laser development at the Los Alamos National Laboratory.

SCR I 1150 CR ." TIME FUNCTION " BASE g DECIMAL

1 : TI l4l Cg 256 * 0 142 Cg 0 D+ DROP 256 U* 143 Cg 0 D+ ;

2 : SEG 0 § § DROP DROP ; : COLON 58 HOLD ; : L0C -32728 HLD !

3 : EMITTIME L0C SEG COLON SEG COLON SEG ;

4 : SMH 60 M/MOD ROT DROP 3600 M/ SWAP 0 60 M/ SWAP ;

5 : TIME BASE g DECIMAL TI SMH EMITTIME BASE ! ;

6 : CLOCK BEGIN TIME SLEEP AGAIN ;

7 CR . " BOUNCING BALL "

8 1 VARIABLE DX 1 VARIABLE DY

9 : XCHECK DUP 0= OVER 38 > OR IF DX g MINUS DX ! ENDIF ;10 : YCHECK DUP 0= OVER 5 > OR IF DY g MINUS DY ! ENDIF ;

11 : P0S OVER OVER 40 * + 32768 + ; : DRAW 128 TOGGLE ;

12 : MOVE YCHECK SWAP XCHECK DX g + SWAP DY g + ;

13 : BB 1 3 P0S DRAW14 BEGIN MOVE P0S DRAW SLEEP AGAIN DROP DROP ;15 BASE ! — >

SCR § 1160 CR ." DEFINE NEW FORTH SYSTEM INPUT STRUCTURE " BASE g HEX

1 CODE (KEY) XSAVE STX, FFE4 JSR, XSAVE LDX, PUSH0A JMP, FORTH2 : CRSON 100 A7 ! ; ( TURN CURSOR ON )

3 : CRSOFF 1 A8 C! BEGIN AA Cg UNTIL 1 A7 C! ; ( CURSOR OFF )

4 : KEY CRSON BEGIN (KEY) SLEEP -DUP UNTIL CRSOFF ;

5 : EXPECT ( TERMINAL INPUT MEMORY-2 )

6 OVER + OVER DO KEY DUP 9D = IF DROP 14 ENDIF DUP 14 = ( DEL? )

7 IF OVER I = DUP R > 2 - + > R - ELSE ( NOT DEL ) DUP 0D =

8 IF ( RETURN ) LEAVE DROP BL 0 ELSE DUP ENDIF

I C! 0 1 1 + ! ENDIF EMIT LOOP DROP ;MQUERY TIB g 46 EXPECT 0 IN ! ; ( LINE INPUT )

MQUIT ( RESTART, INTERPRET FROM TERMINAL )

0 BLK ! [COMPILE] [ BEGIN RP! CR MQUERY INTERPRET STATE g 0= IF ." OK " ENDIF AGAIN ;

9 10 11 121314 BASE ! ;S

SCR § 1170 CR . " MULTI-TASKING FORTH " BASE g DECIMAL

110 LOAD 115 LOAD

6 USER S0 8 USER R0

MAIN BEGIN TS3 TS1 TS3 TS4 TS3 AGAIN ;START ( INITIALIZE- STACKS AND START MULTI-FORTH )

RESET.POINTERS

( NEXT 2 LINES HOOK INTERPRETER INTO SYSTEM )1 SP + Cg S0 C! 1 RP + Cg R0 !

8 ' MQUIT CFA 1 QUIT !

9 ’ MQUIT 1 INIT.TASK

10 ’ BB 3 INIT.TASK

11 ' CLOCK 4 INIT.TASK12 MAIN ; HEX

13 : STOP ' 0 CFA ' QUIT ! COLD ;

14 ( STOP WILL RETURN TO REGULAR FORTH SYSTEM )

15 BASE ,-s

©

©

O

©

©

JMCRO©

No. 75 • September 1984 MICRO 23

Page 26: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Structure Trees in

FORTHby Michael Dougherty

Littleton, Colorado

Introduction

When modifying a program, it is useful to know the calling structure of that program. That is, given a FORTH word, XYZ, what is every FORTH word used to define XYZ for all calling levels down to the FORTH machine language primitives? A graphical representation of the calling structure is known as a "structure chart” (refer to Structured Design by Yourdon and Constantine]. "Structure tree” is the text equivalent. In FORTH, a Structure Tree is an indented listing of each "co lo n definition” with all of the FORTH words used to define that word.

For example, assume that the following FORTH words have been defined:

A 1 ;

B 2 +;

C 3 ;

D A B C / ;

AB A B ;

E AB D AB ;

A Structure Chart for word E is shown in Figure 1. An equivalent Structure Tree is shown in Figure 2. (In this case, the Structure Tree shows the calling levels of only the application words.) For every colon definition, all words comprising that word's defini­tion are printed in an indented fashion. For example, in Figure 2, word D in line #8 is at level 1. Lines 8 through 16 comprise the Structure Tree of the word D covering levels 1 through 3. After the word, /, the level is back to 1 and the Structure Tree of D is completed. As can be seen, the Structure Tree contains redundancy not found in the Structure Chart.

SCR # 760 ( STRUCTURE TREE UTILITY 831 BYTES ) o1

2 ( To load the utility:

3 ( 76 LOAD

4 (w

5 ( TREE Usage:

6 ( To list the Structure Tree )

7 ( of word XYZ: o8 ( TREE XYZ

9

10 A11 — >

SCR # 77 o0 0 VARIABLE LEVEL ( Current level of TREE branch)1 10 VARIABLE MAX-LEVEL ( Maximum TREE branch level )2

3 : NULL ; ( Dummy def to get : cfa value) o

4 ' NULL CFA 6 CONSTANT COLON ( Pointer to code of : word )

5 ' ;S CFA CONSTANT SEMICOLON ( Terminating CFA of : word )6 o7 ' 0BRANCH CFA CONSTANT '0BRANCH ( Words compiling arguments )

8 ' BRANCH CFA CONSTANT 'BRANCH

9 ' LIT CFA CONSTANT 'LIT10 ' CLIT CFA CONSTANT 'CLIT o11 ' (LOOP) CFA CONSTANT 'LOOP

12 ' (+L00P) CFA CONSTANT ' +L00P

13 ' (.") CFA CONSTANT 1 MA

14 o

15 - >

SCR # 78o

0 ( DRAW A BAR FOR THE CURRENT LEVEL )

1

2 : BAR ( length --- ) o

3 -DUP IF ( If length > than 0 )

4 0 DO ( For length characters )

5 ASCII EMIT ( Print a bar ) o6 LOOP

V

7 ENDIF ;8

9 — > o

o

24 MICRO No. 75 • September 1984

Page 27: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Figure 1. Sample Structure Chart.

SCR § 79

1234

567

8

9

1011121314

15

( CASE STATEMENT BY DR. C. E. EAKER, FORTH DIMENSIONS [V2,#3] )

: DOCASE ?COKP CSP 6 !CSP 4 ; IMMEDIATE

: < < 4 ?PAIRS COMPILE OVER COMPILE = COMPILE 0BRANCH

HERE 0 , COMPILE DROP 5 ; IMMEDIATE

: > > 5 ?PAIRS COMPILE BRANCH HERE 0 ,

SWAP 2 [COMPILE] ENDIF 4 ; IMMEDIATE

: ENDCASES 4 ’PAIRS COMPILE DROP

BEGIN SP@ CSP § = 0= WHILE 2 [COMPILE] ENDIF REPEAT

CSP ! ; IMMEDIATE

— >

SCR § 80

1

2

34

56

78

9

1011121314

15

( PRINT THE ARGUMENT )

: PRINT-ARG

DOCASE

1 < < 2 + DUP C@ . 1 +

2 < < 2 + DUP 6 . 2 +

3 < < 2 + DUP C@ SWAP 1+0 DO

DUP C@

EMIT

1+LOOP

ENDCASES ;

— >

( addr n --- addr )

SWAP

> > ( Skip/print 1 byte

> > ( Skip/print 2 bytes

( Skip/print n bytes )

( For len of string )( Get a dim str char )

( Print it )

Next string addr )(> >

SCR # 81

©

©

0 ( MOVE PFA ON STACK TO NEXT WORD )1

2 : MOVE-WORD ( addr --- addr+offset )

3 DUP § ( Get cfa compiled at ptr ]

4 DOCASE ( Check for special move )

5 '0BRANCH < < 2 PRINT-ARG > > ( Skip 2 byte offset )

6 ’BRANCH < < 2 PRINT-ARG > > ( Skip 2 byte offset )

7 'LIT < < 2 PRINT-ARG > > ( Skip 2 byte value )

8 'CLIT < < 1 PRINT-ARG > > ( Skip 1 byte value )

9 'LOOP < < 2 PRINT-ARG > > ( Skip 2 byte offset )

10 1+L00P < < 2 PRINT-ARG > > ( Skip 2 byte offset )

11 1 rr < < 3 PRINT-ARG > > ( Skip string till " )

12 SWAP 2 + SWAP ( Skip only the ptr itself

1314

15

ENDCASES

- >

1____AB■»-|jL A

3 1

B

3 2

3 +

1____DA

3 1*-?i— B

3 *-?

T +

2 C

3 3

2 /

1____AB

2 A3 1*-? B

3 *“>

3 +

Figure 2. Sample Struture Tree (for Structure Tree Utility)

The Structure Tree serves as a "roadmap" of the FORTH application. As in a roadmap, the Structure Tree does not tell how execution travels through the words. Instead, the Structure Tree provides all the words which could be called during the execution of a specific word. When modifying another programmer’s code [or your own after a sufficient amount of time], knowing who calls whom will help identify the words which should be changed.

Tree

The Structure Tree Utility, TREE, is defined in Listing 1. TREE generates a Structure Tree from the application dictionary in memory. Once the TREE and application are LOADed, the Structure Tree of word XYZ is printed by:

TREE XYZ

The output may be directed to the printer by the Atari fig-FORTH word PON. Since FORTH is a highly nested language, a Structure Tree listing can be quite lengthy. |The Structure Tree of

requires two and a half pages!] To limit the nested listing, two parameters are used in TREE. If a definition of a word is below the current value of FENCE, the Structure Tree will not continue to a lower level for that particular "tree branch." Further, the

No. 75 - September 1984 MICRO 25

Page 28: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

maximum level of the Structure Tree may be limited by the variable MAX- LEVEL. In either case, a Structure Tree branch will be terminated when TREE encounters a word not defined as a colon definition (i.e., VARIABLE, CONSTANT, CODE, etc.). TREE may be aborted while listing by simply pressing any key other than BREAK.

Upon execution, TREE determines the parameter field address (pfa) of the next input word with " t ic k ” ('). The name is printed and DO-TREE is used to print the actual Structure Tree. DO- TREE basically executes a loop until there are no parameter field addresses on the stack (i.e., when variable LEVEL goes to zero). If the parameter field address on top of the stack does not point to the end of the definition (;S), the name of that word is printed with indentation determined by LEVEL. IF the word is a colon definition not defined below FENCE, and LEVEL is less than MAX-LEVEL, then this new pfa is pushed onto the stack, LEVEL is incremented, and the loop repeated. When the end of the colon definition is reached, the pfa is popped off the stack, DO-TREE moves the pfa to the next word, LEVEL is decremented and the loop again repeated. When LEVEL goes to zero, the last pfa has been popped and DO-TREE is finished.

The only problem with the FORTH d iction ary is that words such as BRANCH, LIT, and ." compile arguments directly into the word being TREEed. The word MOVE- WORD is designed to skip these co m p ile d a rg u m e n ts . If your application has additional defining words which compile arguments into the definition, then MOVE-WORD will have to be extended.

Conclusion

When faced with modifying a FORTH ap p lica tion w ritten by another programmer, the Structure Tree generated by TREE can be an invaluable tool. The Structure Tree allows one to determine how a word is reached during execution, as well as who the word calls.

Reference

Structured Design, Fundamentals of a

Discipline of Computer Program and

Systems Design by Edward Yourdon and Larrv L. Constantine.

SCR

01

# 82( PRINT THE NAME WHOSE CFA IS POINTED TO BY STACK ADDR ) O

1.2 : PRINT-NAME ( a d d r ---)

3 CR ( New line for output ) o4 LEVEL g 3 -R ( Print the level number )

5 LEVEL § 3 * BAR ( Output a bar 3*LEVEL )6 g ( Get the cfa )7 2 + ( Move to the pfa ) o8 NFA ( Move to nfa )9 ID. ; ( Print name )

1011 — > o

SCR # 83 o01

2

( PRINT A WORD TREE )

: DO-TREE (pf a --- )o3 1 LEVEL ! ( Init level to first )

4 BEGIN ( Until the stack is empty )5 ?TERMINAL IF ABORT ENDIF ( Abort TREE if key pressed )6 DUP g SEMICOLON = 0= IF ( If not at a ;S word ) o7 DUP PRINT-NAME ( Print the word down below )8 dup e % COLON = ( If lower word is a : def )

9 LEVEL e MAX-LEVEL g < AND ( ...and less than MAX-LEVEL )

10 OVER g FENCE g > AND IF ( ...and greater than fence ) o11 1 LEVEL +! ( Go down to the next level )

12 DUP g 2 + ( Get the pfa of that level )

13 — >o

SCR

0

# 84( PRINT A WORD TREE, CONT’D ) o

1

2 ELSE ( Not a colon )

3 MOVE-WORD ( Move over to next )

4 ENDIF o5 ELSE ( End of a colon definition )6 -1 LEVEL +! ( Pop up to next level )

7 DROP ( Drop the addr pointer ) Q8 MOVE-WORD ( Move over )9

10

ENDIF

LEVEL g 0= UNTIL ; ( Until stack is empty )11

12

SCR

— >

# 85

o

o01

2

( USER ENTRY FOR TREE )

: TREE ( ... TREE word ... ) o34

CR

[COMPILE] ' ( Get pfa of next input word )

5 DUP NFA ID. ( Print word to be TREEed )o6 DO-TREE ( Print Structure Tree of pfa )

7

8

9

CR ;

:g o

4MCROo

26 MICRO No. 75 - September 1984

Page 29: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

fe a tu n e

Text Write Edit Read Program (T.W.E.R.P.)

Now reading, writing and editing textfiles is easy.

by N.D. Greene Storrs, Connecticut

Introduction

Sequential text files provide a method for quickly storing and retrieving data. They are essential for data-based programs (such as telephone number listing, accounts receivable, etc.). Also, they have other useful applications. Programs can be shortened by storing variables and strings in a text file and loading them after the program is run (viz. during the first few lines). If formatted properly, text files may be used as exec files which greatly extend programming flexibility. For example, it is possible to rewrite a program while it is running using an exec file.

Unfortunately, text files are hard to use. There is no direct command to list their contents. You cannot "se e" them except indirectly. Files may contain extra data or spaces and it is often difficult to check for these conditions. To write an exec file it is necessary to create a cumbersome exec file program.

The T extfile Write Edit Read Program (T.W.E.R.P.) was written to help write and edit text files. Using the program it is possible to read any sequential text file and to add, remove or edit any line within the file. Error

trap routines detect and prevent user mistakes.

Program D escription

A program listing is shown in Figure 1. The main program is only five lines long (lines 10-50). It calls a series of subprograms to perform various functions (e.g. load, read, save). These subprograms call other subroutines to run frequently used operations. The program has been written in modular form with the modules separated by remark statements. These are used only to make it easier to review the listing — they are not required to run the program.

It may be helpful to briefly review the program, since it contains several routines which might be useful in your programs. TWERP uses a command rather than a self-prompting menu. The program does not ask questions; it waits for user commands. No cursor appears unless the user has activated a command which requires further in p u t. N in e, s in g le , k ey stro k e mnemomic commands (e.g., < R> READ) are used, and they remain in view at all times. A keypress is

detected with the WAIT command (line 1200) and its value returned as K$. This is examined and the program is routed to the appropriate subprogram using the short routine in lines 30-50. If any key other than a code key is pressed, the control is returned to line 30.

Files are loaded from either the keyboard or disc. As prompted by the program, entering K activates the keyboard mode. Entering three *'s terminates entry. Since the length of a text file is often unknown, it is difficult to read it completely without an out of data error and program termination. This problem is avoided by using the ONERR command (line 5) and then reading a disc text file until an error occurs. Line 1000 tests for the out of data error code (5). If it is present, the file is closed and the total number of lines (fields) is calculated by subtracting 1 from the value of the loop counter, I, that caused the error.

The file in memory may be rev iew ed by the < R > READ command. It may be saved at anytime (with the option of changing its name]. Adding or deleting lines is done by algorithms which insert or remove

No. 75 ■ September 1984 MICRO 27

Page 30: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

lines and then renumber the file. Adding a line except at the end of the file, displaces the original lines u pw ard. For ex a m p le , if a new line number ,3 is inserted, the original line number 3 becomes 4, the original line number 4 becomes 5, and so on. Similarly, if a line is deleted, all lines with greater numbers are displaced downward. If the < E> EDIT command is chosen, the current line is displayed together with a new, blank line for entering changes. This new line replaces the original.

The commands for catalog, print and quit simply list the contents of the current disc, print the file in memory or end the program. The printout should work with most printers. However, if special commands are needed, these may be entered at line 830 [printer on] and line 850 (printer off I.

Error traps start at line 1000. As noted before, this line is used to detect the end of a data file. Lines, 1010, 1030 and 1040d are a universal error routine which may be used in any program. Line 1020 tests to see if any

records are in memory.The subroutines are used by the

various subprograms extensively. All inputs are entered via the input anything subroutine*. Commas and other characters forbidden by the normal input command may be entered and this routine limits the length of lines to 255 characters. Backspacing erases characters - a very helpful feature. The wait routine mentioned above, waits for a keypress by checking address 49152 for a value greater than 128. It then converts this value into a normal ACSII character and stores it is K$. The wait address is then reset by a poke to 49168. This is an excellent routine for single keystroke menus. The w ink cursor is a sim ilar subroutine, frequently used by Beagle Bros.* in their commercial programs. It loops through the wait and reset addresses while overprinting to achieve a blinking effect. Center title is also a useful programming tool. The caption to be centered is sent to the subroutine as an M$ string together with the desired vtab, V. Since arrow labels are used throughout the program, it was

written here as a subroutine.

Program Applications

This program works with Apple II, II + and II/e Computers**. Errors may occur if it is run on systems with

, DOS moved to a language card. Using V^TWERP, text file manipulation is

aTtnosi j i£ easy_ as jrograrn m in g in BASIC. It is especially easy to create exec files, one of the more powerful and less used routines available in Applesoft**. TWERP also provides an easy way to rename text files and/or to transfer them to another disk.

A cknow ledgem ents

Thanks to R.H. Gandhi for his helpful suggestions and to L. Fosdick for supplying the input anything routine and his permission to use it in this program.

‘ Written by L. Fosdick, E G. & G Princeton Applied Research, Princeton, NJ

*Beagle Bros, Inc., San Diego, CA

'•Registered Trademark

Listing 1

O . . . .TEXTFILE WRITE EDIT READ PROGRAM

Q (T.W.E.R.P)

30 CALL 54915: G0SUB 1200: FOR I = 1 TO 9:N.D. GREENE IF K$ = MID$ ("LRSADECPQ",I,1) THEN 50

COPYRIGHT (C) 1983 40 NEXTo ,=============================== 50 ON I G0SUB 100,200,300,400,500,600,700,800,

5 D$ = CHR$ (13) + CHR$ (4): DIM S$(500): 900,30POKE 44452,19: POKE 44605,18: 60 REM

Q 0NERR GOTO 1000 61 REM LOAD FILE

6 REM 62 REM

7 REM MAIN PROGRAM 100 HOME : VTAB 10: HTAB 5: PRINT "FILE NAME:";

8 REM 110 V = 20:M$(l) = ” D DISK < K > KEYBOARD":

O 10 HOME :V = 10: M$(2) = "< D> DISK < K> KEYBOARD": G0SUB 1210:

= "TEXTFILE WRITE EDIT READ PROGRAM": IF K$ < > "D" AND K$ < > "K" THEN 110

G0SUB 1190:V = 12 : M$ = "(T.W.E.R.P.)": 120 VTAB 20: HTAB 1: CALL - 868:

q G0SUB 1190: PRINT : VTAB 21: IF K$ = "K" THEN F$ = "KEYBOARD":ST = 1:

FOR I = 1 TO 40: PRINT GOTO 170

NEXT 130 VTAB 10: HTAB 16: G0SUB 1100

20 VTAB 22: 140 F$ = T$: PRINT D$;"VERIFY";F$:

G PRINT "< C> CATALOG" TAB( 17) "< A> ADD" TAB( 32) PRINT D$; "0PEN";F$: : PRINT D$; "READ "; F$:

"< P> PRINT";: HOME:V = 10:M$ = "LOADING FILE.": G0SUB 1190:

PRINT < L > LOAD" TAB( 17) "< D> DELETE" TAB( 32) FOR I = 1 TO 500:S$(I) = ""

_ "< S> SAVE PRINT "< R> 150 GET K$:

0 READ" TAB( 17)" < E> EDIT" TAB( 32) "< Q> QUIT"; IF K$ < > CHR$ (13) THEN S$(I) = S$(I) + K$:

:VTAB 4: POKE 35,20

oGOTO 150

28 MICRO No. 75 ■ September 1984

Page 31: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

(continued)

.....

O

160 PRINT NEXT : GOTO 30 480 S$(I) = T$:N = N + 1: HOME :V = 10: O170 HOME : V = 1:M$ = "ENTER => * * * < = TO STOP" : M$ = "ADDED LINE NO: " + STR$ (NA) :

GOSUB 1190: PRINT : PRINT : GOSUB 1190: GOTO 30FOR I = ST TO 500: PRINT 481 REM A

180 NX = I: GOSUB 1230: GOSUB 1100:S$(I) = T$: 482 REM DELETE LINESIF S$(I) = " * * * " THEN N = I - 1:V = 10: 483 REMM$ = "ENTRY ENDED AT LINE NO: " + STR$ (N): 500 GOSUB 1020: HOME : VTAB 10: HTAB 5:HOME : GOSUB 1190: PRINT "DELETE LINE NO: : GOSUB o

GOTO 30 1100:ND = VAL (T$) : IF ND < 1 OR ND > N THEN 500190 NEXT 510 HOME : VTAB 10:NX = ND: GOSUB 1230:191 REM PRINT S$(ND)192 REM READ FILE 520 V = 20:M$(1) = " D DELETE < E> EXIT" o

193 REM M$(2) = " < D > DELETE E EXIT":200 GOSUB 1020: HOME : FOR I = 1 TO N:NX = I: GOSUB 1210: IF K$ = "D" THEN 550

GOSUB 1230: PRINT S$(I): IF 530 IF K$ = "E" THEN 380 oPEEK (37) < 17 THEN 220 540 GOTO 520

210 V = 20:M$( 1) = "PRESS ANY KEY FOR MORE": 550 IF ND = N THEN N = N - 1: GOTO 570M$(2) = "PRESS ANY < KEY> FOR 560 FOR I = ND TO N - 1:S$(I) = S$(I + 1):MORE: GOSUB 1210: HOME NEXT :N = N - 1 G

220 NEXT : GOTO 30 570 HOME :V = 10:M$ = "DELETED LINE NO: ":221 REM GOSUB 1190: PRINT ND: GOTO 30222 REM SAVE FILE 571 REM

O223 REM 572 REM EDIT LINES300 GOSUB 1020: HOME : VTAB 10: HTAB 5: 57 3 REM

PRINT "FILE NAME: ";F$ 600 GOSUB 1020: HOME : VTAB 10: HTAB 5:

310 V = 20: PRINT "EDIT LINE NO: : GOSUB 1100: OM$( 1) = "< S> SAVE C CHANGE < E> EXIT": NE = VAL (T$): IF NE < 1 OR NE > N THEN 600M$(2) = " S SAVE < C> 610 HOME : VTAB 8:NX = NE: GOSUB 1230:CHANGE E EXIT": GOSUB 1210: PRINT S$(NE) : PRINT : PRINT : GOSUB

FOR I = 1 TO 3 : IF K$ = MID$ 1230: GOSUB 1100 O( "SCE", 1, 1) THEN 330 620 V = 20 :M$ ( 1) = " < A > ADD E EXIT":

320 NEXT M$(2) = " A ADD < E > EXIT": GOSUB

330 ON I GOTO 340,370,380,310 1210:IF K$ = "A" THEN 650 o340 V = 10:M$ = " SAVING FILE " 630 IF K$ = "E" THEN 380

350 HOME : GOSUB 1190: PRINT D$"OPEN"F$: 640 GOTO 620PRINT D$"DELETE"F$: PRINT 650 S$(NE) = T$ : HOME' :V = 10:D$"OPEN"F$:PRINT D$ "WRITE"F$ M$ = "EDITED LINE NO: " + STR$ (NE): O

360 FOR I = 1 TO N: PRINT S$(I): NEXT : GOSUB 1190: GOTO 30PRINT "CLOSE": HOME :V = 10:M$ = 651 REM

"FILE SAVED": GOSUB 1190: GOTO 30 652 REM CATALOGO370 VTAB 14: HTAB 5: PRINT "NEW NAME: " ; : 653 REM

GOSUB 1100:F$ = T$: GOTO 300 700 HOME : PRINT D$ ; "CATALOG" : V = 20:380 HOME : GOTO 30 M$(l) = "PRESS ANY < KEY> TO CONTINUE

381 REM :M$(2) = "PRESS ANY KEY TO CONTINUE": O382 REM ADD LINES GOSUB 1210: GOTO 380383 REM 704 REM400 GOSUB 1020: HOME : VTAB 10: HTAB 5: 705 REM PRINT

PRINT "ADD LINE NO: GOSUB 1100: 706 REM o

NA = VAL (T$): IF NA < 1 OR NA > N + 1 800 GOSUB 1020: HOME :V = 10:THEN 400 M$ = "TURN PRINTER ON": GOSUB 1190:V = 13:

410 IF NA = N + 1 THEN ST = N + 1: GOTO 170 M$( 1) = " < S > START E EXIT": o420 HOME : VTAB 10:NX = NA: GOSUB 1230: M$(2) = " S START < E> EXIT": GOSUB 1210:

GOSUB 1100 IF K$ = "S" THEN 830

430 V = 20: M$ ( 1) = " < A > ADD E EXIT": 810 IF K$ = "E" THEN 380

M$(2) = " A ADD < E > EXIT": GOSUB 820 GOTO 800 o1210:1 = N + 1: IF K$ = "A" THEN 460 830 PR# 1: PRINT

440 IF K$ = "E" THEN 380 840 FOR I = 1 TO N:

450 GOTO 430 PRINT CHR$ (91);I; CHR$ (93);"=> ";S$(I): NEXT _460 S$(I) = S$(I - 1):I = I - 1: 850 PR# 0

IF I = NA GOTO 480 860 V = 12:M$ = "PRINTOUT COMPLETED": HOME470 GOTO 460 GOSUB 1190: GOTO 30

n

(C o n tin u ed on n ex t page)

No. 75 • September 1984 MICRO 29

Page 32: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

MicroMotionMasterFORTHIt’s here — the next generation of MicroMotion Forth.

• Meets all provisions, extensions and experimental proposals of the FORTH-83 International Standard.

• Uses the host operating system file structure (APPLE DOS 3.3 & CP/M 2.x).

• Built-in micro-assembler with numeric local labels.• Afull screen editor is provided which includes 16 x

64 format, can push & pop more than one line, user definable controls, upper/lower case key­board entry, A COPY utility moves screens within & between lines, line stack, redefinable control keys, and search & replace commands.

• Includes all file primitives described in Kernigan and Plauger's Software Tools.

• The input and output streams are fully redirectable.• The editor, assembler and screen copy utilities are

provided as relocatable object modules. They are brought into the dictionary on demand and may be released with a single command.

• Many key nucleus commands are vectored. Error handling, number parsing, keyboard translation and so on can be redefined as needed by user programs. They are automatically returned to their previous definitions when the program is forgotten.

• The string-handling package is the finest and most complete available.

• A listing of the nucleus is provided as part of the documentation

• The language implementation exactly matches the one described in FORTH TOOLS, by Anderson& Tracy. This 200 page tutorial and reference manual is included with MasterFORTH

• Floating Point & HIRES options available.• Available for APPLE ll/ll+ /lle & CP/M 2.x users.• MasterFORTH -$100.00. FP & HIRES-$40.00 each• Publications

• FORTH TOOLS - $20.00• 83 International Standard - $15.00• FORTH-83 Source Listing 6502, 8080, 8086 -

$20.00 each.

(continued)O

862 REM

863 REM QUIT

864 REM

900 TEXT : POKE 44452,22: POKE 44605,21: HOME :

POKE 216,0: END904 REM

905 REM ERROR TRAPS906 REM

1000 IF PEEK (222) = 5 THEN PRINT D$;"CLOSE":

N = I - 1: HOME : VTAB 10: HTAB 12:

PRINT N;» RECORDS LOADED": GOTO 301010 HOME :V = 12:M$ = "ERROR CODE:": GOSUB 1190

PRINT PEEK (222): GOSUB 1040: GOTO 380

1020 IF N == 0 THEN HOME :V = 12:

M$ = "NO RECORDS IN MEMORY": GOSUB 1190:

oo

GOSUB 1040: GOTO 380

1030 RETURN O1040 FLASH :V = 10:M$ = "OPERATOR ALERT":

GOSUB 1190: NORMAL :V = 20:

M$(l) = "PRESS ANY < KEY> TO RESET":

M$(2) = "PRESS ANY KEY TO RESET":

GOSUB 1210: RETURN

1050 REM

1051 REM SUBROUTINES Q1052 REM

1054 REM INPUT ANYTHING

1055 REM1100 T$ = "":K = 0 O1110 GET K$:J = ASC (K$): IF J = 8 THEN 1150

1120 IF J = 13 THEN RETURN

1130 IF K = 255 THEN 1110 ~1140 PRINT K$;:T$ = T$ + K$:K = K + 1: GOTO 1110

1150 IF K = 0 THEN 1110

1160 PRINT K$;" ";K$;:K = K - 1: IF K = 0 THEN 1100

1170 T$ = LEFT$ (T$,K): GOTO 1110 ©

1180 RETURN : REM1182 REM

1183 REM CENTER TITLE1184 REM O

1190 VTAB V: HTAB 21 - LEN (M$) / 2: PRINT M$; :

RETURN

1192 REM q

1193 REM WAIT FOR KEYPRESS

1194 REM

1200 WAIT 49152,128:K$ = CHR$ ( PEEK (49152) - 128): POKE 49168,0:0

RETURN

1201 REM

1202 REM WINK CURSOR Q1204 REM

1210 SPEED= 220:M$ = M$(l): GOSUB 1190:M$ = M$(2):

GOSUB 1190:K = PEEK (49152):

IF K < 128 THEN 1210 ©

1220 K$ = CHR$ (K - 128): SPEED= 255: POKE 49168,0:

RETURN

1221 REM

1222 REM ARROW LABEL °

1223 REM1230 PRINT : HTAB 1: INVERSE : PRINT NX;: NORMAL :

PRINT "=> "; : RETURN Q

JMCftO ©

30 MICRO No. 75 - September 193

Page 33: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

\

Graphic Print for C-64 Part 3

by Michael J. Keryan Tallmadge, Ohio

In the first two parts of this series, we developed a program to produce a graphic screen dump for most popular non-Commodore printers. The fast machine language program can be used to print graphic files from a number of popular graphic programs. In this last installment, we will show how to get full-color printouts using your existing dot-matrix printer.

Add full color to your graphic printouts without a color printer.

Introduction

The graphic print program described in the last two issues will give a HiRes or MULTIcolor graphic dump in various dot patterns — the density of the dot patterns is proportional to the darkness of the actual colors used in the picture. Sixteen different patterns are used so that even two colors that look identical on a black and white monitor can be distinguished on the printout. What can be better than this? Color. There are several methods that you can use to get full-color hard copies of graphic displays created on your Commodore 64.

One method is to use a good quality 35mm camera with color film and shoot the pictures displayed on your color monitor. This is probably the best way to create slides for presentations. The third party graphic programs available for the Commodore 64 will create outstanding title slides, graphs, bar charts, and pictures. This method can also be used to create larger color prints, but this can be expensive for a full-page enlargement.

A second method is to buy a color printer or plotter. Several new color dot-matrix printers have recently been introduced; some use m ulti-color ribbons, some use ink-jet technology. You can get one for $600-$1000 + . If you want to create a lot of color prints,

you can probably justify one. If you don't yet have a printer and are thinking of getting a color dot-matrix printer for general-purpose use, make sure it can produce a good sharp black letter. Many of these color printers produce only 3 colors, and create black by mixing all 3; black letters may appear as smeared gray. Color plotters are used m ainly for very high resolution line plots, graphs, and charts. They are not generally used for dumping color pictures, but software could be written to do this by drawing a large number of short lines. However, this would be extremely slow.

A third method (and the one described in this article) is to use color ribbons with your existing dot-matrix printer. If you have a good quality graphic p rin ter, w ant full-page printouts in color only occasionally, and are willing to invest some of your time but not much money, this method is for you. It works by overprinting the same printout several times, once for each ribbon color.

C olor Ribbons

The first thing you will need is a set of color ribbons. A number of printer

supply firms sell ribbons in various colors for most popular printers at about 30% higher cost than the standard ribbons. The ribbon cartridges are exactly the same as your black ribbons; the only difference is the color of the ink on the ribbon. Note that a set of ribbons is used — one for each color — multicolor ribbons are not used. Another way to obtain a set of color ribbons is to ink your own. You can buy new, uninked ribbons, place them in your old cartridges, and use one of the new mechanical inking gadgets that wind the ribbon while applying ink.

How many colors will you need? Well that depends on the type of pictures you want printed and on the colors that you can obtain. You certainly do not need all 16 colors that the Commodore 64 can produce. Many of th ese can be created from combinations and varying patterns of other colors. If you can find them, use black, blue, red, and yellow. All the other colors can be generated from these. Unfortunately, I could not find a source for yellow ribbons (if you know where I can get a yellow Prowriter ribbon, let me know), so I used black, blue, red, green, and brown. With

No. 75 • September 1984 MICRO 31

Page 34: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

these, all colors except yellow and orange can be generated.

Keep the ribbon cartridges in plastic bags that can be sealed to keep the ink from drying out. Make sure the rollers in the cartridges turn smoothly. Nothing is more frustrating than having a ribbon stick halfway through the last color of a five color printout.

Helpful H ints

As previously noted, the color prints are made by printing over the same page (or pages] several times, once for each color. A lot of things can go wrong while you're doing this. Here are a few pointers that I've picked up in the last several months; they may save you some time and grief:1. Be prepared to spend an hour or more to get a few prints. If you are only printing one, make several copies — 3 or 4 to be safe. That way if a ribbon jams or a page is misaligned, the others should still be good. Save up your pictures to be printed and do them all in one session. This will reduce the number of ribbon swaps.2. If you are using pin-feed paper, prepare the paper beforehand. The perfs tend to tear apart when moving the paper up and down several times to get all colors printed. A partially tom perf will catch and cause the paper to jam. Prior to printing, take out the paper, tape over the perfs with scotch tape, and then place it back in your printer. You can even form a continuous loop with several sheets, avoiding the need to backtrack the platen.3. Prior to printing the first color on each page, draw an index line in pencil, aligning the mark to some stationary point on the printer carriage or frame. For subsequent colors, make sure this alignment mark is in the same place.4. A misalignment of even one dot (1/72 inch] is quite noticeable. If a misalignment is obvious while printing a page, turn off the printer with the off­line or select switch on the printer, then try to align the page by adjusting the platen. Although you won't be able to save the current page, subsequent pages (see tip 1) should then end up perfectly aligned.5. Some printers have a panel that must be removed when changing ribbons. A micro switch will not allow printing when this panel is removed. To save you some time, remove this panel and tape down the micro switch to defeat it. Then leave the panel off while you are getting your color prints.

Even by using all the above pre­cautions, I've yet to get correct align­ment of all colors on the first page of 4 copies that I print. My average is about 50% of all copies with no noticeable misalignment. But the results are rewarding.

C olor Print

A BASIC program to create color printouts is given in Listing 1. This program is based on the program in last month's MICRO. All the machine language routines are the same. The only changes necessary are the printer matrix codes for each color. These codes change with each ribbon color. The program first loads, from diskette, the machine language routines " GDUM P+ M OVE", then jumps to line 2000. Here the type of picture is selected. Then in lines 2120-2250 the printer specific information is defined. Change the values for variables PT, NT, and SD for your printer/interface set-up, then save the revised program. The picture file is then loaded into memory from disk. While loading this file, the CRT will display the following menu:

AFTER PICTURE LOADS, PRESS:

P FOR BLACK/WHITE PRINT

COLOR PRINT:

B FOR BLACK RIBBON

N FOR BROWN RIBBON

U FOR BLUE RIBBON

R FOR RED RIBBON

G FOR GREEN RIBBON

E TO EXIT

The program works as last months program for black/white printouts when pressing P. For color prints, first set up the paper and the first ribbon, then press the key that corresponds to that color. After one (or more) prints of that particular color are finished, change the ribbon, set up the paper back to the beginning, then press the key for the new color. Keep this up until all required colors are printed. Then press E to exit.

The color pattern information in matrix CM (see lines 2350-2360] is POKEd to the machine language routine in lines 1150-1320, then the printer dump is executed (line 1330). This loop is repeated for each color.

Dots are printed for each combina­tion of screen color and ribbon color

containing an X in the table below. A high density of dots is printed for dark colors, a lower density for lighter colors.

Ribbon C o lo r

S c r e e n

C o lo r B la c k Brown Red Green Blu e

B la c k XWhite Red Cyan P u rp le Green B lu e Yellow- Orange Brown L ig h t Red Gray 1 XGray 2 XL ig h t Green - L ig h t B lu e Gray 3 X

If you have ribbons of different colors or would like to experiment with different shades or color codes, change the data in lines 4000-4050. Line 4000 contains the pattern codes as described in part 1 of this series. The other DATA lines (one line for each ribbon] point to the 0 to 15th term in line 4000. There are 16 entries in each line, one entry for each color (0 black, 1 white, etc.). All zeroes in these lines will print no dots for those color/ribbon combinations.

The programs described in this 3 part series of articles can be obtained on 1541 format disks for $15 (US] from MICRO (disk number MD-4).

[Editors Note: The picture on page 22 of the

July issue (part 2 of this series) is titled

" M IDDLE EARTH” and was created by

Wayne Schmidt of New York City, using

Doodle by City Software and is a demo on

the Doodle disk. Credit was inadvertantly

omitted.]

Michael J. Keryan has written a number of articles in MICRO, BYTE, and COMPUTER

and ELECTRONICS involving machine language utility programs and hardware add-ons for various m ic r o c o m p u te rs , including OSI, TRS-80 and Commodore 64. His DOES - IT program to extend the capabilities of the C64 by implementing k e y b o a r d - c a l la b le m a c h i n e lan g u age routines and supporting swapping of machine language programs appeared in recent issues of M ICRO (January through April/May 19841.

XX X

X - X X

XXX X X -

XX

XX

32 MICRO No. 75 - September 1984

Page 35: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

No. 75 ■ September 1984 MICRO 33

Page 36: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

o

® Listing 1

© 1000 REM BASIC PROGRAM TO SUPPORT GDUMP 2180 :1005 REM PROVIDES COLOR PRINTOUTS 2190 NT = 0: REM INTERFACE TYPE1010 REM M.J.KERYAN 3-30-84 2200 : REM CONNECTION = 0

0 1020 : 2210 : REM OTHERS = 1

1030 IF A=0 THEN A=l: LOAD" GDUMP+MOVE",6,1 2220 :1040 IF A=1 THEN A=2: GOTO 2000 2230 SD = 6: REM SECONDARY ADDRESS1050 POKE 20491,PT: POKE 20492,SD 2240 : REM FOR TRANSPARENT

O 1060 POKE 20493,NT: POKE 20487,NP 2250 :1070 SYS GT 2260 GT = 21808 + (TY-l)*31080 IF TY=2 OR TY=4 THEN MD=PEEK(53270): 2270 IF GT> 21820 THEN GT=21820

0 MD=3-((MD AND 16)/16): POKE 20494,MD 2280 IF TY=1 THEN 3000G 1090 IF TY=3 OR TY=5 THEN POKE 20494,3 2290 PRINT"{D0WN2}NOW PUT IN DISK WITH THE PICTURE FILE."

1100 IF TY=6 THEN POKE 20494,0 2300 INPUT"{DOWN}NAME OF PICTURE";NM$1110 GETK$: IF K$< > ""THEN 1110 2310 PRINT"{DOWN}AFTER PICTURE LOADS, PRESS:"

O 1120 GETK$:IF K$="" THEN 1120 2320 PRINT" P FOR BLACK/WHITE PRINT"1130 IF K$="P" THEN SYS 20480: GOTO 1800 2321 PRINT1140 IF K$= "E" THEN 1800 2322 PRINT" COLOR PRINT:"1150 C=0: IF K$="B" THEN C=1 2323 PRINT" B FOR BLACK RIBBON"

© 1160 IF K$="N" THEN C=2 2324 PRINT" N FOR BROWN RIBBON"1170 IF K$="R" THEN C=3 2325 PRINT" U FOR BLUE RIBBON"1180 IF K$="G" THEN C=4 2326 PRINT" R FOR RED RIBBON"

q 1190 IF K$="U" THEN C=5 2327 PRINT" G FOR GREEN RIBBON"

1200 IF C=0 THEN 1110 2329 PRINT1300 FOR M=0 TO 15: MM=21182+M: NN=21198+M 2330 PRINT" E TO EXIT"1310 POKE MM,CM(C,M): POKE NN,CM(0,M) 2340 DIM CM(5,15)

o 1320 NEXT M 2350 FOR 1=0 TO 5: FOR J=0 TO 151330 SYS 20480: GOTO 1110 2360 READ MM: CM(I,J)=MM: NEXTJ: NEXTI

1800 : REM QUIT 2370 IF TY=4 THEN LOAD "? " + N M $ + , 8,1

1840 POKE 53265,(PEEK(53265)AND223) 2380 IF TY< > 4 THEN LOAD NM$+"*",8,1® 1850 POKE 53270,(PEEK(53270)AND207) 2900 :

1860 POKE 53272,21 3000 REM CREATE A SIMON'S BASIC PROGRAM

1870 POKE 53280,6: POKE 53281,15: POKE 646,0 3010 Q$=CHR$(34)Q 1880 PRINT"{CLEAR}": END 3020 PRINT"{CLEAR}1 IF A=1 THEN A=2:

2000 POKE 53280,6: POKE 53281,15: POKE 646,0 LOAD"Q$" GDUMP+MOVE"Q$",8,1"

2010 PRINT"{CLEAR,DOWN2}WHICH TYPE OF PICTURE?" 3030 PRINT"2 IF A=0 THEN A=l: GOTO 72020 PRINT 3040 PRINT"3 POKE 20491, "PT" :POKE 20492,"SD

© 2030 PRINT" 1 SIMON'S BASIC" 3050 PRINT"4 POKE 20493,"NT" :POKE 20487, "NP":2040 PRINT" 2 ULTRABASIC-64" SYS 21808"

2050 PRINT" 3 DOODLE" 3060 PRINT"5 A=PEEK(53270): A=(A AND 16)/16"

2060 PRINT" 4 KOALAPAINTER" 3070 PRINT"6 A=3-A: POKE 20494,A: SYS 20480: END"

0 2070 PRINT" 5 SLIDESHOW" 3080 PRINT"7 REM APPEND YOUR PROGRAM HERE"

2080 PRINT" 6 SLIDESHOW - INVERTED" . 3090 PRINT"SAVE"Q$"SIMON.GDUMP"Q$",8"

2090 INPUT" ";TY 3100 POKE 631,19: FOR A=632 TO 639: POKE A,13: NEXT A

o 2100*frF TY< 1 OR TY> 6 THEN 2000 3110 POKE 198,9: NEW

2110 : 4000 DATA 0,5,32,10,64,20,1,40,159,165,90,

2120 PT = 0: REM PRINTER TYPE 130,219,135,80,2552130 : REM NEC/PROWRITER = 0 4010 DATA 15,0,0,0,0,0,0,0,0,0,0,12,13,0,0,3

® 2140 : REM EPSON OR SIMILAR = 1 4020 DATA 0,0,0,0,0,0,0,2,4,15,0,0,0,0,0,0

2150 : 4030 DATA 0,0,15,0,9,0,0,0,6,0,9,0,0,0,0,0

2160 NP = 3: IF PT=1 THEN NP = 2 4040 DATA 0,0,0,5,0,15,0,0,2,0,0,0,0,9,0,00 2170 : REM REPEAT CODE 4050 DATA 0,0,0,11,10,0,15,0,0,0,0,0,0,0,10,0

o JMCOO

o

34 MICRO No. 75 ■ September 1984

Page 37: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

There are three ways to learn 6502 Assembly Language on your Apple Computer:

Hard Easy Easiest

Introducing the Easiest Way: The LISA Ed Pac™

Y o u c a n ’t d e n y th a t le a rn in g a s s e m b ly is e x tre m e ly im p o r ta n t fo r y o u if y o u w a n t to m a k e th e m o s t o f y o u r w o rk . If a s s e m b ly la n g u a g e w a s n 't so im p o r ta n t , w h y a re a lm o s t a ll o f th e to p s e ll in g p ro g ra m s a v a ila b le fo r th e A p p le II w r it te n in a s s e m b ly la n g u a g e ? B u t le t ’s fa c e it, le a rn in g 6 5 0 2 a s s e m b ly la n g u a g e is n ’t a p ie c e o f c a k e . A t le a s t n o t u n t il now . B e c a u s e n o w th e re ’s th e L IS A E d u c a tio n P a c k a g e " fro m L a z e rw a re . It 'l l h a v e y o u up to s p e e d w ith a s s e m b ly la n g u a g e in a fra c t io n o f th e t im e it w o u ld o th e rw is e take .

T h e L IS A E d P a c “ b e g in s w ith L IS A v2 .6 . th e fa v o r ite a s s e m b le r o f b e g in n e rs a n d p ro fe s s io n a ls a like . M o re A p p le o w n e rs h a v e le a rn e d 6 5 0 2 a s s e m b ly la n g u a g e u s in g L IS A th a n a ll th e o th e r a s s e m b le rs c o m b in e d . M o re tu to r ia l m a te r ia l is a v a ila b le fo r L IS A , in c lu d in g b o o k s b y D. F u d g e , R. H yd e , W. M a u re r, a n d R. M o tto la . R a n d y H y d e 's 3 0 0 -p a g e U s in g 6 5 0 2 A s s e m b l y L a n g u a g e is in c lu d e d in th e L IS A Ed P a c “ .

N e x t w e th re w in S P E E D /A S M ” , a s e t o f 6 5 0 2 s u b ro u t in e s th a t m a k e p ro g ra m in g in a s s e m b ly la n g u a g e as e a s y as B A S IC . A n d fo r th o s e w h o w a n t to se e h o w it ’s d o n e , th e S P E E D /A S M s o u rc e lis t in g s a re a ls o in c lu d e d . W e a ls o in c lu d e d th e L U D * 1 (L is a U t il ity D is k # 1) w h ic h in c lu d e s an e x te n d e d e d ito r fo r L IS A a n d a L IS A s o u rc e f i le l is t in g u t il ity . F in a lly , w e a d d e d M A X W E L L 'S D e b u g g e r " to th e L IS A Ed Pac. T h is u ltra -p o w e rfu ! d e b u g g e r /m o n ito r m a k e s le a rn in g a n d d e b u g g in g 6 5 0 2 a s s e m b ly la n g u a g e a b re e ze .

L IS A E d P a c P r ic e S 1 4 9 .9 5 . A $ 2 2 9 .7 5 V a lu e (s u g g e s te d re ta il) .A v a ila b le a t d e a le r s e v e ry w h e re , o r d ire c t ly from

F o r a c o p y of L a z w e r w a r e s A Gu ide to Purch,is,nt.; j 6?■':/ J s ‘ V'o; ;r Appip n . v .\r; n v . ,. ,< L .. ,* S ' CO' O- ' i C-"- Q ’ ' 2 0 ry cal l u !. a t i 71 4) 7 3 5 - 1 0 4 1No t e LI SA LI SA v2 6 U S A Er: Pa. - LI SA Educ a t i ona l P a r M >'■ S p . ' - : Ac>r.* M 1 •; n i-.. s.- ,v . .Appl e Appl e II and Applp p t r a de ma r k s of Applt- Cor^o. , - . ' -

Page 38: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

fe a tu n e

□ □ Q .

V*#'\>Art '

Approximating the Square Root of the Sum

of the SquaresA fast method of calculating this useful function.

If I were asked to make a list of what I thought were the most often executed computer calculations in the world,7 very near the top of that list would the following equation:

S=SQR((X**2.) + 5 (Y**2.) )

This square root of the sum of the squares calculation is used for all kinds of different things. It crops up in electronics, in physics, in geometry, and in ju st about every other imaginable field. It is widely used because it is the equation for calculating the magnitude of two r e c ta n g u la r co m p o n e n ts — of anything. It tends to be a repetitive calculation, especially in the world of grap h ics and an im a tio n w here computers are called on to perform it hundreds of times.

Since this is true, a computer technique that will save just one microsecond executing the calculation is precious. Using such a technique in a repetitive application subtracts one microsecond from the execution time for each loop and you wind up finishing your task much faster than you otherwise would have.

Bearing all that in mind, consider the value of the following technique; it saves tens or hundreds of microseconds for each repetition.

Skeptical? Don't be. The method is incredibly simple. It is incredibly fast. It is, without further ado:

/'SPRIME=a*X + b*Y ^

That’s it.It's an approximation, of course,

but jjlease, keep reading. With the cnbice of a and b the peak error

'’of this approximation is a grand total of4.01 percent. No misprint there, a maxjrhum error of 4.01 percent.

Ah, good. You're paying attention again. Now then, think of how much faster your computer will be able to do SPRIME = a *X + b*Y than it couldS = SQR( (X * * 2.) + (Y**2.).

The optimal (from a minimal peak error perspective) values of a and b are a = 0.961 and b = 0.398, to three decimal places. Use those and SPRIME will never vary from S by more than4.01 percent. For those of you who haven't realized it yet, you probably will never see graphics errors that small.

For the assembly language inclined readers, here's another tidbit of value. Suppose we choose values of a and b that are related to powers of two. The a*X and b*Y operations then become simple shifts of X or Y an amount equal to what the power of two a or b is. Doing that is thousands of times faster than a full-fledged _Jlaating-point multiply.

It turns ojif^hat the optimal [binary- related vakoes are not exactly powers of two. The values are a = 1. (nj? problem there) / and b = .375, ae^m to three decimal places. Sinte-'tfis notarj_exa£t. power of-tw€ryou iiaver^crmr-a- little more than just a simple shift. Namely, shift Y three times to the right (.125 JY f and add the result to its£lf-"'twice (. 125*3 = .375). Thails-stilTmuch fg than any_jloating-point multipl

------fncidently, this combination ofcoefficients yields a peak ^rror of 6.8 percent.

n o nby Chris Williams

Ogden, Utah

Is there a catch? Yes, but i t ’s a small one. Your X must be greater than Y. If i t isn't tQ'Start with, simply switchcoefficients. ___

A similar procedure can be done in 3-D. In that case, we'd be approxi­mating R =SQ R (((X **2.) + (Y**2.) + (Z **2.))J, and we'd do so with RPRIME = (((a*X) + (b’ Y) + (c*Z))l. The optimal, binary-related coeffi­cients are a = 1 .0 , b = .375 and c = .25. The peak error is 9.68 percent. This is allowing a maximum right shift of three. You could achieve superior peak error performance if you shifted more, but you'd lose significance as bits were shifted off the end of the byte. Three seems a good compromise.

Accompanying this article is a program that demonstrates the validity of the above claims. It’s written in A p p lesoft, but th e r e ’s n o th in g particularly machine dependent in it, so you should be able to get it to run on any BASIC machine.

The outputs are shown in Fig.2. TheS value represents the results from A p p le s o ft 's s tra ig h tfo rw a rd SQR((X**2.) + (Y**2.)| calculation. SPRIME is the approximation value. Both are computed for 0 < X/Y < 1.0 in steps of 0.1. Error is computed as a percentage and is ((S - SPRIME] / S) * 100.j So that's it. It's a good technique.

/Try it.

leference

M ag n itu d e A p p r o x im a t io n s fo r Xiciopiocessor Implementation by W. Thomas Adams and John Brady, IEEE

Micro, October 1983

36 MICRO No. 75 ■ September 198

Page 39: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

15

12.5

10

t

211 1/2

1 2 3 4 5 6

Y

15

10

12.5

SPRIME

Figure 1. Graphs show how nearly identical the

10

t

i

two functions are. 0 1 2 3 4 5 6 7 8

Y

9 10

5 REM ERROR VALIDATION PROGRAMs SPRIME ERROR {%) 6 REM BY C WILLIAMS, 3/84

1 10.0498756 10.008 .416678098 10 HOME : VTAB 1 O2 10.198039 10.406 2.03922505 20 PRINT " S"; : HTAB 15: PRINT "SPRIME"; :

3 10.4403065 10.804 3.48355178 HTAB 28: PRINT "ERROR (*)"4 10.7703296 11.202 4.00795888 30 POKE 34,2: VTAB 3 o5 11.1803399 11.6 3.7535541 40 FOR Y = 1 TO 10.6 11.6619038 11.998 2.88200115 50 X = 10.7 12.2065556 12.396 1.55198879 60 s = ((X t 2.) + (Y t 2.)) 0.58 12.8062485 12.794 .0956445798 70 SPRIME = (0.961 * X) + (0.398 * Y) o9 13.4536241 13.192 1.94463627 80 DF = ABS ((S - SPRIME) / S) * 100.

10 14.1421356 13.59 3.90418847 90 PRINT Y;: HTAB 4: PRINT S; : HTAB 15:

Figure 2. Validity Program Outputs 100110

PRINT SPRIME;: HTAB 28: PRINT DF

NEXT

END

oJMCftO

No. 75 ■ September 1984 MICRO 37

Page 40: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

FLOPPY DISKS SALE *$1.19 ea.Economy Model or Cadillac Quality

i d r^ n . We have the lowest prices! LOR/4NCffiTiMfD P ffiS O M l coMPuite o$k

•ECONOMY DISKSGood quality 5 'A " single sided single density with hub rings.

Bulk Pac 100 Qty. $1.19 ea. Total Price $119.0010 Qty. 1.39 ea. Total Price 13.90

CADILLAC QUALITY (double density)• Each disk certified • Free replacement lifetime warranty • Automatic dust removerFor those who want cadillac quality we have the Loran Floppy Disk. Used by professionals because they can rely on Loran Disks to store important data and programs without fear of loss! Each Loran disk is 100% certified (an exclusive process) plus each disk carries an exclusive FREE REPLACEMENT LIFETIME WARRANTY. With Loran disks you can have the peace of mind without the frustration of program loss after hours spent in program development.100% CERTIFICATION TESTSome floppy disk manufacturers only sample test on a batch basis the disks they sell, and then claim they are certified. Each Loran disk is individually checked so you will never experience data or program loss during your lifetime!FREE REPLACEMENT LIFETIME WARRANTYWe are so sure of Loran Disks that we give you a free replacement warranty against failure to perform due to faul­ty materials or workmanship for as long as you own your Loran disk.

AUTOMATIC DUST REMOVERJust like a record needle, disk drive heads must travel hundreds of miles over disk surfaces. Unlike other floppy disks the Loran smooth surface finish saves disk drive head wear during the life of the disk. (A rough surface will grind your disk drive head like sandpaper). The lint free automatic CLEANING LINER makes sure the disk-killers (dust & dirt) are being constantly cleaned while the disk is being operated. PLUS the Loran Disk has the highest probability rate of any other disk in the industry for storing and retaining data w ithout loss for the life of the disk.

Loran is definitely the Cadillac disk in the worldJust to prove it even further, we are offering these super LOW INTRODUCTORY PRICES

List $4.99 ea. INTRODUCTORY SALE PRICE $2.99 ea. (Box of 10 only) Total price $29.90$3.33 ea. (3 quantity) Total price $9.99

All LORAN disks come w ith hub rings and sleeves in an attractive package.

DISK DRIVE CLEANER s19.95Everyone needs a disk drive doctor

FACTS• 60% of all drive downtime is directly related to poorly maintained drives'*• Drives should be cleaned each week regardless of use.• Drives are sensitive to smoke, dust and all m icro particles.• Systematic operator performed maintenance is the best way of ensuring error free use of your computer

system.The Cheetah disk drive cleaner can be used with single or double sided 5%" disk drives. The Cheetah is an easy to use fast method of maintaining efficient floppy diskette drive operation.The Cheetah cleaner comes with 2 disks and is packed in a protective plastic folder to prevent contamination. List $29.951 Sale $19.95 * Coupon $16.95

A d d $3.00 fo r sh ip p in g , h a n d lin g and in su ra n ce . I llin o is res ide n ts p lease add 6*/. ta x . A d d $6.00 fo r C A N A D A , PUERTO RICO, H A W A II, ALASKA, APO -FPO o rd e rs . C a nad ian o rd e rs m ust be in U.S. d o lla rs . WE DO NOT EXPORT TO OTHER COUNTRIES.Enclose C ash iers Check, M o n e y O rd e r o r P e rsona l C heck. A llo w 14 days fo r d e liv e ry , 2 to 7 days fo r pho ne o rd e rs , 1 day e xp re ss m a il I

VISA — MASTER CARD — C .O .D ._____ N o C .O .D . to C anada , APO-FPO

PROTECTOENTERPRIZES - - - - -BO X 5£0, B A R R IN G T O N . IL L IN O IS 60010 Phone 3 1 2 3 3 2 5244 to ord«r

Page 41: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

B I G F O U RNEW 128K — MEGA BYTE DUAL DISK D R IV E -8 0 COLUMN

COMPUTER SYSTEM SALE!HOME • BUSINESS • WORD PROCESSING

List Price $3717 .95

LOOK AT ALL YOU GET FOR ONLY $895.

©<D

B 128 C O M M O D O R E 1 2 8 K 8 0 C O L U M N C O M P U T E R

8 0 5 0 D U A L DISK DRIVE (o ve r 1 m i l l i o n by tes )

4 0 2 3 100 CPS - 8 0 C O L U M N B I D I R E C T I O N A L PRI NTER

LIST PRICE$ 9 9 5 0 0

1 79 5 0 0

4 9 9 0 0

12" HI R E SO L UT I ON 8 0 C O L U M N GRE E N OR A M B E R M O N I T O R 2 4 9 0 0

BOX OF 10 L OR A N L I FE T I ME G U A R A N T E E D DISKS 4 9 . 9 5

1 1 0 0 SH E E TS F A N FO LD PAPER 19 9 5

ALL CA B L E S N E ED E D FOR I N T E R F A C I N G 1 02 05

TO T A L LIST PRICE $ 3717.95

Printer replacement options (replace the 4023 with the following at these sale prices)

O l y m p i a Ex e cu t i v e Let t e r Qu a l i t y Ser ia l P r i n t er

C o m s t a r H i - S p ee d 1 60 CPS 15' . ' / ' S e r i a l - B u s m e s s P r i n t e r

T e l e c o m m u n i c a t i o n s D e l u x e M o d e r n P a ck a ge

LIST$ 6 9 9 0 0 $ 7 79 00

$ 199 0 0

SALE $ 399 .00 $ 4 9 9 .00 $ 139.00

Plus You Can Order These Business Programs At Sale Prices

Prof es s i on al 8 0 C c l u ^ n

Wo,ru Proce ssor

P rof ess ion al Data Base Arc'oSSts Recet\<at;ie Ac co u n ts Payable

L IS T

$ 1 4 9 96

149 95 149 95

149 95

S A L E

$99.00

99 00 99 00 99.00

Payrol l

Inve ntory G ene ra l Ledger

F m a n a a ' S pr ea d S he e1. P rog ram Ge ne ra to r

L IS T

$1 4 9 95

149 95 149 9b

149 95 149 9 C

S A L E

$99 00 99 00 99 00 99 00 99.00

15 DAY FREE TRIAL We g ive you 15 d a y s to try o u t th is SUPER SYSTEM P A C K A G E " If it d o e s n 't r re e t yo u r expe c

ta t o ris. |u s t send it b a ck to us p re p a id a n d w e w ill re fu n d y o u r p u rc h a s e p r ic e "

9 0 DAY IM M E D IA T E RE P LA C E M E N T W A R R A N TY If any of th e SUPER SYSTEM PACKAGE e q u ip m e n t or o ro g 'a rn s

fa il d u e to fa u lty w o rk m a n s h ip o r m a te r ia l

I/I/rite or Call For Free Catalog and Spec Sheets!!

PROTECTOENTERPRIZES IWE LOVE oufl CJSTOMEBSiBOX 550, BARRINGTON, ILLINOIS 60010 Phont 312/382-5244 10 order

lA d d $ 5 0 .0 0 for shipping and handling!!$ 1 0 0 .0 0 for Canada, Puerto Rico, Hawaii orders.WE DO NOT EXPORT TO O TH E R C O U N T R IE S

J E n c lo se C a s h ie rs C h e ck . M o n e y O rd e r o r P e rso n a l C h e c k A llo w I 14 d a y s to r d e liv e ry , 2 to 7 d a y s fo r p h o n e o rd e rs . 1 d a y e x p re s s | m a i l1 C a n a d a o rd e rs m u s t be in U S d o lla rs W e a c c e p t V isa an d j M a s te rC a rd We s h ip C O D to U S a d d re s s e s o n ly

No. 75 ■ September 1984 MICRO 39

Page 42: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

•SANYO MONITOR SALE!!

9" Data Monitor

• 80 C o l u m n s x 24 lines• G reen text d isp lay

• E a sy to read - no e y e strain

• Up front b r i g h t n e s s control

• High resolution g r a p h ic s

• Q u ick start - no p reheat ing

• R e g u la te d p o w e r s u p p ly

• Attract ive metal c a b in e t

• UL and F C C a p pro v e d

12" Screen Amber or Green Text Display^99• 15 Day Free Trial - 90 Day Im m ediate R eplacem ent W arranty

12" Hi-Resolution Amber or Green Screen Monitor $119.00this is a 1000 Line, 80 Column, High Resolution Monitor with crisp dear text that is easy to read! A must for Word Processing! Includes special Software Discount coupon.List $249.00 SALE $119.00

14" Hi-Resolution Color Monitor $229.00This 14" color monitor has the sharpest and clearest resolution of any color monitor we have tested! Beautiful color contrast! Also compatib le with video recorders. Includes special Software Discount coupon.List $399.00 SALE $229.00 (IBM Compatable)

• LOWEST PRICES • 15 DAY FREE TRIAL • 90 DAY FREE REPLACEMENT WARRANTY• BEST SERVICE IN U.S.A. • ONE DAY EXPRESS MAIL • OVER 500 PROGRAMS • FREE CATALOGS

Add $10 00 for shipping handling and in turanc*. I lf in o ij r«jid«n?s pl«a«**pdd6% tax Add $20.00 for CANADA PUERTO RICO. HAWAII. ALASKA APO-FPO o rd tr i . Canadian o rd«rt must b« in U S. dollar*. WE DO NOT EXPORT TO OTHER COUNTRIES.Endoi# C o ih i« n Ch«cK. Mon«y O rd«r ar P«r»onol Ch«ck. A llow H day i for d«liv«ry -2 fo 7 day* for phon# ord«r». 1 day • x p r t i i m a il!

ENTERPRIZES ( W l I O V I O U K C U » T O M £ M !

VISA — MASTER CARD — C.O.DBOX 550, BARRINOTON, ILLINOIS 60010 Phon* 312/3*2-5244 to ordar

40 MICRO No. 75 ■ September 198^

Page 43: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

FANTASTIC COMPUTER PRINTER SALE!!

• Lowest Priced, Best Quality, Tractor-Friction Printers in the U.S.A.Fast 80-120-160 Characters Per Seconc • 40 ,46 ,66 ,80 ,96 ,132 Characters Per Line Spacing

• Word Processing • Print Labels, Letters, Graphs and Tables • List Your Programs Print Out Data from Modem Services • “The Most Important Accessory for Your Computer”

* * DELUXE COMSTAR T /F 80 CPS Printer - $169 .00

T h i s C O M S T A R T F ( T r a c t o r F r i c t i on )

P R I N T E R is e x c e p t i o n a l l y v e r s a t r e It

p r i n t s 8 x 1 1 " s ta n d a . ' d s i / e s i ng l e s h ee t s t a t i o n a r y o r c o n t i n u o u s f e e d c o m p u t e r

p a p e r B i - d i r e c t i o n a l , i m p a t t d o t m a t r i x . 8 0 CPS. 2 2 4 c h a r a c t e r s >' C e n t r o n i c s

Par a l l e l I n t e r f a c t )

Premium Quality 120 -140 CPS 10" COM STAR PLU S +

Printer $26 9 .0 0T h e C O M - S T A R P L U S + g i ve s yen. a I ■ t he f e a t u r e s o f t h e C O M S T A R T / F P R I N T E R

p l u s a 1 0" c a r r i a ge . 1 2 0 1 4 0 CPS. 9 x 9 d o t m a t r i x w i t h d o u b l e s t r i k e c a p a b i l i t y f o r 18 x 18 d o t m a t r i x ( near l e t t e r q ua l i t y ) , h i gh

r e s o l u t i o n b i t i m a g e ( 1 2 0 x 1 44 d o t m a t r i x ) , u n d e r l i n i n g , b a c k s p a c i n g , lef t

a n d r i g h t m a r g i n s e t t i ng s , t r u e l ower d e c e n d e r s w i t h s u p e r a n d s u b s c r i p t s , p r i n t s s t a n d a r d , i ta l i c , b l o c k g r a p h i c s a nd

s p e c i a l c h a r a c t e r s . It g i ve s yo u p r i n t q u a l i t y a n d f e a t u r e s f o u n d c n p r i n t e r s

c o s t i n g t w i c e as m u c h ! 1 ( C e n t r o n i c s

Pa r a l l e l I n t e r a c e ) ( B e t t e r t h a n E p s on

F X 8 0 ) L i s t $ 4 9 9 . 0 0 SALE $ 2 6 9 .0 0

Premium Quality 120-140 CPS 1 5 % "COM-STAR PLU S+ Business Printer $379 .00

H a s al l t he " e a t u r e s o f t he 1 0" C O M - S T A R

P L U S + P R I N T E R p l u s 1 5 ' / / ' c a r n a g e a nd m o r e p o w e r f u l e l e c t r o n i c s c o m p o n e n t s to

h a n d l e l a r ge l e d g e r b u s i n e s s f o r m s ! ( B e t t e r t h a n E ps o n FX 1 0 0 ) L i s t $ 5 9 9

SALE $ 3 7 9 .0 0 .

Superior Quality 140-160 CPS 10" COM STAR PLUS +

IBM Pers/Bus Printer $389 .00H as al l t he f e a t u r e s o f t h e 1 0" C O M - S T A R

P L U S + P R I NT E R ! It is e s p e c i a l l y d e s i g n e d fo r al l I B M p e r s o n a l c o m p u t e r s ' 1 40 160

CPS H I G H SP E E D P R I N T I N G 1 0 0 % d u t y cy c l e , 2 K bu f f e r , d i v e r s e c h a ra c te r f on t s ,

s p e c i a l s y m b o l s a n d t r u e d e c e n d e r s , v e r t i ca l a n d h o r i z o n t a l t abs .A RED H O T I B M p e r s o n a l b u s i n e s s p r i n t e r at an u n b e l i e v e a b l e l ow p r i c e o f $ 3 8 9 . 0 0

p l u s o n e / e a r i m m e d i a t e r e p l a c e m e n t

w a r r a n t y ( c e n t r o n i c s p a r a l l e l i n t e r f a c e ) L i s t $ 6 9 9 SALE $ 3 8 9 .0 0

--------PARALLEL INTERFACES---------

Superior Quality 160-180 CPS 10" COM STAR PLUS +

Business Printer $399 .00T h i s S U P E R H I G H SPEED C O M STAR P L U S + P RI N TE R 1 6 0 - 1 8 0 CPS has a 1 0"

c a r r i a g e w i t h al l t he C OM S TA R P L US +

f e a t u r e s b u i l t i n 1 It is e s p e c i a l l y d e s i g n e d

wi t .n m o r e p o w e r f u l e l e c t r o n i c s to h a n d l e l arger l ed ge r b u s i n e s s f o r m s 1 Ex c l us i v e

b o t t o m f e e d 1 ( C e n t r o n i c s p a r a l l e l

I n t e r f a c e ) a l so c o m p a t a b l e w i t h al l I B M P e r s o n a l / B u s i n e s s C o m p u t o r s ! 1 O n e y e a r

i m m e d i a t e r e p l a c e m e n t w a r r a n t y

Li st $ 6 9 9 SALE $3991 5 W Printer List $ 7 9 9 SALE $499 .

O O lym piaExecutive Letter Quality

DAISY WHEEL PRINTER $399 .00T h i s is t he w o r l d s f i n e s t d a i s y w h e e l p r i n t e r

Fantastic Letter Quality, up to 2 0 CPSb i d i r e c t i o n a l , w i l l h a n d l e 14 . 4 f o i m s w i d t h 1 H as a 2 5 6 c h a r a c t e r p r i n t b u l f e r .

s p e c i a l p r i n t e n h a n c e m e n t s , b u i l t in trac to r- feed (C e n tro n ic s P a ra lle l and

R S 2 3 2 C I n t e r f a c e ) L i s t $ 6 9 9 SALE $3 99 .

For V I C - 2 0 a n d C O M - 6 4 — $ 4 9 0 0 For A p p l e c o m p u t e r s — $ 7 9 . 0 0 A t a r i 8 5 0 I n t e r f a c e — $ 7 9 . 0 0 For AL L I BM C o m p u t e r s — $ 8 9 0 0

15 Day Free Trial-180 Day Immediate Replacement Warrantyj A d d $14 50 fo r s h ip p in g , h a n d lin g a n d in s u ra n c e . W E D O N O T E X P O R T { j TO O T H E R C O U N T R IE S E X C E P T C A N A D A . j■ E n c lo s e C a s h ie rs C h e c k , M o n e y O rd e r o r P e rs o n a l C h e c k . A l lo w 14 d a ys j j fo r d e l iv e ry , 2 to 7 d a y s fo r p h o n e o rd e rs , 1 d a y e x p re s s m a il! C a n a d a •I o rd e r s m u s t b e in U .S . d o l la rs . V IS A — M A S T E R C A R D A C C E P T E D . W e j | s h ip C .O .D . I

PROTECTO(W E L O V E O U R C U S T O M E R S )ENTERPRIZES

BOX 550, BARRINGTON, ILLINOIS 60010 Phon* 312/382-5244 to order

C O M - S T A R PLUS+ P r in t E x am p le :

A B C D E F G H I J K L M N Q P Q R 8 T U V W X Y Z ABCDEFGH2 JKU1N0PC1R8TUVWXYZ 1 2 3 4 S 6 7 Q 9 0

No. 75 ■ September 1984 MICRO 41

Page 44: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Commodore • 64

SCRIPT-64 EXECUTIVE WORD PROCESSOR(80 Columns in Color)40 or 80 columns in color or black and white; turns your com puter into a Business Machine!Rated best by COMMODORE. This is the finest word processor available. Features in­clude line and paragraph insertion/deletion, indentation, right and left jus tif ica tion, titles, page numbering, characters per inch, etc. All features are easy to use and under­stand. With tabs, etc. SCRIPT-64 even includes a 250 word dictionary/spell ing checker to make sure your spelling is correct. The dictionary is user customizable to any technical words you may use. Furthermore, all paragraphs can be printed in writ ing and everyday letters are a snap. To top things off, there is a 100 page manual and help screens to make learning how to use SCRIPT-64 a snap. This word processor is so complete we can ’t think of anything it doesn’t have. When combined with the complete database you have a powerful mailmerge and label program that lets you customize any mailing list w ith personalized letters. List $99.95. Sale $59.00. ^Coupon Price $49.00. (Disk only.)

SCRIPT-64 20,000 WORD DICTIONARYAllows you to check spelling on 20,000 most often mispelled words! List $29.95. Sale$19.95. "‘Coupon Price $12.50 (Disk only.)

SCRIPT-64 COMPLETE DATABASE(Plus Mail Merge and Labels)This powerful DATABASE is user friendly and makes any information easy to store and retrieve. The user defines the fields and then can add, change, delete, and search for any category wanted! Must be used with the SCRIPT-64 EXECUTIVE WORD PROC­ESSOR. When combined with the Executive Word Processor you can search out any category (zip codes, even hair color, etc.) and print super personalized letters! 600 names can be sorted and formulated on each disk in any order or category! Will handle any size mailing list by changing or adding disks! List $69.00. Sale $39.00. ‘ Coupon Price $29.00.

• LOWEST PRICES • 15 DAY FREE TRIAL • 90 DAY FREE REPLACEMENT WARRANTY• BEST SERVICE IN U.S.A. • ONE DAY EXPRESS MAIL • OVER 500 PROGRAMS • FREE CATALOGS

WE SHIP C.O.D. HONOR VISA AND MASTER CHARGE ADD $3.00 SHIPPING FOR C.O.D. ADD $2.00 MORE SPECIAL SERVICES:One Day — Express Mail add $10.00

PROTECTOi w e l O v e o u p C u s t o m EPS)ENTERPRIZES

BOX 550, BARRINGTON, ILLINOIS 60010 Phone 312/382-5244 to ord«r

Page 45: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

O OlympiaEXECUTIVE LETTER QUALITY

"DAISY WHEEL PRINTERS"

Executive Letter Quality Printer

World's Finest Computer PrinterList Price $699 SALE $399

• Daisywheel printer, bidirectional with special print enhancements.

• Print speed up to 20 characters per second.• 10, 12, and 15 characters per inch.• 256 character print buffer.• 14.4" forms width.• Print line width: 115, 138, and 172 characters.• Serial RS-232-C and parallel Centronics interface

ports built-in.• Built-in bidirectional forms tractor.• Operating status control panel.

World's Finest"Combination" Printer/Typewriter

List Price $799 SALE $489

• Superb computer printer combined with world's finest electronic typewriter!

• Better than IBM selectric — used by world’s largest corporations!

• Two machines in one — just a flick of the switch!• Superb letter quality correspondence — home, office,

word processing!• Extra large carriage — allow s 1 4 -1 /8 " paper usage!• Drop in cassette ribbon — express lift off correction or

eraser up to 46 characters!• Precision daisy wheel printing — many type styles!• Pitch selector — 10,12, 15 CPS, Automatic relocate key!• Automatic margin control and setting! Key in buffer!• Electronic reliability, built in diagnostic test!• Centronics parallel interface built-in

15 Day Free Trial - 90 Day Immediate Replacement Warranty

Add $17.50 lo r shipping, handling and insurance. Illinois residents please add 6% tax. Add S35.00 for CANADA, PUERTO RICO. HAWAII, ALASKA, APA-FPO orders. Canadian orders m u s t be in U.S. dollars.WE DO NOT EXPORT TO OTHER COUNTRIES.

COM 64 — VIC-20 INTERFACE APPLE INTERFACE

$59.00$79.00

I I

Enclose Cashiers Check. Money Order or Personal Check. Allow 14 clays | delivery, 2 to 7 days tor phone orders, 1 day express mail! |

VISA - MASTERCARD - C.O.D.

No C.O.D. to Canada, APO-FPO

P R O T E C T Oi

____ i

(WE LOVE OUR CUSTOMERS)ENTERPRIZESBOX S50, BARRINGTON, ILLINOIS 60010 Phon* 312/362-5244 to ordtr

Page 46: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

intenLace clin ic -------------------------------by Ralph Tenny

Richardson, Texas

We're continuing with the design of an output adapter for the expansion port of a Radio Shack Color Computer. This adapter will interconnect an Epson MX-80 printer, a Commodore 64, a 32k Color Computer and a 64k Color Computer. The two 64k computers will input to the 32k Color Computer, which will serve as a printer buffer for both the other machines. The interface card will plug into the 32k machine and perform all the interface functions needed except for power sensing. A smart power box will sense when either computer is turned on, and power up the 32k machine. This machine must then self-boot and begin sensing when either computer sends data to be printed.

Last month's column gave a set of specifications for the four ports needed to accomplish the interfacing. These ports are:1. Parallel input from the Commodore. This input actually comes from a The Connection serial-parallel converter currently used with the Epson/Commodore combination. This choice was made to insure continued compatibility with all Commodore software currently being used.2. Parallel output to the printer.3. Serial input from the 64k Color Computer.

4. Serial output |unassigned).Figure 1 shows the schematic of the interface board.

Ports 1 and 2 are implemented using a 6522 Versatile Interface Adapter, which gives two 8-bit I/O ports, two 16-bit timers, automatic input/output handshake, and synchronous serial communication. Each of the major functions can issue an interrupt, and a separate interrupt input is associated with each port.

The serial communications will be performed by a 6850 ACIA with switch-selectable baud rates of 300, 600, 1200 and 2400. This device is a programmable UART (Universal Asynchronous Receiver/Transmitter) which furnishes status output and input lines capable of managing I/O handshaking. Both receiver and transmitter sections can issue interrupts.

The specifications also call for a Busy signal capability on both parallel ports. This is required to be sure of compatibility with any printer or other parallel input or output device which may be used to drive it. The Busy signals will be programmed to be compatible with Epson and similar printers. The output Busy signal (used on the parallel input port] is held in a 74LS75 4-bit latch which connects to the upper nibble on the CoCo data bus. The Busy input from the parallel output port is gated onto the data bus with a 74LS126 4-bit tri-state buffer. Both the latch and the tri-state buffer have three unassigned channels which could be used for any single-bit I/O desired.

Baud rate generation was discussed in detail last time, except that the baud selection switches were omitted from the illustration. The corrected version and proper pin connections are shown in Figure 1 (U1 and U2). These two ICs form a programmable counter which resets itself each time the output pattern conforms to the bit pattern programmed into the switches.

The address decoding design was mentioned last time also. The circuit shown and the description given last time was incomplete. It also seems best to use three device SELECT signals instead of four. The reason is that the original SELECT signal for the parallel ports conflicts with disk port address space. This design is not intended for use with a disk, but could be if one of the several multi-pack interface units was in use. So, the design shown in Figure 1 has three SELECT signals: $FF50 for the parallel ports, $FF60 for the serial ports and $FF70 for the BUSY latch and BUSY flag input.

In addition to the SELECT signals, certain other decoding must be done. The 74LS75 quad latch is not a bus-oriented device, so it has no SELECT input. All it has is an active-high GATE pin which allows the output to follow the input as long as GATE is high. The latch must be forced to capture only that data written to $FF70. The SELECT signal is active-low, so it must be inverted to properly gate the latch. Also, the Read/Write* (R/W*) signal must be used to ensure that only WRITE data is captured, that is, when R/W* is low. One section of U5 pulses the GATE line high only when both SELECT and R/W* are low.

The 74LS125 tri-state gate also has no SELECT, and connects the input to the bus when the four (one for each section) enable lines are high. Also, this must happen only when the CPU is trying to read the data bus. So, a section of U5 inverts R/W* to enable a third section of U5. When both SELECT and (R/W*)* are low, the BUSY signal from the printer is allowed onto the data bus.

Additional decoding is necessary for both the ACIA and the VIA. Both have multiple registers, and REGISTER SELECT (RS) inputs. The 6522 VIA has four RS inputs which are connected to address lines AD0-AD3, so that 16 internal registers can be selected. Almost all these registers can be read and written, just like normal memory locations. The ACIA has four registers that occupy only two memory addresses. Only one RS line is used [driven by ADO), which means that there are two Read Only registers and two Write Only registers. This causes extra programming overhead, which will be discussed when we have hardware ready to program!

Certain other circuit features and possibilities need to be discussed. First, the interrupts generated on the ACIA and VIA are shown connected to the IRQ* input. There could be a conflict with some CoCo software, so if this device is used as a general I/O board on an active computer, this should be moved to the NMI* input. Both the ACIA and VIA maintain an internal record of which section caused an interrupt, so each needs to be polled to determine which device caused the interrupt.

The VIA contains two counters which could have been programmed to make the proper clock frequencies for the ACIA. However, the normal hardware output for the counters are I/O lines already dedicated to parallel I/O. Another alternative exists. The counters will cause an interrupt, so the interrupt service routine could force a read of (for example) $FF30. The keyboard PIA in CoCo will respond, but so will pin 13 of U2. This decode strobe

44 MICRO No. 75 - September 1984

Page 47: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

could be used to toggle a flip-flop at twice the period of the desired baud rate clock.

This timer-generated baud clock would only be practical on a dedicated machine such as I will be using. Also, it is advisable to put the VIA on NMI* and the ACIA on IR Q *. Only the timer interrupt is time critical, but the STROBE* line should have reasonably prompt response to maintain high throughput for input data. The ACIA buffers a second character and will assert BUSY if necessary. However, the data throughput on even 2400 baud serial will not be greatly affected by a short BUSY hold on transmission.

Two other loose ends: If you should desire to have full eight-bit parallel input and output at $FF70, it is possible to use an octal latch in place of U8 and an octal tri-state buffer in place of U7. The required decoding is slightly different, and will be shown in next m onth's column.

The second loose end is that I promised to examine the bus loading in detail to decide if this interface board needed to be buffered from the innards of CoCo. The answer is yes; on two counts. First, the power loading (drive current furnished by the 6809 CPU) on the address lines is approaching the maximum specified value. This loading will reduce the bus's ability to drive a capacitive load at normal speed. In the second place, the capacitive loading for the address bus is very close to, or exceeding, the rated maximum. Therefore, this board does need buffering. The ca lcu lation , circu itry and other considerations will be presented next time also. gtfQQQ-

A N ESSENTIAL DISK G M EM O RY UTILITY F o r t h e c o m m o d o r e 64 ™ s d r i v e

E A S Y T O U S E - H E L P - K E Y S T R O K E C O M M A N D S

■Disk T r a c k / S e c t o r Ed i to r■Examine and mo d i f y d i sk s e c t o r d at a • F i l e F o l l o w e r - m e m o r y f o r 151 s e c t o r s • F a s t 1541 d i sk c om par e and e r r o r check

•D isp lay M e m o r y and Disk D a t a in Hex, A S C I I o r Sc r ee n Code

• E d i t ful l page in Hex or A SC I I • D i s a s s e m b le m e m o ry and disk da ta

• S ea rc h fo r s t r in g • Un -n ew Basic pgms• Read drive me mory ' C o n v e r t H e x / D e c• F re e s e c t o r map • Use DOS wedge•R un M L r o u t i n e s - E x t e n s i v e manual

■ P r i n t e r screen dump ( s e r i a l bus )• F a s t machine code! Compat ib le w i t h

many Basic and m o n i t o r p rograms

D I S K E T T E C A N B E B A C K E D U p ! !

/■ _Q u a n t u m S o f t w a r e P.O. B O X 12716 , D e p t . 64

L A K E P A R K , F L 3 3 4 0 3

A L L FOR

$ 2 9 . 9 5- U S P o s t P a id

T o O r d e r : S e n d c h e c k o r m o n e y o r d e r , U S d o l la r s F lo r id a r e s id e n t s a d d 5°fo s a le s ta x C O O a d d S 2 . C a l l 3 0 5 > 8 4 0 > 0 2 4 9

C o m m o d o r e 6 4 is a r e g is t e r e d t r a d e m a r k o f C o m m o d o re E le c t r o n ic s L t d . P E E K A B Y T E is a t r a d e m a r k o f Q u a n tu m S o f t w a r e

No. 75 ■ September 1984 MICRO 45

Page 48: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

FEATURES OF THE N ETW O R K ER

©

©

©

©

©ALL

N ETM A S TERS O FTW AR E

C O M M U N IC A T IO N S

Fcr S 1 ^9 we m clude with the N E T W O R K E R the N E T M A S T E R C o m m un ica tions S o ftw are for a d ­vanced users N E T M A S T E R will let you transfer gam es com pute r graphics, p rogram s, sales re- cods. docu m en ts - m lact. any App le flie of any size - tc ano ther com puter. C 'rectiy from disk to disk, w ithou t erro rs even threugn noisy phone lines

Complete Apple Modem $129

Single-Slot 300 Baud Direct-Connect M o de m for Apple II. I I + . lie and Franklin computers

DIRECT CONNECT - No acoustic coupling needed Twc modular telephone ,ac*s - one tor phone - one for line

SINGLt CHIP MODEM tor greater reiiab^ty

ON BOARD FIRMWARE ccnra’fis a te rm nai pro­gram

ON 90ARD SERIAL .NTERFACE - no extra cards tc buv Software selectable data tormat 7 or 8 da’a bits one or two stoc bits, odd cr even santv full or nai( duplex

300 BAUD software selectable tor 110 baud

SWITCH CONTROL tor answer originate s ts next tc keyboard

CARR ER DETECr LED cives you nne status at a g.ance

THIS PLUS

COMPLETE with NETWORKER SOFTWARE '0 give you• Text trapping ot entire display mic RAM memory• Disk storage capab; i*v for a:! trapped re*?• On screen menu and status -naxatorsFREE SUBSCRIPTION TO THE SOURCE the popu-iar dial jp information systemSOFTWARE COMPATIBILITY - with a1: commonApple communication software

COMPATIBLE -vth botn -otary and tone phenes

FCC APPROVED - Made n JSAONE VEAR MANUFACTURER'S WARRANTY

N E T W O R K E R " IN CLUDES A COM PLETE PACKAGE__________

• Modu'ar onone n ? : cro• Net.v'nker software O'1 - d'SK a a v to run• Comp ete ns!rLiC' :Cn^ud-

JQB ENTERPRISES INC P 0 Box 269

Ayer MA 0U32

For transfenng in form ation betw een com puters. N E T M A S T E R s superb error checking and high speed are an unbeatab le com b ina tion W ith a NET- M A S T E R on each end. you can transfer in form a­tion three to five tim es faste r than other com m u­n ica tions packages like V is ite rm ' cr ASCII E xpress Error free

Your best Ouy m m odem his tory The N e tw o rk e r , ' a plug-m s.ng le -slo t d irect conn ect m odem for the Apple II lam iiy of com pute rs Send e lec tron ic mail to a fnend or bus iness assoc ia te , use your schoo l s com puter, access hundreds of com pu te r bu lle tin boards or thousands of da ta oases for up-to-the- m inute new s, sports, w eather, a irline, and stocK in ­form ation

There s a b s o u te lv °o tn :n g e 'se to cuv You get the m odem board com m u n 'ca t-o^ so ’ tw a re ana a va luable subscrip tion tc A m e^ca .s c re r r 'e r - n w . m ation service. TH E S O U R C E For S 1 29 t s an unbeatab le value

This is the m odem that does ■( a 1, ana aoes 't fo r less The A pp le C o m m un ica tions Card -s on boaro so no other in terface is needed Its 300 oaud. me m ost com m on ly used m odem sceed A rc >t c o n e s com ple te w ith N E T W O R K E R C om m un cations S o ftw are on an A p p ’e-com pai/bJe d/SK givmg vol- fea tu res no m odem offers

Uke the a b iitv to 'Ock on -screen m essages mto y o u ' Apple s R A M , and then m ove the n fo rm ation onto a d isk for easy re fe rence and rev iew A te 'm '- nal program that turns yo u r com oute r mto a com ­m unica tions com m and center, w ith on -screen 'neip' m enus, con tiguous uoda tes of m em ory usage ca r - rier p resence, and com m u n ica tio n status

But N E T M A S T E R s not stuffy It will talk to those o ther com m u n ica tio ns packages, but they d o n : w ork as fast and they don t check e rro rs hke N E T ­M A S T E R . And N E T M A S T E R doesn t only work w ith the N E T W O R K E R m odem . Even ;f you a lready have ano ther m odem fo r your Apple. N E T ­M ASTER IS an ou ts ta nd in g va lue m c o m m u n i­ca tions softw are, so we sell N E T M A S T E R by itse f for $ 79 . N E T M A S T E R requ ires 48 k of RAM. one disk drive, and the N E T W O R K E R or ano ther m odem

W E EVEN GIVE YOU S O M E O N E TO TALK TO!________________________________

Your purchase of the N E T W O R K E R w ith or w ithou t N E TM A S T E R com es com p le te w-th a m em oersh ic to TH E SO U R C E . w ith its norm al reg is tra tion fee fuily w a 'ved THE S O U R C E will out a w ond of e le c ­tronic in form ation anc com m u n ica tio n se rv ices at your fingertips - instan tly E lectron ic ma=l and co m ­puter con fe rencing C u rren t new s anc spo rts V a lu ­able business and 'manc.ai ■n fo 'mat ic r Travel se r­vices A w ealth o f in fo rm ation about persona l com puting Even gam es. All fuily com pa tib le with your equ ipm ent, and ready to use a* once

To Order Call Toll Free800-824-7888 Continental US

800-824-7919 Alaska and Hawaiior anyw here m the world

916-929-9091 Ask tor operator # 592

MAIL ORDERSPLEASE WRITE NUMBER OF ITEMS IN BOX

□ NETWORKER $ 129 □ NETMASTER $79

□ N ETWORKER/NETMASTER COMBO $ 179

C.O.D.COD ORDERS ADD S3 OC

NAME .......................................................................................... ...

ADORESS_____________ __________ — - _______________

C IT Y _____________________ STATF_________ Z IP _____

M ass res idents add 5 % sales tax

Total E n c lo s e d _____________

r MASTERCARO I'/' VISA ~ CHECK r C O D

CARD NUMBER__________________________ EXPIRES________

Seno OmefS ana MjKr- C^eus Payable :o SIGNATURE .

JQB Enterprises IncorporatedP.O. BOX 269 AYER MASSACHUSETTS 01432

All Prices Quoted are tor Prepaid Orders — Prices Subject to Change W ithout Notice

i Credit Ca-d orders -nust be s.gned >

Page 49: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

f a z t u n e ------------ :

........................ .......................... o o o68000 Exception ProcessingO O O ................................................................................

by Mike Rosing Littleton, Colorado

iFir= ini---------iRr = = n a r = i Rr^=^=in i------= im

68000 uses exception processing to handle software and hardware.

ir-ii in i---------ir i---------in r = ^ = in i-------------------------------

The 68000 microprocessor has many attributes found on mini and main frame com puters. These include system and user modes, levels of interrupts and error recovery from bad s o ftw a re . C om p ared to 8 b it microprocessors like the 6502 and 6809, the 68000 seems incredibly complex.

Fortunately, the designers of the 68000 came up with a logical and straight forward method of handling all the complexities. The purpose of this article is to describe "exception processing" on the 68000. The following parts will give examples of how to take advantage of the 68000's capabilities. Part 2 will cover software exception processing in general; Part 3 w ill cover hardw are excep tio n processing for the Sage II.

Status Register

Like other microprocessors, the 68000 has a status register. This holds the carry, overflow, zero and negative bits w h ich are found on a ll m icroprocessors. The 68000 has additional bits called trace, interrupt mask and supervisor state. The bit positions within the status register are shown in Table 1.

Table 1 - Status Register

Bit Description

15 Trace Mode

14 Unused

13 Supervisor State

12-11 Unused

10-8 Interrupt Mask

7-5 Unused

U Extend (X bit)

3 Negative

2 Zero

1 Overflow

0 Carry

Bits 0-7 are called the user byte and bits 8-15 are called the system byte. The trace mode bit is useful for tracing programs one instruction at a time. The interrupt mask determines what level of interrupt can be processed, lower levels being ignored. We will get into those bits later. For now the supervisor state is most important.

If you have ever written a program on an 8 bit machine which accessed every byte in I/O space (like C000 to CFFF on the Apple 2] you will appreciate the separation of user state and supervisor state on the 68000. When the 68000 is in user state, it can not access the system byte of the status register. Nor can it access addresses which are specified to be in supervisor space.

Register A7 is also affected by the supervisor state bit. If the bit is set A7 points to the supervisor stack pointer. When the supervisor state bit is clear A7 points to the user stack pointer. Most systems keep these stacks in different aresss of memory.

Exceptions

Once the 68000 goes to user state, it can not change the supervisor state bit. Unless an exception occurs, the 68000 will stay in user state. Since exceptions can be forced by software, this is not a problem. In fact, it ensures program integrity since exceptions are all outside the users normal needs.

Exceptions include interrupts, hardware errors, software errors and traps. Interrupts are caused by external devices. Hardware errors are part of external logic to the 68000. Software errors include division by zero and

registers out of bounds. Traps are sim ilar to a software generated interrupt.

All 68000 exceptions go thru four steps. Step one is to make a copy of the status register. This ensures that after the exception is handled the processor can return to its original state. The supervisor state bit is set putting the processor in supervisor mode and sets the stack pointer to the supervisor stack.

Step two determines the vector number of the exception. This vector is a pointer to the code which the 68000 will execute to take care of the exception. In some cases this number is placed on the bus by an external device. In other cases the vector number is generated by the 68000.

In step three, the program counter is pushed on the supervisor stack followed by the status register copy made in step one. If the exception is a bus or address error, more information will be pushed on the stack during this step.

Step four sets the program counter to the address found in step two and normal execution resumes.

The address pointers used by the 68000 in step two are located at addresses 0 thru $3FF. Every four bytes represents a 32 bit pointer. This is enough room for 256 pointers. Multiplying the vector number by four gives the address of the pointer. This in turn has the address of the code to execute.

The first 64 exception vectors have specific meanings. For example, vector number 5 is the divide by zero exception. Vectors 48 thru 63 are reserved for future use. Vectors 64 thru 255 are user definable.

No. 75 ■ September 1984 MICRO 47

Page 50: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Table 2 — Software Exception V ectors Table 3 — Hardware Exception V ectors

ictor Number Hex Address Description

3 C Address error

4 10 Illegal instruction

5 14 Zero divide

6 18 CHK instruction

7 1C TRAPV instruction

8 20 Privilege violation

9 24 Trace

10 28 Line 1010 emulator

11 2C Line 1111 emulator

32-47 80-BC TRAP instructions

Vector Number Hex Address Description

0 0 Reset

2 8 Bus error

15 3C Uninitialized interrupt

24 60 Spurious interrupt

25-31 64-7C Autovector interrupts

64-255 100-3 FC User interrupts

Software Exceptions

Table 2 shows the vector numbers and locations for the software exceptions. A short description of each is given here. Actual examples will be given in Part 2 of this article.

Address error: Attempt was made to reference word or long word address on an odd boundary.

Illegal instruction: Attempt was made to execute data. Patterns S4AFA, $4AFB and $4AFC are "permanently illegal'’ according to Motorola.

Zero divide: Attempt to divide by zero using DIVU or DIVS instructions.

CHK in stru ctio n : The checkinstruction is used to compare a register against bounds. If not in proper range the exception occurs.

TRAPV in stru ction : Exception taken if overflow bit is set.

Privilege violation: Attempt was made in user mode to change system byte of status register.

Trace: If the trace bit is set in the status register, the exception is taken at the end of each instruction. This pointer should be set to a debugger or monitor.

Line 1010 and Line 1111 emulator:68000 instructions which have $A or $F as the first nibble will come here. Motorola has a set of instructions defined for the 68020 such as floating point operations. The purpose of these traps is to enable emulation of the 68020 by the 68000 for downward compatability.

TRAP instructions: These can be compared to software interrupts of 8 bit microprocessors. There are 16 available

traps on the 68000.

Hardware ExceptionsTable 3 shows the hardware vectors. I

call them hardware because the support chips placed around the 68000 determine how these vectors are generated.

Bus error: When pin 22 goes low on the 68000 this exception is processed. Usually a system is designed so any attempt to access memory which does not exist will pull this low.

Uninitialized interrupt: If an MMU (memory management unit) is attached to the 68000 it can generate this vector.

Spurious interrupt: If bus error goes low while an interrupt is being processed this exception is taken.

Autovector interrupts: Designed for use with 6800 peripherals. Almost all systems built to date use these as the only interrupts.

Listing 1

* initialize trap vector

lea trapzero,aO

move.l aO,$80

* execute software exception

trap #0

* go back to user mode

User interrupts: Space for interrupts generated using "norm al" interrupt processing. Very few manufacturers use this because autovectoring is much simpler.

To understand how to use the 68000 exception processing a few examples are necessary. Part 2 of this article will discuss software exceptions which can be programmed on any 68000 system. Examples of hardware exceptions will be given in Part 3. These examples will be for a specific computer but the main ideas are transportable to other machines.

Part 2: Software Exceptions

In the first part of this article, the 68000 exception processing was described in the theoretical sense. This

O

Gget trap address

put into vector location

o

o

move #0,sr clear all of status register

rts

* code executed by trap #0 instruction O

set supervisor bit in old status word

return from exception q

trapzero:bset #5,(sp)

rte

48 MICRO No. 75 ■ September 1984

Page 51: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

section’s purpose is to create a better understanding of the 68000 exception processing activity by using concrete examples.

When an exception occurs, the 68000 copies the status register, gets the vector number, pushes the program counter and previous status register on the supervisor stack and jumps to the address stored for this vector.

As an extremely simple example the code in Listing 1 is actually very powerful.

The first two lines in Listing 1 initialize vector number 32. The sixteen trap instructions use vectors 32 + n where n is in the range zero to fifteen. These two lines of code point out the flexability of the 68000 exception system. The exception processing code may be anywhere in memory. It also points out how simple it is to change exception vectors.

The trap instruction is the same as a software interrupt instruction on a 6502 or 6809. The program counter and status register are pushed onto the supervisor stack. The number in the instruction determines which vector is chosen. Trap instructions are always immediate mode. The trap number is added to 32, then multiplied by 4. This gives the address of the trap code. In this case address $80 contains the address of trapzero.

The address stored in location $80 is put into the program counter. Execution now begins as usual. In this case, bit five of the byte pointed to by the supervisor stack is set. Remember that this is a copy of the status register. When the RTE is executed, the status register is pulled from the stack. Bit five happens to be the supervisor state bit. When the program counter is pulled from the stack we return to the instruction following the trap #0.

We have now gone from user mode to supervisor mode and the system is at our command. Depending on the operating sy stem , th is can be extremely dangerous. After playing with the system we may want to return to user mode. This is done by clearing the supervisor state bit in the status register |sr).

If an attempt were made at executing the move #0; sr in user mode the privilege violation exception (vector number 8] would occur. In this case the program counter pushed on the stack points to the instruction in v io la t io n , n o t the in s tru c t io n

afterwards. This is slightly different from the trap instruction.

Unimplemented instructions are similar to the privilege violation. The program counter pushed on the system stack points to the offending code. This is very useful as shown in the next example.

Suppose we have an application where 64 bits are required. As an example we create an instruction which has the following format:

Nibble Hex value Meaning

3 F Line 1111 emulator2 0 Addition1 0 ,2 ,4 ,6 Register0 0 ,2 ,4 ,6 pair

N ib b le 3 fo rce s e x c e p tio n processing on vector number 11 (address $2C). Nibble 2 can be used to

specify one of 16 instructions. For this example only one is used. Nibble 1 specifies the source register pair. Since we want to add 64 bits, we will need two registers to hold the result. Zero means registers dO and dl. Six means register d6 and d7. We will take odd numbers to be errors. Nibble 0 specifies the destination register pair.

Listing 2 shows how an emulator might be written. It first saves all the data registers. Errors are just ignored. Since any registers might be used, all are saved into memory. The source and destination register pairs are converted to memory offsets. These memory contents are then added. Notice that the add with extend instruction is not as flexable as the add instruction. This is a minor drawback of the 68000.

In itialization of the em ulator requires the first line of Listing 2. This puts the address of the emulator into its appropriate vector.

Listing 2

* in it ia liz e line 1111 emulator and c a ll i t for testing

O

move.1movemove.do.vr

rts

l in e l l l l ,$ 2 cl,d22,d4$f024

G* emulator code for 64 b it addition of registers

l in e lU l :

savezone:

movem.l d0-d7/a0,savezone save datamove.1 2(sp),a0 point to instructionmove (a0),d0 get instructionbtst 0,d0 even destination?bne error nopebtst 4,d0 even source?bne error no againand 7,d0 createls l 2,d0 destination o ffse tmove (a0),d l createand $70,dl sourcels r 2 ,d l o ffse tlea savezone, a0 point to datamove.1 4(a0,d l),d2 get lower source b itsadd. 1 d2,4(a0,d0) add to lower destination b itsmove.1 (a0,d l),d2 get high source b itsmove.1 (a0,d0),d3 get high destination b itsaddx.1 d2,d3 add with extendmove.1 d3,(a0,d0) reset destinationmovem.1 savezone,d0-d7/a0 restore new dataadd. 1 2,2(sp) point to next instructionrte return from exception.d s .l 9 space for 9 longwordsend

G

O

No. 75 • September 1984 MICRO 49

Page 52: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Execution is done by placing a word in the middle of normal code. Most assemblers require a construct shown in Listing 2 as .dc.w $F024.

When normal execution gets to this instruction exception processing takes over. Since the high nibble is $F = 1111 (base 2), vector number eleven is executed. This is just our emulator. Notice that we added 2 bytes to the program counter before returning from the exception. This prevents an infinite loop.

The trace exception is also a software interrupt. Like the trap in stru ction the program counter pushed on the stack points to the next instruction to be executed. This happens because the trace exception processing always occurs between instructions. To make effective use of the trace exception, one must know the I/O port addresses for effic ien t debugging.

Unlike the previous exceptions, the address error can occur anytime an effective address for a word or longword is on an odd byte. This is usually in the middle of an instruction execution. Because of this, more information is pushed on the supervisor stack during the third step of exception processing. This includes the instruction register which holds the first word of the offending instruction. The program counter is usually two to four bytes past this point. After the instruction register comes the effective address which is going to be odd. This is a longword. The 1st word pushed on the stack includes the function code, a read/write bit and an instruction bit.

The function code corresponds to the 3 bits FCO, FC1 and FC2 on the 68000. These determine user or supervisor mode and program or data space. The read/write bit tells whether the access was during a read or write. The instruction bit tells if the error occured on an instruction. An address error on an instruction will occur on a line of code such as JMP (AO) where AO is odd. The jump instruction itself will be executed, but an address error will occur as soon as AO is transferred to the program counter.

To fully u tilize these errore x c e p t io n s , one has to sendinformation to the programmer. Thisusually involves input and output. The final section of this article givesexamples of hardware interrupts for I/O on a specific machine.

Part 3: Hardware Exceptions

The previous two parts of this article have described 68000 exception processing which was valid for any system. This final portion is specific to the Sage 2 because hardware exceptions are caused by the physical wiring connected to the 68000.

Hardware exceptions include reset, interrupts and bus error. Each of these are pfiysically wired to the 68000. On the. Sage, the reset is performed by powser on, or by pressing the reset buttorTon the back of the machine.

The bus error line on the Sage will be activated if the address strobe line is not released within two microseconds. Even the. slowest EPROM's are faster than this. Usually one gets this error when attempting to access an address such as $4D696B65.

Interrupts are generated whenever any of the interrupt lines go low. All lines low indicates a level 7 interrupt. All lines high indicates no interrupt. The Sage is built with an LS148 priority encoder attached to the interrupt lines. This ensures that the 68000 sees only the highest level interrupt yet to be processed.

Reset Processing

During reset the 68000 looks for a system stack pointer at vector number0. This is located at address 000000. It then reads the program counter from vector number 1 at address 000004. On the Sage these addresses are located in RAM. How does the Sage turn on at a known address?

When the reset line goes low a latch is cleared which relocates the monitor EPROMs to address 000000. The first longword in the EPROM is $400 which is the startup system stack. The next longword is $FE003C which becomes the program counter.

On the Sage, addressing the EPROMs at addresses in the $FE0000 range relocates the EPROMs to $FE0000. Thus, as soon as the program counter address hits the bus, the EPROMs are where they need to be and the 68000 is initialized.

The only way to change the reset system on the Sage is to burn new EPROMs. For most users this should be unnecessary.

Bus Error Processing

The bus error exception is exactly the same as the address error described in part two previously. It is processed whenever the bus error line (pin 22] goes low. To appreciate why this is useful in two microseconds on the Sage, remember that the 68000 is an asychronous device. DTACK has to go low before the address lines are released. The processor enters wait states until DTACK is returned. It is perfectly happy to wait forever.

To avoid external circuitry which computes whether an address is valid it is much simpler to put on a timer. The timer is run at the start of each bus access and off when no bus access takes place. As long as the timer never runs out no bus error can occur. If no wait states are ever used, a complete bus access will require 250 nanoseconds and a complete instruction will require 500 nanoseconds (or more). A single wait state is 125 nanoseconds. Thus 16 wait states will go by before a bus error occurs.

This discussion is specific to the Sage only. Other systems will have different methods of generating bus errors. The access address is pushed on the stack in any case, and this is important to display for debugging purposes.

Interrupt Processing

According to the 68000 manual, normal interrupt processing requires the interrupting device to put its vector number on the lower data bus. This number should be greater than 64. This method allows for a total of 192 interrupts of any desired level. The implementation is not so easy in hardware. I don’t know of any 68000 based m achines w hich use this capability.

The lack of "norm al" interrupts is due to the 68000 having autovector interrupts. By pulling the VPA line low (pin 21) d uring an in te rru p t acknowledge the 68000 looks at the interrupt level input lines (pins 23-25). This value is added to 24 to get the exception vector.

Level 7 is used for RAM parity errors. Levels 4, 5 and 6 are used for the IEEE port, the terminal input port and the floppy disk controller respectively. The level one interrupts are processed thru an Intel priority interrupt controller for eight interrupts. All

50 MICRO No. 75 • September 1984

Page 53: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

interrupts are autovectored and no provision was made far "norm al” interrupt processing as defined by Motorola.

The eight level one interrupts include two clock timers, the terminal receive ready, the terminal and remote transmit ready, a ring detect, printer acknowledge and software generatable inputs. In order to give an example of interrupt processing on the 68000, we will mask all but the terminal USART generated interrupts.

The terminal interface chip is an Intel 8251 A. This chip generates an interrupt whenever a character is received, as well as when it is ready to transmit a character.

The code shown in Listing 3 is very simple and should not be used for any real application because it does not save registers. It is a good example to follow though. The first line of code puts the processor into supervisor mode |see page 48, Listing 1). The mask on the next line prevents all interrupts except the USART transmit ready from entering the 8259. Next the autovector addresses are set to the interrupt codes. Registers are used directly for this example and are initialized. The 5 turns the USART on for transmission and reception of data. Finally, the stop instruction moves $2000 into the status register and halts processing.

When an interrupt occurs the processor executes code starting at the interrupt in question. If the USART is ready to transmit the termout interrupt will execute. If a character comes in from the keyboard, the termin code will execute. When the processor returns from the interrupts the code following the stop is executed.

To follow th is, suppose the processor is halted. We press a key on the terminal which is transmitted to the USART. The USART causes interrupt level 5 and the 68000 autovectors to termin. The character is pulled from the USART, clearing the interrupt. We store it into the input buffer and bump the input buffer pointer. After returning from the interrupt, the 68000 checks to see if a character came in.

A character was received so DO is not equal to D l. The character is moved to the output buffer and p o in ters are in crem en te d . T h e tran sm itter is enabled and the processor halts again.

Since the transmitter is empty, it

generates a level one interrupt via the 8 25 9 . The lev el one in terru p t autovectors to termout. Since we set it up for only one possibility, the 8259 interrupt level is ignored. However, in a real system we would then have to pick the correct place to go to handle the interrupt.

The character is moved from the output buffer to the transmitter of the USART. The get pointer is bumped and the interrupt is ended.

At this point DO equals D l so we return to the stop instruction. The USART generates a transmitter empty interrupt so we again vector to the termout routine. At this point D2

equals D3 meaning the buffer is empty (or overflowed!). The endout point turns the transmitter enable off. Return from interrupt again finds DO and D l equal putting us at the stop instruction.

Even at 19.2K baud the trans­mission of characters is 100 times slower than the processor. This is only an example to show how interrupts can be used to run 1/O in background while 68000 processes data in foreground.

To summarize, remember that exceptions all have vectors which point to the code which handles them. Any exception vector can be changed on any computer to suit the needs of your program.

Listing 3

* Assume baud rates set up and 8259 initialized

trap #0 go to supervisor mode

move.b #*11011111,$FFC043 mask off all interrupts* except terminal transmittransmit

move.1 #termout,$64 autovector 1

move.1 #termin,$74 autovector 5

lea inbufr,a0 pointer to input buffer

lea outbufr,al pointer to output bufferfer

moveq #0,d0 set

moveq #0, dl up

moveq #0, d2 get and

moveq #0,d3 put pointers

on: move.b #5,#FFC073 enable transmission and

wait: stop #$2000

reception

wait for interrupt

amp. b d0,dl char came in?

beq wait no,went out

move.b (a0,d0),(al,d3) move from input to output

put

addi.b #l,d0 bump input get pointer

addi.b #l,<tf bump output put pointer

bra on enable transmission

* terminal output interrupt handler

termout: move.b #$C,$FFC04l set up 8259 for read

move.b $FFC04l,d4 get interrupt level

move.b #$20,$FFC04l clear interrupt

cmp. b d2,d3 hit end of

beq endout data to transmit?

move. b (al,d2),$FFC071 send out char

a.ddi.b #l,d2 bump get pointer

rte end of interrupt

endout: move.b #4,$FFC073 disable transmission

rte

* terminal input interrupt handler

termin: move.b $FFC0721,d4 get input char

move.b d4,(a0,dl) put into input buffer

addi.b #l,dl bump put pointer

cmp.b d0,dl hit get pointer?

tne endin yes, problems

move.b #0,$FFC073 so disable receive

endin: rte end of interrupt

©

o

©

©

AlCftO

No. 75 ■ September 1984 MICRO 51

Page 54: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

L e a tu n c

oTransferring dBase II Files

For Use With W ords tar/Mailmerge

Oby Robert R. Carroll

Woodland Hills, California

O

Alter your dBase II files and use them to produce personalized letter forms.

oWhen using the popular programs dBASE II and Wordstar/Mailmerge in business, an opportunity often presents itself where the two can be used together to produce personalized form letters. On the surface, it would seem that this should be no problem; h o w ev er, th e re e x is ts c e r ta in peculiarities in each program that forces a bit of thought as to how to manipulate dBASE II files so that Mailmerge sees just what it needs to perform correctly with all types of data. If you're not careful, you will undoubtedly find form letters loaded with unwanted spaces due to the trailing blanks leftover from the fixed field lengths of your data from dBASE II' s .DBF (data] files. Or worse, embedded commas in your data will confuse Mailmerge to the point where it won't track your data correctly. In either case your letters will look far from personal. This article will explore a simple yet effective method for flawlessly transferring dBASE II data files for this use.

Of the many books and articles written on these programs, none has come up with a simple, easy-to-use method of transferring the data files. Typical schemes require writing an external BASIC program or using a word processor in a lengthy, hard- to-remember procedure. dBASE II provides all the functions necessary to make the transfer complete without resorting to difficult external measures. Besides, many users of these programs don't have the time, inclination or programming knowledge to use them.

Now, let's look at a sample dBASE II .DBF file called DATA.DBF which contains mailing list data. Using dBASE I I 's L IST S T R U C T U R E command we see the following:

. USE DATA

. LIST STRUCTURE

STRUCTURE FOR FILE: A:DATA.DBF

NUMBER OF RECORDS: 00003

DATE OF LAST UPDATE: 03/15/84

PRIMARY USE DATABASE

FLD NAME TYPE WIDTH

001 MRMRS C 004

002 FIRSTNAME c 015

003 LASTNAME c 015

004 COMPANY c 020

005 STREET c 020

006 CITY c 015

007 STATE c 004

008 ZIP c 006

** TOTAL ** 00098

We can see that each field has a specific width determined by the user at the time the database was created. dBASE II will reserve this width for the data when it is stored on disc, whether the actual data fills up the entire width or not. For example, a LASTNAME of Deltawashington fills up our field width of 15 characters quite nicely. However, Stein leaves us with 10 trailing blanks which will be carried right into our form letter if we don’t get rid of them somehow. Let's enter some sample data to clarify the example.

52 MICRO No. 75 ■ September 1984

Page 55: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Rec § MRMRS FIRSTNAME

00001 Mr. John H.

00002 Mrs. Joanne T.

00003 Ms. Toni J.

LASTNAME COMPANY

Stein Tate: and Sons

Houseman Melt;, Inc.

Deltawashington Lewis, Jones, and Co.

STREET CITY STATE ZIP

24 Lake Avenue Chicago IL 60606

970 Tulips Street New York NY 1001911678 Riverside Dr. Burbank CA 91356

Now suppose we want to use this data to create a personalized form letter called FORMLTR written using Wordstar/Mailmerge. The letter might read as follows:

..FORMLTR

.op (to omit page number in printout)

.df DATATEXT.TXT (datafile created from dBASE II file DATA.DBF)

.rv MRMRS,FIRSTNAME,LASTNAME,COMPANY,STREET,CITY,STATE,ZIP

(tells Mailmerge to read values in specific order)

Dear &MRMRS& &LASTNAME&:

We regret to inform you that we cannot use &C0MPANY& in this

year's exhibition. Thank you for your interest.

Sincerely,

Clyde T. Newshandler

.pa(to begin new page)

If we don’t remove the trailing blanks we would get something like:

Dear Mr. Stein :

We regret to inform you that we cannot use Tate and Sons

this year's exhibition. Thank you for your interest.

The blanks in the text of the letter automatically tell the reader a computer is talking at him. Also, Mailmerge must see its data separated by commas and if a piece of data has a comma embedded in it, the entire piece must be enclosed in quotes. For example, in our Rec # 00002, the COMPANY field contains Melt, Inc. Mailmerge must see "M elt, Inc." so that it doesn't confuse the embedded comma with a field separator and think that " In c ." is the next data field. In this unfortunate occurrence, the tracking of all the data would be one field off for the rest of the letters generated. Thus we might get:

Dear 10019 Ms.:

We regret to inform you that we cannot use Toni J. in this

u h A Pea■ I

PERIPHERAL PRODUCTSDOT MATRIX PRINTERS

80 CPS................................... $239100 CPS................................. $259120 CPS................................. $299150 CPS................................. $349

WordStar__Pro Pack__

$269$369

Novation mAPPLE CAT II

300 Baud, Auto Answer, Auto Dial, FREE Software

$199NOVATION

1200 BAUD SPECIAL $529 1200 BAUD UPGRADE $339

DISK DRIVESC oncorde CHI ..............................................$189Rana Elite I .................................................. $229Rana Elite II ................................................ $369Rana Elite III.................................................. $475

la X A NMODEL115 12" Amber H i-Res............................ $129210 12" Com posite-RG B....................... $289400 12" RGB M ed -R es............................ $2994 10 12" RGB Hi-Res ................................ $349415 12" RGB Super Hi-Res ................... $399

\1 2 6 2 9 N. Tatum Blvd. ^ Suite 212

Phoenix, AZ 85032

Call: 602-957-3619$2 PHOIME REBATE WITH ANY ORDER

SHIPPING CHARGES0-100 $ 5

101-200 $ 8 201-300 $10 301- up $15

All prices are for cash or ch e ck — Visa/M astercard ad d 3%

No. 75 ■ September 1984 MICRO 53

Page 56: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Not very professional. Luckily, Mailmerge will also accept an overkill method of data separation: enclosing all data in quotes and separating them with commas. This seems like it would be more work, but actually it is the uniformity of this approach that makes this method work. And dBASE II does all the work for us.

Now let's try the conventional method of creating text files from dBASE II database files. While in dBASE II use the command:

. USE DATA

. COPY TO datatext DELIMITED WITH"

If we now examine the file DATATEXT.TXT (the .TXT extension is automatically assigned by dBASE II) using Wordstar or a suitable command like CP/M's TYPE, we'll see that all data is enclosed in quotes but with all the trailing blacks carried right along like this:

"Mr. ", "John H. ", "Stein ", "Tate and Sons ",

"24 Lake Avenue "/'Chicago ", "IL ","60606 ", "Mrs.",

Well, that's no good. Let's try the other way of creating text files from dBASE II files:

. USE DATA

. COPY TO datatext DELIMITED WITH,

Using this method, all data will be separated by commas and the trailing blanks will be trimmed from each piece of data like this:

Mr.,John H.,Stein,Tate and Sons,24 Lake Avenue,Chicago,IL.60606,

Mrs.,Joanne T.,Houseman,Melt,Inc.,970 Tulips Street,New York,NY,

10019,Ms.,Toni J.,Deltawashington,Lewis, Jones, and Co.,11678

Riverside Dr.,Burbank,CA,91356

Unfortunately, embedded commas (like in Melt, Inc.) will cause incorrect data tracking as we discussed earlier. Obviously this won't work with all data types either.

Fortunately, there is a trickier way to create text files with dBASE II whichto be running at the same time. If theallows the full power of the program

command SET ALTERNATE TO datatext.txt is used followed by SET ALTERNATE ON, everything shown on the screen will be sent to the file datatext.txt. So, we can write a short dBASE II program stripping away the trailing blainks from the data using the TRIM funciton and insert the proper punctuation so Mailmerge gets just what it wants. And, as an added bonus, since the full power of dBASEII is available, we can "filte r" the usable data for our form letters much more efficiently than we could by simply using the COPY TO command line.For our example, the following program could be written in dBASE II:

USE DATA

SET TALK OFF

SET RAW ON

SET ALTERNATE TO datatext.txt

SET ALTERNATE ON

DO WHILE .NOT. EOF

? 1 , T R I M ( M R M R S )M l 1 1

> >

9 1 , T R I M ( F I R S T N A K E )i mi r

> >

9 f , T R I M ( L A S T N A M E )1 ft t f

> >

9 I , T R I M ( C O M P A N Y )r it i f

> f

9 f , T R I M ( S T R E E T ) f fi f t >

9 1 , T R I M ( C I T Y )1 M f 1

>

9 i , T R I M ( S T A T E )\ ft? I

>

9 r , T R I M ( Z I P )\ tt f f

> J

S K I P

E N D D O

S E T A L T E R N A T E O F F

The SET TALK OFF command stops dBASE II from sending comments to the screen as it makes calculations or skips to the next record. SET RAW ON eliminates single spaces between fields which when defaulted to OFF is the normal way dBASE II will LIST or DISPLAY data. Keep in mind that everything sent to the screen will appear in the file datatext.txt.

Using the above dBASE II program on our sample file data.dbf will yield the following result automatically given the filename datatext.txt by dBASE II:

"Mr. "

"John H. ",

"Stein",

"Tate and Sons",

"24 Lake Avenue",

"Chicago",

"IL",

"60606",

"Mrs.",

"Joanne T.",

"Houseman",

"Melt, Inc.",

"970 Tulips Street",

"New York",

"NY",

"10019",

"Ms.",

"Toni J. ",

"Deltawashington",

"Lewis, Jones and Co",

"11678 Riverside Dr.",

"Burbank",

"CA",

"91356",

We can see that this format adheres to all of Mailmerge's rules. Each piece of data is separated by commas, trailing blanks trimmed and enclosed in quotes to protect embedded commas within data fields.

An extra added bonus is that our original dBASE II command file used to create the datatext.txt file is easily modified for use with other dBASE II .DBF files by changing the field names only via Wordstar or dBASE II's Modify Command. The rest remains intact.

If you do any work at all with these programs and form letters, you'll find this method unbeatable.

JMCftO

54 MICRO No. 75 • September 1984

Page 57: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

sT

E

P

A Step-Trace facility with a handy twist.

PE

R

by Chester H. Page Silver Spring, Maryland

Have you ever tried to debug a machine-language program by step- tracing it and found that you were looking at a lot of instructions that you had not written; This can be slow and annoying.

The reason for this phenomenon is obvious — all JSR calls to MONITOR routines get traced through step-by- step and this is distracting. I decided that I wanted a step-trace program that would display only my instructions,i.e., any call to a monitor subroutine would be handled as a single step operation, no m atter how many monitor steps were actually involved.

For b a ck g ro u n d , I stu d ied Peterson's Step-Trace in MICRO on the

Apple, Volume 2. That program mimics the S tep-Trace facility that was in the old monitor ROM before the days of AutoStart. He added a few features such as interrupted trace. In addition to the nuisance of dissecting all monitor subroutines used in your program, this Step-Trace program has a problem with COUT — it hangs up. My modification avoids this problem because COUT is not dissected. In fact,I can step-trace a program which calls for printing a word on the screen, then activating the printer and repeating the print operation on paper! To do this requires one special procedure: instead of changing output hooks at $36/37 (which would cause a hang-up) the hooks are changed directly in DOS at

SAA53/AA54.For a final touch, my stepper

program is relocatable and can be BRUN at any location that avoids the program to be debugged.

T h e step -tracin g displays of instructions and user registers are placed on screen lines 0 to 19; user COUT output appears in lines 22 and 23. Lines 20 and 21 maintain a gap for better appearance. The right-hand end of the gap lines is used for special storage, so exh ib its a peculiar combination of characters. The reason for this u nconventional storage lo c a tio n is to avoid p o ssib le interference with user programs which may use any available zero-page space

No. 75 ■ September 1984 MICRO 55

Page 58: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

W i t h t h e s e t o o l s . . .S-C M a c ro A ssem b ler - C om bined ed itor/assem ­

bler includes 2 9 com m ands and 2 0 d irectives, with

m acros, conditional assem bly, global rep lace, edit, and

m ore W ell-know n for ease-of-use and powerful features.

T housands o f users in o ver 3 0 countries and in every type

of industry attest to its speed, dependability , and user-

friendliness. Blends pow er, sim plicity, and perform ance to

provide the optim um capabilities to both beginning and

professional program m ers. W ith 100-p ag e m anual and

reference card, $92 . 50

C ro ss A s s e m b le r M o d u le s - O w ners of the S-C M acro

A ssem bler m ay add the ability to develop program s for

other system s. W e have m odules for m ost o f the popular

chips, at very reasonable prices:

6 8 0 0 0 1 / 0 2 ........................................ $ 3 2 .5 0

6 8 0 5 ......................................................$ 3 2 .5 06 8 0 9 ...................................................... $ 3 2 .5 0

6 8 0 0 0 ................................................... $ 5 0 .0 0

Z - 8 0 ......................................................$ 3 2 .5 0

P D P -1 1 .............................................. $ 5 0 .0 0

8 0 4 8 ......................................................$ 3 2 .5 0

8 0 5 1 ......................................................$ 3 2 .5 0

8 0 8 0 / 8 5 .............................................. $ 3 2 . 5 0

1 8 0 2 / 0 4 / 0 5 ........................................ $ 3 2 .5 0

All of the cross assem blers retain the full pow er of the S-C

M acro A ssem bler. You can develop program s for burning

m io E P R O M s, transfer through a daia-hnk, or diTeci execution by som e o f the plug-in pro cesso r cards now on

the m arket.

A pple A s s e m b ly L i n t - M onthly new sletter for assem bly

language program m ers, beginner or advanced. T utorial

articles; a d \a n c e d techniques; handy utility program s;

com m ented listings of code in D O S and A pple ROM s;

reviews of relevant new books, hardw are, software; and

m ore' S l 8 p e r y e a r ( a d d $ 3 for first class postage in U S A .

C anada, M exico: add $ 1 3 postage for other countries).

S-C Software Corporation 2331 Gus Thomasson, Suite 125 Dallas, Texas 75228(214) 324-2050

and may use the empty spaces in DOS for data storage. This special storage area is for (1) the split-screen window data, (2) storage of output-hook data and (3) storage of the XQT (execute instruction) area. The old monitor ROM uses S3C/44 for XQT, but S3E/3F gets overwritten by GETNUM. For this reason, the XQT area had to be re-initialized before each user step. I preferred to avoid this repetition because I use a lengthy initialization routine for relocatability. The problem is in the two jump instructions that follow the user command which was copied to XQT. These two jumps are for the normal no-branch return and the special return when relative-jump branches are taken. Since these jumps are to routines within the stepper program, they must be inserted by a code-locating routine. I preferred running this just once at the beginning of the program.

STEPPER is conventional except for one major departure. After a user instruction is copied to XQT, it is examined to see if it calls an address in the monitor. If so, the instruction is

executed directly instead of being simulated and stepped through. In the case of an indirect jump, the indicated jump address is examined for location. If it is in the monitor, it is displayed and the instruction executed.To use STEPPER, load the program to be debugged (at $nnnnj, enter HOME, then BRUN STEPPER, AX at any convenient location. Your program can be stepped through by entering nnnnS, followed by entering an S for each successive step. Alternatively, nnnnT will produce a continuous trace of su ccessiv e steps w hich can be interrupted by pressing any key and restarted with T, or shifted to single steps with S.

STEPPER can be tested on STEPPER DEMO. STEPPER DEMO includes subroutines, direct jumps and indirect jumps, both within itself and to the monitor and hook changing. To run, BLOAD STEPPER DEM O, enter HOME, BRUN STEPPER and enter SOOT. The word "T E S T " should be printed on the bottom screen line, then the printer activated and "T E ST " printed on paper.

Listing 1 Note: Mr. Page uses the S-C Macro FDDA- PRBYTE EQU $FDDA

Assembler , published by FDED- COUT EQU $FDED

O S-C Software Corporation FE00- BL1 EQU $FE00

FE75- A1PC EQU $FE75a#*#*##******#**#***#**###** FF3A- BELL EQU $FF3A* STEPPER * FF3F- RESTORE EQU $FF3F

O * CHET PAGE * FF4A- SAVE EQU $FF4Aa#****#*#*##*#**#*#*###**## FFA7- GETNUM EQU $FFA7

.OR $7000 FF58- RTRN EQU $FF58

.TA $800 FFBE- T0SUB EQU $FFBEV * .TF STEPPER FFC5- ZMOD0 EQU $FFC5

0022- W EQU $22 FFC7- ZM0DE EQU $FFC7

002F- LENGTH EQU $2F FFCC- CHRTBL EQU $FFCC

O 0033- PROMPT EQU $33 *0034- YSAV EQU $34 ^INITIALIZE WINDOW AREAS

003A- PCL EQU $3A *003B- PCH EQU $3B 7000- A9 00 LDA #0

o 003C- INDPTR EQU $3C 7002- 85 22 STA W

0048- STATUS EQU $48 7004- 8D 72 06 STA UW+2

0100- STACK EQU $100 7007- A9 14 LDA #$14

o 066E- 0UTPRT EQU $66E 7009- 85 23 STA W+l

06EF- XQT EQU $6EF 700B- A9 13 LDA #$13

0670- UW EQU $670 700D- 85 25 STA W+3

0674- TW EQU $674 700F- A9 16 LDA #$16

o AA53- HOOK EQU $AA53 7011- 8D 70 06 STA UW

C000- KBRD EQU $C000 7014- A9 18 LDA #$18

F882- INSDS1 EQU $F882 7016- 8D 71 06 STA UW+1

A F8D0- INSTDSP EQU $F8D0 7019- A9 17 LDA #$17

F948- PRBLNK EQU $F948 701B- 8D 73 06 STA UW+3

F954- PCADJ2 EQU $F954 *F956- PCADJ3 EQU $F956 70 IE- AD 53 AA LDA HOOK

© FAD7- REGDSP EQU $FAD7 7021- 8D 6E 06 STA 0UTPRT

FC22- VTAB EQU $FC22 7024- AD 54 AA LDA H00K+1

FD67- GETLNZ EQU $FD67 7027- 8D 6F 06 STA 0UTPRT+1

56 MICRO No. 75 ■ September 1984

Page 59: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

* *RELAYS* INITIALIZE XEQ RETURNS 70A4- 50 58 PCN3A1 BVC PCN3A2* 70A6- 50 58 PCN2A1 BVC PCN2A2 A

702A- 20 58 FF JSR RTRN 70A8- 50 D2 STRT1 BVC STRT702D- B8 CLV 70AA- AD 00 C0 TRACE LDA KBRD702E- 50 07 BVC NB *STOP ON ANY KEY7030- 20 4A FF NBRN JSR SAVE * WAIT FOR NEXT, REPEAT STEP o7033- 38 SEC 70AD- 30 15 BMI AGIN7034- B8 CLV 70AF- C6 34 DEC YSAV*RELAY TO PCN3 LOCATE NBRN 70B1- 20 C7 FF ENT JSR ZMODE o* AND INSERT JUMP 70B4- B8 CLV

7035- 50 6D BVC PCN3A1 70B5- 50 12 BVC STEP7037- BA NB TSX *TRY MONITOR COMMANDS7038- CA DEX *SEARCH MON CHARS o7039- 18 CLC 70B7- A0 17 MCMD LDY #$17703A- BD 00 01 LDA STACK,X 70B9- 88 CHRS DEY703D- 69 04 ADC #4 70BA- 30 C0 BMI STRT703 F- 8D F3 06 STA XQT+4 *CMP WITH TABLE, TRY AGAIN

u7042- E8 INX * FOUND, PROCEED7043- BD 00 01 LDA STACK,X 70BC- D9 CC FF CMP CHRTBL,Y7046- 69 00 ADC #0 70BF- D0 F8 BNE CHRS o7048- 8D F4 06 STA XQT+5 70C1- 20 BE FF JSR TOSUB704B- A9 4C LDA #$4C 70C4- A4 34 AGIN LDY YSAV704D- 8D F2 06 STA XQT+3 70C6- B8 CLV

7050- 8D F5 06 STA XQT+6 *GET NEXT COMMAND, ADR TO PC o

7053- 20 58 FF JSR RTRN * DISPLAY INSTRUCTION7056- B8 CLV * RESET OUTPUT PORT

7057- 50 0F BVC BR 70C7- 50 Cl BVC NXTI o7059- 18 BRAN CLC 70C9- 20 75 FE STEP JSR A1PC705A- A0 01 LDY #1 70CC- 20 D0 F8 JSR INSTDSP705C- B1 3A LDA (p c l ),y 70CF- AD 6E 06 LDA OUTPRT705E- 20 56 F9 JSR PCADJ3 70D2- 8D 53 AA STA HOOK o

7061- 85 3A STA PCL 70D5- AD 6F 06 LDA OUTPRT+1

7063- 98 TYA 70D8- 8D 54 AA STA HOOK+17064- 38 SEC 70DB- A2 02 LDX #2 A7065- B8 CLV #NOP1S TO XEQ AREA*RELAY TO PCN2 LOCATE BRAN 70DD- A9 EA XQIN LDA #$EA* AND INSERT JUMP 70DF- 9D EF 06 STA XQT,X

7066- 50 3E BVC PCN2A1 70E2- CA DEX o7068- BA BR TSX 70E3- D0 F8 BNE XQIN

7069- CA DEX %

706A- 18 CLC * COPY USER COMMAND o706B- BD LDA STACK,X £

706E- 69 04 ADC #4 70E5- A2 00 LDX #0

7070- 8D F6 06 STA XQT+7 70E7- AI 3A LDA (PCL,X)

7073- E8 INX 70E9- D0 17 BNE NOTBRK o7074- BD 00 01 LDA STACK,X #SET SCREEN OUTPUT

7077- 69 00 ADC #0 70EB- A9 F0 LDA #$F0

7079- 8D F7 06 STA XQT+8 70ED- 8D 53 AA STA HOOK* 70F0- A9 FD LDA #$FD oV707C- D8 STRT CLD 70F2- 8D 54 AA STA HOOK+1

707D- 20 3A FF JSR BELL 70F5- 20 82 F8 JSR INSDS1

7080- A9

7082- 85

2A

33

CONT LDA

STA

#$2A

PROMPT

70F8- 20 D7 FA

70FB- B8

JSR REGDSP

CLV o7084- 20 67 FD JSR GETLNZ *RELAY

7087- 20 C7 FF JSR ZMODE 70FC- 50 AA BVC STRT1

708A- 20 A7 FF NXTI JSR GETNUM 70FE- 50 7B PCN3A2 BVC PCN3A3 o708D- 84 34 STY YSAV 7100- 50 7B PCN2A2 BVC PCN2A3*TC TT CTTTD' TC TT TDAPT?1? %

* IS IT < CR> ? * EXAMINE OPCODE

708F- C9 EC CMP #$EC £ o7091- F0 IE BEQ ENT 7102- A4 2F NOTBRK LDY LENGTH

7093- C9 ED CMP #$ED 7104- C9 20 CMP #$20

7095- F0 13 BEQ TRACE 7106- D0 0A BNE TRYJMP o7097- C9 C6 CMP #$C6 #IT IS JSR

7099- D0 1C BNE MCMD *IS IT IN MONITOR?

709B- 20 C5 FF JSR ZMOD0 *YES, SO EXECUTE, NO, SIMULATE

709E- 20 00 FE JSR BL1 7108- B1 3A LDA (PCL),Y o70A1- B8 CLV 710A- C9 F8 CMP #$F8

70A2- 50 DC BVC CONT 710C- B0 71 BCS EX1

No. 75 • September 1984 MICRO 57

Page 60: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

710E- 90 73 BCC SJSR1 7193- 49 14 EOR #$147110- 50 B2 AGIN2 BVC AGIN 7195- C9 04 CMP #47112- C9 4C TRYJMP CMP #$4C #SET UP BRANCH RETURN TO BRAN o7114- D0 08 BNE TRYIND 7197- F0 02 BEQ XQ2*IT IS JMP 7199- B1 3A XQ1 LDA (PCL),Y*IS IT TO MONITOR? 719B- 99 EF 06 XQ2 STA XQT,Y*YES, EXECUTE NO, SIMULATE 719E- 88 DEY o7116- B1 3A LDA (PCL),Y 719F- 10 F8 BPL XQ1

7118- C9 F8 CMP #$F8 *RESTORE USER REGISTERS, EXEC USER CMD711A- B0 69

711C- 90 69

BCS EX2

BCC SJMP71A1- 20 3F FF

71A4- 4C EF 06

JSR

JMP

RESTORE

XQTo

711E- C9 6C TRYIND CMP #$6C ^SIMULATE RTI7120- D0 67 BNE TRYRTS 71A7- 18 SRTI CLC*INDIRECT JUMP 71A8- 68 PLA o7122- B1 3A LDA (PCL),Y 71A9- 85 48 STA STATUS7124- 85 3D STA INDPTR+1 ^SIMULATE RTS7126- 88 DEY 71AB- 68 SRTS PLA o7127- B1 3A LDA (PCL),Y 71AC- 85 3A STA PCL

7129- 85 3C STA INDPTR 71AE- 68 PLA

712B- B1 3C LDA (INDPTR),Y 71AF- 85 3B PCN2 STA PCH*IS IT TO MONITOR? SIMULATE 71B1- 20 54 F9 PCN3 JSR PCADJ2 o712D- C9 F8 CMP #$F8 7IB4- 84 3B STY PCH712F- 90 45 BCC SIND1 71B6- 18 CLC* 71B7- 90 18 BCC NEWP

* DISPLAY MONITOR ADDRESS *RELAYS o* 71B9- 50 43 USER1 BVC USER4

7131- AD 53 AA LDA HOOK 7IBB- 50 36 USER2 BVC USER37134- 8D 6E 06 STA OUTPRT ^SIMULATE JSR r \7137- AD 54 AA LDA HOOK+1 ^SIMULATE RETURN TO STACK

713A- 8D 6F 06 STA OUTPRT+1 71BD- 18 SJSR CLC

713D- A9 F0 LDA #$F0 71BE- 20 54 F9 JSR PCADJ2

713F- 8D 53 AA STA HOOK 71C1- AA TAX o7142- A9 FD LDA #$FD 71C2- 98 TYA

7144- 8D 54 AA STA HOOK+1 71C3- 48 PHA

7147- A9 8D LDA #$8D 71C4- 8A TXAo7149- 20 ED FD JSR COUT 71C5- 48 PHA

714C- 20 48 F9 JSR PRBLNK 71C6- A0 02 LDY #2

7l4F- 20 48 F9 JSR PRBLNK ^SIMULATE JUMP

7152- 20 48 F9 JSR PRBLNK 71C8- 18 SJMP CLC o7155- A9 A4 LDA #$A4 ^SIMULATE INDIRECT JUMP

7157- 20 ED FD JSR COUT 71C9- B1 3A SIND LDA (PCL),Y

715A- B1 3C LDA ( INDPTR),Y 71CB- AA TAX

715C- 20 DA FD JSR PRBYTE 71CC- 88 DEY o715F- 88 DEY 71CD- B1 3A LDA (PCL),Y

7160- B1 3C LDA ( INDPTR),Y 71CF- 86 3B STX PCH

7162- 20 DA FD JSR PRBYTE 71D1- 85 3A NEWP STA PCL o7165- AD 6E 06 LDA OUTPRT 71D3- B0 F3 BCS SJMP

7168- 8D 53 AA STA HOOK 71D5- AD 53 AA NEWP2 LDA HOOK

716B- AD 6F 06 LDA OUTPRT+1 71D8- 8D 6E 06 STA OUTPRT

716E- 8D 54 AA STA HOOK+1 71DB- AD 54 AA LDA HOOK+1 o* 7IDE- 8D 6F 06 STA OUTPRT+1

7171- A4 2F LDY LENGTH 71E1- A9 F0 LDA #$F0

7173- B8 CLV 71E3- 8D 53 AA STA HOOKo7174- 50 43 BVC USER1 71E6- A9 FD LDA #$FD

7176- A4 2F SIND1 LDY LENGTH 71E8- 8D 54 AA STA HOOK+1

7178- 38 SEC 71EB- 20 D7 FA JSR REGDSP

7179- B0 4E BCS SIND 71EE- B8 CLV o#RELAYS *RELAY TO AGIN

717B- 50 34 PCN3A3 BVC PCN3 71EF- 50 90 BVC AGIN1

717D- 50 30 PCN2A3 BVC PCN2 71F1- 50 E2 NEWP1 BVC NEWP2

717F- B0 3A EX1 BCS USER2 * o7181- 50 8D AGIN1 BVC AGIN2 *EXECUTE MONITOR ROUTINE

7183- 90 38 SJSR1 BCC SJSR *

7185- B0 32 EX2 BCS USER1 *IF MONITOR SUBROUTINE SET UP RETURN o7187- 90 3F SJMP1 BCC SJMP *AND CONVERT JSR TO JMP

7189- C9 60 TRYRTS CMP #$60 71F3- 18 USER3 CLC

718B- F0 IE BEQ SRTS 71F4- 20 54 F9 JSR PCADJ2

718D- C9 40 CMP #$40 71F7- AA TAX o718F- F0 16 BEQ SRTI 71F8- 98 TYA

7191- 29 IF AND #$1F 71F9- 48 PHA

58 MICRO No. 75 • September 1984

Page 61: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

o

o

o

o

o

71FA- 8A TXA71FB- 48 PHA71FC- A0 02 LDY #.2♦EXECUTE MONITOR ROUTINE

71FE- A9 60 USER4 LDA #$607200- 8D F2 06 STA XQT+37203- B1 3A .1 LDA (PCL),Y

7205- 99 EF 06 STA XQT.Y7208- 88 DEY

7209- 10 F8 BPL . 1♦IF JSR, CONVERT TO JMP

720B- C9 20 CMP #$20720D- D0 06 BNE .2720F- A9 4C LDA #$4C7211- C8 INY

7212- 99 EF 06 STA XQT.Y

7215- A2 03 .2 LDX #3♦SAVE TRACE WINDOW DATA

7217- B5 22 SVT LDA w,x7219- 9D 74 06 STA TW,X721C- CA DEX72ID- 10 F8 BPL SVT72 IF- A2 03 LDX #3♦LOAD USER-WINDOW DATA

7221- BD 70 06 LDU LDA UW,X7224- 95 22 STA w,x7226- CA DEX

7227- 10 F8 BPL LDU

7229- 20 22 FC JSR VTAB722C- 20 3F FF JSR RESTORE722F- 20 EF 06 JSR XQT7232- 20 4A FF JSR SAVE

7235- A2 03 LDX #3♦SAVE USER-WINDOW DATA

7237- B5 22 SVU LDA w,x7 2 3 9- 9D 70 06 STA uw,x723C- CA DEX

723D- 10 F8 BPL SVU

723 F- A2 03 LDX #3♦LOAD TRACE-WINDOW DATA7241- BD 74 06 LDT LDA TW,X7244- 95 22 STA w,x7246- CA DEX

7247- 10 F8 BPL LDT

7249- A9 4C LDA #$4C724B- 8D F2 06 STA XQT+3♦RECOVER RETURN ADDRESS724E- 68 PLA

724F- 85 3A STA PCL

7251- 68 PLA

7252- 85 3B STA PCH

7254- E6 3A INC PCL7256- D0 02 BNE .27258- E6 3B INC PCH

725A- A2 00 .2 LDX #0725C- B8 CLV

♦RELAY TO NEWP2

725D- 50 92 BVC NEWP1

©

q For those who aren't using an S-C Assembler, to the right are definitions of those commands which are unique to this assembler. The following are from the 'S-C Macro Assembler’ by Bob Sander-Cederlof, copyright 1982, S-C

® Software Corporation.

Listing 2

.DA

o 1000 ft#################£1010 ♦ STEPPER DEMO ♦

1020 **#******#*##*#*#*1030 .OR $3001040 .TA $800

1050 .TF STEPPER DEMO

FDED- 1060 COUT • EQ $FDED

0006— 1070 PTR .EQ $6

0300- 20 11 03 1080 JSR TEXT

0303- A9 00 1090 LDA #0

0305- 8D 53 AA 1100 STA $AA530308- A9 Cl 1110 LDA #$C1

030A- 8D 54 AA 1120 STA $AA54

030D- 20 11 03 1130 JSR TEXT

0310- 00 1140 BRK

0 3 H - A9 8D 1150 TEXT LDA #$8D

0313- 20 ED FD 1160 JSR COUT

0316- A9 D4 1170 LDA #$D4

0318- 20 44 03 1180 JSR TI

03 IB- A9 C5 1190 LDA #$C5031D- 20 47 03 1200 JSR T2

0320- A9 D3 1210 LDA #$D3

0322- 20 4F 03 1220 JSR T5

0325- 20 58 FF 1230 JSR $FF58

0328- 20 54 03 1240 JSR T7

032B- A2 4l 1250 LDX #WORD

032D- A0 03 1260 LDY /WORD

032F- 86 06 1270 STX PTR

0331- 84 07 1280 STY PTR+1

0333- A0 00 1290 LDY #0

0335- B1 06 1300 PRINT LDA (PTR),Y

0337- F0 07 1310 BEQ DONE

0339- 20 ED FD 1320 JSR COUT

033C- C8 1330 INY

033D- 4C 35 03 1340 JMP PRINT

0340- 60 1350 DONE RTS

0341- D4 8D 00 1360 WORD .HS D48D00

0344- 4C ED FD 1370 TI JMP COUT

0347- 6C 4a 03 1380 T2 JMP (T3)034a- 4C 1390 T3 .DA #T4

034B- 03 1400 • DA /T4

034C- 4C 3C FF 1410 T4 JMP $FF3C

034F- 6C 52 03 1420 T5 JMP (T6)

0352- ED FD 1430 T6 .HS EDFD

0354- 6C 57 03 1440 T7 JMP (T8)

0357- 58 FF 1450 T8 .HS 58FF

DAtas constants 01• variables in your

program...The value or two bytes, is tion. If a label is address where the

of the expression, as onestored at the current loca- present, it is defined as thefirst byte of data is stored.'

.HS Hex String'Converts a string of hex digits (hhh...h) to binary, two digits per byte, and storesthem starting at the current location. If alabel is present, it is defined as the addresswhere the first byte is stored.'

.TF Target File'Causes the object code generated to be storedon a binary file, rather than in memory.’

.TA Target Address'Sets the target address at w hich the object-

code will be stored during assembly.'

.OR Origin'Sets the program origin and the target addressto the value of the expression. Program ori­gin is the address at which the object programwill be executed.’ JMCRO

No. 75 - September 1984 MICRO 59

Page 62: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Mastering Your VIC-20 Mastering Your Commodore 64

The 8 program s, “ run-ready” on d isk (C-64) or tape (VIC-20) and expla ined in the 160-192 page book, each dem onstra te im portan t concep ts of BASIC w h ile provid ing usefu l, en joyab le softw are. Program s include:• Player — com pose songs from your keyboard,

save, load and ed it fo r perfect m usic• M icroC alc — d isp lay ca lcu la tion program that

make even com plex opera tions easy• M aster — a one or tw o person guessing game• C lock — characte r g raph ics for a d ig ita l c lock

VIC-20 w ith tape & book ......................... just $19.95C-64 w ith d isk & book (avail. Sept.) .... just $19.95

Look for us at the International Software Show

Toronto, September 20-23

MICROCalc for C-64This on-screen ca lcu la to r com es w ith d iske tte and 48-page m anual o ffe ring a w ide varie ty o f useful screens, and a great way to learn BASIC expressions if you don ’t a lready know them.• U n lim ited ca lcu la tion length & com p lex ity• Screens can be linked and saved on disk/cassette• Build a library o f custom ized screens• Provide fo rm atted p rin te r ou tpu tD iskette & 48-page m anual .................. just $29.95

For the Freshest Books, Buy Direct!• No prehandled books w ith bent corners• Books com e d irect to your door• No tim e wasted searching store to store• 24 hours from order receipt to sh ipm ent• No sh ipp ing /hand ling charges• No sales tax (except 5% MA res.)• Check, MO, VISA/MC accepted (prepaid only)

The Computerist BookcartP.O. Box 6502, Chelmsford, MA 01824

For faster service, phone: 6 1 7 /2 5 6 -3 6 4 9 .

Page 63: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

A eatcine

Time-Series Forecasting

o by Brian Flynn Vienna, Virginia

C

o

A program 1:o predict the future.

Requirements: Apple II, Commodore 64, Atari, or CoCo with Flex

Prophets and pundits since time immemorial have tried to peer into that murky and mysterious region of shifting shadows and dancing dreams called the future. These seers and soothsayers have plied their fortune- telling trade using every sort of contrivance imaginable: everythingfrom shooting stars and playing cards to chicken entrails and crystal balls.

Today you can join this elite group of mystics and Merlins by using the t im e -se r ie s fo reca s tin g program presented here. It's written in a ‘generic BASIC' and runs nicely on a machine with minimum memory. And while the forecasts of yesteryear were often as illusory as a maintenance-free automobile or a meek and mild K lin g o n , th e m ic ro c o m p u te r projections can have a sound scientific basis.

After first explaining what a "tim e series" is, we'll show you how to use

the microcomputer program to predict future interest rates. W e'll describe the program's forecasting techniques

1. Least-Squares Trend2. Semi-Averages3. Percent Changes4. First Differences, and5. Past Averaj;es

and give you hints on when to use each.

W h at's a T im e Series?

A time series is a group of observations on a variable, in chronological order, at a set frequency. Monthly sales, weekly income, annual gross national product and the number of Americans flying to London every August are examples.

The adjective "tim e '' means that our observations are tallied at equal calendar intervals. And the noun "series" means that we have more than one data point. Flence, a "tim e series" records a variable's past and time-series forecasting projects its future using historical observations.

As the sage says, the past is prologue, or so we hope.

Real-W orld Exam ple: W hither Interest Rates?

The future level of interest rates in the econom y concerns m ost of us, borrowers and lenders alike. If we're thinking about financing a new house or car, for example, and if interest rates are falling, then delay will save us dollars. But we’re better off buying now if interest rates are rising.

Suppose the dogs of debt are muzzled for a change, however, and that we strut proudly to the teller’s window to lend instead of to borrow. Cash in hand and nirvana in mind, we decide to plop down $5K for a money- m a rk e t c e r t i f ic a t e m a tu rin g somewhere between 3 months and 2 1/2 years. If interest rates are headed downward, locking in a relatively high rate now for as long as possible (2 1/2 years) is sound strategy. With rising interest rates, on the other hand, we're better off with a shorter maturity.

There's only one catch to this nice "buy-low sell-high" kind of advice. How do we know if future interest rates will rise or fall? To try and find out,

No. 75 ■ September 1984 MICRO 61

Page 64: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

let’s use the time-series forecasting routine. Our first step is to gather historical data, with our bountiful harvest shown in Table 1. This sequence of numbers qualifies as a time

Table 1

Interest Rates on 3-Month Treasury Bills

Year: Month Percent

1982: 8 8.68

9 7.92

10 7.71

11 8.07

12 7.94

1983: 1 7.86

2 8.11

3 8.35

4 8.21

5 8.19

6 8.79

7 9.08

8 9.34

9 9.00

10 8.64

11 8.76

12 9.00

1984: 1 8.90

2 9.09

3 9.52

4 9.69

P e r c e n t

10.0 T

9 5

9 . 0

7 5

series: the observations are inchronological order (August 1982 to April 1984) at a set frequency (monthly).

After keying our figures into the computer, with the program prompting us at every turn, the microcomputer indicates that future interest rates can be predicted using any of these extrapolation techniques: (1) Least- Squares Trend, (2) Semi-Averages, (3) Percent Changes, (4) First Differences, and (5) Past Averages.

We can predict as far into the future as we care or dare, using one method after another, until all reasonable alternatives are exhausted.

We now explain each technique in detail.

Least-Slquares Trend

In Least-Squares Trend the micro­computer forecasts by extrapolating an historically fitted regression line into the future. As Figure 1 shows, the technique satisfies an urge that almost all of us have had: to draw a line through a plot of points to best reflect the apparent trend.

The microcomputer estimates the line using a statistical technique called ‘ ‘ord inary le a st s q u a r e s " . Our dependent variable, interest rates, is regressed on a lone explanatory variable, " tim e” . Observations on the latter are generated internally by the program, with August 1982 corres­

L e a s t - S q u a r e s T r e n d 3 - M o n t h T r e a s u r y B i l l R a te V e r s u s T i m e

8 2 : 8 9 10 11 12 8 3 : 1 2 3 4 5 6 7-4-

10 11 12 8 4 : 1 2

ponding to 1 (the first time period], September 1982 corresponding to 2 (the second time period), and so on. April 1984 corresponds to 21 since we have21 months worth of data.

Technically, the microcomputer estimates our linear equation so that the sum of squared deviations of our observations from the line is as small as possible,- hence the term "least squares” .

Taking a practical example, let’s forecast interest rates in January 1985. We ask the microcomputer to project nine months ahead, from May 1984. It responds with the forecasts of Table 2.

FORECASTS

METHOD: LEAST-SQUARES TREND

PERIOD ( 22 ) = 9.46

PERIOD ( 23 ) = 9.53

PERIOD ( 24 ) = 9.61

PERIOD ( 25 ) = 9.69

PERIOD ( 26 ) = 9.77

PERIOD ( 27 ) = 9.84

PERIOD ( 28 ) = 9.92

PERIOD ( 29 ) = 10

PERIOD ( 30 ) = 10.07

FORECASTS

METHOD: SEMI-AVERAGES

Figure 1

PERIOD ( 22 ) = 9.62

PERIOD ( 23 ) = 9.72

PERIOD ( 24 ) - 9.81

PERIOD ( 25 ) = 9.9

PERIOD ( 26 ) = 9.99

PERIOD ( 27 ) = 10.08

PERIOD ( 28 ) = 10.18

PERIOD ( 29 ) = 10.27

PERIOD ( 30 ) = 10.36

FORECASTS

METHOD: PERCENT CHANGES

PERIOD ( 22 ) = 9.86

PERIOD ( 23 ) = 10.03

PERIOD ( 24 ) = 10.21

PERIOD ( 25 ) = 10.4

PERIOD ( 26 ) = 10.58

PERIOD ( 27 ) = 10.77

PERIOD ( 28 ) = 10.96

PERIOD ( 29 ) = 11.16

PERIOD 30 ) = 11.36

62 MICRO No. 75 ■ September 1984

Page 65: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

FORECASTSM e th o d o f S e m i-A v era g es

Percent 10.01

9 .5"

9 .0 -

8.0-

S tep 1

7 .5 -

H— I— I—|— |— |— |— |— |— 1_ -I--- 1— I— 1—4— I— I— I— I— 1-81:8 9 10 11 12 83:1 2 3 4 5 6 7 8 9 10 11 12 84:1 2 3 4

In the first step the microcomputer divides our time series into two roughly equal parts, and computes the mean of each [8.1% and 9.1% respectively.)

PercentS tep 2

In the second step the microcomputer fits a line through the two means. The points on the line represent our forecasts.

Figure 2

METHOD: FIRST DIFFERENCES

PERIOD ( 22 ) = 9.86

PERIOD ( 23 ) = 10.03PERIOD ( 24 ) = 10.2

PERIOD ( 25 ) = 10.37

PERIOD ( 26 ) = 10.54

PERIOD ( 27 ) = 10.71

PERIOD ( 28 ) = 10.88

PERIOD ( 29 ) = 11.05

PERIOD ( 30 ) = 11.22

FORECASTS

METHOD: PAST AVERAGES OF 20

PERIOD ( 22 ) = 9.75

PERIOD ( 23 ) = 9.81

PERIOD ( 24 ) = 9.87

PERIOD ( 25 ) = 9.93PERIOD ( 26 ) = 9.99

PERIOD ( 27 ) = 10.05PERIOD ( 28 ) = 10.11

PERIOD ( 29 ) = 10.18

PERIOD ( 30 ) = 10.24

FORECASTS

METHOD: PAST AVERAGES OF 20

PERIOD ( 22 ) = 9.74

PERIOD ( 23 ) = 9.79

PERIOD ( 24 ) = 9.84

PERIOD ( 25 ) = 9.89

PERIOD ( 26 ) = 9.94

PERIOD ( 27 ) = 9.99

PERIOD ( 28 ) = 10.04

PERIOD ( 29 ) = 10.09

PERIOD ( 30 ) = 10.14

A big advantage of Least-Squares Trend over traditional regression routines is that we know future values of the explanatory' variable (“ tim e” ) with absolute certainty. With the latter technique we don't. Using the rate of inflation instead of "tim e” to predict interest rates, for example, leaves us the problem of estimating the price level in January 1985 before we can run our model.

Semi-Averages

Namely, the microcomputer divides our time series into two roughly equal parts and computes the mean of each. Then it fits a line through the two

Percent Changes

The Percent Change routine works as its name implies. The microcomputer first computes the percent delta between the last two values of our time series: 100 * f 9 .69 — 9 .52)79 .52 =

points, with values on the lineThe method of Semi-Averages is representing our forecasts. Figure 2somewhat akin to Least-Squares Trend, details the process.

No. 75 • September 1984 MICRO 63

Page 66: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

1.79%, or 1.0179 in index form. Then it applies this factor to future periods.

Hence, the predicted interest rate in May 1984 is 9 .69*1.0179 = 9.86% .

The technique of Percent Changes is usually best suited to short-term forecasts, say up to two or three periods ahead and for cases where observations are highly correlated from one period to another. Examples include using monthly data to forecast next quarter's Dow Jones Average or foreign trade deficit.

As a general rule, leave long-term prognostications to Least-Squares Trend or to the method of Semi- Averages. An exception is when you strongly believe that very recent data will heavily influence the future. An example might be a sharp jump in the inflation rate which in turn fuels the fear of future price hikes and, hence, becomes a self-fulfilling prophecy.

First Differences

The First Difference routine works a lot like its Percent Change colleague. Namely, the difference instead of percent change between the last two values of the time series is used as the factor to forecast future values.

For our data, this difference is9.69 — 9.52 = 0.17. Hence, interest rate forecasts for May and June using this technique are 9.86% (9.69 + 0.17)

and 1 0 .0 3 % ( 9 .8 6 + 0 .1 7 ) ,respectively.

Once again, the method of First Differences is a short-run forecasting tool. You might want to compare it to Percent Changes in making 2 or 3 period forecasts. Your predictions are probably strongest where the two methods agree and weakest where they diverge. The comparison, in other words, should give you a "warm fuzzy" or a "rigid frigid", or perhaps both.

Past Averages

Finally, the Past Average routine computes Percent Changes and First Differences using any number of past v a lu e s , w ith you te ll in g the microcomputer how many.

For example, the mean of the past two first differences is (9.69 — 9.52) + (9.52 — 9.09) all divided by 2, or 0.30. The microcomputer in this case predicts a May 1984 interest rate of9.69 + 0.30 = 9.99% .

The Past Average procedure is ideally suited to forecasting situations where a string or subset of past values is deemed most important. It ignores the long-term drift captured by Least- Squares Trend and the method of Semi- Averages, and avoids the short-run bias of P ercen t C hanges and F irst Differences.

Sum m ary

A time series is a group of observations on a variable, in chronological order, at a set frequency. Your microcomputer program forecasts future values of a time series using these extrapolation techniques: (1) Least-Squares Trend, (2) Sem i-A verages, (3) P ercen t Changes, (4) First Differences and (5) Past Averages.

All five methods suggest that interest rates will rise in the near future. And all five invoke the adage "The past is prologue." If it isn ’t, then perhaps we ought to have Madame Zelna read our palms!

Listing Notes:

Brian Flynn provided the original programs for the Apple II. Mike Rowe has modified these so that they can work on the Commodore 64, Atari and the CoCo (with Flex), as well as the Apple. The Listing 1 contains the "generic" code. This will not work w ith o u t th e sy ste m s p e c if ic subroutines provided below. Listings 2 through 5 provide the required subroutines for the Apple, Commodore 64, Atari and CoCo (with Flexl respectively. These additional routines must be added to Listing 1 in order for the program to w ork on any microcomputer.

Listing 110 REM TIME-SERIES FORECASTING

20 REM BY BRIAN FLYNN

30 REM MAY 1984

32 REM MODIFIED FOR COMMODORE 64, ATARI AND FLEX

34 REM BY MIKE ROWE, JULY 1984

40 REM INITIALIZE

50 GOSUB 1000

60 REM ENTER DATA

70 GOSUB 3000 80 REM EDIT DATA

90 GOSUB 3500

100 REM CHOOSE METHOD

110 GOSUB 5000 120 REM FORECAST

130 IF CH < > 6 THEN GOSUB 5500: GOTO 110 140 ENDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

INSERT SUBROUTINES FOR YOUR MICROCOMPUTER HERE

X X X X X X X XXX XXX XX XXX XXX XXX XX XXX XXX XX XXX XXX XX XXX X

1000 REM INITIAIZE 1010 REM TITLE

1015 DIM C$(6)1020 GOSUB 1500

1030 REM INSTRUCTIONS

1040 GOSUB 2000

1050 REM CHOICES

1060 GOSUB 2500

1070 RETURN

1500 REM TITLE

1510152015301540

155020002010202020302040

20502060

2070

2080209021002110212021302140

2150

21602170

2500

2510

2520

GOSUB 300VT=10: HT=15: GOSUB 400: PRINT "TIME-SERIES"VT=11: HT=15: GOSUB 400: PRINT "FORECASTING"

FOR D = 1 TO 1000: NEXT D

RETURN

REM INSTRUCTIONS

REM MAXIMUM NUMBER OF OBSERVATIONS

DATA 150 READ MN

DIM Y(MN)

REM INSTRUCTIONS

GOSUB 300PRINT " THIS PROGRAM FORECASTS FUTURE VALUES"

"OF A TIME SERIES USING A HOST OF TREND-"

"ANALYSIS TECHNIQUES."

" THE MAXIMUM NUMBER OF OBSERVATIONS"

"ALLOWED IS " ; M N ; "

PRINT

PRINT

PRINT

PRINT

PRINT

PRINT

PRINT "CHANGE LINE 2020 FOR A DIFFERENT LIMIT.1

VT=22: HT=14: GOSUB 400:

PRINT "PRESS ANY KEY

GOSUB 600

RETURN

REM CHOICES

DATA LEAST-SQUARES TREND, SEMI-AVERAGES,

PERCENT CHANGES

DATA FIRST DIFFERENCES, PAST AVERAGES, NONE

64 MICRO No. 75 ■ September 1984

Page 67: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

2530 FOR I = 1 TO 6 5050 VT=2*I+3: HT=10: GOSUB 400: PRINT I;". ";C$(I)

"Y

2540 READ C$(I) 5060 NEXT I o2550 NEXT I 5070 VT=19: HT=10: GOSUB 400:2560 RETURN PRINT "YOUR CHOICE = ?3000 REM ENTER DATA 5080 GOSUB 800: GOSUB 6003010 GOSUB 300 5090 CH = VAL(XX$) o3020 PRINT " PLEASE ENTER OBSERVATIONS ON YOUR TIME" 5100 IF CH < 1 OR CH > 6 THEN 50803030 PRINT "SERIES. HIT 'RETURN' WHEN THROUGH." 5110 RETURN3040 N = MN 5500 REM MAKE PROJECTIONS o3050 BK$ = " » 5510 REM NUMBER OF FUTURE PERIODS3060 FOR I = 1 TO MN 5520 GOSUB 60003070 VT=6: HT=1: GOSUB 400 5530 REM PROJECTIONS3075 PRINT "PERIOD #( ";I;") = 5540 GOSUB 300 ©3080 GOSUB 700 5550 IF CH <> 5 THEN VT=12: HT=13: GOSUB 400:3090 IF XX$ = "" THEN N = 1-1: I = MN: GOTO 3120 PRINT "FORECASTING ...3100 IF XX$ <> "" THEN Y(I) = VAL(XX$) 5560 ON CH GOSUB 6500,7000,7500,8000,8500 o3110 VT=6: HT=18: GOSUB 400: PRINT BK$ 5570 REM DISPLAY V/3120 NEXT I 5580 GOSUB 115003130 REM CHECK FOR ENOUGH DATA 5590 RETURN3140 IF N > 2 THEN RETURN 6000 REM NUMBER OF FUTURE PERIODS o3150 VT=21:HT=1:GOSUB 400 6010 GOSUB 3003160 PRINT "SORRY, AT LEAST 3 OBSERVATIONS NEEDED !»: 6020 PRINT "THE LAST PERIOD OF YOUR TIME SERIES IS"

GOSUB 800: GOTO 3040 6030 PRINT "NUMBER ";N;"."3500 REM EDIT DATA 6040 PRINT ©3510 FOR L = 0 TO INT((N-l)/10) 6050 PRINT "HOW MANY PERIODS INTO THE FUTURE DO YOU"3520 REM DISPLAY DATA 6060 VT=5: HT=20: GOSUB 400: PRINT BK$;: GOSUB 800:3530 GOSUB 4000 VT=5: HT=1: GOSUB 400 ©3540 REM CORRECT DATA 6070 PRINT "WANT TO FORECAST ? : GOSUB 7003550 GOSUB 4500 6080 NF = VAL(XX$)3560 NEXT L 6090 IF NF < 1 THEN 60603570 RETURN 6100 REM CHECK FOR ENOUGH MEMORY ©4000 REM DISPLAY DATA 6110 T = N+NF: IF T < = MN THEN RETURN4010 GOSUB 300 6120 VT=22: HT=1: GOSUB 4004020 PRINT "THESE ARE VALUES OF YOUR TIME SERIES:" 6125 PRINT "SORRY, ONLY ";MN-N; A4030 FOR J = 1 TO 10 " MORE PERIODS ALLOWED.";: GOTO 60604040 M = J+L*10 6130 RETURN4050 IF M > N THEN 4060 6500 REM LEAST-SQUARES TREND4055 VT=J+3: HT=1: GOSUB 400: 6510 REM KEY SUMS oPRINT "PERIOD ( ";M;" ) = ";Y(M) 6520 SX = 0:SY = 0:XQ = 0:YQ = 0:CP = 04060 NEXT J 6530 FOR I = 1 TO N4070 RETURN 6540 SX = SX+I4500 REM CORRECT DATA 6550 SY = SY+Y(I) ©4510 VT=16: HT=1: GOSUB 400: 6560 XQ = XQ+I*I

PRINT "CORRECTIONS (Y/N) ? 6570 YQ = YQ+Y(I) t 24520 GOSUB 800: GOSUB 600 6580 CP = CP+Y(I)*I o4530 IF XX$ = "N" THEN 4660 6590 NEXT I4540 IF XX$ < > "Y" THEN 4520 6600 REM A & B4550 VT=18: HT=1: GOSUB 400: 6610 B = (N*CP-SX#SY)/(N*XQ-SX*SX)

PRINT "WHAT IS THE NUMBER OF THE DATUM TO" 6620 A = (SY-B#SX)/N ©4560 VT=19: HT=16: GOSUB 400: PRINT BK$: GOSUB 800 6630 REM FORECASTS4565 VT=19: HT=1:GOSUB 400 6640 FOR I = N+l TO T4570 PRINT "BE CORRECTED ? : GOSUB 700 6650 Y(I) = A+B*I4590 Q = VAL(XX$) 6660 NEXT I u4600 IF Q > =(l+L*10) OR Q < =N OR Q < =(10+L*10) 6670 RETURN

THEN 4610 7000 REM METHOD OF SEMI-AVERAGES4605 VT=21:HT=1:GOSUB 400 7010 REM NUMBER OF POINTS IN EACH GROUP o4606 PRINT "OUTSIDE BOUNDS SHOWN. PLEASE TRY AGAIN.": 7020 G1 = INT(N/2)

GOTO 4560 7030 G2 = N-Gl4610 VT=23: HT=1: GOSUB 400: GOSUB 800 7040 REM GROUP MEANS4620 PRINT "NEW VALUE = : GOSUB 700 7050 Y1 = 0:X1 = 0 o4640 Y(Q) = VAL(XX$) 7060 FOR I = 1 TO G14650 GOSUB 4000: GOTO 4510 7070 Y1 = Y1+Y(I)4660 RETURN 7080 XI = Xl+I o5000 REM CHOOSE METHOD 7090 NEXT I5010 GOSUB 300 7100 Y1 = Y1/G1:X1 = Xl/Gl5020 PRINT "FUTURE VALUES OF YOUR TIME SERIES ARE" 7110 REM MEANS OF SECOND GROUP5030 PRINT "PROJECTED USING ANY OF THESE METHODS:" 7120 Y2 = 0:X2 = 0 o5040 FOR I = 1 TO 6 7130 FOR I = Gl+1 TO N

No. 75 ■ September 1984 MICRO 65

Page 68: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

7140 Y2 = Y2+Y(I)

7150 X2 = X2+I o 7160 NEXT I

7170 Y2 = Y2/G2:X2 = X2/G2

7180 B = (Y2-Y1)/(X2-X1)

q 7190 REM Y-INTERCEPT

7200 A = Y2-B*X2 7210 REM FORECASTS

7220 FOR I = N+l TO T

© 7230 Y(I) = A+B*I

7240 NEXT I

7250 RETURN

n 7500 REM PERCENT CHANGE

0 7510 FOR I = N+l TO T7520 Y(I) = Y (1-1)*Y (I-1)/Y(1-2)

7530 NEXT I

© 7540 RETURN8000 REM FIRST DIFFERENCE

8010 FOR I = N+l TO T

8020 Y(I) = 2»Y(I-l)-Y(I-2)

o 8030 NEXT I

8040 RETURN

8500 REM PAST AVERAGE q 8510 PRINT "WOULD YOU LIKE TO USE AN AVERAGE OF"

8520 PRINT "PAST:"

8530 VT=4: HT=10: GOSUB 400: PRINT "1. % CHANGES" 8540 VT=6: HT=10: GOSUB 400:

© PRINT "2. FIRST DIFFERENCES"

8550 VT=8: HT=10: GOSUB 400:PRINT "3. ACTUAL VALUES"

_ 8560 VT=12: HT=10: GOSUB 400: PRINT "CHOICE = ? ";

® 8570 GOSUB 800: GOSUB 600

8580 AV = VAL(XX$)

8590 IF AV < 1 OR AV > 3 THEN 8570

O 8600 IF AV = 1 THEN T$ = "PERCENT CHANGES"

8610 IF AV = 2 THEN T$ = "FIRST DIFFERENCES"

8620 ON AV GOSUB 9000,9000,95008630 GOSUB 300

O 8640 VT=12: HT=13: GOSUB 400:

PRINT "FORECASTING ..."

8650 ON AV GOSUB 10000,10500,11000 8660 RETURN

W 9000 REM t CHANGES OR FIRST DIFFERENCES 9010 VT=15: HT=1: GOSUB 400:

PRINT "HOW MANY PAST ";T$

© 9020 VT=16: HT=22: GOSUB 400: PRINT BK$: GOSUB 800

9030 VT=16: HT=1: PRINT "DO YOU WANT TO USE ? :

GOSUB 700

9040 PP = VAL(XX$)

© 9050 IF PP < 1 THEN 9020

9060 IF PP < N THEN RETURN

9070 VT=22: HT=1: GOSUB 400

q 9080 PRINT "SORRY, ONLY ";N-lj" ARE AVAILABLE":

GOTO 9020

9500 REM ACTUAL VALUES

9510 VT=15: HT=1: GOSUB 400:© PRINT "HOW MANY PAST ACTUAL VALUES WOULD"

9520 VT=16: HT=19: GOSUB 400: PRINT BK$: GOSUB 800

9530 VT=16: HT=1: GOSUB 400:_ PRINT "YOU LIKE TO USE ? : GOSUB 700

U 9540 PP = VAL(XX$)

9550 IF PP < 1 THEN 9520

9560 IF PP < = N THEN RETURN

© 9570 VT=22: HT=1: GOSUB 4009580 PRINT "SORRY, ONLY ";N;" ARE AVAILABLE”:

GOTO 9520 10000 REM PERCENT CHANGES

© 10010 REM PAST AVERAGE

10020 PC = 0

10030 FOR I = N TO N-PP+1 STEP-1

10040 PC = PC+Y(I)/Y(I-1)

10050 NEXT I 10060 PC = PC/PP

10070 REM FORECASTS

10080 FOR I = N+l TO T

10090 Y(I) = Y(I-l)*PC

10100 NEXT I

10110 RETURN

10500 REM FIRST DIFFERENCES

10510 REM PAST AVERAGE

10520 FD = 0

10530 FOR I = N TO N-PP+1 STEP-1

10540 FD = FD+Y(I)-Y(I-1)

10550 NEXT I 10560 FD = FD/PP

10570 REM FORECASTS

10580 FOR I = N+l TO T

10590 Y(I) = Y(I-1)+FD 10600 NEXT I

10610 RETURN

11000 REM ACTUAL VALUES

11010 REM PAST AVERAGE

11020 AC = 0

11030 FOR I = N TO N-PP+1 STEP-1 11040 AC = AC+Y (I)

11050 NEXT I11060 AC = AC/PP

11070 REM FORECASTS

11080 FOR I = N+l TO T

11090 Y(I) = AC

11100 NEXT I

11110 RETURN

11500 REM DISPLAY

11510 FOR L = 0 TO INT((NF-l)/10)11520 REM HEADING

11530 GOSUB 12000 11540 REM BODY

11550 GOSUB 13000 11560 NEXT L

11570 RETURN 12000 REM HEADING

12010 GOSUB 30012020 F$ = "======================================="

12030 PRINT F$12040 VT=2: HT=16: GOSUB 400: PRINT "FORECASTS"

12050 PRINT F$12060 VT=5: HT=1: GOSUB 400: PRINT "METHOD: ";C$(CH);

12070 IF CH = 5 THEN GOSUB 12500

12080 RETURN

12500 REM PAST AVERAGE

12510 PRINT " OF ";PP12520 VT=6: HT=9: GOSUB 400

12530 IF AV = 1 THEN PRINT "% CHANGES"12540 IF AV = 2 THEN PRINT "FIRST DIFFERENCES"

12550 IF AV = 3 THEN PRINT "ACTUAL VALUES"

12560 RETURN13000 REM BODY

13010 FOR J = 1 TO 1013020 M = J+LU0+N

13030 IF M > T THEN 13040

13035 VT=J+7: HT=1: GOSUB 400:PRINT "PERIOD ( ";M;" )= ";Y(M)

13040 NEXT J13050 VT=21: HT=1: GOSUB 400: PRINT F$

13060 VT=22: HT=l4: GOSUB 400:

PRINT "PRESS ANY KEY

13070 GOSUB 600

13080 RETURN

66 MICRO No. 75 - September 1984

Page 69: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Subroutines499 REM ** POSITION CURSOR AND PRINT SPACES **

200 HEM FLEX SUBROUTINES 500 GOSUB 400: PRINT SPC(SP);: RETURN

299 REM ** CLEAR DISPLAY **599 REM ** GET SUBROUTINE **

o300 PRINT CHR$(11);CHR$(27);"X";CHR$(24);:RETURN 600 GET XX$: RETURN

399 REM ** POSITION CURSOR **699 REM ** INPUT SUBROUTINE ** o

400 IF VT> 0 THEN PRINT CHR$(ll);: 700 INPUT XX$: RETURNFOR 11=1 TO VT:PRINT:NEXT II

410 IF H T > 0 THEN PRINT TAB(HT); 799 REM ** MAKE SOUND ** o420 RETURN

800 PRINT CHR$(7);: RETURN

499 REM ** POSITION CURSOR AND SPACE ** *******************************500 GOSUB 400: PRINT SPC(SP);: RETURN o599 REM ** GET CHARACTER ROUTINE #*600 INPUT XX$: IF XX$="X" THEN XX$=""610 RETURN *** ATARI VERSION *** o

699 REM ** INPUT ROUTINE ** 200 REM ATARI SUBROUTINES700 GOTO 600 o

299 REM ** HOME AND CLEAR DISPLAY **799 REM ** MAKE SOUND (OPTIONAL) ** 300 PRINT CHR$(125);:RETURN800 RETURN : REM ADD CODE HERE TO MAKE A801 REM SOUND IF YOU SO DESIRE !! 399 REM ** POSITION CURSOR ** o

400 POSITION HT,VT:RETURN

499 REM ** POSITION CURSOR AND PRINT SPACES ** n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *500 GOSUB 400510 FOR 1=1 TO SP:PRINT CHR$(32):NEXT I:RETURN

200 REM COMMODORE SUBROUTINES

599 REM ** GET SUBROUTINE ** o299 REM ** HOME AND CLEAR DISPLAY ** 600 GET it<l,X:XX$=CHR$(X):RETURN300 PRINT "{CLEAR}";:RETURN

699 REM ** INPUT SUBROUTINE **399 REM ** POSITION CURSOR ** 700 INPUT XX$:RETURN o400 PRINT "{HOME}";410 FOR XX=1 TO VT:PRINT :NEXT XX 799 REM ** MAKE SOUND **420 IF HT> 0 THEN PRINT TAB(HT); 800 RETURN o430 RETURN 810 REM ADD YOU OWN SOUND IF DESIRED

499 REM ** POSITION CURSOR AND SPACE ** *** THE NEXT TWO LINES MUST BE ADDED ***500 GOSUB 400: PRINT SPC(SP);: RETURN o

1015 DIM BK$(10),XX$(10),T$(20),F$(40)599 REM ** GET SUBROUTINE ** 1016 OPEN #1,4,0, "K:"600 XX$=""

610 GET XX$: IF XX$="" THEN 610 *** LINE 1060 AND LINES 2500 TO 2560 MUST BE DELETED o620 RETURN

*** REPLACE LINES 5050 AND 12060 AS FOLLOWS:699 REM ** INPUT SUBROUTINE ** o700 PRINT {SPACE10,BACKSPACE10};: INPUT XX$: RETURN 5050 VT=2*I+3:HT=10:GOSUB 400:PRINT I;". :

GOSUB 14000799 REM ** MAKE SOUND (OPTIONAL) **800 RETURN : REM ADD CODE TO MAKE A 12060 VT=5:HT=1:GOSUB 400:PRINT "METHOD: : o801 REM SOUND IF YOU SO DESIRE !!! GOSUB 14005

********************************* * * * ADD THE FOLLOWING SUBROUTINE o14000 ON I GOTO 14010,14020,14030,14040,14050,14060

14005 ON CH GOTO 14010,14020,14030,14040,14050,14060*********************************

14010 PRINT "LEAST-SQUARES TREND";:RETURN o14020 PRINT "SEMI-AVERAGES";:RETURN

200 REM APPLE II SUBROUTINES 14030 PRINT "PERCENT CHANGES";:RETURN14040 PRINT "FIRST DIFFERENCES";:RETURN

299 REM ** HOME AND CLEAR DISPLAY ** 14050 PRINT "PAST AVERAGES"; .-RETURN©

300 HOME : RETURN 14060 PRINT "NONE";:RETURN

399 REM ** POSITION CURSOR ** A400 IF VT> 0 THEN VTAB(VT)

410 IF HT> 0 THEN HTAB(HT)

420 PITURN

No. 75 ■ September 1984 MICRO 67

Page 70: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Title: Mastering Your Atari Through Eight BASIC ProjectsAuthor: the staff of MICRO magazine, Tom Marshall ed. Price: $19.95, disk included Publisher: Prentice-Hall

Title: The Apple lie BookAuthor: Bill O'Brien Price: $12.95 Publisher: Bantam Books

Using a 'learning-by-doing' approach the reader is quickly taught how to write, modify, and expand his own programs.A diskette is included which contains complete running programs to begin with. The eight projects include Micro Calc, a miniature spreadsheet; Master, a guessing game; Atari Clock; Word Detective; Atari Player, a music program; Breakup, an exciting game; Sorting, sorts; graphic bars and telephone directory; Programmable Characters, add extra plotting resolution while retaining most normal characters in the Atari character set. Each project is designed to teach the reader a specific aspect of p rog ram m in g — strin g m a n ip u la tio n , BA SIC functions, random numbers and flags, ON...GOSUB, character graphics, animation, sorting methods, plus many more. There are listings for all the programs, clear operating instructions, examples and figures. Each programming element is explained with clarity and related to the project the reader is working on. This book presents learning and mastery with hands-on experience and fun. This is the second in a series of 'Mastering' books, the first was for the Vic-20, the next is for the Commodore 64.

Level: Beginner to intermediate.

Bantam was selected by Apple to be among those who introduced the lie. Providing information that is useful to novices and advanced users, it includes data not found in the owner's manual. Compatability, configuration, DOS 3.3 and ProDOS are all covered. The addition of peripherals features mice, touchpads, graphics tablets, and the new 'flat screen.' BASIC (Applesoft) is explained in as much as one can in three chapters. Graphics is also touch­ed upon. Telecommunications - i.e. the connections of modems, bulletin boards, etc. are dealt with in one chapter. Another chapter is devoted to troubleshooting, hardware and software problems. The four most used ap­plications — Word Processing, Databases, Spreadsheets, and Communications are introduced and reviewed. The last chapter contains vital information on user groups, bulletin boards, magazines and books. The appendices contain hardware information, technical stats and Escape codes. This books covers a lot of ground and hence is limited in the depth of coverage. However it does contain a great deal of useful information and has gathered some information not easily found elsewhere.

Level: beginner to advanced.

Title: Getting On-LineAuthor: M. David Stone Price: $14.95Publisher: Prentice-Hall, Inc.

The field of telecommunications is constantly growing and at a startling rate. Finding out how, what and where is a time consuming and often confusing task. It is the pur­pose of this book to help both the novice and old-hand at sorting out what they need, where to get it, and how to use it. The first six chapters explain what you need before you actually go on-line. Chapter 1 Information Utilities — a look at what is available and where it came from, ex­amines kinds of information utilities and data bases. Chapter 2 Hardware Utilities — covers dumb terminals, smart terminals and computers as terminals. Chapter 3 Hardware II — deals with modems, baud rate, signaling standards, connecting a modem, direct connect vs. acoustical connect modems and choosing a modem. Chapter 4 Software Part I — a look at available features, computers as dumb and smart terminals, smart terminal programs; basic features and additional capabilities. Chapter 5 Software Part II — the nitty gritty, RS-232, short reviews and helpful hints regarding some popular micros, CP/M computers, dual processor machines and modems. Chapter 7 Search Strategy deals with how to go about organizing your search for information, with tips that can save you money and time. The rest of the book consists of a catalog of information and an index. The catalog is of the various utilities (Dow Jones, The Source, etc.), and free services (Public Access Bulletin Boards).

Level: Beginner to advanced.

Title: Introduction to CAuthor: Paul M. Chirlian Price: $15.95Publisher: Matrix Publishers, Inc.

As the title says this is an introduction to the program­ming language C. It is designed so that even those who have no previous programming experience will be able to learn C. Starting out with some basic ideas about com­puter operation, it moves on to some of the fundamental concepts of programming in C. Fundamental arithmetic operations are explained: integer, floating-point, hierar­chy, mixed mode, constants, etc. The next area is basic input, output and character operations including the use of the 'printf' statement and strings. The author stresses structured programming and documentation, devoting a large section of the book to these topics. The debugging process is outlined, a subject seldom covered. There are a number of good exercises and over 70 example programs. Arrays, pointers, and manipulations are covered in detail. File handling is discussed, input/output redirection, disk files, and command line input of data. The appendices contain C Keywords, C Operators, and the ASCII Codes. Chirlian has chosen to follow the standards set forth by Brian W. Kernighan and Dennis M. Ritchie in their book ‘T h e C Program m ing Language,' P ren tice-H all, Englewood Cliffs, N.J. 1978. This book and Chirlian's are considered the standard books on C programming.

Level: Beginner to intermediate.JMCftO

68 MICRO No. 75 • September 1984

Page 71: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Name: Cardboard/5System: Commodore 64

Description: This product allows greater flexibility of use to switch se lec t any cartridge slo t orcombination of cartridge slots. The22 color coded lights emit diodes to give status indication. Each slot has four LEDS and two toggle switches for indication and control. It allows the user supply power to a cartridge without allowing it to auto-start or to effect other operations.

Price: $79.95Available: Cardco, Inc.

313 Mathewson Wichita, KS 67214

Name: ComputereyesSystem: Apple II Series &

Compatibles Memory: 48KLanguage: Applesoft & DOS 3.3

Description: This is a slow-scan device that connects any standard video source (video tape recorder, video camera, videodisk, etc.) and the Apple's game I/O socket. A multi-scan mode provides realistic grey-scale images. Included in the package: interface module, cable, software support on disk, owner's manual and also comes with a one year warranty. Versions for other popular computers will be available soon.

Price: $129.95$10.00 demo disk (not required)

Available: Digital Vision, Inc.14 Oak Street - Suite 1 Needham, MA 02192 (617) 444-9040

BOUNTY HUNTERJourney back with us into the days of Jessie James and Billy the Kid where the only form of justice was a loaded revolver and a hangman’s noose. In this full- length text adventure, you play the role of Bounty Hunter, battling against ruthless outlaws, hostile Indians, wild animals and the elements of the wilderness with only your wits and your six {jun. Average solving time: 80-30 hours. If you love adven­tures, this one is a real treat. Available for COMMO­DORE 64, the VIC-20 (with expander), and C0LEC0 ADAM. See your dealer.

mm*$1995

Cassette

Published by:

y'^Star-Byte, Inc.D ivision of R o b in so n -H a lp em C o m p a n y

2564 Industry bane • Norristown, PA 19403 • 215-539-4300

ADAM is a tradem ark of Coteca Inc COMMODORE 64 is a trademark of Commodore Business Machines, Inc V IC-20 is a tradem ark of Commodore Business Machines, Inc

No. 75 • September 1964 MICRO 69

Page 72: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Name: MicrosportMicrocomputers Model M M C/02

System: AIM 65, Apple II, Atari400,800, Commodore CBM/PET series, KIM-1, KIM-4, Vic-20, MTU 1300 and motherboards, Ohio Scientific 600 and others, Synertek SYM-1.

Description: The Model MMC/02 is a complete microcomputer on a 4 .5 ” by 6 .5” PC board. It features a 6502 m icroprocessor, IK Ram standard, 4K ROM/EPROM socket, 2K RAM or R O M /EP R O M expansion and BUS for ading up to16 I/O devices. Three basic versions are available. The MMC can operate from a regulated plus 5VDC power source. The CPU addresses a total of 8K, enough for m ost control applications. There is a prototyping area as well as spare gates.

Price: From $159.00*Available: R.J. Brachman

Associates, Inc P.O. Box 1077 Havertown, PA 19083(215) 622-5495

Name: CheatsheetSystem: Commodore VIC 20,

C-64

D escrip tion : These are p lastic la m in a te d keyboard overlays designed to fit over the keyboard su rro u n d in g th e k ey s w ith commands and controls grouped together for easy references. The latest cheatsheets available are: Logo (sheet 1], Logo (sheet 2, advanced), P ilo t, Easy C alc, P rin t e i - 15 2 6 , T h e M an ager, Multiplan, Practicalc 64 (& plus), Printer (Epson-RX-80), Superbase 64, The Consultant, Sprites Only and blanks. This brings the total cheatsheets available to 33.

Price: $3.95 plus $1.00 shippingper order

Available: Cheatsheet Products P.O. Box 8299 Pittsburgh, PA 15218 (412) 456-7420

EMC

UNLIMITED PRO FIT POTENTIAL @W ATCH O U T W ALL STR EET!! Now available on floppy disk for brokers and active traders. The AMAZING computer program «STO CKER1 » uses new Moving Window-Spectral algorithm to fore­cast stock/commodity market TU R N IN G P O IN TS —not more trend line/moving averages. Affordable! Easy to use!

USED BY STOOlVCOflMDDITV BROKERS t ACTIVE IRflDERS P e rh a p s you to o a r e re a d y - fo r th e STOCKER! c h a l l e r ^ e 1

N E W ! Your ow n p e rs o n a l forecast.

COMPARE There is ;ust nothing quite like it S T O C K E R 1 >» a u o i la h io t■ S T O C K E R 1 .. fo re c a s t lo r Ih e D ow Jones « » T O C K E H l .> a va ila b le for

i n d u s t r i a l 3v e ^ 3 Q e d 3 ily c l o s m Q w i th y o u r cur~ t o m p r ' p /™1 r Y * rr e n t m e t h o d . 1 D n * r L - ’ r t w * J r ? * ! " j - j -

_ _ A P P L E I I , I I + , I l e -• o r .o x H r M l i6 > i i 0 • a a W i t h Z —S 0 c a r d

n«(n .-.ua« of * . r r , r 0-; 1-2 i-J 3-fc k-J 5-6 6-7 7-0 9-9 T R S 3 0 M 0 D I I I l 4 - 1

»l_OT OF CCTUaL 0>.D fOBECtiSr FQS COwpoBISON I I 7 1 I 1 £ Mi P ' tllJHlP' f i t 19 ronl n„«

--------------------------------------------. * 2 9 9 nflsreR/visfl/acra- includes free tCUR ON iddeh service

; • pve erros uxdeh 2*

~ ENGINEERINGMANAGEMENT

eaeeaaeeee: 1! i i i: t i t C O N S U L T A N Tei 114*567890] _'.a5e7e301 i3*3£783e)13»3fc7e3eiCJa367B9

r - : • ; ;output: ./li/e : P.O. Box 312

W E E K L Y / M O N TH LY / Q U A R T ER L Y tooIn ve s t T ra d e O p tio n s F u tu re s Fairfax. Va. 22030

D O M y o u r b r o s s r u s * S T O C K E R l -> T e l , (703) 425-1296.

m ic/to&e

In Micro No. 73 (July) Ian R. Humphreys ‘CMPRSS’ program the following lines should read:

9002 8D F6 03

9007 8D F7 03

92E5 A9 A9 932E A9 EE 9400 69 FF

9402 85 03

PRT1A

STA BJP+1 STA BJP+2

LDA #< MESS1 LDA #<■ MESS1A ADC #$FF

STA NEWPTR+1

NOTE: It is the policy of Micro to not include all of the hex code for assembled text. Due to space limitations we include only the first three bytes of the assembled message. This practice is carried throughout all of our assembler listings. We apologize for any confusion this may have presented and also any inconvenience to those who are not using an assembler.

70 MICRO No. 75 • September 1984

Page 73: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

C<fte ---------------by Mark S. Morano

It all started two months ago when I received a call from the BES |Bureau of Encryption Sendees). They were having trouble with data security between their micros and mainframes. The problem was thought to be origin­ating from inside. Regardless of what new encryption methods were developed, the unknown informant would render them useless. And so the Bureau had decided to seek outside help. Due to our years of experience in the field, Micro was given the job. Our resident expert in this area, Mike Rowe, was assigned the task of developing new encryption methods that would prove effective against prying thieves.

All went well until three weeks ago when Mike went on vacation. He called on the day he was to return saying he'd been delayed by a death in the family. We immed­iately informed the BES of the delay and the reason for it. The following day the Bureau contacted his family. They hadn't heard from him. Needless to say there had been no funeral. We were told to call the Bureau immediately if we heard from Mike. They assured us that they would locate him, but a week passed and still no sign of Mike. I began to worry. I have known Mike for a long time and knew he wasn't the kind of guy to up and disappear. The whole thing sounded strange. That is, until the other night.

I was working late, downloading some files from a local mainframe we use for mass storage. While looking at the catalog I noticed a file named 'test.m r’. It was nothing unusual to find a test file, but we never used the extension 'm r'. I downloaded the file to check it out. At first it seemed to be a garbled mess, as though something strange happened during transmission. I decided that there must have been a surge on the wires, or a lost handshake somewhere, so I downloaded again. As I did I thought about the strange extension — 'mr' — of course, Mike Rowe — it must be one of his work files, but he always named his ‘tem p.tst1. I started to examine the file more closely; it still seemed like a bad transmission to me. Perhaps I would find a clue on his desk. After rummaging around piles of paper, I found what I was looking for, a folder marked'Top Secret’ in big red letters with hand- painted stars and spaceships scattered about. With folder

in hand I went back to my desk. I printed out M ike's file, carefully perused it, and then started pouring through the 'Top Secret' folder in hope of an answer. As I sifted through countless encryption methods, I suddenly came upon one dated three days before Mike went on vacation. He had mentioned he was onto something hot and had pulled an all nighter the Thursday before he left. As I compared his examples and 'test.m r' I knew I had it. Two hours later I had decoded the mystery file.

At first I thought it was a gag, but it soon became evident it wasn't. The text explained that he had been picked up by a couple of woman; the next thing he remembered was passing out. He woke to find himself locked in a room with a desk, a couple of terminals, a printer and a modem. He was instructed over an intercom to recompose the latest encryption method he had devised. He was able to convince his captors that he had to access some files from the mainframe Micro used. While online he sent over this dummy work file I had found. I later found out he had given this new encryption method to the Bureau before he left for vacation. It seems that now someone else wanted it too. Mike stated in 'test.m r' that his method would be used to send important data over the lines sometime during the next month. He asked me to in­form the Bureau of his plight, destroy 'test.m r' and any files associated with his work. His last request was that I quickly come up with some alternate encryption methods for the BES to use in place of his.

Well, in all honestly, I have limited experience in this area. So I decided to tap the brains of some people I know. After considering different suggestions, I finally came to the conclusion that you, the readers of Micro, could prob­ably help the most. By gathering a variety of encryption methods, I could distill one final product that would ensure security and stymy any intruder. And so, I ask you to help me out in this time of need. Please send your encryption schemes and solutions to me, using the sen­tence 'When the crow flies west, the sun shall set in the east.' Any encryption methods you can or have devised will be of great value and an important link in forging a chain that only Mike Rowe himself could crack.

No. 75 ■ September 1984 MICRO 71

Page 74: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

A dvertiser’s Index

A nalog ........................................................................,........................... 6C a l l A . P . P . L . E ....................................................................................... 1Cardco , Inc:.......................................................................................... 69C h e a t s h e e t P rodu cts ................................................................. 70D ig ita l V is ion .................................................................................. 69Engineering M an ag em en t ...................................................... 70H ayes M icr o c o m p u te r Products ......................... B a c k C v r|QB Enterprises ............................................................................ 46Lazerware .......................................................................................... 35M I C R O ............................................................... 6 0 , Ins B a c k CvrM icr o M o t io n ........................................................................... 8 , 3 0M icr o T e c h n o lo g y U n l im ite d ................................................. 3M icro -W D is tr ib u t in g .............................................................. 17M id w e s t M icro .................................................................................. 9N ik r o m T e c h n i c a l P roducts ................................................... 2P erfo rm an ce M ic r o ....................................................................... 17Progressive Peripherals ............................................................ 12P ro te cto ....................................................... 3 8 , 3 9 ,4 0 , 4 1 , 4 2 , 4 3Q u a n t u m Softw are ....................................................................... 45R 1 B r a c h m a n .................................................................................. 70S-C Softw are .................................................................................... 45S k y les E lectr ic W ork s ........................................ Ins Front CvrS pecia l ty E le ctron ics ................................................................. 14Star Byte ............................................................................................. 69S u ch -A -D e a l Software .............................................................. 53

Coming in October —

□ Plotting Binary Trees by Luthei K. BiantingGraphic displays of tree-like decision paths aid using and understanding this type of graph

□ Fat Bit Map Plotting by Loren WrightAssembly language routines to support bit map plotting on the Commodore 64

□ Data Base Comparisons by Sanjiva NathDiscussion of the features to look for in selecting a data base manager for your micro

□ Rational Joystick Interfacing by Charles EngelsherA 'built-it yourself' project to add a joystick to your system and learn about A/D conversion

□ FORTH Input Utility by M ike DoughertyA method of providing interactive text input for better applications

Solution to last month’s (#74

Lyte Bytes puzzle.

Hi3i3E!0I10 AHSF1 SI i«4r2 is]

I3I3E3 Si h2!IE3Q!1E9pi

3 Q 3 f l w a a a B H O i 3 d dan la imimmim&fMimJ □ aa 0 £EJBK3E1

v S L i i i t f t f f i E B i i a K a n i a i a H a n r a

onaraa ra h .m nri en riiintfEra 3 sap 3F1K3V1E3 f!

ft] ri a

ra h a r;jra d a a h

g _______________

72 MICRO No. 75 ■ September 1984

Page 75: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

This fam ous book now con ta ins the m ost com prehensive descrip tion o f firm w are and hardware ever published fo r the whole Apple II family. A new section w ith guide, a tlas and gazeteer now provides Apple lie spec ific in fo rm ation .

• G ives names and loca tions o f various Monitor, • A llow s easy m ovem ent between BASIC andDOS, Integer BASIC and Applesoft routines and M achine Languagete lls w hat they ’re used for • Expla ins how to use the in fo rm ation for easier,

• L is ts Peeks, Pokes and Calls in over 2000 better, fas te r so ftw are w riting mem ory loca tions

This expanded edition is available at the new low price of only $19.95

For the 35,000 people who a lready own previous ed itions , the lie Appendix is ava ilab le separate ly fo r ju s t $5.00.

Please send me:__________W hat’s W here in the Apple @ $19.95 e a . ___________ __________________________________________________________

(Plus $2.00 per copy shipping/handling) Name

__________ Apple lie Appendix @ $5.00 e a . __________ Address(includes shipping charges)

Mass residents add 5% sales tax $ __________ city State Zip

Total Enclosed $ __________ Signature________________________________________________

□ Check □ VISA □ MasterCardFor faster service

Phone 617/256-3649Acct # ________________________ Expires___________

MICRO, P.O. Box 6502, Chelmsford, MA 01824

Page 76: for the Serious Computerist - 6502.orgarchive.6502.org/publications/micro/micro_75_sep_1984.pdffor the Serious Computerist v - - y! ... FORTY PACE MANUAL MONITOR SKEWING TESTS MONITOR

Communicating is so easy with a com

Apple. Hayes Smartmodem 300n convenient direct-connect modem forthe Apple lie. And Hayes Micromodem Ile’ls tht for the APackaged with Smartcom I™

ayes Mia e easily installed board modem Vpplell, He. Ill, and Apple Plus. :awith “

V tI

companion software, both provide a complete telecomputing system. And best of all, both systems are from Hayes, the established tele­computing leader!

We connect you to all the right places. Bulletin boards, databases, information services—naturally. And that’s just the beginning. Let your Apple plan your travel itinerary, including flight numbers, hotel and rental ca servations. Watch it retrieve and analyze daily stock and options prices. Work at home and send reports to and from your office. You can even do your gift shopping by computer!

Would you care to see our menu? Make your selection. Really. With Smartcom I, you just order up what

r Apple 1-103 tyt

modems allow your nicate with any Bell- over ordinary telephone simply connect directly into a mod­ular pnone jack, to perform both Touoi-Tbne*and pulse dialing. Hayes

type modem z lines. You

Smartmodem 300 and Micromodem lie both transmit at 110 or 300 bits per second, in either half or full duplex.

/you want to do. The program guides you along the way. You can create, list, name, send, receive, print or erase files right from the menu. From the very first time you use it, you'll find telecomputing with Hayes as easy as apple pie!

We’ve got your number! We know that^ou want a system that's flexible,

‘ ‘ " versatile and accommo-¥ dating. The Smart-

modern 300/Smartcom I system accepts ProDOS™

______ Pascal and CP/M'operatingsystems. The Micromodem He/ Smartcom I system accepts DOS 3.3, Pascal and CP/M operating systems.

Smartcom I also provides you with a directory of the files stored on your disk. And will answer calls to your sys­tem. without your even being there"

Your Apple s telephone goes any­where tne phone lines go. Hayes

to commu-

Follow the leader. Over the years we’ve built our reputation as the telecomputing leader by developing quality products that set industry stan­dards. Now we invite you to see for yourself iust how simple it is to add powerful, easy to use telecomputing capabilities to your Apple computer with a complete, reaay-to-go system from Hayes. Visit your Hayes dealer for a hands-on demonstration. And get on line with the world.

Hayes.We re here to help.

Hayes Microcomputer Products, Inc. 5923 Peachtree Industrial Blvd. Norcross. Georgia 30092.404/441-1617.

Sm artm odem 300 and S m artcom I a re tradem arks and M icrom odem lie is a registered tradem ark of Haves M icrocom puter Products. I n c Apple is a registered tradem ark, and ProDOS is a tradem ark of Apple Computer, Inc. Touch-Tbne is a registered service m ark o f A m erican Tfelepnone and "telegraph. CRM is a registered tradem ark o f Digital R esearch. Inc. © 1984 Hayes M icrocom puter Products. In c