Skip to main content

Full text of "Analog Computing Magazine Issue 64 (Entertainment Issue Snowplow)"

See other formats


THE //I flVlAGAZINE FOR ATARI COfVll>UTER OWN 




C 



SEPTEMBER 1988 
ISSUE 64 



P 









M 


fl 




M P 


\LT 



Entertainment Issue 

Snowplow 

A COMMERCIAL 
QUALITY GAME ^ 



•1 • 



CT" 



I N G 



T.M. 



U.S.A. $3.50 
CANADA $4.75 



Kason^s 
Tower 



ALSO: 



Master 
Memory 




"74369"50075"U 



09 



Game 
Design 
Workshop 



w^ 



&- 



\ 




Two Historic Facts: 

Dewey did not defeat Truman for the Presidency in 1945. 

. Truman went on to be known for his truthful, forthright style 

and as one of the nation's most popular Chief Executive Officers. 

You can save time, and save a lot of money by subscribing to 
A.N.A.L.O.G. Computing Magazine. Save $14 off the cover 
price with the convenience of having A.N.A.L.O.G. dehvered directly 
to your door before it even hits the newsstands. To order use the 
handy postage-paid order card located in the back of this magazine! 

1 YEAR FOR ONLY $28 

SAVE $14 OFF THE COVER PRICE 

1 YEAR WITH DISK ONLY $79 



E: <zl i t: <r> r- i a, 1 



by Lee Pappas 

It's true. Times are changing. Having 
just returned from my 14th Consumer 
Electronics Show (CES), I have nothing to 
report on the 8-bit news front. Of course, 
Atari was there pushing 8-bit 
products. . .that is just the XE Game Sys- 
tem and software. But the days of dozens 
of new product announcements and 
releases are long gone — most likely for 
good. 

CES was really lacking the multitude of 
software companies that have attended in 
the past, and many that did attend had 
their own rooms hidden away or went in 
with distributors. The big names in soft- 
ware now read Nintendo or Nintendo 
compatible. Even Apple, Mac and PC sup- 
porters were missing. 

However, I must admit that what was 
missing for 8-bit was counterbalanced 
with quite a few new programs for the ST. 
And some neat stuff, too, which you can 
read about in next month's ST-Log. 

What's saddest is finding Atari far, far 
behind Nintendo in the video-game in- 
dustry. Figure 70% to 80% belongs to 
Nintendo, with the rest split between Sega 
and Atari. And from what I saw at the 
show, it's Sega that gets my vote on gain- 
ing ground on Nintendo, not Atari. 

The problem with the XE Game System 
isn't the unit itself, but the software. Most 
of the games are starving for state-of-the- 
art graphics and just don't have the im- 
agination that is clearly evident in the 
Nintendo and newer Sega products. Face 
it, the Nintendo and Sega don't have keyboards. In the Nintendo's case the unit is 
plain and boring in appearance, and the controls are simple. What those have, 
however, are spectacular, well-thought-out programs, many of which go far beyond 
the shoot-'em concept. 

So that's my 8-bit report on the summer Consumer Electronics Show. Oh, for 
the days of pages and pages of exciting new 8-bit products to announce. fl 




A.N.A.L.O.G.COMPUTING'SEPTEMBER I98S 



c 







N 



T 



E 



U 




V 

Master Memory Map, Part 2 

The study of your Atari 8-bit's innards continues. 
This month we begin the actual map of your computer's memory. 

by Robin Sherer 



Kasor\'s Tower 

It's too bad you insulted a prominent citizen of Golenden, 

because now you must scale the treacherous Kason's Tower. 

Watch out for the arrows! 

by Jim Rogers 



Snowplow 

It's snowing again! Quick, hop into your snowplow and clear the city's streets. 

But watch out for the new storms, and don't let your gas get too low. 

An arcade-quality game. 

by Barry Kolbe & Bryan Schappel 



V 



md?:^ 



The Mandelbrot Set 

Fractals come to the 8-bit Atari. 

A fascinating combination of mathematics and graphics. 

by James J. Greco 



Joytype 



A unique typing system that allows people with certain handicaps 
to use a joystick to compose letters and documents. 

by John Pilge 



T 



S 



V 



Panak Strikes 

This month Infiltrator (Mindscape), 

Ace of Aces (Accolade) and Plmidered Hearts (In/ocom) 

are subjected to Steve's critical eye. 

by Steve Panak 

V 

Awardware (Hi-Tech Expressions) 

by Matthew J.W. Ratcliff 



V 



DELPHI: The Official Guide 

(Brady Books/Simon & Schuster) 

by Clayton Wainum 



L U M 

V 

Editorial 

by Lee H, Pappas 

V 

Reader Comments 

V 

8-6/t News 

V 

Database Delphi 

by Michael A. Banks 

V 

Boot Camp 

Karl E. Wiegers 

V 

ST Notes 

V 
The End User 

by Arthur Leyenberger 



M/L Editor 

by Clayton Wainum 

Game Design Workshop 

by Craig Patctiett 



Front Cover Photography 

Ladi Von Jansky 

Front Cover Model 

Laurie Ferguson 



Publisher 
LEE H. PAPPAS 

Executive Editor 
CLAYTON WALNUM 

Art Director 
EDDY G. HERCH 

Managing Editor 
DEAN BRIERLY 

East Coast Editor 
ARTHUR LEYENBERGER 

West Coast Editor 
CHARLES F. JOHNSON 

Contributing Editors 

LEE S. BRILLIANT, M.D., 

MICHAEL BANKS, FRANK COHEN, 

ANDY EDDY, MAURICE MOLYNEAUX, 

STEVE PANAK, CRAIG PATCHETT, 

MATTHEW J.W. RATCLIFR 

ROBIN SHERER, KARL E. WIEGERS 

Entertainment Editors 
ANDY EDDY DAVID PLOTKIN 

Illustrations 
BRENT WATTS 

Copy Chief 
KATRINA VEIT 

Copy Editors 
ANNE DENBOK 
SARA BELLUM PAT ROMERO 

Typographers 
KLARISSA CURTIS, 
JUDY VILLANUEVA, 
DAVID BUCHANAN 

Contributors 

JAMES J. GRECO 

BARRY KOLBE 

JOHN PILGE 

JIM ROGERS 

BRIAN SCHAPPEL 

Production Director 
DONNA HAHNER 

National Advertising Director 

JE PUBLISHERS REPRESENTATIVE 

(213) 467-2266 

(For regional numbers, see map) 

Advertising Production Director 
JANICE ROSENBLUM 

Advertising Manager 
PAULA THORNTON 

Subscriptions Director 
IRENE GRADSTEIN 

Vice President, Sales 
JAMES GUSTAFSON 



Where to Write 

All .submissions should be sent to: ANALOG 
Computing, P.O. Box 1413-M.O., Manchester, CT 
0604()-I4I,S. All other editorial material {letters, 
press release, etc.) should be sent to: Editor, 
ANALOG Computing, 9171 Wilshire Blvd., Suite 
300, Beverly Hills, CA 90210. 

Correspondence reg-arding subscriptions, in- 
cluding problems and changes of address, should 
be sent to: ANALOG Computing, P.O. Box 16927, 
North Hollywood, CA 9161,5, or call (818) 
760-8983. 

Correspondence concerning a regular column 
should be sent to our editorial address, with the 
name of the column included in the address. 

We cannot reply to all letters in these pages, 
so if you would like an answer, please enclose a 
self-addressed, stamped envelope. 

An incorrectly addressed letter can be delayed 
as long as two weeks before reaching the proper 
destination. 

Advertising Sales 

JE Publishers Representative 

6855 Santa Monica Blvd., Suite 200 
Los Angeles, CA 90038 



Los Angeles 

San Francisco 

Chicago 

Denver 

New York City 



— (213) 467-2266 

— (415) 864-3252 

— (312) 445-2489 

— (303) 595-4331 

— (212) 724-7767 



Address all advertising materials to: 
Paula Thornton — Advertising Production 
ANALOG Computing 

9171 Wilshire Blvd., Suite 300 
Beverly Hills, CA 90210. 

Permissions 

No portion of this magazine may be repnxiuced 
in any form without written permission from the 
publisher. Many programs are copyrighted and 
not public domain. 

Due, however, to many requests from Atari club 
libraries and bulletin-board systems, our new poli- 
cy allows club libraries or individually run BBSs 
to make certain programs from ANALOG 
Computing available during the month printed on 
that issue's cover. For example, software from the 
July issue can be made available July 1. 

Tliis does not apply to programs which specifi- 
cally slate that they are not public domain and, thus, 
are not for public distribution. 

In addition, any programs used must state that 
they are taken from ANALOG Computing Maga- 
zine. For more information, contact ANALOG 
Computing at (213) 858-7100, exl. 163. 

Subscriptions 

ANALOG Computing, P.O. Box 16927, North 
Hollywood, CA 91615; (818) 760-8983. Payable 
in U.S. funds only. U.S.: $28-one year, $54two 
years, $76-three years. Foreign: Add $7 per year. 
For disk subscriptions, see the cards at the back 
of this issue. 

Authors 

Wlien submitting articles and programs, both 
program listings and text .should be provided in 
printed and magnetic form, if possible. Typed or 
printed text copy is mandatory, and should be in 
upper- and lowercase with double .spacing. If a sub- 
mission is to be returned, please send a self- 
addressed, stamped envelope. 

For further information, write to ANALOG 
Computing, P.O. Box 1413-MO, Manchester, CT 
06040-1413. 



ANALOG Computing (ISSN 0744-9917) is published monthly by L.F.P., Inc., 9171 Wilshire Blvd., Suite 300, Beverly Hills, CA 90210. © 1988 L.F.P., Inc. Return 
postage must accompany all manuscripts, drawings, photos, disks, etc., if they are to be returned, and no responsibility can be assumed for unsolicited materials. 
All rights reserved on entire contents; nothing may be reproduced in w/hole or in part without written permission from the publisher. U.S. subscription: $28 for one 
year (1 2 issues), $52 for two years (24 issues), $76 for three years (36 issues). Foreign subscription: Add $7 per year. Single copy $3.50 (add $1 for postage). Change 
of address: Six weeks advance notice, and both old and new addresses are needed. POSTMASTER: Send change of address to ANALOG Computing Magazine, 
P.O. Box 16927, North Hollywood, CA 91615. Second-class postage paid at Beverly Hills, CA, and additional mailing offices. 



A.N.A.L.O.G.COMPUTING'SEPTEMBER 1988 



5 











The Whoops department 

While I greatly enjoyed Charles F.John- 
son's "Binary Load Pictures" in issue 60 
(May '88), I had considerable trouble with 
Charles Bachand's "The MAC/65 
Detokenizer." I've discovered several bugs 
for which I am enclosing fixes. After care- 
fully typing and rechecking the MAC/65 
Detokenizer, I found that: 

1) If an error was made in the filename 
of the MAC/65 file to be read (like leav- 
ing off the device D:, for instance), and 
then the directory was checked for the 
correct filename, every filename entered 
after that continued to return errors, and 
the program had to be restarted, and the 
filename reentered correctly on the first 
try! 

2) All two-byte hexadecimal literals (like 
$0342 or $E456, for instance) were man- 
gled in the conversion to hex digits (like 
$0303 or $E404)! 

3) After the file had been detokenized, 
the output file was never closed, making 
yet another error every time the program 
came to Line 1090, where it tried to open 
the still already open lOCB channel! 

The following lines appear to fix these 
problems when they replace the lines of 
the same numbers in the original 
program. 

1090 CLOSE #l:OPEN #1, 4, 0, A$ 

1100 GET #1, A:GET #1, STRAP 40000 

1400 IF A = 5 THEN GET #1, B: GET #1, 

A:L = L-2:GOSUB 1680: A = D:GOSUB 

1680:GarO 1340 

1440 A = PEEK (195):IF A = 136 THEN 

CLOSE #2:GOrO 1070 

1755 CLOSE #3:TRAP 40000:RETURN 

—Bob Hardy 
Chico, CA 

1 read and typed in all of your pro- 
grams (even the ones in Base 16). I also 
typed in the little harmless four-liner on 
page 37 of the April '88 issue and found 
the good ol' "ERROR 3 AT LINE 20." I 
found out that the fifth data number in 
Line 10 is greater than 255 (298 to be ex- 
act). I experimented and found out that 
the following will do the job: 

6 




10 DATA 238, 198^ 2, 238, 198, 2, 76 

—Jason Locke 
Levittown, NY 



A bug or not? 

I just happened to pick up the August 
'86 issue from the stack and happened to 
turn to Clayton Walnum's review of 
AtariWriter Plus. I had read it before I 
bought AW -f and remembered his com- 
ments about a few bugs. Well, there is one 
bug he did not mention; one that makes 
AW-l- unusable. 

If you happen to write a line that ex- 
ceeds the number of columns allowed. 



word wrap is supposed to do its thing. 
Most of the time it does so. But if you hap- 
pen to use a word that exceeds the limit 
by one character, word wrap falls down 
on the job; it moves that extra character 
down to the next line (at printout time) 
and does a line feed in doing so. Great! 
I had purchased AW+ sometime back in 
'87 but didn't use it until recently and ran 





t 




to this problem. 1 put it back into the 
box and filed it with a few other programs 
that don't work. 

Does anyone out there have a fix? 

—Carl C. Springer 
Merritt Island, FL 

Yes, you did indeed catch a bug that I didn't 
spot, but to say that that small problem makes 
AtariWriter Plus unusable is a gross exonera- 
tion. Just the fact that I didn't catch the bug 
.ihows how rarely it crops up. I wrote many, 
many articles with AlV-l- and never once ran 
into the problem you describe (although, I did 
test AW+ again based on your complaint, and 
found that the software does behave as you've 
described). When this problem crops up, it's a 
simple thing to fix; just a quick change of your 
margin setting will do the trick. I still say that 
AtariWriter Plus is an excellent product, and 
I easily recommend it to anyone looking for a 
good word processor for their 8-bit Atari. 

M/L Editor modification 

Who hasn't praised the use of M/L Edi- 
tor by Clayton Walnum when entering all 
those data statements? However, being a 
fairly good typist, I had trouble getting 
used to one feature. I could not get used 
to seeing a comma and pressing the 
RETURN key Nor did I want to. That 
dilemma prompted this letter and the fol- 
lowing solution. 

Changing the M/L Editor code to in- 
clude the following will enable the user 
to press the comma or RETURN key in- 
terchangeably. Now I no longer get 
confused. 

25 CMMA = 44 

330 IF A <> RETRN AND A < >CMM A 

AND AOBACKSP AND (A<48 OR 

A>57) THEN 320 

335 IF (A = CMMA OR A = RETRN) AND 

= AND X>1 THEN 350 

40 IF (((A = RETRN OR A = CMMA) 

ND NOT EDIT) OR A = BACKSP) AND 

= THEN 320 

50 IF A = RETRN OR A = CMMA THEN 

OKE 752,1:? " ":RETURN 

— Larry Locke 
Nazareth, PA 



I 



SEPTEMBER 1988 ' A,N,A,L,0,G, COMPUTING 



800 4 PIECE BOARD SET $28.50 

SET INCLUDES 800 MAIN, CPU, 10K ROM AND POWER BROS 
ALL MODULES NEW AND COMPLETE WITH IC'S 



800/400 MODULES 

<9.50ea. 

• 800 Main Board 
•80a'4O0 CPU with GTIA 

• 800 1CK-B-0.S. Module 

• 16K RAM loss HAM IC's 

• 400 Main Board 

• 800 Power Supply Board 

• 400 Power Supply Board 

• 800XL Modulator 



IC'S $4.50 ea. 

• CPU .... CO14S06 
•POKEY C012294 

• PIA C014795 

• GTIA . . . CO14805 

• ANTIC . . C012296 

• CPU .... CO10745 
•PIA .... . CO10750 

• CPU .... C014377 

SERVICE RATES 

•800 $39.50 

•850 $39.50 

•810 $69.50 

• 1200XL . . . '$49.50 

• 1050 $75.00 

INCLUDE t7.00 RETURN 
SHIPPING AND INSURANCE. 



POWER PACKS 

Replacennsnt transformer tor: 
800/400, 810, 1050, 1200XL 

and 1020 units $14.50 

XMO Power Pack .. . $9.50 

1050 MECH 

Factory fresh TANDON 
mechs. make difficurt repairs 
a snap. Units are complete 
with Head, Stepper, Spindle 
motor, belt etc. Just plug in, 
no difficult alignments or 
adjustments required. $4750 

MISC. HARDWARE 

600XL 64K Upgrade $29.95 
Fastchip for 800/400 $15.50 

Atari Joysticli $7.00 

Atari Paddles $6.50 

BOARD SETS 

New Parts corrpleta with IC's 
SCO 4 PIECE BOARD SET 
Includes 800 Main, CPU,10K 
ROM and Power Brd. $28.50 
400 3 PIECE BOARD SET 
Includes 400 Main, CPU and 

Power Board $19.50 

810 BOARD SET 
Sideboard with Sep., Power 
and Analog Boards . $67.50 



REPAIR MANUALS 

SAMS Sewice Manuals for the 
following units: 800, 800XL, 
130XE, 400, X)50 .... $19.60 
520 ST Servfce Man. . $37.60 

RLOr PROGFiAMMING 
CAFIT + MANUALS $17S) 

SOFTWARE 

Pac-Man Cartridge . . . $4.00 
Deluxe invaders Cart. . $4.00 
Journey/Planets Cart. $4.00 
Gort Cart. 800/400 . . . $4.00 

Drop Zone Disk $9.95 

Big Math Attack Disk . $5.00 

Pathfinder Disk $5.00 

Encounter on Questar $5.00 
Musical Pilot Childware $5.00 

Basic Cartridge $10.00 

Q'Bert Cartridge $10.00 

Donkey Kong Cart $5.00 

Eastern Front Cart $5.00 

Atlantis Cartridge $6.00 

Crossfire Cart $5.00 

COMPUTER BOOKS 

Inside Atari Basic $5.00 

Atari Base Ref. Man. $5.00 
XE Users Handbook $17.60 
XL Users Handbook $17.60 
Assennbly Language $19.95 
Advanced Prog $19.50 



CALL TOLL FREE 1-800-551-9995 

INSIDE CALIFORNIA OR OUTSIDE U.S. PHONE 415-352-3787 



AMERICAN TECHNA- VISION (T.V.) 

Mail Order 15338 Inveiness SI, San Leandro, Ca. 94579 

Service Center 2098 Pike Ave., San Leanko, Ca. 94577 

NO MINIMUM ORDERI We accept money orders, personal checks or C.O.D.s, VISA, 
Master/Card okay. Credit cards restricted to purchases over $20.00. No personal checks on 
C.O.D. - Shipping: $4.00 shipping and handling on orders under $150.00. Add $225 for C.O.D. 
orders, in Canada total $6.00 for shipping and handling. Foreign shaping extra Calif, residents 
include 7% sales tax. Prices subject to change vi*hout notice. Atari is atrademark d Atari Corp. 



CIRCLE #101 ON READER SERVICE CARD. 



SOUTHERN SOFTWARE 

205-956-0986 

24 HOUR PHONE 

CALL OR WRITE FOR FREE CATALOG 

ALL 8 BIT AND ST SOFTWARE IN STOCK 

CALL FOR PRICES AND LATEST TITLES 

SOFTWARE IN STOCK FOR OTHER COMPUTERS 

PRCES LISTED FOR MAIL ORDER ONLY - ADO 10% ON PHONE ORDERS 



SI COHPinEfIS CALL 

lOSO DIS( DRIVE 239. 9S 
1050 B/HAP»>T IHST 399.95 



130 «E 


139.95 


«f551 DISK OlllVt 


189.95 


520 DISK DRIVES 


CALL 


850 INTERFACE 


109.95 


sx omiHon 


59.95 


ACCESSORIES 


CALL 


APE FACE 


49.95 


AVATEi i;oo 


79.95 


AVATEI 2400 


179.95 


CHIP/ARCHIVEK «1C 


69.95 


PRO lURNER 


179.95 


EZ RAN 520 


169.95 


HAPPr 1050 EHHANC 


119.95 


HAPPT 810 ENHANCE 


104.95 


HAPPY CONTROLER 


39.95 


HARD DISK DRIVES 


CALL 


ICD NIC 1 HEG 


299.95 


ICD HIO 2S6« 


199.95 


IE ADAPTER FOR HIO 19.95 


POKER SUPPLIES 


CALL 


PRINTERS 


CALL 


PRINTER CONNECT. 


39.95 


R-TIME CARTRIDGE 


49.95 


RAHRO IL UPGRADE 


29.95 


2S6X CHIP SET 


49.95 


RAHROO XL 


39.95 


LIGHT PEN 


69.95 


U.S. DOUBLER 


29.95 


UPRINT INTERFACE 


59.95 


IL/IE lOS 


49.95 



CHIPMUNK 

ATARI URITtR PLUS 

■ASIC CARTRIDGE 

■ASIC XE 

■ASIC XL 

SUPER ARCHIVER 

■IT WRITER 

DOS 2.5 U/NAHUAL 



29.95 
39.95 
19.95 
49.95 
39.95 
59.95 
69.95 
9.95 



79.95 
29.95 
29.95 
49.95 
89.95 
189.95 
124.95 



XL/XE POWER SUPPLY 27.95 



4.97 
34.95 
13.95 
19.95 
64.95 
27.95 
64.95 
27.95 
27.95 
27.95 
74.95 



1027 INK ROLLER 

HAPPr ARCHIVER 

I/O C0S2 

I/O CORD 10 FT 

HAC/65 

HAC/65 TOOL KIT 

ACTION 

ACTION TOOL KIT 

■ASIC XL TOOL KIT 

BASIC XE TOOL KIT 

PERSONAL PASCAL 

SPARTAOOS TOOL KIT 24.95 

SI HOST ADAPTER 99.95 

SPARTS DOS CART 
OHNIVIEV Xl/XE 
NEWELL 256K 
OtWIWW 400/800 
ST COPr 

NUMERIC KETPAD 
TOP DOS 1.5 PLUS 
PRINT/nOOEN CARLE 
RAHCHARGER 
RAHCARO FOR (00 
SMART LINK MODEM 



80 COL CARD 

COMPULSIVE COPIER 

COPr II ST 

XM-301 MODEM 

SX-212 MOOEM 

Sm804 PRINTER 

1027 PRINTER 

IDM121 LQ PRINTER 199.95 

ATARI LAR SI KIT 49.95 

JOt STICK 

LOGIKHRON CLOa 

MAIX WILLIAMS C 

MEGAMAI C 

HOOUlA-2 

P.R. CONKECIION 

WARP SPEED DOS XL 



69.95 

36.95 

34.95 

44.95 

29.95 

39.95 

29.95 

13.95 

139.95 

129.95 

189.95 



1.95 
39.95 
124.95 
139.95 
69.97 
59.95 
24.95 
PC ROARO DESIGNER 169.95 
PROLOG 69.95 

PUBLISH PARTNER 119.95 
SOUND DIGITIZER 119.95 
• HE HAVE COLOR RIB80HS • 
FOR ALL PRINTERS CALL 

. ATARI REPAIR PRICES • 

ITEMS NOT LISTED CALL 

1050 DISK DRIVE 89.95 

130 IE 69.95 

65 XE 49.95 

520 DISK DRIVE 89.95 

520 ST 139.95 

850 INTERFACE 49.95 

ATARI PRINTER 69.95 

Xl/IE/150 POW SUP 12.95 



PRICES SUBJECT TO CHANGE WITHOUT NOTICE 

ADD $5 FOR SHfWNQ AND NSURANCE MOST CJRDERS SHIPPED SAME 

DAY . FOREIGN ORDERS WELCOKC WITH SUFFICENT POSTAGE 

INCLUDED. ALABAMA RESIDENTS ADD 7% SALES TAX . ADO 6% FOR 

VISA. ADO $5 FOR ARMAL ADD $15 FOR OVERNIGHT SHIPMENT 

ALLOW THREE WEEKS FOR PERSONAL CHECKS 

SOUTHERN SOFTWARE 

1879 RUFFNER ROAD BIRMINGHAM. AL 35210 



CIRCLE i¥l02 ON READER SERVICE CARD. 



^^ HACK PACK 



fMMt:E:\\Md*\\Uirl i^. 



ALPHA SYSTEMS is consianlly innovating lo provide more power 
■ forvourS-bHAtaris 



Special OFFER 

The Alpho Systems HACK PACK contains all our 

finest products for making Back-up copies, 

Analyzing, Underslonding and Protecting your 

Atari programs. It comes complete with Atori 

Protection Tectiniques (Book and Disk I), Advanced Protection Tecfmiques (Book and Disk II). The 

Chipmunk, The Sconolyzer, The Impersonator ond Disk Pack IO(X)- Worth over $150. Gellliennall 

for Itie special price of Just $99.95 

Atari Software Protection Tectiniques Voll & 11 

These Book and Disk packages delaii Ihe most advanced copy proloclion methods in use today They 
guide you through ttie fiielhods used to create the protection as well as ttte copying techniques to get 
around them. They include Information on Plireoking • Hacking • Online security • Block boxes • Self- 
destructing programs • Pirate bullelin boord systems • Logic bombs • New piracy laws • Hardware 
data keys • Weok sectoring (Phantom, Fuzzy ond unstable sectors) • Overfilled Irocks • ORG errors 
Bonk Select cortridges ond MUCH. MUCH MORE. The disks include automatic program protectors. 
Protection Sconners, directory hiding and more. 
BOOK I and DISK I $24.95 

BOOK II IA<tvanced protection) and DISK II $24.95 
Sp«clal Otter, Order both sets for Only $39.95 

CHIPMUNK 

Automate Disk Bock-Up System. Make perfectly tunning unprotected bock-up copies of hundreds of 
Ihe most popular Atori programs. Chipmunk's sophislicoled programming Automaticolly linds and 
REMOVES copy protection from most Atari programs Back-up even lieoviiy protected progroms with 
ease Finally, a back-up system that needs no special hardware or skills. 
(II you need a full list of what Chipmunk copies, coll or write for our free cololog) $34.95 






PARROT II 

An All New Parrot sound digitizer lor your Atari Parrot II is o 
sophislicoled new hardware device that plugs into your joystick 
port. Parrot II has two inputs. One lor a microphone ond one for a 
powered source such os a tape player, radio or Compact Disk. 
The Powerful Porrot II sotlwore lels you record sounds into your computer ond ploy them bock on any 
Atori. Parrot II turns your computers keyboard into a musicol instrument with nine differeni sounds 
covering three octaves each. The sounds con be onyining, a dogs bark, o piano, a complete drum 
set, a symphony or your own voice. 

Parrot II lets you modify Ihe sounds on o graphic disploy to creote brond new sounds and special 
effects. Best of oil, the sounds and voices can be put into your own programs Ihot can be used on 
any standard Atari Explore the world of digital sound ond music. ONLY $59.95 
Pre-Recorded Sound Disk fvlore pre-recorded sounds for Parrot $4.95 
MRROT II Demo Disk (Does not require Parrot to run) $5.00 



POP-N-ROCKER 



Sconolyzer Automoticolly scon & analyze commercial programs Unlock progromming secrets and 
learn from the masters $29.95 

linpereonotor Cortridge to Disk back up system. Cieote running bock-up copies of ony cartridge 
Z^ tflX (uptolBK) $29.95 

XS^ CHEAT 

Get moie from your games wilh CHEAT Tired of spending days trying to beat a game' Tired of getting 
stuck just when you need anottier life? Ctieat is an innovative new product that gives you the chonce 
you need to beat your favorite games, Cheat worl<s with hundreds of Atari gomes lo give you 
unlimited lives or power End the frustration and get hours more enjoyment from your games. (Coll or 
wrile Alptia Systems for our tree catalog with a lull list of ttie programs thai work with Cheol) ONIY $24.95 

BASIC TURBOCHARGER 

NOW for the first time a BASIC programmer con gel the power, flexibility and incredible speed of 
machine language. BASIC TURBOCHARGER is a book and disk package that contains over 1 50 
ready to use machine language routines. Complete instructions show how lo add them to your own 
BASIC programs to gel these features and more: ■ Smooth Scrolling • Player/f^issile control • Load & 
Save Picture tiles • Sorting and Searching • Special Effects Graphics • Incredible Speed • IVluch, Much 
More • Over 1 50 programs. You've heard ol the power of Assembler, now harness it for your own 
needs g-?^ oi; 




GIANT WALL SIZED POSTERS. 




216-374-7469 

VISA & MASTERCARD, ORDER BY 
PHONE, OR SEND MONEY ORDER TO: 



a fast paced, multi-player Irivia gome that mixes questions 

with real songs (digitized 
with Panot). Be the first to identify the songs and answer the music trivia questions, Pop-N-Rockef 
comes wilh three data disks and lels you add new questions so it will never get old. \ttu con use a 
Parrot Sound digitizer to add new songs too! Use any kind of music from Rock to Classical to 
Nursery Rhymes. A new concept in entertainmeni and a perfect add-on for Parrot. $24.95_ 

COMPUTEREYES & MAGNIPRINT 11 + 

Turn your computer into a digital portrait studio This complete package lets | 

you capture, save & print digilol images from your Video Camera, VCR 

or TV. COfylPUTEREYES hardware plugs directly into your joystick ports for 

easy use. Print your picture on o 6 foot poster $-119,95 

ComputerEyes camera system 

Comes complete with everything above, plus a black and while video . -- ',y a'^ 

camera and connecting coble. $329.95 m^ffiipMiM 

Graphics 9 Software - Add a new dimension to your CO ful PUT E REYES 

pictures - captures images in 1 6 shades of grey $12.00 

Magniprintll + 

Easily the most powerful print program available today Print graphics trom olmost any lormol in 

hundreds of shapes, sizes, and shades Supports color printing and lels you create giant posters. 

Magniprint 11+ lets you stretch and squeeze, invert, add text, adjust snoding and much more. 

Works with EPSON, NEC, Citoh, Panasonic, Gemini, Star, XlvlfvlBOl, and compotible printers. (850 

interface or equivalent required). $24.95 

Graphics It'onsformer 

Now you can combine Ihe most powerful features of all your graphics programs. Create print shop 

icons from a Koala pad picture, from a photo digitized with ComputerEyes, or any picture file 

Graphics Transformer lets you Stirink, Enlarge and Merge pictures foi unequaled llexibility, $22.95 

YOUR ATARI COMES ALIVE 

SAVE l\10NEY Finally an allernative lo buying expensive computer add-ons. Your Atari Comes Alive 
shows you how lo built them yourself. This ^How-To' book and disk package gives you complete 
step by step instructions and programs needed to built ond control these exciting devices and f^lORE: 
• Light Pen • Light & Motor Conlrollers -Alarm Systems • \A)ice Recognition • Environmental Sensors 
■Data Decoders • fvlore than 1 50 pages \bur Atari Comes Alive $24.95 



ALPHA SYSnMS 1012 SKYLAND DRIVE MACEDONIA. OH 44056 FREE BONUS: DELUXE SPACE GAMES (3 gomes 
on a disk) Free wilti any ofder ol 3 or more Hems. Include 53,00 shp & hdlg (US Canada) Ohio res, odd 5'.^% soles lox. 
Foreign orders add S8.00 shp & hidg. Coll or wrile tor tree cololog. Customer Seivlce Line (216) 467-5665 M-F 9-3, 



CIRCLE #103 ON READER SERVICE CARD. 




How to read the Memory Map 

Beginning Users— Read the text ihiit is 
printed in bold type only. These memory 
locations will be the easiest for you to use 
and usually don't involve assembly 
language. 

Advanced Users— Read everything! 
Many areas of memory are not of any 
practical use, but you can learn a lot 
about how a computer works by reading 
the boring parts. 

The information is formatted like this: 

LABEL 

DECIMAL # HEXADECIMAL # 

DESCRIin^ION 

HEXadecimal numbers are often 
preceded by a "$". 

Page Zero 

Locations to 255 arc called "Page 
Zero" (in the language of computers, a 
"page" is 256 bytes). Since one byte can 
hold any number in the range of to 255, 
the comjHiter only needs one byte to hold 
the address of a page zero location. This 
saves time when you have to load or store 
a value in machine language so page zero 
is very important to machine-language 
programs that have to rim as quickly as 
possible. That's why the operating system 
uses the first 128 bytes. The other 128, lo- 
cations 128 through 255, can he used by 
BASIC and you for supcrfast machine 
code. 

Machinc-langiuige programmers 
should note that Locations 2 through 7 
are rmt cleared by either a coldstari (ttnn- 
ing the computer off and then on again) 
or warmstart (]jrcssing SYSTEM RESfT") 
opeiation. 

LINZBS 

0,1 ()()00,()001 

The great mystery location! Nobody 
.seems to know exactly what this location 
does. According to Atari's o|ieratiiig sys- 
tem li.sting, it is "LINBUC; RAM [and] will 
be replaced by [the] monitor RAM" (yoin- 
guess is as good as mine), and the only 
time it u.ses it is to define it. It dot's, seem 



to be used to store the VBI.ANK time- 
value though, so it's probably not com- 
pletely useless. 

CASINI 

2,3 0002,0003 

This is used in "cassette initialization." 
As you probably alread}^ kno-iv, if you hold 
down the Start button while turning on 
the computer, the computer will beep. If 
y(Hi then press RETURN, the computer 
will expect a machine-language tape to be 
in the cassette recorder and will proceed 
to load it. This process is called "booting" 
a cassette. The first six bytes stored on the 
machine-language tape contain special in- 
formation about the tape. The first b)te. 
actually, is ignored. The second tells how 
many 128 byte "records" are on the tape 
(when you load in the tape, each beep 
while loading represents a record). The 
third and fourth give the starting address 
that the machine code is to be stored at, 
called the "load" address. The fifth and 
sixth give the "initialization" address 
(where to go to get the program set up 
and ready to run). The initialization ad- 
dress, as you may have guessed, gets stored 
here at CASINI. Once the whole program 
has loaded, the computer jum]is to the 
load address plus six (to skip over these 
special bytes) where the program cither 
tells it to load some more or RTS (RcRnn 
from Subroutine). When the computer 
comes across an R'fS instruction, it looks 
in ('ASINI for the initialization address 
and JSRs (Jump to SitbRoutine) to that ad- 
dress. Einally (and you thought cassette 
boots were easy), the computer JSRs to the 
address in DO.SVEC (10.11). which gets the 
program rumiing (DOSVEC should be .set 
up by the program either in the initiali- 
zation process or as part of a multiple 
load). 



RAMLO 

4.5 



()0()4,()()()5 



RAMLO has a bunch of uses, none of 
which will l)e useful to you. First, the OS 
u.ses it as an index (like the variable in a 
FOR/NEXT loop) while clearing out 
memory after you turn on tlie coniputei. 
It also uses it as an index while testing 



memory to make sure everything is .V 
okay Finally, and you'll lo\e this one. it's 
used to store the "disk boot addres.s." 
which is usually 1798 in case vou care, for 
the boot contitumtioii routine (which is 
what happens when you want to load into 
more than one part of memory). By the 
way, it's real buddy-buddy with TR.VMSZ 
and TS'fDAf (the three work together in 
the RAM test routine). 

TRAMSZ 



Another location with a whole bundi 
of uses. As mentioned. TR.VMSZ helps 
out RAMLO in testing the RAM. Its value 
is then tiansferred to R,-\MTOP (location 
100). But, before anv of that happens, it 
is used in testing whether or not a left car- 
tridge is plugged in. If there is a left car- 
tridge (also known as cartridge .A), then 
TRAMSZ is set to one. If not, it's set to 



rSTDAT 



I'his one only has two runctions. First, 
as >-ou already know, it helps out in ilie 
R.\M test routine (see your OS listing if 
you're dying to find out what the R.-VM 
test routine is). Secondly like TRAMSZ, 
it's u.sed initiallv in testing whether or not 
the right or B cartridge is ])resenl. 



Machine-language prograimiiers: 1 .oca- 
tious 8 through 15 are cleared on cold- 
start onlv. 

VVARMS'f 

8 0008 

■fhis is the warmstart Hag, telling vou 
whether you're in the middle of a warm- 
start or a coldstart. If VVARMST e<nials 0. 
then you're in the middle of a coldstart. 
If it's anything else, then you're in the 
middle of a warmstart (pressing S'S'SIEM 
RESEf will set VVARMSF to 255). The 
main puri)ose of VVARMST is to make 
sure that if someone presses the SYSf EM 



ized iiro])erh, the lompuler will know 
about it and start o\er instead ol'messiii'v 



SEPTEMBER 1 988 ' A,N, A.L.O.G, COMPUTING 



^l: 



1' ■.i:f'ev,iE!~ 

1 


1 



# 




cverytliing up. Nice stuff to know, but 
generally useless. But wait, you say, can't 
I trick the coinputer into rebooting by 
changing the vakie of WARMST to 0, that 
way preventing people from usjng SYS- 
TEM RKSET to stop by BASIC program 
so they can LIST it? No. Although you can 
change the value to 0, as soon as you press 
SYSI EM RESET il will change back to 
2.55. See Location COLDST (580) for a 
way that you can trick the computer You 
might also look at locations POKMSK (16) 

A.N.A.L.O.G.COMPUTING'SEPTEMBER 



and STMCUR (138,139) for other ways to 
protect your BASIC progi-ams from other 
people's greedy eyes. 

Incidentally, warnistart normally starts 
at location 58484. 

BOCJT? 

9 0009 

Booting, as you will recall, is the 
process of loading the |)rogram into the 
computer's memory. In our case the pro- 



gram is loaded from tape or disk. Some- 
times a boot is not successful. Maybe you 
]jut a rock 'n' roll tape into your Atari 
recorder by mistake, or you forget to close 
the disk-drive door In any case, BOOl? 
is used to tell the operating system 
whether or not the boot attempt was suc- 
cessful. If BOOl? is ecpial to one, then 
there was a successful disk boot. A two in- 
dicates a disk boot, and a three (a one 
plus the two) means both the disk and 
continued on page 28 



When you want to talk Atari 



XL/XE HARDWARE 



INTERFACES 

ICD 

P:R Connection 59.99 

Printer Connection 41.99 

Supra 

1150 38.99 

1151 (1200 XL) 41.99 

Xetec 

Graphix Interface 38.99 

Atari 

850 Interface 109.00 

COMPUTERS 




1 M^ 






Atari 130XE $139 

Atari 

65 XE 99.99 

XL/XE ENHANCEMENTS 

Axlon 32K Mem. Board (400/800) .19.99 
Atari 80 Column Card 79.99 

MODEMS 

Atari 

SX212 300/1200 (ST) 89.99 

835 19.99 

XMM301 42.99 

Anchor 

VM520 300/1200 ST Dir. Con 119.00 

Avatex 

1200 HC 99.99 

2400 179.00 

Supra 

2400 Baud XL, XE 169.00 

2400 Baud ST 169.00 

2400 Baud (no software) 149.00 

MONITORS 

IMagnavox 

CM8505 14" Composite 199.00 



ST HARDWARE 




$339 



ATARI SM1224 RGB 
Color Monitor 

520ST FM RGB/Color System. . .789.00 
Includes: 520 ST FM with 31/2" drive, 
mouse & 1224 color monitor. 

SM124 Monochrome Monitor 179.00 

Call For Current information 
On Tlie Entire ST Linel 



DRIVES 



Atari 

XF551 Drive (XUXE) 189.00 

AA314 DS/DD (ST) 209.00 

SHD204 20 Meg Hard Drive Call 



EM. 



1 



Supra 30 Meg ^.^^^ 

ST Hard Drive $699 

I.B. 

51/4" 40 Track (ST) 219.00 

51/4" 80 Track (ST) 279.00 

LCD. 

FA»ST 20 Meg 629.00 

FA'ST 30 Meg 869.00 

FA»ST Dual Hard Drives Call 

Indus 

GTS 100 31/2" DS/DD (ST) 199.00 

GT 1000 51/4" DS/DD (ST) 219.00 

GT Drive (XL/XE) 189.00 

Supra 

FD-10 10MB Removable Floppy 

w/SCSI 789.00 

20 Meg Hard Drive (ST) 579.00 

20 Meg Hard Drive (XUXE) Call 



PRINTERS 



Atari 

1027 LQ XL/XE 



.129.00 




Atari XM-M801 ^^^^ 

XL/XE Dot Matrix $1 99 

XM-M804 ST Dot Matrix 199.00 

XDM 121 Letter Qlty. XL/XE . . . .209.00 
Brotlier 

M-1109 100 cps Dot Matrix 189.00 

M-1409 180 cps Dot Matrix 299.00 

HR-20 22 cps Daisywheel 339.00 

Citizen 

120D 120 cps Dot Matrix 149.00 

180D 180 cps Dot Matrix 179.00 

Premier-35 35 cps Daisywheel . .479.00 
Epson 

LX-800 150 cps, 80 col 179.00 

Hi-80 4 pen plotter 269.00 

FX-86E 240 cps, 80 col Call 

FX-286E 240 cps, 132 col Call 

LQ-500 180 cps, 24-wire Call 

LQ-850 330 cps, 80 col Call 

FX-850, FX-1050 New 

NEC 

P2200 pinwriter 24-wire 369.00 

P660 pinwriter 24-wire 459.00 

P760 pinwriter 132 col 659.00 

OI(idata 

Okimate 20 color printer 129.00 

ML-182 -1-120 cps, 80 column . .229.00 
ML-192 -I- 200 cps, 80 column. .349.00 

ML-193 + 200 cps, 132 col 459.00 

Panasonic 

KX-P 10801 144 cps, 80 col 179.00 

KX-P1091i 194 cps, 80 col 199.00 

Star Micronics 

^JX-1000 140 cps, 80 column . . .179.00 

NX-15 120 cps, 132 column 319.00 

Tosiiiba 

P321-SL 216 cps, 24-wire 499.00 



WE SHIP 90% 
OF ALL ORDERS 
WITHIN 24 HOURS 






SELECT FROM 
OVER 3000 
PRODUCTS 



COMPUTER MAIL ORDER 



you want to talk to us. 



XL/XE SOFTWARE 



Access 

Executive Disk 19.99 

Accolade 

Hardball 19.99 

Atari 

Atariwrlter Plus 35.99 

Filemanager 1 1 .99 

Music Painter 1 1 .99 




ACCESS ^. -„ 

Leaderboard Golf ^1399 

Atari Program Exchange 

Misc. Programs (cassettes) at 1 .99 

Broderbund 

Graphics Library I, II, III 13.99 

Printshop 25.99 

Datasoft 

Alternate Reality (dungeon) 25.99 

221 Baker St 20.99 

Electronic Arts 

Touchdown Football 12.99 

Firebird 

Guild of Thieves 14.99 

Silicon Dreams 14.99 

Jewels of Darkness 1 4.99 

MIcroprose 

Top Gunner 15.99 

F-15 Eagle Strike 21.99 

Silent Service 21 .99 

Origin Systems 

Ultima 4 36.99 

Roldyn SPECIAL 

Anti-Sub/Journey to Planet . . .(ea.) 3.99 

Strategic Simulations 

Battallion Commander 23.99 

Gemstone Warrior 10.99 

Sublogic 

Flight Simulator II 32.99 

Scenery Arizona 14.99 

X-Lent 

Typesetter 22.99 

Printshop Interface 21.99 



ACCESSORIES 



MD1-M SS/DD 51/4" 8.49 

MD2-DM DS/DD 5V*" 8.99 

MF-1 DDM SS/DD SVz" 1 1 .99 

MF2-DDM DS/DD 31/2" 18.49 

Sony 

MD1D SS/DD 51/4" 6.99 

MD2D DS/DD 5V4" 7.99 

MFD-1DD SS/DD 3V2" 11.99 

MFD-2DD DS/DD 3V2" 17.99 

Aiisop Disic Holders 

Disk File 60-5V4" 9.99 

Disk File 30-3V2" 9.99 

Curtis 

Emerald 39.99 

Safe Strip 19.99 

Universal Printer Stand 14.99 

Tool Kit 22.99 

ICD 

BBS Express (ST) 49.99 

Sparta DOS Construction Set 28.99 

US Doubler/Sparta DOS 47.99 

Real Time Clock 48.99 

RamboXL 29.99 

USDoubler 28.99 



ST SOFTWARE 




ATARI 

Geometry ^ . ___ 

Vol. II 916^» 

Abacus 

PC Board Designer 129.00 

ACCGSS 

Leaderboard Golf 22.99 

Actlvlsion 

Hacker II Doomsday 27.99 

Antic 

CAD 3-D 31.99 

Avant Garde 

PC Ditto 59.99 

Batteries Included 

Degas Elite 38.99 



ST SOFTWARE 



Comnet 

ST Term 19.99 

Electronic Arts 

Gridiron Football/Auto Duel, (ea.) 26.99 

Isgur Portfolio 1 19.00 

Firebird 

Silicon Dreams 19.99 

The Sentry 19.99 

infocom 

Beyond Zork 34.99 

IMetacomco 

ISO Pascal 59.99 

IMIchtron 

Major Motion 25.99 

MIcroprose 

Gunship 28.99 

F-15 Strike Eagle 24.99 

Miles Software 

ST Wars 24.99 

Mark Williams 

C 119.00 

Paradox 

Wanderer (3D) 24.99 

Progressive Computer 

Graphic Artist 1.5 129.00 

Psygnosis 

Barbarian/Deep Space (ea.) 25.99 

Soft Loglk Corp. 

Publishing Partner 54.99 

Strategic Simulations 

Rings of Zilfin/Phantasie III (ea.) . .25.99 

Sublogic 

Flight Simulator II 33.99 

TImeworks 

Desktop Publisher 89.99 

Swiftcalc/Wordwriter (ea.) 46.99 

Partner ST 37.99 




UNISON WORLD 
Printmaster Plus 925" 

Word Perfect Corp 

Word Perfect 4.1 189.00 



In the U.S.A. and in Canada 

Call toll-free: 1-800-233-8950 

Outside the U.S.A. call 717-327-9575, Fax 717-327-1217 
Educational, Governmental and Corporate Oraanizations call toil-free 1-800-221-4283 

CIWO, 101 Reighard Ave., De pt. BT, Wllliamsport, PA 17701 

jj|^^^ i^l^J,Ml.lilllllll.l.»L<dlJJJIL4I.IAIJ.L.W.llWMIil«J.IJtllW.»UMJW.iJJHt«MillHIWJtUUiJH«IUIWIM>MJMIinB^ 
POLICY: Add 3% (minimum $7.00) shipping and handling. Larger shipments may require additional charges. Personal and company checks require 3 weeks to dear. 
For faster delivery, use your credit card or send cashier's check or bank money order. Credit cards are not charged until we ship. Pennsylvania residents add 6% sales 
tax. All prices are U.S.A. prices and are subject to change, and all items are subject to availability. Defective software will be replaced with the same item only. Hardware 
will be replaced or repaired at our discretion within the terms and limits of the manufacturer's warranty. We cannot guarantee compatibility. All sales are final and returned 
shipments are subject to a restocking fee. We are not responsible for typographic or photographic errors. 



CIRCLE #104 ON READER SERVICE CARD. 



B70S 



A s d 



\ 



■y^ 



OWER 




Ufftcs:. 



by Jim Rogers 



SEPTEMBER M88 ' A.N, A.L.O.G, COMPUTING 




the year 3456, 
and even though the year is more than half 
over, you still continue to put 3455 on 
all of your checks. This is the fifth year in 
your search for the lost arts of civilization, 
the meaning of life, the secret of peace 
among all men and the ultimate free tabloid. 



In disgust, you've taken refuge in the lost 
mountain town of Golenden, where your 
host (he's the ancestor of the man who 
was considered to be the most important 
citizen of Golenden at the time of the fall 
of civilization — the plumber) has been 
most gracious. Unfortunately, you rather 
tactlessly referred to his daughter as "that 
repulsive little squash-faced gnome," and 
now, as your punishment, you must scale 
the ancient Kason's Tower. 

The game 

Type in Listing 1 using Basic Editor 11 
found elsewhere in this issue. Save a copy 
of the program before you run it! If you fail 
to do this, you'll have to retype the pro- 
gram because it erases itself from 
memory. 

At the start of the game, your man is 
on one side of a floor of the tower, and 
a pole is on the other. Use your joystick 



to move your man across the floor to the 
pole, avoiding the arrows that will be fly- 
ing toward you. Pull down on the joystick 
to duck beneath the high arrows, and 
press the trigger to jump over the low ar- 
rows. When you reach the pole, your man 
will be teleported to the next floor. Upon 
the completion of the top floor, your man 
will begin on the next level. You're given 
five men at the beginning of the game, 
and when these are used up, the game is 
over. 

This program uses BASIC to directly 
load and run the large machine-language 
portion of the game. The program is 
erased after it is run, so be very careful 
to save a copy before running. 

firn Rogers has had his 800XL for four years, 
and is completely self-taught in both BASIC and 
machine language. 

continued on page 40 



A.N.A.L.O.G.COHPUTING'SEPTEHBER 1988 



13 



Lyco Computer 

Marketing & Consultants 




AATARI 



GTS-1 00 

• Atari ST 
Drive 

• 3.5" DSDD 



Mark "Mae" Bows«r, Sales Manager 

I would personally like to thank all of our past customers lor helping to 
make Lyco Computer one o( the larnest moll order companies and s 
lei\der In the Industry. Also, I would liko to oxlend my potsonni Invilalioii lo 
all computer enlhusinsis who have not expnrtencnd the servicns Ihal we pro- 
vide. Please call our trained sales stall at our lolllree number lo Inquire 
about our diverse product lino and weekly specials. 

First and foremost our philosophy Is to keep abreast of the changing 
market so that we can provide you wilh not only laclorylresh merciianriise 
bul also the newest models ollered by Iho nianulaclurors at liie Absolule best 
possible prices. We oiler the widest selection ol compuler hardware, sollwaie 
and accessories. 

Feel free to call Lyco If you want to know more about a particular Item. I 

can't stress enough Ihal our lolllree number Is not |usl lor orders. Many 

companies have a toll-free number lor ordorinp, but if you jusl want lo asit a 

question about a product, you have n malie a loll call. Nol al Lyco. Our 

trained sales slall Is knowledgeable about ail the producis wo slock and is 

happy lo answer any questions you may have. We will do our bnsi lo make ■ • ^«_ 

sure Ihal Iho product you select will lil your appilcalion. Wo also have Salur- UC/I f^ VT>I IJT 

day hours — one more reason lo coll us lor all your compuler needs. * ■■i^^i^L^'^W «f 



AATARI IZi^ 

System 



$195 



95 




includes: 

• 130 XE 
Computer 

• 551 Drive 



$299 




Once you've placed your order with Lyco, we don't forget about you. 

Our Iriendly, prolesslonal customer service reprosenlalives will lind answers 
lo your questions aboul the status ol an order, warranties, product avaiiabiii- 
ty, or prices. 

Lyco Compuler tlocka ■ mulllmlllon dollar Inventory of factory-fresh 
inerchandli*. Chances are we have axaclly what you wanl right In our ware- 
house. And Ihal means you'll gel It fast. In foci, orders are normally shipped 
within J4 houri. Free shipping on prepaid orders over $50. and llioro is no 
doposll required on C.O.D. orders. Alt Ireiglil or UPS Biue/Red Label shipping 
It avallablt, loo. And ell products carry the lull manulaciureis' warranties. 

I can't see why anyone would shop anywhere else. Selection Imm our huge 
In-stock inventory, best price, service that can't be beal— we've qol it all here 
al Lyco Compuler. 

TO ORDER, CALL TOLL-FREE: 1-800-233-8760 
New PA Wats: 1-800-233-8760 

Outside Continental US Call: 1-717-494-1030 

Hours: 9AM to 8PM, Mon. - Thurs. 
9AM to 6PM, Friday — 10AM to 6PM, Saturday 

For Customer Service, call 1-717-494-1670, 

SAM to 5PM, Mon. - Fri. 

Or write: Lyco Computer, Inc. 

P.O. Box 5088, Jersey Shore, PA 1 7740 

C.O.D. RIak-Frae Policy: • lull manufacturers' wananties • no sales lax 
outside PA • prices show 4% cash discount; add 4% lor credit cards • APO, 
FPO, inlemationai: add $5 plus 3% for priority • 4-week clearance on personal 
checks • we check lor credit card theft • sorry, compalibiiity nol guaranteed • 
return authorization required • due to new product guarantee, relum restrictions 
apply • price/availability subject to change • prepaid orders under $50 in 
Ck>ntinental US, add $3.00 



COLOR SYSTEM 

• plug in and use im- 
mediately 

• IBM-XT compatible 

• 2-360K Drives 

• Free 1 -year limited 



warranty 



$989 



95 




MAGNAVOX 

CM-8502 



• HiRescolormonitorincluded! 

AATARI" 

HARDWARE 

520 ST-FM Keyboard $469.95 

520 ST-FM Color. $785.95 

1 30 XE Computer $1 35.95 

GTS 1 00 Drive $1 95.95 

Call for More Haraware 
Information 



• Composite 
Color 

• Green Text 
Switch 

• Speaker 

$179 



s= 



95 



1 -Year Warranty 



JOYSTICKS 

Tac 3 $9.95 

Tac2 $10.95 

Tac 5 $12.95 

Boss $11.99 

3 Way $19.99 

Winner 909 $24.95 

Wic IBM/AP $29.95 

I Controller $13.95 

Epyx 500XJ $1 3.95 

Kraft KCIII AP/PC $1 6.95 



1-800-235-8760^ 



CIRCLE #105 ON READER SERVICE CARD. 



€ 



^ 




NX-1 000 I -'■ 

• 144 cps Draft *- 

$165^=* 



\ cps 

• 36 cps NLQ 

• EZ Font Panel 
Control 



* w/cabie purchase 



NX-1 000 Rainbow 
Color Printer $225.95 



SEIKOSHA 
SP-1 80AI 




• 100 cps Draft 

• 20 cps NLQ 

• Std, Par, and IBIvl Graphics 
Compatible 



PRINTERS 



Panasonic 



10801 
IVIodel II 



SIZS'' $159 




• 150 cps Draft Mcxle 

• NLQ Mode 

• Friction & Tractor 
Feed 



{2-Year Warranty) 



Seikosha 

SP ISOAi $125.95' 

SP180VC $125.95- 

SP 1000VC $139.95 

SP 1000AP $159.95 

SP 1200VC $149.95 

SP 1200Ai $159.95 

SP 1200AS RS232 ... $159.95 

SLSOAi $289.95 

MP5420FA $999.95 

SP Series Ribbon $7.95 

SK3000 Ai $339.95 

SK3005 Ai $419.95 

SPB 10 $CALL 

SL 130Ai $599.95 

'Quanlilies Limited 

Inteiiacing available 

tor IBM C 64, Apple 

and Atari 



AATARr 



Access; 

Triple Pack $11.95 

Leader Board Pack $9.99 

Actlvtslon: 

Music Studio $19.95 

Solid GoklVoL#1 $10.95 

Batteries Included: 
Paperclip 80 Col $31.95 

Broderbund: 

Print Shop $25.95 

Print Shop Compan $22.95 

Graphic Lib. I, II. Ill $13.95 

Bank SI. Writer $27.95 

Electronic Arts: 

Pinball Con Set $8.95 

Lords of Conquest $8.95 

Starfieel I $32.95 

Chess Master 2000 $25.95 

Music Con Set $8.95 

Super Boulderdash $8.95 

One on One $8.95 

MIcroleague: 

Microleag. Baseball $22.95 

General Manager $16.95 

Stat Disk $13.95 

87 Team Disk $13.95 

MIcroprose: 

Conflict in Vietnam $22.95 

F-15 Strike Eagle $19.95 

Kennedy Approach $13.95 



Panasonic 

10801 Model II $159.95 

10911 Model II $189.95 

1092i $299.95 

1592 $375.95 

1595 $419.95 

3131 $289.95 

3151 $459.95 

KXP 4450 Laser $1649.96 

1524 24 Pin $529.95 

Fax Partner $579.95 

Optical Scanner $859.95 

Epson 

LX800 $184.95 

FX86E $279.95 

FX286E $424.95 

EXaOO $399.95 

LQ500 $339.95 

LQ2500 $789.95 

GQ3500 $LOW 

LQ850 $525.95 

LQ1050 $699.95 

Access; 

Leader Board $22.95 

Tournament #1 $11.95 

10th Frame $22.95 

Actlvlsion: 

Champion. Baseball .... $22.95 

GPL Football $22.95 

Music Studio $27.95 

GBA Basketball $22.95 

Beyond Zork $28.95 

Zork Trilogy $27.95 

Broderbund: 

Supert)ike Challenge ... $11.96 

Electronic Arts: 

Arctic Fox $25.96 

Slarfleet I $32.95 

Chess Master 2000 $25.95 

Gridiron $32.95 

Marble Madness $23.95 

Epyx: 

Sub Battle Simulator ... $22.95 

Worid Games $22.95 

Wrestling $11.95 

Winter Games $11.95 

Firebird: 

Pawn $13.95 

Starglider $25.95 

Golden Path $11.95 

Guild of Thieves $25.95 

Tracker $11.95 



STAR 

NX-1000 $165.95" 

NX-1000C $169.95 

NX-1000 Color $225.96 

NX-1000C Color $229.95 

NX-15 $289.95 

NR-10 $319.95 

NR-15 $419.95 

NB-15 24 Pin $669.96 

NX-2400 $309.95 

NB24-10 24 Pin $399.95 

NB24-15 24 Pin $545.96 

Laser 8 $1759.95 

ND-15 $349.96 

NL-10 $149.96 

'w/cable purchase 

Toshiba 

321SL $489.95 

341 SL $659.95 

P351 Model II $899.95 

361 SX 400 cps $979.96 

MIcroleague; 

MIcroleague Baseball .. $33.95 

General Manager $16.95 

Wrestling $25.95 

MIcroprose: 

Silent Service $22.95 

F-15 Strike Eagle $24.95 

Gunship $28.95 

Strategic Simulations: 

Phantasie $22.95 

Phantasie II $22.95 

Wargame Con. Set $19.95 

Phantasie III $22.95 

Subloolc: 

Flight Simulator II $30.95 

Scenery Disk $14.95 

Timeworks; 

WordwriterST $44.96 

Partner ST $27.95 

Data Manager ST $44.95 

Unison World; 

Art Gallery 1 or 2 $14.95 

Print Master $19.95 

Fonts & Borders $17.95 

Art Gallery Fantasy $13.95 

We Stock over 3,000 
software titles! 



Citizen 

120 D $149.95 

180 D $169.95 

MSP-10 $259.95 

MSP-40 $289.95 

MSP-15E $335.95 

MSP-50 $399.95 

MSP-45 $425.95 

MSP-65 $479.95 

Premiere 35 $459.95 

Tribute 224 $619.95 

Tribute 124 $489.95 

Brother 

M1109 $159.95 

M1509 $335.95 

M1709 $459.95 

Twinwriter 6 Dot & 

Daisy $899.95 

M1724L $619.95 

HR20 $345.95 

HR40 $559.95 

HR60 $649.95 



Monitors 



Thomson: 

230 Amber TTU12" .... $69.95- 

4120 CGA $219.95 

4160 CGA $244.95- 

4460 EGA $349.95 

Blue Chip: 

BCM 12" Green TTL ... $64.95 
BCM 12" Amber TTL ... $69.95 

NEC 

Multisync II $589.95 

Magnavox: 

BM7652 $79.95 

BM7622 $79.95 

7BM-613 $79.95 

7BM-623 $79.95 

CM8502 $179.95 

CM8506 $199.95 

9CM-053 $CALL 

CM8762 $245.95 

8CM-515 $259.95 

CM9043 $CALL 

8CM-873 $499.95 

Free stiipping on pre- 
paid orders over $50 
in continental U.S. 



Olcidata 

Okimate20 $129.95 

Okimate 20 w/cart $189.95 

120 $189.95 

180 $219.95 

182 $209.95 

182-t- $225.95 

183 $239.95 

192-^ $339.95 

193-^ $449.95 

292 w/intetface $449.95 

293 w/interface $585.95 

294 w/intetlace $819.95 

393 $955.95 

Laser 6 $CAU- 

390 $479.95 

391 $649.95 

320 $345.95 

321 $445.95 

Color Ribbons 
Available 



Modems 



Avatex: 

1200e $69.95 

12001 PC Card $65.95 

1200hc Modem $69.95* 

2400 $149.95 

24001 PC Card $139.95 

'w/cable purchase 

Hayes: 

Smartmodem 300 $139.95 

Smarlmodem 1200 .... $279.95 
Smartmodem 2400 .... $419.95 



h:atex 
2400 




with cable 
purchase 



'-our mother begged you to be- 
come an orthodontist and 
straighten out all those crooked 
~ teeth. But you just couldn't see 
spending eight hours a day with your hands 
in someone else's mouth. So here you are 
driving a truck for the highway department. 
Cutting weeds in the summer and filling 
potholes in the spring. Not to mention burn- 
ing tons of leaves in the fall. Oh! Then there's 
winter and all that snow to plow. 

Speaking of which, we just had a snow- four directions using a joystick in port 1. 

fall and another storm is on the way. And No! You cannot go off the road— see the 

it looks like a big one. Your regular truck cenlerline markers? Follow them until the 

won't do the job. For this one you need roads are comjjletely clear of snow. If you 

a bulldozer. Here we go again. Put on accomplish this task there will probably 

your gloves, get your snow goggles, and be another snowfall to test your driving 

grab a thermos of coffee (so you'll be able skills. 

to stay awake for 24 hours straight). Now While you're pushing snowflakes 

get out there and clean up those flakes! around, storms will occasionally cross 

Wait a second— make sure you keep your path. If your dozer touches one, it 

luned to the weather station for the latest will undoubtedly get die.sel-line freeze and 



weather bulletins 



Starting your dozer 



crash. You'll need a new one then. As time 
goes on the storms get more frequent and 
faster, so beware. Most of the streets are 



Type in LISTING 1 using the M/L Edi- free of vehicles, but there are always some 
tor found elsewhere in this issue. To load crazy people who venture out and risk 
the game, use the L option from the DOS 



If you wish to forgo watching the fall- 
ing snow on the introduction screen (will 
you please watch at least once? After all, 
we did spend some time trying to create 
this special effect), press any key After 
watching the scrolling weather message, 
press the SIART key to begin plowing. 
You may direct the dozer in any of the 



Put Oil your gloves, get your snow 

goggles, and grab a thermos of 

coffee- now get out there and 

clean up those flakes! 



their lives. Fortunately, a bell sound warns 
you that they are on the road. If you hit 
one, you score a lOO-point bonus. These 
people will honk their horns at you, but 
I'd just ignore them and keep going. .\nd 
don't forget to keep your gas tank full. 
Remember the Knight-Rider and KIT? 
Me neither. But KIT had turbo lioosi. And 



can jump to the edge of the screen (as- 
suming there's a road tfiere; you wouldn't 
want to jump into a tree, would you?). If 
you need to clean off your windshield or 
take a sip of coffee during plowing, just 
hit any key to pause. Press a key again to 
continue. Well, what are you waiting for? 
Get going! 

Technical Notes and Otiier Stuff 

Snawplow uses the four color Antic mode 
5. Antic 4 would give better resolution but 
would have taken much more memory. 
An entire screen takes 2,'5b() bytes — 
roughly 2.5K or about V^ of the entire 
program. In Snmuplmu we ha\e an entire 
screen, but it takes only l/tith of the pro- 
gram because it is compacted. We used 
a compacter similar to the one in BHK Ar- 
tist (See issue ' 

The falling letters on the intro screen 
are each composed of foin- defined 
graphic zero characters. Of course, there's 
also a complete character set in llie D.AIA. 

If you get tired of playing the same 
gameboard over and tncr, relief is in 
sight— a gameboard editor! That's why, 
when you're playing the game, the disk is 
being accessed. It's looking for flies 
named SMAP.??? where ??? can be any- 
thing that's legal. It will load those files 
in the order they appear on the disk. As 
you clear each board, the storm apjjears 
on screen more often and moves faster 
until the (kh board. So leave your drive 
on while playing Siwwplow. Next month, 
when we present the Smnvplmu Edi lor. 
you'll be able to design your own screens. 
Kxcusc me a minute, I think I have to 
shovel the sidewalk. . .. 

continued on page 56 



SEPTEMBER 1988 ' A.N.A.L.O.G. COMPUTING 



-*?* 


WSVgmWA^ 




v^^^H HIHH^^^m^^^K ^I^^^^^^^H 


L 



Barry Kolbe and Bryan Schappel 



SNDMPLDM 




^f^ 



# 





m-- * 






...1.. 


,„ 


^ 


Jfl.. M, ^, J* 




.t^j' :: 


ISfe 


1^ 






11 




- " 


1 a»=a 


a 


B 


1 aACi 




'•'iMii 






SNOiTPT.nir 












: * 






M ■ .^ 




ui 




i* 




PH5I«-«3Si 


■J 




: 


a '■ 

'•'igf' 


<( 




1 


ii 




: 


-.• 


• -■-•■■■-'-*• 




p: 






'□fife'^EB 





^.J^^-^g^.^ 



A.N.A.L.O.G.COMPUTING'SEPTEMBER 




SEPTEMBER 1 988 • A.N, A.L.O.G, COMPUTING 



by James J. Greco 



andlebrot 



n August of 1985 I received my 
issue of Scientific American. In- 
side it, in the "Computer Recre- 
ations" column by A.K. Dewdney, I found 
some fascinating computer-generated graph- 
ics, and the instructions for generating them. 
They were images of something called the 
Mandelbrot Set. 

A brief look at the formula and method Complex numbers are numbers that in- 

for generating these images told me that volve the square root of - 1. The square 

it was intended for a computer very un- root of - 1 is represented by the letter i, 

like mine (an Atari 800 XL), a very expen- for imaginary. If? is the square root of - 1, 

sive one. then' i squared must be - 1, a real num- 

In January of 1986 I received my issue ber again. A complex number is a com- 
of ANALOG Computing. To my surprise bination of the regular numbers we use 
it contained a program for generating the every day (real numbers) and imaginary 
Mandelbrot Set. There was hope my lit- numbers. This combination is the addi- 
tle Atari could produce these images af- tion of the two. Therefore 2 + 3i is a com- 
ter all! Hope was lost when I realized that plex number, as is .OO-^Sl -i-213i. As a 
the program was written for the 520ST. At sideline, even the real numbers are con- 
that point I decided I was going to gener- sidered complex, as they can be expressed 
ate some of those images with a program as a real number plus Oi. 



I was going to have to write myself 



Addition of complex numbers is easy. 



I went back to the Scientific American to All that needs to be done is to add the 

find out exactly what the Mandelbrot Set individual like parts (add the real parts 

was. If it were not for Mr. Dewdney's ex- together, then add the imaginary parts 

cellent article, I am sure I would not have together), for example: (2 -f 3i) -f (4 -)- 

ever found out. What follows is my at- 7i) = 6-l-10i. 



tempt at explaining how they are 
generated. 



As I mentioned above, the Mandelbrot 
Set is generated by the repeated squaring 



The Mandelbrot Set is based on the of complex numbers. An example will 
epeated squaring of complex numbers, probably best serve to demonstrate the 



FOR THE 8-BIT USER 

squaring of complex numbers. To square 
2 H- 3i we expand it to (2 + 3i)*(2 + 3i). Mul- 
tiplying this out we get: 4 -1- 6i -t- 6i -I- Qi'', 
collecting like terms we get 4-1- 12i -l-9i^. 
As I mentioned before i squared is -1. 
This means that 9i^ = - 9, a real number 
again. Substituting -9 into the above 
complex number and collecting all the 
real parts we get: -5H-12i. 

Pairs of numbers can be plotted on a 
plane — this plane has two axes, a horizon- 
tal one and a vertical one. Complex num- 
bers can also be plotted on a plane, called 
the complex plane. The complex plane 
has a real (horizontal) and an imaginary 
(vertical) axis. 

The Mandelbrot Set is plotted on this 
complex plane. It seems that if certain 
complex numbers are continually 
squared, they will never exceed the size 
of two. The size of a complex number is 
the distance of that complex number 
from the origin. The origin is at (Opi). The 
distance can be calculated by use of the 
Pythagorean theorem. If we take the sum 
of the squares of the sides, then take the 
square root of that, we will arrive at the 
size of that complex number. The num- 
bers that never exceed the size of two are 
what make up the Mandelbrot Set. Most 
of the numbers in the complex plane 
quickly exceed the size of two, soon after 
the squaring process begins. These are 
the numbers that give the Mandelbrot Set 
its colors. The numbers that lie in the 
Mandelbrot Set are plotted black. The 
other numbers are plotted with a color 
representative of the number of times the 
squaring process is repeated before the 
size exceeds two. 

Finding and plotting these numbers is 



I.G.COMPUTING'SEPTEMBER 




After selecting the desired 

graphics mode, you will be 

astied for the coordinates, size 

and iteration limit for the 

picture you wish to create. The 

coordinates and size can be 

determined from a map of the 

set or, as will be discussed 

shortly, from the program itself. 



the task of this program. The monitor 
screen is going to represent the complex 
plane, with each pixel on the screen cor- 
responding to an individual complex 
number. The value of the pixel is deter- 
mined by two factors: 1) the center of the 
area that you wish to view (specified by 
a real and an imaginary number), and 2) 
the size of the area you desire to view. The 
latter can be likened to magnification. Af 
ter these parameters are entered, the pro- 
gram calculates the complex values of 
each pixel. This is clone in such a man- 
ner that the center of the screen 
represents the center specified by the en- 
try of the real and the imaginary values 
entered. The size determines the range of 
values to either side (and top to bottom) 
of the center Each pixel value is then 
processed in a manner, soon described, 
that calculates whether that value lies in 
the Mandelbrot Set (plotted black) or if 
that value should be plotted with a color. 
The function that determines where 
this value lies is: V <-Z-i-u where Z and 
u are both complex numbers that can be 
represented as follows: Z = ar-fai, 
u = br + bi, where r indicates real and i in- 
dicates imaginary. The values hr and hi are 
the value of the pixel, the values ar and 
ai are initially set to zero. The arrow in 
T?- -"-Z + u indicates that the values Z and 
u are added, then squared. If the restilt 
of this squaring is less than two, the resul- 
tant real value is then put into ar. The 
resultant imaginary value is then put into 
ai and the constant values (for the pixel) 
of hr and bi are then added to the new 
values of ar and ai, then squared again. 
This process continues until the size of 
T? exceeds two or until we can safely as- 
sume that the value will never exceed two. 

20 



This repeated performing of the same 
function is referred to as iteration. At the 
beginning of the program, you will be 
asked for the iteration limit. This is what 
determines the number of times the func- 
tion will be implemented before it is as- 
sumed that a point lies in the Mandelbrot 
Set (assuming that the size does not fust 
exceed two). 

If the size does exceed two, the number 
of times it took to do so is used to deter- 
mine the color that the pixel will be plot- 
ted with. The entire process is repeated 
for every pixel on the screen. If the area 
you want to look at lies entirely in the 
Mandelbrot Set (a very boring picture), 
and you choose 100 as the iteration limit 
in high-resolution mode, it would take 
160*170*100 (2,720,000) calculations to 
complete the picture. This is why it takes 
more than a little time for this program 
to run. 

About the program 

When you first run the program, you 
will be asked if you want to save a screen, 
view a screen, complete a saved screen, 
see directory (disk version) or none of the 
above. If you're going to want to save the 
picture you're going to create, then select 
the save option. Selecting the view option 
allows you to view a screen that you have 
already saved. If, after you have started to 
create a screen that you are planning to 
save, you decide you want to turn off the 
computer, you can save a partial picture 
by pressing the HELP key. When this key 
is pressed, the computer dumps the cur- 
rent values and the portion of the screen 
that is completed to the I/O device (as 
soon as the line it is working on is com- 
pleted). To complete the screen at a later 



time, choose the complete saved screen 
option from the menu. Simply pressing 
RETURN will allow you to create a pic- 
ture, but it can not be saved. If you select 
the save option, you'll be prompted to in- 
sert your disk or cassette at this time. If 
you're using a cassette recorder, it will 
have to remain on until the screen is com- 
plete. Disk-drive users may remove their 
disk and turn off the drive; just turn on 
the drive and insert the disk when the 
screen is complete. After selecting the 
desired graphics mode, you will be asked 
for the coordinates, size and, iteration 
limit for the picttire you wish to create. 
The coordinates and size can be deter- 
mined from a map of the set or, as will 
be discussed shortly, from the progi~am it- 
self A good iteration limit seems to me 
to be about 100; the higher the number 
you choose the longer the set will take to 
calculate, however, it will be more detailed 
and accurate. 

After the set has been calculated, or 
retrieved from disk or cassette, a double 
cursor will appear. This cursor can be 
moved around by use of the arrow keys. 
Finer movement can be obtained by hold- 
ing down the control key and the desired 
arrow key. After the cursor has been 
moved to a position of interest, holding 
down the RETURN key will return the 
screen to graphics 0, and will display the 
coordinates and sizes of the cursor's two 
squares. Following the prompts another 
set can be calculated in the same manner 
as the first. For an overall look at the Man- 
delbrot Set, enter the follwing: real - .75, 
imaginary and a size of 3; the whole set 
will be plotted. This can be your map; just 
move the cursor to the area you desire to 
look at closer and press RETURN. 



SEPTEMBER 1 988 • A, N. A. L.O.G, COMPUTING 



Entering the program: 

For disk users simply type in the pro- 
gram as listed. Cassette users make the fol- 
lowing changes. 

Change Line 60 to read: 

60 IF LOR=i THEM FF=8:DQ$="C 
:";G0TO 560 

Change Line 150 to read: 

150 PRINT " TO COMPLETE SftUE 
D SCREEN PRESS C" 

Change Line 220 to read: 

220 DCS="C" 



DOS="C:" 

Delete the following lines: 200, 240, 250, 
1275, 1290, 1300, 1340, 1350, 1360, 1370, 
1380, 1390, 1400. 

Add the following lines: 

230 IF FF=4 THEN PRINT : PRINT 

"CUE CASSETTE, PRESS PLOY, 
THEN RETURN"; :INPUT B$:GOTO 
288 

280 MftMES="C:":IF FF=8 THEN 
PRINT "CUE TAPE, PRESS RECOR 
D AND PLAY, THEN RETURN"; :IN 
PUT B$ 

285 IF L0R=1 THEN ? "WHEN CA 
SSETTE STOPS LOADING SCREEN, 
REPOSITION TAPE, PRESS RE 
CORD AND PLAY" 

287 IF LOR=i THEN ? "PRESS R 
ETURN MHEN READY"; : INPUT B$ 



Change the last statement of Line 100 A word of warning to cassette users — this 
to read: program can be very frustrating. It takes 



a long time to save and load the screens, 
and you will often have errors trying to 
load a screen that will make hours of com- 
puting time worthless. 

Some Final Words 

The Mandelbrot Set has some proper- 
ties that seem to me (a person with a 
limited math background) to be very un- 
usual. It is infinitely complex; that is, no 
matter how high a magnification (small 
a size) one chooses, the Set remains just 
as complex as it is at lower magnification 
levels. This means that it has an infinite 
perimeter, yet it encloses a finite area. The 
set is also self similar; that is, at specific 
locations and levels of magnification, you 
will see shapes that are similar to, but not 
exactly like, shapes seen at other magnifi- 
cations and locations. 



LISTING I: BASIC 



OK 
MY 
XC 
OY 
GH 
OV 
KG 



1 REM ICKKKKKKKKKKKIIKKKKICKKXKKXKICKKK 

2 REM » 8-BIT MANDELBROT » 

3 REM » BY » 

4 REM « JAMES J. GRECO « 

5 REM » » 

6 REM » COPYRIGHT 1988 * 

7 REM « BY » 
GU 8 REM * ANALOG COMPUTING » 
QS 9 REM KKKMKKKKXKKKKXKKXXKKXKXKKKKKK 
LO 18 GOTO 108 

UU 26 C=C+l!X=I«I-J»J+U:U=2*I»J+Z:IF C<IL 
AND K*X+U»U<4 THEN J=U:I=X:GOTO 20 

HE 38 TtGJ=PtCJ ;c=8:l=fl:J=0:lF gOy then 

G=G+l:U=QCGl :G0T0 20 
FN 48 FOR G=0 TO YiCOLOR T (G) : PLOT G,K:NE 

XT G : G=0 ! K=K+1 : V=Q (Gl : Z=R CKJ : IF PEEK t7 

32} =17 THEN POKE 732, 8: GOTO 560 
UQ 50 IF KOF THEN 28 
BL 60 IF L0R=1 THEN FF=8 : DQS="D : " : DQ$ (LEN 

CDQ$]+1}=NAME$:G0T0 560 
YE 70 GOTO 568: REM LINE 20 CALCULATES COM 

PLEX SQUARE OPERATION, COUNTS NUMBER 

F ITERATIONS AND, DETERMINES SIZE 
DQ 80 REM LINE 38 ASSIGNES COLOR TO PIXEL 

, STORES COLOR, ZEROS VARIABLES AND, I 

NCREMENTS COLUMN NUMBER 
UN 96 REN LINE 48 PLOTS COLORS MHEN MAX N 

UMBER OF COLUMNS IS REACHED AND, INCRE 

MENTS ROM NUMBER 
CX 168 DIM DQ$C12),Z$C18},GR$(2),NAME$tl5 

},SM$C181,DC$Cie),B$C10I :FOR A=1536 TO 
1542:READ B:POKE A,B:NEXT A:DQ$="D:" 
AH 110 DIM R$(2ei,X$(2e) 
PL 128 DIM NEXTSC10) SPRINT "H": PRINT :PRI 

NT " MANDELBROT SET GENERATOR" : PR 

INT :PRINT STRAP 1278:REM BY JAMES GRE 
YH 130 DIM QC2ee),RC2e81,TC2e8},PC2eei,RC 

$(28) ,ic$c2e) ,s$cie} ,ii$cie] :rc$="real 

CENTER ":ICS="IMAGINARY CENTER " 
DE 148 DIM TH$C4J :THS="THE ":SS="SIZE ":I 

IS="ENTER " 
KZ 158 PRINT "TO COMPLETE A SAVED SCREEN 

PRESS H" SPRINT SPRINT "TO SEE DIRECTOR 

Y PRESS 0" 
UH 160 PRINT SPRINT "TO SAVE SCREEN PRESS 
B" SPRINT SPRINT "TO UIEM SAVED SCREEN 
PRESS CQ" SPRINT 
SJ 178 ? "FOR NONE OF THE ABOVE PRESS RET 

URN"S? S? "ENTER SCREEN MODE"; S INPUT S 

M$SIF SMS="S" THEN FF=8sG0T0 220 
WB 180 IF SMS="V" THEN FF=4:G0T0 220 
ZU 190 IF SM$="C" THEN L0R=1 S SMS="V" 5 FF=4 

SGOTO 228 



CD 288 IF 5MS="D" THEN GOTO 1358 

FQ 218 FF=0 SGOTO 308 

GY 228 PRINT SPRINT "INSERT DISK, PRESS R 

ETURN MHEN READY"; S INPUT B$ 
SM 248 DC$="D:"S? "ENTER NAME"; S INPUT NAM 

ESsIF SMS="S" THEM 1358 
BO 250 IF SM$r"S" OR SMS="V" THEM DQ$CLEN 

(DQ$}+1I=NAME$ 
TV 290 IF SMS="V" THEN GOTO 610 
OB 300 PRINT SPRINT "FOR HIGH RESOLUTION 

GRAPHICS PRESS ffl" 
VO 310 PRINT SPRINT "FOR MEDIUM RESOLUTIO 

M GRAPHICS PRESS d" 
CU 320 PRINT "FOR LOM RESOLUTION GRAPHICS 

PRESS H" 
GL 330 PRINT SPRINT "FOR VERY LOM RESOLUT 

ION PRESS H" 
ST 340 PRINT SPRINT SPRINT "MAKE GRAPHICS 
SELECTION"; S INPUT GR$:IF ZS="0" OR B$ 

="I" THEN GOTO 388 
KL 358 PRINT SPRINT ; 11$; ; RC$; ; sINPUT E 
RH 368 PRINT ; 11$; ; IC$; ; s INPUT H 
UL 378 PRINT ; 11$; ; SS; ; s INPUT SsIF S<=0 T 

HEN PRINT "SIZE MUST BE POSITIVE" S GOTO 
370 
RP 380 PRINT "ENTER ITERATION LIMIT"; SINP 

UT IL 
XP 381 PRINT SIF IL<18 THEN PRINT "ITERAT 

ION LIMIT MUST BE TEN OR GREATER" S GOTO 
388 
SV 398 REM LINES 418-450 ASSIGN SPECIC VA 

LUES TO BE USED IN CALCULATIONS DEPEND 

IMG UPON GRARHICS MODE 
KT 400 PRINT "PLEASE MAIT, INITIALIZING V 

ARIABLES" 
JY 418 IF GR$="L" OR GR=21 THEN L=88sD=l. 

54 S Y=79 S H=3 S F=48 S GR=21 S L0=158 S HI=4 S GOT 

458 
CF 428 IF GR$="V" OR GR=19 THEN L=48 S D=l . 

54 S Y=39 S M=3 S F=24 S GR=19 S L0=168 S HI=1 S GOT 

458 
EJ 430 IF GR$="H" OR GR=31 THEN L=16esD=8 

. 77 S Y = 159 S M=3 S F=178 S GR=:31 S L0=2e2 S HI=31 

SGOTO 458 
NG 448 F=178SL=88SD=8.385SY=79SH=15SGR=11 

sL0=2e2sHI=31 
FC 458 A=S/LsM=E-S/2sN=H+S/2.6 
LN 468 REM LINE 478 CALCULATES COLUMN AND 
ROM VALUES FOR COORDS AMD SIZE SELECT 

ED IT THEN STORES THEM IN ARRAYS 
EU 470 FOR G=8 TO Y : Q CG] =M+G«A S NEXT G S FOR 

K=8 TO FsRtKJ=N-K»A«DsNEXT K3C=8 
OF 488 REM LINES 498-548 ASSIGN COLOR VAL 

UES FOR SPECIFIC COUNTS 
ME 490 C=C+1SB=1SV0=CSIF C=IL THEM 530 
CF 500 V0=V0-1SIF V0<=1 THEN P CCJ =B S GOTO 

490 
YP 510 IF B=M THEM B=8 



A.N.Al.O.G, COMPUTING 'SEPTEMBER 1988 



OD 520 B=B+l:GOTO 580 

EG 530 IF L0R=1 THEN P CC1=0 : G=e : K=K1 : U=Q ( 

G) : Z=R CK} : C=e : 1=0 : J=o : GOTO 20 
EK 540 P CC} =0 : G=e : K=0 : C=0 : V=Q CG) : Z=R (Kl : G 

RAPHIC5 GR:GOTO 20 
PZ 550 REM LINES 560-630 ARE I/O ROUTINES 

RUN 
MN 560 IF FF=0 THEN 680 
KB 570 CLOSE ttllPOKE 764,12:0PEN ttl,8,0,l> 

Q$:PUT ttl,GR:PRINT ttl,E:PRINT ttl,H:PRI 

NT ttl,S:PUT ttl,IL 
FB 580 PUT ttl,HI:PUT tti,LO:PUT }tl,G:PUT U 

QU 590 POKE 764,12:P0KE 852, PEEK C88) : POKE 
853,PEEKC89) iPOKE 856,L0:P0KE 857, HI: 

POKE 850,FF+3:a=USR(1536,161 :CLOSE ttl 
QT 600 GOTO 680 
JO 610 CLOSE ttl:POKE 764,12:0PEN ttl,4,0,D 

Q$:GET ttl,GR:INPUT ttl,E:INPUT ttl,H:INP 

UT ttl, S: GET ttl, IL: GET ttl, HI 
QZ 620 GET ttl, LO: GET ttl, Gl: GET ttl,Kl:GRAP 

HICS GR:SETCOLOR 4,0,2 
OK 630 POKE 764,12:P0KE 852, PEEK (88) : POKE 
853,PEEKC89) :POKE 856,LD:P0KE 857, HI: 

POKE 850,FF+3:A=USRC1536,16) :CLOSE ttl 
RF 640 IF L0R=1 THEN GOTO 410 
RD 650 GOTO 680 

JT 670 DATA 104,104,104,170,76,86,228 
MG 680 SOUND 0,0,0,0 

AL 690 POKE 53774, 247 : REN STARTS PM 
H5 700 DATA 255, 129,129,129,129,129,129, 

129,189,165,165,165,165,165,165,165,16 

5,165,165,165 
ZC 710 DATA 165,165,165,189,129,129,129,1 

29,129,129,129,129,129,255 
JO 720 DATA 104,160,1,177,203,136,145,203 

, 196, 205 , 200, 200, 144, 245, 198, 203, 96, 10 

4,164,205,177 
PU 730 DATA 203,200,145,203,136,136,16,24 

7,230,203,96 
ZU 740 A=PEEKC1061-48:P0KE 106,A:P0KE 542 

79,A:ST=256»A:P0KE 559, 62: POKE 53277,3 

:POKE 53256,3 
HU 750 FOR I=ST+1024 TO ST+1280 : POKE 1,0; 

NEXT I:P5T=ST+1025:P0KE 204, INT fPST/25 

6) :POKE 203,PST-(PEEKC204)»256)-1 
IC 760 POKE 285,34:REST0RE 70e:F0R I=PST 

TO PST+33:READ A: POKE I, A: NEXT I: FOR I 

=1550 TO 1581:READ J:POKE I,J:NEXT I 
PL 770 FOR Z=l TO 30:G0SUB 890 : NEXT Z : 1=3 

8:P0KE 764,7:VR=5 
UI 780 CU=PEEK(764} :REN LINES 780-930 ARE 
FOR CURSOR MOVEMENT 930, IS END OF P 

M 
TD 790 IF CU=7 THEN 1=1+10: POKE 53248,1:1 

F I>=240 THEN 1=10 
IS 800 IF CU=135 THEN I=I+1:P0KE 53248,1: 

IF I>=240 THEN 1=10 
FL 810 IF CU=6 THEN I=I-10:POKE 53248,1:1 

F I<=10 THEN 1=200 
GP 828 IF CU=134 THEN 1=1-1: POKE 53248,1: 

IF I<=10 THEN 1=200 
HP 830 IF CU=14 THEN FOR GG=1 TO 20:G0SUB 

910:NEXT GG 
KH 840 IF CU=142 THEN GOSUB 910 
YH 850 IF CU=15 THEN FOR GG=1 TO 20: GOSUB 

890: NEXT GG 
5G 860 IF CU=143 THEN GOSUB 890 
CC 870 IF CU=12 THEN POKE 559,0: GOTO 930 
YO 880 POKE 764,32:G0T0 780 
HQ 890 IF UR>=180 THEN RETURN 
NN 900 VR=UR-M:A=USRC1567} ;P0KE 704, 200 :R 

ETURN 
BL 910 IF VR<=-20 THEN RETURN 
IB 920 VR=VR-1:A=USRC1550I :POKE 704, 280 :R 

ETURN 
YV 930 POKE 53248,0: POKE 106, PEEK C106) +48 

:REM FOLLOWING LINES DET. COORDS AND S 

TARTING OF ANOTHER SET 
KE 940 IF GR=11 THEN G=INT (I/2J -16 : K=VR+1 

2:JJ=l:D=0.385:L=80 
UK 950 IF GR=19 THEN G=INT 1 1 (I/2J -16) ^2) : 

K=INT ( (VR/4+2) /2) : J J=0 . 42 : D=l . 54 : L=40 
GD 968 IF GR=21 THEN G=INT CI/2) -16 : K=UR/4 

+2:JJ=l:D=l.54:L=8e 

EO 970 IF GR=31 THEN G=2»CINT tI/2)-22) +12 

: K=UR+12 : J J=2 : D=0 . 77 ; L=160 
FM 980 A=S/L:M=E-S/2:M=H+S/2.6 
HT 990 E=M+G»A:H=N-K»AKD 



MO 1000 PRINT "If": PRINT "THE QEAL CENTER 

OF THE CURSER IS ";E 
HE 1010 PRINT : PRINT "THE QNAGINARY CENTE 

R IS ";H 
lY 1020 PRINT : PRINT "THE SIZE OF THE QNN 

ER CURSOR IS "; :SI=5KA»JJ: PRINT SI 
YO 1030 PRINT : PRINT "THE SIZE OF THE QUT 

ER CURSOR IS "; :S0=12»A»JJ: PRINT SO 
RM 1040 PRINT : PRINT "DO YOU MANT TO CREA 

TE A NEM SET Y OR N";:POKE 764,28:INPU 

T ZS 
RK 1050 IF ZS="Y" THEN GOTO 1150 
PR 1060 GOTO 1230 
AL 1070 PRINT "MHICH PARAMETER CS) DO YOU 

MISH TO CHANGE Q, Q, B": INPUT Z$ 
JU 1080 IF ZS="R" THEN PRINT ; 11$; ; RC$; ; : 

INPUT E:GOTO 1120 
ZF 1090 IF ZS="I" THEN PRINT jllS;;IcS;;: 

INPUT H:GOTO 1120 
GG 1100 IF Z$="S" THEN PRINT ;IIS;;S$;;:I 

NPUT S:IF S<=0 THEN PRINT "SIZE MUST B 

E GREATER THAN ZER0":G0TO 1100 
OF 1110 GOTO 1120 
AN 1120 PRINT ;TH$:;RC$;;E; :PRINT :PRINT 

SPRINT ;TH$;;IC$;;H; :PRINT :PRINT :PRI 

NT ;TH$;SSj;Sj 
IS 1121 PRINT : PRINT : PRINT "DO YOU MISH 

TO CHANGE ANY MORE Y OR N";: INPUT B$ 
KB 1130 IF BS="Y" THEN GOTO 1070 
ON 1140 GOTO 1210 
FK 1150 PRINT : PRINT : PRINT "SELECT SIZE 

value:":print 
oe 1168 print "inner cursors size ualue": 
print :print "outer cursors size ualue 

II 

FC 1161 PRINT : PRINT "YOUR OMN BlZE":PRIN 

T : PRINT : PRINT "SELECT I, OR S"; 
UB 1170 INPUT BS:IF BS="S" THEN Z$="S":GO 

TO 1100 
KC 1180 IF B$="0" THEN S=SO : GOTO 1120 
BR 1190 IF BS="I" THEN S=SI:GOTO 1120 
NE 1200 GOTO 1100 
EK 1210 Z$="0": PRINT "TO SAUE SCREEN PRES 

S S OTHERWISE RETURN" : INPUT SM$:I 

F SM$="5" THEN FF=8;G0T0 220 
TT 1220 FF=0:BS="O": GRAPHICS 11 : GOTO 300 
R5 1230 PRINT : PRINT "DO YOU WANT TO EUIT 

,_S0 BACK TO SELECTED VALUES, OR 
START A NEW SET 0, G, OR S"; 
OP 1231 INPUT Z$ 
UQ 1240 IF Z$="Q" THEN END 
EE 1250 IF Z$="5" THEN CLR : GOTO 10 
NK 1260 GOTO lOOO 
KC 1265 REM LINES 1270-1330 ARE ERROR HAN 

DLING/DETECTING ROUTINES 
ND 1270 LINERR=PEEK(187)»256+PEEKC186) :ER 

R=PEEKC195} :TRAP 40000: TRAP 1270 
KM 1275 IF ERR=165 THEN ? "BAD FILE NAME, 

TRY AGAIN":P0KE 764,28:G0T0 240 
DX 1288 IF ERR=139 OR ERR=140 OR ERR=142 

OR ERR=143 OR ERR=163 OR ERR=136 THEN 

PRINT "I/O ERR0R":END 

sm 1285 if err=138 or err=144 then goto l 

inerr 
ex 1290 if err=145 or err=160 then print 

"DISK ERROR": END 
QH 1300 IF ERR=i70 THEN PRINT "FILE NOT 

N DISK, TRY AGAIN":POKE 764, 28 : DQ$="D : 

":G0T0 240 
MD 1310 IF ERR=8 THEN FOR AA=1 TO 50:SOUN 

D 0,100, 10, 15:NEXT AA 
EQ 1320 SOUND 0, 0, 0, : PRINT :PRINT "MWK* 

»REENTER»»BHHH(": PRINT :GOTO LINERR 
KV 1330 PRINT "ERROR NUMBER ";ERR;" AT LI 

NE "' LINERR *: END 
MU 1340'rEM lines 1350-1400 ARE USED WITH 

I/O ROUTINES ABOVE 
PK 1350 CLOSE tt4:0PEN »4, 6, 0, "D ;».*" : IF S 

M$<>"S" THEN GOTO 1390 
HH 1360 INPUT tt4,R$:TRAP 1480 : X$=R$ (3, LEN 

CNAME$)+2) :IF X$<>NAMES THEN IF R$(10, 

16)<>"SECT0RS" THEN GOTO 1360 
RB 1370 IF X$=NAME$ THEN PRINT "NAME ALRE 

ADY USED ON DISK, TRY AGAIN" : TRAP 4008 

0:TRAP 1270: GOTO 240 
TG 1380 TRAP 40000: TRAP 1270 : GOTO 250 
OF 1390 INPUT tt4,R$;TRAP 14e0:PRINT R$:IF 

RS(10,16)<>"SECTORS" THEN 1390 
OE 1400 CLOSE tt4 fl 



22 



SEPTEMBER 1 988 ' A,N. A, L.O.G, COMPUTING 




A 



by John Pilge 



Joytype is a replacement for the typewriter 
and is not a word processor. It is designed 
for people who cannot use a typewriter 
because of limited movement caused J)y 
stroke, cerebral palsy or injury. While plu 
may not have a need to use it yourself, you 
may want to type it in for a friend or charity. 



You can also use some of the routines 
for later programs of your own (directo- 
ry, printing, scrolling, etc.). 

The first step is to get a joystick the han- 
dicapped can use. Many prefer joysticks 
by Wico. 

Instructions 

The first menu lets you choose the 
drive on which you will store files. Should 
you change your mind after making this 
selection, you return to this menu when 
you choose to erase a letter from the op- 
tion menu. 

Typing is simple. Move the joystick (or 
trackball) to the letter of choice. Select the 
letter for printing by pressing the firebut- 
ton. Each space between the letters on the 
header can be used as a space (just like 
pressing the spacebar on a typewriter.) 

Special functions are on the bottom 
right of the header. Selecting either D or 
L is delete. C or /i is a carriage return. E 
is an escape character. Q P or T changes 
the screen to the option menu. The tri- 
angle is a backspace. Backspace would 
usually be used for forming special 
characters (using "c" and "/" to make a 
cents marker) or underlining (if you don't 
know the escape commands for your 
printer). 

The option menu has functions to save 

a file, delete a file, load a file, print, type 

(returns you to the typing screen), erase 

the current letter and format a disk. 

-;.. To avoid mistakes, "FORMAT" doesn't 



work. If the person who uses the progi"ani 
has enough control and confidence to 
risk using FORMAT, merely delete Line 
810 of the program, and FORMAT will 
work. 

The first command of the Option 
menu is "O.NOTHING." This is to prevent 
an accident in case the user still has the 
firebutton pressed at the time the screen 
is displayed. 

While directory will show all the files 
on disk, you cannot access any files with 
an extension (or any filename with a peri- 
od). This is to prevent accidental deletion 
or loading of the DOS.SYS program or 
the JOYTYPE.BAS program (and the AU- 
TO RUN.SYS, if you have the program au- 
toloaded). 

To select files for loading, savings, etc., 
a menu appears with the alphabet (upper- 
case only), a space on either side of the 
alphabet, an M to return to the Option 
menu and a DL to delete errors. 

Files can have up to eight letters in the 
filename. If a filename has less than eight 
letters, use spaces to make eight charac- 
ters. A filename cannot start with a space. 
After eight characters have been selected, 
the file is acted on in accordance with 
your choice. 

Once the user has worked with the pro- 
gram, it may seem to be too slow. Line 
1820 has the variable DIAY that controls 
the speed of some movements. You can 
change that number to as low as one or 
as high (slow) as needed. 



.N.A.L.O.C. COHPUTING'SEPTEHBER Ifli 



The left margin for printing is set on 
Line 1820 as the variable MRG$. You can 
set this in accordance to the needs of your 
printer. The printer line length is set by 
PLL on Line 1820. 

Joytype files can be checked with most 
spelling checker programs and can be 
read by most other word processors. 
There is a difference between return mar- 
kers, but not text. 

Who gets the program 

Just because you spent all night typing 
the program doesn't mean everyone will 
want it. You needed patience to type in 
the program, and you are going to need 
more patience finding someone to use it. 

You will find a lot of charities unable 
to use the program or willing to make it 
available to people who need it. 

Some charities are only able to deal 
with donations of money. Some only han- 
dle specific needs (such as raising money). 
Some can only accept programs on Ap- 
ple or IBM no matter how inexpensive an 
Atari costs. You will learn a lot about the 
handicapped services of your communi- 
ty by trying to pass along this progi-am. 
I have a letter from one local "charity" 
that doesn't want the progi^am unless it 
is protected, and they can sell it. 

But at least you can make it known that 
the programs exists and is available to 
work on a sturdy and inexpensive Atari. 

You might be called on to modify the 
program. Larger characters on the screen 
is a popular request. There is an easier 
fix than to rewrite the program. The 
characters get larger as die TV screen gets 
larger. 

if more than one letter appears as the 
fire button is pressed, try another joystick. 
Some joysticks have a rapid-fire ability 
that speeds up the response of the but- 
ton. You could also move the button com- 
mands (STRIG) after the DLAY loops or 
make the DLAY value a higher number , 
(slower). For any additions larger than 4K / 
you may have to shorten the string length 
of LINE$, or you rim out of memory 

I would like to thank Jimmy Montoya, 
Jr. (know locally as the "Wizard of OS" ) 
for his suggestions, and the Cabrillo Col- 
lege Stroke Center for their en- 
couragement. 

John f^f'is your typical, fun-loving Atari 
compute)- owne)- who gets a thrill finding neiu 
uses for the Atari. He is knoiun in Santa Cruz 
County as J. P. or Bladerunner 

23 





LISTING 1: BASIC 

QJ REM KKKKKKKKKKKKKKMKKMKKKKKKXKXXK 
UL 1 REM » JOYTYPE » 

CL 2 REM » BY JOHN PILGE » 
GK 3 REM » » 

ZZ 4 REM « PUBLISHED IN ANALOG * 
SU 5 REM » COMPUTING, 5EPT . 88 » 
OP 6 REM KKKKMKXKKKKKKKMKKKKKKKMKMKKKK 
GT 10 POKE 566,PEEK(5661+12 
ftp 20 REM LINE 1820 HAS DELAY, MARGIN AND 

PRINTER LINE LENGTH VARIABLES. 
GL 40 REM POKES: 77 IS ATTRACT MODE, 84-85 

IS CURSOR POSITION, 88-89 15 SCREEN MEM 

ORY 
RS 50 TRAP 1930: GOTO 1800 

KG 60 X=129:SCREEN=PEEKC88)+PEEKt89J»256 
SA 78 FOR 1=2 TO 38 STEP 2:P0KE SCREEH+I, 

H:POKE SCREEN* tI+13, 128 :X=K+1:NEKT I 
NR 80 FOR 1=42 TO 65 STEP 2:P0KE SCREEN+I 

,X:POKE SCREEN+tl+lJ ,128:X=K+l:NEKT I 
UG 90 X=X+l:FOR 1=66 TO 79 STEP 2:P0KE 50 

REEN+I,X:POKE SCREEN+tl+lJ ,128:X=X+l!N 

EXT I 
LL 100 FOR 1=82 TO 119 STEP 2: POKE SCREEN 

+1, X ! POKE SCREEN+ tl+lJ , 128 : X=X+1 : NEXT 

I 
lU 110 X=187:F0R 1=122 TO 128 STEP 2: POKE 
5CREEN+I,X:P0KE SCREEN+I+1, 128 : X=X+1 : 

NEXT I 
FJ 120 POKE SCREEN+13a, 191: POKE SCREEN+13 

1,128 
PI 130 X=225:F0R 1=132 TO 158 STEP 2 : POKE 
SCREEN+I, X ! POKE SCREEN* II+IJ , 128 : X=X+ 

l:NEXT I 
HO 140 FOR 1=162 TO 184 STEP 2: POKE SCREE 

N + I, X : POKE 5CREEN+ tl + lJ , 128 : X=X + 1 : NEXT 
I 
DQ 150 POKE 5CREEN+186,37 
ZZ 160 POKE 5CREEN+187,128:P0KE 5CREEN+18 

8,47:P0KE 5CREEN+189,48:P0KE SCREEN+19 

e,52:P0KE SCREEN+191,128 
LH 170 POKE 5CREEN'i-192,36:P0KE SCREEN + 193 

,44:P0KE 5CREEN+194,128 
FV 180 POKE SCREEN+195,128:P0KE SCREEN+19 

6,126:P0KE SCREEN+197,128 
ME 190 POKE SCREEN+198,35:P0KE SCREEN+199 

,50 
HD 200 POKE SCREEN+2,l:5PT=2:F=129 
UA 210 FOR 1=1 TO 4:P05ITI0N 2,7:PRINT CH 

R$C156); :NEXT I:RETURN 
EE 228 X=STICK(ei :Y=5TRIG(0) :IF Y=8 THEN 

GOSUB 490 
ZE 230 FOR 5L0M=1 TO DLAY:NEXT SLOH 
XZ 240 IF X=14 AND CSPT-40)>1 THEN GOSUB 

300 
SQ 250 IF X=13 AND CSPT+4e)<200 THEN GOSU 

B 340 
HQ 260 IF X=7 THEN GOSUB 430 
NY 270 IF X=ll THEN GOSUB 380 
ND 280 GOTO 220 
LP 290 R=R-3: POSITION 2,7;? CHR$C1561;;P0 

SITION 2 R: RETURN 
DM 300 L=PEEKC5CREEN+C5PT-4e}} :POKE SCREE 

N+SPT,F 
AH 310 IF L>127 THEN POKE 5CREEN+ CSPT-40) 

,L-128 
HZ 320 IF L<128 THEN POKE 5CREEN+ C5PT-40J 

,L+128 
DA 330 SPT=SPT-40:F=L: RETURN 
Cft 340 L=PEEK(SCREEN+CSPT+40}) :POKE SCREE 



N+5PT,F 
XX 350 IF L>127 THEN POKE SCREEN* CSPT+40) 

,L-128 
UP 360 IF L<128 THEN POKE 5CREEN+ CSPT+40J 

,L+128 
CK 370 SPT=SPT+40:F=L: RETURN 
QG 380 CNG=1:IF SPT=2 OR 5PT=42 OR 5PT=82 

OR SPT=122 OR SPT=162 THEN CNG=-37 
JK 390 POKE SCREEH+SPT,F:L=PEEKtSCREEN+t5 

PT-CNG)) 
ZJ 400 IF L>127 THEN POKE 5CREEN+ C5PT-CNG 

),L-128 
VZ 410 IF L<128 THEN POKE 5CREEN+ CSPT-CNG 

),L+128 
Ga 420 F=L:SPT=5PT-CNG: RETURN 
NH 439 CNG=l:IF 5PT=39 OR 5PT=79 OR 5PT=1 

19 OR 5PT=159 OR SPT=199 THEN CNG=-37 
FK 440 POKE SCREEN+5PT,F:L=PEEKtSCREEN+CS 

PT+CNG)J 
XB 450 IF L>127 THEN POKE 5CREEN+ (SPT+CNG 

J,L-128 
TR 460 IF L<128 THEN POKE 5CREEN+ (SPT+CNG 

J,L+128 
FU 470 F=L:SPT=SPT+CNG: RETURN 
JK 480 Z=PEEKt85) :F0R 5PC=Z TO 39 : PRINT " 

"'INEXT SPC:RETURN 
aU 490 " A=PEEK CSCREEN+SPTJ : POKE 77, 9: IF A= 

164 OR A=172 THEN GOTO 620 
CQ 500 C=PEEKC83} :R=PEEKC84) :IF A=175 OR 

A=176 OR A=18e THEN POP :? CHR$C125):G 

OTO 710 
KM 510 IF A=254 THEN A=194 
GR 520 IF A<64 THEN A=A+32 
ZV 530 IF A=163 OR A=178 THEN A=5 
QX 540 IF A=165 THEN A=27 
BY 550 5P=5P+1 

VF 560 IF PEEK (84} =23 THEN GOSUB 290 
OU 570 PRINT CHR$(A);:IF 5P<1 THEN 5P=1 
ER 580 IF A=5 THEN GOSUB 480 
PS 590 IF A=27 THEN PRINT CHRSC27); 
PA 600 LINE$C5P,5P}=CHR$(A} :R=PEEKC84) :C= 

PEEK(85) 
ZE 610 RETURN 
IK 620 IF LINE$(5P,5PJ=CHR$(5} THEN GOSUB 

660 
ZH 630 A=32 : LINES C5P, SPJ =CHRS I163J :5P=SP- 

l:IF 5P<1 THEN 5P=1 
YH 640 C=C-l:IF C<2 THEN C=39 : R=R-1 : IF R< 

6 THEN R=6:C=2 
HZ 650 POSITION C,R: PRINT " "; CHR$ C30] ; : G 

OTO 610 
ZT 660 R=R-l:IF R<6 THEN R=R+1: RETURN 
XS 670 POSITION 2,R:F0R 1=39 TO 2 STEP -1 
YY 680 PRINT CHR$C30};:IF PEEKC93}=69 THE 

N POP :C=I+l:RETURN 
GO 690 NEXT I 

KC 700 RETURN : REM ERROR TRAP 
DZ 710 REM MENU FOR FUNCTIONS 
PX 720 POSITION 2,14 
FB 730 PRINT ,,"8. NOTHING":? ,,"1. SAVE 

FILE":? ,,"2. PRINT IT":? ,,"3. LOAD F 

ILE":? ,,"4. DIRECTORY":? ,,"5. TYPE" 
FD 740 PRINT ,,"6. DELETE FILE":? ,,"7. F 

ORMAT DISK":? ,,"8. ERASE LETTER" ;P05I 

TION 22,13:PRINT CHR$C29I; 
YH 750 X=STICKCO] :Y=STRIGCO) :R0M=PEEKC84} 
TY 760 IF Y=0 THEN GOTO 800 
HW 770 IF X=13 AND R0W<22 THEN PRINT CHR$ 

(29); 
JF 780 IF X=14 AND R0N>14 THEN PRINT CHRS 

C28J; 
HM 790 FOR SL0M=1 TO DLAY;NEXT SL0M:G0T0 

750 
IR 800 GET tt6,A:P0KE 77,0:P0KE 85,22:A=A- 

175 
SM 810 IF A=8 THEN GOTO 750 
IE 820 ON A GOTO 750,1050,1120,1300,1370, 

1450,1550,1590,1810 
QE 830 GOTO 750 
PR 840 SX=l:DR$=" ":DISI4,13J=DR$:P 

RINT CHR$ (125) : PRINT "NHAT IS THE NAME 
OF FILE IN DRIVE ";DI$(2,2J 
VE 850 PRINT :PRINT :PRINT :PRINT "M":CHR 

$(1601;:F0R 1=193 TO 218:PRINT CHRS(I) 

; :NEXT I 
QZ 860 PRINT CHR$ (160) ; CHR$ (160) ;"DL": ? " 

pii ■ -7 '"Mil ■ *> '*IJ" 

HZ 870 POSITION 2,10:PRINT DIS 
AY 880 C0L=3 



24 



SEPTEMBER 1 988 ' A.N.A.L.O.G, COMPUTING 



OT 898 POSITION COL-2, 5 : PRINT CHRSI31J;CH 

RSC31);:F0R SL0W=1 to DLftY:NEKT SLOW 
XO 908 X=STICKC8) :Y=STRIGC8) :C0L=PEEKC85) 
ZU 910 IF Y=0 THEM GOTO 960 
PD 920 IF H=7 AND C0L<32 THEN PRINT CHRSt 

31); 
Py 930 IF X=ll AND C0L>2 THEN PRINT CHR$C 

301; 
ZN 948 FOR SL0M=1 TO DLAY:NEXT SLOW 
PA 950 GOTO 988 

NZ 960 GET tt6,A:IF A=196 THEN GOTO 1028 
UT 978 IF A=285 THEN GOTO 710 
WM 988 IF A=32 AND SX=1 THEN GOTO 890 
FS 998 IF SX>8 THEN GOTO 1040 
TO 1008 DRS CSX, SX) =CHR$ tA) : POSITION 5,10: 

PRINT DR$:? SX:SX=SX+1 
TY 1010 GOTO 890 

IR 1020 SX=SX-l:IF SX=0 THEN SX=1 
GR 1030 DRSCSX,SX)= POSITION 5,10:? DR 

$;" ":? SX:GOTO 898 
AY 1040 DI$C4,11)=DR$:RETURN 
TB 1050 G05UB 840:0PEN »2, 8, 0, DI$ : FOR 1=1 

TO LENtLINE$) :X$=LINEStI,I) 
EJ 1060 IF X$=CHR$C163} THEN POP :GOTO 10 

80 
AS 1070 PRINT »2;X$:NEXT I 
HV 1080 PRINT »2;CHR$C163I 
UG 1890 CLO SE «2:PRINT CHRS 1125) : ? ,DlS;" 

ZZ 1100 GOSUB 1610 

PX 1110 GOTO 710 

XQ 1120 PRINT CHR5C125] : PRINT "SINGLE SPA 

CED OR DOUBLE SPACED?" : GOSUB 1870 
MG 1130 IF A=49 THEN LS=2 
RU 1140 IF A=50 THEN LS=1 
ZM 1150 OPEN «2,8,0,"P:":PRINT CHR$ (1251 : 

? ,, "WAIT": PRINT «2 
MW 1160 FOR 1=1 TO LEN (LINE$1 
FC 1170 IF LINE$CI,Il=CHRStl631 THEM POP 

:GOTO 1320 

ER 1180 FIN=I 

YL 1190 NEXT I: PRINT ■ ■ " IJ:»:i*rTi=l " 

AI 1200 LL=PLL:SP=l:B=l:Y=8:PRINT «2;MRG$ 

VM 1218 Y=Y+l;IF Y>LL OR Y=LL THEN GOSUB 

1640 
ZK 1220 IF SP=FIN+1 THEN GOSUB 1770 : CLOSE 

tt2:G0T0 710 
TU 1230 IF P>53 THEN GOSUB 1700 
XJ 1240 IF LINESCSP,SP1=CHRS(321 AND Y=l 

THEN SP=SP+l:GOTO 1210 
UA 1250 IF LINE$(5P,SPl=CHRSt5) THEN GOSU 

B 1720:G0T0 1210 
5M 1260 IF LINE$CSP,SP)=CHRSC27) THEN PLL 

=LL+2:SP=SP+l:G0T0 1210 
MP 1270 IF LINE$CSP,SP1=CHRS(:126) THEM LL 

=LL+2:G0T0 1210 
CQ 1280 IF LINE$CSP,SP1=CHR$C321 THEN PRI 

NT tt2;LINE$CB,SPl; :SP=SP+1:B=SP:G0T0 1 

218 
GK 1298 SP=SP+l:GOTO 1218 
NY 1300 GOSUB 840:LINES=" ":SP=1:PRINT CH 

R$tl25) 
JA 1310 OPEN tt2,4,0,DI$ 
NG 1320 INPUT tt2,X$:IF XS=CHRS tl63) THEN 

SP=5P-l:G0T0 1340 
YU 1330 LINE$(SP,SPl=XS:SP=SP+l!GOTO 1320 
AW 1340 CLOSE tt2 : PRI NT CHRS (125) : PRINT :P 

PINT DI$;" HiT;V3^>V : CLOSE «2 
QN 1350 GOTO 710 
TW 1360 CLOSE «2 : PRINT "ERROR — NO SUCH FI 

LE":FOR 1=1 TO 200: NEXT I 
MO 1370 DB$(2,2)=DI$(2,2) :PRINT CHRS (1251 

:OPEN »1,6,0,DB$ 
AK 1380 INPUT «l;FS:IF ASC (FS (3, 31 1<65 TH 

EN 1430 
PE 1390 PRINT F$(3,131;MRG$; 
UW 1488 INPUT ttl;FS:IF ASC (FS (3, 31 1<65 TH 

EN GOTO 1430 
WP 1410 PRINT F$(3,131 
SM 1420 GOTO 1380 

BT 1430 CLOSE »1:PRINT : GOSUB 1610 
QM 1440 GOTO 718 

BT 1458 ? CHRS (1251 : POSITION 2,7:PRINT 
MP 1460 GOSUB 60 : FIN=LEN (LINES! : IF FIN<1 

THEN GOTO 220 
NU 1470 FOR 1=1 TO FIN 
KR 1480 IF LINES(I,I1=CHRS(1631 THEN R=PE 

EK(841 :C=PEEK{851 :POP : GOTO 220 



QE 1490 IF LINES{I,I1=CHR$(271 THEN PRINT 

CHRS (1971 ;: GOTO 1530 
GR 1500 IF LINES(I,I1=CHR$(1261 THEN PRIN 

T CHRS (1941 ;: GOTO 1530 
WN 1510 IF LINES(I,I1=CHRS(51 THEN PRINT 

CHRS(51 ; :GOSUB 480:GOTO 1530 
MS 1520 PRINT LINES(I,Il; 
AN 1530 R=PEEK(841 :C=PEEK(851 :IF R=23 THE 

N GOSUB 290 
LM 1540 NEXT I ; SP=I-1 : GOTO 220 
AW 1550 GOSUB 840 
AY 1560 XIO 3 3,«1,O, 0,DIS:PRINT CHRS (1251 

:? ,DIS;" U-mf.VAU-' 
BC 1570 GOSUB 1610 

RA 1580 GOTO 710 

BC 1590 PRINT CHRS (1251 ; "HOW IJiliKTmirfl DR 

IVE ";DIS(2,21 :XIO 254, ttl, 0/0,61$ 
GF 1600 PRINT "DISK IS NOW FORMATTED" : GOS 

UB 1610:GOTO 718 
lA 1610 PRINT , "PRESS FOR MENU" 
KB 1620 Y = 5TRIG(01 :IF YOO THEM GOTO 1628 
AU 1638 RETURN 

HP 1640 IF LINES (SP + 1,SP+11=CHRS (321 THEN 
PRINT «2;LINES(B,SP1 : SP=SP+2 : B=SP : IF 

Y=LL THEN GOTO 1670 
UF 1650 IF (SP-B1>40 THEN PRINT «2;LINES{ 

B,SPl:IF LS=2 THEN PRINT tt2 : GOTO 1680 
UU 1660 PRINT nZ 
YZ 1670 IF LS=2 THEN PRINT «2 
CF 1680 Y=l:LL=PLL: PRINT tt2;MRGS; 
BN 1690 RETURN 

IF 1700 FOR 1=1 TO 12:PRINT tt2:NEXT I 
MJ 1710 PRINT »2;MRGS; :P=0:RETURN 
MA 1720 IF B=SP THEN PRINT tt2:P=P+l 
GB 1730 IF B<SP THEN PRINT tt2; LINES (B, SP- 

11 :P=P+1 
BA 1740 IF LS=2 THEN PRINT tt2:P=P+l 
LE 1750 SP=SP+l:B=SP:Y=8:LL=PLL: PRINT «2; 

MRGS; 
BF 1760 RETURN 

EX 1770 IF B=SP THEN GOTO 1790 
ZN 1780 PRINT «2;LINES(B,SP-11;CHRS(1551 
YT 1790 CLOSE «2 : SP=1 ; RETURN 
XM 1800 OPEN tt6,4,0,"S:":SETC0L0R 2,0,0 
PP 1810 CLR ;DIM LINES (199551, XS (11, FS (15 

1 .DRS (81, DBS (61, DIS (131 : SP=0 : R=6 : C=2 : D 

IS="D :";DBS="D :».»" 
MR 1820 DLAY=ie:DIM MRGS (71 : MRGS=" 

":PLL=64 
XB 1830 ? CHRS (1251 SPRINT "STORE MESSAGES 

TO DRIUE ONE OR TWO?":GOSUB 1870 
LP 1840 IF A=49 THEN DlS(2,21="2" 
GW 1850 IF A=50 THEN DlS(2,21="l" 
UJ 1860 PRINT CHRS(1251 :POSITION 2,7:PRIN 

T :GOSUB 6e:G0T0 220 
MH 1870 PRINT ,,"0": PRINT ,, "0" : POSITION 

22,2:PRINT CHR$(291; :FOR 1=1 TO 1O0:NE 

XT I 
ZG 1880 X=STICK(0) :Y=STRIG(0) :R=PEEK(84) : 

C=PEEK(85) 
PL 1890 IF R>2 AND X = 13 THEN F IINT CHRS (2 

8); ^ 
QK 1900 IF R<3 AND X=14 THEN PRINT CHRS (2 

9); 

OG 1910 IF YOe THEN GOTO 1880 

VH 1920 GET tt6, A: RETURN 

QG 1930 POP :0OPS=PEEK(195) :IF 00PS=138 T 

HEN PRINT "CHECK PRINTER OR DRIUE":GOT 

710 
UY 1940 IF 00P5=139 THEN PRINT "FAULTY DR 

lUE?": CLOSE tt2:G0T0 710 
HL 1950 IF 00PS=5 AND SP<2 THEN PRINT "NO 

THING WRITTEN.": GOTO 710 
DO 1960 IF 00PS=5 THEN PRINT "TOO MANY CH 

ARACTERS. SUGGEST SAUE":GOTO 710 
DI 1970 IF 00PS=144 THEN PRINT "DISK PROT 

ECTED":CLOSE «2:G0T0 710 
MP 1980 IF 00PS=167 THEN PRINT "FILE LOCK 

ED": CLOSE tt2:G0T0 710 
XY 1990 IF 00PS=169 OR 00PS=162 THEN PRIM 

T "DISK FULL ~ TRY AGAIN WITH ANOTHER 
DISK":CLOSE tt2:G0T0 710 
HB 2000 IF 00PS=170 THEN GOTO 1360 
YI 2 010 IF 00PS<143 THEN PRINT "WHAT HAVE 
raim DONE TO THIS PROGRAM?":? "ERROR - 

- ";oops:goto 710 
il 2020 if oops=160 them print "wrong dri 

UE?":CLOSE tt2:F0R 5L0W=1 TO 2O0:NEXT 5 
LOW:GOTO 1830 Ct 



A.N.A.L.O.G, COMPUTING' SEPTEMBER 1988 



25 




Shareware is a new method of 

distributrng software through 

puhlic hulletln board systems and 

your local dealer or user group. 



Mydos 5.0 Goes Shareware 

Atari's on-again, offagain disk operat- 
ing system (DOS) developments have 
caused many XE/XL owners to write their 
own DOS utility programs to solve the 
lack of a good operating system. Many 
DOS utilities have been written since 
Atari DOS 2.0S back in the early '80s. MY- 
DOS, written by Steve Marcelette, was one 
of the first full-function DOS programs 
for the XE. MYDOS was originally pack- 
aged for sale through the normal dealer 
channels, but now MYDOS 5.0 has been 
put into the public domain as a shareware 
product. 

Shareware is a new method of distribut- 
ing software through public bulletin 
board systems and your local dealer or 
user group. You are free to make a copy 
of MYDOS 5.0 and use it for home or bus- 
iness. If you decide to keep it, the author 
asks you to send him $10, as a royalty for 
writing a useful program. 

MYDOS 5.0 is a pretty hefty program. 
In addition to a disk sector editor, com- 
mand line interpreter (CLI), and multi- 
ple autorun file support, MYDOS 
supports many different types of disk 
drives for your XL/XE computer. If you 
have a Happy drive, Atari XF551 or even 
an ICD hard disk drive, MYDOS allows 
you to create custom disk drivers to oper- 
ate your drive. MYDOS is density smart. 



Bill Wilkinson, Where Are You? 

Last June, ANALOG reported that Op- 
timized Systems Software (OSS), the 
popular manufacturer of products for the 
XE/XL computer, had been bought out by 
ICD Computers. OSS was one of the first 
companies to develop software for the 
Atari 800; they even worked on some of 
the original operating system routines be- 
fore the 400/800 went into production. 
One of the founding principals of OSS 
is Bill Wilkinson, a prolific writer who 
professes the inherent beauty of the Atari 
home computer. 

Bill has been found at some of the 
Atarifests, the larger trade shows like 
Comdex and CES, and some of the local 
user group meetings. He always has some- 
thing interesting to say and gets to the 
point clearly and quickly. But, since the 
OSS/ICD buyout, no one has seen or 
heard from Bill. If he has completely re- 



moved himself from the Atari communi- 
ty, we ve lost a dedicated friend. 

Atari Founds Atari Computers 

Much has been written about Atari's 
positioning of the XL/XE home computer 
as a high-end video game machine. Most 
XL/XE owners become disturbed to find 
Atari openly telling of how bad sales are 
when they try to sell their 8-bit computers 
as home computer systems. But, the truth 
is that a majority of XL/XE owners sur- 
veyed by ANALOG indicate that they have 
real-world applications for their Atari 
computers in small businesses and at 
home. 

Speaking at a panel discussion on 
niche marketing at the Comdex computer 
trade show in Atlanta this past April, Neil 
Harris told the sinall but interested au- 
dience that "Atari's roots were firmly 
placed in games, even before the Tramiels 
took over the company." Neil said that the 
slump in the 8-bit market has partly been 
due to slow product releases (disk drives 
and software) and to the lack of a game- 
plan to revamp the Atari 8-bit home com- 
puter market. 

Neil was previously employeed by Atari 
as director of corporate communications, 
which made him the mouthpiece through 
which the company would communicate 
both rumors and facts about news and in- 
formation pertaining to Atari computers. 
With a new title, Director of Product Mar- 
keting, Neil is now working for a new en- 
tity within Atari called Atari Computers. In 
an age where you can buy an Atari calcu- 
lator in your local grocery store, or buy 
a 7600 cartridge-based game machine at 
your local toy store. Atari Computers is 
a newly founded division to market 
Atari's home and business computers in 
the US market. 

Previously, the Tramiels had set up one 
person to be the marketing director for 
Atari Corp. Jerry Brown was a well estab- 
lished marketing director at IBM before 
joining Atari in 1987. Jerry arrived with 
great fanfare, but left the company six 
weeks later. Four other marketing direc- 
tors floated through Atari in 1987. The 
new Atari Computers is headed by Chuck 
Babbit, President; Tony Gould, V.P. Sales; 
and Neil Harris, Marketing. Hopefully the 
new combination will turn things around 
for the XL/XE line. 



U 



SEPTEMBER 1 988 • A.N.A.L.O.G. COMPUTING 



No More MIO Boards (for now...) 

After President Reagan's "let's get 
tough" policy on opening foreign markets 
caused Dynamic Riindom Access Memory 
(DRAM) chips to skyrocket, many compa- 
nies depending on a supply of these high- 
capacity memory chips began to feel the 
squeeze. ICD makes the MIO, a popular 
add-on board for the XE/XL home coin- 
puter. The MIO adds 256K or one Mega- 
byte of extra memory, a hard-disk port, 
printer and serial port to your computer. 

The MIO costs $239 for 256K 
and $469 for one megabyte. 
These low prices depend 
-ed on the low price 
of DRAM chips. 



The SP-1600 AI is compatible with Ep- 
son EX and IBM graphics printers, so all 
the usual programs for the XE/XL will 
work with it. The printer has both serial 
and parallel connections, so you can use 
it with an Atari 850 interface or ICD MIO 
board. 

The printer uses a 9-pin print head 

which gives you enough resolution to 

print graphics, reports and light business 

correspondence; the letter quality mode 

is impressive for such a small 

printer. The printer 




which now cost significantly more. So, 
ICD has stopped making MIO boards. 
The few that are left in ICD's warehouse 
are available directly from ICD (this ex- 
cludes dealers) while supplies last. 

ICD 

1220 Rock Street 

Rockford, IL 61 101-1437 

(815)968-2228 

Home Printer 

Seikosha has begun shipping its new 
SP-1600 AI printer The SP-1600 AI prints 
160 characters per second (CPS) in draft 
mode and 33 CPS in near-letter-quality 
mode. The printer is exceptionally quiet 
for an impact-style dot matrix printer. It 
prints with a noise level below 52 dBA, 
which is quiet enough for a small business 
that doesn't have a lot of space. 



has a ten-inch 
carriage and comes with 
tractor and friction feed. A sheet 
feeder is also available. The SP-1600 AI 
has a suggested list price of $349. 
Seikosha America Inc. 
1 1 1 1 Macarthur Blvd. 
Mahwah, NJ 07430 
(201) 529-4655 

Turkey Atari Users Group 

A group of Atari 8-bit users in Turkey 
has been sending letters to user groups 
in the United States and Canada. The Tur- 
kish group has been sending money in 
the hopes that the domestic user groups 
will return public-domain software and 
utilities. Apparently, the Turks love the 
130XE computer. But, software and hard- 
ware are very expensive overseas. An 
800XL can cost as much as $800, and 
monitors can be priced over $1,000. 

ANALOG encourages foreign Atari user 
groups to contact lus about your group's activi- 
ties and interest. 



A majority 

of XL/XE owners, 

surveyed by Miia?(i, 

indicate that they have 

reai-world appiications for 

their Atari computers in smaii 

businesses and at home. 



A.N.A.L.O.G, COMPUTING'SEPTEHBER 1988 



27 



Master Me 



conlinued from page 9 



tape booted. A zero means that everything 
bit the big one. 

If a cassette boot attempt doesn't wori<., 
then the OS goes on as though there were 
no attempt. If the disk boot attempt fails, 
and this has ha])pened to most of us, then 
a lovely "BOOT ERROR" message ap- 
pears on the screen and the OS gives it 
another try. 

Okay, now for some miscellaneous 
stuff A cassette boot always comes before 
a disk one. If there is a successful cassette 
boot, then every time SYSTEM RESET is 
pressed the computer will go to the ad- 
dress stored in CASINI. 

The address is a location where a rou- 
tine you want to use is located in memory. 
This address is usually called a "vector," 
because it points to something. You can 
JSR in machine language or USR in BAS- 
IC to get to the routine. 

Back to CASINI. If the disk boots suc- 
cessfully, then the computer will go to the 
address stored in DOSVEC (10,11). If 
BOOT? is set to 255 by you, then the com- 
puter will "lockup" if SYSTEM RESET is 
pressed. This is a great way to keep peo- 
ple from looking at your programs. In- 
cidentally, "lockup" means that the 
computer will not do anything until you 
turn it off 



DOSVEC 

10,11 



OOOA, OOOB 



This is another vector, used to tell the 
OS what to do when SYSTEM RESET is 
pressed. It holds the cassette-boot starting 
address, the disk-boot starting address, or 
the address of the "blackboard mode" 
routine (type "BYE" from BASIC and 
press RETURN; that's the blackboard 
mode and the routine for it starts at lo- 
cation 58481). It's called DOSVEC, be- 
cause if you're using DOS from BASIC, 
DOSVEC holds the address that BASIC 
jumps to when you call DOS 
(DOSVECtor— get it?). If you want to use 
this location from BASIC to point it to 
your own routine, then you'll have to 




28 



SEPTEMBER 1 988 ' A, N. A, L.O.G, COMPUTING 



mory Map 




A.N.A.L.O.G.COMPUTING'SEPTEMBER 1988 



29 



Master Me 




make a small change to DOS, since in this 
case SYSTEM RESET restores DOSVEC to 
its original value. The change is easy to 
make, though. All you have to do is POKE 
5446 with the Least Significant Byte (LSB) 
of the address of your routine, and 5447 
with the Most Significant Byte (MSB) of 
the address. The MSB is the first two 
digits of the hex address, the LSB is the 
last two. You can compute MSB and LSB 
from a decimal address with the follow- 
ing formulas: MSB = INT (address/256), 
LSB = address -(256*MSB). Then call 
DOS and resave it using the WRITE DOS 
FILES option. This will give you a custom 
version of DOS that will allow your rou- 
tine to run every time SYSTEM RESET is 
pressed or DOS is called. 

Miscellaneous stuff again; DOSVEC is 
set to 6047, the address of a routine to 
load in the DUP.SYS file, if DOS is used 
and it is not told otherwise (i.e., no user 
boot programs). And, for you machine- 
language dabblers, if you create an AU- 
TORUN.SYS file that doesn't end with an 
RTS, make sure you set BOOT? to 1 and 
COLDST (580) to (so as not to confuse 
the computer). 



want to go to whenever SYSTEM RESET 
is pressed, store its address here. 



DOSINI 

12,13 



OOOC, OOOD 



This one's easy. Essentially, it is the disk 
equivalent of CASINI. As a matter of fact, 
the cassette initialization address is stored 
here before the OS realizes it's doing a 
cassette boot and moves it to CASINI. If 
there is no cassette or disk boot, DOSINI 
will read 0, 0. 

DOSINI can be very useful because it 
holds the address that the OS jumps to 
when SYSTEM RESET is pressed. If you 
have a machine-language routine that you 



APPMHI 

14,15 



OOOE, OOOF 



This location helps prevent your pro- 
grams from accidentally being written 
over by the OS. If you're using BASIC, it 
points to the end of your BASIC program. 
The OS uses it to determine whether or 
not there's room for the graphics mode 
you want to use. As you probably know, 
the graphics mode stuff (screen memory 
and display list) is stuck way up at the top 
of memory. When you tell the OS to set 
up a graphics mode (with either a 
GRAPHICS or OPEN "S:" command), it 
tries to put the display list and screen 
memory right below the top of memory. 
Unfortunately, sometimes there isn't 
enough room, and they would extend 
down into your program, which you ob- 
viously don't want to happen (unless it's 
a horrible program). APPMHI to the res- 
cue! Before it sets up the requested graph- 
ics mode, the OS checks APPMHI to see 
if there's enough room. If there isn't, it 
tells you so and sets up a GRAPHICS 
screen instead, updating MEMTOP 
(741,742) in the process. MEMTOP, in case 
you didn't guess, holds the address of the 
last possible memoiy location you can use 
for your program, i.e., the memory loca- 
tion right before the display list. On the 
other hand, if there is enough room, the 
desired mode will be set up and MEM- 
TOP updated accordingly. 

Sometimes you may want to use the 
memory between the end of your pro- 
gram and MEMTOP to store character 
sets or player/missile information. That's 
fine, but make sure you change APPMHI 



30 



SEPTEMBER 1988 ' A.N.A.L.O.G. COMPUTING 



mory Map 



so that the OS knows that you're using 
that memory (in other words, set APPM- 
HI to point to the memory address after 
the last one you use). 

Other locations that might be of in- 
terest here are CHBASE (54281), PMBASE 
(54279) and RAMTOP (106). 

Machine language programmers: Loca- 
tions 16 through 127 are cleared on either 
coldstart or warmstart. 

POKMSK 

16 0010 

POKMSK is used to turn various types 
of "interrupts" on or off. An interrupt is 
exactly what it sounds like; the computer 
gets interrupted from whatever it's doing 
and is told to do something else (it then 
usually returns to what it was doing be- 
fore it was so rudely interrupted). 

For machine-language programmers, 
POKMSK deals with POKEY interrupts 
and is used and altered by the IRQ serv- 
ice. It's also a shadow register for IRQEN 
(53774). 

The following chart (Figure 3) shows ex- 
actly what part of POKMSK deals with 
which interrupts. Change a specific bit to 
a one to turn on that interrupt, zero to 
turn it off 

Before we decide whether or not any 
of this is useful, a few notes for the die- 
hards. The default value for POKMSK is 
192, BREAK key and "other key" inter- 
rupts enabled. When you enable a timer 
interrupt, the associated AUDF register 
will be used as a timer and will generate 
an interrupt request (IRQ.) when it has 
counted down to zero. See VTIMRl/2/4 
(528 to 535) and the POKEY chip (53760 
to 54015) for more details. 



BIT 


DECIMAL TYPE OF 


NO. 


VALUE 


INTERRUIT 


7 


128 


BREAK key 


6 


64 


"Other key" 


5 


32 


Serial input data ready 


4 


16 


Serial output data re- 
quired 


3 


8 


Serial out transmission 
finished 


2 


4 


POKEY timer four ("B" 
and later OS ROMs 
only) 


1 


2 


POKEY timer two 





1 


POKEY timer one 



FIGURE 3. POKMSK Chart 

For you beginners, as well as the pros, 
there is a handy-dandy use for POKMSK. 
If you haven't guessed already it allows 
you to disable the BREAK key so that no- 
body can BREAK into your program and 
steal your coda AU you have to do is turn 
bit seven off. How do you do that? Try 
the following subroutine: 

1009 BK=PEEKtl63 ;IF BKM28 T 
HEN POKE 16,BK-i28;P0KE53774 
,BK-i28 
1018 RETURN 

Notice that we also change Location 
53774. As mentioned before, POKMSK is 
a shadow register for 53774, and there- 
fore both must be changed. We also check 
first to make sure that bit seven is on. We 
do this because, unfortunately, this rou- 
tine has to be called more than once You 
see, the BREAK key is re-enabled by the 
first PRINT statement that prints to the 
screen, by an OPEN "S:" or OPEN "E:" 
statement, by the first PRINT statement 
after such an OPEN, by the first PRINT 
statement after a GRAPHICS command, 
or by a SYSTEM RESET. Phew! To make 



A.N.A.L.O.G, COMPUTING • SEPTEMBER 1988 



sure you keep the BREAK key disabled, 
you'll want to GOSUB to the preceding 
routine after each such command. 

More for the machine-language 
programmer If you have the newer OS 'B' 
ROM, there is a vector for the BREAK key 
interrupt that allows you to write your 
own routine for the BREAK key It is 
called BRKKEY, and can be found at lo- 
cations 566 and 567. 

BRKKEY 

17 0011 

Okay, you've used POKMSK to zonk 
out the BREAK key. What happens if for 
some reason you need to know if some- 
body's pressing it? BRKKEY tells you just 
that. If it's equal to zero then the BREAK 
key is pressed (if it's not then it isn't!). If 
you're looking at BRKKEY from BASIC, 
remember that you'll have to keep check- 
ing it over and over again; BRKKEY tells 
if BREAK is pressed, not if it were 

Machine-language programmers, this 
location along with POKMSK lets you 
write your own BREAK key routines if 
you don't have the 'B' ROM, or if you want 
to make sure your software will work on 
the old ROMs. If you do have the 'B' ROM 
(location 58383 will equal zero if you do), 
you can use the vector mentioned under 
POKMSK. 

A few boring bits if information. If the 
BREAK key is pressed during an in- 
put/output (I/O) opertion, BRKKEY will 
read 128, not. 0. The keyboard, display, 
screen, and cassette handlers all check 
BRKKEY to see if they should BREAK 
(why else?), as do I/O routines and scroll 
and draw routines. Also look at locations 
STATUS (48) and DSTAT (76) for related 
stuff 



31 



Master Me 




RTCLOK 

18-20 



0012-0014 



This one's actuaUy fun and interesting, 
and you may even have used it already. 
It's a clock — the "internal real-time clock" 
(which just means that it's inside the 
machine and actually keeps good time). 
It doesn't count in seconds though, but 
rather "jiffies." A jiffy is '/eo of a second, 
which happens, not by coincidence, to be 
the time that it takes the television to fill 
the screen. After the screen is filled, a 
special interrupt occurs, called the Verti- 
cal BLANK (VBLANK) interrupt. The OS 
gets a lot of things done during 
VBLANK, one of which is updating 
RTCLOK. Every jiffy (during VBLA>fK), 
Location 20 gets increased by 1 until it 
equals 255. At that point, since 255 is the 
largest number a memory location can 
hold, it gets reset to during the next 
VBLANK, and Location 19 gets increased 
by 1. You can probably guess what hap- 
pens next. When Location 19 reaches 255, 
it gets set to during the next VBLANK 
and Location 18 gets increased by 1. Fi- 
nally, when Location 18 reaches 255, 
everything gets reset to and the whole 
thing starts all over again. So, to put 
things in a more understandable perspec- 
tive, Location 20 increases by 1 every Vso 
of a second, location 19 every 4.27 se- 
conds (256/60), and location 18 every 18.2 
minutes (4.27 seconds*256). 

The following routine will tell you the 
number of jiffies, seconds and minutes 
that the clock has been running, i.e., since 
you turned on the computer or last 
POKEd 18 to 20 with zeros. 



18 J=PEEKC2ej+PEEKCi9)»256+P 
EEK(i8)»256»256 
28 S=J/68 
38 M=S/6e 

48 PRIKT "RTCLOCK reads ";J; 
" jiffies, or ";S;" seconds, 
or ";M;" Minutes." 



AU three locations are set to zero when 
you turn on the computer or press SYS- 
TEM RESET. You can set them to 
whatever values you want just by POKE- 
ing them. Possible uses for RTCLOK in- 
clude timing things that need precise 
timing. You can even use it to keep track 
of the time (what an absurd use for a 
clock). 



BUFADR 
21,22 



0015,0016 



This is a temporary register used to 
store the disk buffer address. It exists so 
that the OS can use indirect addressing 
to access the disk buffer. If this doesn't 
make sense, the BUFADR is not the place 
for you. 

ICCOMT 

23 0017 

Another hardcore location. ICCOMT 
holds the CIO (Central Input Output) 
command and is used as an index into 
the command table to find the offset for 
the correct vector to the desired handler 
routine. Like I said, for hard-cores only. 



DSKFMS 
24,25 



0018,0019 



32 



SEPTEMBER 1 988 ' A, N, A, L.O.G, COMPUTING 



mory Map 



This is used as a vector to tiie FMS (File 
Management System). It is called JMFFBL 
by DOS (which doesn't know any bettei). 



DSKUTL 
2&27 



OOIA.OOIB 



Another location used by DOS. DOS 
calls it BUFADR, but we'll continue to call 
it DSKUTL so as not to get confused with 
the OS BUFADR (21,22). DSKUTL points 
to a buffer that the disk utilities package 
(DUP) uses when copying or du]5licating 
a file. If the user says it's okay to use the 
program area while copying or duplicat- 
ing, then DSKUTL gets the value in MFM- 
LO (74 .H, 744). If the user says no way to 
the program area, then DSKUTL gets the 
address of DBUF, a special 250-byte buffer 
at Location 7668. 

PTIMOT 

28 001 C 

If you're not a big fan of machine lan- 
guage I/O, then skip this one. PTIMOT is 
the printer timeout value. It's set by your 
printer handler software, and initialized 
by the OS to 30, which represents 32 se- 
conds. If you're good at math you'll real- 
ize that 60 would represent 64 seconds. 
It's updated after each printer status re- 
quest, getting the specific timeout status 
from DVSTAT+ 2(748). 

A timeout is essentially what it soimds 
like. The printer (it could also be a disk 
drive or similar device) says, "Hey, 
timeout," and takes five. This has the 
noticeable effect of the jjrinter just sitting 



there for a brief period of time doing 
nothing. Then it decides to come back 
and get to work again. What are you go- 
ing to do, fire it? Anyway, those of you 
with the original OS may be very familiar 
with this situation, since that version of 
the OS contained a bug causing imneces- 
sary timeouts. You would be doing some- 
thing like printing when all of a sudden 
the computer would stop everything for 
up to five minutes. Version B did away 
wilh it. 



PBPNT 

29 



OOID 



PBPNT is an index (pointer) into the 
print buffer. It tells the OS how full or 
empty the buffer is, and can therefore 
have any value from zero up to the size 
of the print buffer, PBUFSZ (30). 



PBUFSZ 
30 



OOIE 



PBUFSZ is the size of the print buffer, 
but not necessarily the size of the print 
line. The normal buffer size is 40 bytes 
(which is obviously not the normal line 
size for most printers). It is initialized to 
zero by the OS (and not set luitil P: is 
opened), and set to four in the case of a 
printer status rec]uest. 

Characters get stored in the print 
buffer on their way to the printer. The OS 
checks PBPNT (29) to see whether it's 
equal to the buffer size (which would 
mean that the buffer is full) and, if it is, 
the buffer gets sent to the printer. If the 



buffer gets an EOL (End Of Line) charac- 
ter, then the OS fills the rest of the buffer 
with spaces and sends it to the printer. 



in"EMP 

31 



OOIF 



This is used by the printer handler to 
temporarily hold the character being sent 
to the printer while it goes off and does 
some chores. 



Zero Page Input/Output Control 
Block (ZrOCB) 

The 16 locations from 32 to 47 are used 
by CIO to make I/O as efficient as possi- 
ble (remember the speed advantage of 
page zero). They are set up in the same 
way as the regular lOCBs (832 to 959) and 
essentially act as a mirror for the lOCB 
that wants to be used. In other words, 
when a CIO operation gets going, the in- 
formation in the lOCB that's involved is 
moved to here, where it is used by the C;iO 
rf)utines. When the CIO is all done, then 
the updated information is moved back 
to the lOCB. Remember, as complicated 
as this sounds, it's only done for the sake 
of speed. 



ICHIDZ 
32 



0020 



A.N.A.L.O.G, COMPUTING ' SEPTEMBER 1988 



'fhis serves as an index into the han- 
dler address table for the file that's cur- 
rently open on this particular lOCB. If 
there is no such open file (i.e., the lOCB 
is free), then ICHIDZ gets set to 255. 

33 




ICDNOZ 

33 0021 

The device or drive number. DOS uses 
it to tell the maximum number of devices, 
and therefore calls it IMAXDEV (I'll bet 
you can see a connection there). It gets 
initiaHzed to one. 



ICCOMZ 

34 



0022 



This is the command laytc, which is set 
by the user, in the course of setting up the 
regular lOCB, to tell CIO what kind of 
operation is to be performed (GET, PUT, 
FORMAT, etc.). It also determines the for- 
mat of the rest of the lOCB (which will 
be different for different commands). 



ICSTAZ 

35 



0023 



ICSTAZ is the status of the last lOCB 
action taken. The device in question tells 
CIO what happened, CIO tells the OS, 
and the OS sets ICSTAZ (a little chain of 
command here). Hopefully everything 
went okay, but if it didn't, ICSTAZ is the 
guy who'll know. 

ICBALZ,ICBAHZ 

36,37 0024,0025 

Another buffer address, this one for 
data transfer The OS also uses the ICBAZ 
twins to get the device name from the 
user (in this case ICBALZ/HZ holds the 
address of the location where the device 
name has been stored). 

ICPTLZ.ICPTHZ 

38, 39 0026, 0027 

Each device has its own routine to 
"put" a byte into the device. The OS sets 
this location to hold the address (minus 
one) of the routine for the device being 
used. When the file is CLOSEd (and on 
powerup), it is set to the address of CIO's 
error routine for an illegal put (because 
you can't put something into a device un- 
less it's open). 

ICBLLZ.ICBLHZ 

40,41 0028,0029 

More buffer stuff This time we have a 
counter that is initially set to the maxi- 
mum number of bytes to PUT or GET in 
an I/O operation. It gets decremented ev- 
ery time a byte is put or gotten. 

Machine language programmers can 
set this location to the size of the memory 



block they want to transfer. By checking 
after each PUT/GET to see if it's equal to 
zero, you'll be able to tell when the trans- 
fer is done. 



ICAXIZ 
42 



002A 



This is the first byte in the OPEN com- 
mand after the lOCB number. It tells 
whether the user wants to READ, WRITE, 
or both. 



ICAX2Z 
43 



002B 



Okay, the last location was the first byte 
after the lOCB number, so guess which 
one this is? Hey, you're on the ball! 
ICAX2Z has no specific function, it real- 
ly depends on the device you're using. 
CIO pretty much uses it as a working vari- 
able, although some serial port functions 
also use it. 

Locations 44 to 47 are also called 
ICSPRZ or ENTVEC and are spare bytes 
for local CIO usage. 

ICAX3Z,ICAX4Z 

44,45 002C,002D 

BASIC'S NOTE and POINT commands 
use these locations to transfer disk sector 
numbers. 



ICAX5Z 
46 



002E 



ICAX3Z/4Z give the sector, ICAX5Z 
gives the byte within the sector. It is also 
used to store the lOCB number times 16 
(since each lOCB is 16 bytes long, this 
gives an index to the beginning of the 
lOCB). In this case, it is called ICIDNO. 



ICAX6Z 
47 



002F 



Sometimes this doesn't do anything. 
But sometimes (only sometimes) it is 
called CIOCHR and used to temporarily 
store the byte that's getting ready to be 
PUT somewhere (aren't computers won- 
derful?). 

Examples of using lOCBs from BASIC 

(ICAXIZ and ICAX2Z are referred to as 
AUXl and AUX2 respectively). 

BASIC Operating System lOCB 

Command Parameters 



34 



SEPTEMBER 1 988 • A, N. A, L.O.G, COMPUTING 



OPEN 

#1,12,0,"E:" lOCB = 1 

Command = 3 (OPEN) 

AUXl = 12 (READ and 

WRITE) 

AUX2=0 

Buffer Address = ADR 

("E:") 

GET #1,X lOCB = 1 

Command = 7 (Get 

character) 

Buffer length = 

The gotten character is 

stored in the accumulator. 



PUT 

#1,X 



INPUT 

#1,A$ 



IOCB = l 

Command = 11 (Put 

character) 

Buffer length = 

The character is output 

through the accumulator. 



lOCB = 1 

Command = 5 (Getrecord) 

Buffer length = Len (A$) - 1 

(no more than 255) 

Buffer address = Input line 

buffer 



PRINT 

#1,A$ 


lOCB = 1 

BASIC uses a special put 
byte vector in the CB to 
talk directly to the handler. 


XIO 

18,#6,12A 
"S:" 


IOCB = 6 

Command = 18 ("fill") 
AUXl = 12 
AUX2 = 


STATUS 

48 


0030 



A couple of uses for this guy. First, and 
probably most important (after all, it got 
its name for this one), it is used to hold 
the status of the SIO (Serial Input/Output) 
routine currently taking place. Figure 4 
lists known values: 



1 


($01) 


Operation complete (no problems) 


138 


($HM 


Device timeout (no response) 


139 


($8B) 


Device NAK (no acknowledgement) 


140 


($SC) 


Serial bus input framing error (your 
guess) 


142 


($81.) 


Serial bus data frame overrun error 
(worse and worse) 


14.3 


($8F) 


Serial bus data frame checksum error 


144 


($90) 


Device done error (it packed up 
shop) 



STATUS also uses TSTAT (793) as a tem- 
porary storage location. The other use, 
you may recall, is as a storage register dur- 
ing SIO routines for the BREAK abort, 
timeout and error values. 

CHKSUM 

49 0031 

SIO's data frame checksum. A (much) 
simplified explanation of checksum is 
called for here. A checksum is essentially 
a sum of values used to check that the 
values were received correctly When data 
gets somewhere, the computer adds all the 
values sent into one byte, and then sends 
that byte as the checksum value. When 
data is being received, the values are 
again added and the result compared to 
the checksum. If the two aren't equal, that 
means that at least one of the bytes 
received was incorrect, and the computer 
usually responds with an error message. 
In case you're wondering how you can 
add a whole bunch of bytes together and 
store the result in just one byte, you can't. 
If the checksum exceeds 255, then the 
carry is just added onto it. For example, 
in the world of checksums, 
254 -I- 31 = 2,128 -i- 128 = 1, and so on. 

A "checksum sent" flag is located at 
CHKSNT (59). CHKSUM relies on 
BUFRFL (56) to tell when the checksum 
is to be sent or received. 



BUFRLQBUFRHI 

50,51 0032,0033 

Hey, it's another data buffer! This one 
is used to hold the stuff that gets sent out 
or received during I/O. Actually, 
BUFRLO/HI is a dynamic pointer into 
the buffer (which just means that it points 
to the next byte to be sent/ received rather 
than always pointing to the beginning of 
the buffer). 

SIO and DCB (Device Control Block) 
both use this pointer. 



BFENLO,BFENHI 
52,53 0034,0035 



A pointer to the byte right after the end 
of the data buffer described in the previ- 
ous location. This helps SIO and the DCB 
determine when the buffer is full. 



Sometimes you may get an error mes- 
sage trying to do stuff like reading from 
or formatting the disk. Before you tell the 
user to go toss the disk in the trash, 
however, you'll probably want to double- 
check to make sure that there really is 
something wrong with the disk, and it 
wasn't just a temporary booboo. CRETRY 
specifies how many times to try again be- 
fore giving up. It is initialized to 13. 



DRETRY 

55 



0037 



The same basic idea as CRETRY, but 
where CRETRY double-checks that a 
specific command doesn't work, DRETRY 
double-checks to make sure that the 
whole device doesn't work. It is initialized 
to one. 



BUFRFL 

56 



0038 



If BUFRFL equals 255, then the date 
buffer is full. If it doesn't, it isn't. 



RECVDN 

57 



0039 



If RECVDN equals 255, then all the 
data that was supposed to be received has 
been. If it doesn't, it hasn't. 

XMTDON 

58 003A 

If XMTDON equals 255, then all the 
data that was meant to be sent was. If it 
doesn't, it wasn't. 



CHKSNT 
59 



003B 



If CHKSNT equals 255 (you should 
know this already), then the checksum 
was sent. 

NOCKSM 

60 003C 

More checksum stuff A zero here 
means that a checksum follows the cur- 
rent transmission. No zero means no 
checksum. 



BPTR 

60 



003D 



FIGURE 4. Status Chart 



CRETRY 

54 



0036 



By now you should be getting the idea 
that buffers are pretty popular items 
around a computer. Here's another buffer 
to further enforce that idea. This time we 



A.N.A.L.O.G. COMPUTING'SEPTEMBER 1988 



3S 




have one for cassette data. Like 
BUFRLO/HI, BPTR is actually a pointer 
into the buffer (which is located at CAS- 
BUF [1021 to 1151]), indicating how full 
or empty the buffer is. It can be anything 
from zero to the value in BLIM (650). If 
it's equal to BLIM, then the buffer is 
either empty or full (depending on 
whether it was being read into or written 
out of respectively). It is initialized to 128. 



FTYPE 

62 



003E 



You load in a program from cassette 
and while it's loading, the computer goes 
"beeeep (pause) beeeep (pause) etc.," 
right? Well, the pause has a name. It's 
called an "inter record gap." Can you say 
"inter record gap"? Sure, I knew you 
could. Anyway (so much for the comic 
relief), FTYPE specifies the kind of gap 
to put on the tape. It equals for normal 
gaps (like in a CLOAD tape), 128 for con- 
tinuous (long) gaps (like in an ENTER 
"C:" tape). 

FTYPE gets its value from ICAX2Z (43), 
which gets it from DAUX2 (779), which 
gets it from the user. 



FEOF 
63 



003F 



Okay, we're still loading from cassette. 
How do we know when there's no more 
to read? The last record (each beep when 
loading represents a record) on a cassette 
file has a command byte of 254 and is 
called the EOF (End Of File) record. 
FEOF is set to 255 when the EOF record 
is reached, and before that. 

See CASBUF (1021) for an explanation 
of the way cassette records are structtired. 



FREQ 

64 



0040 



Quite simply, the number of beeps that 
the Atari makes when you OPEN the cas- 
sette handler: one beep for read, two for 
write (type "CLOAD" and press RETURN 
for a demonstration). 



its educational tapes can talk to you while 
loading programs. Ah, hah! This must 
mean that the left channel still can be 
heard even if you change the value in lo- 
cation 65. 



CRITIC 

66 



0042 



CRITIC is used to tell the OS that the 
current I/O operation is time-critical (disk 
or cassette operations, for example). This 
is important, because in the case of time- 
critical I/O it is important that the com- 
puter spend as little time in vertical blank 
as possible. When CRITIC is a nonzero 
value, the OS knows not to execute the 
second stage of the VBLANK process 
(CRITIC is checked at the end of Stage 
1). Since there are some things happen- 
ing during Stage 2 that you may not want 
to interrupt (check the OS listing if this 
is really of concern to you), CRITIC 
should be used only when necessary. To 
experiment, poke a 2 into 66 and then 
press any letter. The repeat capability will 
not work and CONTROL-2 will sound 
funny You can't press any key twice in a 
row. 

The following seven bytes are called 
FMSZPG and serve as zero-page registers 
for the disk-file manager system (EMS). 



ZBUFP 

67,68 



0043,0044 



When the FMS does disk I/O, it needs 
to know the user filename so it can OPEN 
the file. It expects to find it in a buffer 
pointed to by ZBUFP. 



ZDRVA 

69,70 



0045,0046 



Zero-page drive pointer. FMS also uses 
ZRDVA in its setup, free sector and get 
sector routines. 1 know this sounds some- 
what cryptic, but it's that kind of location. 



ZSBA 

71,72 



0047,0048 



SOUNDR 

65 0041 

SOUNDR is used to turn the beeping 
off (or back on) while the cassette or disk 
program is loading. A zero here will stop 
the beeping, anything else will get it go- 
ing again. Also see location PACTL 
(54018). The beeping is caused by the 
loading of data from the right channel. 
Atari added this to the computer so that 



A pointer to the sector buffer. 



ERRNO 

73 



0049 



If things go wrong during disk I/O, this 
is where you can find the error number. 
FMS initializes it to 1.59 



CKEY 

74 



004A 



SEPTEMBER 1 988 • A.N.A ,L,0,G, COMPUTING 



If the START button is held down when 
the Atari is first turned on, CKEY is set 
to one (zero otherwise). This indicates 
that a cassette file is to be booted. 



CASSBT 
75 



004B 



If a cassette file is booted and the boot 
is successful, CASSBT gets set to one. Zero 
means boot no goot. Also see BOOT? (9). 



DSTAT 
76 



004C 



A location of all trades, DSTAT is used 
mainly by the display handler to indicate 
display status and as a keyboard register. 
It is also used to indicate a cursor out of 
range error, the BREAK abort status, and 
too little memory for the desired screen 
mode. 



ATRACT 
77 



004D 



Try leaving the Atari on for about nine 
minutes without pressing any keys (or 
save yourself some time by POKEing 
ATRACT with 128). You've probably run 
across this effect before. It's called the 
"attract mode" and, as you can see, causes 
the colors on the screen to change every 
four seconds or so, at subdued bright- 
nesses. Why, you may ask? If you leave 
your computer alone for several hours 
with a picture on the screen that doesn't 
change (like when you break for lunch 
and forget to turn the TV off), it can 
"bum" the picture tube of your television 
set and leave a permanent, although faint, 
image on the screen. You obviously don't 
want this to happen, so Atari thoughtful- 
ly created this solution. 

Whenever you press a key IRQ (Inter- 
rupt ReQuest) sets ATRACT to 0. Other- 
wise, every four seconds VBLANK 
increments it by I. When it reaches 127 
it gets set to 254, and the Atari enters the 
attract mode. That's the way it stays until 
a key is pressed. 

The attract mode only changes the four 
color registers COLPFO to COLPF3 
(53270 to 53273) and the background 
COLBAK (53274). That means that you'll 
have to write your own atract routine for 
DLlinduced colors. 

If you're using joysticks but not the key- 
board, you'll have to set ATRACT to zero 
every few minutes within your program. 

DRKMSK 

78 004E 



This is one of the two locations used 
to change the colors in the attract mode 
(COLRSH is the other). DRKMSK makes 
sure that the colors aren't too bright. It's 
normally set to 246 during the attract 
mode. 

For the curious machine-language 
programmers, DRKMSK is ANDed with 
the original color to mask out part of the 
brightness nibble. This is done during 
stage two VBLANK. 



COLRSH 

79 



004F 



The other location for changing colors, 
COLRSH actually does change the colors. 
It contains the current value of 
RTCLOK+1 (19). 

Machine-language programmers, 
COLRSH gets EORed with the color 
registers (and background) before 
DRKMSK does its stuff. 

Locations 80 to 122 are used by the 
screen editor and the display handler. 

TMPCHR 

80 0050 

Guess what "TEMP" stands for? That's 
right, this is a TEMPorary (get it?) register 
used to move data to and from the screen. 
TEMP gets used by the display handler, 
which also calls it TMPCHR. 



HOLDl 

81 



0051 



Another temporary register for the dis- 
play handler, this time used to hold the 
number of entries in the display list. 

LMARGN 

82 0052 

Another tough name to figure out. If 
you're using graphics mode zero (or have 
a text window in the mode you're using), 
LMARGN determines the left margin for 
text. It's initialized to 2, but you can set 
it to whatever you want (up to 38). Try 
POKEing various values into this lo- 
cation. 

RMARGIN 

83 0053 

The right margin (I'll bet that somehow 
you'd figure that out already). It's initial- 
ized to 38, and you can also set it to 
whatever you want (try and set it higher 
than the left margin though, and less 
than 40, okay?). 



A few words about margins. SYSTEM 
RESET will restore them to their initial 
values. Text that is already on the screen 
will not be affected when you change the 
mai^ns. Finally, logical hnes (the longest 
a BASIC line can be) couldn't care less 
when you put the margins. Three Unes on 
the screen and that's it for your logical 
line, baby, whether that means 120 
characters or three. 

ROWCRS 

84 0054 

This tells you the row on the screen 
that the cursor is currently on. It works 
in all the GRAPHICS modes and there- 
fore has a range of to 191 depending 
on the mode being used. Don't forget that 
a row is a horizontal line, not a vertical 
one (you'd be surprised at some of the 
people that forget). Rows are numbered 
from top to bottom, being the top. 



COLCRS 

85,86 



0055,0056 



The column that the cursor is on, rang- 
ing from to 319. Location 86 can only 
get set to 1 in graphics mode 8 (where the 
column number can exceed 255). 
Columns are numbered from left to right, 
being the leftmost column. Incidental- 
ly, ROWCRS and COLCRS define the 
next cursor position to be read or writ- 
ten to, not the last one. 



DINDEX 

87 



0057 



This location tells the OS what graph- 
ics mode is currently being used (so it 
knows how to respond to a PLOT or some 
other screen I/O command). When you 
OPEN the screen (which the GRAPHICS 
command takes care of for you), the value 
of the AUXl byte is stored in DINDEX. 
This means that DINDEX can have a 
meaningful value of anything from to 
11, keeping in mind the GTIA modes are 
numbered 9 through II. 

Most of the time you'll just leave DIN- 
DEX alone, because BASIC takes care of 
it for you. The times that it does come 
in handy, however, is when you want to 
use mixed mode display lists. It also 
comes in handy when you want to use the 
so-called "GRAPHICS 75," which gives 
you twice the resolution of graphics mode 
7 with the same number of colors 
(machine-language programmers also 
know this mode as ANTIC mode "E"). 
The problem with using this mode is that 
it is, obviously, halfway between graph- 



SEPTEMBER 1988 ' A.N.A.L.O.G, COMPUTING 



37 




ics modes 7 and 8. That means that the 
display list is structured the same as a 
graphics mode 8 display list, but you have 
to PLOT to it like it was graphics mode 
7. So what, you say? Let's look at an ex- 
ample? The following routine sets up 
what is called a GRAPHICS 75 screen by 
changing a GRAPHICS 8 display list: 

108 GRAPHICS 24 

110 DLI5T=PEEKC560J+PEEKC561 

3*256 

120 POKE DLI5T+3,78 

130 FOR LINE=DL15T+6 TO DLIS 

T+204 

140 TYPE=PEEKCLIHEJ 

150 IF TYPE=15 OR TYPE=79 TH 

EN TYPE=TYPE-1 

160 POKE LINE, TYPE 

170 NEXT LINE 

180 COLOR 3 

190 PLOT e,0:DRAHTO 79,85 

200 POKE 89,PEEKI89J+15 

210 PLOT 80,8:DRAMT0 159,95 

999 GOTO 999 

A brief explanation of what's going on 
here. We first set up for a graphics mode 
8 screen with no text window. Then we 
find out where the display list is (see 
SDLSTL [560,561]) and then change each 
of the graphics mode 8 commands in it 
to graphics mode 75s. Then, since we 
have no text window, we must go into a 
continuous loop or else the screen will 
switch back to graphics mode (take out 
line 1000 and see for yourself). RUN the 
program and you will see the screen go 
from blue to black as the display list 
changes. You now have a screen that is 
160 dots wide and 192 dots high. Try ad- 
ding the following lines to the preceding 
routine: 

180 COLOR 3 

190 PLOT 0,e:DRAMTO 159,191 

Now RUN the whole thing. Uhh, oh! 
What happened? It's supposed to draw a 
blue line from the top left corner of the 
screen all the way down to the bottom 
right corner. WeU, unfortunately the OS 
still thinks that it's in graphics mode 8, 
and in graphics mode 8 things get plot- 
ted differently than we want here Let's 
trick the OS into thinking it's in graph- 
ics mode 7. That way it'll plot properly 
(technically speaking, we want two bits to 
represent a pixel rather than one). Add 
the foUowing line: 

175 POKE 87,7 

RUN it again and whoops! ERROR 
141? That means that the cursor went out 
of its allowed range. We foi^ot that graph- 
ics mode 7 only allows 96 rows. Change 
Line 190 to the following: 

190 PLOT 0,0:DRAMTO 79,95 
Now we're okay, but how do we draw 



in the lower half of the screen? Unfor- 
tunately, the tables that tell the OS how 
many rows and columns each mode has 
are in ROM, so we can't fool the OS into 
thinking that there are more rows. The 
only way around this problem is to treat 
a GRAPHICS 75 screen as being two 
separate screens, a top and a bottom 
(machine-language programmers can also 
write their own plot and draw routines). 
You can use SAVMSC (88^9) to pick the 
screen you want to use. Try the foUowing 
program additions and then look at 
SAVMSC to see what's going on: 

200 POKE 89,PEEK(89)+15 
210 PLOT 80,0:DRAMT0 159,95 

(This is a tedious process but it's the 
price you have to pay if you want the 
benefits of GRAPHICS 75) 



SAVMSC 

8839 



0058,0059 



This is the location of the place in 
memory where the data is kept that goes 
onto the screen. Each number in memory 
represents one character on your TV or 
several pixels if in a graphics mode. The 
value at memory location SAVMSC goes 
at the upper left-hand corner of the 
screen. The next memory location then 
goes left side, one row down. 

When you do I/O to the screen, the OS 
uses this address to figure out where to 
PLOT and PRINT. So, for example, the 
following line will put the letter "A"; in 
the upper left-hand comer of your graph- 
ics zero (or one or two) screen. 

5CRMEM=PEEK t88J +PEEK C89J »256 
:P0KE SCRMEM,33 

But wait, you say. CHR$(33) doesn't 
give us an "A"; what's going on here? I'll 
tell yoa The Atari stores the characters 
in memory in a different order than the 
ATASCII order (which is what CHR$ 
uses). See CHRORG (57344) to find out 
how to convert from one to the other. 
Anyway, the values in screen memory 
represent the internal character order 
rather than the ATASCII one 

If you're not using a text mode, the 
values you poke to the screen will, obvi- 
ously, affect the pixels on the screen (the 
dots on the screen). A pixel is represent- 
ed by one, two or four bits. See location 
DMASK (672) to find out what bits in a 
byte affect which pixels in each mode 
(that was easy for me to say). Then try 
POKEing around. You may want to check 
CHRORG again; it has an example of us- 
ing such POKEs to get characters on the 
screen in graphics mode 8. 



38 



SEPTEMBER 1 988 ' A.N, A.L.O.G , COMPUTING 



Okay, so now you know how to change 
the first character on the screen.. What if 
you want to change the sixth character on 
the tenth row; how do we know how to 
find it? Figure 5 shows how many bytes 
per row are required for each graphics 
mode. 



the trouble and just give you the values. 
Our final chart is Figure 7. 



MODE 012345678 9-11 
BYTES/ROW 40 20 20 10 10 20 20 40 40 40 



FIGURE 5. Number of bytes per row 

Now, if you want to change character 
X in row Y, just multiply Y by the num- 
ber of bytes per row for the mode you're 
using and add X (don't forget that the 
first row and column are numbered zero, 
not one). Add this value to the address 
in SAVMSC, and POKE away. For exam- 
ple, let's put the letter "B" in the middle 
of a graphics zero screen (row 11, column 
19): 

180 GRAPHICS e 

lie 5CREEN=PEEK(88)+PEEK(89) 

*256 

129 P05=ll»4e+9 

130 POKE 5CREEN+P0S,34 

We want to make sure that we don't try 
and change a byte that isn't part of the 
screen, so let's add another line to our 
chart, this one giving the number of rows 
in each mode. We'll also multiply the 
number of rows times the bytes per row 
to get the total number of bytes taken up 
by the screen memory (Figure 6). 



MODE 


1 2 :l 4 5 6 7 8 3-11 


ROWS 


24 24 12 24 48 48 96 96 192 192 


BYTES 


960 480 240 240 480 960 1920 3840 7680 7680 



FIGURE 6. Screen memory requirements 

Now these values, when added to the 
address in SAVMSC, wiU give you the 
value of the first byte after the end of 
screen memory. What they don't tell you 
is how much memory the whole graphics 
mode takes up. Why not? Because they 
don't take into account the display list 
(see SDLSTL [560^61]) and a few bytes 
that get trapped in the middle of every- 
thing. So how do we get this total memory 
amount? Well, it turns out that RAMTOP 
(106) points to the top of free memory, 
which coincides with the first byte after 
the end of screen memory. MEMTOP 
(741,742) points to the top of BASIC 
memory, which coincides with the first 
byte before the display list. So, if we sub- 
tract MEMTOP + 1 from RAMTOP * 256 
(RAMTOP is in terms of pages), we'll get 
the total memory required. I'll save you 



Mode 


12 3 4 5 6 7 8 9-11 


Bytes/Row 


40 20 20 10 10 20 20 40 40 40 


Na of Rows 


24 24 12 24 48 48 96 96 192 192 


Total Screen 




Bytes 


960 480 240 240 480 960 1920 3840 7680 7680 


Total Mode 




Bytes (normal 




screen) 


992 672 420 432 696 1176 2184 4200 8138 8138 


(Split Screen) 


— 674 424 434 694 1174 2174 4190 8112 



FIGURE 7. Screen requirements chart 

You may have told yourself by now that 
you can change the values in SAVMSC 
and thereby change where the screen is. 
And if you can change where the screen 
is, you can keep more than one screen in 
memory at the same time. Well, you're 
half right. You definitely can have more 
than one screen in memory at the same 
time, but unfortunately SAVMSC only 
tells the OS where to PRINT and PLOT 
(and the Uke) to. It doesn't tell the com- 
puter what to display on the television 
screen. Fortunately, there is another pair 
of locations that tell what to display, and 
the word "display" should tip you off to 
where they are; they're in the display list 
(this is kind of like adult Sesame Street, 
isn't it?). Specifically, they're the fifth and 
sixth bytes in a normal (unaltered by you) 
display list. Try the following: 

189 DLIST=PEEKC568}+PEEKC561 

]»256 

118 L0W=PEEKCDLI5T+4J 

126 L0N=L0M+1 

130 IF L0M=256 THEN LOM=0:PO 

KE DLIST + 5,PEEKtI>LI5T + 5)+l 

148 POKE DLI5T+4,L0W 

159 FOR DELAY=1 TO lOlNEKT D 

ELAY 

168 GOTO 128 

This will move the starting address of 
the screen one byte forward at a time, 
having the effect of swallowing up 
whatever was on the screen when you ran 
it. Press SYSTEM RESET to stop it and 
get everything back to normal. 

A few things to note here. First, if you 
let this run for a while (get rid of Line 
150 to make it hapen faster), the screen 
will suddenly fill up with a whole bunch 
of garbage. This "garbage" is actually 
your BASIC cartridge! The starting screen 
address has been moved so far forward 
that it has now entered the BASIC zone. 
You may have astutely noted that the gar- 
bage didn't scroll onto screen smoothly, 
but rather just sort of suddenly appeared. 
This is because the screen memory has 
committed a no-no. It has crossed a 4K 
boundary. What is a 4K boundary? It's the 
boundary between one group of 4096 
bytes and the next one. How do you tell 
where one is? Well, first of all, the address 
of a 4K boundary is a multiple of 4096. 



Better yet, if you're working in hex- 
adecimal, the leftmost digit in the four- 
digit hex number is the "4K digit" (this 
is not an official term). When it gets 
changed, a 4K boundary has been 
crossed. Okay? In any case, the whole 
purpose of this explanation was simply 
to tell you that the screen memory is not 
allowed to cross over a 4K boundary. The 
GRAPHICS command usually takes care 
of this for you, but if you're setting up 
more than one screen, you'll have to be 
careful. 

Going way back to our program exam- 
ple, you should also note that despite 
what's happening on the TV set, the OS 
stiU thinks that the screen is where it was 
originally, since we haven't changed 
SAVMSC. If you expect the OS to keep up 
with you, change SAVMSC as well as the 
display list. 

Finally (and you thought it would never 
end), before we move onward and up- 
ward, a few bits of memory trivia. The 
address of the text window memory can 
be found at TXTMSC (660,661). And, in 
case you thought you weren't going to get 
a good multiple screen example, you're 
right. Just kidding. 

99 REM Get everything set up 

188 GRAPHICS 1:PRINT tt6;"THI 
S IS SCREEN ONE" 

118 DLI5T1L=PEEKC568J :DLIST1 

H=PEEKC561) 

128 DLI5T1=DLIST1L+DLIST1H»2 

56 

138 5CRMEMlL=PEEKCDLISTl+4) : 

SCRMEM1H = PEEK CDLISTl+53 

148 POKE 186,DLISTlH-4 

158 GRAPHICS 2 : PRINT tt6;"THI 

S IS SCREEN TWO" 

1S8 DLIST2L=PEEKC56B3 :DLIST2 

H=PEEK(561J 

170 DLIST2=DLIST2L+DLIST2H»2 

56 

180 SCRMEM2L=PEEKCDLIST2+4J ! 

SCRMEM2H=PEEKtDLIST2+5J 

189 REM Do the flipping 

190 POKE 568,DLIST1L:P0KE 56 
1,DLIST1H 

288 POKE 88,SCRMEM1L:P0KE 89 

jSCRMEMlH 

210 GOSUB 1080 

220 POKE 560,DLIST2L:P0KE 56 

1,DLIST2H 

230 POKE 88,SCRMEM2L:P0KE 89 

,SCRMEM2H 

240 GOSUB 1088 

258 GOTO 198 

999 REM Pause between scree 

ns 

1888 FOR PAUSE=1 TO 288: NEXT 

PAUSE 
1818 RETURN 

Sorry, but no explanation for this one. 
You should ne able to figure it by your- 
self. I will, however, give you the follow- 
ing lines which you may want to add to 
make the screen look a little less messy. 

285 POKE 559,34 
235 POKE 559,34 
1005 POKE 559,0 fl 



A.N.A.L.O.G, COMPUTING'SEPTEMBER 1988 



]; 




LISTING 1: BASIC 

-"(Iff 10 REM KKKMMICKKKKKKKKKICKKICKKKKKKKKK 
NL 11 REH * KASON'S TONER * 

HX 12 REM * BY JIM ROGERS * 

NG 13 REM * * 

Ifl 14 REM * COPYRIGHT 1988 » 

GC 15 REM « BY ANALOG COMPUTING * 
UM 16 REM KKXKXXKKKKKKKKKXKXKKXKXKMKKK 
yj 198 GRAPHICS 18:P0SITI0N 3,5:? tt6;"KAS 

ON'S TOWER" 
TJ 288 RESTORE 5881: FOR A=1536 TO 1745: RE 

AD B:P0KE A,B;S0UND e,121+42WCA<16881+ 

81»CA<167e},18,4:NEXT A 
UN 388 S8UNI> 8,8,8,8 
GH 1881 DATA 76,73,32,56,124,124,252,248, 

248,238,48,8,252,252,92,92,188,188,184 

,188,56,124,112,238,254 
XS 1862 DATA 255,248,124,56,48,56,68,124, 

188,188,184,8,56,124,124,252,248,248,2 

38,48,8,252,252,68,68 
JV 1883 DATA 126,118,224,224,56,124,112,2 

38,254,255,248,124,56,98,58,60,60,124, 

112,96,8,56,124,124,252 
BS 1084 DATA 240,248,236,48,8,112,112,116 

,62,62,254,246,134,56,124,112,236,254, 

255,248,124,56,68,12,12 
EV 1885 DATA 62,62,126,116,8,56,124,124,2 

52,246,240,238,48,252,248,92,118,204,8 

,8,8,0,56,124,112 
KU 1086 DATA 230,254,255,248,124,48,56,68 

,118,8,8,6,8,8,28,62,62,63,15,15,163,1 

2,6,63,63 
QK 1667 DATA 58,58,54,54,22,54,28,62,14,1 

83,127,255,31,62,28,12,28,68,62,54,54, 

22,8,28,62 
IL 1008 DATA 62,63,15,15,163,12,0,63,63,6 

0,60,126,116,7,7,28,62,14,163,127,255, 

31,62,28,70 
KV 1609 DATA 76,60,60,62,14,6,0,28,62,62, 

63,15,15,183,12,6,14,14,46,124,124,127 

,111,97,28 
VM 1616 DATA 62,14,183,127,255,31,62,28,6 

0,48,48,124,124,126,46,0,28,62,62,63,1 

5,15,183,12,63 
QJ 1811 DATA 59,58 

iO 



wot 1813 DATA 118,51,8,0,8,6,28,62,14,183, 

127,255,31,62,12,28,66,113,6,8,8,6,6,2 

4,66 
BC 1814 DATA 126,24,24,24,60,24,68,24,66, 

126,35,65,255,65,35,196,138,255,136,19 

6,48,48,37,35,35 
NZ 1615 DATA 37,40,42,45,47,50,53,57,60,6 

4,68,72,76,81,173,165,174,16,6,0,6,8,6 

18,172 
TP 1816 DATA 165,182,165,172,16,121,96,72 

,68,72,96,121,96,96,48,58,37,51,51,0,5 

1,52,33,50,52 
OU 1017 DATA 0,52,47,0,34,37,39,41,46,3,5 

,6,6,7,7,7,6,6,5,3,8,8,1,1,1 
IE 1818 DATA 1,1,1,1,1,1,1,0,6,34,6,68,16 

2,144,144,128,121,168,96,91,66,81,121, 

121,121 
OY 1619 DATA 81,60,60,60,81,60,60,60,81,6 

0,47,47,68,47,47,47,47,72,72,81,81,96, 

96,121,96 
TV 1820 DATA 121,144,121,144,121,60,47,68 

,134,62,254,46,0,0,154,44,0,56,0,79,72 

,138,72,152,72 
RG 1021 DATA 169,1,141,10,212,173,172,6,4 

1,1,261,1,288,36,172,164,6,185,165,6,1 

41,2,268,185,225 
LE 1622 DATA 6,141,28,288,238,164,6,173,1 

64,6,281,7,144,5,169,8,141,164,6,172,1 

74,6,185,175,6 
HO 1823 DATA 141,3 
KU 1625 DATA 288,238,174,6,173,174,6,201, 

14,144,5,169,0,141,174,6,238,172,6,164 

,168,104,170,104,64 
DJ 1026 DATA 72,138,72,152,72,169,0,141,1 

64,6,141,172,6,141,174,6,165,224,24,18 

5,17,133,226,165,225 
NZ 1827 DATA 185,8,133,227,166,0,162,17,1 

69,0,145,203,145,285,280,262,208,246,1 

73,173,6,133,203,133,205 
JR 1028 DATA 160,0,162,17,177,224,145,203 

,177,226,145,205,200,202,208,244,173,1 

89,6,261,1,268,53,238,190 
GO 1029 DATA 6,174,190,6,224,4,144,5,169, 

0,141,1,210,224,5,144,34,169,0,141,190 

,6,174,191,6 
ZL 1836 DATA 189,137,38,141,0,218,169,163 

,141,1,216,238,191,6,174,191,6,224,38, 

144,5,169,6,141,191 
NK 1831 DATA 6,173,195,6,281,1,268,38,169 

,42,141,3,218,174,196,6,189,37,36,141, 

2,210,238,196,6 
VR 1832 DATA 173,196,6,261,19,288,14,169, 

6,141,195,6,141,196,6,141,3,216,141,2, 

218,173,211,6,281 
RE 1833 DATA 1,288,38,169,166,141,5,210,1 

74,212,6,189,129,30,141,4,210,238,212, 

6,173,212,6,281,8 
KV 1834 DATA 288,14,169,6,141,211,6,141,2 

12,6,141,5,210,141,4,216,164,168,184,1 

76,184,76,98,228,173 
PA 1835 DATA 197,6 
MY 1637 DATA 16,141,194,6,169,12,56,237,1 

94,6,168,169,38,153,175,6,153,176,6,17 

3,197,6,41,1,261 
VN 1038 DATA 1,268,8,169,214,153,175,6,15 

3,176,6,166,6,162,6,169,6,153,216,6,26 

6,262,288,247,96 
UA 1639 DATA 169,175,162,24,56,237,197,6, 

282,288,249,96,169,198,141,267,6,141,6 

,208,141,1,208,169,175 
GE 1040 DATA 141,173,6,169,0,133,20,165,2 

0,261,3,144,256,96,56,165,166,56,233,1 

6,141,7,212,141,192 
IP 1641 DATA 6,169,62,141,47,2,169,3,141, 

29,288,173,192,6,24,105,3,133,208,169, 

6,133,267,162,5 
QK 1642 DATA 166,0,169,0,145,207,200,208, 

249,236,288,262,288,242,173,192,6,24,1 

05,6,133,268,169,36,133 
KB 1043 DATA 287,162,7,142,193,6,160,0,16 

2,12,185,15,36,145,267,260,202,208,247 

,165,207,24,105,24,133 
DL 1044 DATA 207,174,193,6,202,208,227,23 

6,208,169,29,133,267,162,7,142,193,6,1 

62,2,142,194,6,168,8 
HO 1045 DATA 162,5,185,32,36,145,267,208, 

202,208,247,165,267,24,165,13,133,267, 

174,194,6,262,208,227,165 
_UH 1846 DATA 267,56,233,2,133,267,174,193 

SEPTEMBER 1 988 ' A,N, A, L.O.G. COMPUTING 



,6,202,248,47,142,193,6,162,2,142,194, 

6,168,8,162,5,185 
JT 1947 DATA 27,38 
JZ 1049 DATA 145,287,288,282,288,247,165, 

207,24,105,13,133,207,174,194,6,282,28 

8,227,165,287,56,233,2,133 
HZ 1050 DATA 287,174,193,6,282,288,162,17 

3,192,6,24,185,4,133,284,133,286,238,2 

86,162,7,168,8,169,58 
FD 1051 DATA 153,165,6,288,282,248,9,169, 

198,153,165,6,208,282,288,238,169,8,14 

1,8,208,141,9,208,141 
UZ 1052 DATA 18,288,141,11,288,141,8,218, 

169,3,141,15,210,160,0,162,7,185,175,3 

0,153,192,2,280,202 
OU 1053 DATA 288,246,169,33,141,111,2,169 

,0,141,172,6,141,195,6,141,196,6,141,1 

97,6,141,283,6,141 
PR 1054 DATA 214,6,162,7,168,8,169,38,153 

,175,6,288,153,175,6,280,202,240,13,16 

9,214,153,175,6,288 
fli 1055 DATA 153,175,6,200,282,288,238,16 

2,7,168,8,169,254,153,225,6,288,202,20 

8,247,169,29,133,225,169 
AU 1056 DATA 135,133,224,32,46,32,173,48, 

2,133,207,173,49,2,133,208,160,1,169,2 

40,145,207,168,3,177 
NM 1057 DATA 287,24,105,128,145,207,160,8 

,162,12,169,138,145,207,200,288,200,20 

2,208,246,169,187,141,0,2 
TG 1058 DATA 169,38,141,1,2,169,192,141,1 

4,212,168,13,162,31,169,7,32,92,228,17 

3,48,2,24,105,134 
NH 1059 DATA 133,207 
UR 1061 DATA 173,49,2,105,0,133,208,162,6 

,142,193,6,160,0,162,20,169,255,145,20 

7,200,202,208,248,165 
05 1062 DATA 207,24,185,128,133,287,165,2 

08,185,8,133,288,174,193,6,202,208,222 

,173,48,2,24,105,41,133 
OZ 1063 DATA 207,173,49,2,185,4,133,288,1 

60,8,162,16,185,56,38,145,207,200,202, 

208,247,160,0,162,3 
MY 1064 DATA 173,48,2,24,121,182,38,153,2 

18,0,173,49,2,105,4,153,219,8,208,200, 

202,208,233,169,5 
LX 1065 DATA 141,201,6,169,8,141,199,6,14 

1,189,6,141,8,218,141,1,218,169,28,141 

,288,6,168,8,162 
ET 1066 DATA 28,185,81,38,145,222,200,282 

,208,247,173,31,208,201,6,208,249,160, 

0,162,20,169,0,145,222 
UK 1067 DATA 208,202,208,248,169,1,141,18 

9, p, 168, 0,173, 201, 6, 24, 105, 16, 145, 218, 

32,46,32,169,0,141 
QB 1068 DATA 197,6,160,8,173,199,6,24,105 

,16,145,220,32,20,32,169,2,141,30,208, 

173,14,208,41,3 
TU 1069 DATA 201,0,208,3,76,20,35,169,8,1 

41,189,6,169,6,56,237,197,6,168,162,24 

7,169,164,141,1 
JQ 1070 DATA 210,189,81,29,141,0,210,173, 

10,210,153,225,6,169,8,133,20,165,28,2 

01,20,144,250,232,208 
BE 1071 DATA 226,169 
VC 1073 DATA 0,141,0,210,141,1,218,169,25 

4,153,225,6,169,1,141,189,6,32,237,31, 

238,197,6,173,197 
MJ 1074 DATA 6,201,7,144,9,238,199,6,286, 

200,6,76,145,34,32,34,32,141,173,6,32, 

62,32,173,15 
FL 1075 DATA 268,41,3,281,8,248,56,169,1, 

141,195,6,162,193,173,197,6,41,1,201,1 

,208,2,162,50 
Ml 1076 DATA 142,207,6,142,0,208,142,1,20 

8,32,237,31,206,201,6,160,0,173,201,6, 

24,105,16,145,218 
LL 1077 DATA 32,62,32,173,281,6,281,0,208 

,3,76,74,34,169,2,141,30,208,173,120,2 

,141,208,6,173 
EU 1078 DATA 205,6,201,1,208,3,76,232,35, 

173,282,6,281,1,248,21,173,132,2,201,0 

,208,14,173,120 
TU 1079 DATA 2,141,204,6,169,1,141,202,6, 

141,211,6,173,202,6,201,1,208,91,32,34 

,32,174,203,6 
MI 1080 DATA 56,253,101,30,141,173,6,172, 

204,6,192,11,240,7,172,204,6,192,18,28 

8,10,173,207,6,56 

A.N.A.L.O.G. COMPUTING 'SEPTEMBER l?88 



LU 1081 DATA 253,113,38,141,287,6,172,284 

,6,192,7,248,7,172,284,6,192,6,288,18, 

173,207,6,24,125 
WP 1082 DATA 113,30,141,287,6,173,207,6,1 

41,0,288,141,1,208,238,203,6,173,203,6 

,201,12,208,8,169 
HH 1083 DATA 0,141 
XU 1085 DATA 203,6,141,202,6,76,215,36,17 

3,205,6,201,1,240,39,173,208,6,201,13, 

208,88,169,1,141 
AU 1086 DATA 205,6,160,0,177,224,281,56,2 

40,11,169,237,133,224,169,29,133,225,7 

6,22,36,169,101,133,224 
GC 1087 DATA 169,29,133,225,173,205,6,281 

,1,208,49,32,34,32,24,105,4,141,173,6, 

238,218,6,173,218 
BE 1088 DATA 6,281,12,288,27,32,34,32,141 

,173,6,169,8,141,285,6,141,218,6,165,2 

24,56,233,182,133 
MC 1089 DATA 224,165,225,233,0,133,225,76 

,215,36,173,208,6,201,10,248,14,173,20 

8,6,201,8,240,7,173 
DX 1090 DATA 208,6,201,11,288,21,169,135, 

133,224,169,29,133,225,173,207,6,201,4 

7,240,3,205,207,6,76 
EL 1091 DATA 159,36,173,208,6,201,6,240,1 

4,173,208,6,201,5,248,7,173,288,6,201, 

7,288,74,169,255 
NS 1892 DATA 133,224,169,28,133,225,173,2 

87,6,281,200,240,3,238,207,6,173,207,6 

,141,0,208,141,1,208 
RL 1093 DATA 172,214,6,165,224,24,121,125 

,30,133,224,165,225,105,0,133,225,238, 

215,6,173,215,6,201,3 
5E 1094 DATA 208,20,169,0,141,215,6,238,2 

14,6,173,214,6,201,4,208,5,169,0,141,2 

14,6,160,0,162 
JD 1095 DATA 2,142 
LW 1097 DATA 193,6,173,197,6,10,141,194,6 

,152,24,105,12,56,237,194,6,170,185,21 

6,6,201,1,288,89 
HQ 1098 DATA 185,218,6,201,1,240,18,185,2 

20,6,56,233,1,153,220,6,281,8,208,69,1 

69,1,153,218,6 
NC 1099 DATA 173,197,6,41,1,281,1,248,29, 

254,175,6,254,175,6,189,175,6,201,214, 

144,13,169,38,157 
VH 1100 DATA 175,6,169,0,153,216,6,153,21 

8,6,76,78,37,222,175,6,222,175,6,189,1 

75,6,201,38,176 
MG 1101 DATA 13,169,214,157,175,6,169,0,1 

53,216,6,153,218,6,200,174,193,6,202,2 

08,134,173,216,6,201 
LM 1102 DATA 1,240,38,173,217,6,201,1,240 

,31,173,10,210,41,15,24,105,16,141,220 

,6,141,221,6,173 
ZM 1103 DATA 10,210,41,1,168,169,1,153,22 

0,6,141,216,6,141,217,6,174,200,6,160, 

255,169,0,133,77 
CT 1104 DATA 136,208,249,282,208,244,76,1 

71,34 
DT 4000 GRAPHICS 5 
GR 4010 XX=U5RC1536] 
MM 5001 DATA 104,169,28,133,206,169,252,1 

33,205,165,129,201,7,208,8,169,7,133,2 

86,169,8,133,285,165,136 
TE 5802 DATA 133,283,165,137,133,284,162, 

248,224,3,208,108,160,4,200,177,203,20 

1,48,144,6,177,203,201,155 
HO 5883 DATA 288,243,152,72,136,177,203,5 

6,233,48,133,207,169,10,133,209,152,2, 

134,208,136,177,203,201,48 
MM 5004 DATA 240,20,177,203,201,48,144,23 

,56,233,48,170,165,207,24,101,209,202, 

208,250,133,207,169,100,133 
KH 5005 DATA 209,166,208,202,208,218,160, 

0,165,207,145,205,230,205,165,205,201, 

0,208,2,238,206,104,168,177 
GH 5006 DATA 203,201,155,208,165,160,2,16 

5,203,24,113,203,133,203,165,204,105,0 

,133,204,160,4,177,203,201 
OJ 5007 DATA 1,240,140,224,240,240,229,16 

5,129,201,7,208,34,169,0,133,207,169,7 

,133,208,169,252,133,205 
Ua 5008 DATA 169,28,133,206,162,8,160,0,1 

77,207,145,205,200,208,249,230,206,230 

,208,202,208,240,169,252,141 
SV 5009 DATA 231,2,169,28,141,232,2,76,25 
m.. 2,28 fl 

41 




by Michael A. Banks 

Keeping in touch is important for those 
of us onHne, wliich is one reason why E- 
mail, Forum and real-time Conference 
(described in recent installments of this 
column) are popular features in ANA- 
LOG'S Atari Users' Group. These are not 
the only means of information inter- 
change in the SIG, however There are two 
special information pipelines provided by 
the SIG: announcements and polls. 

Finding out wliat's new: 
Announcements 

As you've probably noticed in the past, 
"one shot" announcements are occasion- 
ally displayed when you enter the Atari 
Users' Group, after the "ANALOG Com- 
puting" logo and before the Atari menu. 
These are special messages called "Briefs." 
(No, not the kind you wear!) They're dis- 
played to you only once, unless updated 
by the group manager. Similar messages 
may pop up when you enter the Confer- 
ence, Database, Forum or Poll areas. 

Ever wonder where those messages 
come from — or go? Did you miss some- 



you haven't been online in a 
wliile, you'il be surprised to 
find a siightiy aitered set of 
database topics. 



42 



SEPTEMBER 1988 • A.N. A.L.O.G, COMPUTING 



2. WHEN THE SMOKE 

Creation date: API 


ROLLS. . . 
i 19,1988 


created by HRGOODPROBE. 


when your computer/d 
the way, for online 


isk dr 
repair 


Lve/monitor breaks, what do you do? By 
info, leave messages to Mr. Goodprobe! 


CHOICE 




^OTES 


PERCENT 


1. I take it to a 

2. Send it to be 
Fix it myself 
Buy a new one 
Have friend fix i* 
call bbs for help 
Cry loud and suffe 
Borrow a friends. 


lo 
ix 

r 




5 


1 
1 



0% 

0% 

70% 

0% 

0% 

15% 

16% 

0% 


TOTAL VOTE: 




6 




Type "VOTE" to vot 


e, 


"READ' 


to read comments, <return> for next poll: 



Figure I 



If you're interested in voicing your 

opinion in pubiic, or coilecting 

opinions of otiiers, ciieclt out tiie 

Foils area in the Atari Users' Group. 



thing important the last time one scrolled 
by? Want to find out what else is new in 
the SIG? It's easy to reread these messages, 
and see others. Type ANNOUNCE- 
MENTS at the Atari menu. This selection 
leads you to the Announcements area 
and this category selection menu: 



Announcements Menu; 

What's New 
conference News 
Database News 
Forum News 
Poll News 



Recent Software changes 
Main Banner Display 
Membership Agreement Display 
New Member Welcome Display 
Exit 



ANNOUNCE >which Announcement category? 

The selections on the left side of the 
menu lead to those "Briefs." Select one of 
those topics, and you'll see an appropri- 
ate prompt (such as WHAT'S-NEW® ), and 
DELPHI will tell you how many an- 
nouncements are available in this partic- 
ular category. Type SCAN to see a 
directory of waiting messages, which will 
be similar to this isainple: 



contents 




1 


3-MAY 


BRIEF MAY PROGRAMS 


2 


21-APH 


BRIEF ST TOPIC DELETIONS 


3 


14-APR 


BRIEF Z-MAG AND ST REPORT 


4 


21 -MAR 


HAPPY BIRTHDAY 


5 


7 -MAR 


BRIEF PROGRAMMER'S PAL 


6 


4-MAR 


BRIEF ATTENTION AUTHORS 


7 


12-FEB 


BRIEF ON-LINE SHOPPING 


WHAT 


s-NEW>(Scan, Read, "?" or Exit): 



To read a message, simply type its num- 
ber Press RETURN to see the message im- 
mediately following. (Type ? to see a menu 
of other choices.) 

(The one-time "Brief messages contaii; 
the word BRIEF in their titles. The What's- 
New category contains the Briefs that are 
displayed when you enter the SIG.) 

Of the selections on the right side of 
the category selection menu, all but one 
display specific announcements, then 
return you to the Announcements 
category selection menu. Thus, "Main 
Banner Display" displays the SIG's ban- 
ner (the "ANALOG Computing" logo and 
accompanying text); "Membership Agree- 
ment Display" displays the terms to which 
you agreed when you joined; and "New 
Member Welcome Display" displays the 
welcoming message you read when you 
first joined the Atari Users' Group. 

"Recent Software Changes" leads to a 
self-directing database which you can 
search for information about new fea- 
tures in the SIG's operating software. 

Take a vote: Poll 

If you're interested in voicing your 
opinion in public, or collecting the opin- 
ions of others, check out the Polls area in 
the Atari Users' Group. This is where you 
can survey opinions on the computer 
topics and other matters. You can express 
your opinion by voting in a poll and ad- 
ding comments, scanning poll results or 
creating your own polls. To enter the Poll 
area, type POLL at the Atari menu. You'll 
see this menu: 

continued on page 44 



Make the 

Delphi Connection! 

As a reader of ANALOG Computing, 
you are entitled to take advantage of a 
special Delphi membership offer. For 
only $19.95 plus postage and handling 
($30 off the standard membership 
price!), you will receive a lifetime sub- 
scription to Delphi, a copy of the 
500-page DELPHI: The Official Guide by 
Michael A. Banks and a credit equal to 
one free evening hour at standard con- 
nect rates. Almost anyone worldwide 
can access Delphi (using Tymnet, Tele- 
net or other networking services) via a 
local phone call. Make the Delphi con- 
nection by signing up today! 



To join Delphi: 



1. Dial 617-576-0862 with any terminal 
or PC and modem (at 2400 bps, dial 
576-2981). 

2. At the Username prompt, type JOIN- 
DELPHI. 

3. At the Password prompt enter 
ANALOG. 

For more information, call Delphi 
Member Services at 1-800-544-4005, or 
at 617-491-3393 from within Mas- 
sachusetts or from outside the U.S. 

Delphi is a service of General Video- 
tex Corporation of Cambridge, Mas- 
sachusetts. 



.i£ 



A.N.A.L.O.G, COMPUTING'SEPTEMBER 1988 



43 



POLL Menu: 

BROWSE through poll results 

CREATE a new poll 

EDIT your poll cominent 

EXIT 

HELP 

LIST poll names 

RESULTS with comments 

VOTE on a poll 



Conferences are a 

great place to share 

info, get answers to your 

questions about Atari computers 

and tlie Atari Users' Group, 

and to meet otiier Atari users. 



POLL> ( BROWSE , CREATE , EDIT , LIST , RESULTS , VOTE ) 

The commands are pretty much self- 
explanatory, but here's a quick-reference 
guide to using them. BROWSE is used to 
view the current voting results of any or 
all polls. Type BROWSE alone to see the 
results of all polls in sequence. Each poll's 
results will be displayed, followed by a 
prompt asking if you want to vote on the 
current poll, read the current poll's com- 
ments or skip to the next poll. (This fea- 
ture is a convenient alternate to using 
VOTE, if you wish to vote on every poll.) 

If you type BROWSE followed by the 
first few letters of the name of a poll you 
wish to peruse, you'll see the results of 
that poll only (To see the names of the 
available polls, type ? after you type 
BROWSE.) The option to read, vote or 
skip will be presented after the poll's vot- 
ing results are displayed. 

CREATE lets you create a poll to sam- 
ple the opinions of your fellow Atari 
users. After selecting CREATE, type a 
descriptive name for your poll (up to 60 
characters in length) and select a poll for- 
mat from among the three available (YES- 
NO, Degree of agreement or disagree- 
ment, or Multiple choice). Next, enter a 
few lines of text to describe and present 
your issue to the voters. Enter CTRL-Z, 
and your poll will be posted. 

Use EDIT to amend or add to your 
comments after you have voted on a poll. 
You'll be prompted to enter the text that 
will replace your current comments. 
Enter CTRL-Z when you're finished, or 
CTRL-C to abort and leave your comment 
unchanged. 

LIST lists the names of all the polls 
available. 

Use RESULTS if you wish to see the 
complete results of a specific poll, includ- 
ing all cominents. Type RESULTS fol- 
lowed by the name of a poll to see the 
results of that poll. (If you type RESULTS 
alone, you will be prompted for the name 
of a poll.) 

To vote on a specific poll, type VOTE. 
Voting is easy — just follow the online 
prompts. You will be prompted for the 
poll name, after which DELPHI will dis- 
play the text presenting the issue and 
prompt you for your vote and comments 
(up to four 80-character lines). Polls show 
votes by number and percentage, and 



users may add voting choices to some 
polls. A typical poll (with results) looks 
like Figure 1: 

Database reorganization 

If you haven't been online in a while, 
you'll be surprised to find a slightly al- 
tered set of database topics (these changes 
are reflected by the Forum topics as well). 
The ST topics are gone — there's now a to- 
tally separate group for ST users, hosted 
by STLog Magazine (type ST at the 
GROUPS menu to visit it). This has left 
room for our 8-bit databases to "stretch 
out," both topic- and content-wise. Here's 
the new lineup: 



Databases Available Menu: 

General Interests 
Games s Entertainment 
Telecommunications 
Utilities 
Sight St Sound 

TOPIOWhich topic? 



Education 
Reviews & News 
Koala Pictures 
Current Issue 
Home use 



(By the way, if you're not yet online and 
all this looks interesting, check elsewhere 
in these pages for a DELPHI online sign- 
up and membership offer provided espe- 
cially for ANALOG readers!) 

Conference reminder 

Don't forget the real-time conference 
held in the Atari ST Users' Group every 
Tuesday at 10 p.m., EST You don't have 
to wait for Tuesday to roll around to chat 
with other Atarians. Type WHO when you 
enter the SIG to see who's in conference 
(and chances are very good there will be 
a conference going on). If there are no 
conferences going on when you enter the 
SIG, you'll still see a list of members cur- 
rently in the SIG. You usually start 
your own conference by going to the 
conference area and typing /PAGE fol- 
lowed by one or more of the member- 
names, separated by commas, listed when 
you typed WHO. (Example: /PAGE KZIN, 
ANALOG4.) 

Conferences are a great place to share 
information, get answers to your ques- 
tions about Atari computers and the Atari 
Users' Group, and to meet other Atari 
users. That's it for now. See you next 
month with more tips and a few surprises. 
See you online! 

In addition to having published science fiction 
novels and books on rocketry. Michael A. Banks 
is the author of DELPHI: The Official 
Guide and The Modem Reference — both 
from Brady Books/Simon & Schuster. To order 
DELPHI: The Official Guide, type GO 
GUIDE at any SIG prompt. You can contact 
Banks on DELPHI by smiding E-mail to mem- 
hemame KZIN. H 



SEPTEMBER I ?88 ' A.N , A, L.O.G. COMPUTING 



T \^ T 










A.N.A.L.O.G, COMPUTING'SEPTEMBER 198! 



Actually, it's a little worse than 
"very strange." If you try to do 
tilings like print to the screen 
when the decimal flag is set, 
you can wind up in computer 
never-never land. 

45 




he rather cryptic title of this ar- 
ticle can be translated as "Binary- 
Coded Decimal and You." Last 



month we discussed some rou- 



tines for interconverting strings of numeric 
ASCII characters and their binary represen- 



tations as integers. 



I know you're eager to dive into 
tiie sampie program for today, 
but I'm going to lioid you back 
a little longer. 



BCD N U 

This time we tackle another common- 
ly used method for storing numbers in 
computers: binary-coded decimal, or BCD 
for short. After I explain the BCD 
representation, we'll see how to change an 
ASCII string into a BCD storage format. 
I also have some examples of how to do 
arithmetic with numbers stored in BCD 
from, and some traps you can fall into if 
you don't keep your wits about you. 

Binary-Coded Decimal 

Look at the bit patterns for digits 0-9 
shown in Table 1. Notice that they range 
form 0000 to 1001. The point here is that 
we need only four bits to represent any 
one of the ten decimal digits. You no 
doubt recall that the standard byte con- 
tains a grand total of eight bits. If we think 
of subdividing a byte, we could make a 
duplex with each unit containing four 
bits. A 4-bit unit is sometimes referred to 
as a "nybble" (a small byte — get it?). I've 
seen it spelled more conventionally as 
nibble, but I'll use the "y" so the non- 
computer whizzes who read this will think 
I'm talking about something really ob- 
scure and hence important. 

Since we can store the binary represen- 
tation of any one decimal digit in each 
nybble, the largest value that could be 
stored in a single byte this way is 99. This 
corresponds to a bit pattern of 1001 in 
each nybble; the entire storage contains 
10011001. This two-digit-per-byte data 
storage method is the infamous binary- 
coded decimal. 

There are two ways to interpret a bit 



pattern of 10011001. In pure hexadecimal, 
it is $99, which corresponds to decimal 
153. But if we think of it as two decimal 
digits, that bit pattern means decimal 99. 
We need some way to tell the computer 
which meaning we have in mind at any 
given time. 

Doing arithmetic on BCD numbers is 
different from processing binary num- 
bers also. In binary, adding 1 to a byte 
containing the value OOOOIOOl ($09) 
produces the value OOOOIOIO ($0A). In 
BCD, adding I to OOOOIOOl (09) would 
result in 00010000 (10). Similarly, adding 
I to lOOllOOl in hex terms produces 
lOOlIOlO ($99 to $9A). But in BCD we 
should wind up with 00000000 in this 
byte and the carry flag set to indicate that 
a higher order byte must be increment- 
ed. This is a fancy way of saying that 99 
plus I equals 100. 

The 6502 microprocessor in the Atari 
8-bit computers can perform either 
decimal or binary arithmetic, thereby 
handling either of the two conditions 
from the previous paragraph. Bit 3 in the 
processor status register controls whether 
decimal mode (bit set) or binary mode 
(bit cleared) is selected. So far, we've per- 
formed only binary arithmetic opera- 
tions, so most of our programs have 
begun with a CUD (CLear Decimal mode) 
instruction. To choose decimal mode, use 
the SED (SEt Decimal mode) instruction. 
You will get very strange results if the 
decimal flag isn't set the way you think it 
is; so it's always a good idea to explicitly 
select the desired mode. 

Actually, it's a little worse than "very 



H 



SEPTEMBER 1988 • A.N.A.L.O.G, COMPUTING 



strange." If you try to do things like print 
to the screen when the decimal flag is set, 
you can wind up in computer never-never 
land, with a coldstart being the only way 
back. Always clear decimal mode with the 
CLD instruction when you've finished 
your decimal arithmetic operations. 

Interconverting ASCII and BCD 

Today's example is similar in format to 
last month's discussion of how to inter- 
connect ASCII and binary storage for- 
mats for integers. Listing 1 contains two 
macros in MAC/65 format that should be 
appended to your MACRO.LIB file using 
the line numbers shown. Similarly, List- 
ing 2 contains a pair of subroutines called 
by these macros; append Listing 2 to your 
SUBS.LIB file. 

My MACRO.LIB file is now an even 100 
single-density sectors long. If you're using 
a RAM disk for assemblies, this is only a 
minor nuisance. However, reading a file 
that large from a physical disk each time 
you do an assembly takes a long time, and 
it doesn't do your disk drive any good. 
You may want to think about splitting the 
MACRO.LIB file into several smaller 
library files, perhaps grouped logically by 
function. You can do this any way you like, 
and just .INCLUDE the ones you need for 
your current project. Be sure to keep the 
equates needed by the macros accessible 
(and unduplicated). In fact, you might just 
collect all the equates into a separate 
EQUATES.LIB file. I'll leave the details of 
the MACRO.LIB dissection to each of you. 

The two new macros, and their cor- 
responding subroutines, are named 
ASC2BCD and BCD2ASC. These comple- 
ment the ASC2INT and INT2ASC rou- 
tines from the previous Boot Camp. 
ASC2BCD takes a string of up to six nu- 
meric characters and converts it into a 
three-byte BCD number. Not surprising- 
ly BCD2ASC takes a three-byte BCD num- 
ber and transforms it right back into a 
printable ASCII string. The macros them- 
selves do some error checking and use 
parameters to handle ASCII strings and 
BCD numbers stored at any address, while 
their subroutine partners do most of the 
real work. 

ASCII to BCD 

We'll start at the beginning. Please turn 
your attention to the ASC2BCD macro in 
Listing 1. ASC2BCD expects two para- 
meters, the address of the ASCII string to 
convert, and the address where the result- 
ing three-byte BCD number is to be 
stashed. An error message appears if the 
number of parameters is not two (Lines 
8130-8140). 



This macro begins just like the 
ASC2INT macro from last time. Lines 
8160-8220 copy the characters from the 
input string at the address specified in 
parameter % 1 to a work address labeled 
ASCII. The ASCII address was defined in 
Listing 1 from last month as $0690. The 
input string must terminate with an end- 
of line character ($9B). In our sample pro- 
gram today, the numeric string to convert 
is read from the keyboard using our IN- 
PUT macro, which automatically guaran- 
tees that an EOL character will be 
present. 

Line 8230 calls the VALIDASC subrou- 
tine from last month, which makes sure 
that all the characters in the string are in 
fact digits in the range 0-9. If not, the carry 
flag is set in the subroutine to indicate an 
error. Line 8240 handles this condition 
by simply short-circuiting around the rest 
of the macro code. The main program 
that invoked this macro handles the er- 
ror condition, as we'll see a little later. I 
don't have any provision for handling 
negative numbers. 

Subroutine VALIDASC retains only the 
lower four bits from the ASCII character. 
That is, if you entered the digit "7" at the 
keyboard, the ASCII value is $37, and 
VALIDASC changes this back into a plain 
"7" after confirming that it is a legal entry. 

After the conversion, the BCD number 
resides at a work location called NUM, de- 
fined as $0696 last month. Lines 
8280-8350 copy the BCD result to the 
desired output address specified in 
parameter %2. 

After all this monkey business, we wind 
up with a string of characters at address 
ASCII which looks exactly like what we 
typed at the keyboard. Let's pretend we 
typed the number "7239." Our goal is to 
convert the input string, now typed in five 
bytes like this (showing both nybbles in 
each byte): 

07 02 03 09 9B 

into BCD format stored in three bytes like 
this: 

00 72 39 

Notice that this numeric storage format 
is different from the low-byte/high-byte 
format used for binary integers. 

Line 8250 of Listing 1 calls the 
ASC2BCD subroutine in Listing 2 to han- 
dle the details of the conversion. Now 
please direct your attention to Listing 2. 

First we need to know how many input 
digits to convert to BCD. When we get to 
today's example in Listing 3, you'll see that 



The non-computer 
whizzes who read this will think 
I'm talking about something 
really obscure and Important. 



A,N,A,L,0,G, COMPUTING'SEPTEMBER 1988 



47 



The 6502 microprocessor knows 
how to do arithmetic on numbers 
stored in both binary and 
decimal modes. There are a 
few differences. 



the value we need was stored in a work 
address labeled CHARCTR. The value in 
CHARCTR includes the EOL character, 
so it is one larger than the actual num- 
ber of digits in the input number. Lines 
4720-4740 of Listing 2 set up the X- 
register as an offset for the characters for 
the BCD bytes. Here's the conversion plan. 

We'll begin by zeroing the three bytes 
where the BCD result will be stored. Lines 
4760-4790 handle this task. The conver- 
sion step will begin with the least signifi- 
cant (rightmost) digit in the entered 
ASCII string. This number becomes the 
low-order nybble in the least significant 
(rightmost) BCD byte (Lines 4810-4820). 

If the ASCII string to be converted con- 
tains an odd number of digits, the high- 
order nybble of one of the the BCD bytes 
will remain zero. This should be appar- 
ent to you. Line 4830 in Listing 2 points 
to the next ASCII character, which is des- 
tined to go into the high-order nybble of 
the current BCD byte. Line 4840 checks 
to see if we've reached the end of the AS- 
CII string yet. If not, fetch the contents 
of the next ASCII byte (Line 4850). 
Remember that we've already changed 
this from the original ASCII value to the 
value of the digit itself (e.g., $37 was 
changed to 7). 

Lines 4860-4890 shift this number four 
bits to the left, thereby relocating it to the 
high-order nybble of the accumulator. 
Line 4900 combines the result with the 
low-order nybble from the previous AS- 
CII digit, and the completed BCD byte 
(now containing two digits) is stored back 
where it belongs (Line 4910). Lines 
4920-4960 check to see if we're done with 
the ASCII string yet and loop back to con- 
tinue if not. 

This discussion is a little confusing. You 
might find it illuminating to use your 
debugger to trace through a stepwise 
processing of a sample input number af- 
ter entering Listing 3, and see how the 
ASC2BCD subroutine does its thing. 

I know you're eager to dive into the 
sample program for today but I'm going 
to hold you back a little longer The sam- 
ple program goes through a bunch of 
BCD arithmetic examples, which we'll get 
to in a moment. But while the details of 
the ASCII-to-BCD conversion are fresh in 
your mind, I want to tackle the reverse 
process. Bear with me. 

BCD to ASCII 

I'm sure you can figure out what we 
must do to change a number stored in 
BCD format into a printable ASCII string. 
There are two basic steps. First, split the 
high and low nybbles of each byte in the 



BCD number into separate bytes in the 
output string. And second, convert the 
digits into their corresponding ASCII 
values. As an additional cosmetic nicety, 
we'll also convert any leading zeros to 
leading blanks. 

The BCD2ASC macro begins at line 
8540 of Listing 1, and the complementary 
BCD2ASC subroutine starts at line 5150 
of Listing 2. The macro again requires 
two parameters, the address of the BCD 
number to be converted and the address 
where the resulting ASCII string should 
be stored. Three bytes at address NUM 
and six bytes at address ASCII are again 
used as work locations. Lines 8580-8630 
of the macro copy the contents of the 
BCD number into work location NUM. 
The subroutine BCD2ASC is then called. 
Lines 8650-8710 then copy the resulting 
string from address ASCII into the ad- 
dress specified in parameter %2. Lines 
8720-8740 tack an EOL character on the 
end so the string can be printed. 

This time the conversion proceeds 
from left to right (high order to low ord- 
er). In the BCD2ASC subroutine, I've set 
aside one byte (called ZEROBLANK, de- 
fined in Line 5570 of Listing 2) to indi- 
cate whether a zero digit is to be 
represented as a zero ASCII character 
($30) or as a blank ($20). ZEROBLANK 
is initially set to $20 in Lines 5160-5170 
so as to print leading zeros as blanks. 
However, as soon as a non-zero digit is en- 
countered, ZEROBLANK is set to $30 so 
that zeros in the middle of the number 
appear properly. 

Line 5210 gets the first (leftmost) BCD 
digit, which is saved temporarily on the 
program stack (Line 5220). (The X- 
register is used as an offset into the BCD 
number, and the Y-register as an offset 
into the ASCII string.) The high nybble 
is moved into the low nybble with a ser- 
ies of four right shifts; this is the oppo- 
site of the four ASLs we used in the 
ASC2BCD process. If the result is a zero, 
Lines 5290-5300 store the current value 
of ZEROBLANK into the next position in 
the output string. If the digit is not a zero, 
Lines 5330-5360 convert the digit to AS- 
CII by adding $30 to it, store the result 
in the output string, and set the value of 
ZEROBLANK to an ASCII zero. 

Lines 5380-5400 point to the next out- 
put character, retrieve the BCD byte, and 
strip off the four most significant bits. 
This leaves just the low nybble, which is 
the second of the two digits in the BCD 
byte. Then the same activities are per- 
formed as for the first digit, depending 
on whether the digit is a zero or not 
(Lines 5410-5440). After processing all 



48 



SEPTEMBER 1 988 ' A.N.A.L.O.G. COMPUTINf 



three BCD bytes, we wind up with a print- 
able ASCII string. Voila. 

BCD Arithmetic 

Now for the interesting part. The 6502 
microprocessor knows how to do arith- 
metic on numbers stored in both binary 
and decimal modes. There are a few 
differences you should keep in mind, and 
Listing 3 will help you out. 

The program in Listing 3 asks you to 
enter a number up to six digits long, veri- 
fies that you entered only digits, converts 
the string of ASCII characters to a three- 
byte BCD number, and performs some 
representative arithmetic operations in 
both BCD and decimal mode. The results 
from each operation are printed on the 
screen in a little table. Let's walk though 
Listing 3 now. 

Line 160 pulls in the macros from our 
library file. Be sure to change this state- 
ment if you are using a real disk drive in- 
stead of the D8: RAM disk, or if you 
segmented the MACRO.LIB file as I sug- 
gested earlier. Some work variables are 
defined in Lines 280-310. BCD is the 
home of the BCD number. CHARCTR 
contains the number of ASCII characters 
you entered (including the EOL charac- 
ter). INBUF is an input buffer for the 
number you enter, and OUTBUF is an 
output buffer for the printable ASCII 
result. 

As usual, the executable code begins 
at address $5000. Lines 520-590 clear 
decimal mode (for now), clear the screen, 
prompt you to enter a number, store the 
number at INBUF, and store the number 
of characters you entered at CHARCTR. 
Lines 650-760 set up the column and row 
headings for the output table; the text 
strings to be printed are stored in Lines 
2350-2480. Line 830 converts the input 
string in INBUF to BCD representation 
at address BCD. We'll have to repeat this 
after each sample calculation to make 
sure the BCD number starts out the same 
way every time. If there's an error in the 
BCD conversion, the carry flag will be set 
and the program terminates due to Lines 
840-850. 

The program has four sample calcula- 
tions: increment the lowest BCD byte; add 
decimal 25 to the BCD number; add hex 
25 to the BCD number; and add the con- 
tents of the middle BCD byte to the whole 
BCD number. Each calculation is done in 
both binary and decimal modes. I suggest 
you try this program with several sample 
entries, to see what happens. Press return 
after the output appears to try another 
number. Four interesting numbers to try 
are 0, 1234, 999 and 7239. On the off 



chance that you don't really want to spend 
the time typing in the listings, I've includ- 
ed tables to the output you would see for 
each of these test cases (Tables 2-5). 

Incrementing 

The simplest arithmetic operation you 
can do in 6502 assembly language is to 
increment the contents of a byte. The op- 
code for this is, of course, INC. Lines 
980-1030 increment the least significant 
byte of the BCD number (BCD«2) in bi- 
nary mode, and Lines 1070-1130 do the 
same in decimal mode. Notice the SED 
instruction in Line 1070 to set the 
decimal mode flag. Line 1090 clears the 
flag immediately after the arithmetic is 
done to avoid problems with subsequent 
operations. After each operation, the 
resulting value at address BCD is convert- 
ed to ASCII at address OUTBUF and 
printed on the screen. 

The first line of Table 2 shows that INC 
works just fine when the target number 
is 0, giving the expected result of 1 in each 
case. Table 3 shows that INC works fine 
for the number 1234 also. But wait! An in- 
put value of 999 gives the bizarre result 
of 99:. Something similar happens in Ta- 
ble 5 with 7239. How can this be? 

Well, for Table 4, BCD -f 2 contains "99," 
which is incremented to "9A." Converting 
to ASCII gives two bytes, containing $39 
(prints as a 9) and $3A (prints as a colon, 
:). Hmmmm. We really wanted the BCD 
number "99" to increment to "00," setting 
the carry flag to indicate that the next 
higher order byte should also be in- 
cremented. It appears that the INC in- 
struction has the same effect in decimal 
mode as it does in binary Moral: Don't 
use INC to add 1 to a BCD number. In- 
stead, go through the cumbersome mo- 
tions of actually adding 1. 

Adding 25 

Okay, so let's add something to a BCD 
number. Lines 1210-1330 add an immedi- 
ate value of 25 decimal to the BCD num- 
ber you entered in binary mode. Lines 
1370-1490 do the same in decimal mode. 
These routines use a subroutine called 
INCREMBCD (Lines 2630-2750 of Listing 
3) to handle the case where the carry flag 
is set after the addition, so that the next 
higher order byte must be incremented 
(by adding 1 to it, of course). This in it- 
self might reset the carry flag, so that the 
highest order BCD byte also has to be in- 
cremented. These operations should 
make sense to you by now. 

Let's do it. Now look at the second out- 
put line in Tables 2-5 to see how our sam- 
ple numbers respond. A problem is 



The simplest arithmetic operation 
you can do in 6502 assembly 
language is to increment the 
contents of a byte. The opcode 
for this is, of course, INC. 



A,N,A,L.O,G. COMPUTING 'SEPTEMBER 1988 



immediately apparent in Table 2. Adding 
25 to gave 19, not 25. Why? Well, the hex 
equivalent of 25 is $19. Last month we ad- 
ded decimal 25 (using an ADC *25 in- 
struction) to a number stored as binary, 
went through the binary-to-ASCII conver- 
sion, and got the right answer. But we've 
scrambled our conventions here. We ad- 
ded a decimal number (stored internally 
as hex, of course) to a BCD number, us- 
ing binary mode, and converted the pre- 
sumed BCD result to ASCII for printing. 
It's not surprising that the wrong result 
shows up. 

The same thing happens with all the 
other input numbers. The weird charac- 
ters in Tables 3 and 4 appear again be- 
cause the addition results have gone out 
of the legal 0-9 BCD range, into values 
which print as other ASCII characters. 
Check out your table of hex codes for AS- 

Tne correct method for adding an cii characters if you dont beiieve me. 



immediate value to a stored BCD 
number is to use the desired 
decimal digits for the immediate 
number, but tell the computer that 
it's a hex number. 



Adding $25 

The correct method for adding an im- 
mediate value to a stored BCD number 
is to use the desired decimal digits for the 
immediate number, but tell the computer 
that it's a hex number That is, to add 
decimal 25 to a BCD number, use an ADC 
*$25 instruction. The third output line in 
each table shows that this approach does 
indeed produce the result of adding 25 
The initial entry of 1234 fortuitously gives 
the correct answer in either binary or 
decimal modes (Table 3). However, an en- 
try of 999 works right only in decimal 
mode (Table 4). In binary mode, the com- 
puter sets the carry flag when the byte's 
contents exceed $FF, not $99 as it does in 
decimal. 



Adding Two Stored Numbers 

The final line of each table shows the 
result of adding the middle byte of the 
BCD number to the entire number, just 
to show how things work when you add 
together two stored values. Table 2 cor- 
rectly shows no output for this line, since 
-f- = 0, which we print as all blanks. 
For the other three cases, the correct an- 
swer is always obtained when the decimal 
flag is set, and only in some cases (e.g.. Ta- 
ble 4) when in binary mode. 

So Wiiat? 

Now you know more about binary- 
coded decimal than you ever dreamed 
possible. But why should you care? Bur- 
row back through your archives to the yel- 
lowed, brittle pages of ANALOG #43. The 
Boot Camp in that issue discussed floating 
point numbers and mathematics in the 



Atari. Floating point numbers use the 
BCD representation as a compact way to 
stuff several digits of precision into a 
minimum number (six) of bytes. A special 
notation is used to keep track of the 
decimal point, exponent and negative 
sign in floating point numbers. BCD 
turns out to be a pretty efficient storage 
format for base-10-type numbers, and 
most computers use some form of BCD 
for floating point storage. 

You may recall that the main alterna- 
tive character-coding method in common 
computer use is called EBCDIC 
(pronounced ebb-see-dick), used mainly 
by IBM mainframe computers. That acro- 
nym stands for "Extended Binary-Coded 
Decimal Interchange Code" See? You can 
run, but you just can't hide from binary- 
coded decimal. 

There's another advantage. In today's 
example program, we converted BCD 
numbers to ASCII strings and printed 
them on the screen. However, you could 
also take each BCD digit, convert it to the 
Atari internal character code by ANDing 
it with $10 (as opposed to $30, which con- 
verts it to ASCII), and poke the result 
directly into the screen RAM for the cur- 
rent display. This is simpler and faster 
than printing on the screen, and the 
visual result is the same. A good example 
of this technique can be found in James 
Hague's Streamliner from ANALOG #56. 
See the right column of page 37 in that 



Promise 

I promise: no more hard-core comput- 
ing for awhile. We'll get back to some 
graphics (wanna know how to draw cir- 
cles?), sound effects and real-time clocks 
(how about a metronome program?), and 
maybe even the kernel of an adventure 
program; a simple vocabulary parser Stay 
tuned. 



Table 1. ASCII Codes for 
Decimal Chaiacters 



Character 




1 
2 
3 
4 
5 
6 
7 
8 




ASCII 

Values 

$30 
S3] 
S32 
$33 
$34 
$35 
$36 
,$37 
.$38 
$39 



Binary 
Value 



0000 

0001 

0010 

0011 

0100 

0101 

0110 

0111 

lOOffi 

1001 



SO 



SEPTEMBER 1 988 • A.N.A.L.O.G, COMPUTING 



Table 2. 


Sample Output ] 
Number of 


From Input 


INC 

Add 25 
Add $25 
Add 2nd 
Byte 


Binary Mode Decimal Mode 

1 1 

19 19 

25 25 



Table 4. 


Sample Output From Input 




Number of 999 




Binary Mode Decimal Mode 


INC 


99: 99: 


Add 25 


9;2 1018 


Add $25 


9;> 1024 


Add 2nd 




Byte 


9:2 1008 



Table 3. 


Sample Output P"rom Input 




Number of 1234 






Binary Mode Decimal Mode 


INC 


1235 


1235 


Add 25 


124= 


1253 


Add $25 


1259 


1259 


Add 2nd 






Byte 


1246 


1246 



Table 5. 


Sample Output From Input 




Number of 7239 






Binary Mode Decimal Mode 


INC 


723: 


723: 


Add 25 


7252 


7258 


Add $25 


725 > 


7264 


Add 2nd 






Byte 


72:; 


7311 



LISTING 1: ASSEMBLY 



8018 
8823 
8838 
8848 
8858 
8868 
8078 
8080 
8090 
8108 
8118 
8128 
8138 
8148 
8150 
8160 
8170 
8188 
8198 
8208 
8210 
8220 
8230 
8248 
8250 
8268 
8278 
8288 
8290 
8308 
8318 
8320 
8338 
8348 
8358 
8360 
8378 
8388 
8398 
8400 
8410 
8420 
8438 
8448 
8458 



KXICltKKKlCKlOCKKKKKMXKMllXKKKMIClCKMK 



ASC2BCD Hacro 

Usage: ft5C2BCD chars, nuMber 
'chars' is address of ASCII 

string to convert, ending w/ EOL 
'nunber' is address of BCD 

representation of the string 

•MACRO A5C2BCD 

• IF >:8<>2 

.ERROR "Error in flSC2BCD" 

.EL5E 

LDK tt255 
GASCL00P2 

INK 

LDA K1,X 

5TA ASCII, X 

CMP «EOL 

BNE QA5CL00P2 

JSR UALIDASC 

BCS GD0HE2 

JSR A5C2BCD 

BCS GBCDERROR 

LDX »8 
GASCL00P3 

LDA NUM,X 

STA X2,X 

XHX 

CPX tt3 

BNE GASCL00P3 

CLC 

BCC GDDNE2 
GBCDERROR 

PRINT C0NUERTMSG2 

SEC 
GD0NE2 

•ENDIF 
.ENDM 

• KXKXKXKXKKKKKKKKXMKKKMKKKKMKKlllC 

;BCD2ASC Hacro 



8460 
8470 
8480 
8490 
8518 
8528 
8538 
8548 
8558 
8568 
8570 
8588 
8598 
8688 
8618 
8628 
8638 
8648 
8658 
8668 
8678 
8680 
8698 
8788 
8718 
8720 
8730 
8740 
8750 
8760 



Usage: BCD2ASC nunber, char^i 
'nunber' is address of BCD 

nunber to convert 
'chars' is address of resulting 

ASCII string, ending with EOL 

.MACRO BCD2ASC 
.IF X0O2 

.ERROR "Error in BCD2ASC" 
.ELSE 
LDA y.i 
STA NUM 
LDA Xl+1 
STA NUM+1 
LDA Xl+2 
STA NUM+2 
JSR BCD2ASC 
LDX tt255 
GBCDLOOP 
INK 

LDA ASCII, X 
STA >'.2,X 
CPX ttS 

BNE GBCDLOOP 
INK 

LDA ttEOL 
STA X2,K 
.ENDIF 
.ENDM 



LISTING 2: ASSEMBLY 



4600 
4610 
4620 
4630 
4640 
4650 
4660 
4670 
4680 
4690 
4788 
4710 
4720 
4730 
4740 



XXXXXXXXKKKXXXXXXXXXXXXXXXXXXXX 



subroutine ASC2BCD 
called by ASC2BCD nacro 

converts string of ASCII digits 
at address ASCII to a 3-b!^te 
binari^-coded decinal represen- 
tation at address NUM 

ASC2BCD 

LDX CHARCTR ;how nany chars 
DEX ;to convert? 
DEX 



A.N.A.L.O.G, COMPUTING'SEPTEMBER 1988 



SI 



4756 

4768 

4778 

4788 

4798 

4888 

4818 

4828 

4838 

4848 

4856 

4868 

4878 

4888 

4898 

4988 

4918 

4928 

4938 

4948 

4958 

4968 

4978 

4988 

4998 

5888 

5818 

5828 

5838 

5848 

5858 

5866 

5876 

5iS86 

5898 

5186 

5116 

5128 

5136 

5146 

5156 

5166 

5178 

5188 

5196 

5288 

5218 

5226 

5238 

5248 

5258 

5266 

5278 

5288 

5298 

5368 

5316 

5326 

5338 

5346 

5356 

5366 

5378 

5386 

5396 

5468 

5416 

5426 

5436 

5446 

5458 

5466 

5476 

5488 

5496 

5588 

5516 

5528 

5536 

5548 

5558 

5568 

5576 



LDY «2 

LDA tt6 

5TA HUH 

STA NUM+l 

STA NUM+2 
NXTDIG 

LDA ASCII, X 

STA NUH, Y 

DEX 

BMI BCDDONE 

LDA ASCII, X 

ASL A 

ASL A 

ASL A 

ASL A 

ORA NUM,V 

STA NUH,Y 

DEX 

BMI BCDD6NE 

DEY 

CLC 

BCC NXTDIG 
BCDDONE 

CLC 

RTS 
C0NUERTMSG2 

.BYTE "ASCII 

.BYTE "wersi 



;zero 3 bytes 
;where BCD value 
; will go 



;set next char 
; low BCD digit 
;point to next 
;done yet? 
;get new char 
;shift into 
;high nybble 



;becoMes high 
;BCD digit 
;point to prev, 
;done yet? 
;point to next 
;BCD digit 
;go get it 

;all done, so 
; leave 

to BCD con" 
on error", EOL 



MKXKKKMMMKMMKKKKMMKKKKKKKKKKMKK 



;get 1st digit 
;stash on stack 

;nove high nybble 
; into low nybble 



subroutine BCD2ASC 
called by BCD2ASC Macro 

converts 3-byte BCD nunber at 
address NUM to a 6-byte ASCII 
string at address ASCII 
leading zeros are changed to 
leading blanks 



BCD2ASC 

LDA tt$28 ;init leading 
STA ZEROBLANK ;char to blank 
LDX tt8 ;pointer to digit 
LDY tt8 ;pointer to char 
NXTDIG2 

LDA NUM,X 
PHA 
CLC 
LSR A 
LSR A 
LSR A 
LSR A 

BNE NONZEROl J equal to 8? 
LDA ZEROBLANK ;yes, set to 
STA ASCII, Y ; leading char 
BPL DOLON ;do low half 
NONZEROl 

ORA tt$ZB ; change to ASCII 

STA ASCII, Y ;add to String 
LDA tt$38 ;set leading 
STA ZEROBLANK ;char to '6- 
DOLOM 

INY ;aiH at next char 
PLA ;get BCD digit 
AND ttSQF ;keep low nybble 

BNE N0NZER02 ; equal to 8? 
LDA ZEROBLANK ;y6s, set to 
STA ASCII, Y ; leading char 
BPL BdDD0NE2 ;all done 
N0NZER02 

ORA tt$30 ;conver to ASCII 
STA ASCII, Y ;add to String 
LDA tt$36 ;set leading char 
STA ZEROBLANK ; to zero 
BCDD0NE2 

INY ;point to next 
INX ;digit and char 
CPX *t3 ;done 3 digits? 



BNE NXTDIG2 ;no, continue 



CLC 
RTS 
ZEROBLANK 



■ DS 1 



;yes, all done 
;exit 



LISTING 3: ASSEMBLY 

6166 ;ExaMple 1. Interconverting ASCII 
6118 jstrings and BCD nuMbers 

12 



8126 

6136 

6146 

6156 

8168 

6178 

8188 

8198 

8268 

8218 

8228 

8238 

6248 

6256 

6266 

6276 

6286 

6296 

6386 

6316 

6328 

6336 

6346 

6356 

6368 

8378 

6386 

6398 

8468 

8418 

8428 

8438 

6446 

6456 

6466 

6476 

8488 

8498 

8586 

8516 

8515 

8526 

8538 

6546 

6556 

6566 

6576 

6586 

8596 

6686 

6616 

6626 

6638 

8648 

8658 

8668 

8678 

8686 

6696 

6766 

6716 

8728 

8738 

8746 

6756 

6768 

6776 

6786 

6798 

6866 

6818 

8828 

6836 

6846 

6858 

8868 

8878 

6886 

8898 

6986 

6918 

8920 

8936 

0948 

8956 

8966 

8978 

0986 

0996 



;by Karl E. Miegers 

.OPT NO LIST, OBJ 
.INCLUDE ttD8: MACRO. LIB 



Store sone work variables at 
$4FE8 so you can exanine then 
if you like 



»= S4FE6 

BCD .DS 3 
CHARCTR .DS 1 
INBUF .DS 7 
OUTBUF .DS 7 



PROGRAM STARTS HERE 

You'll be proMpted to enter a 
nunber with 1-6 digits. This 
is stored at address INBUF. 
The BCD nunber produced is 
stored in 3 bytes starting at 
address BCD. Then several 
arithMetic operations are done 
in both binary and decinal node, 
and a table of results is 
printed out. 



«= $5868 

START 

CLD ;binary node! 

J5R CLS ;clear screen 
PRINT PROMPT ;get input 
POSITION 2,2 ;nuMber 
INPUT 8, INBUF 

LDX n$6e ;get nuMber of 

LDA ICBLL,X ;chars entered 

STA CHARCTR 



lay out the table of results 



POSITION 12,5 
PRINT TITLE 
POSITION 12,6 
PRINT HYPHENS 
POSITION 2,8 
PRINT INCRE 
POSITION 2,18 
PRINT DEC25 
POSITION 2,12 
PRINT HEX25 
POSITION 2,14 
PRINT ADDBYTE 



convert string to BCD, abort if 
have a conversion problem 



ASC2BCD INBUF, BCD 
BCC NOPROBLEM 
JMP END 



First line: increnent the BCD 

nuMber in binary and decinal 

nodes; be sure to set back to 

binary before doing anything 

else! 

reconvert froM input string to 

BCD after each operation 



NOPROBLEM 
CLD 
INC BCD+2 



SEPTEMBER 1 588 • A,N ,A. L,0,G. COMPUTING 



1080 

leie 
leze 
lese 

1040 
1050 
1060 
1070 
1080 
1090 

1100 

1110 
1120 
1130 
1140 
1150 
1160 
1170 
1180 
1190 
1200 
1210 
1220 
1230 
1240 
1250 
1260 
1270 
1280 
1290 
1300 
1310 
1320 
1330 
1340 
1350 
1360 
1370 
1380 
1390 
1400 
1410 
1420 
1430 
1440 
1450 
1460 
1470 
1480 
1490 
1500 
1510 
1520 
1530 
1540 
1550 
1560 
1570 
1580 
1590 
1600 
1610 
1620 
1630 
1640 
1650 
1660 
1670 
1680 
1690 
1700 
1710 
1720 
1730 
1740 
1750 
1760 
1770 
1780 
1790 
1800 
1810 
1820 
1830 
1840 
1850 
1860 
1870 
1880 



BCD2A5C BCD,OUTBUF 
POSITION 14,8 
PRINT OUTBUF 
ASC2BCI> INBUF,BCD 

jincreMent in decinal Mode 



SED 

INC BCD+2 

CLD 



BCD2ASC BCD, OUTBUF 
POSITION 29,8 
PRINT OUTBUF 
ASC2BCD INBUF,BCD 



Second line: add 25 to the BCD 
nuMber in binary and decinal 
Modes 



CLD 

CLC 

LDA BCD+2 

ADC tt25 

STfl BCD+2 

BCC NOINCl 

JSR INCREMBCD 
NOINCl 

CLD 
BCD2ASC BCD, OUTBUF 
POSITION 14,10 
PRINT OUTBUF 
ASC2BCD INBUF,BCD 

;add 25 in deciMal Mode 

SED 

CLC 

LDA BCD+2 

ADC tt25 

5TA BCD+2 

BCC N0INC2 

JSR INCREMBCD 
N0INC2 

CLD 
BCD2ASC BCD, OUTBUF 
POSITION 29,10 
PRINT OUTBUF 
ASC2BCD INBUF,BCD 



Third line: add hexadeciMal 25 
to the BCD nuMber in binary and 
binary Modes 



CLD 

CLC 

LDA BCD+2 

ADC »$25 

STA BCD+2 

BCC N0INC3 

JSR INCREMBCD 
N0INC3 

CLD 
BCD2ASC BCD, OUTBUF 
POSITION 14,12 
PRINT OUTBUF 
ASC2BCD INBUF,BCD 

jadd $25 in deciMal Mode 

SED 

CLC 

LDA BCD+2 

ADC n$25 

STA BCD+2 

BCC N0INC4 

JSR INCREMBCD 
N0INC4 

CLD 
BCD2ASC BCD, OUTBUF 
POSITION 29,12 
PRINT OUTBUF 
ASC2BCD INBUF,BCD 



{Fourth line: add second byte 



1890 

1900 

1910 

1920 

1930 

1940 

1950 

1960 

1970 

1980 

1990 

2000 

2010 

2020 

2030 

2040 

2050 

2060 

2070 

2080 

2090 

2100 

2110 

2120 

2130 

2140 

2150 

2160 

2170 

2180 

2190 

2200 

2210 

2220 

2230 

2240 

2244 

2248 

2250 

2260 

2270 

2280 

2290 

2300 

2310 

2320 

2330 

2340 

2350 

2360 

2370 

2380 

2390 

2400 

2410 

2420 

2430 

2440 

2450 

2460 

2470 

2480 

2490 

2500 

2510 

2520 

2530 

2540 

2550 

2560 

2570 

2580 

2590 

2600 

2610 

2620 

2630 

2640 

2650 

2660 

2670 

2680 

2690 

2700 

2710 

2720 

2730 

2740 

2750 



Of BCD nuMber to the entire 
nuMber, in binary and deciMal 
Modes. If nuMber was 1-2 digits 
long, will just add zero 



ADD 2ND BYTE TO 3RD - BINARY 
CLD 
CLC 

LDA BCD+1 
ADC BCD+2 
STA BCD+2 
BCC N0INC5 
JSR INCREMBCD 
N0INC5 
CLD 

BCD2ASC BCD, OUTBUF 

POSITION 14,14 

PRINT OUTBUF 

ASC2BCD INBUF,BCD 

■ 

;add 2nd byte to total - deciMal 

SED 
CLC 

LDA BCD+1 
ADC BCD+2 
STA BCD+2 
BCC N0INC6 
JSR INCREMBCD 
N0INC6 
CLD 

BCD2ASC BCD, OUTBUF 

POSITION 29,14 

PRINT OUTBUF 
END 

INPUT 0,INBUF 
JMP START 



text lines for proMpt and for 
output table 



PROMPT 

.BYTE 
.BYTE 
.BYTE 

TITLE 

.BYTE 
.BYTE 

HYPHENS 

.BYTE 
.BYTE 

INCRE 

.BYTE 

DEC25 

.BYTE 

HEX25 

.BYTE 

ADDBYTE 

.BYTE 



"Enter a nuMber " 
"up to 6 digits " 
"long:",EOL 

"Binary Mode " 
"DeciMal Mode",EOL 



•• ",EOL 

"IHC",EOL 
"Add 25",E0L 
"Add $25",E0L 
"Add 2nd byte",EOL 



don't forget the subroutines! 



.INCLUDE ttD8: SUBS. LIB 



subroutine do handle carry if 
adding to the third BCD byte 
went above 99; can't increMent, 
so Must add 1 to higher order 
bytes as needed 



;still in deciMal 



INCREMBCD 
SED 
CLC 

LDA ttl ;add 1 to second 
ADC BCD+1 ;BCD byte 
STA BCD+1 ;and store 
BCC NOMOREINC ;cause carry? 
CLC 

LDA ttl ;yes, so add 1 to 
ADC BCD ; first BCD byte 
STA BCD ;and store 

NOMOREINC 

RTS ,'all done, exit 



A.N.A.L.O.G, COMPUTING' SEPTEMBER 19!8 







In the age of technological 

marvels, even the common flu can 

get your ST down. 



New Atari Corp. documentation 

If you were one of the lucky developers 
to purchase the Atari ST Developers Kit 
for $300, occasionally you will receive 
mailings of new information from Atari. 
Recently, Atari mailed detailed informa- 
tion on the Mega ST system's internal ex- 
pansion bus. The expansion bus was 
included inside the Mega for Atari and 
third-party developers to create additional 
support products that can easily be inter- 
faced with the Mega's hardware. 

At the fall 1987 COMDEX show, Atari's 
research and development team indicat- 
ed that several expansion bus products 
are in the works for the Mega computer. 
A Local-Area-Network card (LAN) is a 
natural product for the Mega to give bus- 
inesses the ability to share information 
from a central hard disk or use a common 
printer. 

What makes the Mega expansion bus 
documentation so interesting is that it was 
printed on a laser printer and is easy to 
understand with complete explanations. 
This marks a decided change in Atari's 
previous documentation efforts. Atari 
documentation is normally poorly writ- 



ten and sloppy in presentation. With evi- 
dence of better documentation, Atari 
might be signaling the industry that it is 
cleaning up its internal problems and 
working towards a bright future. 

Aaaahhhii-clioooooo! 

Has your computer been feeling run 
down? Maybe even a little feverish? It 
might be due to a computer virus. When 
the idea of a computer virus was first 
presented, it seemed like a joke. How 
could your computer get-sick? But we 
have found in the age of technological 
marvels, even the common flu can get 
your ST down. 

A virus is a program that unscrupulous 
programmers place on boot ST floppy 
disks. When you first power-up your ST, 
a program recorded in the "boot-sector" 
of the diskette in drive A is loaded into 
your ST's memory. The program initial- 
izes some memory and variables and then 
launches the main operating system 
stored in ROM. 

Viruses change the "boot-sector" by 
recording their own style of boot pro- 
gram. Instead of the usual coldstart 



process, the virus will install itself into 
your system's memory, and then proceed 
with the initialization as normal. Your ST 
turns on and the friendly GEM Desktop 
appears. 

Not all viruses are alike. Their side ef 
fects determine the destructiveness of a 
virus. For example, one virus will remain 
dormant for a couple of hours. When you 
try to save a file to your floppy disk, the 
virus will ocassionally cause the save oper- 
ation to save incorrect data. When you 
thought you were saving a letter to your 
mother, the virus was saving a bunch of 
random characters. 

Viruses can spread, because they can 
also change the boot-sector of the other 
disks you insert into your disk drive af- 
ter the virus has been loaded into your 
computer system. So, once a virus has 
been detected, it is important to im- 
munize all of your other diskettes. 

So far, only one virus has been identi- 
fied in the United States. Another has 
been described by users, but no one has 
found a way of detecting it. The virus 
seemed to have been created in Europe, 
and gradually found its way to the U.S. 
through the worldwide series of computer 
networks and telecommunications. 

Virus killing has become a popular 
cause. George Woodside, the author of 
Turtle, a popular hard-disk backup utility, 
has been working on a virus immuniza- 
tion program for the ST. George recently 
posted an anti-virus program that detects 
and erases a virus program from your ST 
disks. The program has been made avail- 
able through DELPHI, CompuServe ?nd 
GEnie, is also available through Usenet, 
the worldwide Unix users network. 

An interesting twist on the virus issue 
occurred last month with the release of 
an imunization program called FluShot. 
Apparently the same people who deve- 
loped a virus received a copy of FluShot, 
added a new virus to it, and re-released 
FluShot back into the public. FluShot 3 
has the virus attached! Later versions of 
Flu-Shot do not have the virus. 

Atari-FAX 

Atari is pushing hard to make its Mega 
ST/SLM804 Laser printer combination a 
viable desktop publishing system for 
small businesses. Atari has met with limit- 
ed sucess in trying to sell the ST and Mega 
as a general business computer, and has 
now aimed for the smaller "niche"mar- 
kets (eg., MIDI music, desktop publishing, 
eduction, etc.). At the same time, the real 
world of business computing is finding 
the modern office equipped with com- 
puters able to network, communicate with 



14 



SEPTEMBER 1 988 • A,N, A.L.O.G, COMPUTING 




mainframes, and send and receive facsi- 
mile transmissions, commonly called 
FAXs. 

Most business can buy a dedicated FAX 
machine for under $1,500. FAX is differ- 
ent than its predecessor TELEX, because 
the recipient of a FAX sees a photocopied 
image of the original instead of a teletype 
letter of text. FAX gives you instant copies 
of business correspondance, invoices and 
other written reports developed on your 
computer. 

Microfantasy Corp., the company 
responsible for Atariwriter 80, is now work- 
ing with a small development group on 
adding FAX capabilities to the ST com- 
puter. A new device will plug into the car- 
tridge port of the Mega to interface your 
computer with a FAX interface When you 
want to send a FAX to another party, you 
specify a text or graphic file in the cus- 
tom FAX program. The document is con- 
verted into a standard FAX transmission 
and sent to the specified FAX machine. 
The FAX device has built-in Hayes com- 
patible 9600 baud modem. By connect- 
ing the FAX device to your phone line, the 
FAX program will automatically dial and 
transmit the document to the destination 
FAX machine. On the receiving end, the 
scanner device can be set up to automat- 
ically retrieve a FAX document in FAX 
Group 1,2 or 3 format. 

When a FAX transmission is received, 
the document image can be stored as a 
GEM image file, DEGAS picture or stan- 
dard data file. A special printing utility 



will print the document on any dot- 
matrix or laser printer (including the 
Atari SLM804.) 

And now for the kicker, the suggested 
list price will be under $500. The FAX 
unit will be sold on a "direct" basis and 
should be available at the end of this year. 

Multi-Finder ST 

The other 68000-based microcom- 
puters (Mac & Amiga) have built their new 
operating systems around a multi-tasking 
environment. You can run a word proces- 
sor at the same time that a telecommuni- 
cations program is downloading a file. 
Since the operating system supports 
multi-tasking, programs for the Mac and 
Amiga can be run at the same time. The 
ST's GEM system doesn't support multi- 
tasking. However, several programs have 
been popping up that let you run more 
than one program in your ST's memory 
at once. 

J'uggler (Michtron, $49.95 list) is a pro- 
gram that lets you load up to seven GEM- 
based programs into your ST. Each appli- 
cation is loaded into a certain portion of 
memory. A switchbox allows you to select 
which application will be the "live" pro- 
gram. The ability to switch instantly be- 
tween applications can greatly improve 
your productivity. Michtron just released 
its new Juggler II, an improved version 
which lets you partition your ST's 
memory into two, four or eight sections. 
The new software handles TOS and non- 
GEM applications too! So you can switch 



between a video game and word proces- 
sor, quicker than your boss can find you 
playing games when you should be 
working. 

Revolver (Intersect, $49.95 list) is another 
program that, among other things, 
switches between various applications. 
Revolver can save a copy of the entire one 
megabyte of memory in your 1040 ST to 
a compressed disk file At a later time, you 
can reload the disk-file data into your ST's 
memory and begin running the program 
where you left off 

Revolver is a TOS application that is 
put into the AUTO folder of your boot 
disk. When you turn on your ST com- 
puter, Revolver loads itself into your ST's 
memory and waits for the user to activate 
its main menu. Revolver can be accessed 
in any screen resolution and within any 
program, GEM or non-GEM. Therefore, 
you could save a video game during a 
difficult game playing section, and later 
reload the section to replay the fun parts. 
Revolver is also an incredible utility for 
your ST. In addition to its application- 
switching functions, it has an impressive 
list of disk utilities, printer spoolers, reset- 
button-proof RAM disks, automatic back- 
up utilities and other functions for which 
you might otherwise depend on a desk ac- 
cessory. 

Switch Back (Alpha Systems, $69.95 list) 
is a simple utility which allows a running 
application to be saved as a compressed 
binary disk file. You can reload saved ap- 
plications at any time, giving you the same 
utility as Revolver's switching function. 
Switch Back is being promoted as an "un- 
protect" program which can remove the 
copy-protection method built into a game 
or GEM application, so its relative merits 
dim compared with Revolver and Juggler 

Companies mentioned: 

Microfantasy, Inc. 
581 1 Cardoza Drive 
Westlalce Village, CA 91362 

Michtron 
576 Telegraph 
Pontiac, Ml 48053 
(313) 334-5700 

Intersect Software 
3951 Sawyer Road, #108 
Sarasota, FL 33583 
(800) 826-0130 

Alpha Systems 

1012 Sky land 

Macedonia, OH 44056 

(216) 374-7469 fl 



AJ.A.L.O.G, COMPUTING' SEPTEMBER 1988 



5S 



Qnowplow 



continued from page 17 



LISTING 1: M/L EDITOR DATA 

leee data 255,255,0,128,10,128,72,169, 

2,141,10,212,141,26,208,104,6014 

1010 DATA 64,0,140,255,143,0,0,0,0,0,0 

,0,0,236,226,202,3155 

1020 DATA 42,162,162,170,170,63,143,16 

3,168,10,10,10,10,255,255,0,5452 

1030 DATA 170,128,128,128,128,255,255, 

0,170,10,10,10,10,253,245,213,8922 

1040 DATA 213,213,245,254,254,127,95,8 

7,87,87,95,191,191,255,255,255,5771 

1050 DATA 255,255,255,255,255,250,234, 

160,162,160,162,226,250,250,234,170,98 

25 

1050 DATA 170,170,170,234,250,191,175, 

11,171,11,171,175,191,191,175,171,2873 

1070 DATA 171,171,171,175,191,0,0,0,0, 

0,24,24,48,255,255,255,6402 

1080 DATA 251,234,251,234,255,254,234, 

239,234,254,254,254,254,191,171,251,28 

82 

1090 DATA 171,191,191,191,191,127,99,9 

9,99,99,99,127,0,56,24,24,2204 

1100 DATA 24,60,60,60,0,127,99,3,127,9 

6,96,127,0,126,6,6,9776 

1110 DATA 127,7,7,127,0,112,112,112,11 

9,119,127,7,0,127,96,96,2628 

1120 DATA 127,7,7,127,0,124,108,96,127 

,99,99,127,0,127,3,3,675 

1130 DATA 31,24,24,24,0,62,54,54,127,1 

19,119,127,0,127,99,99,2572 

1140 DATA 127,7,7,7,0,0,0,24,24,0,24,2 

4,0,255,255,254,3749 

1150 DATA 248,170,170,207,255,255,255, 

175,171,170,170,243,255,0,0,1,422 

1160 DATA 4,85,85,48,0,0,0,80,84,85,85 

,12,0,0,60,102,7638 

1170 DATA 12,24,0,24,0,0,60,102,110,11 

0,96,62,0,0,0,63,7460 

1180 DATA 3,127,103,127,0,0,96,95,127, 

115,115,127,0,0,0,127,808 

1190 DATA 96,96,96,127,0,0,3,3,127,99, 

99,127,0,0,0,127,9097 

1200 DATA 99,127,112,127,0,0,30,24,126 

,24,56,56,0,0,0,127,7493 

1210 DATA 99,99,127,7,127,0,96,96,127, 

115,115,115,0,0,12,0,9109 

1220 DATA 12,12,28,28,0,0,12,0,12,12,1 

4,14,126,0,48,48,5212 

1230 DATA 118,124,118,115,0,0,24,24,24 

,56,56,56,0,0,0,102,6466 

1240 DATA 127,127,107,99,0,0,0,63,51,1 

15,115,115,0,0,0,63,8104 

1250 DATA 51,115,115,127,0,0,0,63,51,1 

15,127,112,112,0,0,127,726 

1260 DATA 99,99,127,7,7,0,0,63,51,112, 

112,112,0,0,0,127,8692 

1270 DATA 96,127,7,127,0,0,12,127,12,2 

8,28,28,0,0,0,51,5097 

1280 DATA 51,115,115,127,0,0,0,99,99,9 

9,54,28,0,0,0,99,7601 

1290 DATA 107,127,62,54,0,0,0,102,60,2 

4,60,102,0,8,0,51,6349 

1300 DATA 51,115,127,3,15,0,0,126,12,2 

4,48,126,0,0,30,24,6279 

1310 DATA 24,24,24,30,0,0,64,96,48,24, 

12,6,0,0,120,24,5858 

1320 DATA 24,24,24,120,8,8,8,28,54,99, 

0,0,0,0,0,0,3700 

1330 DATA 0,0,0,255,0,0,0,7,15,28,28,2 

8,31,15,0,0,4078 

1340 DATA 8,24,31,31,0,0,0,252,252,12, 

0,0,252,254,14,14,3275 

1350 DATA 14,30,252,248,0,0,0,124,124, 

n 



30,30,31,31,31,29,28,8002 

1360 DATA 28,28,124,124,0,0,0,62,62,56 

,56,56,56,184,248,248,6206 

1370 DATA 120,120,62,62,0,0,0,63,127,1 

12,112,112,112,112,112,112,4003 

1380 DATA 112,112,127,63,0,0,0,248,252 

,28,28,28,28,28,28,28,9149 

1390 DATA 28,28,252,248,0,0,0,124,124, 

28,28,28,29,29,29,29,7936 

1400 DATA 31,31,126,124,0,0,0,62,62,56 

,56,56,184,184,184,184,5941 

1410 DATA 248,248,126,62,0,0,0,127,127 

,28,28,28,28,31,31,28,7574 

1420 DATA 28,28,127,127,0,0,0,240,248, 

28,28,28,28,248,240,0,4905 

1430 DATA 0,0,0,0,0,0,0,127,127,28,28, 

28,28,28,28,28,6137 

1440 DATA 28,28,127,127,0,0,8,0,0,0,0, 

0,0,0,0,0,2413 

1450 DATA 28,28,252,252,0,0,0,63,127,1 

12, 112, 112, 112, 112, 112, IIZ, 5137 

1460 DATA 112,112,127,63,0,0,0,248,252 

,28,28,28,28,28,28,28,9229 

1470 DATA 28,28,252,248,0,0,8,124,124, 

28,28,28,29,29,29,29,8016 

1480 DATA 31,31,126,124,0,0,0,62,62,56 

,56,56,184,184,184,184,6021 

1490 DATA 248,248,126,62,0,255,255,255 

,215,255,255,255,255,0,0,0,1880 

1500 DATA 20,0,0,0,0,255,253,255,253,2 

55,253,255,253,0,1,0,835 

1510 DATA 1,0,1,0,1,255,127,255,127,25 

5,127,255,127,0,64,0,6739 

1520 DATA 64,0,64,0,64,255,253,255,93, 

255,253,255,253,0,1,0,9971 

1530 DATA 81,0,1,0,1,255,127,255,117,2 

55,127,255,127,0,64,8,6749 

1540 DATA 69,0,64,8,64,255,253,255,93, 

255,255,255,255,0,1,0,44 

1550 DATA 81,0,0,0,0,255,255,255,93,25 

5,253,255,253,0,0,0,9505 

1560 DATA 81,0,1,0,1,255,255,255,117,2 

55,127,255,127,0,0,0,6715 

1570 DATA 69,0,64,0,64,255,127,255,117 

,255,255,255,255,0,64,8,353 

1580 DATA 69,0,0,0,0,255,255,255,253,2 

55,253,255,253,0,0,0,963 

1590 DATA 1,0,1,0,1,255,255,255,127,25 

5,127,255,127,0,0,0,6755 

1600 DATA 64,0,64,0,64,255,127,255,127 

,255,255,255,255,0,64,0,468 

1610 DATA 64,0,0,0,0,255,253,255,253,2 

55,255,255,255,0,1,0,1037 

1620 DATA 1,0,0,0,0,255,239,255,85,255 

,255,255,255,0,8,0,9479 

1630 DATA 85,0,0,0,0,24,24,24,24,24,24 

,24,24,0,126,120,7349 

1640 DATA 124,110,102,6,8,8,24,56,128, 

56,24,8,0,16,24,28,6018 

1650 DATA 30,28,24,16,0,0,139,39,139,0 

,38,53,37,44,0,17,6831 

1660 DATA 21,16,0,48,44,47,55,51,0,19, 

0,0,0,0,8,8,3390 

1670 DATA 51,35,47,50,37,0,16,16,16,16 

,16,16,0,0,0,0,3229 

1680 DATA 0,0,155,39,155,0,0,179,174,1 

75,183,166,172,161,171,165,1524 

1690 DATA 179,0,183,169,174,8,0,0,0,0, 

8,0,112,114,101,115,371 

1700 DATA 115,0,51,52,33,50,52,0,0,0,8 

,0,0,0,127,32,5422 

1710 DATA 127,112,112,112,112,112,112, 

112,66,0,123,2,112,112,112,2,2464 

1720 DATA 2,112,112,112,112,87,0,124,1 

12,112,112,112,70,160,123,65,5543 

1730 DATA 0,127,128,127,174,127,112,11 

2,112,66,0,123,2,117,0,144,3300 

1740 DATA 117,128,144,117,0,145,117,12 

8,145,117,0,146,117,128,146,117,7328 

1750 DATA 0,147,117,128,147,117,8,148, 

117,128,148,213,0,149,70,0,5181 

1760 DATA 139,6,65,128,127,0,64,165,79 

,160,50,185,128,127,153,192,8911 

1770 DATA 127,136,16,247,169,140,141,2 

44,2,32,251,64,162,74,160,158,9766 

1780 DATA 169,7,32,92,228,169,0,133,19 

8,169,0,133,183,133,178,32,8136 

1790 DATA 39,76,76,47,64,32,73,76,32,9 

8,66,32,215,74,169,3,2740 

SEPTEMBER 1 988 ' A,N. A, L,0,G, COMPUTING 



180a DATft 133,182,169,9,133,186,32,225 

,73,32,81,78,32,35,75,32,1979 

1818 DATft 48,71,32,139,79,32,215,74,32 

,58,65,165,183,298,14,165,6879 

1828 DftTft 178,288,18,169,1,133,178,32, 

166,79,76,196,64,32,84,76,3573 

1839 DATA 32,155,79,32,61,71,32,4,72,3 

2,239,79,32,35,71,32,433 

1849 DflTfl 242,77,169,11,133,184,32,75, 

65,169,1,133,146,173,31,298,7375 

1859 DATft 291,6,298,3,76,232,77,173,12 

9,2,133,184,32,75,65,141,5862 

1869 DflTfl 38,288,32,9,68,32,145,69,173 

,132,2,288,3,32,166,75,4889 

1878 Oam 32,213,77,173,12,288,291,12, 

176,33,173,13,298,281,12,176,8549 

1889 DfiTft 26,165,175,197,173,298,12,16 

5,174,197,172,298,6,32,143,79,8781 

1899 DATA 76,64,64,165,179,5,189,5,181 

,298,24,141,39,298,32,241,8474 

1999 DATA 73,32,183,75,32,213,73,141,3 

8,288,32,81,55,75,234,64,5853 

1918 DATA 75,14,74,155,182,248,249,173 

,252,2,281,255,248,3,32,131,1579 

1928 DATA 74,76,132,54,159,62,141,47,2 

,159,17,141,111,2,159,3,3919 

1938 DATA 141,29,298,169,128,141,7,212 

,169,49,141,192,2,169,6,141,7174 

1949 DATA 193,2,169,155,141,194,2,141, 

195,2, 159, 128, 133, 131, 169, 112, 9379 

1959 DATA 133,133,169,1,141,18,298,141 

,11,298,95,169,255,169,9,153,9493 

1969 DATA 9,132,153,9,133,153,9,134,15 

3,9,135,153,9,131,136,192,5982 

1979 DATA 255,298,236,96,162,3,155,184 

,221,177,65,249,4,292,16,248,1539 

1989 DATA 96,189,189,65,133,295,189,19 

3,65,133,296,189,197,55,133,293,3286 

1999 DATA 189,291,65,133,294,138,72,16 

5,133,133,187,24,125,185,65,133,9179 

2988 DATA 134,133,188,168,169,9,153,25 

5,132,159,9,177,285,166,187,157,2818 

2819 DATA 9,132,177,293,166,188,157,9, 

133,299,239,187,239,188,192,16,3493 

2828 DATA 288,233,166,188,157,8,133,15 

6,131,142,9,298,184,179,165,131,385 

2838 DATA 24,125,181,65,133,132,141,1, 

288,95,11,7,14,13,255,1,2881 

2848 DATA 9,9,9,8,255,1,285,221,237,25 

3,55,55,65,65,13,29,5895 

2858 DATA 45,61,66,66,55,56,8,9,9,255, 

255,118,118,118,118,118,7929 

2969 DATA 118,255,255,9,9,8,8,9,8,255, 

255,118,118,118,119,119,6598 

2979 DATA 119,255,255,8,8,9,9,192,192, 

126,126,126,126,125,125,192,6271 

2888 DATA 182,182,125,126,182,8,9,182, 

126,126,182,182,182,126,126,126,5338 

2898 DATA 126,125,125,182,182,8,9,179, 

179,128,128,132,132,132,132,132,8582 

2199 DATA 132,128,128,179,179,9,9,253, 

253,1,1,97,97,97,97,97,5514 

2119 DATA 97,1,1,253,253,8,9,255,255,8 

,153,153,24,24,153,153,7734 

2129 DATA 24,24,153,153,8,9,8,9,129,15 

3,24,24,153,153,24,24,1381 

2139 DATA 153,153,9,255,255,9,169,19,2 

98,2,169,7,32,247,57,136,6947 

2149 DATA 298,259,96,169,9,169,8,141,8 

9,86,159,144,141,125,85,185,8999 

2158 DATA 89,86,24,185,128,153,98,86,1 

85,125,86,195,9,153,126,86,6398 

2168 DATA 298,192,33,288,234,162,7,159 

,16,149,212,282,15,251,133,196,2461 

2179 DATA 32,48,71,169,3,133,182,169,1 

9,141,16,139,159,95,133,211,8963 

2189 DATA 169,255,133,191,96,215,58,19 

,79,9,159,127,133,295,169,135,9691 

2199 DATA 133,295,98,164,138,185,89,86 

,133,285,185,125,85,133,286,96,1135 

2288 DATA 22,4,155,184,281,7,288,62,32 

,86,69,144,1,96,165,243,7815 

2218 DATA 281,83,144,1,96,169,1,133,13 

8,32,197,74,169,1,133,135,5551 

2229 DATA 32,61,67,238,183,66,239,243, 

162,3,142,4,212,32,247,67,9471 

2239 DATA 32,165,75,292,16,244,198,138 

,165,138,15,224,32,96,79,32,6719 

2248 DATA 69,74,32,117,71,95,281,11,28 

A.N,A,L,0,G, COMPUTING'SEPTEMBER 1988 



8,79,32,185,59,144,1,96,4185 

2258 DATA 155,243,288,1,96,169,1,133,1 
38,32,197,74,152,0,142,4,5911 

2259 DATA 212,32,247,57,32,298,75,232, 
224,4,298,242,169,255,133,135,4455 
2279 DATA 162,9,142,4,212,32,61,67,198 
,243,285,183,66,198,138,155,2183 

2289 DATA 138,16,217,75,243,56,169,8,1 

85,136,127,^4,191,135,153,135,8529 

2299 DATA 127,299,299,299,192,33,298,2 

49,96,281,14,288,48,32,132,59,8431 

2388 DATA 144,1,96,155,244,248,94,32,1 

97,74,169,255,133,135,32,189,1523 

2318 DATA 67,198,244,286,184,66,162,15 

,142,5,212,32,247,67,32,217,9844 

2328 DATA 75,282,16,244,159,8,141,5,21 

2,75,243,66,96,281,13,288,9413 

2338 DATA 52,32,119,69,144,1,96,165,24 

4,281,9,144,1,96,32,197,6819 

2348 DATA 74,162,8,142,5,212,32,247,57 

,32,217,75,232,224,15,288,733 

2358 DATA 242,152,8,142,5,212,159,1,13 
3,135,32,189,57,238,244,238,2698 

2359 DATA 184,66,76,243,55,95,155,135, 
48,27,159,9,185,135,127,24,5877 

2378 DATA 185,128,153,135,127,289,185, 

136,127,195,9,153,136,127,299,299,1727 

2388 DATA 192,33,288,232,96,168,8,185, 

136,127,56,233,128,153,136,127,894 

2398 DATA 288,185,135,127,233,9,153,13 

6,127,299,299,192,33,298,232,95,3294 

2498 DATA 159,8,133,28,155,28,248,252, 

95,165,184,281,7,288,68,165,1382 

2419 DATA 131,291,124,144,9,165,243,20 

1,83,176,3,76 79,68,155,131,8120 

2429 DATA 291,299,175,46,32,85,69,144, 

1,96,32,197,74,159,7,239,6716 

2439 DATA 131,165,131,142,9,288,238,13 

2,156,132,142,1,298,32,247,67,85 

2449 DATA 32,165,75,136,16,233,238,183 

,66,238,183,65,75,243,56,32,9859 

2459 DATA 185,66,96,281,11,288,61,32,1 

85,59,144,1,96,165,131,291,7815 

2459 DATA 132,175,12,155,243,298,232,1 

55,131,291,48,240,229,144,227,32,4554 

2478 DATA 197,74,160,7,198,131,156,131 

,142,0,288,198,132,165,132,142,1543 

2488 DATA 1,288,32,247,67,32,288,75,13 

6,16,233,286,183,66,286,183,2248 

2498 DATA 56,76,243,66,281,13,288,185, 

32,119,69,144,1,95,155,133,7813 

2588 DATA 281,96,144,9,155,244,281,9,1 

76,3,76,78,58,165,133,281,8824 

2518 DATA 192,175,159,169,15,133,138,3 

2,197,74,165,133,133,187,165,134,1192 

2528 DATA 133,188,168,169,8,153,8,133, 

152,15,164,187,185,15,132,153,8898 

2530 DATA 16,132,164,188,185,15,133,20 

1,24,208,4,169,153,288,5,281,183 

2548 DATA 153,208,2,159,24,153,16,133, 

198,187,198,188,202,16,219,230,3906 

2550 DATA 133,238,134,32,247,67,198,13 

8,155,138,15,198,238,184,56,75,997 

2558 DATA 243,55,281,14,248,3,75,73,58 

,32,132,69,144,1,95,155,5185 

2578 DATA 133,281,112,175,7,165,244,24 

8,3,75,78,58,165,133,281,48,8951 

2588 DATA 288,3,76,70,68,32,197,74,169 

,15,133,138,164,133,162,15,7259 

2590 DATA 185,0,132,153,255,131,185,0, 

133,281,24,288,4,159,153,288,1147 

2680 DATA 6,201,153,208,2,169,24,153,2 

55,132,200,202,16,226,32,247,2758 

2610 DATA 67,198,133,198,138,165,138,1 

6,211,206,184,66,76,243,66,172,1945 

2620 DATA 184,65,32,172,66,172,183,55, 

200,200,177,205,133,137,32,82,537 

2530 DATA 70,96,172,184,56,32,172,66,1 

72,183,66,136,136,75,97,69,7525 

2540 DATA 172,184,66,200,32,172,66,172 

,183,65,76,97,69,172,184,66,8636 

2658 DATA 135,32,172,66,172,183,66,76, 

97,69,172,184,65,32,172,66,7263 

2668 DATA 172,183,66,177,285,162,15,22 

1,53,78,240,6,202,16,248,76,9649 

2670 DATA 224,69,201,27,240,4,201,29,2 

08,21,72,169,97,145,205,208,1874 

2588 DATA 145,285,32,71,72,32,93,74,18 

4,281,27,248,19,288,26,178,7882 



57 



2690 DftTfl 232,138,145,285,280,177,205, 

170,232,138,145,285,281,11,248,9,3344 

2780 DflTfl 238,174,208,2,230,175,32,75, 

72,165,137,281,8,208,44,238,587 

2718 DATft 137,172,184,65,32,172,66,166 

,287,165,286,213,224,240,4,282,4888 

2728 DflTft 16,247,96,173,183,66,24,181, 

205,213,218,208,242,169,100,149,4762 

2730 DflTfl 153,32,254,75,32,48,71,32,13 

0,70,96,172,184,66,32,172,6748 

2740 DATA 66,166,185,240,245,165,206,2 

13,234,240,4,202,16,247,96,165,4734 

2750 DATA 205,24,109,183,66,213,230,20 

8,242,169,50,149,160,96,96,98,1582 

2760 DATA 100,102,104,106,108,110,112, 

114,116,118,120,8,27,29,97,99,4132 

2770 DATA 101,103,105,107,109,111,113, 

115,117,119,121,162,28,221,53,70,7633 

2780 DATA 240,5,202,16,248,56,96,24,96 

,198,181,165,181,5,180,5,8158 

2790 DATA 179,240,20,165,181,16,16,169 

, 9, 133, 181, 198, 180, 165, 180, 16, 18 

2800 DATA 6,169,9,133,180,198,179,32,1 

30,70,96,162,2,181,179,9,7559 

2818 DATA 16,157,6,139,202,16,246,96,1 

69,0,162,15,133,146,32,77,6278 

2820 DATA 66,202,16,250,96,162,16,169, 

12,157,66,3,32,86,228,162,7326 

2830 DATA 16,169,3,157,65,3,169,70,157 

,69,3,169,227,157,68,3,6293 

2840 DATA 169,4,157,74,3,169,0,157,75, 

3,32,86,228,16,1,96,2897 

2850 DATA 162,16,169,144,157,69,3,169, 

0,157,68,3,169,0,169,10,3945 

2860 DATA 157,73,3,169,7,157,66,3,32,8 

6,228,96,68,49,58,83,3887 

2870 DATA 77,65,80,46,32,32,32,155,160 

,0,132,172,230,172,132,173,419 

2880 DATA 132,176,32,172,66,160,0,177, 

205,162,12,221,53,70,240,20,8692 

2890 DATA 202,16,248,200,200,192,0,208 

,238,230,206,230,176,164,176,192,8248 

2900 DATA 10,288,226,96,230,172,208,2, 

230,173,76,10,71,160,50,185,9671 

2910 DATA 192,127,153,128,127,136,16,2 

47,96,169,0,133,181,169,1,133,8878 

2920 DATA 179,165,192,133,180,96,160,0 

,132,176,132,207,164,176,192,19,1797 

2930 DATA 208,1,96,32,172,66,160,0,177 

,205,201,8,240,11,200,200,1356 

2940 DATA 192,126,208,244,230,176,76,6 

7,71,166,207,165,206,149,224,152,5370 

2950 DATA 24,101,205,149,218,238,207,1 

65,207,201,6,208,225,96,166,207,6132 

2960 DATA 240,32,181,153,240,25,214,15 

3,181,153,208,19,181,224,133,206,4946 

2970 DATA 181,218,133,205,160,0,169,8, 

145,205,200,169,10,145,205,202,2903 

2980 DATA 16,224,166,185,208,1,96,181, 

160,240,38,214,160,181,160,208,5016 

2990 DATA 32,181,234,133,206,181,230,1 

33,205,160,0,177,205,201,96,208,5224 

3000 DATA 67,169,27,145,205,200,169,28 

,145,205,169,80,149,166,32,180,1493 

3010 DATA 77,202,16,211,166,185,181,16 

6,240,33,214,166,181,166,208,27,3983 

3020 DATA 181,234,133,206,181,230,133, 

205,160,0,177,205,201,27,208,15,1946 

3030 DATA 169,96,145,205,280,145,205,1 

69,100,149,168,202,16,216,96,169,3253 

3040 DATA 97,208,239,96,169,29,145,285 

,200,169,30,208,187,160,0,132,1427 

3050 DATA 176,132,185,164,176,192,19,2 

08,1,96,32,172,66,160,0,177,7845 

3060 DATA 205,201,27,240,11,200,280,19 

2,126,288,244,230,176,76,10,72,2211 

3070 DATA 166,185,165,206,149,234,152, 

24,101,205,149,230,152,72,169,96,2743 

3080 DATA 145,205,200,145,205,104,168, 

230,185,165,185,201,4,208,214,96,4952 

3090 DATA 162,3,208,2,162,4,181,212,24 

,105,1,149,212,201,26,144,9016 

3100 DATA 14,169,16,149,212,202,48,7,2 

46,212,181,212,76,84,72,162,1465 

3110 DATA 5,181,212,157,29,139,202,16, 

248,165,213,197,196,240,7,133,3992 

3120 DATA 196,230,182,32,225,73,96,165 

,211,240,26,198,211,166,189,189,5892 

3130 DATA 285,72,141,151,72,189,206,72 

II 



,141,152,72,169,1,133,186,32,8884 

3148 DATA 255,255,76,98,228,173,10,210 

,41,3,170,10,133,189,169,107,9464 

3150 DATA 133,211,189,63,73,133,143,18 

9,67,73,133,144,24,185,12,133,6814 

3168 DATA 141,32,115,73,32,79,73,165,1 

93,133,238,165,194,133,239,169,4885 

3170 DATA 0,133,186,76,98,228,213,72,2 

20,72,227,72,234,72,32,102,446 

3180 DATA 73,32,241,72,96,32,71,73,32, 

22,73,96,32,102,73,32,1995 

3190 DATA 22,73,96,32,71,73,32,241,72, 

96,164,143,162,31,185,0,7162 

3288 DATA 134,153,255,133,185,8,135,15 

3,255,134,200,202,16,240,198,143,5116 

3210 DATA 169,0,164,142,153,1,131,169, 

195,153,255,130,198,142,96,165,3771 

3220 DATA 143,24,105,31,168,162,31,185 

,0,134,153,1,134,185,0,135,6886 

3230 DATA 153,1,135,136,202,16,240,230 

,143,169,0,164,142,153,0,131,9989 

3240 DATA 169,195,153,2,131,230,142,96 

,192,48,48,192,10,224,10,224,103 

3250 DATA 198,144,198,144,198,141,198, 

141,165,144,141,2,208,24,105,16,8627 

3260 DATA 141,3,208,165,141,141,4,208, 

24,105,6,141,7,208,96,230,9081 

3270 DATA 144,230,144,230,141,230,141, 

165,141,76,79,73,32,197,73,162,253 

3280 DATA 0,164,143,189,165,73,153,8,1 

34,153,1,134,189,181,73,153,16 

3290 DATA 0,135,153,1,135,208,200,232, 

224,16,208,231,165,143,24,105,2577 

3300 DATA 12,133,142,164,142,169,195,1 

53,0,131,153,1,131,96,0,4,5089 

3310 DATA 2,50,11,7,61,79,12,61,71,11, 

18,18,1,0,0,128,8048 

3320 DATA 72,72,208,230,188,240,50,188 

,224,208,76,64,32,0,162,0,7860 

3330 DATA 138,157,0,135,157,0,134,157, 

0,131,232,208,244,96,198,182,4057 

3340 DATA 32,225,73,32,48,71,32,130,70 

,96,165,182,201,10,144,4,6665 

3350 DATA 169,9,133,182,9,16,141,16,13 

9,96,169,0,141,2,208,141,7227 

3360 DATA 3,208,141,4,208,141,7,208,13 

3,211,165,193,133,238,165,194,5895 

3370 DATA 133,239,169,0,133,186,96,169 

,155,141,170,127,169,0,141,169,1508 

3380 DATA 127,169,0,133,146,32,41,74,1 

73,31,208,201,6,208,249,76,686 

3390 DATA 32,64,169,0,141,8,210,162,3, 

142,15,210,162,7,157,0,6267 

3400 DATA 210,202,16,250,96,169,0,141, 

0,210,141,1,218,96,169,0,7956 

3410 DATA 141,3,210,141,2,210,96,169,0 

,141,4,210,141,5,210,141,9328 

3420 DATA 6,210,141,7,210,96,32,41,74, 

162,1,169,121,141,4,210,7767 

3430 DATA 169,166,141,5,210,169,10,141 

,6,210,169,36,141,7,210,32,7674 

3440 DATA 77,66,32,78,74,32,77,66,282, 

16,224,96,162,255,142,252,3118 

3458 DATA 2,169,8,133,146,32,247,67,17 

3,252,2,281,255,248,249,142,6702 

3460 DATA 252,2,169,1,133,146,96,165,1 

46,208,3,76,98,228,165,238,2848 

3470 DATA 5,239,240,13,198,238,165,238 

,201,255,208,239,198,239,76,162,9369 

3480 DATA 74,198,145,165,145,208,228,1 

65,195,133,145,76,126,72,165,186,3623 

3490 DATA 208,13,169,50,141,2,210,169, 

70,141,3,210,32,247,67,96,8978 

3500 DATA 169,128,133,131,169,112,133, 

133,169,4,141,184,66,169,24,141,9520 

3510 DATA 183,66,169,0,133,243,133,244 

,162,5,169,0,149,153,202,16,70 

3520 DATA 251,162,3,189,32,75,149,160, 

159,0,149,166,202,16,244,169,2159 

3530 DATA 0,133,174,133,175,230,174,13 

3,211,165,195,133,145,32,41,74,809 

3540 DATA 165,193,133,238,165,194,133, 

239,96,48,96,128,176,166,191,224,5271 

3550 DATA 5,248,2,238,191,166,191,189, 

75,75,133,192,189,81,75,133,1797 

3560 DATA 193,189,87,75,133,194,189,93 

,75,133,195,169,1,141,88,86,9449 

3570 DATA 32,41,74,96,8,7,6,5,4,3,128, 

128,0,128,0,128,1304 

SEPTEMBER 1 988 • A,N, A.L.O.G, COMPUTING 



3580 DATA 3, 2, 2,1,1, 0,18, 8, 6, 4<2, 1, 8, 2 

,1,3,3955 

3598 DATA 165,184,72,168,4,132,148,169 

,8,133,197,162,3,134,147,189,764 

3688 DATA 99,75,178,32,88,65,169,134,1 

41,3,218,165,197,24,185,9,7777 

3618 DATA 133,197,141,2,218,32,81,66,1 

98,147,166,147,288,225,198,148,4939 

3628 DATA 164,148,288,215,184,133,184, 

32,88,65,32,69,74,96,132,288,8662 

3638 DATA 134,218,165,289,41,1,178,189 

,198,75,164,134,153,1,133,153,818 

3648 DATA 2,133,153,13,133,153,14,133, 

238,289,164,288,166,218,96,85,3522 

3658 DATA 169,132,288,134,218,165,289, 

41,1,178,189,215,75,76,177,75,1336 

3668 DATA 178,149,132,288,134,218,164, 

134,162,7,185,4,133,281,153,288,3283 

3678 DATA 4,169,24,288,6,281,24,288,2, 

169,153,153,4,133,288,282,1357 

3688 DATA 16,232,166,218,164,288,96,32 

,69,74,169,164,141,3,218,162,1299 

3698 DATA 168,142,2,218,32,38,76,224,4 

5,288,5,169,162,141,3,218,9697 

3788 DATA 282,288,238,32,69,74,96,168, 

288,32,247,67,136,16,258,96,828 

3718 DATA 32,73,76,162,96,169,3,157,66 

,3,169,76,157,69,3,169,6686 

3728 DATA 156,157,68,3,169,6,157,74,3, 

169,8,157,75,3,32,86,3452 

3738 DATA 228,96,162,96,169,12,157,66, 

3,32,86,228,96,169,5,162,7874 

3748 DATA 96,157,66,3,169,86,157,69,3, 

169,68,157,68,3,169,28,5582 

3758 DATA 157,72,3,169,8,157,73,3,32,8 

6,228,48,7,173,72,86,5414 

3768 DATA 281,78,288,12,32,39,76,169,8 

,133,178,184,184,76,86,64,6317 

3778 DATA 162,18,189,68,86,157,225,78, 

281,32,248,3,232,288,243,169,5388 

3788 DATA 155,157,225,78,96,68,49,58,8 

3,77,65,88,46,42,155,173,6378 

3798 DATA 88,86,288,1,96,165,184,281,7 

,288,61,173,183,66,133,148,1472 

3888 DATA 169,288,56,229,131,74,74,133 

,139,24,189,183,66,141,183,66,9653 

3818 DATA 286,183,66,286,183,66,32,86, 

69,144,6,165,148,141,183,66,9329 

3828 DATA 96,162,288,142,8,288,134,131 

,232,142,1,288,134,132,238,183,4745 

3838 DATA 66,238,183,66,286,88,86,96,2 

81,11,288,63,173,183,66,133,1885 

3848 DATA 148,165,131,56,233,48,74,74, 

133,139,173,183,66,56,229,139,1477 

3858 DATA 141,183,66,238,183,66,238,18 

3,65,32,185,69,144,6,165,148,9516 

3868 DATA 141,183,66,96,162,48,142,8,2 

88,134,131,282,142,1,288,134,1242 

3878 DATA 132,286,183,66,286,183,66,28 

6,88,86,96,281,14,288,78,173,1497 

3888 DATA 184,66,133,148,165,133,56,23 

3,48,74,74,74,74,133,139,173,9585 

3898 DATA 184,66,56,229,139,141,184,66 

,238,184,66,32,132,69,144,6,8677 

3988 DATA 165,148,141,184,66,96,286,18 

4,66,32,118,77,169,48,133,133,9364 

3918 DATA 32,75,65,286,88,86,96,168,25 

5,169,8,153,8,132,153,8,7983 

3928 DATA 133,136,288,247,96,281,13,28 

8,34,173,184,66,133,148,169,192,3526 

3938 DATA 56,229,133,74,74,74,74,24,18 

9,184,66,141,184,66,286,184,1252 

3948 DATA 66,32,119,69,144,6,165,148,1 

41,184,66,96,32,118,77,169,8536 

3958 DATA 192,133,133,32,75,65,238,184 

,66,286,88,86,96,32,69,74,7487 

3968 DATA 169,12,141,2,218,169,169,133 

, 177,198, 177, 165, 177, 281, 168, 144, 6214 

3978 DATA 9,141,3,218,32,81,66,76,192, 

77,32,69,74,96,165,186,8261 

3988 DATA 248,11,169,134,141,1,218,169 

,11,141,8,218,96,32,68,74,6627 

3998 DATA 96,173,31,288,281,6,248,249, 

76,14,74,169,127,141,49,2,8128 

4888 DATA 169,128,141,48,2,169,192,141 

,14,212,169,128,141,1,2,169,8758 

4818 DATA 8,141,8,2,162,4,189,156,66,1 

57,196,2,282,16,247,96,148 

4828 DATA 146,18,8,66,8,238,225,244,23 



3,239,238,225,236,128,247,229,1439 

4838 DATA 225,244,232,229,242,128,243, 

229,242,246,233,227,229,128,226,245,38 

78 

4848 DATA 236,236,229,244,233,238,8,8, 

8,8,8,8,8,128,243,238,8249 

4858 DATA 239,247,128,247,225,242,238, 

233,238,231,168,8,132,146,132,186,7198 

4868 DATA 32,41,74,166,198,288,26,169, 

8,141,31,288,169,98,133,248,2443 

4878 DATA 185,8,142,153,8,125,169,8,15 

3,8,142,153,8,124,288,288,65 

4888 DATA 239,162,5,181,212,157,172,12 

3,282,16,248,162,7,169,8,157,1191 

4898 DATA 8,288,282,16,258,168,153,8,1 

24,136,288,258,168,53,185,28,2314 

4188 DATA 78,153,22,124,136,16,247,168 

,4,185,23,78,153,196,2,136,8845 

4118 DATA 16,247,169,8,133,285,133,283 

,141,198,2,169,125,133,284,159,4127 

4128 DATA 142,133,286,169,8,141,48,2,1 

69,127,141,49,2,165,198,288,584 

4138 DATA 43,238,198,32,118,79,169,15, 

133,288,169,15,133,158,164,158,1687 

4148 DATA 185,52,86,168,185,158,79,133 

,283,133,285,164,288,177,283,32,4816 

4158 DATA 61,79,176,8,198,158,16,238,1 

98,288,16,222,168,8,148,21,9989 

4168 DATA 127,185,8,125,153,8,142,288, 

288,247,162,7,142,4,212,169,2518 

4178 DATA 8,133,28,173,31,288,248,38,2 

81,6,248,23,165,20,248,243,3273 

4188 DATA 282,16,233,172,21,127,288,19 

6,248,288,2,168,8,148,21,127,125 

4198 DATA 76,1,79,169,8,133,183,141,21 

,127,141,4,212,96,169,1,8897 

4288 DATA 133,183,169,8,248,241,132,19 

9,281,8,248,32,168,8,145,285,2736 

4218 DATA 196,199,248,24,162,8,134,28, 

174,252,2,224,255,288,17,166,3462 

4228 DATA 28,248,245,72,169,8,145,285, 

184,288,288,226,164,199,24,96,3993 

4238 DATA 162,255,142,252,2,56,96,169, 

1,133,149,173,10,210,41,15,7685 

4240 DATA 141,52,86,173,10,218,41,15,1 

50,8,217,52,86,248,244,288,2941 

4258 DATA 196,149,288,246,153,52,86,28 

8,132,149,192,16,288,229,96,8,1963 

4268 DATA 16,32,48,64,88,96,112,128,14 

4,168,176,192,288,224,248,8,4188 

4278 DATA 123,179,123,8,8,8,8,8,8,8,8, 

8,8,8,8,64,6144 

4288 DATA 66,68,78,72,74,76,78,88,82,8 

4,86,88,98,92,94,0,4440 

4290 DATA 0,0,0,0,0,0,0,0,8,8,0,0,0,0, 

8,8,4298 

4368 DATA 0,0,0,0,0,0,0,65,67,69,71,73 

,75,77,79,81,2304 

4318 DATA 83,85,87,89,91,93,95,8,8,8,0 

,8,0,8,8,8,6858 

4328 DATA 8,8,8,8,8,8,34,57,26,8,34,33 

,58,58,57,8,8223 

4338 DATA 43,47,44,34,37,8,33,46,36,8, 

34,58,57,33,46,8,8718 

4348 DATA 51,35,48,33,48,48,37,44,8,8, 

8,8,8,8,8,8,5852 

4358 DATA 35,47,48,57,58,41,39,48,52,0 

,17,25,24,24,8,34,8887 

4368 DATA 34,43,8,37,46,52,37,58,48,58 

,41,51,37,51,8,8,9819 

4378 DATA 8,8,8,8,8,116,111,112,8,115, 

99,111,114,181,8,16,3462 

4388 DATA 16,16,16,16,16,8,8,156,79,51 

,86,169,144,133,286,169,9671 

4398 DATA 8,133,285,169,42,133,283,169 

,88,133,284,169,1,133,241,169,4244 

4408 DATA 154,133,242,168,8,132,152,13 

2,282,32,33,88,24,42,38,152,6461 

4418 DATA 74,133,281,288,18,32,33,88,1 

33,282,32,33,88,133,281,165,9828 

4428 DATA 152,248,21,32,33,88,145,285, 

32,12,88,198,281,288,244,165,4832 

4438 DATA 282,248,218,198,282,76,222,7 

9,32,33,88,133,151,165,151,145,2138 

4448 DATA 285,32,12,88,198,281,288,245 

,165,282,248,185,198,282,76,248,9552 

4458 DATA 79,238,285,288,2,238,286,165 

,286,197,242,288,8,165,285,197,8211 

4468 DATA 241,288,2,184,184,96,177,283 



A.N.A.L.O.G. COMPUTING' SEPTEMBER 1988 



,230,203,268,2,230,284,96,4,3268 

4478 DflTft 0,38,96,138,108,110,14,96,13 

0,108,116,6,7,138,114,110,6383 

4480 DATA 28,96,130,27,28,12,96,130,18 

8,118,22,96,130,188,116,4,5594 

4490 DATA 0,130,14,15,3,7,135,1,2,3,4, 

7,5,6,2,7,6329 

4500 DflTft 130,5,6,3,7,130,5,6,9,7,130, 

98,100,2,7,130,1838 

4510 DftTft 5,6,2,7,130,5,6,6,7,130,98,1 

00,6,7,130,98,2666 

4520 DATA 100,2,7,137,13,7,1,2,3,4,7,5 

,6,27,7,130,8168 

4530 DATA 5,6,2,7,130,98,108,5,7,138,1 

4,15,15,7,130,98,2067 

4540 DATA 100,4,0,2,7,130,114,110,12,9 

6,130,108,116,6,7,130,4720 

4550 DATA 5,6,4,7,136,98,100,4,7,130,5 

,6,2,7,130,5,221 

4560 DATA 6,4,7,132,98,100,5,6,2,7,132 

,5,6,98,104,10,1066 

4570 DATA 96,130,108,116,6,7,135,1,2,3 

,4,7,5,6,5,7,7251 

4580 DATA 130,5,6,8,7,132,5,6,98,100,2 

,7,130,114,110,14,2828 

4590 DATA 96,130,108,116,2,7,130,98,10 

0,4,0,135,5,6,98,100,3259 

4600 DATA 7,5,6,9,7,133,98,100,7,5,6,5 

,7,130,5,6,9311 

4610 DATA 2,7,130,98,100,14,7,130,98,1 

00,2,7,130,5,6,2,951 

4620 DATA 7,130,98,100,10,7,133,98,108 

,7,5,6,5,7,4,96,244 

4630 DATA 130,108,116,2,7,130,14,15,11 

,7,131,13,98,100,2,7,947 

4640 DATA 130,98,166,14,7,138,98,168,2 

,7,138,98,188,4,6,2,1765 

4658 DATA 7,138,98,166,7,7,135,1,2,3,4 

,7,128,112,12,96,1661 

4668 DATA 136,166,118,14,7,138,98,184, 

6,96,138,102,100,8,7,135,5090 

4670 DATA 1,2,3,4,7,5,6,4,7,130,5,6,3, 

7,130,120,336 

4680 DATA 112,12,96,130,188,118,2,96,1 

30,186,118,2,7,138,98,188,6139 

4698 DATA 2,7,138,114,118,6,96,138,188 

,116,2,7,138,98,188,2,4682 

4768 DATA 7,138,98,166,4,0,2,7,130,98, 

166,4,7,130,5,6,1131 

4710 DATA 3,7,130,5,6,5,7,130,5,6,2,7, 

130,5,6,6,8443 

4720 DATA 7,130,5,6,2,7,130,5,6,8,7,13 

0,98,100,6,7,675 

4730 DATA 130,98,100,2,7,130,5,6,3,7,1 

30,5,6,4,7,133,216 

4740 DATA 5,6,7,5,6,16,7,130,8,10,2,7, 

136,98,160,2,885 

4758 DATA 7,136,5,6,2,7,136,98,100,2,7 

,138,98,100,13,7,2436 

4760 DATA 1,2,3,4,98,188,2,7,130,98,18 

0,2,7,130,98,100,4205 

4770 DATA 4,0,2,7,130,120,112,30,96,13 

8,2 7,28,4,96,130,108,5073 

4780 DATA 116,4,7,130,98,100,6,7,130,9 

8,100,4,7,130,114,110,5312 

4790 DATA 2,96,130,168,116,4,7,130,114 

,110,2,96,130,108,116,4,5865 

4880 DATA 7,138,114,110,4,96,130,188,1 

16,6,7,130,98,100,4,7,3805 

4810 DATA 132,5,6,98,100,2,7,130,120,1 

12,4,96,2,7,130,98,4001 

4820 DATA 100,2,7,130,98,188,2,7,138,9 

8,168,4,0,13,7,130,2290 

4830 DATA 5,6,21,7,130,5,6,2,7,130,98, 

100,4,7,132,98,3015 

4840 DATA 100,8,10,4,7,130,98,100,4,7, 

134,98,100,5,6,98,3087 

4850 DATA 100,4,7,134,98,100,5,6,98,10 

0,4,7,130,98,100,2,3292 

4860 DATA 7,132,14,15,98,100,6,7,138,9 

8,168,6,7,136,98,168,4724 

4870 DATA 10,7,130,98,100,2,7,130,98,1 

00,2,7,130,98,100,4,3891 

4880 DATA 0,130,114,118,28,96,130,108, 

116,6,7,134,14,15,98,160,4663 

4890 DATA 5,6,2,7,138,98,100,6,7,130,1 

20,112,4,96,130,106,5996 

4900 DATA 118,2,7,130,120,112,4,96,130 

,106,118,2,7,130,120,112,6686 

iO 



4910 DATA 4,96,130,106,118,4,7,130,120 

,112,2,96,130,108,110,2,5881 

4920 DATA 96,130,106,118,6,7,130,120,1 

12,10,96,130,106,118,2,7,4904 

4930 DATA 130,98,100,2,7,130,98,100,4, 

0,139,98,100,7,5,6,2175 

4940 DATA 5,6,5,6,5,6,7,7,130,5,6,3,7, 

130,5,6,8566 

4950 DATA 5, 7, 130, 98, lOO, 4, 7, 130, 114 1 

10,2,96,130,106,118,4,5672 

4960 DATA 7,130,98,100,6,7,137,13,7,1, 

2,3,4,7,5,6,7508 

4978 DATA 27,7,131,98,168,13,25,7,138, 

98,186,2,7,136,98,166,4866 

4988 DATA 4,6,136,126,112,18,96,136,8, 

10,6,7,138,5,6,8,486 

4998 DATA 7,138,98,188,4,7,138,98,188, 

8,7,138,98,168,8,7,3238 

5680 DATA 138,114,110,18,96,130,108,11 

6,4,7,130,114,110,6,96,130,6642 

5010 DATA 186,112,4,96,130,27,28,20,96 

,130,102,100,2,7,130,98,5032 

5020 DATA 100,4,0,5,7,130,5,6,16,7,130 

,5,6,5,7,130,83 

5030 DATA 98,100,4,7,130,98,100,8,7,13 

2,98,100,5,6,2,7,1322 

5040 DATA 130,5,6,2,7,130,98,100,6,7,1 

38,5,6,7,1,2,9432 

5050 DATA 3,4,7,5,6,2,7,130,98,100,4,7 

,130,98,100,24,3189 

5060 DATA 7,130,5,6,8,7,130,98,100,2,7 

,130,98,100,4,0,2433 

5670 DATA 130,114,110,6,96,130,108,116 

,4,7,130,114,110,6,96,130,6664 

5080 DATA 108,116,6,7,130,98,100,4,7,1 

36,126,112,2,96,136,168,6511 

5690 DATA 116,4,7,130,98,100,2,7,130,5 

,6,2,7,132,5,6,335 

5168 DATA 98,166,2,7,138,5,6,4,7,138,5 

,6,8,7,132,98,1426 

5118 DATA 188,8,10,2,7,130,98,104,10,9 

6,130,108,116,2,7,136,5190 

5120 DATA 13,7,1,2,3,4,1,2,3,7,132,5,6 

,5,6,5,7147 

5130 DATA 7,130,98,100,2,7,130,98,100, 

4,0,130,98,100,6,7,3213 

5140 DATA 130,98,100,2,7,132,5,6,98,18 

0,6,7,130,98,100,6,3374 

5150 DATA 7,130,98,100,8,7,130,98,100, 

4,7,130,98,100,8,7,3370 

5160 DATA 130,98,100,4,7,130,5,6,12,7, 

136,98,100,4,7,130,3625 

5176 DATA 98,160,2,7,130,5,6,6,7,130,9 

8,100,6,7,130,98,3607 

5180 DATA 100,2,7,130,5,6,10,7,130,98, 

160,2,7,130,98,160,4267 

5190 DATA 4,0,130,98,100,2,7,130,5,6,2 

,7,130,120,112,4,2902 

5200 DATA 96,132,106,118,5,6,2,7,134,5 

,6,98,100,5,6,2,471 

5210 DATA 7,135,5,6,98,100,7,5,6,5,7,1 

30,98,100,4,7,1292 

5220 DATA 130,98,100,8,7,138,120,112,8 

,96,130,108,110,8,96,130,7249 

5230 DATA 106,118,4,7,130,98,100,5,7,1 

30,5,6,3,7,130,120,3087 

5240 DATA 112,6,96,130,106,118,5,7,130 

,5,6,7,7,134,98,100,3968 

5250 DATA 14,15,98,100,4,0,130,98,100, 

4,7,130,5,6,10,7,690 

5268 DATA 130,5,6,2,7,130,98,160,2,7,1 

30,5,6,2,7,130,1596 

5270 DATA 120,112,8,96,130,186,112,4,9 

6,130,102,100,4,7,130,5,4790 

5280 DATA 6,3,7,130,5,6,2,7,130,5,6,3, 

7,130,98,100,2267 

5290 DATA 2,7,130,5,6,3,7,130,5,6,5,7, 

130,98,104,4,1783 

5300 DATA 96,130,108,116,11,7,130,5,6, 

14,7,131,13,98,100,2,2407 

5310 DATA 7,130,98,100,4,0,130,98,100, 

6,7,130,114,110,6,96,5230 

5320 DATA 132,1,2,3,4,2,7,130,98,100,9 

,7,130,5,6,11,684 

5330 DATA 7,130,98,100,6,7,138,5,6,10, 

7,130,98,100,4,7,1950 

5340 DATA 130,5,6,8,7,130,98,100,2,7,1 

32,3,4,98,100,2,2363 

5350 DATA 7,130,8,10,24,96,130,106,118 

SEPTEMBER 1 988 < A, N, A, L.O.G, COMPUTING 



J 2, 7, 130, 98, 100, 4, 0,3588 

5360 DftTft 130,98,100,3,7,133,5,6,7,98, 

100,12,7,130,98,100,4182 

5370 DATA 13,7,130,14,15,7,7,130,98,19 

0,9,7,130,5,6,2,996 

5380 DATft 7,130,5,6,3,7,130,98,100,7,7 

,130,5,6,5,7,380 

5390 DATA 130,98,100,5,7,130,14,15,23, 

7,132,1,2,3,4,4,9002 

5400 DflTfl 7,130,98,100,4,0,132,1,2,3,4 

,4,7,130,128,112,2956 

5410 DATA 12,96,130,106,112,12,96,130, 

27,28,8,96,130,106,112,18,5677 

5420 DATA 96,132,106,118,14,15,2,7,134 

,1,2,3,4,3,4,4,8292 

5430 DATft 96,130,106,112,38,96,130,106 

,118,88,86,88,86,1,226,2,7574 

5440 DflTft 227,2,0,64,0,0,0,0,0,0,0,0,0 

,0,0,0,5927 

LISTING 2: ASSEMBLY 



0100 

0110 


;SAUEttD:5M0W.PTl 


t ~~ """ — — — — — — — 




0120 


; part l of the 


sane 


0130 


§ 




0140 


; by: Barr;; Kolbe 


0150 
0160 
0170 


/ 




.OPT KO LIST 


0180 


' 




0190 


J page zero vari 


ables 


0200 


/ 




0210 


DRY = $82 




0220 


PXP = S83 


;2byter 


0230 


PYP = S85 


■ 11 


0240 


ADD = 587 




0250 


HMV = $88 




0260 


CURCHR = $89 




0270 


UERT = $8A 




028E) 


EADD = $8B 




0299 


EHOLD = $8C 




0300 


EYX = $8D 




0310 


EYY = $8E 




0320 


ICY = $8F 




0330 


ICK = $90 




0340 


UTIME = $91 




0350 


UFLG = $92 




0360 


X5P = $93 




0370 


Y5P = $94 




0380 


RAND = $95 




0390 


ICNT = $96 




0400 


DATA - $97 




0410 


UNIQUE = $98 




0420 


FTIME = $99 


;7 bytes 


0430 


CARTIM = $A0 


;6 bytes 


0440 


RMTIM = $A6 


;6 bytes 


0450 


ROADC = $AC 


;2 bytes 


0460 


ROADG = $AE 


■ 11 


0470 


CNT = $B0 




0480 


SHD = $B1 




0490 


MAPFLG = $B2 




0500 


FUEL = $B3 


;3 bytes 


0510 


LIVES = $B6 




0520 


DIRF = $B7 




0530 


DIRECT = $B8 




0540 


CARCNT = $B9 




0550 


ICEON = $BA 




0560 


Yl = $BB 




0570 


Y2 = $BC 




0580 


ICEDIR = $BD 




0590 


IDECNT = $BE 




0600 


LEUEL = $BF 




0610 


FULK - $C0 




0620 


ICTL = $C1 




0630 


ICTH = $C2 




0640 


ICE5PEED = $C3 




0650 


THOUS = $C4 




0660 


SP5ND = $C5 




0670 


IFLAG = $C6 




0680 


IISY = $C7 




0690 


IIY3 = $C8 




0700 


COUNT = $C9 


; these are 


0710 


IL = $CB 




0720 


TL = $CB 


;all 


0730 


JL = $CD 




0740 


BFL = $CD 




0750 


INDR = $CB 


;2 bytes 



0760 

0770 

0780 

0790 

0800 

0810 

0820 

0830 

0840 

0850 

0860 

0870 

0880 

0890 

0900 

0910 

0920 

0930 

0948 

0950 

0960 

0970 

0980 

0990 

1000 

1010 

1020 

1030 

1040 

1050 

1060 

1070 

1080 

1090 

1100 

1110 

1120 

1130 

1140 

1150 

1160 

1170 

1180 

1190 

1200 

1210 

1220 

1230 

1240 

1250 

1260 

1270 

1280 

1290 

1300 

1310 

1320 

1330 

1340 

1350 

1360 

1370 

1380 

1390 

1400 

1410 

1420 

1430 

1440 

1450 

1460 

1470 

1480 

1490 

1500 

1510 

1520 

1530 

1540 

1550 

1560 

1570 

1580 

1590 

1600 

1610 

1620 

1630 

1640 



IND2 = 
FOFS = 
YH = 
XDl = 
XH = 
ICECNT : 
SCR5 = 
FULX = 
FULY = 
CARX = 
GARY = 
OFFSCN : 
SLENGTH 
EDM = 
5XP = 
SYP = 



$CD 

$CF 

$D0 

$D1 

$D2 

: $D3 

$D4 

$DA 

$Ee 

$E6 
$EA 

$EE 
= $F0 
$F1 
$F3 
$F4 



;0S equates 



Cloy = 
ICCOM = 
ICBAL = 
ICBAH = 
ICBLL = 
ICBLH = 
AUXl = 
AUX2 = 
SETUBU 
XITUBW 
RANDOM 
RTCLDK 
C0N50L 
EOL = 
5E0L = 
PCHR = 

COLORD 
COLORl 
CDLDR2 
COLORS 
C0L0R4 
5DL5TL 
CH = 

STICK = 
5TRIG = 
HP05PO 
HP05M0 
H5CR0L 
USCROL 
HITCLR 
POPL = 
PIPL = 



$E45& 
$0342 
$0344 
$0345 
$0348 
$0349 
$034A 
$0348 
= $E45C 
= $E462 
= $D20A 
= $14 
= $D01F 
$9B 
$BB 
54 

= $02C4 
= $02C5 
= $02C6 
= $02C7 
= $02C8 
= $0230 
$02FC 

$0278 

$0284 

= $D0OO 

= $D004 

= $D404 

= $D405 

= $D01E 

$DOOC 

$DOOD 



;HeMory usage 



;6 bytes 

;6 bytes 

;6 bytes 

;4 bytes 

;4 bytes 

;2 bytes 

;2 



SCNMEM 
PMB = 
SET = 
MYPMB ; 
MSMEM ; 
POMEM : 
PIMEM : 
P2MEM : 
P3NEM : 
CH5ET : 
COVER : 
TXTNIN = 
SCLH = 
CHRLNl = 
SC2 = 
SC3 = 
SC4 = 
5C5 = 
SC6 = 
SC7 = 
SCO = 
5C9 = 
SCIO = 

sen = 

BCKUP = 
SET2 = 
SCRLMEM 
;credits 



$9000 
$8000 

$8Coe 

$8400 

PMB+$O30O 

MYPMB 

MYPMB+$0100 

MYPMB+$O2O0 

MYPMB+$O30O 

$8C00 

$9800 

$8B00 
TXTWIN+20 

TXTWIN+40 
SCNMEM+128 
5C2+128 
SC3+128 
SC4+128 
SC5+128 
SC6+128 
5C7+128 
SC8+128 
SC9+128 
SC10+i28 
$7FC0 
$7D00 
= $7C00 

(> $7b00 



;display list interrupt 

*- PMB 
DLI PHA 



A.N.A.L.O.G. COMPUTING 'SEPTEMBER 1988 



il 



1650 

1660 

1670 

1680 

1690 

1700 

1710 

1720 

1730 

1740 

1750 

1760 

1770 

1780 

1790 

1800 

1810 

1820 

1830 

1840 

1850 

1860 

1870 

1880 

1890 

1900 

1910 

1920 

1930 

1940 

1950 

1960 

1970 

1980 

1990 

2000 

2010 

2020 

2030 

2040 

2050 

2060 

2070 

2080 

2090 

2100 

2110 

2120 

2130 

2140 

2150 

2160 

2170 

2180 

2190 

2200 

2210 

2220 

2230 

2240 

2250 

2260 

2270 

2280 

2290 

2300 

2310 

2320 

2330 

2340 

2350 

2360 

2370 

2380 

2390 

2400 

2410 

2420 

2430 

2440 

2450 

2468 

2470 

2480 

2490 

2500 

2510 

2520 

2530 



Die LDA tt2 

STA $D40A 
STO $D01A 
PLA 
RTI 

Jcharacter set 

■ 

.INCLUDE ttD:SN0M.PT5 

' *= TXTWIH 

.SBYTE " FUEL ISO PLOWS " 
.SBYTE "3 SCORE ■' 
.SBYTE "000000 " 

' »= COVER 

.SBYTE " ).i'r.l"IJg=V<*! ■■ 
.SBYTE "Cull press " 
.SBYTE "START " 

jdisplai; lists ;intPO first 
;then gane board 

' «= S7F00 

IDLST .BYTE 570, §70, S70, $70 

.BYTE 570,570, $70, $42 

.MORD SNOMMEN 

.BYTE $02, 570, 570, 570, $02 

.BYTE $02, $70, $70, $70, $70 

.BYTE $57 
LHS .WORD SCRLMEM 

.BYTE $70, $70, $70, $70, $46 

.WORD TOPSCDRE 

.BYTE $41 

.WORD IDLST 

»= $7F80 

DLl .BYTE $70, $70, $70 

.BYTE $42 

.WORD SNOWMEM 

.BYTE 2 

.BYTE $75 

SLl .WORD SCNMEM 

•BYTE $75 

.WORD SC2 

.BYTE $75 

.WORD SC3 

.BYTE $75 

.WORD SC4 

.BYTE $75 

.WORD SC5 

.BYTE $75 

.WORD see 

.BYTE $75 

.WORD SC7 

•BYTE $75 

.WORD SC8 

.BYTE $75 

.WORD SC9 

.BYTE $75 

.WORD SCIO 

.BYTE $D5 

.WORD sen 

.BYTE 546 
TMESS .WORD TXTWIN 

.BYTE 6,541 

.WORD DLl 

;start of progran 

»= 54000 

;save the display list 
; f or next levels 

BEGIN LDY tt50 
NDL LDA DL1,Y 

STA BCKUP,Y 

DEY 

BPL NDL 

LDA tt >CHSET ; new chrset 

STA 756 

JSR SETPNG ;player init 

■ 

LDX U >UBLNK ;set Vbi 
LDY » <VBLNK 
LDA tt7 
JSR SETUBU 



2540 




LDA no 




2550 




STA IFLAG ; 


intro flag 


2560 








2570 


jbegin new level 




2580 








2590 


NEWBEG LDA ttO 




2600 




STA DIRF 




2610 




STA MAPFLG 




2620 




JSR GETDIR 




2630 




JMP NEWB 




2640 


NDIRC JSR CL0SE6 




2650 


i 






2660 


NEWS JSR INIT 




2670 




JSR REPLAY 




2680 




LDA »3 




2690 




STA LIVES 




2700 




LDA ttO 




2710 




STA ICEON 




2720 




JSR SHOLiy 




2730 


NLEUL JSR STARTI 




2740 




JSR FIGLEU 




2750 




JSR RESFUL 




2760 




JSR DSPFUL 




2770 




JSR REPLAY 




2780 




JSR CLRPM 




2790 




LDA DIRF 




2800 




BNE DROK 




2810 


MAP2 LDA MAPFLG ; 


intern Hap 


2820 




BNE DROK 




2830 




LDA ttl 




2840 




STA MAPFLG 




2850 




JSR UNCOM 




2860 




JMP SKP 




2870 


DROK JSR GETFIL 




2880 




JSR LOADMP 




2890 


SKP 


JSR FNDFUL 




2900 




JSR FNDCRS 




2910 




JSR CNTRDS 




2920 




JSR COPYDL 




2930 




JSR SETSCH 




2940 




LDA 0508 




2950 




STA DIRECT 




2960 




JSR DEFPLR 




2970 




LDA ttl 




2980 




STA UFLG 




2990 








3000 


jna 


in loop 




3010 








3020 


MAIN LDA CONSOL 




3030 




CMP tt6 




3040 




BNE MN2 




3050 




JMP STKEY 




3060 


MN2 


LDA STICK 




3070 




STA DIRECT 




3080 




JSR DEFPLR 




3090 




STA HITCLR 




3100 




JSR MOVPLR 




3110 




JSR REMOVE 




3120 




LDA 644 




3130 




BNE NTRG 




3140 




JSR JMPEDG 




3150 


NTRG JSR ICESND 




3160 




LDA POPL 




3170 




CMP »12 




3180 




BCS OUCH 




3190 




LDA PIPL 




3200 




CMP ttl2 




3210 




BCS OUCH 




3220 




LDA ROADG+1 




3230 




CMP ROADC+1 




3240 




BNE KL 




3250 




LDA ROADG 




3260 




CMP ROADC 




3270 




BNE KL 




3280 




JSR WAITSN 




3290 




JMP NLEVL 




3300 


KL 


LDA FUEL 




3310 




ORA FUEL+1 




3320 




ORA FUEL+2 




3330 




BNE KK 




3340 


OUCH STA HITCLH 




3350 




JSR REMP23 




3360 




JSR SPIN 




3370 




JSR GRESET 




3380 




STA HITCLR 




3390 




JSR DELAY 




3400 




JMP KK 




3410 


OOPS JMP GAMDUR 




3420 


KK 


LDA LIVES 





62 



SEPTEMBER 1 988 ' A.N, A.L.O.G, COMPUTING 



3438 


BEQ 


OOPS 




3440 


LDA 


CH 




3458 


CMP 


ttSFF 




3468 


BEQ 


NOPAUS 




3478 


JSR 


PAUSE 




3488 


NOPAUS JMP MAIN 




3498 




1 




3588 


ipmrzj 




3518 








3528 


5ETPMG LDA tt62 




3538 


5TA 


559 




3548 


LDA 


»17 


;5th en 


3558 


STA 


623 




3568 


LDA 


tt3 




3578 


STA 


53277 




3588 


LDA 


tt >PMB 




3598 


STA 


54279 




3688 


LDA 


»$28 


; yellow 


3618 


STA 


784 




3628 


LDA 


06 


;black 


3638 


STA 


785 




3648 


LDA 


»$A6 




3658 


STA 


786 




3668 


STA 


787 




3678 


LDA 


tt$80 




3688 


STA 


PXP 




3698 


LDA 


«$70 




3788 


STA 


PYP 




3718 


LDA 


ttl 




3728 


STA 


53258 




3738 


STA 


53259 




3748 


RTS 






3758 








3768 


:IJIJ:1iM'j:»i 114:1 




3778 








3788 


CLRPM LDY «SFF 




3798 


LDA 


no 




3888 


CPM STA 


P0MEM,Y 




3818 


STA 


P1MEM,Y 




3828 


STA 


P2MEM,Y 




3838 


STA 


P3MEM,Y 




3848 


STA 


MSMEMj Y 




3858 


DEY 






3868 


CPY 


ttSFF 




3878 


BNE 


CPM 




3888 


RTS 






3898 








3988 


;III3BiDriiiB 




3918 








3928 


DEFPLR LDX tt3 




3938 


LDA 


DIRECT 




3948 


DFl CMP 


DIRTAB.M 




3958 


BEQ 


DFOK 




3968 


DEX 






3978 


BPL 


DFl 




3988 


RTS 






3998 


DF8K LDA PDeL,X 




4888 


STA 


JL 




4818 


LDA 


PD8H,X 




4828 


STA 


JL+1 




4838 


LDA 


PD1L,X 




4848 


STA 


IL 




4850 


LDA 


PD1H,X 




4868 


STA 


IL+1 




4878 


TXA 






4888 


PHA 






4898 


LDA 


PYP 




4188 


STA 


Yl 




4118 


CLC 






4128 


ADC 


YTB,X 




4138 


STA 


PYP + 1 




4148 


STA 


Y2 




4158 


TAY 






4168 


LDA 


no 




4178 


STA 


PlMEM-1, 


Y 


4188 


LDY 


ttO 




4198 


DFP LDA 


CJLJ,Y 




4288 


LDX 


Yl 




4218 


STA 


POMEM,X 




4228 


LDA 


tILJ,Y 




4230 


LDX 


Y2 




4248 


STA 


P1MEM,X 




4258 


IHY 






4268 


INC 


Yl 




4278 


INC 


Y2 




4288 


CPY 


ttl 6 




4290 


BNE 


DFP 




4388 


LDX 


Y2 




4318 


STA 


P1MEM,X 





4320 

4330 

4340 

4350 

4360 

4370 

4388 

4398 

4400 

4410 

4420 

4430 

4440 

4450 

4460 

4470 

4480 

4490 

<PeD4 

4500 

>P0D4 

4510 

<P1D4 

4520 

>P1D4 

4530 

4540 

4550 

4568 

4570 

4580 

4590 

4688 

4618 

4628 

4638 

4640 

4650 

4660 

4670 

4688 

4698 

4788 

4718 

4728 

4738 

4740 

4750 

4760 

4770 

4780 

4790 

4880 

4810 

4828 

4838 

4848 

4858 

4868 

4870 

4880 

4898 

4900 

4910 

4920 

4930 

4940 

4950 

4968 

4978 

4980 

4998 

5688 

5818 

5828 

5838 

5848 

5858 

5868 

5878 

5888 

5898 

5188 

5118 

5128 

5138 

5148 

5158 

5168 



LDX PXP 

STX HPOSPO 

PLA 

TAX 

LDA PXP 

CLC 

ADC XTB,X 

STA PXP+1 

STA HPOSPO+1 

RTS 

■ 

DIRTAB .BYTE 11,7,14,13 
XTB .BYTE $FF,$01,$00,$00 
YTB .BYTE 500, $08, $FF,$01 



lager definitions 



PD8L .BYTE <P8D1, <PeD2, <P8D3, 

PDOH .BYTE >PeDl, >P8D2, >P0D3, 

PDIL .BYTE <P1D1, <P1D2, <P1D3, 

PDIH .BYTE >P1D1, >P1D2, >P1D3, 



PODl .BYTE 
.BYTE 
.BYTE 
.BYTE 
P0D2 .BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
BYTE 
BYTE 
BYTE 
.BYTE 
BYTE 
BYTE 
BYTE 



P0D3 



P8D4 



$00,500 
$FF,S76, 
$76, $76, 
$FF,$00, 

$00. $80 
SFF,S6E, 
$6E,$6E, 
$FF,$88, 

$88. $66 
$7E,S7E, 
$7E,$66, 
$7E,$7E, 

$00. $66 
$66, $66, 
$7E,$7E, 
$7E,$66, 



,$0O,$FF 

576, S76 

$76,$FF 

$88, $88 

,$88.$FF 

$6E,$6E 

$6E,$FF 

$88, $86 

,$66,$7E 

57E,$7E 

$66, $66 

$66, $88 

,$7E.$7E 

$66,S7E 

$7E,$7E 

$66,8 



PlDl .BYTE 
.BYTE 
.BYTE 
.BYTE 

P1D2 .BYTE 
.BYTE 
.BYTE 
.BYTE 

P1D3 .BYTE 
.BYTE 
.BYTE 
.BYTE 

P1D4 .BYTE 
.BYTE 
.BYTE 
.BYTE 



$e8,$AA.$AA.$88 
$88, $84, $84, 584 
$84, $84, $84, $88 
$88,$AA,$AA,$6e 

$80,$FD.$FD.$81 
$81,561,561,561 
$61, $61, $61, $81 
$81,$FD,$FD,$88 

O,SFF,5FF,50O 
$99, $99, $18, $18 
$99, $99, $18, $18 
$99, $99, $88, $80 

$88. $88. $81. $99 
$18,S18,$99,S99 
$18, $18, $99, $99 
$80,$FF,$FF,$00 



LDL LDY »19 

BNE DLN 
DELAY LDY tt7 
DLN JSR MAIT 

DEY 

BNE DLN 

RTS 

;set up 128 table 

INIT LDY no 

LDA tt <5CNMEM 

STA M128L 

LDA tt >SCNMEM 

STA M128H 
TLP LDA M128L,Y 

CLC 

ADC ttl28 

STA M128L+1,Y 

LDA Mi28H,Y 

ADC »0 

STA M128H+1,Y 

INY 

CPY tt33 

BNE TLP 



LDX tt7 



jscore S fuel 



A,N,A,L,0,G. COMPUTING'SEPTEMBER 1988 



i] 



5178 

5180 

5198 

5288 

5218 

5228 

5238 

5248 

5258 

5268 

5278 

5288 

5298 

5388 

5318 

5328 

5338 

5348 

5358 

5368 

5378 

5388 

5398 

5488 

5418 

5428 

5438 

5448 

5458 

5468 

5478 

5488 

5498 

5508 

5518 

5528 

5538 

5548 

5558 

5568 

5578 

5588 

5598 

5688 

5618 

5628 

5630 

5648 

5658 

5660 

5578 

5688 

5698 

5788 

5718 

5728 

5738 

5748 

5758 

5768 

5778 

5788 

5798 

5888 

5818 

5828 

5830 

5840 

5858 

5868 

5870 

5888 

5898 

5900 

5910 

5928 

5938 

5948 

5958 

5968 

5978 

5988 

5998 

6808 

6018 

6020 

6030 

6040 

6050 



LDA tt$ie ;ic $18 
SCF STft 5CR5,X 
DEK 

BPL SCF 
STft TH0U5 
J5R RESFUL 

LDfl «3 ;set lives 

STfl LIUES 
LDA tt$13 
STA TKTWIM+16 
LDA U$69 
STA ICECNT 
LDA «$FF 
STA LEUEL 
RTS 

CLRTAB .BYTE $D8, S44, $8A, $46,$88 

STSCRL LDA tt >SL1 
STA JL+1 
LDA 9 <SL1 
STA JL 
RTS 



MHER LDY DRY 
MHERE LDA M128L,Y 

STA JL 

LDA M128H,Y 

STA JL+1 

RTS 



SMK .BYTE 22 
5MY .BYTE 4 



;pos on scrn 



SCROLL LDA DIRECT 



MMR CMP 
BNE 
JSR 
BCC 
RTS 

RAl LDA 
CMP 
BCC 
RTS 

HO LDA 
STA 
JSR 

KB LDA 
STA 
JSR 
INC 
INC 
LDX 

KA STX 
JSR 
JSR 
DEX 
BPL 
DEC 
LDA 
BPL 

FULOUT 
JSR 
JSR 
RTS 

MML CMP 
BNE 
JSR 
BCC 
RTS 

LAI LDA 
BNE 
RTS 

HQ LDA 
STA 
JSR 

KD LDX 

KC STX 
JSR 
JSR 
INX 



»7 
MML 
LOOKR 
RAl 

SXP 
tt83 
HO 

ttl 

VERT 

PLMSND 

ttl 

ADD 

CORSH 

SMX 

SXP 

tt3 

HSCROL 

MAIT 

TRACKR 

KA 

UEHT 
UERT 
KB 
JSR SFUEL 
0FF2 
CKFTIM 



ttll 
MUP 
LOOKL 
LAI 

SXP 
HQ 

ttl 

VERT 

PLMSND 

tt8 

HSCROL 

MAIT 

TRACKL 



;rt? 



6868 




CPX tt4 


6878 




BNE KC 


6080 




LDA tt$FF 


6090 




STA ADD 


6180 




LDX ttO 


6110 




STX HSCROL 


6120 




JSR CORSH 


6130 




DEC SXP 


6148 




DEC SMX 


6156 




DEC VERT 


6168 




LDA VERT 


6178 




BPL KD 


6188 




JMP FULOUT 


6198 






6280 


;33 




6218 






6228 1 


CORSH LDY ttO 


6230 1 


CSA 


LDA SL1,Y 


6240 




CLC 


6250 




ADC ADD 


6260 




STA SL1,Y 


6278 




INY 


6288 




INY 


6298 




INY 


6308 




CPY tt33 


6318 




BNE CSA 


6328 




RTS 


6338 






6348 


\m 




6358 






6368 


MUP 


CMP ttl4 


6378 




BNE MDN 


6388 




JSR LOOKU 


6398 




BCC UAl 


6488 




RTS 


6418 


UAl 


LDA SYP 


6428 




BEQ NOM 


6438 




JSR PLMSND 


6448 




LDA »$FF 


6458 




STA ADD 


6468 




JSR CORSV 


6470 




DEC SYP 


6480 




DEC SMY 


6490 




LDX ttlS 


6580 


Ul 


STX VSCROL 


6518 




JSR MAIT 


6528 




JSR TRACKU 


6538 




DEX 


6548 




BPL Ul 


6558 




LDA ttO 


6568 




STA VSCROL 


6578 




JMP FULOUT 


6588 




RTS 


6598 






6688 


;rFnn 


6618 






6628 


MDN 


CMP ttl3 


6638 




BNE NOM 


6648 




JSR LOOKD 


6658 




BCC DAI 


6668 




RTS 


6670 


DAI 


LDA SYP 


6680 




CMP »9 


6690 




BCC Dl 


6700 




RTS 


6710 


Dl 


JSR PLMSND 


6720 




LDX ttO 


6738 


D2 


STX VSCROL 


6740 




JSR MAIT 


6750 




JSR TRACKU 


6760 




INX 


6770 




CPX ttl6 


6780 




BNE D2 


6790 




LDX ttO 


6800 




STX VSCROL 


6810 




LDA ttl 


6820 




STA ADD 


6838 




JSR CORSV 


6840 




INC SYP 


6850 




INC SMY 


6860 




JMP FULOUT 


6878 


NOM RTS 


6888 






6898 


;!TniMm'ia«Fff 


6900 






6910 


CORSV LDA ADD 


6920 




BMI CSV 


6930 




LDY ttO 


6940 


CUL LDA SL1,Y 



i4 



SEPTEMBER 1 988 ' A.N.A.L.O.G. COMPUTING 



6958 




CLC 




6968 




ADC 


tt$88 


6978 




STft 


5L1,Y 


6988 




INY 




6998 




LDA 


SLi,Y 


7688 




ADC 


tt0 


7818 




STA 


SL1,Y 


7828 




INY 




7838 




INY 




7048 




CPY 


tt33 


7858 




BNE 


CVL 


7868 




RTS 




7078 


f 






7080 


CSV 


LDY 


ne 


7098 


CUP 


LDA 


SL1,Y 


7108 




SEC 




7110 




SBC 


tt$88 


7128 




STA 


SL1,Y 


7138 




INY 




7148 




LDA 


SL1,Y 


7158 




SBC 


»8 


7168 




STA 


SL1,Y 


7178 




INY 




7188 




INY 




7198 




CPY 


»33 


7200 




BNE 


CUP 


7218 




RTS 




7228 








7230 


;CH 


aao 


■mn 


7248 








7258 


MAIT LDA tt8 


7268 




STA 


$14 


7278 


NM2 


LDA 


$14 


7280 




BEQ 


MN2 


7290 




RTS 




7300 








7318 


;BS 


itSd. 


JJWJIii 


7328 








7338 


MOUPLR LDA DIRECT 


7340 




CMP 


«7 


7350 




BNE 


MLL 


7360 




LDA 


PXP 


7370 




CMP 


«$7C 


7388 




BCC 


GOR 


7398 




LDA 


SXP 


7488 




CMP 


»83 


7418 




BCS 


GOR 


7428 




J MP 


MOUT 


7438 


GOR 


LDA 


PXP 


7448 




CMP 


«$C8 


7458 




BCS 


MURET 


7468 




JSR 


LOOKR 


7478 




BCC 


GORl 


7488 




RTS 


i 


7498 


GSRl JSR PLMSND 


7588 




LDY 


«7 


7518 


RLl 


INC 


PXP 


7528 




LDX 


PXP 


7538 




STX 


HP0SP8 


7548 




INC 


PXP+1 


7558 




LDX 


PXP + 1 


7568 




STX 


HP0SP8+1 


7578 




JSR 


HAIT 


7580 




JSR 


TRACKR 


7598 




DEY 




7600 




BPL 


RLl 


7610 




INC 


SMX 


7628 




INC 


SMX 


7638 




JMP 


FULOUT 


7648 


MOUT JSR SCROLL 


7658 


MURET RTS 


7668 


f 






7678 


MLL 


CMP 


ttll 


7688 




BNE 


MDD 


7698 




JSR 


LOOKL 


7788 




BCC 


G0L2 


7718 




RTS 




7728 


G0L2 LDfl PXP 


7738 




CMP 


«132 ; 


7748 




BCS 


GOLl 


7758 




LDA 


SXP 


7768 




BNE 


MOUT 


7778 


GOL 


LDA 


PXP 


7788 




CMP 


»$38 


7798 




BEQ 


MURET 


7888 




BCC 


MURET 


7818 


GOLl JSR PLHSND 


7828 




LDY 


«7 


7830 


LLl 


DEC 


PXP 



;nope 



;124+8 



7840 




LDX 


PXP 




7858 




STX 


HPOSPe 




7860 




DEC 


PXP+1 




7878 




LDX 


PXP+1 




7888 




STX 


HPO5P0+1 




7898 




JSR 


HAIT 




7908 




JSR 


TRACKL 




7910 




DEY 






7920 




BPL 


LLl 




7930 




DEC 


SMX 




7948 




DEC 


SMX 




7958 




JMP 


FULOUT 




7968 


r 








7978 


MDD 


CMP 


»13 




7988 




BNE 


MUU 




7990 




JSR 


LOOKD 




8888 




BCC 


GD3 




8818 




RTS 






8828 


GD3 


LDA 


PYP 




8838 




CMP 


»$60 




8848 




BCC 


GDN 




8858 




LDA 


SYP 




8868 




CMP 


tt9 




8878 




BCS 


GDN 




8888 




JMP 


MOUT 




8098 


GDN 


LDA 


PYP 




8188 




CMP 


lt$CO 




8118 




BCS 


MURET 




8120 




LDA 


ttlS 




8138 




STA 


VERT 




8148 




JSR 


PLMSND 




8158 


GD2 


LDA 


PYP 




8168 




STA 


Yl 




8178 




LDA 


PYP + 1 




8188 




STA 


Y2 




8198 




TAY 






8288 




LDA 


no 




8218 




STA 


P1MEM,Y ;eras 


top 


8228 




LDX 


»15 




8230 


GDI 


LDY 


Yl 




8246 




LDA 


P0MEM+15,Y 




8258 




STA 


P0MEM+16,Y 




8260 




LDY 


Y2 




8270 




LDA 


P1MEM+15,Y 




8288 




CMP 


tt$18 




8296 




BNE 


FOA 




8388 




LDA 


«$99 




8318 




BNE 


FOB 




8328 


FOA 


CMP 


«$99 




8336 




BNE 


FOB 




8348 




LDA 


tJ$18 




8358 


FOB 


STA 


P1MEM+16,Y 




8366 




DEC 


Yl 




8378 




DEC 


Y2 




8386 




DEX 






8398 




BPL 


GDI 




8400 




INC 


PYP 




8410 




INC 


PYP + 1 




8420 




JSR 


HAIT 




8438 




DEC 


UERT 




8448 




LDA 


UERT 




8456 




BPL 


GD2 




8468 




INC 


SMY 




8470 




JMP 


FULOUT 




8488 


J 








8496 


t 








8566 


MUU 


CMP 


ttl4 




8516 




BEQ 


MU3 




8528 


GU4 


JMP 


MURET 




8536 


MU3 


JSR 


LOOKU 




8546 




BCC 


MU4 




8558 




RTS 






8568 


MU4 


LDA 


PYP 




8570 




CMP 


»$70 




8580 




BCS 


GUU 




8596 




LDA 


SYP 




8686 




BEQ 


GUU 




8618 




JMP 


MOUT 




8620 


GUU 


LDA 


PYP 




8638 




CMP 


tt$3e 




8648 




BNE 


GU5 




8650 




JMP 


MOUT 




8660 


GU5 


JSR 


PLHSND 




8670 




LDA 


«15 




8686 




STA 


UERT 




8696 


GU2 


LDY 


PYP 




8766 




LDX 


»15 




8716 


GUI 


LDA 


PeMEM,Y 




8728 




STA 


P0MEM-1,Y 





A,N,A,L,0,G, COMPUTING' SEPTEMBER l?8! 



H 



8739 
8748 
8758 
8768 
8778 
8788 
8790 
8868 
8818 
8828 
8838 
8848 
8858 
8868 
8878 
8888 
8898 
8966 
8910 
8928 
8938 
8948 
8958 
8968 
8978 
8988 
8998 
9880 
9618 
9628 
9836 
9648 
9658 
9060 
9070 
9080 
9090 
9168 
9116 
9126 
9130 
9140 
9150 
9160 
9170 
9180 
9190 
9266 
9216 
9226 
9238 
9240 
9250 
9260 
9270 
9280 
9290 
9300 
9310 
9320 
9330 
9340 
9350 
9360 
9370 
9386 
9398 
9466 
9416 
9426 
9436 
9440 
9450 
9460 
9470 
9480 
9490 
9580 
9510 
9520 
9530 
9540 
9550 
956d 
9570 
9580 
9590 
9600 
9610 



PIMEM, Y 

tt$18 

FOC 

«$99 

FOD 

«$99 

FOD 

tt$18 

P1MEM-1,Y 



GUI 

MAIT 

PYP 

UERT 

WERT 

GU2 

SMY 

FULOUT 



LOA 
CMP 
BNE 
LDA 
BNE 

FOC CMP 
BNE 
LDA 

FOD STfl 
INY 
DEX 
BPL 
JSR 
DEC 
DEC 
LDA 
BPL 
DEC 
JMP 



! tl.t*V<J iresult in [lUJJiU 

LOOKR LDY SMY 

JSR MHERE 

LDY SMX 

INY 

INY 
LKRET LDfl f JLJ , Y 

STA CURCHR 

JSR CKCHAR 

RTS 

LOOKL LDY SMY 
JSR MHERE 
LDY SMX 
DEY 
DEY 
JMP LKRET 

LOOKD LDY SMY 
INY 

JSR NHERE 
LDY SMX 
JMP LKRET 

■ 

LOOKU LDY SMY 
DEY 

JSR NHERE 
LDY SMX 
JMP LKRET 

;erase chr beneath dozer 
;repalce with next char. 
;which is a road w/o snow 



REMOVE LDY SMY 

JSR MHERE 

LDY SMX 

LDA CJL),Y 

LDX ttl5 
RBI CMP ROADS, X 

BEQ SF5 

DEX 

BPL RBI 

JMP SF6 
SF5 CMP tt$lB 

BEQ SF8 

CMP »$1D 

BNE 5F7 
SF8 PHA 

LDA n$61 

5TA tJL),Y 



jcng car to road 



;save car 



INY 

STA CJL),Y 

JSR BONSCR 

JSR HORN 

PLA 

CMP «$1B 

BEQ SFA 

BNE SF6 



SF7 TAX 
INX 
TXA 
STA 
INY 
LDA 
TAX 
INX 
TXA 



fJL),Y 
CJL),Y 



9620 STA tJLJ,Y 
9638 CMP »$0B 
9640 BEQ SF6 

9650 SFA INC ROADG 
9660 BNE SHI 
9670 INC ROADG+1 

9680 ; 



fuel? 



9690 


SHI 


JSR 


DOSCOR 


;show score 


9700 


/ 








9710 


SF6 


LDA 


CURCHR 




9720 




CMP 


tt$68 


;fuel? 


9730 




BNE 


CAR? 




9740 


/ 








9750 




INC 


CURCHR 


;enpty fuel 


9760 




LDY 


SMY 




9770 




JSR 


MHERE 




9780 




LDX 


F0F5 


;get pos. 


9790 


FFA 


LDA 


JL+1 




9800 




CMP 


FULY,X 




9810 




BEQ 


FFB 




9820 


FFC 


DEX 






9838 




BPL 


FFA 




9848 




RTS 




;shouldnt happen 


9858 


FFB 


LDA 


SMX 


;put it on 


9868 




CLC 




jscreen 


9876 




ADC 


JL 




9886 




CMP 


FULXjX 




9898 




BNE 


FFC 




9966 




LDA 


ttl66 


;got it 


9918 




STA 


FTIMEjX 


;set tiHer 


9920 




JSR 


FILSND 


; sound 


9930 




JSR 


RESFUL 


;show it 


9946 




JSR 


DSPFUL 





9958 SF2 RTS 

9966 ; 

9976 ;hit a car 

9986 ; 

9998 CAR? LDY SMY ;find out 

816666 JSR HHERE ;which one 

610816 LDX CARCNT 

016826 BEQ SF2 

610830 CBl LDA JL+1 

010040 CMP CARY,X 

010050 BEQ CB2 

810060 CBS DEX 

010070 BPL CBl 

010088 RTS ;nope 

010090 CB2 LDA JL 

616166 CLC 

ADC SMX 

CMP CARX,X 

BNE CB3 

LDA tt56 

STA CARTIMjX 

RTS 



;set tiner 



road, fuel, car chrs 
8 = fuel $lb= car 



610116 

810120 

010130 

010140 

010150 

010160 

616176 

616186 

616196 

616266 

616216 ROADS .BYTE 568, $62, $64, $66 

816226 .BYTE $68, $6A, $6C, $6E 

010236 .BYTE $70, $72, $74, $76 

010240 .BYTE $78, $08, $1B, $1D 

616256 .BYTE $61, $63, $65, $67, $69 

616260 .BYTE $6B, $6D, $6F, $71 

810270 .BYTE $73, $75, $77, $79 

010280 ; 

010290 jcheck if about to noue 

016366 ;onto a valid char. 

816310 ; 

616326 CKCHAR LDX tt28 

816336 CKl CMP ROADS, X 

616340 BEQ CROK 

010350 DEX 

010366 BPL CKl 

616376 SEC 

616380 RTS 

010390 CROK CLC 

010400 RTS 

010410 ; 

010420 {decrease fuel 

010430 ; 

010440 SFUEL DEC FUEL+2 

616456 LDA FUEL+2 

616466 ORA FUEL+1 

818478 ORA FUEL 

618486 BEQ SF3 

618496 LDA FUEL+2 

616566 BPL 5F3 

SEPTEMBER H88 • A,N . A, L.O.G, COMPUTING 



;no Hove 
;nove ok 



eiesia 

818528 
818538 
818548 
818558 
818568 
818578 
818588 
818598 
818688 
818618 
816628 
818638 
816648 
818658 
616668 
818678 
818688 
816698 
616708 
818718 
818728 
616738 
818748 
818758 
618766 
618778 
616788 
818798 
618866 
616816 
816828 
816838 
818848 
618858 
818868 
818878 
618888 
616898 
818988 
616918 
618928 
818938 
818948 
618958 
618966 
618976 
818986 
818998 



LDA tt9 

STft FUEL+2 

DEC FUEL+1 

LDA FUEL+1 

BPL SF3 

LDA tt9 

STfl FUEL+1 

DEC FUEL 
SF3 JSR DSPFUL 
FRET RTS 

;show fuel left 

D5PFUL LDX U2 
DS LDA FUEL,X 

ORA tt$18 

STA TXTMZN+6,X 

DEX 

BPL DS 

RTS 

;wait sone 

MAITSN LDA tt8 

LDX ttl5 ;15 sees 

STft UFLG 
MSM JSR LDL 

DEX 

BPL MSM 

RTS 

;pt2 is rest of gane 
;pt3 is the screen Maker 
;pt4 is the introduction 

■INCLUDE ttD:SN8M.PT2 
.INCLUDE »D:SN0M.PT4 
.INCLUDE ttD:SN0M.PT3 

; variables 

RANDS .DS 16 
DBUF .DS 28 
EDGFLG .BYTE 1 
H128L .DS 36 
M128H .DS 36 
*= S82E8 

.MORD BEGIN 

.END 



LISTING 3- ASSEMBLY 



8188 
8118 
6128 
6136 
8146 
8156 
6168 
6178 
8186 
6198 
6288 
8216 
8228 
8238 
6248 
8258 
8266 
8278 
6288 
8296 
6386 
8318 
6328 
8338 
6348 
8358 
6368 
8378 
8386 
6398 
8488 
6416 
6428 
6438 
8446 
8450 



SAUEttD:SN0W.PT2 



part 2 Of gawe 
by:Barry Kolbe 



load a nap fron disk 

LOADMP LDX »$18 

LDA tt$8C 

STA ICCOM,X 

JSR CIOU 

LDX tt$18 

LDA tt3 

STA ICCOM,X 

LDA n >MAPNAH 

STA ICBAH,X 

LDA tt <MAPNAM 

STA ICBAL,X 

LDA tt4 

STA AUX1,X 

LDA tt8 

STA AUX2,X 

JSR CIOU 

BPL RDOK 

RTS 
RDOK LDX n$18 

LDA tt >SCNMEM 

STA ICBAH,X 

LDA tt <SCNMEH 

STA ICBALiX 

LDA tt8 

LDA ttl8 ;16 pages 

STA ICBLH.X 



8468 
8478 
6486 
8496 
8588 
6518 
6528 
6538 
6548 
6558 
8568 
8578 
6588 
6590 
8688 
8616 
8626 
6638 
8648 
6658 
6668 
8678 
8688 
8690 
8766 
8716 
8728 
0736 
6748 
6756 
6766 
8778 
6788 
6798 
8888 
8818 
6828 
6838 
6848 
6858 
8868 
6878 
6888 
8898 
8906 
0916 
8928 
8938 
0948 
6950 
0966 
0978 
0988 
8998 
1800 
1010 
1628 
1638 
1848 
1858 
1060 
1076 
1088 
1696 
1188 
1118 
1126 
1136 
1148 
1158 
1166 
1178 
1188 
1198 
1288 
1218 
1228 
1238 
1248 
1258 
1260 
1278 
1280 
1298 
1368 
1318 
1328 
1338 
1348 



;skip over 2 



LDA tt7 ;read it 
STA ICCON,X 
JSR CIOU 
RTS 

HAPNAM .BYTE "Dl:SMAP. '^EOL 

count all the roads 
each pair of road bytes 
counts as i point 

CNTRDS LDY ttO 

STY ROADC 

INC ROADC 

STY ROADC+1 

STY CNT ; lines 

JSR MHERE 
CR4 LDY ttO 
CRl LDA CJLJ,Y 

LDX ttl2 
CR3 CMP ROADS, X J is it road? 

BEQ CR2 

DEX 

BPL CR3 
CR6 INY 

INY 

CPY ttO 

BNE CRl 

INC JL+1 

INC CNT 

LDY CNT 

CPY ttl8 

BNE CR4 

RTS 
CR2 INC ROADC 

BNE CR5 

INC ROADC+1 
CR5 JMP CR6 

;copy the gane dlist 
;back for next board 

COPYDL LDY ttSB 
CCl LDA BCKUP,Y 

STA DL1,Y 

DEY 

BPL CCl 

RTS 
i 

;reset fuel in text window 

RESFUL LDA tt8 
STA FUEL+2 
LDA ttl 
STA FUEL 
LDA FULK 
STA FUEL+1 
RTS 

find fuel containers 
in wap-store their 
positions 



FNDFUL LDY ttO 
STY CMT 
STY FOFS 

554 LDY CNT 
CPY ttl9 
BNE SS3 
RTS 

SS3 JSR HHERE 
LDY tte 

SS2 LDA {JLJ,Y 
CMP ttS 
BEO SSI 

555 INY 
INY 

CPY ttl26 
BNE SS2 
INC CNT 
JMP SS4 



SSI LDX FOFS 
LDA JL+1 
STA FULY,X 
TYA 
CLC 

ADC JL 
STA FULX,X 



;28 lines 



;fuel chr 



;end of line? 



;store x,y 
;positions 



A,N,A,L,0,G, COMPUTING 'SEPTEMBER 1988 



(7 



1358 




INC 


FOFS 


1360 




LDA 


FOFS 


1378 




CMP 


tt6 ;only 6 allowe< 


1388 




BNE 


S55 


1398 




RT5 




1488 








1418 


jcheck 1 


liMers-fuel first 


1420 








1438 


CKFTIM LDH F0F5 


1448 




BEQ 


CCB ;no fuel 


1450 


FTC 


LDA 


FTIME,X 


1460 




BEQ 


FTB 


1478 




DEC 


FTIMEjX 


1480 




LDA 


FTIME,X 


1490 




BNE 


FTB 


1500 




LDA 


FULY,X 


1510 




STA 


JL+1 


1520 




LDA 


FULX,X 


1530 




STA 


JL 


1540 




LDY 


»0 


1550 




LDA 


tt8 


1560 




STA 


CJL),Y 


1578 




INY 




1588 




LDA 


tt$8A 


1598 




STA 


tJLJ,Y 


1688 


FTB 


DEX 




1618 




BPL 


FTC 


1628 








1638 


jcheck bonus car tiners 


1648 








1658 


CCB 


LDK 


CARCNT 


1668 




BNE 


CTC ;yes 


1670 




RTS 


J no cars 


1680 


CTC 


LDA 


CARTIM,X 


1690 




BEQ 


CTD 


1700 




DEC 


CARTIM,X 


1710 




LDA 


CARTIM,X 


1720 




BNE 


CTD 


1730 




LDA 


CARY,X 


1748 




STA 


JL+1 


1758 




LDA 


CARX^X 


1768 




STA 


JL 


1770 




LDY 


tt8 J put bonus 


1788 




LDA 


CJL},Y ;car on sen 


1790 




CMP 


tt$60 ;snow bckgrnd? 


1880 




BME 


CTF 


1810 




LDA 


tt$lB J yes 


1820 




STA 


(JLJ,Y 


1830 




INY 




1840 




LDA 


tt$lC 


1850 


CTG 


STA 


(JLJ,Y 


I860 




LDA 


tt$5e 


1870 




STA 


RMTIM,X 


1888 




JSR 


BELL 


1890 


CTD 


DEK 




1980 




BPL 


CTC 


1910 








1920 


;tiMers 


to renoue cars 


1930 








1940 




LDX 


CARCNT 


1950 


CTK 


LDA 


RMTIM,X 


1960 




BEQ 


RRA 


1970 




DEC 


RMTIM,X 


1980 




LDA 


RMTIM, X 


1998 




BNE 


RRA 


2888 




LDA 


CARY.X 


2810 




STA 


JL+1 


2020 




LDA 


CARX,X 


2030 




STA 


JL 


2840 




LDY 


ttO 


2050 




LDA 


tJLJ,Y 


2860 




CMP 


ttSlB 


2078 




BNE 


CTI 


2088 




LDA 


tt$60 ;snow road 


2890 


CTM 


STA 


tJLJ,Y 


2188 




IHY 




2110 




STA 


CJLJ,Y 


2120 




LDA 


tties ; reset tiner 


2130 




STA 


CARTIM,X 


2140 


RRA 


DEX 




2150 




BPL 


CTK 


2160 




RTS 




2170 


1 






2188 


CTI 


LDA 


tt$61 ;plain road 


2190 




BNE 


CTM 


2200 




RTS 




2210 


CTF 


LDA 


tt$lD 


2220 




STA 


tJL) ,Y 


2230 




INY 





2248 

2258 

2260 

2270 

2288 

2298 

2380 

2318 

2328 

2338 

2348 

2358 

2360 

2370 

2380 

2390 

2408 

2418 

2428 

2430 

2440 

2450 

2460 

2470 

2480 

2490 

2500 

2510 

2520 

2530 

2548 

2550 

2560 

2570 

2580 

2590 

2600 

2610 

2620 

2630 

2640 

2650 

2660 

2670 

2680 

2690 

2788 

2710 

2720 

2738 

2740 

2750 

2760 

2770 

2780 

2790 

2888 

2818 

2828 

2838 

2840 

2850 

2860 

2870 

2880 

2898 

2988 

2916 

2928 

2938 

2948 

2958 

2960 

2970 

2988 

2998 

3080 

3010 

3020 

3030 

3040 

3050 

3060 

3070 

3080 

3090 

3180 

3110 

3120 



LDA nSlE 
BNE CTG 

jfind bonus cars on Map 



FNDCRS LDY ttO 
STY CNT 
STY CARCNT 

FCA LDY CNT 
CPY «19 
BNE FCE 
RTS 

FCE JSR MHERE 
LDY ttO 

FCC LDA (JL),Y 
CMP «$1B 
BEQ FCB 

FCD INY 
INY 

CPY ttl26 
BNE FCC 
INC CNT 
JMP FCA 

FCB LDX CARCNT 
LDA JL+1 
STA CARY,X 
TYA 
CLC 

ADC JL 
STA CARX,X 
TYA 
PHA 

LDA tt$60 
STA CJL),Y 
INY 

STA CJL),V 
PLA 
TAY 

INC CARCNT 
LDA CARCNT 
CMP tt4 
BNE FCD 
RTS 



;20 lines 



;cars 



;end of line? 



;repl w/road 



;only 4 cars 



;show bonus & regular score 



;100 bonus 



reg. score 



BONSCR LDX tt3 
BNE SCD 

DOSCOR LDX tt4 J 

SCD LDA SCRSjX 
CLC 

ADC Ui. 
STA SCRSjX 

SCB CMP «$1A 
BCC SCE 
LDA tt$10 
STA SCRS,X 
DEX 

BMI SCE 
INC SCRS^X 
LDA SCRSjX 
JMP SCB 

SCE LDX »5 

sec LDA SCRS,X 

STA SCLN+9,X 
DEX 

BPL sec 
LDA SCRS+1 
CMP THOUS 
BEQ CRET 
STA THOUS 
INC LIVES 
JSR SHOLIU 

CRET RTS 

jMove the storM 



MOUICE LDA ICECNT ;tiMe for 



;new direction? 

J no 

;get direction 



BEQ NEND 
DEC ICECNT 
LDX ICEDIR 
LDA ICETB,X 
STA IJMP+1 
LDA ICETB+1,X 
STA IJMP+2 
LDA ttl 
STA ICEON 
IJMP JSR $FFFF J Move it 



(8 



SEPTEMBER 1 9S8 • A.N. A. L.O.G. COMPUTING 



3138 




JMP XZTUBU 






4828 




LDA »$C3 


3140 










4838 




STA HSMEM+2,Y 


3158 


;get a new direction 




4848 




INC EYY 


3168 


;and set flags 






4858 




RTS 


3178 










4868 


i 




3188 


NEMD LDA RANDOM 






4878 


lYP 


.BYTE $C8,$38,$38,$C8 


3198 




AND tt3 






4888 


IXP 


.BYTE $OA,$EO,$OA,$Ee 


3288 




TAX 






4898 






3218 




ASL A 






4188 


;Move stoPH left 


3228 




STA ICEDIR 






4118 






3238 




LDA tt$6B 


;tiMe 


on 


4128 


ZILF DEC ICX 


3248 




STA ICECNT 


;screen 


4138 




DEC ICX 


3258 




LDA IYP,X 


;starting 


4140 




DEC EYX 


3268 




STA ICY 


;posi 


tion 


4158 




DEC EYX 


3278 




LDA IXP,X 






4160 


ZB3 


LDA ICX 


3288 




STA ICX 






4178 




STA HP0SP8+2 


3298 




CLC 






4188 




CLC 


3388 




ADC U$OC 


;eyes 




4198 




ADC »16 


3318 




STA EYX 






4288 




STA HPOSPO+3 


3328 




JSR PUTICE 


;put 


definition 


4218 




LDA EYX 


3338 




JSR ZB3 


;in MeMors; 


4228 




STA HPOSMO 


3348 




LDA ICTL 


;tiHe 


spent 


4238 




CLC 


3358 




STA OFFSCN 


;off 


screen 


4248 




ADC tt6 


3368 




LDA ICTH 






4258 




STA HPOSMO+3 


3378 




STA OFFSCN+1 




4268 




RTS 


3388 




LDA no 


;off 


yet 


4278 






3398 




STA ICEON 






4280 


;Moue storny right 


3488 




JHP XITUBV 






4290 






3418 










4300 


ZIRT INC ICX 


3428 


;nove table 






4310 




INC ICX 


3438 










4328 




INC EYX 


3448 


ZCETB .MORD ZRU 






4338 




IMC EYX 


3458 




.MORD ZLD 






4348 




LDA EYX 


3468 




■MORD ZRD 






4358 




JHP ZB3 


3478 




.MORD ZLU 






4368 






3488 










4378 


;put snow storn on screen 


3498 


;di 


agonal Movenent 




4388 






3588 










4398 


PUTICE JSR CLR23 


3518 


ZRU 


JSR ZIRT 






4400 




LDX »0 


3528 




JSR ZIUP 






4410 




LDY ICY 


3538 




RTS 






4420 


ICA 


LDA ICEDAT, X 


3548 


ZLD 


JSR ZILF 






4438 




STA P2MEM,Y 


3558 




JSR ZIDN 






4448 




STA P2MEM+1,Y 


3568 




RTS 






4458 




LDA ICDT2,X 


3578 


ZRD 


JSR ZIRT 






4468 




STA P3MEM,Y 


3588 




JSR ZIDN 






4478 




STA P3MEM+1,Y 


3598 




RTS 






4488 




IMY 


3688 


ZLU 


JSR ZILF 






4498 




INY 


3618 




JSR ZIUP 






4588 




INX 


3628 




RTS 






4518 




CPX »16 


3638 










4528 




BNE ICA 


3648 


jsl 


ide it up 






4538 




LDA ICY 


3658 










4540 




CLC 


3668 


ZIUP LDY ICY 






4558 




ADC n$8C 


3678 




LDX tt31 






4568 




STA EYY 


3688 


ZIUA LDA P2MEN,V 






4578 




LDY EYY 


3698 




STA P2MEM-1, 


Y 




4588 




LDA tt$C3 


3780 




LDA P3MEM,Y 






4598 




STA MSMEM,Y 


3710 




STA P3MEM-1, 


Y 




4688 




STA MSMEM+1,Y 


3720 




INY 






4618 




RTS 


3730 




DEX 






4628 






3740 




BPL ZIUA 






4638 


istoPHy's definition 


3758 




DEC ICY 






4648 






3768 




LDA ne 






4658 


icEDAT .BYTE $80, $84, $82, $3 


3778 




LDY EYY 






4668 




.BYTE $8B,$e7,$3D,$4F 


3788 




STA M5MEM+1, 


Y 




4670 




.BYTE $8C,$3D,$47,$0B 


3798 




LDA tt$C3 






4680 




.BYTE $12, $12, $01, $00 


3808 




STA M5MEM-1, 


Y 




4698 


ICDT2 .BYTE $00, $86, $48, $48 


3818 




DEC EYY 






4788 




.BYTE $De,$E6,$BC,$F0 


3828 




RTS 






4718 




.BYTE $32,$BC,$E0,$D0 


3838 










4728 




.BYTE $4C,$48,$28,S88 


3848 


;go 


down 






4738 






3858 










4748 


;erase plyrs 2,3 S Missiles 


3860 


ZIDN LDA ICY 






4750 






3870 




CLC 






4760 


CLR23 LDX ttO 


3880 




ADC »31 






4770 




TKA 


3898 




TAY 






4780 


C23 


STA P3MEM,X 


3988 




LDX tt31 






4798 




STA P2HEM,X 


3918 


ZIDft LDA P2MEM,Y 




4888 




STA M5MEH,X 


3928 




STA P2MEM+1, 


Y 




4818 




IMX 


3938 




LDA P3MEM,Y 






4820 




BNE C23 


3948 




STA P3MEM+1, 


Y 




4838 




RTS 


3958 




DEY 






4848 






3960 




DEX 






4858 


; reset gane due to 


3970 




BPL ZIDA 






4868 


;lost lives 


3980 




IMC ICY 






4878 






3990 




LDA »0 






4888 


GRESET DEC LIUE5 


4000 




LDY EYY 






4898 




JSR SHOLIU 


4810 




STA M5MEM,Y 






4980 




JSR RE5FUL 



A.N.A,L.O,G,COMPUTING'SEPTEMBER 1988 



(9 



4918 

4928 

4938 

4948 

4958 

4968 

4978 

4988 

4998 

5888 

5818 

5828 

5838 

5848 

5858 

5868 

5878 

5888 

5898 

5188 

5118 

5128 

5138 

5148 

5158 

5168 

5178 

5188 

5198 

5208 

5218 

5228 

5238 

5248 

5258 

5266 

5278 

5288 

5298 

5388 

5318 

5328 

5338 

5348 

5358 

5368 

5378 

5388 

5398 

5488 

5416 

5428 

5438 

5448 

5458 

5466 

5478 

5488 

5498 

5588 

5518 

5528 

5536 

5548 

5558 

5568 

5576 

5586 

5596 

5686 

5618 

5628 

5638 

5648 

5658 

5668 

5678 

5688 

5698 

5766 

5718 

5728 

5738 

5746 

5758 

5768 

5778 

5788 

5796 



J5R DSPFUL 
RTS 

;show U Of lives 

SHSLIU LDA LIVES 

CMP ttie 

BCC GRT 

LDA n9 

5TA LIVES 
GRT DRA tt$ie 

STft TKTWIM+16 

RTS 



;let the storw exit stage 



REMP23 
STft 
STft 
STft 
STfl 
STA 
LDA 
STA 
LDA 
STA 
LDA 
STA 
RTS 



LDA tt8 
HP65P6+2 
HP05P8+3 
HPeSM8 
HP8SMe+3 
ICECMT 
ICTL 
OFFSCM 
ICTH 

OFFSCH+1 
tt8 
ICEON 



;turn off ubi 



;gaMe over-snow guys win 

GAM8UR LDA tt >G6VER 

STA TMESS+1 

LDA U <G8VER 

STA TME5S 

LDA »6 

STA VFLG 

J5R SNDOFF 
GAM LDA CONSeL ;chk for START 

CMP tt6 

BNE GAM 

JMP NEMBEG 

;initialize sound 

SMDOFF LDA »8 

STA $D288 

LDX »3 

STX SD28F 

LDX tt7 
SNL STA $D288,X 

DEX 

BPL SNL 

RTS 

;turn off individ. snds 

8FF1 LDA tt6 

STA $D2e8 
STA SD281 
RTS 

8FF2 LDA tt6 

STA SD283 
STA $D2e2 
RTS 

6fF34 LDA tt8 
STA $D264 
STA $D2G5 
STA $D286 
STA $D287 
RTS 

;honk horn when dozer hits car 



HBRN JSR SND6FF 
LDX ttl 

HNl LDA ttl21 
STA $D284 
LDA »$A6 
STA $D285 
LDA ttl8 
STA 5D2e6 
LDA »$24 
STA SD287 
JSR LDL 
JSR 8FF34 



;twice! 



5886 




JSR 


LDL 


5818 




DEX 




5828 




BPL 


HNl 


5836 




RTS 




5848 








5858 


; pause the gawe 


5868 








5878 


PAUSE LDX ttSFF 


5888 




STX 


CH 


5898 




LDA 


t}8 ;hold on Vbi 


5988 




STA 


UFLG 


5918 




JSR 


MAIT 


5928 


PAUS LDA 


1 CH 


5936 




CMP 


tt$FF 


5948 




BEO 


PAUS 


5956 




STX 


CH 


5968 




LDA 


ttl 


5978 




STA 


VFLG 


5988 




RTS 




5996 








6886 


J the Vbi 




6816 








6828 


UBLHK LDA UFLG ; running? 


6036 




BNE 


UBC ;ges 


6846 


UBA 


JMP 


XITUBU 


6858 


UBC 


LDA 


OFFSCN ;coMing on? 


6860 




ORA 


0FF5CN+1 


6678 




BEQ 


UBB ;yes 


6888 




DEC 


OFFSCN ;countdown 


6098 




LDA 


OFFSCN 


6188 




CMP 


tt$FF 


6118 




BNE 


UBA 


6126 




DEC 


OFFSCH+1 


6138 




JMP 


UBA 


6146 


UBB 


DEC 


UTIME ;vbi speed 


6158 




LDA 


UTIME 


6168 




BNE 


UBA 


6178 




LDA 


ICESPEED 


6186 




STA 


UTIME 


6196 




JMP 


MOUICE ;do the Move 


6280 








6218 


;Make a 


plowing sound 


6228 








6238 


PLMSND LDA ICEON junless 


6240 




BNE 


NOPL {the storM is 


6258 




LDA 


tt$32 ;naking noise 


6268 




STA 


$D202 


6276 




LDA 


tt$46 


6288 




STA 


SD203 


6296 




JSR 


WAIT 


6366 


NOPL RTS 


6316 








6326 


;reset soHe playing stuff 


6338 








6348 


REPLAY LDA ttS88 ; dozer's 


6356 




STA 


PXP jposition 


6368 




LDA 


tt$76 


6378 




STA 


PYP 


6388 




LDA 


tt4 ; scroll shadows 


6396 




STA 


SMV 


6480 




LDA 


tt24 


6410 




STA 


SMX 


6420 




LDA 


ttO ;screen pos. 


6438 




STA 


SXP 


6448 




STA 


SYP 


6450 




LDX 


tt5 ;fuel tiners 


6460 




LDA 


tt6 


6478 


FTl 


STA 


FTIME.X 


6488 




DEX 




6490 




BPL 


FTl 


6580 




LDX 


tt3 ;car tiners 


6510 


CTl 


LDA 


CARSHD,X 


6528 




STA 


CARTIM,X 


6538 




LDA 


tt8 


6546 




STA 


RMTIM,X 


6558 




DEX 




6568 




BPL 


CTl 


6578 




LDA 


tt8 ; reset road 


6588 




STA 


ROADG jcounters 


6598 




STA 


R8ADG+1 


6688 




INC 


ROADG 


6618 




STA 


ICECNT 


6628 




LDA 


ICESPEED ;storM'S speed 


6630 




STA 


UTIME 


6640 




JSR 


SNDOFF jsound Off 


6650 




LDA 


ICTL 


6660 




STA 


OFFSCN 


6670 




LDA 


ICTH 


6688 




STA 


0FF5CN+1 



70 



SEPTEMBER 1 988 ' A,N, A.L.O.G, COMPUTING 



6690 
6700 
6710 
6720 
6730 
6740 
6750 
6760 
6770 
6788 
6798 
6800 
6810 
6826 
6830 
6848 
6858 
6860 
6878 
6880 
6898 
6900 
6910 
6920 
6930 
6948 
6958 
6960 
6970 
6980 
6990 
7000 
7010 
7020 
7030 
7040 
7050 
7060 
7070 
7080 
7090 
7100 
7110 
7120 
7130 
7140 
7150 
7160 
7170 
7180 
7190 
7200 
7210 
7220 
7238 
7248 
7258 
7260 
7276 
7280 
7296 
7308 
7318 
7326 
7336 
7346 
7350 
7360 
7370 
7380 
7398 
7400 
7410 
7420 
7430 
7440 
7450 
7460 
7470 
7488 
7498 
7500 
7510 
7520 
7530 
7540 
7550 
7560 
7570 



RTS 

interval between cars 

CARSHD .BYTE $30, $66, $86, $66 

speed up for next level 
fuel down by 16 
storH is off screen less 
storn HDves faster 



FIGLEU 
CPK 
BEQ 
INC 

LEA LDX 
LDA 
STA 
LDA 
STA 
LDA 
STA 
LDA 
STA 
LDA 
STA 
JSR 
RTS 



LDX LEVEL 
»5 
LEA 
LEVEL 
LEVEL 
FULM,X 
FULK 

ICOFFL,K 
ICTL 

ICOFFH,X 
ICTH 

ICESPDT,X 
ICESPEED 
ttl 

EDGFLG 
SMDOFF 



;tables for storHy 

FULM .BYTE 8,7,6,5,4,3 
ICOFFL .BYTE $80, $80, 6, $80, 0, $80 
ICOFFH .BYTE 3,2,2,1,1,6 
ICESPDT .BYTE 10,8,6,4,2,1 
SPTAB .BYTE 6,2,1,3 

jspin dozer if hit by stoPH 
;or out of fuel 

SPIN LDA DIRECT 

PHA 

LDY tt4 

STY YSP 

LDA »8 

STA SPSND 
SPB LDX tt3 

STX XSP 
SPA LDA SPTAB, X 

TAX 

JSR DFOK 

LDA »$86 

STA $D2e3 

LDA SPSND 

CLC 

ADC tt9 

STA SPSND 

STA $D202 

JSR DELAY 

DEC XSP 

LDX XSP 

BNE SPA 

DEC YSP 

LDY YSP 

BNE SPB 

PLA 

STA DIRECT 

JSR DFOK 

JSR 0FF2 

RTS 

;Move the tracks on the dozer 



TRACKR 
STX 
LDA 
AND 
TAX 
LDA 

TRKJMP 
STA 
STA 
STA 
STA 
INC 
LDY 
LDX 
RTS 



STY YH 
XH 
XDl 
ttl 

TRKR,X 
LDY PYP+1 
P1MEM+1,Y 
P1MEM+2,Y 
P1MEM+13,Y 
P1MEM+14,Y 
XDl 
YH 
XH 



7588 
7596 
7688 
7610 
7620 
7630 
7640 
7650 
7660 
7676 
7688 
7698 
7788 
7716 
7726 
7736 
7746 
7750 
7760 
7770 
7786 
7790 
7886 
7818 
7828 
7830 
7840 
7850 
7868 
7876 
7886 
7890 
7900 
7910 
7920 
7930 
7940 
7950 
7960 
7970 
7980 
7990 
8880 
8010 
8020 
8030 
8040 
8858 
8060 
8070 
8880 
8090 

8100 

8110 
8120 
8130 
8148 
8158 
8160 
8170 
8180 
8190 
8200 
8210 
8220 
8230 
8240 
8250 
8260 
8270 
8280 
8290 
8300 
8310 
8328 
8330 
8340 
8350 
8360 
8370 
8380 
8390 
8400 
8410 
8420 
8430 
8440 
8450 
8468 



TRKR .BYTE $55,$A9 ; Masks 

TRACKL STY YH 
STX XH 
LDA XDl 
AND ttl 
TAX 

LDA TRKL,X 
JMP TRKJMP 

TRKL .BYTE $AA,$95 ; Masks 

TRACKU STY YH 

STX XH 

LDY PYP+1 

LDX tt7 
TRUl LDA P1MEH+4,Y 

CMP tt$99 

BNE TRU2 

LDA tt$18 

BNE TRU3 
TRU2 CMP tt$18 

BNE TRU3 

LDA tt$99 
TRU3 STA P1MEM+4,Y 

INY 

DEX 

BPL TRUl 

LDX XH 

LDY YH 

RTS 

; filling up with fuel sound 

FILSND JSR 0FF2 

LDA tt$A4 

STA $D203 

LDX ttlBO 
Fin STX $D202 

JSR FDEL 

CPX tt45 

BNE FIL2 

LDA tt$A2 

STA $D203 
FIL2 DEX 

BNE FILl 

JSR 0FF2 

RTS 

FDEL LDY tt2e6 
FDl JSR HAIT 

DEY 

BPL FDl 

RTS 

;get the directory 
; search for SMAP.??? 



GETDIR 
LDX 
LDA 
STA 
LDA 
STA 
LDA 
STA 
LDA 
STA 
LDA 
STA 
JSR 
RTS 



JSR CL0SE6 
tt$60 
tt3 

ICCOM,X 
tt >DIRNAM 
ICBAH,X 
tt <DIRNAM 
ICBAL,X 
tt6 
AUX1,X 

tto 

AUX2,X 
CIOV 



CL0SE6 LDX tt$60 
LDA tt$0C 
STA ICCON,X 
JSR CIOV 
RTS 

;read ina Map froH disk 

GETFIL LDA ttS 
LDX tt$6e 
STA ICCON,X 
LDA tt >DBUF 
STA ICBAH,X 
LDA tt <DBUF 
STA ICBAL,X 
LDA tt20 



A.N.A.L.O.G, COMPUTING 'SEPTEMBER 1988 



71 



8470 




STft 


ICBLL,X 


8486 




LDA 


tto 


8490 




STfl 


ICBLHjX 


8508 




JSR 


ciog 


8510 




BMI 


DOU 


8520 




LDA 


DBUF+4 


8530 




CMP 


tt'F 


8540 




BHE 


FLP 


8550 


DOU 


JSR 


GETDIR 


8560 




LDA 


ttO 


8570 




STft 


MflPFLG 


8580 




PLft 




8590 




PLft 




8600 




J MP 


MflP2 


8610 


i 






8620 


FLP 


LDX 


ttie 


8630 


DLP 


LDA 


DBUF,X 


8640 




STft 


MflPHflM-2,X 


8650 




CMP 


tt$20 


8660 




BEQ 


DRET 


8670 




INK 




8680 




BNE 


DLP 


8690 


DRET LDA ttEOL 


8700 




STft 


MaPNflM-2,X 


8710 




RTS 




8720 


\ 






8730 


DIRNOM . 


BYTE "DlrSMfll 


8740 


I 






8750 


',Xr)t JUHping to edge 


8760 


;once per level onl;/ 


8770 


;to 


road 


8780 


i 






8790 


JHPEDG LDA EDGFLG 


8800 




BNE 


JEft 


8810 




RTS 




8820 


JEO 


LDft 


DIRECT 


8830 




CMP 


tt7 


8840 




BNE 


JLF 


8850 




LDA 


SMX 


8860 




STfl 


EHOLD 


8870 




LDA 


tt$C8 


8880 




SEC 




8890 




SBC 


PXP 


8900 




LSR 


ft 


8910 




LSR 


ft 


8920 




STfl 


EftDD 


8930 




CLC 




8940 




flDC 


SMX 


8950 




STft 


SMX 


8960 




DEC 


SMX 


8970 




DEC 


SMX 


8980 




JSR 


LOOKR 


8990 




BCC 


JYES 


9000 




LDA 


EHOLD 


9010 




STfl 


SMX 


9020 




RTS 




9030 


JYES LDX tt$C8 


9040 




STX 


HPOSPO 


9050 




STX 


PXP 


9060 




INX 




9070 




STX 


HPOSPO+l 


9080 




STX 


PXP+1 


9090 




INC 


SMX 


9100 




INC 


SMX 


9110 




DEC 


EDGFLG 


9120 




RTS 




9130 








9140 


JLF 


CMP 


nil 


9150 




BNE 


JUP 


9160 




LDfl 


SMX 


9170 




STft 


EHOLD 


9180 




LDft 


PXP 


9190 




SEC 




9200 




SBC 


tt$30 


9210 




LSR 


ft 


9220 




LSR 


ft 


9230 




STft 


EADD 


9240 




LDA 


SMX 


9250 




SEC 




9260 




SBC 


EADD 


9270 




STft 


SMX 


9280 




INC 


SMX 


9290 




IMC 


SMX 


9300 




JSR 


LOOKL 


9310 




BCC 


JEB 


9320 




LDfl 


EHOLD 


9330 




STfl 


SMX 


9340 




RTS 




9350 


JEB 


LDX 


«$3e 



9360 


STX 


HPOSPO 




9370 


STX 


PXP 




9380 


DEX 






9390 


STX 


HPOSPe+1 




9400 


STX 


PXP+1 




9410 


DEC 


SMX 




9420 


DEC 


SMX 




9430 


DEC 


EDGFLG 




9440 


RTS 






9450 ; 








9460 JUP CMP 


ttl4 




9470 


BNE 


JDN 




9480 


LDA 


SMY 




9490 


STA 


EHOLD 




9500 


LDA 


PYP 




9510 


SEC 






9520 


SBC 


tt$3e 




9530 


LSR 


ft 




9540 


LSR 


ft 




9550 


LSR 


ft 




9560 


LSR 


ft J/16 




9570 


STA 


EADD 




9580 


LDA 


SMY 




9590 


SEC 






9600 


SBC 


EADD 




9610 


STA 


SMY 




9620 


INC 


SMY 




9630 


JSR 


LOOKU 




9640 


BCC 


JEC 




9650 


LDA 


EHOLD 




9660 


STA 


SMY 




9670 


RTS 






9680 JEC DEC 


SMY 




9690 


JSR 


ERSOl 




9700 


LDA 


»$30 




9710 


STA 


PYP 




9720 


JSR 


DEFPLR 




9730 


DEC 


EDGFLG 




9740 


RTS 






9750 ; 








9760 ;erase players and 


1 


9770 ; 








9780 ERSOl LDY tt$FF 




9790 


LDA 


no 




9800 ER5A STA POMEM,Y 




9810 


STA 


PiMEM,Y 




9820 


DEY 






9830 


BNE 


ERSA 




9840 


RTS 






9850 ; 








9860 JDN CMP 


ttl3 




9870 


BNE 


JRET 




9880 


LDA 


SMY 




9890 


STA 


EHOLD 




9900 


LDA 


tt$CO 




9910 


SEC 






9920 


SBC 


PYP 




9930 


LSR 


A 




9940 


LSR 


A 




9950 


LSR 


A 




9960 


LSR 


A 




9970 


CLC 






9980 


ADC 


SMY 




9990 


STA 


SMY 




010000 


DEC 


SMY 




010010 


JSR 


LOOKD 




010020 


BCC 


JED 




010030 


LDA 


EHOLD 




010040 


STA 


SMY 




010050 


JRET 1 


RTS 




010860 


JED JSR ERSOl 




810070 


LDA 


»$C0 




010080 


STA 


PYP 




810090 


JSR 


DEFPLR 




010100 


INC 


SMY 




010110 


DEC 


EDGFLG 




010120 


RTS 






010130 








010140 


; bonus car bell sound 


010150 








010160 


BELL , 


JSR 0FF2 




010170 


LDA 


ttl2 




010180 


STA 


$D202 




010190 


BL3 LDA tt$A9 




010200 


STft 


SHD 




010210 


BLl DEC SHD 




010220 


LDft 


SHD 




010230 


CMP 


tt$AO 





72 



SEPTEMBER 1 988 ' A.N, A.L.O.G. COMPUTING 



Computer Vis ions 



32J7 Kifer Road 
Santa Clara, CA 95051 
(408) 749-1003 



A 



STORE HOURS 
TUE- FRI 10am - 6pm 

SAT - 10am - 5pm 
CLOSED SUN- MON 



yO.BO each 

CBS SOFTWARE 

(ages 3-6 on disk) 

Ernie's Magic Shapes 

Aslrogrover 

Big Bird's Special Delivery 

Malch Wils 

$8 . 95 each 

FISHER PRICE 
SOFTWARE 

(on carlridge) 

Memory Manor 

Linking Logic 

Dance Fantasy 

Logic Levels 

Perfect for Pre-schoolers 



$9.95 each 
SPINNAKER SOFTWARE 

(all on cartridge) 

Alf in the Color Caves (age 3-6) 

Alphabet Zoo (age 3-8) 

Adventure Creator (age 8-up) 

Delta Drawing (age4-up) 

Face Maker (age 3-8) 

Kids on Keys (age 3-9) 

Kindercomp (age 3-8) 

Story Machine (age 3-8)* 

*won'l work on XL/XE 




$8 . 95 each 

TINKITONK! 

(age 4- 8 on disk) 

Count and Add 

(formerly Tinks'a Mazes) 

Being a Smart Thinker 

(formerly Land of the buddy Dots) 

ABC's 

(formerly Tink's Adventure) 

Subtraction 

(formerly Subtraclion Fair) 

Spelling 

(formerly Tuk Goes to Town) 

Developing Thinking 
Skills 

(formerly Castle Clobber) 

Get all 6 titles for only 
$39.95 



$9 . 95 each 
HAYDEN SOFTWARE 

(all on disk) 

Monkey See, Spell (age 4-9) 
Don't shot that Word (age 6+) 

(age 4-10) 

Micro Add/subtract 

Micro Subtraction 

Micro Multiplication 

Micro Division 



(Pre-School) 

Shape Up! 
Match Up! 





$5 . 00 each 

{on cartridge) 

Assembler Rev. A 

Basic Rev. C 

Donkey Kong 

Gorf (won't; run on XL/XE) 

Missile Command 

Pac Man 

Star Raiders 

Wizard of Wor 



"^■$9 



kJ- 



1 



95each 

(on cartridge) 
E.T. Alien Ambush 

Mr. Cool Cloudburst 

Atari Tennis 
Touch Typing (disk/cass) 



$12 . 95 each 

(on disk) 

Atari Paint 

Home Filing Manager 

Wombats Adventure 

14.95 each 

(on cartiridge) 
Popeye Cobra Q-Ben 

Frogger Froggerll Star Wars 

$15.95 each 

(on cartridge) 

Asteroids 

Centipede 

Football 

Sky Writer 

Space Invaders 

Qix 




$19.95 each 

(on cartridge) 

Archon 

Ball Blazer 

^r Battle Zone 

Blue Max 

David's Midnight Magic 

Defender 

Donkey Kong Jr. 

Fight Night 

Final Legacy 

Joust 

Hardball 

Jungle Hunt 

Moon Patrol 

Ms . Pac Man 

One on One (XL/XE only) 

Rescue on Fractalas 

Robotron:2084 

Star Raiders II 



$19 . 95 each 

(on cartridge) 

Pole Position 

Gaiaxian 

Millipede 

Pen go 

Dig Dug 



$24 . 95 each 

(on cartridge) 

Galo 

Lode Runner 

Barnyard Blaster (req. light gun) 

Pastfinder 




RECONDITIONED ATARI MERCHANDISE 

All merchandise has been tested and reconditioned and is in likc-ncw condition except where noted by the letter "B" after the price. The "B" price indicates product may 
have scratches or other superficial surface marks. 30 day warranty . NO free shipping on this merchandise. 



ATARI 

TRAKBALL 

$9.95 

SPICn UP THE ACTION IN 
YOUR ARCADi; GAMKS! 



ATARI 
SPACE AGE 
JOYSTICK 



$5.00 



1 



1020 COLOR 

PLOTTER/PRINTER 

$29.95 A 

40 Columns wide 

Includes paper and 

color pen set 



850 

INTERFACE 

$89.95 

LIMITED SUPPLY 



ATARI 

BOOKKEEPER 

$14.95 - NO BOX 

($19.95 WITH RECON KEYPAD) 

$24.95 - IN BOX 
(29.95 WITH RECON KEYPAD) 



400 (16K) 

COMPUTER 
$29.95 

48K UPGRADE KIT 
$25.00 



1030 
MODEM 

WITH 

EXPRESS! 
$29.95 

GET ONUNE TODAY 



800 (48K) 

COMPUTER 

$79.95 



I.NCL. BASIC CART & 
MANTJAL 



NUMERIC 
KEYPAD 

$7.95 

INCL HANDLER DISK USE 
WITH BASIC & 
BOOKKEEPER 



DISKETTES 

AS LOW AS 20 CENTS 

10 FOR $4.00 

100 FOR $29.95 

1000 FOR $200 

MOST ARE UNNOTCHED 
WITH OLD SOFTWARE 



SHIPPING INFORMATION - Prices do not include shipping and handling. Add $5.00 for small items ($8.00 Min. for Canada). Add $8.00 for disk 
drive. Calif, res. include 7% sales tax.- Mastercard and Visa accepted if your telephone is listed in your local phone directory. Orders may be pre-paid 
with money order, cashier check, or personal check. Personal checks are held lor three weeks before order is processed. C.O.D orders are shipped 
via UPS and must be paid with cash, cashier check or money order, internalional and APO orders must be pre-paid with cashier check or money 
order. $20.00 minimum on all orders. All sales are final - no refunds - prices are subject to change. Phone orders accepted TUESDAY THROUGIH 
FRIDAY from 10:00 am to 6:00 pm PST. 

We carry a complete line of ATARI products and have a large public domain library. Write or call for free 
catalogue. (408) 749-1003 TUE - FRI 10AM - 6 PM 



PRICES SUBJECT TO CHANGE WITHOUT NOTICE - ALL SALES ARE FINAL 



CIRCLE #106 ON READER SERVICE CARD. 



A.N.A.L.O.G, COMPUTING' SEPTEMBER 1988 



73 



818248 
818258 
818268 
818278 
818288 
818298 
818300 
010310 
010320 
010330 
010340 
010350 
010360 
010370 
010380 
810390 
018488 
818410 
010420 
010430 
010440 
010450 
010460 
010470 
010480 
010490 
018588 
018518 
010520 
810530 
010540 
010558 
018568 
818578 
018588 
010590 
010608 
018618 
010628 
818638 
818648 
018650 
010660 
010670 



BCC BL2 
STfl $D203 
JSR DELAY 
JMP BLl 
BL2 JSR 0FF2 
RTS 

;storM sound 

icE5ND LDA ICEON 

BEQ ICOFF 

LDA tt$86 

STA SD281 

LDA ttll 

5TA $D280 

RTS 
ICOFF JSR OFFl 

RTS 
i 

;check if START was pressed 

STKEY LDA CONSOL 
CMP «6 
BEQ STKEY 
JMP GANOUR 

jsetup gane board and colors 

SETSCN LDA tt >DL1 

STA SDLSTL+1 

LDA » <DL1 

STA SDLSTL 

LDA »$C0 

STA SD40E 

LDA tt >DLI 

STA 513 

LDA tt <DLI 

STA 512 

LDX tt4 
KLR LDA CLRTABfX 

STA COLORO^X 

DEX 

BPL KLR 

RTS 



LISTING 4: ASSEMBLY 



0108 


;SAUEttD:SN0M.PT3 


8118 
8128 






8138 


\ screen data file 


8148 


; & uncoMpacter 


8158 


for snowplow 


8168 




8178 


by: Barry Kolbe 


8188 
8190 






0280 




0210 


lunconpact screen dat 


0220 J 




0230 , 


set up pointers & 


0240 , 


end of Memory 


0250 , 




0260 1 


INCOM LDA tt$9e 


0278 


STA BFL+1 


8288 


LDA tte 


8298 


STA BFL 


8388 


LDA tt <MAPDATA 


0310 


STA TL 


0320 


LDA tt >MAPDATA 


0338 


STA TL+1 


8348 


LDA ttl 


8358 


STA EDM 


0368 


LDA tt$9A 


8378 


STA EDM+1 


8388 ; 




8398 i 


test for unique or 


8488 ; 


repeated data 


8418 ; 




0420 


LDY tto 


8430 U 


CI STY UNIQUE 


0440 


STY COUNT+1 


0450 


JSR GETAB ;in A 


8460 


CLC 



8470 

0480 

8498 

8508 

8518 

8528 

8538 

8548 

8558 

8568 

8578 

8588 

8598 

8688 

8618 

8620 

8638 

8648 

0650 

0660 

0670 

0680 

0690 

0700 

0710 

0728 

8738 

8748 

8758 

0760 

0778 

8780 

0790 

8888 

0810 

0820 

8838 

0840 

8858 

8868 

0878 

8888 

8898 

8988 

6918 

8928 

8938 

8940 

0950 

0960 

0978 

0980 

0990 

1080 

1018 

1020 

1030 

1040 

1050 

1060 

1070 

1080 

1898 

1188 

1118 

1120 

1130 

1140 

1150 

1160 

1178 

1188 

1190 

1200 

1210 

1220 

1230 

1240 

1258 

1268 

1278 

1288 

1298 

1388 

1318 

1320 

1330 

1340 

1358 



ROL 
ROL 
LSR 
STA 
BNE 
JSR 
STA 
JSR 
STA 

CKU LDA 
BEQ 

UC3 JSR 
STA 
JSR 
DEC 
BKE 
LDA 
BEQ 
DEC 
JMP 



A 

UNIQUE 

A 

COUNT 

CKU 

GETAB 

COUNT+1 

GETAB 

COUNT 

UNIQUE 

UC2 

GETAB 

tBFLJ,Y 

NXBFL 

COUNT 

UC3 

COUNT+1 

UCl 

COUNT+1 

UC3 



;bit 7 test 

;lsb 

;if long count 

;MSb 



;lsb of long cnt 
;unique data 



; repeated data 

UC2 JSR GETAB 
STA DATA 

UC4 LDA DATA 

STA {BFL3,Y 
JSR NXBFL 
DEC COUNT 
BNE UC4 
LDA COUNT+1 
BEQ UCl 
DEC COUNT+1 
JMP UC4 



;next 



increment dest. ptr & 
check for end of screen 
MeMory 



NXBFL INC BFL 
BNE NIN 
IMC BFL+1 

NIN LDA BFL+1 
CMP EDM+1 
BNE NRT 
LDA BFL 
CMP EDM 
BNE NRT 
PLA 
PLA 

NRT RTS 



;done so get out 



GETAB LDA CTL) , Y :get 1 byte 
INC TL ;&inc. ptr of 
BNE GTZ ;source 
INC TL+1 

GTZ RTS 

;the actual screen compacted 



MAPDATA . 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
'.BYTE 
.BYTE 
.BYTE 
.BYTE 



!■ ai.1 ceil Luni'dl. Itfa 

BYTE 4,0,38,96,138,188 
■ 118,14,96,138,188,116 
1,7,138,114,118,28 



74 



118,14,96,138,188,116 

6,7,138,114,118,28 

96,138,27,28,12,96 

138,188,118,22,96,138 

188,116,4,8,138,14 

15,3,7,135,1,2 

3,4,7,5,6,2 

7,138,5,6,3,7 

130,5,6,9,7,130 

98,100,2,7,130,5 

6,2,7,138,5,6 

6,7,138,98,188,6 

7,138,98,188,2,7 

137,13,7,1,2,3 

4,7,5,6,27,7 

130,5,6,2,7,130 



J.3,J.3, f ,l.-iV,^V,. 

4,8,2,7,138,114 

118,12,96,138,188,; 

6,7,138,5,6,4 

7,138,98,108,4,7 

138,5,6,2,7,138 

5,6,4,7,132,98 

100,5,6,2,7,132 

5,6,98,104,10,96 

130,108,116,6,7,: 

1,2,3,4,7,5 



116 



135 



SEPTEMBER 1 988 ' A,N.A,L,0,G. COMPUTING 



1368 

1370 

1388 

1398 

1408 

1410 

1420 

1438 

1448 

1458 

1460 

1478 

1488 

1498 

1588 

1518 

1520 

1538 

1548 

1558 

1568 

1578 

1588 

1590 

1688 

1618 

1628 

1638 

1648 

1650 

1660 

1670 

1688 

1698 

1788 

1718 

1720 

1730 

1748 

1758 

1768 

1778 

1788 

1790 

1800 




MegaByte 

Computers and Electronics 

Call TOLL FREE 1-800-255-5786 ORDERS 
For any inq uiriea ir713')338-22ai ONLY 
109 W. Bay Are* PUm# C»ll For Low Prlc«i on M »ny 



Webster, TexM 
77598 



Oth«r lt«m»I> 



GAMES 

DARK CASTLE 

27.97 

OUNOEON MASTER 

(IN STOCKl) 27.97 

F-13 STRIKE EA OLE 
24.87 
PUOHTSIM II 
33J7 
OAUNTUrr 
28.97 
GONE FISHIN 27.97 
MOEBIUS 38.97 

OIDS 23.97 

Police Quell 29.97 

Prr.«i4eiil Elect 

28.97 

RoidWw Europ* 

25.87 

Uliim* IV 38.97 

Wirjame CouL Set 

33.87 



Applications 

C*d-3D2J)2 

59 J 7 

Cyber Control 

43.97 

Cyber Paiat 

47.97 
Data Manafer 

Swift Calc 
Word WrUer 

52.97 

PC- Ditto 3.01 

74.95 

Publishiof Partaer 

62.97 

Su]>erCharte4 

EaayDraw 94.97 

Kuma 
Transputers 

mwOmirtmsmttii 



GRAdEPttIS 



S39.95 



TvBbo ST 

SUra RCHARGE 

16 MHZ!!! 
$249.95 



CUSTOMIZED 
lUrd EUtlt 

S499 ..4^, 

Ex kinaI f lapp4<i 



■:!MiiajW3 IXrORMATION; 



Taa«a 9aaL«*i«t.i 



DcMleit lNQViRie% Welcome! 



•rCara. %X\ 



1818 


.BYTE 


1820 


.BYTE 


1838 


.BYTE 


1848 


.BYTE 


1858 


.BYTE 


1868 


.BYTE 


1878 


.BYTE 


1888 


• BYTE 


1898 


.BYTE 


1908 


.BYTE 


1918 


.BYTE 


1928 


• BYTE 


1930 


.BYTE 


1948 


• BYTE 


1958 


.BYTE 


1968 


.BYTE 


1978 


.BYTE 


1988 


.BYTE 


1998 


.BYTE 


2000 


.BYTE 


2010 


.BYTE 


2020 


.BYTE 


2030 


.BYTE 


2040 


.BYTE 


2858 


.BYTE 


2868 


.BYTE 


2070 


.BYTE 


2080 


.BYTE 


2098 


.BYTE 


2188 


.BYTE 


2118 


.BYTE 


2128 


.BYTE 


2138 


.BYTE 


2148 


.BYTE 


2158 


.BYTE 


2168 


.BYTE 


2178 


.BYTE 


2188 


.BYTE 


2198 


.BYTE 


2288 


.BYTE 


2218 


.BYTE 


2228 


.BYTE 


2238 


.BYTE 


2240 


.BYTE 


2250 


.BYTE 



i 




lB^ 



1 



It's our new SpartaDOS hard disk and Multi I/O back- 
up utility designed to save you time, effort, and most 
important, your files! With FlashBack!, the manual 
process of copying files is instantly eliminated and 
replaced with a surplus of automated functions . . . 
functions that will take the "manual" out of the 
procedure once and for all! Just look at some of these 
features: 

► FlttshBack! automaticaliy creates subdirectories as 
needed 

► Allows selective backup by date or archiue bit 

^ Optionally formats each diskette before copying any 

files to it 
^ Alloivs files to be 'split' across diskettes 

► Creates a complete listing o/ directories and files 
copied 

► A solution to disk fragmentation which slou's down 
disk I/O 

FlashBack! supplies your S-bit with enough backup 
power to put your mind at ease and keep your files at 
hand! 

FlashBac-k! is unprotected and can run directly from 
any type of disk (requires SpartaDOS 3.2 or later). 



■CD 



1220 Rock Street 
Rockford, IL 61101 
(815)968-2228 
BBS: (815)968-2229 



CIRCLE #107 ON READER SERVICE CARD, 



CIRCLE #108 ON READER SERVICE CARD. 



2260 
2276 
2280 
2298 
2308 
2318 
2328 
2338 
2348 
2358 
2368 
2378 
2388 
2398 
2488 
2418 
2428 
2438 
2448 
2458 
2468 
2478 
2488 
2498 
2588 
2510 
2528 
2538 
2548 
2558 
2568 
2570 
2588 
2598 
2688 
2618 
2628 
2638 
2648 
2658 
2668 
2678 
2688 
2698 
2780 
2710 
2720 
2730 
2740 
2750 
2760 
2778 
2788 
2798 
2880 
2810 
2820 
2830 
2840 
2850 
2860 
2870 
2880 
2890 
2980 
2910 
2920 
2930 
2940 
2950 
2960 
2970 
2988 
2998 
3888 
3818 
3828 
3838 
3840 
3858 
3868 
3078 
3080 
3090 
3188 
3118 
3128 
3138 
3148 

n 



.BYTE 
.BYTE 
.BYTE 

• BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 

• BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 



6,5,6,7,7,138 

5,6,3,7,138,5 

6,5,7,136,98,108 

4,7,130,114,110,2 

96,130,186,118,4,7 

130,98,100,6,7,137 

13,7,1,2,3,4 

7,5,6,27,7,131 

98,100,13,25,7,130 

98,100,2,7,130,98 

100,4,8,136,126,112 

10,96,136,8,16,6 

7,136,5,6,8,7 

136,98,166,4,7,138 

98,166,8,7,138,98 

166,8,7,136,114,110 

18,96,130,108,116,4 

7,130,114,110,6,96 

130,106,112,4,96,130 

27,28,20,96,130,102 

100,2,7,130,98,100 




3150 


.BYTE 


3160 


.BYTE 


3170 


.BYTE 


3180 


.BYTE 


3190 


.BYTE 


3200 


.BYTE 


3210 


.BYTE 


3220 


.BYTE 


3230 


.BYTE 


3240 


.BYTE 


3250 


.BYTE 


3280 


.BYTE 


3270 


.BYTE 


3280 


.BYTE 


3290 


.BYTE 


3300 


.BYTE 


3310 


.BYTE 


3320 


.BYTE 


3330 


.BYTE 


3340 


.BYTE 


3350 


.BYTE 


3360 


.BYTE 


3370 


.BYTE 


3386 


.BYTE 


3396 


.BYTE 


3406 


.BYTE 


3416 


.BYTE 


3428 


.BYTE 


3438 


.BYTE 


3448 


.BYTE 


3458 


.BYTE 


3460 


.BYTE 


3470 


.BYTE 


3480 


.BYTE 


3490 


.BYTE 


3566 


.BYTE 


3516 


.BYTE 


3528 


.BYTE 


3538 


.BYTE 


3546 


.BYTE 


3550 


.BYTE 


3566 


.BYTE 


3576 


.BYTE 


3580 


.BYTE 


3596 


.BYTE 


3660 


.BYTE 


3610 


.BYTE 


3620 


.BYTE 


3630 


.BYTE 


3640 


.BYTE 




LISTING 5: ASSEMBLY 



7,132,1,2,3,4 

4,7,130,98,100,4 

0,132,1,2,3,4 

4,7,136,120,112,12 

96,136,106,112,12,9 

136,27,28,8,96,136 

166,112,18,96,132,1 

118,14,15,2,7,134 

1,2,3,4,3,4 

4,96,136,106,112,38 

96,130,106,118 



P 

106 



0100 

0110 

0120 

0130 

0140 
0150 
0160 
0170 
0180 
0190 
0200 
0210 
0220 
0230 
0240 
0250 
0260 
0270 
0280 
0290 
0300 
0310 
0320 
0330 
0340 
0350 
6366 
8376 
8386 
6398 
8400 
0410 
0420 
0430 
0440 



SAUEttD:5N0M.PT4 



Intro Screen for SNONPLOM 
by: Bryan Schappel 



CL5 .BYTE S92,$O fl,SOO,$42,$00 
WEATHER .5BYTE 



.SBYTE "I 
.SBYTE 
.5BYTE "I 



national weat 
her service bulle 
tin 
arnin 



;turn off vbi 

JStOTM off 

J falling 
; letters? 

;scroll len 



STflRTI LDY «0 
STY UFLG 
STY ICEON 
JSR SNDOFF 
LDX IFLAG 
BNE INTRO 

LDo ns 

STft CONSOL 
LDA »90 
STfl SLENGTH 
CPl LDft SET+$0200,Y ;copy chrset 
STft SET2,Y ;out 
LDA ttO 

STft SET+S02OO,Y 
STft SCRLMEM,Y 
INY 
BNE CPl 

INTRO LDK ttS ;copy high score 

TSLP LDft SCRS,X J to intro 

SEPTEMBER I H8 ' A.N , A.L.O.G, COMPUTING 



8458 STft T0PSC0RE+l2,x jscreen 

8468 DEK 

8478 BPL T5LP 

8488 LDX tt7 

8498 LDA tt8 ;plauers off 

8588 MMLP STA HPOSPe,X 

8518 DEX 

8528 BPL UMLP 

8538 ; 

8548 TAY jset up scroll 

8558 CWLP STA SCRLMEN, Y jHessage 

8568 DEY 

8578 BNE CNLP 

8588 LDY »53 

8598 MCP LDA MEATHER,V 



6688 


STA 


SCRLMEM+22,V 


8618 


DEY 




8628 


BPL 


NCP 


8638 ; 






8648 


LDY 


tt4 ;put in colors 


8658 GCL 


LDA 


CLS,Y 


8668 


STA 


COLORS, V 


8678 


DEY 




8688 


BPL 


GCL 


8698 ; 






8788 


LDA 


«8 ;ptps for chset 


8718 


STA 


IND2 ;nove 


8728 


STA 


INDR 


8738 


STA 


C0L0R2 


8748 


LDA 


« >5ET2 


8758 


STA 


INDR+1 


8768 


LDA 


« >CSET+$8288] 


8778 


STA 


IND2+1 


8788 


LDA 


» <IDLST ;intro dlist 


8798 


STA 


SDLSTL 


8888 


LDA 


tt >IDLST 


8818 


STA 


SDLSTL+1 


8828 ; 






8838 


LDA 


IFLAG J first time? 


8848 


BNE 


SKIPSHOW ;for snow 


8858 


INC 


IFLAG ; letters? 


8868 


JSR 


GETRAND 


8878 


LDA 


ttl5 


8888 


STA 


IIY3 


8898 LPl 


LDA 


»15 


8988 


STA 


ICNT 


8918 Leap LDY ICNT 


8928 


LDA 


RANDS, Y 


8938 


TAY 




8948 


LDA 


TAB16,Y 


8958 


STA 


INDR 


8968 


STA 


IND2 


8978 


LDY 


IIY3 


8988 


LDA 


(INDR},Y 


8998 


JSR 


MOUEDN 


1888 


BC5 


SKIPSNOM 


1818 


DEC 


ICNT 


1828 


BPL 


LOOP 


1838 


DEC 


IIY3 


1848 


BPL 


LPl 


1858 ; 






1868 5KIPSN8M LDY tt8 


1878 


STY 


LMS 


1888 SKI 


LDA 


SET2,Y 
SET+Se288,Y 


1898 


STA 


1188 


INY 




1118 


BNE 


SKI 


1128 ; 






1138 ;5croll 


Meather Message 


1148 ; 






1158 I5CRL LDX «7 


1168 ISC 


STX 


HSCROL 


1178 


LDA 


ttO 


1180 


STA 


RTCLOK 


1198 WTl 


LDA 


C0N50L 


1288 


BEQ 


SKPPER 


1218 


CMP 


»6 


1228 


BEQ 


GSTART 


1238 


LDA 


RTCLOK 


1248 


BEQ 


WTl 


1258 


DEX 




1268 


BPL 


ISC 


1278 


LDY 


LMS 


1288 


INY 




1298 


CPY 


SLENGTH 


1388 


BNE 


ISK 


1318 


LDY 


ne 


1328 ISK 


STY 


LMS 


1338 


JMP 


ISCRL 



1348 

1358 

1368 

1378 

1380 

1398 

1408 

1418 

1420 

1438 

1448 

1458 

1468 

1478 

1488 

1490 

1588 

1518 

1528 

1538 

1548 

1558 

1568 

1578 

1588 

1598 

1688 

1610 

1628 

1638 

1648 

1658 

1660 

1678 

1688 

1690 

1788 

1718 

1720 

1738 

1740 

1750 

1760 

1778 

1788 



GSTART LDA ttO 

STA DIRE 
GST STA LMS 

STA HSCROL 

RTS 

SKPPER LDA UL 
STA DIRF 
LDA »8 
BEQ GST 

;Move byte down 

NOUEDN STY IISV 
CMP ttO 
BEQ MRTS 

LDY ne 

MLP STA CIND2),Y 
CPY II5Y 
BEQ HRTS 

LDX no 

STX RTCLOK 
ML LDX CH 

CPX «$FF 

BNE BRTS 

LDX RTCLOK 

BEQ ML 

PHA 

LDA ttO 

STA CIND21,Y 

PLA 

INY 

BNE MLP 
MRTS LDY IISY 

CLC 

RTS 
BRTS LDX ttSFF 

STX CH 

SEC 

RTS 

■ 

;Get 16 RandoM Nunbers 
GETRAND LDA ttl 



HOS 
ADAPTE 



A better way to build an Atari ST hard drive system begins 
with our ST Host Adapter and ends with your choice of 
standard components. 

In other words, you're not limited to those pre-packat^ed 
"Atari-only" systems any lonfjer. The ST Host Adapter 
gives you the support you've been waitinji for, whether you 
connect an SCSI controller to industry standard drives or 
connect SCSI imbedded drives directly to the ST Host 
Adapter. 

Features include: Built in buttery hacked-up Time/Date 
Clock ' Supports ul) to 7 SCSI devices from the ST DMA 
port ' Allows daisy chaining of the DMA port • WO'Yu com- 
patible with Atari and Supra Hard Drive Sy-stem-s • ICD's 
AUTOBOOT softivare allows booting directly from the 
Hard Drive • Includes format software and handlers to run 
standard drives with SCSI controllers (our SCSI controllers 
support tivo drives) • ICD's hard disk handler is the only 
one available ivith built in verify and error retry to en.surc 
error-free read and xvrite. 

Build a better ST drive system with our ST Host Adapter. 
It's a f^reat way to get the system you want . . . cvactiv the 
way you want it! 



■CD 



p" 4 



2QRockStTL-fi, liMklmd. lllmms6lWI (HIS)9f,H-2Z2H liliS: (HlS)96H-2 



CIRCLE #109 ON READER SERVICE CARD. 



1790 


STA RAND 


1808 


LDA RANDOM 


18ie 


AND tt$0F 


1826 


5TA RANDS 


1830 


RLOOP LDA RANDOM 


1840 


AND tt$eF 


1850 


LDV tt8 


1860 


RSRCH CMP RANDS, Y 


1870 


BEQ RLOOP 


1880 


INY 


1890 


CPY RAND 


1900 


BNE RSRCH 


1918 


STA RANDS, Y 


1920 


INY 


1930 


STY RAND 


1940 


CPY 016 


1950 


BNE RLOOP 


1968 


RT5 


1978 


} 


1988 


TAB16 .BYTE 0,16,32,48 


1998 


.BYTE 64,80,96,112 


2000 


.BYTE 128,144,160,176 


2010 


.BYTE 192,208,224,248 


2020 


i 


2030 


STAR = » 


2040 


»= 57888 


2050 


/ 


2060 


SNOMMEM .SBYTE " 


2070 


.BYTE ■■QBDFHJLHPRTVXZS.Ai- 


2080 


.SBYTE '■ 


2090 


.SBYTE ■■ 


2100 


.BYTE "ACEGIKMaQSUWYCl." 


2110 


.SBYTE " 


2120 


.SBYTE " BY: BARRY KOL" 


2130 


.SBYTE "BE AND BRYAN 5CH" 


2140 


.SBYTE "APPEL 


2150 


.SBYTE ■' COPYRIGHT 1" 


2160 


.SBYTE "988 BBK ENTERPRI" 


2178 


.SBYTE "SES 


2188 


t 


2190 


TOPSCORE .SBYTE " top score 


2200 


.SBYTE "000000 " 


2218 


«= STAR 



LISTING 6: ASSEMBLY 



0108 
0118 
0120 
0130 
0140 
0150 
0160 
0170 
0180 
0190 
0200 
0210 
0220 
8230 
0248 
0250 
0260 
0270 
0280 
0290 
0300 
0310 
0320 
0330 
0340 
0350 
0360 
0378 
0380 
0390 
0400 
0410 
0420 
8430 
8440 
0450 
0460 
0470 
0480 
0490 
0500 
0518 

78 



SNONPLDN Character Set 

b!,i: Barri/ Kolbe Cgraphics) 
and Bryan Schappel Ctextl 



.BYTE 
.BYTE 
• BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 



$00, $00, 
$00, $80, 
$EC,$E2, 
$A2,$A2, 
$3F,$8F, 
$eA,$OA, 
$FF,$FF, 
$88, $88, 
$FF,$FF, 
$OA,$eA, 
$FD,$F5, 
$D5,$F5, 
$7F,$5F, 
$57,$5F, 
$FF,$FF, 
$FF,$FF, 
$FA,$EA, 
$A0,$A2, 
$FA,$EA, 
$AA,$AA, 
$BF,$AF, 
$OB,$AB, 
$BF,$AF, 
$AB,$AB, 
$08, $00, 
$00, $18, 
$FF,$FF, 
$EA,$FB, 
$FE,$EA, 
$FE,$FE, 
$BF,$AB, 
$BF,$BF, 
$7F,$63, 



$00, $00 
$00, $00 
$CA,$2A 
$AA,$AA 
$A3,$A8 
$OA,$OA 

$oe,$AA 

$80, $80 

$oe,$AA 

$OA,$OA 
$D5,$D5 
$FE,$FE 
$57, $57 
$BF,$BF 
$FF,$FF 
$FF,$FF 
$A0,$A2 
$E2,$FA 
$AA,$AA 
$EA,$FA 
$eB,$AB 
$AF,$BF 
$AB,$AB 
$AF,$BF 
$00, $00 
$18, $30 
$FF,$FB 
$EA,$FF 
$EF,$EA 
$FE,$FE 
$FB,$AB 
$BF,$BF 
$63, $63 



0528 


.BYTE 


0530 


.BYTE 


0540 


.BYTE 


8550 


.BYTE 


0568 


.BYTE 


8578 


.BYTE 


0580 


.BYTE 


0590 


.BYTE 


0688 


.BYTE 


0618 


.BYTE 


0620 


.BYTE 


0630 


.BYTE 


0648 


.BYTE 


8650 


.BYTE 


0668 


.BYTE 


0670 


.BYTE 


0680 


.BYTE 


0690 


.BYTE 


0700 


.BYTE 


0710 


.BYTE 


0720 


.BYTE 


0730 


.BYTE 


0740 


.BYTE 


0750 


.BYTE 


0760 


.BYTE 


0770 


.BYTE 


0780 


.BYTE 


0790 


.BYTE 


0800 


.BYTE 


0810 


.BYTE 


0820 


.BYTE 


0830 


.BYTE 


0840 


.BYTE 


0850 


.BYTE 


8860 


.BYTE 


0870 


.BYTE 


0880 


.BYTE 


0890 


.BYTE 


0900 


.BYTE 


0910 


.BYTE 


0920 


.BYTE 


0930 


.BYTE 


0940 


.BYTE 


0950 


.BYTE 


0960 


.BYTE 


0970 


.BYTE 


0988 


.BYTE 


0990 


.BYTE 


1000 


.BYTE 


1010 


.BYTE 


1028 


.BYTE 


1030 


.BYTE 


1848 


.BYTE 


1058 


.BYTE 


1060 


.BYTE 


1070 


.BYTE 


1080 


.BYTE 


1090 


.BYTE 


1100 


.BYTE 


1110 


.BYTE 


1120 


.BYTE 


1130 


.BYTE 


1148 


.BYTE 


1158 


.BYTE 


1168 


.BYTE 


1178 


.BYTE 


1188 


.BYTE 


1198 


.BYTE 


1288 


.BYTE 


1218 


.BYTE 


1228 


■ BYTE 


1230 


.BYTE 


1240 


.BYTE 


1250 


.BYTE 


1260 


.BYTE 


1270 


.BYTE 


1280 


.BYTE 


1290 


.BYTE 


1300 


.BYTE 


1318 


.BYTE 


1320 


.BYTE 


1330 


.BYTE 


1340 


.BYTE 


1350 


.BYTE 


1360 


.BYTE 


1370 


.BYTE 


1380 


.BYTE 


1390 


.BYTE 


1400 


.BYTE 



$63 
$38 
$3C 
$7F 
$60 
$7E 
$07 
$70 
$77 
$7F 
$07 
$7C 
$63 
$7F 
$18 
$3E 
$77 
$7F 
$07 

$00 

$00 
$FF 
$AA 
$FF 
$AA 
$00 
$55 
$00 
$55 
$00 
$18 
$00 
$6E 
$08 
$7F 
$00 
$73 

$00 

$60 
$00 
$63 
$00 
$7F 
$00 
$18 
$08 
$63 
$00 
$73 
$88 
$8C 
$88 
$8C 
$00 
$7C 

$00 

$38 
$00 
$7F 
$00 
$73 
$00 
$73 
$00 
$73 
$00 
$63 
$00 
$70 
$00 
$7F 
$00 
$1C 
$00 
$73 
$80 
$63 
$08 
$7F 
$80 
$18 
$00 
$73 
$00 
$18 
$80 
$18 
$60 
$18 



,$63, 


$7F, 


,$18j 


$18, 


f$3C, 


$3C, 


,$63j 


$03, 


jp$60j 


$7F, 


,$06 


$06, 


,$07 


$7F, 


,$70 


$70, 


J$7F 


$07, 


,$60 


$60, 


,$07 


,$7F, 


,$6C 


$60, 


,$63 


,$7f; 


,$03 


,$03, 


,$18 


,$18, 


,$36 


,$36, 


,$77 


,$7F, 


,$63 


,$63, 


,$07 


,$07, 


,$00 


,$18, 


,$18 


,$18, 


'$FF 


,$fe; 


,$AA 


,$CF, 


,$FF 


,$AF, 


,$AA 


,$F3, 


,$00 


,$01, 


,$55 


,$30, 


,$90 


,$50, 


,$55 


,$0C, 


,$3C 


,$66, 


,$00 


,$18, 


,$3C 


,$66, 


,$60 


,$3E, 


,$00 


,$3F, 


,$67 


,$7F, 


,$60 


,$60, 


,$73 


$7F 


,$00 


,$7F, 


,$60 


;$7f; 


,$03 


,$03, 


,$63 


$7F 


,$00 


$7F 


,$70 


$7F, 


JSIE 


$18, 


,$38 


$38, 


,$00 


$7f; 


,$7F, 


$07, 


,$60, 


$60, 


,$73, 


$73, 


,$0C, 


$00, 


,$1C 


$1C, 


,$0C 


$00, 


,$0E 


,$0E, 


,$30 


,$30, 


,$76 


,$73, 


,$18 


$18, 


,$38 


,$38, 


,$00 


,$66, 


,$6B 


,$63, 


,$00 


,$3F, 


,$73 


,$73, 


,$00 


,$3F, 


,$73 


p$7F, 


,$00 


,$3F, 


,$7F 


,$70, 


,$00 


;$7f; 


,$7F 


,$07, 


,$00 


,$3F, 


,$70 


,$70, 


,$00 


,$7F, 


,$07 


$7F 


,$0C 


$7f; 


,$1C 


$1C, 


,$00 


$33, 


,$73 


$7f; 


,$00 


$63, 


,$36 


$1C, 


,$00 


$63, 


,$3E 


$36, 


,$00 


$66, 


,$3C 


$66, 


,$00; 


$33, 


,$7F, 


$03, 


,$00, 


$7E 


,$30, 


$7E, 


,$ie; 


$18, 


,$18, 


$ie; 


,$40, 


$60, 


,$0C, 


$06, 



,$00 
,$18 
,$00 
,$7F 
,$88 
,$7F 
,$88 
,$77 

,$00 

,$7F 
,$00 
,$7F 
,$00 
,$1F 
,$60 
,$7F 

,$00 

,57F 
,$00 
,$18 
,$00 
,$F8 
,$FF 
,$AB 
,$FF 
,$04 
,$08 
,$54 
,$00 
,$0C 

,$00 

,$6E 
,$00 
,$03 
,$00 
,$7F 

,$00 

,$60 
,$00 
,$7F 

,$00 

,$63 

,$00 

,$7E 
,$00 
,$63 
,$7F 
,$7F 
,$08 
,$0C 
,$00 
,$0C 
,S7E 
,$76 
,$00 
,$18 

,$00 

,$7F 
,$00 
,$33 
,$00 
,$33 
,$00 
,$33 
,$70 
,$63 
,$07 
,$33 

,$00 

,$60 
,$00 
,$0C 
,$00 
,$33 

,$00 

,$63 

,$00 

, $6B 
,$00 
, $3C 
,$00 
,$33 
,$0F 

, $0C 

,$00 
,$18 
,$00 
,$30 

,$00 



SEPTEMBER 1 988 ' A.N , A, L,0 ,G, COMPUTING 



1416 


.BYTE 


1428 


.BYTE 


1438 


.BYTE 


1448 


.BYTE 


1458 


.BYTE 


1468 


.BYTE 


1478 


.BYTE 


1488 


.BYTE 


1498 


.BYTE 


1568 


.BYTE 


1518 


.BYTE 


1528 


.BYTE 


1538 


.BYTE 


1548 


.BYTE 


1558 


.BYTE 


1568 


.BYTE 


1578 


.BYTE 


1588 


.BYTE 


1598 


.BYTE 


1688 


.BYTE 


1618 


.BYTE 


1628 


.BYTE 


1638 


.BYTE 


1648 


.BYTE 


1658 


.BYTE 


1668 


.BYTE 


1678 


.BYTE 


1688 


.BYTE 


1698 


.BYTE 


1788 


.BYTE 


1718 


.BYTE 


1728 


.BYTE 


1739 


.BYTE 


1748 


.BYTE 


1758 


.BYTE 


1768 


.BYTE 


1778 


.BYTE 


1788 


.BYTE 


1798 


.BYTE 


1888 


.BYTE 


1818 


.BYTE 


1828 


.BYTE 


1838 


.BYTE 


1848 


.BYTE 


1858 


.BYTE 


1868 


.BYTE 


1878 


.BYTE 


1888 


.BYTE 


1898 


.BYTE 


1988 


.BYTE 


1918 


.BYTE 


1928 


.BYTE 


1938 


.BYTE 


1948 


.BYTE 


1958 


.BYTE 


1968 


.BYTE 


1978 


.BYTE 


1988 


.BYTE 


1998 


.BYTE 


2888 


.BYTE 


2818 


.BYTE 


2828 


.BYTE 


2838 


.BYTE 


2848 


.BYTE 


2858 


.BYTE 


2868 


.BYTE 


2878 


.BYTE 


2888 


.BYTE 


2898 


.BYTE 


2188 


.BYTE 


2118 


.BYTE 


2128 


.BYTE 


2138 


• BYTE 


2148 


.BYTE 


2158 


.BYTE 


2168 


.BYTE 


2178 


.BYTE 


2188 


.BYTE 


2198 


.BYTE 


2288 


.BYTE 


2218 


.BYTE 


2228 


.BYTE 


2238 


.BYTE 


2248 


.BYTE 


2258 


.BYTE 


2268 


.BYTE 


2278 


.BYTE 


2288 


.BYTE 


2298 


.BYTE 



$88 
$18 
$88 
$63 
$88 
$88 
$88 
$1C 
$8F 
$18 
$88 
$8C 
$FE 
$1E 
$88 
$1E 
$1F 
$1C 
$88 
$38 
$B8 
$78 
$88 
$78 
$78 
$78 
$88 
$1C 
$1C 
$1C 
$88 
$1C 
$1D 
$1F 
$88 
$38 
$B8 
$F8 
$88 
$1C 
$1F 
$1C 
$88 
$1C 
$F8 
$88 
$88 
$1C 
$1C 
$1C 
$88 
$88 
$88 
$1C 
$88 
$70 
$78 
$70 
$88 
$1C 
$1C 
$1C 
$88 
$1C 
$1D 
$1F 
$88 
$38 
$B8 
$F8 
$FF 
$FF 
$88 
$80 
$FF 
$FF 
$88 
$88 
$FF 
$FF 
$88 
$88 
$FF 
$FF 
$08 
$08 
$FF 
$FF 
$88 



,$78 


,$18, 


,$18 


,$78, 


,$88 


$1C, 


,$88 


$88, 


,$e8j 


$80, 


,$88, 


$FF, 


,$88, 


$07, 


,$1C 


$1C, 


,$88 


$88, 


,$1F 


$1F, 


,$88 


$FC, 


,$08 


$00, 


,$0E 


$0E, 


,$FC 


$F8, 


,$08 


$7C, 


,$1E 


$if; 


,$1D 


$1C, 


,$7C 


$7C, 


,$88 


$3E, 


,$38 


$38, 


,$F8 


$F8, 


,$3E 


,$3E, 


,$88 


,$3F, 


,$78 


,$78, 


,$78 


,$78, 


,$7F 


,$3F, 


,$88 


$F8, 


,$1C 


,$1C, 


,$1C 


,$1C, 


,$FC 


,$F8, 


,$88 


,$7C, 


,$iC 


,$1C, 


$1D 


,$1D, 


,$7E 


,$7C, 


,$00 


,$3E, 


,$38 


,$38, 


,$B8 


,$B8, 


U7E 


,$3E, 


,$00 


;$7f; 


,$1C 


,$1C, 


,$1F 


,$1C, 


'$7F 


i$7f; 


,$00 


r$F8, 


,$1C 


,$1C, 


,$F0 


,$08, 


,$00 


,$00, 


,$00 


;$7f; 


,$1C 


,$1C, 


,$1C 


,$iC, 


,$7F 


,$7F, 


,S00 


$00, 


,$00 


,$00, 


,$00 


,$00, 


,$FC 


$FC, 


,$00 


$3F, 


,$70 


$78, 


,$70 


,$78, 


,$7F 


,$3F, 


,$00 


$F8, 


,$1C 


$1C, 


,$1C 


$1C, 


,$FC 


,$F8, 


,$80 


$7C, 


,$1C 


$1C, 


,$1D 


$1D, 


,$7E 


$7C, 


,$88 


$3E, 


,$38 


$38, 


,$88 


$B8, 


,$7E 


$3E, 


,$FF 


$FF, 


,$FF 


$ff; 


,$88 


$88, 


,$08 


$80, 


,$FD 


$FF, 


,$FD 


$FF, 


,$01 


$00, 


,$01, 


$00, 


,$7F 


$FF 


,$7F, 


$ff; 


,$48, 


$00, 


,$48, 


$00, 


,$FD, 


$FF 


,$FD, 


$FF, 


,$01, 


$00, 


,$01, 


$00, 


,$7F, 


$FF 


,$7F, 


$ff; 


,$40, 


$00, 



,$18 
,$88 
,$36 
,$00 
,$00 
,$00 
,$0F 
,$1F 
,$00 
,$00 
,$FC 
,$FC 
,$0E 
,$08 
,$7C 
,$1F 
,$1C 
,$80 
,$3E 
,$38 
,$78 
,$88 
,$7F 
,$78 
,$78 
,$88 
,$FC 
,$1C 
,$1C 
,$80 
,$7C 
,$1D 
,$1F 
,$88 
,$3E 
,$B8 
,$F8 
,$88 
,$7F 
,$1C 
,$1C 
,$80 
,$F8 
,$1C 
,$80 
,$88 
,$7F 
,$1C 
,$1C 
,$80 
,$00 

,$00 

,$1C 
,$00 
,$7F 
,$70 
,$70 
,$00 
,$FC 
,$1C 
,$1C 
,$00 
,$7C 
,$ll> 
,$1F 

,$00 

,$3E 
,$B8 
,$F8 
,$88 
,$D7 
,$FF 
,$14 
,$80 
,$FD 
,$FD 
,$01 

,$01 

,$7F 
,$7F 
,$48 
,$48 
,$5D 
,$FD 
,$51 
,$01 
,$75 
,$7F 
,$45 



2300 


.BYTE 


$88, $48, 


2310 


.BYTE 


$FF,$FD, 


2320 


.BYTE 


$FF,$FF, 


2330 


.BYTE 


$80, $01, 


2340 


.BYTE 


$00, $00, 


2350 


.BYTE 


$FF,$FF, 


2360 


.BYTE 


$FF,$FD, 


2370 


.BYTE 


$00, $00, 


2380 


.BYTE 


$00, $01, 


2390 


.BYTE 


$FF,$FF, 


2400 


.BYTE 


$FF,$7F, 


2410 


.BYTE 


$00, $00, 


2420 


.BYTE 


$00, $40, 


2430 


.BYTE 


$FF,$7F, 


2440 


.BYTE 


$FF,$FF, 


2450 


.BYTE 


$00, $40, 


2460 


.BYTE 


$00, $00, 


2470 


.BYTE 


$FF,$FF, 


2480 


• BYTE 


$FF,$FD, 


2490 


.BYTE 


$00, $00, 


2500 


.BYTE 


$00, $01, 


2510 


.BYTE 


$FF,$FF, 


2520 


.BYTE 


$FF,$7F, 


2530 


.BYTE 


$00, $00, 


2540 


.BYTE 


$00, $40, 


2550 


.BYTE 


$FF,$7F, 


2560 


.BYTE 


$FF,$FF, 


2570 


.BYTE 


$00, $40, 


2580 


.BYTE 


$00, $00, 


2590 


.BYTE 


$FF,$FD, 


2600 


.BYTE 


$FF,$FF, 


2610 


.BYTE 


$00, $01, 


2620 


.BYTE 


$00, $00, 


2630 


.BYTE 


$FF,$EF, 


2640 


.BYTE 


$FF,$FF, 


2658 


.BYTE 


$00, $08, 


2668 


.BYTE 


$88, $88, 


2678 


.BYTE 


$18, $18, 


2688 


.BYTE 


$18, $18, 


2698 


• BYTE 


$e8,$7E, 


2788 


.BYTE 


$6E,$66, 


2710 


.BYTE 


$08, $18, 


2720 


.BYTE 


$38, $18, 


2738 


.BYTE 


$10, $18, 


2748 


.BYTE 


$1C,$18, 



$00, $40 
$FF,$5D 
$FF,$FF 
$00, $51 
$00, $00 
$FF,$5D 
$FF,$FD 
$00, $51 
$00, $01 
$FF,$75 
$FF,$7F 
$00, $45 
$00, $40 
$FF,$75 
$FF,$FF 
$00, $45 
$00, $00 
$FF,$FD 
$FF,$FD 
$00, $01 
$00, $01 
$FF,$7F 
$FF,$7F 
$00, $40 
$00, $40 
$FF,$7F 
$FF,$FF 
$00, $40 
$00, $00 
$FF,$FD 
$FF,$FF 
$00, $01 
$00, $00 
$FF,$55 
$FF,$FF 
$00, $55 
$00, $00 
$18, $18 
$18, $18 
$78,$7C 
$86, $88 
$38, $78 
$88, $80 
$1C,$1E 
$18, $80 



yKi'i' r-Jffi 



♦ ♦ ♦ ♦ 



SpartaDOS 



Tool Kit 



Now SpartaDOS is reachinti new potentials with a 
little IiL'ip from our SpartaDOS Tool KitI It's packcJ 
full of power and ready to boost SpartaDOS with 
utilities written especially for the serious user. 

■ RHND/R.COM: rename subdirectories 
m VDELETE.COM: verify^ ddele 

m WHERinS.COM: find a file mmvhere «» disk 
u MlOCl-q.COM: save and rcioad M I/O 
configurations on /lo/j/nc.s 

■ S()R'r7)IR.COM: .sort.s directories many ways 

■ /;/.SKKX.COM; StnirtaDOS disk editor and 
rectnx'ry tool 

■ DOSMENi '.COM: menu for Atari DOSZUwers 

■ COMMAND.COM: profirummahie function 
keys, IBM-type console keys and more. 

Each innovative tool commands a new form of 
enerj^y and strength when teamed with our already 
powerful SpartaDOS. There's really no limit to what 
these poteer tools can do for you: 

1220 Rock Street 
Rockford. Klinm.s 61101 
(815)968-2228 
BBS": f815J968-2229 



■CD 



CIRCLE #110 ON READER SERVICE CARD. 



END 



USER 




Software piracy continues to choke 
our industry, hurting both software 
companies and ultimately end users 
lil(e you and me. 



Arthur Leyenberger is a human factors psy- 
chologist and freelance zuriter living in Newfer- 
sey. He has written over 100 articles about 
computers in the last five years and continues 
to be an Atari enthusiast. When not comput- 
ing he enjoys playing with robotic toys. 

by Arthur Leyenberger 

Piracy. It has become a major problem 
over the years for software manufacturers 
with every computer. ANALOG magazine 
has discussed the issue many times before. 
Readers have responded time and time 
again. But it's still a problem. Finally, 
there may be some hope for thwarting the 
efforts of software pirates. 

The hope comes from John Weaver, 
who has written several programs for the 
ST. His programs are distributed by 
Michtron, Inc., the most prolific ST soft- 
ware vendor on the face of the earth. The 
specifics of the legal case are that a teen- 
ager allegedly operated a pirate bulletin 
board system from which users could 
download copyrighted programs. One of 
the programs was Cards, Weaver's card 
playing simulation for the ST. 

John Weaver, who owns the copyright 
of Cards, is suing not just the teenager, 
but also his parents. Although pirates 
have been sued by software companies be- 
fore, this may be the first case in which 
the pirate's parents have also been sued. 
According to Jonathan D. Wallace, Esq., 
the computer lawyer representing Weaver 
and a partner in the New York City law 
firm of Meatto, Russo, Burke & Wallace, 
the case raises a question of first impres- 
sion under the copyright law. "Our argu- 
ment is that a parent who supplies the 
computer equipment and telephone line 
which is used to operate a pirate bulletin 
board, and who then tolerates the trad- 
ing of pirated software, contributes to the 
copyright infringement," Wallace said. 



"Since teenagers usually have no assets 
with which to pay a judgment, holding the 
parents responsible will give a strong in- 
centive to families not to condone this 
type of behavior." At the time of this writ- 
ing, the case is pending in federal court 
in New York. 

As far as I am concerned, more power 
to Weaver, et. al. I strongly believe that 
parents have increasingly refused to take 
responsibility regarding their children for 
a number of things from sex education 
to manners to teaching right from wrong. 
I also believe that software piracy con- 
tinues to choke our industry, hurting both 
software companies and ultimately end 
users like you and me. Hopefully the 
judge and/or jury will decide that parents 
can indeed be legally responsible for acts 
of software piracy by their teen-age chil- 
dren. I'll keep you posted on the outcome 
of this important case. 

In discussing this case and the general 
problem of software theft with Gordon 
Monnier, president of Michtron, I learned 
that Michtron has gone after other soft- 
ware thieves as well. Gordon told me that 
most of the people caught in the act set- 
tle out of court or even on the spot. In 
fact, they caught this guy in Florida in the 
process of printing a catalog. As a result, 
they seized his computer equipment and 
he settled on the spot. In the past year, 
Michtron has closed down five bulletin 
board systems (BBS) and one person that 
was selling illegal copies of their software 
outright. 

Many of these so called pirate BBS also 
have stolen telephone and bank credit 
card numbers. Few people realize that the 
telephone company is constantly looking 
for this type of illegal activity. Further, the 
secret service keeps a database of stolen 
credit card users and illegal BBS opera- 
tors. That hot shot computer hacker who 
runs a pirate BBS may be surprised later 



80 



SEPTEMBER 1988 • A.N.A.L.O.G, COMPUTING 



in life when he applies for a top secret 
clearance for a programmer position and 
is denied the classification. 

The Ah-haa phenomenon 

Ever have the experience where you are 
trying to figure something out and then 
the answer suddenly dawns on you. When 
it happens, you say to yourself, "Ahhaa". 
You're not alone, this experience happens 
to everybody. Recently it happened to me. 

For years, at least the several years that 
Jack Tramiel and family have been run- 
ning Atari, I have wondered why they have 
not been more active in the U.S. computer 
market. You probably know the story 
already — Atari talks a good line about ad- 
vertising computers, shows commercials 
at trade shows and then nothing substan- 
tial appears in the media. If anything, 
Atari stresses their game machines in the 
U.S. market. 

At the same time, I keep hearing about 
Atari in the European computer market. 
Well folks, ah-haa. It now seems clear to 
me why Atari is more active overseas. First 
of all, with the ever-declining value of the 
U.S. dollar, the dollar is worth more in Eu- 
rope. As a result. Atari gets more bang for 
the buck when it spends money promot- 
ing its products over there. 

Second, Atari is the number one sell- 



ing computer, at least in France and Ger- 
many Understandably, they do not want 
to lose their sales lead in those markets. 
Finally, Atari is still a relatively small com- 
pany with limited financial resources. 
They must carefully choose where they 
spend their advertising and promotion 
dollars. Whatever they spend in one area 
means that much less they can spend 
somewhere else. 

Given the resurgence of computer 
games in the United States and Atari's 
strength in that market as well as their 
strength in the European computer mar- 
ket, their inarketing policies make sense. 
However, the ST has not done as well as 
expected in the US and continued mar- 
keting emphasis elsewhere may doom the 
ST and make it an orphan computer. 
None of us vrants that to happen but Atari 
will have to do more than make idle 
promises and rely solely on the hobbyist 
market is they want the ST to succeed in 
this country. 

Happy anniversary 

It has been about a year now since Atari 
acquired the FedeiTited Group, a southern 
California based retail consumer elec- 
tronics chain. Atari originally said they 
would buy the 67-store chain for about 67 
million dollars in order to increase dis- 



tribution of their ct^mputers. For over two 
years. Atari has had difficulty trying to 
persuade retailers to carry its wares. 

Although the Federated Group of 
stores had been losing money for almost 
a year prior to the purchase. Atari be- 
lieved that its financial backing would put 
the retail chain back in the black and 
perhaps allow it to begin expanding 
again. Moreover, Atari was really looking 
for better distribution. The acquisition 
was also said to help make Atari a verti- 
cally integrated company and give Atari 
an outlet for new non- computer electron- 
ics products that were to be introduced 
within the year. 

It's been a year. Little is heard from the 
Federated Stores. More importantly, little 
is heard from Atari about the Federated 
Stores which probably means they are not 
fulfilling their initial purpose. And what 
about those new "noncomputer electron- 
ics products" that Atari said they would 
be introducing? I have not heard about 
nor seen them. Another smoke screen? 

What of Atari's distribution? Has it in- 
creased? Have those of us concerned 
about Atari's future been asking this same 
question for years? According to a recent 
Neiu York Times article, some computer 
retailers such as Computerland have 
decided not to carry Atari machines 









SUPER DATif B^E 1-2-3 

(man (ft in a t/i Is base) 

$59.95 • 

Will ganerate.j\U«io-ai^tonn software 
yeti will ever n^d. 




/ 

1. Create Professional Data Screens. 

2. Run Custom Reports. 1 

3. Link Evervthlng Togettier With ; 
Custom Ofi^ Key Menus. / 

• Easy'^l^anual and Tiitcrlai* • 


For IBM PC, PC Jr., XT 
^^ Atari (except ST) Apple II, HE 

1 Commondore 64 

1 Hird Disk eompatibto - 36.000 Fles 

— • • High Quality • 
Adventure Gatnes Only $ 1 9.95 ea. ■ 


1. M. P. SOFTWARE 

RL 1 Box 362 
Ozark, Mo. 65721 

Cal your toed deate c» us at 

(417) 485-6398 

•Add $3.00 shipping and handling 

Missouri residents add 5.25% sales tax 










CIRCLE #111 ON READER SERVICE CARD. 



CIRCLE #112 ON READER SERVICE CARD. 



END 



USER 



An electronic spreadsheet is 
probabiy tiie most usef ui of aii 
programs. Unfortunateiy, it may also 
be the most misunderstood. 



"partly because Atari has an image as a 
video game company whose machines 
would not appeal to corporate cus- 
tomers." Other retailers "are wary of 
Atari's chairman Jack Tramiel, who in his 
days as head of Commodore Internation- 
al, undermined his dealers by slashing 
prices and moving his computers to mass 
merchandisers such as K mart", the arti- 
cle said. 

With little new 8bit software being 
released and the ST not fulfilling its ini- 
tial promises, Atari will need more than 
just video games to keep it going in the 
future. Perhaps now is the time for those 
"noncomputer electronics products." 

Spreadsheets 

You may have been wondering what all 
of the fuss is about regarding progiams 
such as Lotus 1-2-3 on IBM PCs and PC 
clones or Visicalc and SynCalc for the 8-bit 
Atari computers. Perhaps you have heard 
of these programs or know someone who 
uses them but just don't know why. If this 
is true, read on. 

An electronic spreadsheet is probably 
the most useful of all computer programs. 
Unfortunately, it may also be the most 
misunderstood. It's a shame that more 
people don't understand and appreciate 



the fundamental simplicity of a spread- 
sheet and therefore the tremendous pow- 
er that is available in this type of program. 

Electronic spreadsheets did not just ap- 
pear out of thin air. Like many useful 
categories of computer programs, they 
are modeled very closely on their manu- 
al counterpart. Before computers came 
along, accountants, bookkeepers, statisti- 
cians and even families have used spread- 
sheets to keep track of everything from 
depreciation to profit and loss to house- 
hold budgets. A spreadsheet is nothing 
more than a two-dimensional set of 
names and numbers. The key ingredient 
is rows and columns! If you can under- 
stand rows and columns then you under- 
stand the underlying principle of a 
spreadsheet. 

Anyone who has ever filled out an in- 
come tax form has used a form of a 
spreadsheet. An income tax form has a 
vertical list of items such as gross income, 
number of dependents, deductions, tax- 
able income and tax due. Next to this 
column is another one for the numbers 
or dollar amounts. In a spreadsheet, the 
numerical column may contain one of 
three types of entries: an input value such 
as your gross income and number of de- 
pendents; a calculation such as taxable in- 
come which in this simple example is 
gross income minus deductions; and a 
fixed amount such as the amount of tax 
(for a given taxable income level). 

In the precomputer age (not that long 
ago) spreadsheets were manually done on 
columnar paper. This paper had horizon- 
tal and vertical lines printed on it which 
made it easy to write the item names 
down along the left column and units of 
time across the top line. For example, one 
could create a home budget that had all 
of the monthly expenses listed in the first 
column with all remaining columns la- 
beled by months for one year. Then to 
find, say the electric bill for July, you 
would read down the page to find the row 
containing the electric bill item and 
straight across to the July column. 
Remember, rows and columns. 

An electronic spreadsheet is nothing 
more than an old fashioned spreadsheet 
that is calculated on a computer. Columns 
are labeled with units of time such as 
months, quarters, or years and line items 
are listed down the left side of the form. 
The major advantage offered by a com- 



puterized spreadsheet is automatic recal- 
culation of results. Make one change on 
an electronic spreadsheet and all calcu- 
lations that use that value will instantly 
change. This happens automatically com- 
pared to the erase-recalculate-rewrite 
procedure necessary when using a manu- 
al spreadsheet. 

A bargain 

When I first bought my Atari 800 in 
1982, I spent $200 on Visicalc, the very 
first electronic spreadsheet. Visicalc was 
originally written for the Apple II com- 
puter and in fact was the sole reason that 
many people bought an Apple back in 
those days. In June 1983, Synapse (no 
longer in business) announced the Syn 
series of software, three separate pro- 
grams for database, business graphics and 
spreadsheet applications. There were 
several other programs in the series as 
well. 

By January 1984, Synapse struck a deal 
with the old Atari for Atari to distribute 
SynFile-i-, SynTrend and SynCalc. Just as 
these products were being shipped out 
the door, Jack Tramiel and company 
bought Atari and promptly canceled the 
Synapse arrangement. Synapse never got 
paid by Atari for their effort and materi- 
al, they had to lower the price in order 
to move as many as possible and Synapse 
ultimately went out of business as a result. 
The entire matter is still waiting to be set- 
tled in court. 

However, SynCalc was an excellent 
product. To this day, it has features that 
even the programs running on the big 
rigs don't have, such as the use of menus 
that build the command and display it as 
you type. That way you learn what the 
command is and are eventually weaned 
from the menus. Other features of Syn- 
Calc include variable- width columns, 
sorting data either numerically or alpha- 
betically, compatibility with AtariWriter, 
a 255 row by 128 column maximum 
matrix and operation with one or two 
disk drives. 

SynCalc was originally scheduled to sell 
for $99. Within a year after it was released 
it was selling at a street price of about $35. 
Recently I saw it for $20 at a megamall 
toy store. If you have an Atari 8-bit com- 
puter and you don't have a spreadsheet 
for it, SynCalc is the best. If you see it, 
pick it up. You will be glad you did. H 



12 



SEPTEMBER 1 988 • A. N, A.L.O.G. COMPUTING 



T. 



his month we look at the best in fan- 
tasy games. This is without a doubt my 
favorite genre; a logical progression of my 
affinity for the classic dungeon and dra- 
gon games. And as we saw with war-game 
simulations, we again find that the com- 
puterized fantasy games open the D & D 
genre to a much larger audience, with a 
mighty microprocessor replacing com- 
plex result tables and multisided dice. In 
the category of fantasy games, there are 
three lines of evolution which are the 
best. 

The first, and what I consider the best 
line to follow, is 





the Phantasie 
series from SSI. 
This trilogy fol- 
lows a brave 
band of adven- 
turers through 
their trials and 
tribulations as 
they tackle the 
evil dark lord Nickademus. These games 
were the first fantasy games to tap the vast 
graphic power and menuing capabilities 
of the ST. The 8-bit versions, while lack- 
ing the sensational graphics, still exhibit 
the engaging story lines and puzzles that 



Ace of Aces 




by Steve Panak 



boost Phantasie above all the competi- 
tion. The only drawback is a lengthy and 
needlessly involved setup procedure. Un- 
fortunately for 8-bit owners, as of this writ- 
ing, only the first two installments are 
available for our machines. 

For those who want a little more 
difficulty, Datasoft offers up Alternate Real- 



Using your arsenal of explosives, 
sleeping gas, fake I.D. papers and 
a camera and mine detector, you 
Infiltrate tlie enemy compound. 

Infiltrator 



^^^^^^HSi^l 




n m 


^p 


■i HS 




jt \ 




& \ 


m 


I'ltl'l'US 




•il-MMV 




(ii !i iNftiji-:;; 




I XHL.lltil Ul M 




111 M n n ii u 1 






Ace of Aces 



ity. The premise is abduction based — 
you've suddenly been transported avray 
from your comfortable home and into an 
alternate reality, a medieval world full of 
adventure and danger. So far there are 
two such worlds. The City and Tlie Dungeon, 
Both play pretty much alike, allowing sim- 
ple interaction between you and each 
world's many inhabitants. The main draw- 
back of the game and a contributing fac- 
tor to its difficulty, is the fact that you 
cannot save your position before attempt- 
ing to survive a dangerous situation. Sav- 
ing a game does just that — saves the game 
and terminates the program. The save- 
game disk is then used to restart. This 
operational aberration calls for an al- 
together different play strategy. 

Beginners may find refuge in the Wiz- 
ard's Croivn series. These simple games are 
the perfect introduction to computer- 
based D & D for experienced gamers, due 
to their moderate level of difficulty. The 
goal is to search for the wizard's crown, 
using eight characters which you design. 
Wizard's Crown and its sequel. The Eter- 
nal Dagger require 50 hours of play to 
complete, and it is 50 hours well spent in- 
deed, with the only drawbacks being an 
overly complex and poorly designed 
setup procedure and difficult-to-use com- 
mand structure. 

Unfortunately I have no new fantasies 
to share with you this month. I hope that 
Phantasie III is soon converted to 8-bit, but 
until that time we'll just have to make do 
with one of these. 

Infiltrator 

Mindscape 

3444 Dundee Road 

Northbrook, IL 60062 

64K disk, $29.95 

Ace of Aces 

Accolade 

20813 Stevens Creek Blvd. 

Cupertino, CA 95014 

64K disk, $29.95 

This month we have not one, but two — 
count them — two flight simulators. Yes, 



A.N,A.L,O.G,COMPUTING«SEPTEMBER 1988 



8! 



into a market saturated with similar 
games, Accolade and Mindscape have 
chosen to launch their own air-based bat- 
tle and strategy games. And while I tired 
long ago of flight simulators, I'll try to 
hang onto my sanity just long enough to 
tell you if they're air worthy 

In Mindscape's new game, Infiltrator, you 

are Captain Johnny "Jimbo Baby" McGib- 

bits, th'= ^nfiltrator. Your mission, should 

■iwlrrrTri ».....> 1.1 — -.wH you choose to ac- 

— cept it, is to com- 




<t» ■— plete three sepa- 
■_ / . ' ^ rate assignments, 
each comprised 
of a flight into 
enemy territory, a 
ground mission 

Infiltrator ^""^ '^^^ ^ 'S'" ""'^• 

As an Infiltrator, 

success will hinge on your ability to re- 
main hidden from the enemy, sneaking 
in and out of hostile territory, fighting 
only when forced to. Your craft is the Giz- 
mo DHX-1 Attack Chopper, nicknamed 
"The Snuffmaster," and before you hit the 
skies you'll have to take a little time out 
to learn at least some of this aircaft's in- 
credible and diverse capabilities. 

The features found in this chopper 
read like Rambo's Christmas wish list: air- 
to-air heat-seeking missiles, a pair of 
rapid-fire 20mm cannons, a turbo booster 
to get you out of tight situations, flares 
and chaff to decoy enemy fire and 
sophisticated communications, guidance, 
control and surveillance systems. In the 
spirit of a true simulation, nearly every 
system is present and accounted for, and 
you are required to step through as many 
procedures to get this chopper off the 
ground as you would find yourself doing 
with the real thing. 

Start by turning on the battery and in- 
itializing the computer system. Pressing 
I starts your engine. Use the joystick to 
control movement, while the keyboard 
arms your various offensive and defensive 
weapons systems. Pressing the fire button 




Plundered 

Hearts 



launches your attacks. And if this sounds 
complicated, wait until you see the cock- 
pit. Once you learn what every dial, read 
out and warning light in the ultra- 
sophisticated cockpit is trying to tell you, 
you'll never be in the dark again. In ad- 
dition to the expected compass, artificial 
horizon and altimeter and airspeed indi- 
cator, warning lights and gauges keep you 
apprised of critical fuel levels, engine and 
battery temperatures and engine damage. 
Sensors detect incoming missiles, while 
your computer terminal displays craft sta- 
tus and a tactical map. A communications 
facility allows limited contact with other 
aircraft, a correct response to messages 
being required to avoid an attack. And 
you'll want to avoid a lot of battles if you 
hope to reach your destination. 

Upon arrival, you exit your cockpit and 
proceed on foot. Using your arsenal of ex- 
plosives, sleeping gas, fake ID papers and 
a camera and mine detector, yon infiltrate 
the enemy compound, searching rooms, 
photographing secret documents. You 
will be informed when you have complet- 
ed the mission, so you can hightail it back 
to your chopper, having saved the world 
yet again. 

As if this were not excitement enough 
for a worldclass hero, we have yet another 
flight simulator this month. Into the over- 
saturated market Accolade launches Ace 
of Aces, a combat flight simulator pat- 



terned after the Mosquito, a maverick 
RAF fighter bomber of World War II. On 
your way to becoming "Ace of Aces," you 
work your way through four missions, in- 
volving air battles, train bombings, sub 
sinkings and the eradication of VI rock- 
ets before they reach mother England. In 
each mission, the threat of aerial dog- 
fights with Nazi fighters is always present. 

After booting up this game, you might 
want to start in practice mode to familia- 
rize yourself with the controls. The open- 
ing sequence (a series of photographs 
depicting an aircraft scramble as an air- 
raid siren blares annoyingly in the back- 
ground) is best skipped by pressing the 
joystick button. Lacking the complexity of 
Infiltrator, your cockpit in Ace contains 
only the bare essentials — not unexpected, 
as this is a primitive WWII aircraft. The 
pilot's view contains dials indicating air- 
speed and altitude, while the engineer's 
view allows you set the throttle and flaps 
and monitor fuel and engine speed. 

The navigator's map shows your posi- 
tion relative to enemy installations, and 
using the bombardier's view you drop 
bombs and inventory your armaments. 
You move through these views by press- 
ing a keyboard number or clicking the 
joystick button twice and manipulating 
the stick. An on-screen figure of your 
plane reminds you which stick direction 
activates each view, and the figure doubles 



81 



SEPTEMBER 1 988 • A, N ,A, L.O.G, COMPUTING 





On your way to becoming "Ace of 

Aces," you work your way 

through air batties, train 

bombings, sub sinlfings and 

the eradication of VI rocitets . 



as a trouble indicator. For example, the 
rear of the plane lights up when the tail- 
based navigator should be consulted. 

Once you gather up enough courage to 
chance a real mission, you'll be present- 
ed with a menu allowing you to designate 
what types of targets you'll pursue. Next, 
load your plane with the correct mix of 
weapons and fuel. 

The manual reminds you that bombs 
are a must for trains and subs, while lots 
of fuel will be needed for long missions 
and engaging enemy fighters in dogfights. 
And once the enemy is vanquished, the 
mission is over. Unlike Infiltrator, Ace 
never requires you to leave the cockpit. 
The complexity in each of these games 
makes control hard to learn. I found Ace 
to be more intuitive, thus a little easier to 
get a grip on. On the other hand, while 
Infiltrator vras a little harder to play, it was 
also more challenging. However, I did feel 
that Infiltrator went a little too far in try- 
ing to make you feel you were in the pi- 
lot's seat. For instance, there's a lot of 
foolishness as you start each game; the 
program requiring you to get a number 
from one console and input it into 
another to set your guidance system. One 
would hope a craft as sophisticated as the 
Snuffmaster would have peripherals that 
can communicate with one another. The 
controls on Ace seemed a little more 
responsive, although both aircrafts were 
sluggish, lacking the instant response of 
arcade and ST-based simulators. To make 
things worse. Ace occasionally accessed 



the drive before displaying a new screen. 
Graphics again were very similar, 
although I'd have to award this skirmish 
to Infiltrator. Its cockpit was just a little 
more detailed. And while both featured 
a vast number (for 8-bit games) of gauges 
and indicators, all highly detailed, enemy 
planes were crudely drawn, explosions 
less than spectacular. To round out the 
graphics area, a special mention for Ace 
is in order for its creative views looking 
out over each wing. 

The manual for Infiltrator is thick and 
quite complete. It sets up the scenario of 
the game, then goes on to describe the 
control and design of the Gizino DHX-I 
in great detail. Numerous illustrations 
help you quickly identify the various sys- 
tems in the cockpit and the entire manu- 
al is written in a lighthearted way. While 
I found that the constant "cuteness" of the 
prose became annoying, it was, at least, 
not boring. A handy reference card is also 
included. The documentation for Ace of 
Aces is much less elaborate (and less cute) 
than Infiltrator's. However, it does contain 
most of what you'll need to know about 
the gaine along with ample diagrams, so 
you won't be wondering what the various 
displays will look like. Unfortunately for 
800 owners, both games require 64K and 
will not settle for anything less. 

It's kind of hard to pick a winner here; 
I feel like a voter — powerless and forced 
to choose the lesser of two evils. In this 
case, that would have to be Ace of Aces. 
It was easier to learn and offered most of 
what Infiltrator did, save the ground mis- 
sion, which I could have done without 
anyway. But either of these games will let 
the prospective pilot take to the skies. 

Plundered Hearts 

Infocom 

125 Cambridge Park Drive 

Cambridge, MA 02140 

48K disk, $34.95 

With the release of their latest work of 
interactive fiction, Infocom has produced 



the first such story written by a woman, 
as well as made its entry into the genre 
of romance. Spearheading this two-fisted 
attempt to attract more female pur- 
chasers. Amy Briggs has crafted a pirate 
story full of intrigue, adventure and, yes, 
romance. Unfortunately, I think most of 
Infocom's regular audience (presumably 
male) are likely to forsake this bold new 
endeavor. 

In Plundered Hearts, you are a beautiful 
young woman who has just received a 
message detailing how a grave illness has 
befallen your father. He now lies near 
death on a tropical island, and an 
unknown friend, Jean Lafond, claiming 
to the governor of the island, has penned 
the note, because your father is too weak 
to even lift a hand. He pleads that your 
encouragement may be his only hope. Be- 
ing a loyal, loving daughter, you board 
one of the governor's ships and set sail. 

But two days into the voyage, pirates at- 
tack. The captain of your ship, Bar- 
tholomew Davis, who might be 
considered less than heroic, immediate- 
ly sees in you a way to divert the pirates, 
saving his own skin. You are locked in his 
cabin. Moments later, the door breaks in, 
and a vile piece of humanity grasps you 
in his arms. He clutches you tightly, foul- 
ing your face with a breath reeking of 
rum. Just moments before he has his way 
with you, he slumps, having been knocked 
unconscious by his leader, one Captain 
Nicholas Jamison, also known as the Fal- 
con. He too has a note from your father. 



Spearheading this two-fisted 
attempt to attract more femaie 
purchasers, Amy Briggs has crafted 
a pirate story full of Intrigue, 
adventure and, yes, romance. 



A.N.A.L.O.G, COMPUTING'SEPTEMBER 1988 



t5 




labeling Lafond a traitor, and telling you 
to trust and accompany the Falcon. Does 
the fact that you feel so attracted to this 
fine specimen of a man make it a little 
too easy to trust him? But then, what 
choice do you have, as your ship burns, 
the cowardly Davis lying slain at your feet? 
You go with the Falcon and begin a jour- 
ney unlike any you've ever imagined. 

Since this game is targeted, presuma- 
bly, at first-time Infocom customers, I'll 
take a minute to cover some program 
specifics. (Regular users will want to jump 
to the next paragraph.) hi interactive fic- 
tion, you control the game by issuing 
commands to the main character in a sto- 
ry. In theory, as in a good book, you 
project yourself into this character. What 
distinguishes Infocom stories is the com- 
plexity of the program's parser and the 
power of its prose. The program under- 
stands (and occasionally demands) com- 
plete sentences, containing subject, verb, 
direct object and adjectives. Abbreviations 
speed you through often-used commands, 
while special commands allow you to save 
your place in the novel, control verbosi- 
ty and print a journal. 



And the simplicity with which you com- 
municate with the program allows you to 
fully enjoy the rich descriptions and ac- 
tion. Just relax and let the story unfold. 

Getting back to Plundered Hearts, in- 
cluded in every package is a velvet reticule 
(a pouch) containing a 50 guinea note 
and a letter from Jean Lafond. Also in- 
cluded is the standard Infocom instruc- 
tion manual, explaining how to play the 
game, giving helpful tips and highlight- 
ing common problems. Finally, a special 
coupon will allow purchasers to enjoy Cut- 
throats, another Infocom pirate story, at a 
special price. But still, I have a lot of trou- 
ble recommending this game to everyone. 

This is because romance is my least 
favorite literary form. My personal tastes, 
firmly ingrained by a childhood filled 
with Timlight Zone, Star Trek and bad B mo- 
vies, run toward horror, fantasy and 
science fiction. So, it should not come as 
a surprise that I didn't care much for the 
story. Newcomers will find the puzzles to 
be standard Infocom fare, and advanced 
players will find it relatively easy. 

Plundered Hearts should be looked at 
as just what it is, a romantic work of fic- 



tion. One trip to the bookstore will con- 
vince you that romance is a viable, 
popular and profitable literary genre. 
And with the game's program design and 
prose up to Infocom's traditional high 
standards, romance readers might just 
find it worth their while to turn on to 
these pages. 

That's a wrap for this month. But be- 
fore I go, some old business. I took a look 
at Bridge 5.0 last month, and in the interim 
a new version has been released. A cur- 
sory test has revealed that although the 
last version's weak bidding has been 
strengthened, the auto-play mode still 
needs some work. Whether you want to 
hold out for yet a better version is depen- 
dent on how much you want to play 
bridge. Next month: the latest simulation 
from SSI and yet another flight simula- 
tor. Until then, good gaming. 

In the six years since Steve joined the Atari com- 
munity, he has spent thousands of hours play- 
ing hundreds of games. Between games, he is 
an attorney and trust officer in a large Ohio 
bank. Steve is still searching for the perfect 
game. fl 



M 



SEPTEMBER I9S8 • A.N.A.L.O.G. COMPUTING 



■fr 



E 



V 



I 



^mge^^mj^'r - 



W» 



Awardware 
HiTech Expressions 
1700 N.W. 65th Ave. 
Suite 9 

Piantation, FL 33313 
48K disl<, $14.95 

Reviewed by Matthew J.W. Ratcliff 

AwardWare is a super new printer graph- 
ic art program from HiTech Expressions, 
another in their progressive line of 
products that consistently support the 
Atari home computers. Design and print 
your own awards, certificates, ribbons, 
tickets, coupons, checks and more. 

AwardWare is like a specialized version 
of Print Shop. Its functions are similar in 
many ways. You may choose from 20 
different borders, five different fonts, and 
25 different graphics in building your 
awards. What makes AwardWare special- 
ized is that all the page layouts are done 
for you. 

When run, AwardWare presents an im- 
pressive graphics introduction display, fol- 
lowed by the main menu. From here you 
can move on to "Printer Setup," "Create 
a QuickAward," "Create Awards and 
More," "Create an AwardDisk" or "Exit." 
AwardWare exits the program by forcing 
the system to reboot instead of your hav- 
ing to power cycle the computer: a nice 
touch. Creating a QuickAward simply al- 
lows you to output an award from a lay- 
out that has been all or partially 
completed for you. To create an Award- 
Disk, you create an award then copy the 
award disk. You can then send it to a 
friend with instructions on how to print 
the last award. I found it odd that the 
manual would actually instruct you to 
copy the program and give it to a friend. 
However, selection of AwardWare's page 
designs are difficult without documenta- 
tion. (This is by no means an approval by 
the manufacturer to make illegal copies 
of the software, just permission for limit- 
ed copying of the software for a specific 
purpose. This policy is quite unusual, and 
misleading to the uninformed.) 

The manual is well written. It begins 



with a tutorial on creating your first 
award, explaining all the parts of the 
display Generally you will select the 
option to "Create Awards and More." 
This will bring up another menu at 
the bottom of the screen with the 




options to edit the last template (the 
last award created is always retrievable 
from disk), create Awards/Licenses, 
Letterhead/Memos, Checks/Tickets/ 
Coupons, Ribbons or Miscellaneous. 

After a subheading, such as Ribbons, is 
selected, a smaller menu box pops up 
showing a number. Press the up and 
down arrows to change this value, and 
RETURN to select. You will have to refer 
to the manual at this point. Every menu 
selection has its own section in the manu- 
al, showing in complete detail all the 
awards you can choose from, along with 
the reference number you need to enter. 

Next the graphic is shown at the top left 
of the screen, with the first editable area 
displayed. At the top right, a template 
menu is shown, along with a description 
of the current field type. Pressing 
RETURN brings up a menu at the bottom 
left of the display, showing all the graph- 



ics, borders, fonts, or whatever is ap- 
propriate for this area, that you can 
choose from. 

You can move freely from one field on 
the graphic to the next, and back again. 
Changes are quick and easy to make. 
When finished, select PRINT to make a 
hardcopy of your award, in either final or 
draft mode. 

While printing, you will see a lot of 
graphics junk on the display. The pro- 
gram uses the screen RAM as a work area 
while building the printer graphics out- 
put. This is done just to let you see the 
program working. It's a bit more interest- 
ing than a simple "Working, Please Wait" 
prompt. 

Printer setup can be selected from the 
main menu, a wide variety of printers is 
supported. If AwardWare doesn't support 
your printer, a printer-driver construction 
utility is provided. You will need a good 
printer reference manual and some un- 
derstanding of special printer codes. You 
probably won't have to use the printer- 
driver editor, however, since 19 different 
printers are supported, with drivers in- 
cluded for Panasonic, Okidata and Star 
printers. You will also find some unex- 
pected drivers for the Star NB-24 (24 pin 
printer), Apple Imagewriter and even the 
Hewlett Packard Quietjet. 

There are 60 different award, license 
layouts to choose from. Three are five 
different letterhead and memo designs, 
each having five border layouts to select 
from. There are two checks, one ticket, 
four coupons and four ribbon designs 
available. Under miscellaneous you will 
find a scroll, key, trophy, newspaper and 
more. In all, there are nearly 100 unique 
basic awards you can create I have certain- 
ly had a lot of fun creating awards for my 
friends at work, ribbons for my sons and 
"kiss" coupons for my wife I haven't come 
across any apparent bugs in the program 
at all. AwardWare is an impressive little 
program for the price. I was pleased to 
find that AwardWare is not copy- 
protected, allowing me to make a back- 
up copy, as well as install it on my ICD 
FA-ST hard drive for faster operation 
(running under SpartaDOS). g^ 



A.N.A.L.O.G.COHPUTING'SEPTEMBER 1988 



87 



u 



T 




I T 



Y 



IS/L/ 








\XJL^L^^ ^trLizxr^ 



by Clayton Wainum 



Editor provides an easy method to 
I enter our machine-language list- 
ings. It won't allow you to skip lines or enter bad data. For convenience, you may 
enter listings in multiple sittings. When you're through typing a listing with M/L 
Editor, you'll have a complete, runnable object file on your disk. 

There is one hitch: It's for disk users 
only. My apologies to those with cassette 
systems. 

Listing 1 is M/L Editor's BASIC listing. 
Type it in and, when it's free of typos, 
save a copy to disk, then run it. 

On a first run, you'll be asked if you're 
starting a new listing or continuing from 
a previously saved point. Press S to start, 
or C to continue. 

You'll then be asked for a fdename. If 
you're starting a new listing, type in the 
filename you want to save the program 
under, then press RETURN. If there's al- 
ready a file by that name on the disk, 
you'll be asked if you wish to delete it. 
Press Y to delete the file, or N to enter 
a new filename. 

If you're continuing a file, type in the 
name you gave the file when you start- 
ed it. If the program can't find the file, 
you'll get an error message and be 
prompted for another filename. Other- 
wise, M/L Editor will calculate where you 
left off, then go on to the data entry 
screen. 

Each machine-language program in 
ANALOG Computing is represented by 
a list of BASIC data statements. Every 
line contains 16 bytes, plus a checksum. 
Only the numbers following the word 
DATA need to be considered. 

M/L Editor will display, at the top of 
the screen, the number of the line you're 
currently working on. As you go through 
the line, you'll be prompted for each en- 
try. Simply type the number and press 
RI^TURN. If you press RETURN without 
a number, the default is the last value 
entered. 

This feature provides a quick way to 



type in lines with repetitions of the same 
number. As an added convenience, the 
editor will not respond to the letter keys 
(except Q for "quit"). You must either 
enter a number or press RETURN. 

When you finish a line, M/L Editor will 
compare the entries' checksums with the 
magazine's checksum. If they match, the 
screen will clear, and you may go on to 
the next line. 

If the checksums don't match, you'll 
hear a buzzing sound. The screen will 
turn red, and the cursor will be placed 
back at the first byte of data. Compare 
the magazine listing byte by byte with 
your entries. If a number is correct, press 
RETURN. 

If you find an error, make the correc- 
tion. When all data is valid, the screen 
will return to gray, and you'll be allowed 
to begin the next line. 

Make sure you leave your disk in the 
drive while typing. The data is saved con- 
tinuously. 

You may stop at any time (except 
when you have a red screen) by entering 
the letter Q for byte #1. The file will be 
closed, and the program will return you 
to BASIC. When you've completed a file, 
exit M/L Editor in the same way. 

When you've finished typing a pro- 
gram, the file you've created will be 
ready to run. In most cases, it should be 
loaded from DOS via the L option. Some 
programs may have special loading in- 
structions; be sure to check the pro- 
gram's article. 

If you want the program to run auto- 
matically when you boot the disk, sim- 
ply name the file AUTORUN.SYS (make 
sure you have DOS on the disk.). 



The two-letter checksum code preced- 
ing the line numbers here is not a 
part of the BASIC program. For more 
information, see the "BASIC Editor 
II" in issue 47. 



LISTING 1: BASIC LISTING 



AZ le DIM BF(161,MS(41,A$(1I,BSC11,FSC151 

,Fl$C15) 
LF 11 DIM H0D$C4I 
BN 20 LINE=1000:RETRN=155:B(ICKSP=lZe:CHK5 

UH=e:EDIT=e 

GO 30 G05UB 45o:po5ITIOK 10,6:? "Btart or 

Continue? "IIGOSUB 5001? CHR$(AI 
ZG 40 POSITION 10,8:? "FILENAME") :INPUT F 

$:P0KE 752,11? " " 
FE 58 IF LEN(FS)<3 THEN POSITION 28,18:? 

GOTO 40 

HF 60 IF FS(1,2)<>"D:" THEN F1$=:"D I " : FIS [ 

3)=F$:G0T0 80 
KL 70 F1$=FS 

TN 80 IF CHIl$ta)="S" THEN 120 
FD 90 TRAP 430:0PEN t>2, 4, 0, Fl$ : TRAP 110 
HQ 100 FOR X-l TO ie:GCT n2,A:NEXT XiLINE 

=UINEtlO;GOTO 100 
HH 110 CLOSE tl2:aPEN tl2,«,e,Fl$:G0T0 170 
VT 120 TRAP 1E0:0PEN <t2,4,0,Fl$:G0SUB 448 

;P05ITI0N 18,10:? "FILE ALREADY EXISTS 

! !"!P0KE 752,0 
ZU 130 POSITION 10,12:? "ERASE IT? "j:G05 

UB 5e0:P0KE 752,1:? CHRS(A) 
MM 140 IF CHR$CA)="H" OR CHRS(AJ="n" THEN 

CLOSE H2:G0T0 38 
OG 158 IF CHR$(AI<>"Y" AND CHRSCAl<>"y" T 

HEN 130 

BH 160 CLOSE lt2;0PEN n2,8,0,Fl$ 

IE 170 G05UB 450;P05ITION 10,1:? " IMilfBiL'B 

BGCB: ";LIHE;CHK5UM=0 

CH 180 L1=3:F0R X=l TO 16:P0SITI0N 13K(X< 
10)tl2)ICX>9) ,Kt2:P0KE 752,0:? "BYTE U" 

)X; ; :G0SUB 310 

XH 1?0 IF EDIT AND L=e THEN BYTE^BF (X> : CO 

TO 210 
FY 200 BYTE=«AHNSJ 
OZ 281 M0DS=HS 

BU 210 POSITION 22,X+2:? BYTE;" " 
YZ 220 BFCK)=BYTE:CHKSUH=CHK5UMtBYTE«X:IF 

CHKSUM>999» THEN CHK5UM=CHKSUH-10000 
MS 230 NEXT X;CHKSUM=CHK5liMtLIHE:IF CHKSU 

M>9999 THEN CHKSUMrCKKSUH-lOOOO 
IG 240 POSITION 12,X*2:P0KE 752,0:? "CHEC 

K5UH: "; :li=4:gosub 310 

EH 250 IF EDIT AND L=0 THEN 270 

QH 260 C=VAL(N$) 

5Y 270 POSITION Z2,X*2:? C;" 

IL 280 IF C=CHK5UM THEN 300 

DI 290 GOSUB 44O:EDIT = l:CHKSUM=e;G0TO 180 

LH 300 FOR K=l TO 16:PUT tt2, BF CX] : NEXT X: 

LINE=LINEtlO;EDIT=0:GOTO 170 
FU 310 L=0 
KZ 320 GOSUB 500:IF (A=ASCt"a"l OR A=ASC( 

"q")) AND X=l AND NOT EDIT THEN 420 
PO 330 IF AORETRN AND AOBACKSP AND (A<4 

8 OR A>571 THEN 320 
DX 331 IF A=RETRN AND N$="" THEN NSzMODS 
TD 335 IF A=RETRN AND LzO AND X>1 THEN 35 


JR 340 IF ((AORETRN AND NOT EDIT) OR A=8 

ACKSPl AND L=0 THEN 320 
DH 350 IF A = RETRN THEN POKE 752,1:? R 

ETURN 
GG 360 IF AOBACKSP THEN 400 
5A 370 IF L>1 THEN NS=NS (1, L-U : GOTO 390 
AS 380 NS="" 

RE 390 ? CHRSCBACKSP) ; !L=L-l;G0T0 320 
BB 400 L=Ltl;IF L>L1 THEN A=RETRN:GOTO 35 



HX 418 N$(L)=CHR$(A) :? 
KN 420 GRAPHICS 0:END 
YT 430 GOSUB 44O:P0SIT 

H FILE!":F0R X=l TO 

tl2:G0T0 30 
FD 440 POKE 710,48:S0U 

=1 TO 50:NEKT X : SOU 
MY 450 GRAPHICS 23:P0K 

,112:P0KE 559,0:PDK 
XR 460 DL=PEEKI5601«25 

DL-1,70;P0KE DLt2,6 
HH 470 FOR X=3 TO 39 S 

EXT X;F0H X=4 to 

ZH 480 POKE 0L*41,65:P 
:P0KE DL*43,PEEKC56 

AC 490 POSITION 2,0;? 
POKE 559,34:RETURN 

MZ 500 OPEN t)l,4,0,"K: 

:return 



CHR$(A) ; :GOTO 320 
ION 10,10;? "NO sue 

1ooo:next x:close 

ND 8,108,12,e:F0R X 
ND 8,8,8,0;RETURN 
E 16,112:P0KE 53774 
E 710,4 
6»PEEK(561)t4:P0KE 

lEP 2TP0KE DL+H,2;K 
STEP 2IP0KE DL«X,8 

OKE [>Lt42,PEEK(560) 
1) :P0KE 87,0 

"analog Hi editor": 
:CET til,A;CL0SE ni 



18 



SEPTEMBER 1988 • A.N.A.L.O.G. COMPUTING 



R 



E 



V 



I 



E 



W 



DELPHr, The Official Guide 
by Miciiael A. Banks 
Brady Books/Simon & Schuster 
488 pages, $19.95 

Reviewed by Clayton Walnum 

There's no arguing the fact that the 
major online services are com- 
plex systems that can be daunt- 
ing to even the most experienced user. 
To the new subscriber, however, the 
numerous commands required to na 
vigate the network can be intimi- 
dating to the point of frustration. 
Although DELPHI is more user- 
friendly than most systems of its 
type, there's no avoiding the fact 
that to provide the greatest "bang 
for the buck" a certain amount 
of complexity must exist. DEL- 
PHI is an immense and lab- 
yrinthine web. After all, there 
are literally hundreds of areas 
the subscriber may access 
(everything from an online 
encyclopedia to more eso- 
teric areas such as AMSEX 
[American Sexology,] i;-;| 

and the Hearing Impaired 
Forum), and each area has unique fea- 
tures the user must become familiar with. 

What to do? 

If you're a subscriber to DEI PHI, I've got 
great news. There's a new book by Michael 
A. Banks that absolutely has to be added 
to your library. DELPHI, The Official Guide 
will not only escort the beginners among 
you effortlessly through your inaugural 
DELPHI wanderings, but will also surprise 
you old masters with myriad tidbits that will 
make your online excursions even more 
fruitful than they were before In fact, this 
book is so complete that DELPHI aban- 
doned their own manual and took on DEl.- 
PHI, Vie Official Guide as the guide provided 
to new subscribers at sign-up time (Could 
be why it's called the official guide, eh?) 

Almost 500 pages in length, the book is 
loaded with "screen shots" that illustrate ex- 
actly what you'll see on-screen during your 
DELPHI sessions. Command line examples, 
showing what should be typed at the vari- 
ous prompts, are also included. When you 
combine the sample screens with the com- 
mand illustrations, you find that reading 
the book is almost like being online You 
could easily learn the basics of the network 
without ever touching your computer. 

Part 1 of the book, "Getting Started," be- 
gins with chapters that describe DELPHI 



■-■»;-■■, ''■■-Ti'--v.''p:.-. 










m<k 






'emier 




in a general 

way and explain what 

is required to access the services. 

The basics of communicating with DELPHI 

are then discussed, including the use of the 

various types of menus and the entry of the 

control key and immediate (global) 

commands. 

These introductory chapters are followed 
by a description of DELPHI'S main menu. 
In this section of the book, each of the 
primary areas is briefly described, prepar- 
ing you for the more detailed chapters to 
come 

The real "meat" of the book lies in Part 
2, the "DELPHI Members Handbook," 
where each of the primary areas gets a 
chapter unto itself This 340-page section 
is where you'll spend most of your time, 
where you'll learn how to send E-mail, how 
to participate in a CO (conference), how 
to join and steer your way through SIGs 
(Special Interest Groups), how to upload 
and download files, how to manage your 
work space, how to use DELPHI'S editors 
and so on. In short, everything you need 
to know is described in careful detail, with 
plenty of examples to ensure under- 
standing. 

Part 3, the "DELPHI User's Guided' offers 



many tips to help you use 
your time on DELPHI 
more efficiently, and Part 
4, "Reference," includes a 
DELPHI index, the DELPHI 
membership agreement, a 
troubleshooting section and 
a list of access numbers foe 
Telenet, Tymnet and DAIAPAC. 
Finally wrapping up the book 
is a lengthy glossary and an 
.^¥>; equally lengthy index. An extra 
m bonus is the quick reference card 
bound into the back of the book. 
After removal (no sweat; it has a 
perforated edge), it will reside right 
next to your keyboard, where you can 
Grab it tire next time you need a quick 
answer to a question regarding DELPHI 
The book's author, Michael Banks, 
is not your average computer-hacker- 
become-writer. He is a seasoned pro- 
fessional who has to his credit many 
non-fiction books and science-fiction 
novels. He also has monthly telecommu- 
nications columns in several magazines 
(not the least of which is his "Database 
Delphi" column in ANALOG Comput- 
ing) and has published articles and 
short stories almost beyond counting. 
To further substantiate his credentials, 
I should mention that he is the 
primary manager of DELPHI'S 
Science Fiction and Fantasy SIG. 

If you're already a subscriber to 
DELPHI, you may order a copy of DEL- 
PHI, The Official Guide right online. 
The book is also available in book- 
stores throughout the country or by 
direct order from the publisher. New 
subscribers to DELPHI will receive the 
book as part of their sign-up package, 
a bargain that's hard to ignore. 

DELPHI, The Official Guide is a com- 
plete, carefully organized and well- 
written book that provides much more 
information than one has a right to ex- 
pect for a measly $19.95. (Equivalent 
computer-related handbooks may run 
as high as $35.) An immense amount 
of labor went into its creation, and it 
is you and I who gain the fruits of that 
labor — all the fruits except the 
royalties. ft 



A.N.A.L.O.G, COMPUTING'SEPTEMBER 1988 



89 




GameD 



■ ■ ■ ith small programs, it's very 

I I ■ ^^^y ^^ \^^^ jump right into 
I I ■ things and start programming. 
^Af Unfortunately, it's not 
so easy once they get larger; there are 
so many things to take care of, that you 
can get totally lost and confused very 
quickly. The solution is to take an inter- 
mediate step between your mind and the 
program; something that makes sense to 
you and is easily converted into a pro- 
gram. This step is called a flowchart. 



Despite the value of using a flowchart, 
very few people actually use one, especial- 
ly in the world of microcomputers. And, 
if you promise not to tell anyone, I'll let 
you in on a little secret. Up until this 
column, I had never used a flowchart 
either! And I've been programming for 
seven years now, including some very 
complicated video games. So I'm not go- 



ing to come at you and say, "Well, you 
should use flowcharts because that's what 
I was taught to do, and it's worked for me." 
Instead, I'll explain the advantages and 
disadvantages that I ran across in using 
my very first flowchart. 

First of all, let's take a look at a simple 
example of a flowchart. This is for the 
part of a game that updates the score. In 





this particular game, which is actually the 
BASIC Invaders game that we'll be de- 
veloping together, a bonus base is given 
at 10,000 points. The sample flowchart is 
shown in Figure 1. 

( STflR'T) 



PRINT SCORE 
ON SCREEN 




/SC0RE>=\VE5 
\1B. 0087/ 




BASESsBASESn 



PUT EXTRA 
BASE ON SCREEN 



Figure I 



So what does this all mean? First of all, 
notice how easy it is to understand what's 
going on. That's because, apart from the 
funny squares and diamonds, everything 
is written in English, not BASIC. If you 
were to take a look at the BASIC program 
that accomplished the same thing, 
chances are it would be much more 
difficult to understand what it was doing. 
At the same time, it's now quite easy to 
take this flowchart and make it into a pro- 
gram; a lot easier than taking just the 
original idea. 

What is it exactly that a flowchart does 
to make programming easier? When you 
go to write a program, you start off with 
an idea of what you want the program to 
do. Unfortunately, computers don't run 
on ideas. You have to be able to break this 
idea down into a series of very concrete 
steps, and then write these steps in a lan- 
guage that the computer will understand. 
Most people (including myself), try to go 
straight from the idea to the computer, 
taking care of the intermediate steps in 
their head. As I said before, this works 
fine if the resulting program is very small, 
but most people don't have the capacity 
to keep a lot of precise steps organized 
in their head for a larger program. The 
result is a program that takes a long time 
to write, and even longer time to debug, 
and ends up looking like a mess. (Be 
honest, when was the last time you wrote 
a program that looked as neat and ord- 
erly as the ones in the magazines?) Believe 
me, I know from experience! Anyway, the 
point I'm taking too long to make is that 
a flowchart organizes your thoughts for 
you. It breaks down your terrific idea into 
a series of concrete steps that can then 
be easily translated into a program. It also 
often has the added benefit of letting you 



n 




see in advance where things might go 
wrong. 

Now that you're (hopefully) convinced 
about the benefits of a flowchart, let's take 
a look at how to create one. Of course, 
there is nothing to say that you have to 
follow these rules. Whatever works best 
for you is fine, but the following guide- 
lines are a good place to start. 

As you saw in our example, flowcharts 
are made up of a whole bunch of shapes 
connected by arrows. Inside these shapes 
are descriptions of each step. Why are 
there different kinds of shapes? Because 
there are different kinds of steps. Figure 
2 is a summary of the shapes and the 
kinds of steps they represent. 



V / Input / Output 

11 Conplete Process 




O 



Decisions 



Subroutines 



Connection to SoneHhere 
else in the floM 

Beginning or end 



Connector arrows 



Figure 2 



You'll see these shapes or symbols 
throughout future columns, and at the 
end of this column when we present the 
complete flowchart for BASIC Invaders. 
Actually, that's not quite true. You won't 
see the Input/Output symbol, largely be- 



cause there is no I/O in the program. How 
should you use this symbol? In whatever 
way makes sense to you. As I said before, 
a flowchart is meant to make things easi- 
er for you, so you should use it in 
whichever way you're most comfortable 
with. 

Now that you know what a flowchart is 
and how to make one, you're probably 
wondering whether or not it's worth the 
effort to use one. After all, it does take 
time to do a flowchart, and that time 
could otherwise be spent programming. 
Well, we've already seen most of the ad- 
vantages of flowcharts. They break down 
a program into small steps that can then 
be easily programmed; which means that 
it takes less time to do the programming, 
which makes up for the time it takes to 
do the flowchart. Another advantage is 
that it's often easy to look over a flowchart 
and see where problems might arise, thus 
helping you to get rid of bugs before they 
occur. 

But what about the disadvantages? Af- 
ter all, I've already told you that I lived 
without flowcharts for seven years; so 
there must be some disadvantages to 
them, right? The big disadvantage to flow- 
charts is the fact that they aren't the easi- 
est things to create, and especially to 
change. If you're writing a program and 
you make a mistake or forget something, 
then it's easy to take out a line or add one. 
But with a flowchart, things start to get 
messy. Take it from me, never do a flow- 
chart in pen! And, there's no way around 
it, flowcharts do take time. Even though 
they'll eventually save you time on the 
programming, that's no consolation while 
you're spending hours with a piece of 
paper and not getting any results on the 
screen. 

So what's the verdict? Should you use 
flowcharts, or shouldn't you? My advice is 
to try them at least once and see what you 
think. Maybe they'll work for you and 
maybe they won't. (Just think, you paid 
money for advice like this!) Personally, I 
plan on using flowcharts again, but not 
for everything. I'm one of those impatient 
souls that needs to see immediate results 
on the screen. 

So much for our philosophizing, now 
it's time to get into a real program. As I'm 
sure you know by now, we're going to be 
developing a BASIC version of the popu- 
lar Invaders-type program. Appropriate- 
ly enough, we're going to be calling it 
BASIC Invaders. In any case, we'll start off 
by presenting the complete flowchart for 
the game. As we go through the game 
piece by piece, it will help you to look at 
the flowchart and see how the BASIC 
code relates to it. So, without any further 



ado. Figure 3 is my flowchart for the i 
BASIC Invaders game. ' 

Look it over carefully and then keep it 
in mind as we write the program. 
Although we won't be referring to it any- 
more, it will be used implicitly as we put 
things together. 

Another introduction 

Don't worry, this will be relatively short 
and painless. It is an introduction to the 
program examples that you will be com- 
ing across throughout the rest of the text. 
These examples serve two purposes. First 
of all, they are examples of the techniques 
that we will be covering. In this sense, I 
will do as much as possible to see that it 
is obvious how similar sections would be 
written for games other than the one we 
will be writing here. Second of all, they 
are, of course, a part of the final game, 
our BASIC Invaders. Thus they will even- 
tually all fit together to create the game. 
Because of this, our line numbers are go- 
ing to be a little off the wall. This is to 
save you time, since you will eventually be 
able to merge all the segments together 
to make a complete program. Thus the 
line numbers in the various segments are 
those from the final program. 

And now, our first program. What! How 
can this be? Well, I mentioned before that 
I'll be giving you a lot of machine- 
language routines. If you've seen 
machine-language routines before, you 
know that they are made up of either a 
lot of numbers or a lot of funny charac- 
ters, depending on which technique the 
author uses. And if you've tried typing in 
any of these routines, you know it can be 
a real pain. This column's routines have 
a grand total of 997 such funny charac- 
ters. So what do we do? My answer to this 
problem is the program shown in Listing 
L As you can see, it has numbers, not 
characters, to make life easier for you. But 
when you run it, the computer will take 
these numbers and turn them into charac- 
ters for you. Neat, huh? Not only that, but 
it will also check to make sure that you 
typed in the numbers correctly, and will 
tell you where you made a mistake if you 
didn't. Assuming there are no mistakes, 
the program will create some new lines, 
because they are the ones that we'll be us- 
ing in our game. To do this and get rid 
of the other lines, use one of the fol- 
Icwing: 

LIST "D:MACHINE", 29000, 32510 
LIST "C:", 29000, 32510 

Of course, which one you use depends 
on whether you have a disk or cassette. 



n 



SEPTEMBER M88 • A.N.A.L.O.G. COMPUTING 





MOVE RIGHT ONE 



MOVE LEFT ONE 



<MOyE PLflVERN. 
MISSILE / 





NO 


\ 




START 


THE SRUCER 



<HOUE INyflDSftV 
MISSILE / 




Figure 3 




^ y 

<PIRE lWflDER\ 
MISSILE ? 



MOVE TURN 
IT OFF 



Figure 3A 



[ STftRT ) 




/ BRRRIEB \ / INVRDER \ / SAUCER \ 
\ EXPLOSION / \ EXPLOSION / \ EXPLOSION / 

^— — - — i \ 

/ PRINT \ 
NUPDRTEO SCORE/ 



Figure 3C 



TURN 
IT OFF 



A.N.A.L.O.G.COMPUTING'SEPTEMBER IH8 



93 



( STftRT ) 



MOVE MISSILE 
DOMN ONE 



Figure 3D 




TURN OFF 
THE MISSILE 



( START ) 



PICK RANDOM 
INyfiOER ON 
BOTTOM ROW 




POSITION MISSILE 
IN MIDDLE OF 

BOTTOM 
OF INVADER 



TURN ON 
THE MISSILE 



Figure 3E 



s 



(Wl 



( START ) 


\/ 


RHNDOMLV HDD -tj 

e OR 1 TO X POS 

OF COLLISION 



( START ] 



EXPLODE SAUCER 
AND TURN OFF 



ERASE EXPLOSION 
PART OF BARRIER 



SCORE =SCCRE+30e 



Figure 3F 



Figure 3H 



( START ] 



EXPLODE 
BASE 




BASES=BASES-1 



ERASE ONE OF 

THE EXTRA BASES 

ON THE SCREEN 



POSITION NEW 
BASE ON SCREEN 



(ThTi 



( START ) 



[ START ) 



INCREMENT 
STARTING ROM 



/ iNH \ 

\ GAME / 



Figure 31 



ERASE 
INVADERS 




Figure 3j 



PRINT "GAME 
OVER" MESSAGE 



1 



MAKE A NOTE 
TO NOT DRAM ALL 
OF THE BARRIERS 




HIGH SCORE 
SCORE 



DECREMENT 
STARTING ROM 



UneD 



Figure 3L 



94 



SEPTEMBER 1988 • A.N.A.L.O.G. COMPUTING 



Now for a summary of each of the rou- 
tines stored in the hnes the program 
creates: 



off 



any 



things 



29000— VBLOFF turns 
VBLANK routines you use. 

29500— MOVMEM moves 
around in memory. 

30000— MISCLR clears one or more of 
the missiles. 

30500— MEMCLR clears memory 

31000— SCROLL takes care of fine and 




PLAVER BASE 



to actually program it. So let's take a look 
at what goes into getting a good-looking 
game. 

We'll start with the obvious. What are 
the various kinds of shapes that have to 
be designed for BASIC Invaders? Well, 
there are three types of aliens and two 
versions of each (so that they appear to 
be moving). There's an alien ship and the 
player's base. We also have the barriers 
that protect the player. Did we miss any- 
thing? How about the explosion that oc- 
curs when the player shoots an alien? I bet 




ALIEN SHIP 

Figure 4 



shapes have to be made up of dots, let's 
go! The shapes we'll be using are shown 
in Figures 4 and 3. 

Of course, it's real easy to look at these 
shapes and say, "Yup, that's ht)w they 
look," but what if you were designing an 
original game? How do you go about 
coming up with your own shapes? To start 
with, you should decide how big you want 
them to be. In making this decision, you 
should keep in mind how you're going to 
put the shapes on the screen. For exam- 
ple, anything that moves is either going 




INVADER EXPLOSION 



coarse scrolling during VBLANK. 

31500— SCRLON gets SCROLL going. 

32000-32070— PMOVE lets you move 
players and missiles around easily during 
VBLANK, which means that you don't 
have to worry about it from BASIC. 

32500-32510— this isn't a routine, but 
rather the data for the redefined charac- 
ters we'll be using in BASIC Invaders. 

Throughout the rest of the columns, 
you should make sure that these lines are 
included in any segment that uses one of 
the above routines. Do this by ENTERing 
the lines back in before or after typing 
in the segment. 

Now, after all this hassle, we're finally 
ready to start programming a game. 

Looks aren't everything 
(but they're a start) 

The first step to writing a game, obvi- 
ously, is deciding what kind of game you 
want to write and exactly how things are 
going to work in it. That's what we did 
with the flowchart. The next step is decid- 
ing how you want the game to look. 
Perhaps one of the hardest things for a 
programmer to do is design a game's 
giaphics. Notice that I said "design," not 
"program." Before all the dazzling details 
make it to the television screen, they have 
to be drawn on paper, and there aren't too 
many programmers that are also artists. 
Therefore it often takes more time to get 
the screen looking just right than it does 



you didn't think of that. That's about it, 
though, as far as the shapes are con- 
cerned. Of course, there is also the text, 
such as "SCORE" and so forth, but that's 
already been created for us. So we're left 
with a total of nine shapes that have to 
be designed. Remembering that these 

UERSION ONE 



TOP 



to be stored in characters or players; in 
which case you'll have some multiple of 
eight dots available for width and height 
(any number up to 256 for player height). 
So if you end up with a ship that's, say, 
nine dots wide, you may want to consider 
shortening it to eight, or taking advantiige 






VERSION TMO 




^M 




=S Si! 




ru hr 



MIDDLE 





!■■ ■■■■■■ ■ 


■■ 
■■ 
■■ 




■■ ■ 








■ ■ ■ ■■ 
» ■ ■■■■ ■ ■■ 




BOTTOM 





Figure 5 



A.N.A.L.O.G.COMPUTING'SEPTEMBER 1988 



9S 



Game DesignWorkshop 



LISTING 1: BASIC 



MM 188 GRAPHICS 8:? "Make sure !;ou have s 

aved a cop!^ of":? "this prograw before 
RUNning it":FOR X=l TO ie5B:NEXT K 
50 118 ? :? 
RO 128 DIM LN{8):F0R K=l TO 8 : READ DATiLN 

CX)=DAT:NEXT X 
PE 138 DATA 28^41,26,36,112,11,657,128 
OJ 148 FOR X=l TO 8 : T0T=8 ; N=8 : GOSUB 1888 
NH 158 FOR N=l TO LNCXJ:READ DAT:TOT=TOT+ 

DAT 
HP 168 IF N/250INTCN/25} THEN 198 
QP 178 T=T0T:T0T=8:READ DAT : IF DATOT THE 

M ? ". . .ERR0R":STOP 
QV 188 GOSUB 1888 
JM 198 NEXT N:READ DAT: IF DATOTOT THEN ? 

".. .ERROR"; STOP 
LM 288 NEXT X 
AJ 210 RESTORE 28888 
OU 220 FOR X=l TO 8 : L=28586+58e»X : GOSUB 1 

818 
BP 238 FOR N=l TO LN CXI: READ DAT:? CHR$(2 

7);CHRStDATJ; 
TJ 248 IF H/25=IHTCN/25J THEN READ DAT 
NF 258 IF N/98=INTCN/9e} THEN GOSUB 1828: 

L=L+18:C0SUB 1818 
RQ 268 NEXT N:READ DAT: GOSUB 1828 
MA 278 NEXT X 
OH 288 END 
LM 1888 ? :? "CHECKING LINE "; 19888+1888K 

X+18»INT CN/'25) ; : RETURN 
DJ 1818 GRAPHICS 8:P0SITI0N 2,4:? L;" MLA 

NG$=";CHR$C34) ; :RETURN 
CU 1828 ? CHR$(34);":RETURN":? "CONT":POS 

ITION e,e:POKE 84Z,13:ST0P 
UF 1838 POKE 842, 12 : RETURN 
UG 28888 DATA 184,162,228,168,95,169,6,32 

,92,228,162,228,168,98,169,7,32,92,228 

,96,2548 
OV 21888 DATA 104,184,133,287,184,133,286 

,104,133,289,104,133,208,104,178,168,2 

55,138,208,2,104,158,177,206,145,3719 
EN 21010 DATA 208,136,192,255,208,247,238 

,207,238,289,282,224,255,288,233,96,33 

40 
TH 22088 DATA 184,184,133,287,104,133,206 

,104,104,168,184,184,133,288,177,286,3 

7,288,145,286,136,192,255,288,245,3931 
VN 22818 DATA 96,96 

JJ 23880 DATA 104,104,133,204,104,133,283 
, ,184,178,169,8,168,255,224,8,208,4,104 

,168,169,0,145,203,136,192,3396 
PM 23818 DATA 255,288,249,230,204,282,224 

,255,288,234,96,2365 
'ft 24888 DATA 173,251,6,248,184,173,252,6 
I ,141,4,212,173,253,6,141,5,212,173,254 

,6,240,79,173,48,2,3327 
JV 24810 DATA 133,204,173,49,2,133,285,16 

8,3,177,284,281,65,248,61,281,1,248,52 

,41,112,281,64,144,48,3114 
IX 24820 DATA 281,88,144,42,288,173,255,6 
I ,48,18,177,284,24,216,109,254,6,145,28 
I 4,288,177,284,185,8,145,3337 
SL 24838 DATA 284,144,28,177,284,56,216,2 

37,254,6,145,284,200,177,204,233,8,145 

,204,144,2,208,288,288,288,3984 
NV 24848 DATA 189,169,0,141,254,6,141,251 

,6,76,95,228,1556 
IE 25088 DATA 184,184,178,184,168,169,6,3 

2,92,228,96,1273 
HM 26888 DATA 184,184,164,141,188,6,184,1 

84,141,228,6,141,231,6,141,234,6,141,2 

37,6,238,237,6,141,248,3235 
MO 26018 DATA 6,238,248,6,169,127,141,199 

, 6, 162, 9, 169i 4, 173, 47, 2, 41, 16, 248, 9, 16 

9,255,141,199,6,2765 
FA 26828 DATA 162,19,168,8,148,288,6,168, 

9,189,286,6,153,189,6,282,136,16,246,1 



69,7,174,248,6,168,2969 
OH 26838 DATA 108,32,92,228,96,32,238,6,1 

89,152,6,24,189,288,6,168,285,199,6,14 

4,3,172,199,6,189,2809 
BK 26040 DATA 152,6,56,237,200,6,141,201, 

6,136,177,204,200,145,204,136,240,5,20 

4,201,6,176,242,169,0,3450 
BE 26050 DATA 145,204,96,32,238,6,189,152 

, 6, 56, 237, 280, 6, 168, 176, 2, 160, 0, 189, 15 

2,6,24,189,288,6,2759 
MY 26060 DATA 141,201,6,200,177,284,136,1 

45,284,200,204,199,6,240,7,204,201,6,1 

44,239,240,237,169,0,145,3855 
TM 26070 DATA 204,96,138,72,162,4,32,238, 

6,104,170,189,168,6,56,237,288,6,168,1 

76,2,168,0,189,168,2935 
HO 26888 DATA 6,24,189,288,6,141,201,6,13 

6, 177, 284, 61, 202, 6, 145, 204, 208, 288, 189 

,202,6,73,255,49,204,3206 
OF 26090 DATA 136,136,17,204,145,204,200, 

200,204,199,6,176,7,204,201,6,144,221, 

240,219,189,202,6,49,204,3719 
UU 26100 DATA 145,204,136,189,282,6,49,28 

4,145,284,96,138,72,162,4,32,238,6,184 

,178,189,160,6,24,109,2994 
IH 26110 DATA 200,6,168,205,199,6,144,3,1 

72,199,6,189,168,6,56,237,200,6,141,20 

1,6, 288, 177, 284,61,7152 
BK 26128 DATA 282,6,145,284,136,136,189,2 

82,6,73,255,49,284,288,280,17,284,145, 

284,136,136,248,5,284,281,3699 
CO 26138 DATA 6,176,224,189,202,6,49,204, 

145,204,200,189,202,6,49,204,145,204,9 

6,189,189,6,133,284,24,3445 
GV 26140 DATA 216,173,188,6,125,194,6,133 

,285,169,8,133,77,96,162,0,188,128,6,4 

8,186,185,120,2,41,2707 
MS 26150 DATA 8,288,23,189,148,6,221,136, 

6,248,43,169,8,133,77,254,148,6,189,14 

8,6,157,8,288,268,2931 
HH 26166 DATA 28,185,128,2,41,4,288,21,16 

9,8,133,77,189,148,6,221,132,6,248,9,2 

22,148,6,189,148,2652 
MY 26170 DATA 6,157,0,288,188,128,6,185,1 

28,2,41,2,288,17,189,152,6,221,144,6,2 

48,30,254,152,6,2668 
UX 26180 DATA 32,229,6,138,16,21,185,128, 

2,41,1,288,14,189,152,6,221,148,6,248, 

6,222,152,6,32,2385 
EX 26190 DATA 226,6,232,224,4,208,148,162 

,0,189,164,6,240,83,189,168,6,248,58,1 

6,23,222,156,6,222,3182 
NF 26200 DATA 156,6,189,156,6,157,4,288,2 

81,47,176,32,169,8,157,164,6,240,53,25 

4,156,6,254,156,6,2959 
EL 26210 DATA 189,156,6,157,4,288,281,288 

,144,9,169,6,157,164,6,248,186,288,196 

,189,172,6,240,57,16,3288 
XO 26220 DATA 23,222,168,6,222,168,6,32,2 

32,6,189,160,6,201,16,176,39,169,8,157 

,164,6,248,74,254,2928 
AI 26238 DATA 160,6,254,168,6,32,235,6,18 

9,160,6,24,216,105,16,205,199,6,176,4, 

41,240,208,7,169,2838 
AX 26240 DATA 0,157,164,6,240,42,189,176, 

6,61,0,208,240,13,169,255,157,176,6,15 

7,184,6,169,0,157,2938 
NU 26250 DATA 164,6,189,180,6,61,8,288,24 

0,13,169,255,157,180,6,157,184,6,169,0 

,157,164,6,232,224,3141 
KA 26260 DATA 4,208,145,76,98,228,0,759 
NF 27000 DATA 8,0,8,8,8,0,0,0,1,3,7,13,15 

,2,5,10,128,192,224,176,248,64,168,88, 

1,1321 
MD 27010 DATA 3,7,13,15,5,8,4,128,192,224 

,176,240,160,16,32,8,4,15,29,31,23,28, 

2,16,32,1403 
PT 27020 DATA 240,184,248,232,40,64,2,20, 

23,29,31,15,4,8,64,48,232,184,248,240, 

32,16,3,15,31,2245 
CM 27030 DATA 25,31,6,9,48,192,240,248,15 

2,248,96,144,12,3,15,31,25,31,13,24,12 

,192,240,248,152,2437 
XA 27040 DATA 248,176,24,48,8,9,5,0,12,8, 

5,9,8,32,64,8,96,8,64,32,16,16,56,56,1 

24,1092 
UU 27050 DATA 124,198,198,520 



n 



SEPTEMBER 1 988 • A.N.A.L.O.G. CONFUTING 



of the other seven dots if you're going to 
use two characters or players. Things that 
won't be moving, such as the barriers in 
BASIC hivaders, will be drawn with bit- 
mapped graphics; in which case they can 
be any size you want (as long as they don't 
overlap into the part of the screen that 
has character graphics). 

Once size has been determined, the 
next step is to come up with the actual 
shape. The best way to do this is to get 
some graph paper with reasonably small 
squares, and block off a section with the 
number of squares you'll be using for the 
shape (each square represents a dot). 
Then sketch a rough version of how you 
want the shape to look within this area, 
and color in the squares that your sketch 
passes through. 

You now have your first version, with 
heavy emphasis on the word "first." This 
is the stage where somebody will look at 
your brilliantly designed alien and say, 
"Hey, nice-looking rock." Don't despair, 
now is the time to experiment by erasing 
and filling in dots until you arrive at 
something that looks good. Luckily, there 
is a limited number of possible dot com- 
binations; so you're bound to arrive at 
something that looks right sooner or later. 
Of course, erasing and filling in dots can 
be a pain in the you-know-what. The al- 
ternative is to use a character editor, 
which allows you to make these changes 
on the screen instead of on paper 

Once you get some shapes that, hope- 
fully, you're satisfied with, what's the next 
step? Are you finally ready to put your 
creations up on the screen? Not quite. The 
final step in designing the graphics is to 
decide how everything is going to be laid 
out on the screen. Again, this sounds 
rather obvious, but nothing is obvious to 
a computer Everything must be precise- 
ly specified. This step involves deciding 
where the alien saucer is going to fly, 
where the barriers will be placed, where 
the player and the score will go and how 
far across the screen the aliens and play- 
er can travel. A lot of these choices will 
have to do with the display list, which we'll 
cover later, but the basics can be decided 
upon without it. The main thing to keep 
in mind as far as the display list is con- 
cerned is that you can't have character 
graphics and bit-mapped graphics on the 
same line Other than this one restriction, 
you should lay things out in the way that 
looks best to you. Figure 6 shows the way 
we're going to do things for BASIC In- 
vaders. 

Of course, there's no reason why you 
can't change any of this to suit your own 
tastes. As a matter of fact, that's a good 



point to bring up at this stage. Nothing 
that I do here, with the exception of the 
programming techniques, has to be done 
the way it is. If you don't like my aliens, 
or if you think later that the scoring sys- 
tem should be different, or if you run 
across anything that you think can be im- 
proved, then go ahead and do it. One of 
the easiest ways to learn how things are 
done is to make changes. If you're lucky, 
then your changes won't work right away, 
and you'll have to go into the program 
more deeply to find out what's going 
wrong. I've learned more by doing this 
than by any other method; so go ahead 
and play. 

Before we get into the actual program- 
ming, there's one more think that should 
be included that I've already touched on, 
but haven't really explained. We've already 
decided that we'll use character graphics 
for the aliens, bit-mapped graphics for the 
barriers and (as it will turn out), play- 
er/missile graphics for the alien ship and 
the player's base. How exactly do we go 
about making these decisions though? Is 
there a set of criteria that we should use 
in deciding what to use for which, or can 
we just do whatever suits us? Obviously I 
wouldn't have brought it up if we could 
just choose randomly; so let's take a quick 
(because it is relatively simple) look at the 
decision process. 

Just what's on the screen! 

There are two basic types of objects on 
the screen: those that move and those that 
don't. There are three basic types of 
graphics that can be used: character, bit- 
mapped and player/missile. Each of these 
three can be used for either type of ob- 
ject, so you can see that there are a lot of 
possible combinations. Let's start with the 
objects that stay still, because they're the 
easiest. The main rule here is that if the 
object will change during the course of 
the game, as in the case of the barriers in 
Invaders, you should use bit-mapping. 
The reason is simple; it's much more 
difficult to change characters than it is to 
PLOT and DRAWTO. So when should you 
use character giaphics? Sometimes you'll 
have an object that doesn't move, but is 
nonetheless animated. Perhaps it's a 
building with a window that opens and 
closes, or a flag that waves in the breeze. 
As you'll see in the columns to come, 
this is much easier to do with character 
graphics than it is with bit-mapping. 

I said that player/missile graphics 
(PMG) could be used for nonmoving ob- 
jects as well. Why should you want to use 
a player for something that doesn't move? 
After all, the benefit of PMG is that it 



makes movement easier, right? Right, but 
it also adds some extra colors to the 
screen. And, if you're not using all four 
players, there's no reason why you can't 
have the ones you're not using sit around 
and make the screen more colorful. 

Things that move 

On to the things that move. As long as 
we're on the topic of PMG, we may as well 
start there PMG is best at moving objects 
over or under other objects. It's the easi- 
est way to move something, period. Of 
course, you are restricted to objects that 
are no more than eight dots wide, unless 
you position two or more players side by 
side. This means that PMG would not be 
of help in moving the invaders in our 
game. 

How would we move the invaders? 
Would we use bit-mapped giaphics or 
character graphics? Because they're rela- 
tively slow, bit-mapped graphics are not 
good for much more than moving a cou- 
ple of dots around, which means that the 
answer is character graphics (if it's going 
to have to move). 

Believe or not, that about covers it. 
You'll find that most games written in 
BASIC tend to rely a little too much on 
PMG for movement and bit-mapped 
graphics for nonmovement or back- 
ground. Why? Because redefining a 
character set is usually more difficult than 
PLOTting and DRAWTOing as far as the 
background is concerned, and fine- 
scrolling (which is needed for smooth 
character movement) is almost impossi- 
ble to do well from BASIC. Still, we're go- 
ing to change things a little, by giving you 
some handy machine-language routines 
that can be used just as easily as a BASIC 
statement to get fast professional-looking 
PMG and fine-scrolling. With the help of 
these routines, you should be able to 
break away from the normal and come up 
with some truly impressive looking 
games — and all of this without having to 
learn one bit of machine language. But 
we're out of time now. See you. H 



A,N,A,L,0,G.COMPUTING'SEPTEMBER 1988 




You Own an Atar 

J^hy Be Forced to Read a Magazine thai 





> 




YOUR ATARI RESOURCE CENTER 

ANALOG Computing continues to offer exciting products for you and your Atari 
Computer. And we're the only magazine for the Atari 8-bit computer line that hasn't 
allowed its content to be virtually taken over by coverage of the Atari ST. We in- 
clude only a minimal amount of ST material so that you can stay informed of what's 
happening with the 8-bit computer's brother. 



Whether you own a reliable ol' 400 or 800, a shiny XL, new XE or 
even an XE Game Machine ... we offer usable utilities, entertaining 
educational software, dynamite disk programs and great graphics 
and games. In fact, our readers still use ANALOG programs that were 

published over five years ago! 



So when software companies turn their 
heads to other computers, you can turn 
yours to the one that supports your 8-bit Atari. And 
that's ANALOG Computing. 

ANALOG'S Best! Over 88 of ANALOG Computing's best and 

most requested programs are now available on this series 

of ten diskettes. The programs are all ready to run and come with complete 

documentadon on the flip side of each floppy diskette. Select from Graphics, 

Educational, Utilities 1, Utilides 2, Disk Utilides and Games Disks 1, 2, 3, 4 

and 5. Only $9.95 each (plus $1.50 shipping per order). Specify disk dtle 

when ordering. 

Unlock the secrets of your Atari Computer! This handy 1 6-page pocket reference 

card covers information you need when programming your 8-bit. Error codes, internal 

codes, PEEK & POKE locations, machine-language aids, graphic mode specs and BASIC commands 

with abbreviations are only some of the helpful items at your fingertips. 

The ANALOG Computing Pocket Reference Card, only $7.95 each! 

(Plus $1.50 shipping and handling.) 




i 6502 Computer. 

Oevotes^SO* of Its Pages toihe Atari ST? 



An Atari 8-bit Extra. While other "Atari" 8-bit magazines just make claims on how they 

cover your machine, we come through! Over 130 pages of new, never before published 

material. Programs like Easy Type, Dragon Chase, Pastels, Display List Mod, Tactics, Trivia 

and Create-a-base are all documented and ready to type in and run. . .all for just $8.95! 

(Add SI. 50 for shipping.) 




Get the Extra on disk! This special offer for Extra owners gets you all of the programs 
in an Atari 8-bit Extra on disk. Avoid typing errors, hours of tedious typing and frustration. 
Just plug in the disk and you are ready to roll! Two, ready-to-run double-sided floppies, $24.95. 
(Disks only. Atari 8-bit Extra sold separately. Please add $1.50 for shipping.) From the 
magazine that always gives you something Extra. 
Why let your fingers do the walking when your 
Atari can do the running? Get this issue on 




disk! Every month we offer all of the pro- 
grams in ANALOG Computing on disk . . . 
ready to run. Even if you don't know 
anything about machine language or 
don't own the Action! cartridge, we 
offer programs in converted formats 
so they'll run on your Atari com- 
puter. Get this issue for just 
$12.95 (plus $1.50 
shipping). 



finflk-ClIa 



COMPUTING 



ANALOG COMPUTING OFFICIAL ORDER FORM 



Use this coupon to order the most complete up-to-date products 
specifically designed for your ATARI PC! 

ANALOG'S BEST-Graphics Disk $ 9.95 S 

ANALOG'S BEST-Educatlonal Disk S 9.95 $ 

ANALOG'S BEST-Utllltles #1 S 9.95 S 

ANALOG'S BEST-Utllltles #1 S 9.95 S 

ANALOG'S BEST-Dlsk Utilities $ 9.95 S 

ANALOG'S BEST-Games #1 S 9.95 S 

ANALOG'S BEST-Games #2 5 9.95 S 

ANALOG'S BEST-Games #3 5 9.95 $ 

ANALOG'S BEST-Games #4 5 9.95 S 

ANALOG'S BEST-Games #5 5 9.95 $ 

ANALOG COMPUTING— POCKET REFERENCE CARD. .5 7.95 5 

ANALOG COMPUTING-8-bit EXTRA S 8.95 S 

ANALOG COMPUTING-8-bit EXTRA (on disk) S24.9S S 

ANALOG MAGAZINE ON DISK (piease specify issue) SI 2.95 S 

SHIPPING AND HANDLING-add S 1 .50 for each product ordered S 

TOTAL ORDER S 

n Payment Enclosed Charge My Z VISA Z (Vlaster Card 

Card * Exp. 

Signature 

Name — 

Address 

City State Zip 

Make checl<s payable to: LFP, Inc. P.O. Box 67068, Los Angeles, CA 90067. 

Your order will arrive in 4 to 6 weei<s — WATCH FOR IT! ZiHYY 

California residents add 6.5% sales tax on all orders except back issues 




MANDLEBROT SET 

(for 8-bit) 

DELPHI GUIDE REVIEW 

AWARDWARE REVIEW