The #1 Magazine For Atari Computer Owners

0 M

Ec/mMR 1989

ISSJM 79 r-^

1 I i ' J i

Vf^^ '

WW

CGVlkAGh

'fKYklPII;

Afflli'ihlll;/

K>I;I;IIII;1K'Q

kUOU'i'ill

OOUBIE TH£ SrORAOf CAPACfmOF YOUR MfGAFKE HAffD DftfVff

THETCUCK

I

ON A COMPUTER NEAR YOU

IBM

APPLE II

MAC

C64

AMIGA

ATARI ST

SCRABBLE®

$39.99

$39.99

$39.99

$29.99

$39.99

$39.99

MONOPOLY®

$39.99

DEC

$29.99

$39.99

$39.99

RISK"

$39.99

$39.99

$39.99

$29.99

$39.99

$39.99

CLUE MASTER DETECTIVE

$39.99

$39.99

$29.99

$39.99

$39.99

Monopoly*© 1935, 1985. Produced under license from Parker Brothers, division of Tonka Corporation. Risk - © 1959, 1989. Used under license from Parker Brothers.

Clue® Master Detective - © 1988. Produced under license from Parker Brothers, division of Tonka Corporation, and Waddlngtons Games Limited.

Scrabble Licensed by Selchow and Rlghter Company, a subsidiary of Coleco Industries, Inc. Scrabble board design © 1948 Selchow & Rkjhter Company.

Distributed by:- VIRGIN MASTERTRONIC INTERNATIONAL Inc.

18001 Cowan, Irvine, California 92714 U.S.A.

Telephone (71 4) 631 -1 001 Telefax (71 4) 631 -1 004

CIRCLE #101 ON READER SERVICE CARD.

to

.Leisure Genius

EDITORIAL

FRANK COHEN

e made a very, very costly mistake," said Sam Tramiel, president of Atari Corp., when asked about Atari's purchase and eventual dumping of the Federated Group retail chain. "We are computer /consumer electronics people, not retailers. In the future, we will stay in our field only."

Tramiel's words fell on a receptive audience of Atari enthusiasts at a recent news conference on GEnie, the modem information service. Questions ranged from TOS 1.4 operating system availability to technical specifications for new Atari equipment. Missing from the news conference, however, was mention of recent events confounding Atari Corp.'s efforts to rebound from a slow year of ST sales. Late last year, Tramiel announced an end to the DRAM memory chip crisis, which was blamed for shortages of ST machinery at U.S. computer dealers. In the wake of that shortage, new production quotas and sales employees were devoted to building a healthier U.S. dealer channel and reviving the enthusiasm that had slipped away.

With many supply problems resolved, the beginning of 1989 saw a resurgence of optimism. But the year couldn't be finished without some serious setbacks for Tramiel. The American sales and marketing team of Mike Dendo (vice president, sales) and Joe Mendolia (vice president, marketing) walked off their jobs just three weeks prior to the news conference. Insiders report infighting between Dendo and other Atari executives. Lacking a sales and marketing group, how does Tramiel expect to make good on his vision of building a strong American base for Atari? Tramiel's news conference comments were short and abbreviated when discussing the Federated Group mistake. Not discussed was Tramiel's recent loss of a court case against the former top officials at Federated Group. In August, Atari Corp. was ordered to pay severance and benefits totaling about $600,000 to former Federated President Kieth Powell and former Vice President Merrill Lyons. But Atari maintains that it was duped into buying an overvalued company by Federated officials. "[The Federated] only really cost us $100 million, but we cannot look backward, only learn from the mistake and not do it again," said Tramiel. One might wonder what the American ST market would be like if the same money was pushed into advertising, marketing and product development.

With the new decade rushing up to meet us, the eyes and ears of Atariland are waiting for Tramiel to pull a white rabbit out of his hat. Tramiel has promised new equipment, dealer promotions, hardware and software improvements and overhauled marketing to make 1989 the year of the Atari resurgence. The sheer variety of Tramiel's pledges makes one wonder if any of his ideas /

will materialize. e\ : /

7

MASSAGING YOUR MEGAFILE 1 1 4

TURTLE GROOVES 1 0

Finally, a "three across" directory utility. You'll never again have the

filenames scroll off the screen.

by Matthew J. W. Ratcliff

10

E) Turtle Grooves

Keeping a marble rolling on a track made up of movable tiles is challenge

enough but how will you fare with two marbles? Three? This

commercial-quality game includes an editor for creating

your own screens.

by Greg Knauss

■» Assembler/ Editor Reference, Part 2

The complete overview of the commands and functions of the Atari

Assembler/Editor cartridge is concluded.

by Matthew J. W. Ratcliff

y> Skyriser

It ain't easy to build a skyscraper. It's even tougher when you have to

beat trie competition.

by Frank Martone

22 ACCESS to Computers

How one Atari club brings smiles to the faces of underprivileged

children.

by Tom Arterburn

24 Dialog Boxes with GFA BASIC 3.0

Part 2 of this helpful tutorial completes our discussion of this segment of

GEM programming with GFA BASIC.

by David Plorkin

Ht 34t

w Truchet Tiles

A fascinating look at a graphics system designed to portray binary data in

visual form.

by Frank Kweder

36

Software Engineering:

Development Life Cycles

Various types of software-development cycles are discussed in this

month's installment of the popular series.

by Karl E. Wiegers

114

Massaging Your Megafile

Everything you need to know to more than double the storage capacity of

your Megafile 20 hard drive.

by Gregg Anderson

122

s The DEGAS Elite Image Generator

This desk accessory communicates directly with DEGAS Elite, allowing

you to create image data files from your pictures.

by Robert Birmingham & Richard Leinecker

WHAT'S NEW IN CONSUMER ELECTRONICS 58

SYMBOL-GUIDE

|E7h| This program runs In both color and mono. ,■== , It Is available In type-In lorm & on the disk.

If F jj This program runs In color only.

.•^. It Is available In type-In form S on ihe disk.

jl ,,j| This program runs In mono only.

,;=a It Is available In type-In lorm & on Ihe disk.

F=a This program runs In both color and mono. b=J It Is available only on the disk.

(Ho Image) This article does not have an associated program.

I This program runs In color only. 1 It Is available only on the disk.

I This program runs In mono only. I It Is available only on the disk.

This program runs on 8-bit Ataris

33 HiSoft BASIC by Ian Chadwick

72 The ST Gameshelf

This month, Lost Dutchman Mine, Battle Chess, World Karate Championship, Renegade and Thunder Blade. by Peter A. Smith, Frank Eva and Steve Panak

80 Summer Games by Matthew J. W. Ratcliff

30 Database DELPHI by Michael A. Banks

44 The End User by Arthur Leyenberger

|?7mI 48 C-manship fc=s by Clayton Walnum

50 Personal Publisher by Donovan Vicha

52 lan's Quest by Ian Chadwick

1 00 From Over the Big Water by Marshal M. Rosenthal

1 06 The Compukid Connection by D. A. Brumleve

I 1 8 Boot Camp by Frank Cohen

00 120 BASIC Training ,1=^.1 by Clayton Walnum

DEPARTMENTS

3 Editorial by Frank Cohen

6 Reader Comment

8 News Clips

111 M/L Editor by Clayton Walnum

1 26 Disk Contents

1 28 Footnotes by Karl E. Wiegers

1 30 ST Gossip From Hollywood byTG

ANALOG

COMPUTING

STAFF

Publisher

LEE H. PAPPAS

Executive Editor

CLAYTON WALNUM

Art Director

LEW BRYANT

Associate Editor

ANDY EDDY

Managing Editor

DEAN BRIERLY East Coast Editor

ARTHUR LEYENBERGER

West Coast Editor

CHARLES F. JOHNSON

Contributing Editors

MICHAEL BANKS, FRANK COHEN, MATTHEW J. W.. RATCLIFF

D.A.BRUMLEVE, IAN CHADWICK,

FRANK COHEN, MAURICE MOLYNEAUX,

STEVE PANAK, MARSHAL M. ROSENTHAL,

GEORGE L. SMYTH

Cover Photography

GARRY BROD

Illustrations

DALE CORY

STEPHEN STERLING

CATHY KOSTREBA

Cover Illustration

MAURICE MOLYNEAUX

Copy Chief

SARAH WEINBERG Copy Editor

ALYSON GOULD

Editorial Assistants

PATRICIA KOURY

CATRINA MASON

ROBIN THOMPSON

Chief Yypographer

DAVID BUCHANAN

Typographers

B. MIRO JR.

QUITA SAXON

LIGAYA RAFAEL

LARRY GANNON

Vice President, Production

DONNA HAHNER

Production Assistant

STEVE HOPKINS

Advertising Production Director

JANICE ROSENBLUM

Advertising Production Coordinator

MAGGIE CHUN National Advertising Director

JAY EISENBERG

(213) 467-2266

(For regional numbers, see right)

Subscriptions Director

IRENE GRADSTEIN

Analog Computing Published By L.F.R.lnc.

President

JIM KOHLS

Vice President, Sales

JAMES GUSTAFSON

Vice President, Client Relations

VINCE DELMONTE

Corporate Director of Advertising

PAULA THORNTON

Corporate Editorial

TIM CON AWAY

DECEMBER 1989 ISSUE 79

Where to Write

All submissions should be sent to: ANALOG Computing, P.O. Box 1413-M.O., Manchester, CT 06040-1413. 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 regarding subscriptions, in- cluding problems and changes of address, should be sent to: ANALOG Computing, P.O. Box 16927, North Hollywood, CA 91615. or call (8!"o> 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

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 reproduced 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.

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

In addition, any programs used must suite that they are taken from ANALOG Computing Maga- zine. For more information, contact ANALOG Computing at (213) 858-7100, ext. 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, $54-two years, $76-three years. Foreign: Add $10 per year. For disk subscriptions, see the cards at the back of this issue. . ,

Authors

When 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.

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

ANALOG Computing (ISSN 0744-9917) is published monthly by L.F.P., Inc., 9171 Wilshire Blvd., Suite 300, Beverly Hills, CA 90210. © 1989 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 whole 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 $10 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.

EADER OMMENT

A Thank-You

Every so often there are comments in print about the poor support many software publishers provide for their products. I would like to take this opportunity to sin- gle out two companies for their excellent v product support. They are ISD Marketing for Calamus and VersaSoft for dBMAN V.

I had been having problems with differ- ent functions of both products. After con- tacting both companies about the problems, both supplied me with updated versions of their programs. The only charge was post- age, which is more than reasonable.

I live in a remote area of Alaska that is accessible only by air travel for most of the year. The nearest Atari dealer, Far North Atari, is 180 miles southeast in Fairbanks and is an excellent source of help. But they cannot be expected to provide software sup- port. Having companies like ISD and Versa- Soft makes it more enjoyable owning a computer.

—Ken Springer Bettles, AK

Users' Groups, Where Art Thou?

Would it be possible for ANALOG Computing to periodically (even monthly?) publish a listing of Atari users' groups and bulletin board systems. Such a listing would serve as a directory to help put Atari "loners" in touch with other users in their areas while also giving users' groups and BBSs the exposure they need to attract new members.

—Edward Brown Indianapolis, IN

ANALOG Computing used to carry such a listing, and we think it might be a good idea to start it again. However, such a list- ing is possible only for users ' groups; BBSs are started and discontinued so often that any listing we could print would be woe- fully out of date by the time it got to you. If you have an Atari users ' group, send the name of the group along with the address to which people should write for informa- tion to: ANALOG Computing, Users' Group Listing, P.O. Box 1413-M.O., Man- chester, CT 06040-1413. Make sure you tell us whether you 're an 8-bit or ST group.

DVT vs. ICD

This letter is in reference to Frank Co- hen's article on the World of Atari Show at Disneyland from the September '89 issue of ST-LOG. First, I would like to point out that the ICD FA-ST Tape Backup does not use "audiotapes." While our data cassette uses the same type of "Phillips compact cassette" shell used by audiotapes, the me- dia and hardware inside the shell are very different.

Frank's comparison of our ICD FA-ST Tape Backup system to the Seymor/Radix DVT also incorrectly leads people to believe that the DVT is faster than the ICD prod- uct. In spite of the claims made in their flyer, DVT is now said to make backups at 300K per minute, about one-third the speed originally advertised. That makes the ICD FA-ST Tape system about 2,000% faster. —Tom D. Harker, President ICD, Inc.

Converter Problems

The Ultimate Graphics File Convenor (ANALOG Computing, May '89) listing was printed incorrectly. When I unscram- bled the listing and typed it in, the program got confused when trying to load Newsroom files and also when going from Graphics 8 to Newsroom. Please talk to Dr. Brilliant and have this program corrected, since it seems to be a very useful utility.

—Dave Faxon Kingston, NH

The Doc Replies

Yes, indeed, there are problems with UGFC. The problem arose because I had a disk failure just before I finished the pro- gram. I thought I had reconstructed the pro- gram, but in fact I had used an earlier version, which was written to be used only with a specific Newsroom picture file. The lines below correct the problems. Load the original UGFC program and delete lines 5050 to 5130 and line 6015. Then enter the lines below and resave the program.

—Lee Brilliant, M.D. Granada Hills, CA

631 IF T0=4 AND C0LR-C0LL>247 THEN COL R=C0LR-1

632 RETURN

681 IF T0=4 AND C0LR-C0LL>247 THEM COL L=C0LL+1

682 RETURN

5058 C011NT=(N~1)/32:G05UB lBBJGO'iUB 13

828 t? M6;CHRS(125)

5060 DIRS (11 ="♦": DIRS 176801 ="*" I DIRS (2

>=DIR$: GOSUB 10000

5070 G0SUB 180: IF X=255 THEN 5280

5080 L0=X: GOSUB 1 80 : HI = S : GO SUB 180 i OFF

=X

5898 SECT2=SECT : BYTE2=BYTE ! SECT=L0+256

*HI:BYTE=0FF+1:IF BYTE>128 THEN BYTE=1

:SECT=SECT+1

5180 GOSUB 10800: GOSUB 188:R0UT=X:G0SU

B 180 :R0M8=X: GOSUB IBB : COLL -X I GOSUB 18

8!C0LR=X

5110 C=INT ( (C0LR-C0LL1 /8 J < I : R=R0WB~R0M

T+l : ADrADR (DIRS1 : SIEE=:C*R : C0UHT=8 ! RCOU

NT=8 : OFF=4O*(R0HT-l) +INT (COLL/8)

5115 0FF1=0FF

5128 5TART=AD+0FF:TERMINATE=8: GOSUB 38

0 : SHIFT=COLL-INT (COLL/8) *8 : IF SHIFT=8

THEN 5125

5122 FOR N=l TO SHIFT: A=U5R (ADR tRORS) ,

ADR (DIRS), 7688): NEXT N

5125 A=USR (ADR (0RA$) , ADR (DIRS) , PEEK (88

3 +256*PEEK(89) , 7680)

5130 SECT=SECT2:BYTE=BYTE2:G0T0 5888

5200 IF MlFS (BYTE; BYTElOCHRS (255) THE

N 5080

3005 A=U5R (ADR (HOWES) , ADR (CURSORS) , 153

6, LEH (CURSORS) > ! A=USR (1560, 0, 8, 191,247

%'"

9818 D=4 : FLAG=8 : C0LL=8 i R0WT=B : C0LR=247

:R0HB=19i:POKE 764, 33: GOSUB 588

9142 D=C0LL-8:IF B<8 THEM C0LR=C0LR~Di

C0LL=8

Magniwriler Appreciation

Wow! This is great! Thanks so much. ST Writer was already my favorite word proces- sor. Now you give me large print, too!

I am partially sighted, with about 4% of normal vision, if such a thing can be quan- tified. My optic nerve did not develop, or was partially destroyed, due to a high fever I had as an infant. To a normally sighted person, I imagine that my vision would seem to be like looking through the wrong end of a powerful telescope. Everything is small.

The Atari ST and your Magniwriter of- fer visually impaired people a low-cost al- ternative to other large-print computer- writing approaches, and may even help many to become more self-sufficient employment wise. Thanks very much.

—Sam Wells Glendale, CA

Sam, we are absolutely delighted that we've been able to provide you and other visually impaired Atari users with a pro- gram to make your word-processing tasks easier. Thanks for writing.

ALL LETTERS TO BE

CONSIDERED FOR PUBLICATION

SHOULD BE ADDRESSED TO:

ANALOG, READER COMMENT

P.O. BOX 1413-M.O. MANCHESTER, CT 06040-1413

DECEMBER A.N.A.L.O.Q. Computing

8

I-*

by Matthew J.W. RatcliH

DlR3 is a three-across directory listing utility for all Atari-compatible disk operating sys- tems, including SpartaDOS X— the super DOS in a cartridge from ICD.

It is frustrating to list the directory of a disk, only to have the most important files scroll off the top of the display. For this rea- son, by using DIR3, three filenames may be listed across the Atari 38-column display, with the standard left margin set at the sec- ond column. There isn't room, however, for the file size or for the indicator (an asterisk) for a write-protected or locked file. If a file is protected, the first character of the name will be listed in reverse video. File size will remain a mystery, however. If this data is necessary, use your DOS's standard directory listing command.

When first loaded from DOS, DIR3 will display the default directory search specifi- er. You will be prompted for the drive num- ber with the current default shown in square brackets. Type the desired drive number and press Return, or type Escape twice and Re- turn to exit the program. Press only Return to accept the current drive number. You will then be prompted for a "search specifica- tion." Enter the template specification for the files you are interested in seeing (such as " * .BAS" for all BASIC programs). Do not type a drive specifier at this prompt. The drive number has already been set and will be merged with the specification. Press only Return to keep the default, displayed at the top of the screen.

If you would like a hard copy of the direc- tory on the printer, answer yes to the next prompt by typing an uppercase or lowercase "Y" and pressing Return. Any other input is assumed to be "no." The directory will be listed to the display and to the printer if this option is enabled.

The filenames are formatted into three fields, neatly outlined by Atari's graphic characters for the display. Printer output uses

normal printable ASCII characters, since the graphic characters would garble the hard copy.

DIR3 keeps track of how many lines it has output. If any filenames are about to scroll off the top of the display, you are prompted to press Return to continue or Escape to exit. The escape key will send control back to DOS without clearing the screen. (Some DOSs always clear the screen after a machine-language program has executed, however.) The return key will allow the DIR3 list to continue until another scroll prompt is necessary or the end of the directory is reached. This prompt is displayed after the complete disk directory has been listed. At this point, pressing Return will restart DIR3 with the previous settings as defaults. Press Escape to exit to DOS. Note that the scroll prompt is not presented if the printer has been enabled.

DIR3 is especially well suited to Sparta- DOS X users, since this DOS can handle up to 1,400 files in a single directory. Because DIR3 will put 66 files on the screen before scrolling, Atari DOS users may list an entire disk to a single display. Most Atari-compat- ible DOSs have a limitation of 64 files per disk, b

Matthew J.W. Ratcliff is an electrical engineer at McDonnell Aircraft in St. Louis, Missouri. An experienced assembly lan- guage, C and Ada programmer on IBM and main-frame computers, he still enjoys de- veloping new programs and articles for the 8-bit Atari home computer. He has been an Atari enthusiast since 1982.

(PROGRAM LISTINGS CONTINUED ON PAGE 84)

DIR3 is especially well

suited to

SpartaDOS X

users, since this

DOS can handle

up to 1,400 files

in a single

directory.

Because DIR3

will put 66 files

on the screen

before scrolling,

Atari DOS users

may list an entire

disk to a single

display.

DECEMBER A.IM.A.L.O.Q. Computing

Atari Donation

Atari Corp. recently donated a complete Mega ST4 desktop-publishing system to Recording for the Blind (RFB), an organiza- tion that records books to tape for listening by the visually impaired. The system is used to aid RFB in keeping track of their many volunteer activities. The photo shows Jack Tramiel explaining the new system to Joanne Sweet, the RFB studio director. The shelves in the background are filled with book- recording projects in progress.

CIRCLE #131 ON READER SERVICE CARD.

VOICE DEVELOPMENT SYSTEM

■'■'■■ :"' ■■:■■■■--'-'"; ■■■ ■■■■■■■:■:;:: ' ' "^ :

Thursday, September 14, 1989

7IJ

wmaimi wmsEM ranmBja MEma KsaEM mmtdi fflMMsm mamai bmhi BMnara, n'iwiui BHusoa iHaiBa Ksraa 'tssDMa!

nnmrnnnrann

Suit

GO -GO ST

Music Software

Musicode has announced the release of its Kl-VDS voice-development system, a com- bination editor, librarian and sequencer designed for use with the Kawai Kl instru- ments. Features of this integrated package in- clude quick displays, click-and-drag graphic envelope editing and organization of your patches into libraries and banks with sorting and filtering.

The sequencer is available from any point in the program, and new patches may be edit- ed while the sequencer is running. The se- quencer supports standard MIDI files for exchange of data between different MIDI systems.

Using eight edit buffers, the user may edit, randomize and mix patches. Patches may also be swapped between libraries and banks. All the program's functions may be accessed with the mouse or from the keyboard. The Kl-VDS sells for $89.

Musicode

5575 Baltimore Drive, Suite 105-127

La Mesa, CA 92042

(619) 469-7194

CIRCLE #130 ON READER SERVICE CARD.

Atari Go-Go

Maxwell CPU has started shipping their new ST program, Go-Go ST, which allows you to run any program with a single click of the mouse. Programs in a program list are displayed in the Go-Go window as buttons. Several program lists may be created and saved with one of them auto-loading at boot- up. Also available when using Go-Go is a special "log" file that lets you keep track of how much time you've spent with each pro- gram, convenient for client-billing purposes. Go-Go ST is priced at $34.95.

Also available from Maxwell CPU is the MegSTender, a keyboard extension cord for the Mega ST line that comes in 6-, 8-, 12- and 25-foot lengths. Prices range from $16.95 to $24.95.

Maxwell CPU

507 W. Baseline

Lafayette, CO 80026

(303) 665-4849

CIRCLE #133 ON READER SERVICE CARD.

DECEMBER A.IM.A.L.O.Q. Computing

Tractor Tape

If you're getting tired of single-item feed- ing on your printer when you want to print such things as checks, business cards and envelopes, you might want to take a look at a new product from ProExcel, Inc. Their Tractor Tape can be attached to the sides of the items you wish to print, allowing them easy transport through your printer. Accord- ing to ProExcel, the tape is safe and will not damage your print material. Better still, the tape is reusable. Using the same adhesive found on 3M's Post-It notes, Tractor Tape comes in 25-foot, % -inch-wide rolls and fits most regular tape dispensers. The price is only $4.95 per roll.

ProExcel, Inc.

P.O. Box 15236

Lakewood, CO 80215

(800) 748-3935

CIRCLE #132 ON READER SERVICE CARD.

New Release From Psygnosis

From the guys who brought you Menace, a previous Psygnosis release, comes Blood Money, which, according to the manufac- turer, "plunges you into a maelstrom of de- struction that burns out your monitor with graphics in stunning colors, assaults your ears with the most exciting sampled soundtrack you've ever heard and challenges all your game-playing skills in ways you've never even dreamt possible." Blood Money has a two- player cooperative mode and involves using strategy as well as arcade action as you try to get through four alien-safari missions. Each planet features its own graphics. You can embark on this safari for about $45.

Psygnosis Limited

Century Buildings

Tower Street

Liverpool L3 4BJ

England

CIRCLE #129 ON READER SERVICE CARD.

liliLLHJaiLlMHPl LM>M«lil3SEEIESlfe=

DECEMBER A.IM.A.L.O.G. CompuCing

A

GAME

O F

STEADY

PANIC

BY GREG KNAUSS

^rom the title sc *'le **for

Press H to ,oad We ^es *& Sl5^ffl°Use b«-

y°" Want *>d Press £ ^^ set- Use the ^ y0Ur °*°

fCONrihlllmL. 1

I

^^^^.o,

BY MATTHEW J. W. RATCLIFF

I

I

I

I

I

I

II

/EDITOR REFERENCE, PART II

Debugging

Your assembly language programs are bound to have some bugs. Luckily, Asm/Ed provides a method for testing assembled ob- ject code. When at the Asm/Ed EDIT prompt, type BUG and press Return. You'll be presented with the DEBUG prompt.

The debugger uses short one- or two- letter commands, some followed by an op- tional hexadecimal address. Below is a com- plete list of the commands.

X— Exit from the debugger.

DR— Display the contents of the 6502 registers:

OR

A=BB X=10 Y=20 P=B0 5=0F

A is the accumulator, X and Y are the in- dex registers, P is the processor status reg-

ister (which includes the carry flag, zero flag, etc.) and S is the stack pointer.

CR— Change the contents of any of the 6502 registers.

The specified values are stored in the registers in the same order the registers are displayed by the DR command. In the above example, the accumulator is unchanged, the X register receives a 1, the Y register a 2, the status register remains unchanged and the stack pointer is adjusted to DE.

D— Display memory.

"D3000,0" displays memory location $3000. When the second parameter is less than or equal to the first, only one location is shown. "D3000,3010" displays memory from locations $3000 through $3010. En-

ter D by itself, and the next eight locations (in this case, $3011 through $3018) will be displayed. If only the second parameter is omitted, a default of eight memory locations is displayed:

03000

3000 10 40 20 22 34 11 12 FE

Note that the output of the debugger is always in hexadecimal. All input address- es and register values must be specified in hex as well.

C— Change memory.

C3B34<21,23,,2E

The command itself is immediately fol- lowed by the starting hexadecimal address to change. The values to be placed in mem- ory, starting at the first location, are sepa- rated by commas. Two consecutive commas

•###••<

DECEMBER A.N.A.L.O.Q. Computing

8

IF YOU DO NOT

KNOW THE ABSOLUTE ADDRESS OF A

NEEDED LABEL, THEN YOU SHOULD GO

BACK TO THE SOURCE CODE, MAKE THE

CHANGES THERE AND REASSEMBLE.

tell the debugger to skip over that memory location, leaving it unchanged. In the above example, memory location $3034 receives $21, $3035 receives $23 and $3037 gets $2E. M— Move memory.

Moeee<G7oe,e8ee

The above tells the debugger to move memory from locations $0700 through $0800 to memory beginning at location $0600. The destination address ($0600 in this case) must be less than the first source address ($0700) or greater than the ending source address ($0800). If the source and destination areas of memory overlap, you may get unexpected results.

V— Compare two blocks of memory (verify).

< ^ "'■-%■■'

You might, for example, use this to com- pare two slightly different versions of the same program to see where something has changed.

V7880<7188,7123

The above command tells the debugger to compare memory from $7100 through $7123 to memory at $7000. Any memory lo- cations that do not match are shown side by side:

U780B<7180,7i23 7181 08 7881 21

In the above comparison, all memory from $7100 through $7123 matched memo- ry from $7000 through $7023, except at one

:- .

DECEMBER A.IM.A.L..O.Q. Computing

_8_

THE A S S E M B L E R / E O I T O R REFERENCE, PART 2

location. Memory location $7101 contained a $0, while $7001 contained a $21.

L— List memory with disassembly.

The "L" command is one of Asm/Ed's most powerful. It can be used to disassem- ble your operating system ROM (beginning at $C000) to see what some of the routines look like. It can be used to disassemble ob- ject files loaded into memory to see how they work. Here are some examples:

L7000— List memory with disassembly (as many lines that will fit on the screen) beginning at $7000.

L— List memory with disassembly start- ing at the next location (picking up where the previous L command left off).

L7000,0 or L7000,7000-List and disas- semble $7000 only.

L2300,2400— List and disassemble mem- ory from $2300 through $2400.

When the debugger comes across data that cannot be disassembled (such as data tables or strings, for example), it will print a series of question marks. Otherwise, the data is shown in hexadecimal, as well as in its equivalent assembly mnemonic form:

L.5008,08 A9 8 A LDA tt$8A

A— Assemble a single instruction.

This comes in handy when you want to test a small patch to a program. Simply type A and press return to get into the single- line assembly mode. You must first speci- fy an address, followed by a less-than character (<) and the assembly instruction. To assemble to successive memory loca- tions, subsequent entries require only the less-than character followed by the assem- bly instructions. For example:

SOONER OR LATER,

YOU'LL GET TIRED OF

USR ROUTINES

(MOSTLY BECAUSE

THEY ARE SO

DIFFICULT TO DEBUG).

5B0KLDY $1234 50O1 AC3412 <INY 5004 CB

In the above example, we have assembled LDY $1234 and INY into consecutive mem- ory, starting at $5001. Note that here your assembly instructions must use the dollar sign to indicate hexadecimal. Press Return on an empty line to exit the mini-assembler. You cannot refer to labels in the program, since the debugger doesn't keep track of them. If you do not know the absolute ad- dress of a needed label, then you should go back to the source code, make the changes there and reassemble.

G— Execute instructions beginning at a particular address.

Type the letter "G" followed by the first execution address. The program will con- tinue to run until the system crashes, you press the break key, or a BRK (break) in- struction is executed.

T-TRACE.

Type the letter "T" followed by the ad- dress at which to begin execution. The in- struction will be executed, immediately followed by a dump of the instruction (list a single line with disassembly) and the CPU registers. This continues until a BRK in- struction is executed or you press the break key.

S— Step singly through instructions.

Sometimes you need to test a single in- struction at a time. The debugger's step command is used for this task. Enter "S" followed by the address to begin execution. The effects are the same as the TRACE command, except the debugger stops exe- cution after each assembly instruction. Type "S" and Return repeatedly to continue single-stepping through the program.

X— Exit the debugger and return to Asm/Ed's editor.

Error Codes

The error codes between 128 and 255 are the same as those in your Atari BASIC reference manual. These are generally in- put/output errors associated with CIO (cen- tral input/output) utility operations, the heart of your Atari's operating system.

There are 19 other error codes that you may encounter while assembling or debugging your programs:

1— The memory available is insufficient for the program to be assembled.

2— For the command "DEL xx,yy," the line number xx cannot be found.

3— There is an error in specifying an ad- dress (mini-assembler).

4— The file named cannot be loaded (wrong file format).

5— Undefined label reference (you prob- ably misspelled a label in your program).

6— Error in syntax of a statement (miss- ing operand or misspelled assembly mnemonic).

7— Label defined more than once.

8— Buffer overflow. (I'm not certain what this means.)

9— There is no label or"*" before "=". (An equals sign was found in the first field of a line of code. All equals signs must be preceded by either a valid label or an asterisk.)

10— The value of an expression is greater than 255 where only one byte was required, (e.g. , LDA #LABEL, where label is an ad- dress of some memory location greater than 255).

11— A null string has been used where invalid.

12— The address or address type specified is incorrect (e.g., LDA (PGZRO),Y would result in this assembly error if the label PGZRO was not an address of a memory location less than 256).

13— Phase error. An inconsistent result has been found from pass 1 to pass 2 (e.g., two bytes were reserved for some label on the first pass, but on the second pass only one byte was needed. This is avoided by minimizing forward references and by defin- ing all known labels at the top of the file before any assembly code. You will get this error a lot as you learn the language).

14— Undefined forward reference (e.g., misspelled label or reference to a label not defined).

15— Line is too large.

16— Assembler does not recognize the source statement.

17— The line number is too large (32767 is maximum).

18— LOMEM command was attempted after other command(s) or instruction(s). LOMEM, if used, must be the first com- mand after entering the Asm/Ed editor.

19— There is no starting address (e.g., you forgot the " * " directive at the top of your program).

DECEMBER A.N.A.L.O.Q. Computing

THE ASSEMBLER/EDITOR REFERENCE, PART 2

8

B\-\

IF YOU DIDN'T PAY MUCH ATTENTION TO ANALOG'S "MASTER

MEMORY MAP"

SERIES, I STRONGLY

RECOMMEND THAT

YOU GO BACK AND

READ IT.

Expressions

The assembler can perform many useful computations for you. The operators recog- nized and the operations they perform are as follows:

+ Addition

- Subtraction * Multiplication

/ Division

& Logical and

Expressions may not contain parentheses, and they are always evaluated left to right. (There is no precedence placed on opera- tors.) Some examples follow:

100

STORAGE = $4000

110

*= STORAGE + SlO

200

JMP START+20

300

LDA ttSTORAGE&SOFF

310

LDX ttSTORAGE/SiOO

320

LDA «3*15

USR Routines

The USR command of Atari BASIC al- lows you to call assembly language routines. These routines can perform special func- tions to vastly improve the performance of BASIC. For example, assembly USR rou- tines may be implemented for Player/Mis- sile graphics movement, sort algorithms or high-speed disk I/O functions.

Assembly code won't normally be load- ed as part of your BASIC program. It must be loaded using a routine in BASIC, plac- ing the data values into strings or POKE- ing it into safe RAM, for example. You may place up to 256 bytes of assembly code into Page 6 (beginning at memory location 1536). If you do not use the cassette (C:), up to 128 bytes of code can go into Page 4 (beginning at memory location 1024), the cassette buffer. If your code is "position in- dependent" (relocatable), it may be loaded

into a BASIC string.

What is position-independent assembly code? Such a program may have no JMP or JSR instructions (with the exception of JSRs to ROM addresses that are guaranteed not to move). So how do you implement loops? Use branch instructions. If your code gets much larger than 256 bytes, writing position-independent code can be difficult. The largest routine I've ever written of this type was 410 bytes long. You may also "relocate" your code. This requires a fore- knowledge of all the JMP and JSR instruc- tions in your code. You may then load the object code into a string, determine its start- ing address, and then POKE adjusted ad- dress values in for all the JMP and JSR instructions. This is no small task and is sel- dom used. Generally, your USR routines will be fairly small and can be written in a position-independent manner.

The format of a BASIC USR command is:

A=USR(ADRIPARAM1,PARAM2,PARAM3)

The first parameter, ADR, is the starting address of the assembly code you wish to execute. The values following are parameters that are passed to the assembly code on the system stack after being con- verted to integers. The variable A takes on an integer from memory locations $D4 and $D5 (low byte, high byte). This is how you return a value to BASIC.

Let's write a USR routine to add two in- tegers and return the result. Our BASIC program might look like this:

10 TRAP 1000

20 OPEN tti,4,0,"D:MYU5R.0BJ":

REM Our USR code in a file

30 TRAP 70

40 FOR 1=1 TO 6: GET 111, A: NEXT

I: REM Ignore 6-byte load hea der of file 50 1=1536: REM usr routine was

assembled for Page 6

60 GET »i,A:P0KE I, A : 1=1+1 : GO

TO 60:REM End of file error w

ill terMinate our entry of th

e progran

70 CLOSE «1

80 PRINT-INPUT NUMBER 1 ";:IN

PUT Nl

90 IF N1<0 OR Ni>65535 THEN ?

"OUT 0FRANGE":GOTO 80 100 PRINT "INPUT NUMBER 2 "J : INPUT H2

110 IF N2<00R N2>65535-N1 THE N ? "OUT OF RANGE":G0T0 100 120 SUM = USRC1536, Nl, N2 ) 130 PRINT "NUMBER "jNlj" PLUS

";N2j" EQUALS ";SUM 140 END

10O0 PRINT "COULD NOT FIND US R ROUTINE FILE" 1010 PRINT "MYUSR.OBJ" 1020 END

Now we need to write an assembly lan- guage program with Asm/Ed that imple- ments this USR routine. It will accept parameters Nl and N2 off the stack (two two-byte integers), add them, and return the result to SUM through memory locations $D4 and $D5. Our code might appear as shown in Listing 1.

Enter this program with Asm/Ed and ex- ecute the instructions in the first two com- ment lines. When you get an assembly with no errors, your file D:MYUSROBJ should be ready to test with the BASIC program.

Work at this until it performs as expect- ed. As you become more adept at writing USR routines, you may wish to develop util- ities for converting .OBJ files into a series of BASIC DATA statements, so you can simply READ and POKE them without us- ing messy file I/O to initialize the USR rou- tine. It takes a relatively long time to install USR routines by poking them into memo- ry or strings, but once in place, they exe- cute amazingly fast.

You will find that USR routines are dif- ficult to debug since you need to initialize and call them from BASIC. If you mess up the stack or some other operation, the com- puter usually crashes inexplicably. It isn't easy to debug USR routines from DEBUG, because you will have to write sophisticat- ed test routines to stuff all sorts of test values on the stack.

Stand-Alone Assembly

Sooner or later, you'll get tired of USR routines (mostly because they are so diffi- cult to debug). When you do, it is time to take the plunge into writing a stand-alone assembly language program. Then you will get into the complexities of keyboard input, screen output, disk I/O and printer output from the Asm/Ed environment. Complete libraries of routines, such as a "graphics package" that performs the equivalent of BASIC'S GRAPHICS, COLOR, PLOT and DRAWTO, will become a necessity. This is where ANALOG'S Boot Camp series will help the most. In the months to come you will learn everything from keyboard input to floating-point processing, all from the as- sembly language level.

As an example of a stand-alone assem- bly language program, and an illustration of its raw speed, we present the following demonstration. First, type this BASIC pro- gram and run it. While it executes (if will take about 12 minutes), read the remainder of this article to see how the same functions can be performed in assembly language:

DECEMBER A.IM.A.L..O.Q. Computing

8

THE ASSEMBLER/EDITOR REFERENCE, PART

18 DINDEX=88:REM Screen RAM p ointer

28 SCREEN=PEEKCDINDEX)+256«PE

EK(DIHI>EX + 1)

38 FOR X=8 TO 255

48 A=X

58 FOR V=8 TO 255

68 POKE 5CREEN+Y,A

78 NEXT Y

88 NEXT X

At location DINDEX is a two-byte "pointer." Memory locations 88 and 89 hold the address of the beginning of screen RAM. The equation in line 20 calculates the variable SCREEN, which we use as a direct pointer for the POKE in line 60. In our assembly language equivalent of the above program, this problem is even easi- er to solve. (This is seldom the case, how- ever; most things are harder to do in assembly language. This demonstration is designed specifically to show the strengths and speed of assembly language.)

Next, two loops are set up. The inner Y loop is used to POKE the current value of X into the first 256 screen RAM locations. You will see these characters fill the top por- tion of your display. All ATASCII values from zero through 255 are POKEd, with the help of the X loop. The variable A was used simply for a more symmetrical comparison with the assembly code to follow.

Let this BASIC program run to comple- tion. Time it carefully. When you finally get the READY prompt, reboot your computer with Asm/Ed and enter this equivalent as- sembly language program:

Public Domain Software

#57 - Tease Me Adult Animation (Color Only)

#393/394/533 - PrintMaster Graphics

#400 - 7 Disk Labeling Programs (w/100 Labels $6.95)

#443 Intersect RAM Baby (RAM Disk/Print Spooler)

#475 - Werty's House of Horror (Adult Game, Color)

#500/600 - Publishing Partner Fonts

#511 - Dungeon Master Maps for Levels 1-7

#512 - Dungeon Master Hints/Character

#555 - The Assistant Chef - Electronic Cookbook

#557 - Children's Programs (Color Only)

#567/728 - Accessories

#575 - Sheet V2.0 - Shareware Spreadsheet

#588 - Pac Man, Hangman and 5 others (Color Only)

#599 - PageStream Fonts, Font Converter

#655 - ST Writer V3.0 w/Spell V2.8

#690 - Opus V2.10 GEM Spreadsheet (1 Meg/DBL)

Introductory Offer - Above Disks Just

$2.99 Each

ST Xformer Cable $19.95

Run 8 Bit programs on your ST! Use 5 1/4" or 3 1/2" Disks. Loads & Runs protected disks. Receive the latest version of ST Xformer FREE with purchase of cable when you mention this ad.

Call or Write for FREE Catalog (800) 347-6760

BRE Software Dept.STL 352 W. Bedford, Suite 104 Fresno, CA 93711

Customer Service (209) 432-3072 Shipping $2.50 Ground / $4,00 2nd Day Air

8 ;LI5T8Di screen. asm

1 ; ASM, ,8Di SCREEN. OBJ

2 *=$3408

3 RUNAD=$2E8

18 dindex = 88 } Screen RAM

pointer

28 ; He don't have to compute

SCREEN; we use post indexed addressing

38 START LDX 88 ; Initialize variables for loops 48 LDV 88

58 STORE TXA ; Place sere en character into A register 68 PUTIT STA (DINDEX) ,Y ; Pla ce character on screen 78 INV ; Next scree n location 88 BNE PUTIT •, V register

"wraps around" to zero after

255 98 INK

188 BNE STORE 118 RTS trol to DOS 128 *= RUNAD 138 .H0RDSTART

NEXT X Return con

So we can l

oad and run fron DOS

Now execute the two commands in the first two comment lines at the top of the list- ing. If you get no assembly errors, you will have a file SCREEN.OBJ that is ready to load and run. Go to DOS and execute a bi- nary load of the file SCREEN.OBJ. It will run immediately after loading and return control back to DOS after performing all 65,536 "POKES" of characters to screen memory. Did you catch it? You probably didn't if you blinked. This version of the program takes barely a second to run! If you want to watch the show for a while and exit to DOS when a key is pressed, for exam- ple, modify your program as follows:

15 CH = "

764

i

Keyboard buf

fer

101

LDA

8255

102

CMP

CH

I

keypressed?

183

BEG

START

/

Nope,

loop

184

STA

CH

t

Yes,

clear o

ut key buffer

and exit

to DOS

List this version to disk and reassemble it. When loaded from DOS, it will POKE all those ATASCII patterns to the screen continuously until you press a key on the keyboard. To randomize the show, make these changes:

16

RANDOM = 53778 ;

Always

a randoM

number here

58

STORE

68

PUTIT

LDA RANDOM ;

Get a r

andon fi

11 character

61

STA

CDINDEX),Y ;

Place c

haracter

on screen/PX

CIRCLE #1 03 ON READER SERVICE CARD.

Notice how I always added a meaningful label for each important memory location. Avoid the use of code, such as LDA 53770. The proper use of labels makes it much eas-

ier to see exactly what your program does and how it does it.

If you didn't pay much attention to ANALOG'S "Master Memory Map" se- ries, I strongly recommend that you go back and read it. Even if you do not understand it all, you will learn a lot. A good memory map is the key to unleashing all the power of your computer. As a 6502 assembly lan- guage reference manual, I use 6502 Assem- bly Language Programming by Leventhal. This is a general reference for the 6502 microprocessor and does not have any specifics on the Atari computer. It does de- tail all the 6502 assembly mnemonics and provides examples of multiply, divide and other useful routines.

When you find that Asm/Ed is too slow to suit your tastes as you build larger and more sophisticated programs, consider up- grading to MAC/65 (sold by ICD). This macro assembler supports the use of INCLUDE files, allowing you to easily im- port "canned" routines that have already been debugged. Its MACRO capabilities al- low you to define high-level constructs that vastly simplify the development of assem- bly programs. With a good MACRO library (such as the MAC/65 Toolkit from ICD or QuickCode from Stardust Software), your assembly source code will resemble BASIC or some other high-level language while re- taining all the power and speed of pure as- sembly language. MAC/65 is the fastest native 6502 assembler I have ever used, bar none. (Mad Mac for the Atari ST will as- semble 6502 code at a speed that blows the doors off MAC/65; but that's a whole new ball game.)

Welcome to the fast and complicated world of assembly language programming. I hope this guide will inspire you to put that inexpensive Asm/Ed cartridge to work on all those fantastic ideas that the old faithful Atari BASIC could never handle. «

Matthew J.W. Ratcliffis an electrical en- gineer at McDonnell Aircraft in St. Louis, Missouri. An experienced assembly lan- guage, C and Ada programmer on IBM and main frame computers, he still enjoys de- veloping new programs and articles for the 8 bit Atari home computer. He has been an Atari enthusiast since 1982.

01-K

1

S K Y K I S E *

UUtttmn.",

St

I

Welcome to the mad building game of Skyriser, a two-player game that requires two joysticks and fast reflexes. The object is to be the first person to successfully construct a skyscraper to the top of the screen, and al- though that may not sound too challenging, you and your competitor must watch out for dangerous flying planes and explosions.

At the beginning of the game, each player is given a building, a purple one for player 1 and a white one for player 2. Inside a box located at the center top of the screen, several symbols flash on and off in a random pattern. The actions these symbols represent may be good or bad. The symbols are:

* An up arrow

* A down arrow

* A bomb

* A question mark

To activate a symbol, press the joystick but- ton. If you push your button when the up ar- row is displayed, your building will get higher. If you push the button when the ar- row is facing down, your building will shrink. If you happen to push the button when the bomb symbol is shown, you will lose your entire building. Pushing your button on a question mark can cause two different ac- tions. If the question mark just flashes, you've avoided any action. But most of the time, it will cause an airplane to zip across the screen. If your building is too high, the plane will hit it, and you'll lose your entire build- ing. There are times when you get lucky, of course, and the plane passes overhead, just missing your building.

The plane can affect only the building of the person who made the mistake of pushing on a question mark. Your opponent's build- ing is not affected.

The first building to reach the top of the screen wins. (It is possible to tie.)

■EaJK'tJIrl 1 EERE

<4>

II

1

1

|

Bggl

I

1

1

1

l

Skyriser includes a difficulty feature. The harder levels offer more rapidly changing symbols. There are three levels to choose from: easy, intermediate and hard. Use your joystick to move the flashing cursor to your selection and push the joystick button. I recommend easy for children, intermediate for the average adult and hard for people with a real competitive spirit, m

Frank Martone is 20 years old and has an associate degree in liberal arts from Suffolk Community College in Selden, New York. He plans to obtain a B.A. in advertising.

(CONTINUED ON PAGE 20)

Complete ATA P

12 ISSUES ONLY $28

INTRODUCING

ANALOG'S NEW

EXTENDED

FORMAT?

128 FACT-FILLED PAGES

BRINGING YOU THE

LATEST FROM BOTH THE

WORLD'S OF 8-BIT

AND ST! FIN ALLY, ONE

PUBLICATION GIVING

YOU THE COMPLETE

ATARI COVERAGE

YOU NEED!

tlNPk-OG

COMPUTING

P.O. Box 16927 North Hollywood CA 91615

12 Issues $28

CDKYY

GET THE NEW ANALOG COMPUTING ON DISK!

12 ISSUES OF ANALOG COMPUTING WITH 8-BIT DISK-ONLY $79! cdkyy

12 ISSUES OF ANALOG COMPUTING WITH ST DISK-ONLY $79! cdkyw

NAME

address

CITY

STATE

TIP

PAYMENT ENCLOSED

D BILL ME

CHARGE MY VESA

UMC

#

FXP

SIGNATURE

MONEY BACK ON UNUSED PORTIONS OF SUBSCRIPTIONS IF NOT SATISFIED! FOREIGN- ADD $10. MAKE CHECKS PAYABLE TO LFP, INC. YOUR FIRST ISSUE WILL ARRIVE IN 6 TO 8 WEEKS. WATCH FOR IT! OFFER EXPIRES FEBRUARY 28, 1 990

8

IT

S K Y B I S £ R

!

SO

LISTING I: BASIC

AE 10 REM XMMlOOtXICXXXXXXXXXKXXXXXXMXXXX

PE 20 REM * 5KYRI5ER5 *

YL 30 REM * by *

AM 40 REM * Frank Martone *

FW 50 REM * *

BS 60 REM * COPYRIGHT 1989 *

YQ 70 REM * BY ANALOG COMPUTING *

AL 80 REM XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

BG 90 REM

OF 100 GOTO 490

DJ 110 XX=4:TI=0:P1H=21:P2H=21:P1W=0:P2H=

8:TIE=8:B00M=8 SPOKE 710,101:POKE 711,1

4 ZF 120 SOUND i,8,0,0:TI=TI+i:IF TI>TD THE

N GOSUB 430 KG 130 POSITION 6,P1H:? »6; "B" ! POSITION 1

3,P2H:? «6;"Qm:poke 77,o:sound 0,0,0,0

RI 140 IF »X=3 AND STRIGC0)=O AND STRIGC1

)=0 THEN BOOM=liGOSUB 300 BX 150 IF XX=3 AND STRIGC1)=0 THEN GOSUB

370

:8 THEN GOSUB

THEN P1H=P1 2:S0UND 8,P1H+

QI 168 IF XX=3 AND STRIGC0)

300 ZG 170 IF STRIGC0)=O AND XX=i

H-1SF0R D=15 TO 0 STEP

58, 10, D." NEXT D DG 180 IF STRIGCO)=0 AND XX=2 THEN POSITI

ON 6,P1H:? «6; P1H=P1H+1!F0R D=15 T

0 0 STEP -l-.SOUND 8, D+90, 10, D ! NEXT D EB 190 IF P1H>21 THEN POSITION 6,P1H:? US

;"H,,:P1H=P1H-1 MS 200 IF P2H>21 THEN POSITION 13,P2H:? U

6;"B":P2H=P2H-l

EZ 210 IF STRIGC11=0 AND XX=1 THEN P2H=P2

H-liFOR D=15 TO 0 STEP -2IS0UND 0,P2H+

50,10,DiNEXT D OJ 220 IF STRIGti)<>0 OR XX<>2 THEN 230 YD 225 POSITION 13,P2Hi? «6; P2H=P2H+1

!FOR D=15 TO 0 STEP -liSOUND 0, D+90, 10

,D:NEXT Di GOSUB 430 LS 238 IF P1H=3 AND P2H=3 THEN TIE=1:G0T0 1940

LV 240 IF P1H=3 THEN P1H=1:G0T0 1940 NA 250 IF P2H=3 THEN P2W=1:G0T0 1940 EM 260 IF XX=4 AND STRIGCO)=0 THEN GOSUB

750 IM 270 IF XX=4 AND STRIGC1)=0 THEN GOSUB

860 MT 280 GOTO 120 IY 290 REM ****PLAYER 1 BUILDING DESTROYE

DXKXX UB 300 FOR D=15 TO 8 STEP -i:POKE 708, D+4

0: SOUND 0,D*444,8,D:SOUND 1,100, 8, DiNE

XT D: SOUND 1,8,8,8 MH 318 FOR R=P1H TO 21: POSITION 6,R:? »6;

"l": POSITION 6,R:? tt6;M0":FOR D=l TO 5

iSOUND 8,D,8,DiNEXT D

BS 320 POSITION 6,R:? tt6j" "SPOKE 788, RND

CO)*10+50:IF R<8 THEN POSITION 6,R:? tt 6...,„

HA 338 NEXT RiSOUND 8,8,8,8

MH 340 P1H=21:P0KE 708,137 : POSITION 6,22:

? »6;,,B":IF B00M=1 THEN GOTO 370 IP 350 BOOM=0: RETURN JN 360 REM ****PLAYER 2 BUILDING DESTROYE

1/ JC X Jt'Jt1

UP 370 FOR D=15 TO 8 STEP -UPOKE 708, D+4

0:SOUND 0,DW444,8,D:S0UND 1,100,0, DiNE

XT D:S0UND 1,8,0,8 UE 380 FOR R=P2H TO 21: POSITION 13,R:? »6

J'-l-'SPOSITION 13, RS? «6;"6":F0R D=l TO 5:50UND 0,D,8,D:NEXT D LE 390 POSITION 13, R:? tt6j" ":P0KE 708, RN

DC03»10+5Q:IF R<8 THEN POSITION 13, R:? »6;" !" GU 400 NEXT R:SOUND 0,0,8,8 MR 418 P2H=21:P0KE 708,137 UR 420 POSITION 13,22:? tt6; "f\" i B00M=8 : RET

URN QD 430 XX=INT(RNDC0)*4)+l:P0SITI0N 18,4:?

86;" " BJ 440 IF XX=1 THEN POSITION 10,4:? 86jMX

DI 450 IF XX=2 THEN POSITION 10,4:? 86j"& ii

(CONTINUED ON PAGE 91)

2D

DECEMBER A.N.A.L.O.G. Computing

Increase your publishing

power.

Migraph Hand Scanner"

Add scanned graphics to all your projects quickly and easily with the Migraph Hand Scanner.

The Hand Scanner provides a scanning window over 4" wide with four scanning resolutions: 100, 200, and true 300 and 400 dots per inch. It also offers adjustable contrast, three dither settings for scanning halftones, and a special setting for line art.

Build your own library of images. Logos, photographs, books, illustrations . . . provide you with an unlimited supply of art.

Touch-Up,™ Migraph's high resolution image editor, lets you scan and edit your images. Powerful editing tools include crop, invert, resize, flip, cut and paste, multiple zoom levels, a full array of paint tools, and much more.

When your images are "pixel perfect", import them into your favorite ST publishing programs like Calamus, Fleet Street, PageStream, and Publisher ST. In addition, several

save formats let you use your images on the PC and Mac.

The Migraph Hand Scanner and Touch-Up. Powerful tools for professional publishing.

See your dealer today for more details or call us direct. Dealer inquiries invited.

For all Atari ST and Mega systems with monochrome or color monitors, 1 MB memory and 3.5" DS disk drive.

A

*$Qp

^viiGimph;

200 S. 333rd St., Suite 220 Federal Way, WA 98003 (206)838-4677 (800) 223-3729 (Pacific Standard Time)

c Copyright 1989 Migraph. Inc The Migraph logo is a registered trademark and Touch- Up is a trademark ol Migraph. Inc

CIRCLE #105 ON READER SERVICE CARD.

J often look down at my Atari and won-

I der where I would be today if I had had

I access to a computer at a younger age.

I What if, instead of faithfully watching

| Leave It To Beaver every day after school, I could have explored the countless adventures contained in a personal computer?

It disturbs me to think of the time I wasted during my younger years sitting on the living- room floor, hunchbacked and stupefied while sitcom after sitcom blinked in front of my face.

Today I think of my computer as an exten- sion of my personality. Where my computer is located, how it is set up, how it is main- tained, the software I prefer and, of course, the seemingly endless amount of stored in- formation all say something about who I am.

There is a computer club in my area that shared some of these ideas with a group of underprivileged children during a computer symposium the group held at a local meet- ing hall.

Giving up time with their families, not to mention time they could have devoted to themselves, the members of ACCESS (Atari Computer Club East Side Scene) ventured into the rain one early November morning with a mission in mind: Shielding their com- puters from the rain, they trekked to the Fair- view Heights, 111., city hall to conduct the second annual Big Brothers/Big Sisters Com- puter Symposium, a program the youth or- ganization's officials applauded.

ACCESS President Tom Guelker told me the purpose of the symposium was to give the children participating in the BB/BS program in his club's area a chance to learn something about the machines that will influence them so much in the future.

Interviewing him in the basement of his home in Collinsville, 111. , I started to identi- fy with what he thought his Atari computer could do for an underprivileged child.

"I want to steer these kids toward the good way of life, get them on the right track. A computer can get their brains working a lit- tle bit as opposed to a television set that they'll just sit and stare at all day."

I asked Guelker what made him get in- volved with the BB/BS organization and found that he had a genuine interest in the

development of our youngsters, especially those who are disadvantaged.

"I've always had a soft spot in my heart for disadvantaged children," Guelker said. "They really have a challenge ahead of them. It makes it even worse when they're missing a parent, as with these kids. With the finan- cial difficulties experienced by many single parents, many of these kids won't have the chance to actually own a computer. And if they don't have some exposure to computers by the time they get to high school, they will be at more of a disadvantage."

Expanding on the use of computers in to- day's high schools was John Sullivan, an 18-year-old member of ACCESS. In telling me about himself, he offered some interest- ing thoughts on the importance of computer knowledge in high school.

"I use my 800 a lot for writing reports," Sullivan said initially. He said having his own computer gave him the extra time at home to complete his classwork, much of which in- volved computers.

"It's important to know how to use them because you can do so many things on them if you put your mind to it. It's just mathe- matics."

Sullivan, who plans to attend pilot train- ing school after graduation, said the kids who are not computer literate have a rough time in high school.

"When I took computer math, which is just basic programming, there were a lot of kids who took it because they needed a computer credit and they really had a rough time. The same went for an English class I took that required basic computer skills; the same kids were having problems."

Sullivan said his school uses computers in accounting, drafting, math, English and, of course, data processing.

It's obvious basic computer skills are some- thing every high school student can benefit from. But according to Barbara Cempura, ex- ecutive director of the Southern Illinois Big Brothers and Big Sisters organization, her members, who range in age from seven to 14, can benefit from computer training right now.

"It's a very positive experience when a young person can sit down to learn a new kind of skill and is able to achieve some suc-

cess with it. I think that builds self- confidence and gives the youngster a certain sense of control. Being able to do something, and seeing that there is a positive reaction from someone, gives them the encourage- ment to continue," Cempura said. "This was a very special type of activity for the kids. Generally, our activities include baseball games, art museums, etc. We do try to do things that are educational as well as recrea- tional, but they are always designed for them to have fun."

Cempura told me that this particular out- ing, and others like it, is geared specifical- ly for the children without Big Brother or Big Sister companions. She explained that there are many children who fall into this category.

"Right now we have about 140 kids in our area without big brothers or sisters," Cem- pura said. "I really appreciate the fact that [ACCESS] came to us first and asked if they could do something like this. I was really im- pressed that they brought all their computers to the meeting area, set them up and then took the time to do some training with the youngsters. The time, the giving of them- selves and the sharing of their talents was greatly appreciated."

Like Cempura said, many of the kids in- volved in the Big Brothers/Big Sisters pro- gram, although at an obvious disadvantage with only one parent, at least have the ad- vantage of sharing a few hours a week with their Big Brother or Sister; however, the chil- dren in attendance at the seminar were even more unfortunate because they had yet to be matched with a companion.

Research has shown that although not all children from single-parent homes need a big brother or sister, they are more likely to have problems with their self image and confi- dence. They tend to experience trouble in school, loneliness and low aspirations for the future. The interest and care shown by com- panionship have been proven to raise self- esteem and confidence in the child's earlier years.

What can a computer do for an under- privileged child? I'm neither a computer wiz- ard nor a psychologist, but it seems to me, after listening to the children and the mem- bers of ACCESS describe the symposium, the

DECEMBER A.IM.A.L.O.Q. Computing

computers came to reflect the children's own personality. They made the computers do what they wanted them to do. Whether it be acting out aggression in a harmless yet mayhem-ridden video program or expressing their feelings with the help of a speech syn- thesizer program, the children, whether they knew it or not, exhibited self-expression, one of the most important aspects of child de- velopment.

According to Paula Cobb, coordinator for the Best St. Louis BB/BS office, who accom- panied the children to the symposium, it was very helpful to them.

"I thought they loved it. They were very enthusiastic. The one thing that impressed me was their attention span. The children were very interested in the computers and kept their attention on them most of the time we were there," Cobb said.

Admitting that she didn't know a great deal about computers, Cobb said she was certain the hand-eye coordination skills necessary in playing some of the computer games were helpful to the children.

"One game the kids loved that really seemed challenging was the karate (Karate- ka) program. I remember the guys in partic- ular liked this game. For a while it seemed to be the only thing being played," Cobb said. "There were also some educational programs the kids worked with, which seemed benefi- cial. The word games and some of the art- work and graphics they worked with really seemed to help them express themselves."

Keeping in mind the symposium was be- ing conducted by a computer users' group, not trained child-development instructors, Cobb's next remarks were complimentary.

"I thought the ACCESS group showed great patience and kindness in demonstrat- ing to each of the children how to operate the computers. I think the kids will remember that."

When asked about his knowledge of child development and his objectives in organiz- ing the seminar, Tom Guelker, the automo- bile mechanic from Collinsville, 111., and president of ACCESS, came clean and described some of his hidden motives for holding the training session.

"Since I became president of ACCESS in

DECEMBER A.N.A.L.Q.Q. Computing

BY TOM ARTERBURN

Atari Computer East Side Scene (A.C.G.E.S.S.) paves the way for underprivileged children to learn more about Atari computers

1986, I've always thought community involve- ment and community relations something I wanted our group to get involved in," Guelk- er said. "It allows people to learn more about our group and computer enthusiasts in gener-

{CONTINUED ON PAGE 1 13;

Using Dialog Boxes with GFA BASIC 3.0, Part 2

by David Plot kin

GFA BASIC 3.0 comes with an RCS, but unless I missed something, it doesn't come with any instructions on how to use it. Most of it is fair- ly intuitive, but I want to cover the most important aspects of its use so that you will understand how I built the sample dia- log box.

Figure 1 shows the RCS. You will notice two main areas: the icons on the left side of the working window and the icons across the bottom. These have been numbered. I will discuss each one briefly, starting with the icons on the left side, which are used to modify the objects' appearances and at- tributes. To select one of these items, click on it and a box will open, showing your options:

1. Modifies the background color. If the color is set to white, no pattern will show, regardless of what is chosen in 2.

2. Modifies the background pattern.

3. Modifies the text color.

4. Modifies the text size (two sizes are available) and text writing mode (replace, transparent, etc.).

5. Sets the alignment for text (within a box-type object) and objects within the di- alog box (centered, left aligned, bottom, etc.).

6. Sets flags and states. As mentioned last month, the flags are EXIT, EDITABLE and SELECTABLE. The states select such at- tributes as SHADOWED, OUTLINED and CHECKED.

7. Sets the border color for box-type objects.

8. Sets the thickness of borders for box- type objects.

The Dialog Box Objects

Across the bottom of the screen are the dialog box objects (numbered nine through 19). To move an object into the dialog box, click and drag the appropriate item from the bottom of the screen into its position in the dialog box. To modify the object with the icons at the left side of the screen, you must click on the object to select it, then select the icon you want to use to modify the ob- ject. Objects can have their size modified by clicking on the object to select it, then clicking and dragging to the new size the

dark box in the lower-left corner of the ob- ject. An object can be moved within the di- alog box by clicking on it to select it, then dragging the object to its new position.

Objects with strings or single characters in them can have their text modified by double-clicking on them to open a dialog box for input. Editable text fields can have all their fields set (template, validation and initial string) by double-clicking on them to open a dialog box. One bug I've discov- ered is that if you've modified a G Text-

or G Boxtext-type object and then go to

modify a G_FTEXT or G_FBOXTEXT (editable) object, the first two fields (tem- plate and validation) are missing from the dialog box. To work around this, you must close the dialog box you are working on (use the Close item under the File menu), then reopen it.

The 11 objects at the bottom of the screen are somewhat bewildering, but many of the objects are identical except for the default setting of the Type item under the Options menu. Object types can be changed by selecting the Type item; the choices are shown below:

9. Button— This is a G Button-type ob- ject. The Type item presents two options: String (no border) and Button (has a border).

10. String— This is a G_Button-type ob- ject, identical to 9.

11. Edit— This can be one of four differ- ent object types, depending on the Type item selection. If you select Text, you get

a G TEXT-type object (noneditable). If

you select Boxtext, you get a G_BOXTEXT-type object (noneditable with a border). If you select Ftext, you get a G_FTEXT (editable) object, and if you select Fboxtext, you get a G_FBOXTEXT- type object (editable with a border).

12. Identical to 11.

13. This object can take on one of three object types, depending on the Type item selection. If you select I-Box, you get an object of type G IBOX (box with invisi- ble interior). If you select Box, you get an object of type G BOX. Finally, if you se- lect Boxchar, you get an object with type G BOXCHAR (box with a single charac- ter inside).

14. This object is identical to 13.

15. Text— This object is identical to 11.

16. This object is identical to 13.

17. Boxtext— This object is identical to 11.

18. This object is an icon. No icon editor is included with the RCS; however, you can import icons from other sources by using the Load item under the Options menu.

19. This object is a bit image. No bit- image editor is included with the RCS; how- ever, you can import bit images from other sources by using the Load item under the Options menu.

You should notice that one of the things you can set for each object is the object's name. While this is optional, you should do it for an important reason. Under the Global menu there is an item called Output. Click- ing on this item brings up a dialog box where you can choose to have the RCS write out a GFA .LST file, which can be merged into your program. This file equates varia- bles to the numbers assigned to each ob- ject by the RCS. It is obviously much easier to refer to the object in your program by name, rather than by number. However, the .LST file uses the names you gave the ob- jects as the variable name, so you should name each object (and don't use spaces in the names). To see an example of this, check out the procedure Initialize in the sample listing. The comments were modi- fied to note what each field is used for (the RCS doesn't provide very informative com- ments as part of the .LST file).

Using the Dialog Box

Now that we've gotten all that out of the way, it's time to see exactly how to retrieve information from editable fields, exit but- tons, radio buttons, up/down buttons and sliders. We'll look at each section of the ac- companying listing.

The first line of the program dimensions two arrays for the two sets of radio buttons. As we'll see later, it is much simpler to use radio buttons if the object values of the ra- dio buttons are contained in arrays. The next line calls the procedure that sets up the sim- ple menu at the top of the screen and is fol- lowed by a line that calls the procedure to initialize the variables. The bulk of the procedure Initialize is the modified listing

DECEMBER A.N.A.L.O.Q. Computing

file written out by the RCS, as described above. The last part of this procedure places the object values for the radio buttons into their arrays. Notice that the variable values set earlier in Initialize are used here.

The next line calls the procedure to open a window, clear it and give it a title. Now we are ready to load our resource file, which is accomplished by the procedure Id resource. In this procedure, we first re- serve some memory for the resource file:

RESERVE PRE COJ- 30000

Then we use RSRC_LOAD to attempt to load the resource file called BENEFITS.RSC. If we are successful, we proceed, but if not (the value returned is zero), we give back the memory and end the program:

IF RSRC-L0RD("BEHEF1TS.RSC")=8

ALERT 3,"Resource file not found", 1," STOP ", ax

RESERVE F!(EC0)t300GO

EDIT EHDIF

The next task is to determine the address of the resource and place that address into the variable adr%:

~RSRC .. i,ni)l)R [0, 0, adrx)

Finally, we need to find out the width of the box that contains the "importance" slid- er, less the width of the slider itself. This number will be used in calculating the new position of the slider when it is dragged by the user:

Didthx=OB_UCadrX, inparentX)- 0B_H(adrX, IMPSLIDES1

Returning to the first portion of the pro- gram, the last lines of the main program simply tell GFA to jump to the procedure respond menu when a menu item is

selected and then enters a loop to test for a menu selection. Since there are three menu items, there are three main parts to

procedure respond menu. The first

responds when the user clicks on the "Di- alog Tutorial" item under the Desk menu and simply puts up an alert box. The last one responds when the user clicks on

"Quit" by jumping to procedure pgm end.

This procedure gets rid of the resource, recovers memory, closes the window and returns to the editor.

It is the second menu item, "Add Info," which puts the dialog box into motion. In

show resource, the centered coordinates

of the dialog itself are calculated by a call to FORM_CENTER. The GET command is used to store a copy of what is on the screen where the dialog box will be drawn. This will be used later to restore the screen after we are done with the dialog box. The next five lines use the CHAR command to place an empty string in each editable field. You could just as easily place a non-empty string in each field to initialize it, but again, be careful not to try to put in a string that is too long. Remember that since these are editable fields, you must use the double braces with CHAR.

The next two lines set the number of de- pendents, depnumfc, equal to zero and then

place that number in the boxed text field designed for that purpose. The number depnum % is first converted to a string with $TR$, then placed in the text field using CHAR with only a single set of braces. Next we stuff the number 50 into the slid- er and set its starting position. The exact steps used here will be discussed in more detail in the section on sliders. The FORM__DIAL command with a parameter of one draws an expanding box on the screen, and OBJC_DRAW puts the dialog box on the screen.

The Repeat/Until loop drives the whole process. The first line of the loop uses FORM^DO to tell AES to handle the dia- log box. The FORM_DO command returns the number of the exit object on which the user clicked, and depending on that value, we want to take different actions.

DECEMBER A.IM.A.L.O.O. Computing

ST

USING DIALOG BOXES WITH G F A BASIC 3

PART 3

FIGURE 1

Desk File Global Edit Options Hierarchy

Desk File Global Edit Options Hierarchy

t

R8WSK HMfltS

Hanei

Address: City: ^

State: Zip

Nunber of Children

-1 1 \*\

Inportance of Plan:

- pfBWJffl jnm 1 1

Hedical Plan TTaTinrTTirTlfTTinTI

Dental Plan

main man

FIGURE 2 1

The Up and Down Buttons

When we click on the "+" or "-" but- tons for the number of dependents, we want the number displayed in the center box to change. The dialog box can't handle this on its own; we must exit the dialog box, ad- just the number and reenter the dialog box. For this reason, these two buttons are "touchexit" buttons. As discussed previous- ly, when you click on a touchexit object, the dialog box is exited immediately, with- out waiting for the button to be released.

In our sample program, the dialog box is entered (FORM^fO), and if the "+" button is selected, the depnumJo variable is incremented. A test is made to ensure that the variable is within legal limits, and it is adjusted if it isn't. The new value of

depnum% is placed back into the box:

CHARCOB-SPECtadl-X, depnbrslS!) =STR$Cdepnunx)

And the box is redrawn to show the new number:

•-OBJCDRAW Cadrx, depnbrsU,

Note that although we exited the dialog box as soon as the touchexit button was clicked, the dialog box was still visible on the screen because we never erased it. Once we are done processing the button, we reenter the dialog box by reexecuting the F07?M__DO command within the repeat loop. One of the side effects of using a touchexit button here is that the numbers

will change as long as the user holds down the left button.

The previous section illustrates one of the things that confuses people who are programming their own dialog boxes for the first time. From the user point of view (which is what they have been up till now), everything appears to be handled by the di- alog box, when in fact, a great deal is be- ing handled by the program itself.

The next eight lines of the program han- dle the case where the user selected the "-" button.

Sliders

Sliders are interesting and useful con- structs, so we'll cover them next. The first thing you need to know is that the slider box itself is a touchexit object. When the user clicks on it, the dialog box is exited. How do you get the effect of dragging the slider around inside the larger box? This is done with the AES function GRAF_SLE>EBOX. This function allows the user to drag a child object (the slider box is a child of the box it resides in) inside a parent object. When the user releases the mouse button, GRAF_SLIDEBOX returns the new posi- tion of the child object. Let's illustrate. First, we'll call GRAF_SLIDEBOX:

si iderposx=GRAF_SUDEBOX (adrx, inparents, inpslideft, 61

The first parameter is the dialog box ad- dress; the next one is the object number of the parent object, followed by the object number of the child object and then a flag. If the flag is zero, the user can drag the child around inside the parent on a horizontal axis (left and right). If the flag is one, then the user can drag the child around inside the parent on a vertical axis (up and down). The function returns the position of the child ob- ject (slider) inside the parent object and is always a number from 0 (left or up) to 1,000 (right or down).

The next step is to convert the returned number (0-1,000) to the new X coordinate of the slider:

neupos^uidthx/iflOOMsliderposr.

Thus, we get a ratio of the actual width of the parent object, less the width of the child object (defined as width %) to the max- imum range:

widthx/lflBB

This number is then multiplied by the ac- tual slider position (sliderposfc). For ex- ample, if the width is 200 and the returned position was 500 (halfway to 1,000), then the new position of the slider relative to the

DECEMBER A.IM.A.L.O.Q. Computing

ST

USING DIALOG BOXES WITH GFA BASIC

O , PART

parent object would be 100 or exactly half- way across, just as you'd expect.

Then, we use OB_X to set the new coor- dinates of the slider:

0B_X(adrx, inpsl ideS)=neuposx

Now we need to convert the new slider position, as given by sliderpos% (which can vary from 0-1,000), to a number in our range (0-100). This is simple:

mport^sliderposX/lQ

We then put this new number back into the slider:

CHAR COB-SPEC (adrx, inpslideS)} =STRSCinportZ)

The "+" and "-" buttons associated with the "importance" slider work some- what similarly to the slider, except that GRAF_SLIDEBOX\f> not required. These buttons are again touchexit, as were the but- tons for the number of dependents. Once the user clicks on one of these buttons, the program takes over. In the case of clicking on "-", a certain amount is subtracted from the slider position:

SUB sliderposx,10

The number subtracted should be no less than the total range (1,000) divided by your total range (100 in this example). If the num- ber is smaller than this ratio (ten, in case you can't find your calculator) then the slid- er number won't change every time you click on the "+" or "-" buttons. This is because, as noted above, we divide the new slider position by ten before we put the number back into the slider. We again test to make sure that sliderpos % hasn't moved outside the legal range, correct it if it has, then calculate the new slider positic

newposK=widthx/10OO*sliderpos;< 0B_XCadrx, inpsl ide$)=neuposx

Does this look familiar? It should; it's the same equation used for the slider. Finally, we use exactly the same steps as with the slider to position the slider, calculate the new value and place it in the slider box. It is then redrawn to show the new value with OBJC__DRAW.

The next 13 lines of the listing handle the case of the user clicking on the "+" button.

It's Okay to Quit

When the user clicks on the OK button,

the procedure hndl ok takes over. The first

line calls FORM-DIAL again, this time with the first parameter of two, to create the shrinking rectangle. The screen is then re- stored with PUT. The next order of busi- ness is to return the OK button back to the

nonselected state:

~0BJC_CHANGE(adrX, exit_objz, 0, xv., yx,ux, \\y., 0, 0)

Note that we are not bothering to redraw the button in its new state (last parameter is zero) because the dialog box is no longer on the screen. We now recover the data that was entered into the edit fields using state- ments such as:

nnS=CHAR(C0B_SPECUdrx, naneS)))

Remember that since we are using edita- ble fields, we must use the form of the CHAR command with two sets of braces. Once we have recovered the information into strings, we print them on the screen.

Don't Touch That Dial!

Now we are ready to handle the two sets of radio buttons. We'll need a variable to hold which radio button was selected, so we zero that variable out first. We'll do the three "medical" radio buttons first, so we need to step through them and test each one to see if it was selected:

FOR cnt&=l to 3

Remember that in Initialize, we placed the values of the radio button objects into the array medrbtn&. Thus, medrbtn&(l) contains the value of the "Plan A" radio but- ton (which happens to be 9). In order to find the state of the "Plan A" radio button, we need to use the OB STATE function:

0B_STflTECadrx,nedrbtn& Cents))

Here medrbtn&(cnt&) contains the suc- cessive values of the medical radio buttons as the FOR loop is executed successive times. To find out if the selected state of a radio button has been set (and thus that ra- dio button is the one selected; remember, only one radio button in a set can be select- ed at a time), we use the function BTST, which checks to see if a particular bit is set. In our case, we want to see if bit 0 is set (because bit 0 is the selected state, as not- ed last month in the section on states):

IF BTST C0B_SThTE CadrK, nedrbtnS CctnS) 1 , 0)

select«=nedrbtnS CctnS) ENDIF

iar, except for one thing. Note how the second-to-last parameter in the OBJC_CHANGE function is 32. Previous- ly, we had used zero. We are changing the object state to 32 because the radio buttons in this dialog box are shadowed, which is state= 32. Thus, 32 is what we must change them back to in order to turn off the select- ed state. If we Had changed them back to 0, we would lose the shadowing.

The next 16 lines of code in the sample listing perform the same task for the dental plan buttons, except that there are only two of them. Finally, the last four lines of the program recover the number of dependents from the box and the importance of the plans from the slider and print them on the screen,

Some Closing Thoughts

The dialog box used in this program was quite complex in order to illustrate the many things you can do with a dialog box. Most of your dialog boxes will be simpler, since you won't need everything (editable fields, text, buttons, radio button, sliders and up/down buttons) in one box. And, although this article has been long, the actual expla- nation of how the dialog box works was quite short.

Finally, you will notice that the sample dialog box doesn't actually do anything use- ful. This was deliberate. The program is al- ready long enough without adding the necessary code to make it useful too. Ob- vious extensions would be to store the num- bers and editable text fields in an array, so that the data would not simply be thrown away when you clicked on OK. Additional buttons such as "Next" or "Previous" could let you move through the database, recover- ing the contents of each field from the ar- rays and placing them into the dialog box Fields before drawing the dialog box.

Now that you know how to use dialog boxes with GFA BASIC, let's see some GFA programs that use these handy GEM devices. After all, it's the right way to get information from the user.

Next, we want to see which radio button was selected and handle the results ac- cordingly:

IF selectSOO ! a radio button was selected "so retrieve the text of the radio button neds=CHflRCOB_SPECCCadrK, selects)) PRINT "Medical plan selected: ";ned$ change the radio button back to nonselected -OBJC-CHflNGECadrX, selects, 0, XX, UX.UZ, hz, 32, 0)

PRIHT "No nedical plan uas selected" EMDIF

This section of code should look famil-

David Plotkin is a chemical engineer cur- rently working as a data analyst for the Hu- man Resources department of the Chevron Corporation. He has had an Atari since 1980.

DECEMBER A.M.A.L.O.Q. Computing

'^mr-*mw*amr*mm*'*mr*mr.^^*amj^mimm*im4i^^^^mtmmi^mM^^^mammmmmm t^m ^fi iiMi^f ^— ii— ■—— i^ i^^^«a^^^^^^>Mfc,WMfc'WB*^Mfc'^^,^M^'»w^<M^'^*^<»>^^*i»i^*^^wfc.'^M>tf?*>t^iMfc-''

ave Swr $^Vf ?he/4v^i4Sr i^S&SgQlft

-/ A

ALL COLOR ISSUES

T o^LYsiaes

■S5***

4 GAME REVIEWS

1 \arc\ade, ac\ti gju

^ S T^R A T E G Y G U l\p E S

tIeCHN IC~/U R I PORTS

T"C 0 iVI f U Tit SOFTWARE

Yes!

UideoOames

And Computer Entertainment Magniine

P.O. BOX 16927, N. HOLLYWOOD, CA 91615

LJ I CO! Sign me up for 12 issues for only $19.95— I'll save over $15!

Payment Enclosed Charge My VISA MC NAME

EXP_

SIGNATURE.

ADDRESS_ CITY

STATE.

ZIP.

Your first issue will arrive in 6 to 8 weeks. Money back on unused subscriptions if not satisfied! WATCH FOR IT!! Foreign add $7 for postage. offer expires February 14,1990

Attention Programmers

SEND YOUR PROGRAMS

AND ARTICLES TO: ANALOG COMPUTING

P.O. BOX1413-M.O., MANCHESTER, CT 06040-1413

NEED

RELY ON TURBO ST!

Turbo ST turns your Atari ST into a speed demon. Check out Turbo ST at your local dealer or download our free demo from your favorite bulletin board. Upgrades to version 1.8 are only $5 with your original disk. For more information, call (407) 657-4611, or write to SofTrek, P.O. Box 5257, Winter Park, FL 32793.

i/l

f#*j

) 1

I

Huvifli

'Gi

r I

DON'T MISS

A SINGLE ISSUE i

Let us know your new ad-

dress right away.

Attach

an old mailing label in the

space provided below and

print your new address

where indicated.

i_ i 3 "O CO

c^-

o « £ S >* o ci-

O

H Q_

QC O (/>

ow:

w 4 to 8 weeks for

3 include a current and proper extensi d to the U.S. and its

ai

E

LO

1— CO

<

o

CD

boxes be ease alio ed.

n. Pleas* > prompt rate limite

m D

O 1

i I

3 1

_1 "

QC

1

propriate ription. P

0 be mail ubscriptio

1 to insure 8.00. This

CO CO

o o

c

0 1

X

cTi

Q. " *- W CO CM

CO

en

H

£|£««T

g fi

CO 1

3

lis i. i

o S

"55 t

w ^ co

X '

o

S •>-• C M CO

^02 o 2> 5.

CO I

CD

<

gz £ CC -o r-

§□

co O-

6 I

a:

z

r-

- -

-J

o

W _

^■M

° 1

1-

£

(/)

co 1

LU

1- 1

3

Q

z

o

N

UJ

CO LU

EC

<r 1

<

LU

X

o 1 a <

LU

a

_l

LU

m

a 1

_j o

>

co

<

i- z

<

X

11 1

X

S |

z

3

<

<

X |

o

§ 1

>-

U)

o

CO

■D

_1 1

LU

CD _

Q

a

3 1

a. M

E CO >

Z

&

c

CIRCLE #106 ON READER SERVICE CARD. DECEMBER A.IM.A.L.O.G. Computing

39

DELPHI

'■i'.W

Make the DELPHI connection

As a reader of ST-LOG, you are entitled to take advantage of a special DELPHI membership offer. For only $19.95, plus shipping and handling ($30 off the standard membership price!), you will receive a lifetime supscription 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 connect rates. Almost anyone worldwide can access DELPHI (using Tymnet, Telenet or other networking services) via a local telephone call.

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 JOINDELPHI.

3. At the Password prompt, enter STLOG.

For more information, call DELPHI Member Services at 1-800-544-4005, or at 617-491-3393 from within Massachusetts

or from outside the U.S.

DELPHI is a service of General Videotex Corporation of Cambridge, Massachusetts.

DECEMBER A.IM.A.L.O.Q. CompuCing

DATABASE DELPHI

Speaking the Lingo: "Conference Code"

A Newcomer's Guide to

by Michael Banks

f you've participated in a real-time conference in the Atari ST SIG or Atari Users' Group (or anywhere else on DELPHI), you may well have . found yourself a bit confused by some odd words scrolling across your screen. "Btw," for instance, or "ga." While they may look like typographical errors, they really do have meaning in the special con- text of conference.

Hopefully, you didn't give up and leave because you didn't understand these cryp- tic words; but if you did, take heart— they're not that difficult to comprehend. In fact, most are merely acronyms ("btw" stands for "by the way," and "ga" stands for "go ahead"). The odd words (and symbols) have

evolved to accommodate faster communi- cation. (Some have been adapted from old telegraph or teletype communications con- ventions; "ga" is one.)

Here's a glossary of the "conference codes" you're likely to encounter:

BRB— "Be right back." Used when someone leaves his or her computer for a moment or enters Mail from Conference, so that others in the conference will not ex- pect responses from that person. Also used when one leaves a conference temporarily.

B7W-"By the way." Used as you would use it in conversation.

GA— "Go ahead." This is usually used after someone has typed several lines that continue a thought (using ". . .") to indicate that he or she has finished the thought. Also used by one or more conference participants when several people type at once, to defer to another person's comments.

IMHO (or /MO)— "In my humble opin- ion." (Watch out. Someone's dragging out a soapbox when IMHO prefaces a sentence!)

LOL— "Lots of laughter" or "Laughing out loud."

OTF— "On the floor." The ultimate in- dicator of laughter.

. . . (three periods)— Typed at the end of a line to indicate that the speaker will con- tinue his or her thought with the next line.

< GRIN >— Just what it says, but note that it is enclosed by greater-than/less-than symbols as sort of a cue that you should visualize what the symbols enclose.

<g>— Short for <GRIN>.

< SMILE >— (Same comments as for <GRIN>.)

In addition to the abbreviations, you'll also see some cryptic "symbols" that aren't acronyms. These are "ASCII graphics," used to represent facial expressions and thoughts. Here are the basic ones:

The first symbol represents a smile (turn the magazine one quarter-turn clockwise if you don't see it). The second is a smile with a wink. The third is a frown or a sad or dis- approving face.

Finally, people in a conference with two or more others will often use two dashes and a greater-than symbol (-->), or two greater-than symbols ( > > ) followed by a name to indicate that the comment that follows is directed to a specific person. For example, if I were online and wanted to di- rect a comment to someone named RES- NICK, I would type:

-> RESNICK followed by my comment.

And now you're an expert on the verbal shorthand used to make online real-time communication easier. Be aware, however, that new codes are popping up every month. Some catch on, and some don't— but don't be afraid to ask if you don't understand.

Just the FAX

There, I did it! I promised myself that I'd never use that cliche, but what the heck. (For those of you under age 30 or who don't watch reruns of old TV shows, "Just the FAX" is a takeoff on a favorite phrase used by Sgt. Joe Friday [Jack Webb] on the old Dragnet TV series; when investigating a case, Friday was frequently forced to shut down overly excited witnesses with the phrase, "Just the facts, ma'am.")

Now that I've satisfied the irresistible urge to use that cliche, let's talk about FAX. Have you been embarrassed by friends, clients or business associates asking you to "FAX it to me?" Have you thought about investing in a good FAX machine but can't justify it? Do you really want to clutter your desk with another piece of hardware?

If you have a computer and modem (and you do if you're on DELPHI), you don't have to worry about the answers to those questions, thanks to DELPHI'S FAX ser- vice. You can now send text-only documents to any Group 3 FAX machine in the world (which is to say, virtually any FAX ma- chine) as easily as you send E-mail.

FAX service is available on the DELPHI Mail menu (which is different from the Mail menu that you see if you type MAIL at the menu in the Atari Users' Group or Atari ST SIG. To reach the DELPHI Mail menu, type DELPHI at the SIG menu (or type MAIL at DELPHI'S main menu). This menu is displayed:

FAX Service | Mail (Electronic) Scan for Hew Messages SetMail Telex

Easylink Translation Services

Workspace

HELP

EXIT

As you can see, the menu also offers gateways to regular E-mail (the "Mail [Electronic]" selection) and other services.

DECEMBER A.IM.A.L.O.Q. Computing

DELPHI

What Kinds of FAX Messages Can I Send?

DELPHI'S FAX service is very accom- modating. You can send FAX messages that you compose online or documents that you've previously uploaded to your personal Workspace. (Being abie to send a Work- space file from Workspace means that you can also send the document as E-mail and/or a Telex— or resend it to other FAX machines later.)

FAX messages should be no wider than 80 columns. There is no limit on the size of a message (the number of lines it con- tains). Uploaded messages must be in 7-bit ASCII format to be sent. (Use your word processor's "print to disk" or ASCII-save function or a file-conversion utility to pro- duce 7-bit ASCII files.) You cannot send graphics or binary files of any kind.

If you want to insert page breaks in a mes- sage, type /PAGE on a line by itself at the beginning of the message and type /PAGE again wherever you want a page break. (Page breaks can be included in a message you are typing online or in a document you are creating with your word processor.)

How It's Done

All you have to do to send a FAX mes- sage is have the destination number(s) ready and upload the message to be sent to your Workspace (or know what you're going to type online). Then type FAX at the DEL- PHI Mail menu.

DELPHI guides you through the entire process with easy-to-follow prompts. You can send the same message to multiple FAX machines by entering multiple phone num- bers at the appropriate prompts. (FAX des- tination numbers must include the area code and phone number. In the case of messages outside the U.S., Canada and the Caribbe- an, you must include the country code, city code and telephone number.) You can abort the process at any time by entering AC.

What Does it Cost?

The rates for sending FAX messages are generally a lot less than you'll pay at a walk- in FAX service center (such as those found in some office supply and computer stores).

FAX messages are measured in pages and half-pages. A FAX page contains 2,500 characters; a half-page contains 1,250 characters. Messages are also billed by pages and half-pages, as shown in Table 1.

For FAX

messages sent to:

Cost Cost for each

additional half-page:

messages for the

sent to: first page:

United States $1.25 Canada $2.00

International $7.00

Table 1

number, multiply the total page/half-page charge for the message by the number of destination numbers.

How Do I Know if It Got There?

If you send a FAX message and it is not delivered, you will get an E-mail message automatically at no charge. If you want to be notified that a message did arrive, you can receive such notification for an extra charge of 40C per message (the notification will arrive in the form of an E-mail mes- sage, advising you of the date and time the FAX message was delivered).

Why Should I Use DELPHI for FAX Delivery?

If you send only text FAX messages, DELPHI'S FAX service is the way to go. The cost is reasonable— even attractive- considering the fact that you don't have to invest hundreds (or thousands) of dollars in a dedicated FAX machine. DELPHI

FAX also offers these advantage's:

* You don't have to print out and scan a message to send it; you can send it direct- ly from your computer.

* You can send the same message to one or more FAX, Telex and/or E-mail desti- nations.

* You don't have to learn how to use a FAX machine.

DELPHI FAX is equally attractive to those who need to send only occasional FAX messages as well as high-volume FAX senders.

Games, Games, Games

DELPHI'S real-time online games con- tinue to draw big crowds. Monday night is Fliplt! night. Each game played on Mon- day night builds a jackpot that is divided among the top finishers in each of three cat- egories: best on 8-by-8 board, best on 10-by-10 board and best overall. Type ENT FLIP to check it out and try your hand.

Thursday nights are poker nights. From 9 p.m. to 12 midnight, poker players take part in tournaments in which they can earn free time. All players start with $1,000 in poker "chips" and can use the money to play five-card and seven-card stud. The player with the biggest pot at the end of the last game wins $30 in free time on DELPHI. Other prizes are awarded as well. You can practice and hone your poker skills at any time by typing ENT POKER at the DELPHI Main Menu.

That's it for now. See you in conference! (Tuesday evening, 10:00 p.m., Eastern time. Be there, or be an obtuse rectangle!)

In addition to science-fiction novels and books on model rocketry and other topics, Michael A. Banks is the author of DEL- PHI: The Official Guide and The Modem Reference, both from Brady Books. You can write to him via E-mail on DELPHI to mem- bername KZIN.

DECEMBER A.IM.A.L.O.Q. Computii

REVIEWS

HISOFT BASIC

b

HiSoft BASIC ($79.95)

HiSoft BASIC Professional ($159.95)

MichTron Inc., 576 South Telegraph

Pontiac, Ml 48053

(313)334-5700

Reviewed by Ian Chadwick.

Desk File Search Options IMHiMI

I Line! 45 Col;

DM paints(Z)

FOR i=D to 2! road DATA 18,18,24

Junp to Error KJ Run Other

nenu$="l Desk I About ne,,,l[ File I Oult 1" I nenuS=nenuS+"[ Style I 10 point \ 18 point \ 24 point \(-

the neon title nenus I CONST file-title=4,stule.tltle=5, about=8, quit=17 pointl0=19 hold=pointlfl*4 outllne=bold*4

| nenu.pointer!l:FllnenuS(nenu$)

this piece of code Mould disable the desk accessories 'for 1=1B to 15

nenu.ienable nenu-pointerS, l,B

Depending on how you

look at it, this is either a great time for ST BASIC use.rs or a terrible time. It's great because there are so many options from which to choose, including ST BASIC, Fast BASIC, GFA BASIC 2.0 and 3.0, STOS and now HiSoft BASIC. You can pick the language style you prefer: Microsoft-like, structured, game-oriented, compiled, GEM or TOS based and so on. However, because of the proliferation of BASICs, it's unlikely one will become the de facto ST standard, and portability among the various products is limited. Trans- lation is all too often very difficult.

The latest entry into the arena is HiSoft BASIC (with its enhanced version, HiSoft BASIC Professional). Mich- Tron obviously hopes to capture the hearts and minds of the ST users with what is their replacement for the lost GFA BASIC. With the latter emerging as the most popular of the lot, it's natural to compare the two.

Since HiSoft has made a considerable impact in England, where it originated, MichTron must assume that it

should find a good following on this continent. But first they must undo the good job they did in selling GFA BASIC over the past two years. And it won't be easy.

HiSoft BASIC (referred to as HSB from here on) is a structured language based on the popular Microsoft QuickBASIC design, offering a high degree of code compatibility with Quick- BASIC 3.0. Note that QuickBASIC is already at Version 4.5 on the PC, a couple of generations beyond 3.0. By now, ST users should be accustomed to the lag between product levels.

While there's nothing unique in the commands and functions to set HSB apart from other BASICs, it does stand out from the rest in that it combines a text editor and a compiler into one package. The highlight of HSB is the "seamless" interface be- tween the two: When you write your code, you actually compile it to memory, then run it and return to the editor. This is a far cry from the cranky process of writing, exiting, compiling, testing, rewriting and so on that I complained about in a

recent lan's Quest column. Unlike GFA, you don't need to quit the program to go to the compiler.

The other side of the coin is that HSB lacks GFA's inter- active parsing and syntax- checking. With HSB, you dis- cover errors only at runtime or compilation. For the novice (or, like me, anyone who has trouble typing on the abysmal ST keyboard), this may not be a worthwhile . tradeoff. However, the error messages produced by HSB are clear enough and more informative than GFA's. If you choose not to continue your program when an error is found, the program halts at that line with the cursor on the problem.

The second major tradeoff is in simplicity. HSB is not as easy to use as GFA. The two (HSB and GFA 3.0) compare favorably when measuring functionality, but GFA comes out on the plus side with more features. GFA has some nice commands and func- tions, like PI, INP?(), TRUE, SGET and SPUT, BREAK and ON BREAK, array-swapping and sorting, plus full VT-52 terminal support that HSB lacks. On the plus side, HSB shows a considerable im-

provement in speed over GFA.

To its credit, HSB performs very well; the interface is fast and smooth. I haven't been able to crash it, something I cannot say for any GFA BASIC release. Compilation is equally fast, with the unfortunate caveat that you cannot change drive and path when compiling from the program, except through the inclusion of an SOPTION command within the code itself.

HSB supports the full range of GEM AES, DOS and VDI calls, as well as BIOS and XBIOS calls, in a manner similar to the standard C con- ventions— including the need to include the proper libraries for proper com- pilation and execution. This is where the simplicity prob-lem arises.There are no simplified com-mands available in GFA for creating alert boxes, handling menus or rnqst other GEM functions. HSB does have some more sophisti- cated window commands than GFA, but they require a little more effort to program.

HSB has one advantage for the user converting from

(CONTINUED ON PAGE 78)

DECEMBER A.N.A.U.O.Q. Computing

_8_

Named after an

18th-century French

monk, Truchet tiles

are being used by

Clifford A. Pickover

of IBM's Thomas J.

Watson Research

Center to transform

large masses of

binary data into

visual form. His object

is to determine the

relative randomness

of his data using a

quick, visual tool.

by Frank Kweder

Iruchet tiles were a topic of discus- sion in the "Computer Recreations" column of Scientific American (July 1989). Named after an 18th-century French monk, Truchet tiles are be- ing used by Clifford A. Pickover of IBM's Thomas J. Watson Research Center to trans- form large masses of binary data into visu- al form. His object is to determine the relative randomness of his data using a quick, visual tool,

There are two types of tiles (see Figure 1), each composed of two quarter-circle arcs whose centers are located at opposite corn- ers of a square. The radius of each circle is equal to half the length of the side of the square, thus, when tiled, the pattern is con- nected continuously. Tile #1 is the mirror image of Tile #0. Alternatively, you might think of Tile #1 as being rotated 90 degrees in either direction.

The program presented here has no scien- tific significance. It merely demonstrates some of the graphical design possibilities. When the program is first run, a preset pat- tern (Figure 2) is drawn using data state-

ments. The pattern contains three main figures: a large flower-like circular figure, a large "X" shape and a smaller circle.

Press the space bar and a new pattern will be drawn by random placement of the tiles (Figure 3). After running this many times, I have noticed that the flower and "X" pat- terns almost never appear. The small cir- cles, however, are common.

The larger patterns are created by a se- quence of tiles in a 4x4 grid. The "X" pat- tern requires a repeated sequence involving 16 tiles and the "flower" requires 12 tiles. The small circle uses only four tiles. There- fore, it's logical that the "X" is least likely to appear.

Another press of the space bar will plot another random pattern. This time the fig- ure is simplified by removing the lines defining the tile edges. The next press of the space bar will plot a full-screen pattern (Figure 4). ^^^.^k .

When the plotting is finished, you may replot it or print the plot using an Epson- compatible printer and the G: Device from ANALOG'S October '85 issue (and on this

Ti

month's disk). The file G.OBJ must be loaded before running Truchet Tiles. If G.OBJ is not loaded, an attempt to print will abort and the program will remind you to load it. Alternatively, you may want to add your own screen-dump or screen-save routine.

Try printing out some screens and fill- ing in the maze-like channels the pattern forms with different colored markers, highlighters or crayons. This is a great way to keep the kids occupied and not bad therapy for anyone who has been at the keyboard for too long!

Programming Notes

A display list interrupt (DLI) is used to show the title and the type of plot be- ing drawn. Within the DLI, I also used fine scrolling to present a caption or in- structions, and to draw your attention to the next operation.

The DLI sets Line 0 to Graphics 2 and Line 1 to Graphics 1. Line 1 also has its vertical-scroll bit set (+32). All you have

DECEMBER A.N.A.L.O.O. Computing

FIGURE 1

FIGURE 2

Tiles

to do is scroll the contents of Line 1 up eight bits while POKEing the bit number into 54277, the vertical-scroll register. Next, rewrite the contents of Line 1 and then scroll down eight bits, again POKE- ing the bit number into 54277. Check out the "Master Memory Map, Part IX" in the April '89 ANALOG Computing, where there is an excellent account of this interesting register.

I hope you enjoy Truchet Tiles. As for me, I must return to my copy of Scientif- ic American and try to figure out how to keep the Biomorphs from eating all the fractal popcorn! a

Frank Kweder, an owner of both a 130XE and an ST, reads his Scientific Americans in Ft. Myers, Florida.

(PROGRAM LISTINGS CONTINUED ON PAGE 96)

FIGURE 4

DECEMBER A.N.A.L.O.Q. Computing

by Karl E. Wiegers

We've been taking a close look at the different tasks involved in a modern software-development project from the perspective of contemporary software-engi- neering methodology (some may say "the- ology"). My thrust has been that a systemat- ic, structured approach to your software development efforts will pay off in a more durable, robust and maintainable product that more closely matches the customer's needs, compared to a traditional program- development approach. The ultimate defi- nition of successful software is that it is de- livered on time, comes in on budget and correctly satisfies the user's actual needs. I'm convinced that software engineering holds the promise of meeting these goals. So far, though, we've only considered one possible sequence of software-development tasks. The method I've been describing is sometimes called the "waterfall" method of software development. The waterfall meth- od is commonly used for the process- oriented systems I've described, such as my chemistry game, Reaction Time. However, it is by no means the only methodology available for creating a software application. Today I'd like to explore some alternative "models" or "paradigms" for software de- velopment.

These various development models are sometimes called "software life cycles," al- though these cycles aren't the same as plant and animal life cycles, in which birth leads to growth, to maturity, to birth again and finally to death. With software, the "birth again" step is generally omitted. And if you're too late delivering the goods, death may appear without the intervention of growth and maturity!

These different models do have some fea- tures in common. After all, software-sys- tems engineering must always involve some gathering of user requirements, design of the system to be constructed, construction, testing of the system and its components, and ongoing project management,

ENGINEERIN

DEVELOPMENT LIFE CYCLES

documentation and quality-assurance activi- ties. And it's a safe bet that any system, no matter how it was built, will require some level of maintenance and change during its lifetime. The paradigms differ mainly in the timing and repetition of these activities.

Pre-Software Engineering

In the olden days, a project often began with a rather fuzzy notion of the goal. Some time was spent on planning or design, and then a larger block of time was devoted to writing code. Coding was followed by an infinite loop of testing and debugging, test- ing and debugging. The testing phase gener- ally was declared to be over when the delivery deadline had come and gone and the customer was beating on the developer's door. We might summarize this historic ap- proach as a "code-and-fix" development technique.

There were some obvious deficiencies with this strategy. First, the customer's in- volvement was too frequently limited to an initial interview or two, followed (after a sizeable delay) by a presentation of the "fi- nal" product, which often bore little resem- blance to what he had in mind. Second, insufficient time devoted to system design at both the overview and detail levels meant that things often went awry during coding. The problems were amplified when more

than one person was involved with the ac- tual programming. Working without a mas- ter plan is a recipe for communication problems. Third, the ad hoc testing ap- proaches left a lot of bugs lurking in the sys- tem, awaiting discovery by irate users. And fourth, the lack of structure in the system design, combined with patches placed on code during debugging and the generally in- adequate documentation, made system maintenance a nightmare.

Figure 1 graphically illustrates one con- sequence of this classic life cycle. As time goes on, the developer's impression of what the user wants and the customer's actual ex- pectations tend to diverge. The bigger the gap, the lower the perceived quality of the final system by the user. More modern de- velopment methods are intended to reduce this expectation gap. The goals are to have faster and more accurate development of the correct software system.

The Waterfall Model

The waterfall model for software develop- ment is essentially a more disciplined var- iant of the classic life cycle. This is the development method I've been describing over the past several months. Basically, the waterfall model consists of several discrete phases, each of which has specific deliver- ables (products) that must be completed and

DECEMBER A.IM.A.L..O.O. Computing

expectation gap

-> time

FIGURE 1. EXPECTATION GAP FOR CLASSIC LIFE CYCLE DEVELOPMENT.

approved before proceeding to the next step. These phases go by various names; one set of labels is shown in Figure 2 (I've seen at least four published variants of this dia- gram, so I made up a fifth). Sometimes you'll hear of "system specification" instead of "requirements analysis," or "implemen- tation" instead of "coding," but the ideas are the same.

If you've been reading this software- engineering series all along, you'll recog- nize the pieces of the diagram in Figure 2. Notice that each phase involves some feed- back to the previous phase (the upward- flowing arrows). This reflects the fact that defects become detected as work goes on, and the defects usually are attributable to errors made in an earlier phase. The best way to handle these problems is to back- track to the source of the error and correct it there, rather than simply slapping a patch on it at the later stage when the problem showed up. For example, a single error at the requirements phase may lead to several problems during design, so your best bet is to go back and fix the underlying require- ments flaw before continuing with design. The waterfall method also differs from the classic life cycle by using a variety of techniques to improve quality and produc- tivity in each phase. Requirements-analysis benefits from the data-flow (DeMarco)

methods used for structured specification. Data-flow techniques also are valuable in high-level design (Yourdon, and Gane and Sarson methodologies). Module-level de- sign is facilitated using structured English (pseudocode) or action-diagram techniques, among other diagramming methods. Struc- tured programming methods lead to code that is readable and maintainable. Struc- tured testing procedures (both white-box and black-box) prevent many errors from seeping through. Quality-assurance activi- ties, such as structured walkthroughs, should be performed before proceeding to the subsequent phase. And many computer- aided software engineering (CASE) tools are available to automate some of these tasks. We've discussed all of these ideas in earlier articles in this series. The key word throughout is "structure."

From the quality perspective, managing a project being developed under the water- fall method poses particular challenges. Be- cause of the sequential flow of tasks, it's important to build in high quality from the very start. It's difficult to go back and retrofit quality after a program has been completed. The quality of the code depends upon that of the system design, which in turn depends upon the quality of the specifi- cations, and so on. One way to manage this is to break each phase of the project into

separate substeps, with a checkpoint qual- ity review scheduled at the end of each sub- step. You don't continue with the project until each subphase meets its goals. This subdivision is the basis for some software project management methodologies, which we'll discuss in a future installment.

One problem with the waterfall approach is that the customer doesn't see any usable products until near the end of the develop- ment effort. I've found it valuable to review the specifications and perhaps even the sys- tem design with the customers, but this isn't the same as letting the user get his grubby paws on a keyboard. A long time lag be- tween inspiration and delivery can reduce the customer's interest in, or need for, the system, as well as lead to a bigger gap be- tween what he wants and what he gets, as we saw in Figure 1.

Another drawback to the waterfall life cy- cle is the need to lock the system require- ments once the analysis phase is complete. Of course, in real life, it's rare that require- ments are truly frozen. However, due to the long sequence of steps between concept and completion, any changes requested by the customer, once design is under way, have repercussions throughout the system- development effort. It's difficult enough dealing with errors that are found at later stages of development, let alone coping with

DECEMBER A.IM.A.U.O.O. Computing

SOFT WA K E ENGINEERING

Feasibility Study

1

Requirements Analysis

t

Overview Design

t

Detail Design

t

Coding

t

Testing

t

System Integration

FIGURE 2. THE WATERFALL LIFE CYCLE OF SOFTWARE DEVELOPMENT.

t

Delivery and Maintenance

volatile requirements. This is a particular problem in dynamic technical environ- ments, such as the scientific research or- ganization I work in. Since system requirements often do change as time goes on, the software developer needs a better way to cope with this.

Iterative Prototyping

Iterative prototyping is an alternative software-development approach that aims to avoid some of the deficiencies of the water- fall method. This model addresses the prob- lem of having incomplete or uncertain specifications at the beginning of the pro- ject, as well as coping with anticipated changes in the specs during the time need- ed for development. Prototyping tends to be a user-driven development method, rather than the prespecified approach character- ized by the waterfall paradigm. Prototyp- ing is less formal and more dynamic, involving continuous incremental change as the user's needs become more precisely defined.

Human beings find it easier to critique

than to create. The idea behind software prototyping is to get something into the cus- tomer's hands quickly as a first cut, so the user can tell you whether or not this is what he has in mind. Revising the prototype leads to an interim product that more closely meets the user's needs. By repeating this prototype-review-modify cycle as many times as necessary, the divergence problem illustrated in Figure 1 is reduced to some- thing like that shown in Figure 3. I've found that frequent iteration with the customer is vital to success, even when I'm not follow- ing a true prototyping life cycle.

When the developer delivers something that closely matches what the user has in mind, the user's perception of system qual- ity is greatly increased. The prototype aids the effort by serving as a vehicle to help gather and refine the system requirements, as well as being a preview of things to come.

The main idea behind prototyping is speed. Users always change their percep- tions of what they want after using a new system for a while. If the new system can be constructed and modified quickly, we de-

velopers can do a better job of uncovering the ambiguities, inconsistencies, misunder- standings and omissions that plague conven- tional system-specification efforts.

A prototype can be either a mock-up or a working model of the ultimate system be- ing constructed. A mock-up consists of sample screens and reports, with limited functionality built in. You may write enough code to let the user move from screen to screen in a logical way and enter represen- tative data, but the brains behind the screens are either absent or faked. Such a system has been called a "vacuous prototype." It's valuable for simulating a user interface, but it doesn't do any useful work. For a system that is user-intensive, this can be a valua- ble way to help the user evaluate whether the "look-and-feel" of the system you pro- pose to build will suit his wishes.

A working-model prototype might con- sist of a full implementation of just part of the system. There may be just a few screens and one sample report, but with the code to convert inputs into outputs fully function- al for that limited subset of the system. This

DECEMBER A.M.A.L.D.Q. Computing

SOFT WARE ENGINEERING

kind of prototype will let the user see if he is comfortable with the approach you pro- pose, and since it actually does useful work, you may be able to incorporate the work- ing model into the final system.

Notice that this iterative method doesn't draw sharp lines between the development phases, as the waterfall method did. You can do a little requirements gathering, a little design, a little implementation, a little test- ing and a little delivery. Then, based on feedback from the customer, you do a little more requirements gathering, a little more design and so on. You continue with the iteration process until either: (a) you've reached a point where you can now write the actual, deliverable system quickly and accurately, or (b) the final prototype is the deliverable system.

Most computer systems don't have specif- ic tools to facilitate prototyping, although more are appearing all the time. A software- prototyping environment might include a screen painter, a report generator and some kind of interpreted language to let you hook the pieces together into a running system. The screen painter lets you quickly design screen displays and write enough code to let the user display them and move from one to another. The report generator can pro- duce printed reports or screen displays from specifications without writing huge amounts of line-by-line print-formatting statements. Often you can use default-printout formats to get some output quickly and let the user then fine-tune the layout for complete im- plementation at some later time.

The interpreted language lets you display screens, do some actual processing and pro- duce output. Interpreted languages often lack some of the rigor of their compiled brethren (like insistence on declaring all variables before using them), and they don't need the compile and link steps before ex- ecution. Hence, it's faster to write and try working code with an interpreter. Since computational efficiency is not paramount for a prototype, the fact that interpreted lan- guages execute more slowly than compiled

languages is not a concern. Also, interpret- ed languages often have excellent debugging facilities, which can facilitate quick turna- round in response to user complaints.

But what happens when you've reached the last iteration in the prototyping sequence and the customer is happy with the current status? You could simply say, "Okay, here it is; I'm done." But if you've written the code in an interpreted language, the perfor- mance at that stage may be inadequate for a production system. Also, you've proba- bly neglected code documentation since you've been working on "just a prototype." The customer may not recognize the differ- ence between a working model and a fin- ished product, which would contain all of the software quality-assurance characteris- tics that we build into our systems. A pro- totype may well have traded both quality and efficiency for the ability to quickly demonstrate desired system capabilities. If you don't redo the final prototype, you may wind up with these shortcomings as integral parts of the delivered software; this may or may not be a problem.

The alternative is to keep the screens, reports, user interface and algorithms from the prototype, but recode all the procedur- al routines in a more efficient language, such as C, COBOL or Pascal. Unfortunate- ly, programs in such languages often are more costly to maintain than the simpler code generated in a prototyping environ- ment. The choice depends on the applica- tion itself. It certainly can be aggravating to finally get the system just the way the user wants it, only to know that you have to re- write much of it in another language before you're done. The saving grace is that the iterative-prototyping process, emphasizing as it does user involvement, has done a good job of pinning down the user's precise sys- tem requirements, so the recoding step should go quite smoothly.

Unfortunately, GEM doesn't lend itself easily to the prototyping model. Atari BA- SIC did just fine, as long as you worked within its limitations. Getting an applica-

tion up and running in a full-screen win- dowing environment, like GEM or the Macintosh, takes quite a bit of effort; it's not something you throw together in a few hours just to see how your ideas might look and act. But software-engineering research- ers (yes, Virginia, there are some) are ac- tively pursuing the development of rapid prototyping tools for windowing environ- ments. Patience, please, for a few more years.

Incremental Development

Another software-development approach that can be effective is incremental develop- ment. In this scheme, you begin with the specifications for the first part of the target system and go ahead and develop it using whatever methodology is most appropriate. Placing a completed portion of the ultimate system into the hands of the users quickly provides them with some real functionali- ty while leaving everyone more time to re- fine the specifications for the rest of the system.

Incremental development breaks the de- velopment project into a series of small in- dividual projects that can be completed independently, each portion being append- ed to the parts you've already finished. The rapid turnaround between the customer's re- quest and delivery of something useful reduces the usual gap between initial expec- tations and those that would prevail much later when the complete system otherwise would be delivered. This method also can reduce the time-dependent evolution of sys- tem specifications, which always seems to be one step ahead of a traditional develop- ment effort.

Obviously, not every project lends itself to incremental development. Some systems really have to be done as a massive whole that is integrated all at once. Another con- cern is that each sequentially completed portion of the system must link up nicely with the parts already in place. I've found this method to work well if a first cut at the overall system specification has been com-

DECEMBER A.IM.A.L.O.Q. Computing

SOFTWARE ENGINEERING

enpectotion gap

-> time

FIGURE 3. EXPECTATION GAP FOR ITERATIVE PROTOTYPING DEVELOPMENT.

pleted, so that we can intelligently partition the system into chunks that can be im- plemented individually. The detailed design of the subsequent pieces can wait until the first section has been fully implemented. One danger with incremental develop- ment is that changes made in the specifica- tions for the later parts of the system can result in the portions completed initially needing major revision or even being scrapped. On the other hand, it may turn out that the latter sections don't even have to be completed, due to the customer's ex- perience with the part you finish first. It's hard to accurately predict how things will turn out with incremental development, but keep it in mind as an option for your next big project.

Fourth-Generation Languages

One other methodology for system de- velopment bypasses the traditional code- writing phase entirely, using what are re- ferred to as "fourth-generation languages," or 4GLs (sometimes more generally termed

"fourth-generation techniques," 4GTs).

You're used to the traditional software- development process using third-generation high-level languages like C, BASIC or FORTRAN. These "procedural" languages require the programmer to write in grim de- tail the instructions for each task performed in a program. We must individually mani- pulate each piece of data, handle all the screen-display interactions, define printout formats line by line, individually validate each user entry, handle the details of every file access and so on. The many lines of code required for all these functions lead to a major maintenance effort whenever a large system is enhanced or a bug eradicated.

Fourth-generation languages allow a "non-procedural" approach to certain do- mains of software development. A 4GL is often supplied as part of a relational data- base software package. (See the April '88 issue of ST-LOG for an informative in- troduction to relational databases by Frank Cohen.) Tools are provided to help imple- ment the user interface and printed-output designs, and some kind of high-level lan-

guage is available for communicating with the database. But you, both as developer and as user, are insulated from the nitty- gritty details of reading and writing files, performing basic arithmetic operations and writing all the code needed to handle com- plex screen displays.

At their best, 4GLs eliminate many of the tedious steps endured by the experienced ap- plications developer. But this pot of gold doesn't come free. The main drawbacks of contemporary 4GLs (of which there are many) are that they are CPU hogs (computer- ese for saying that they execute inefficient- ly) and that they can be applied only to limit- ed classes of fairly specialized applications. As I mentioned, these applications gener- ally center about information stored in rela- tional databases. Of course, a huge assort- ment of business applications fits in this very category, but the 4GL hasn't had much of an impact on scientific computing yet.

Not surprisingly, writing an application using a 4GL usually involves some pro- gramming, although at a higher level of ab- straction than you see with a 3GL. Many

DECEMBER A.IM.A.L.O.Q. Computing

SOFTWARE ENGINEERING

fewer lines of code may be needed to per- form a specific task using a 4GL. The most common language used for relational data- base accesses is called "Structured Query Language" or SQL (pronounced "sequel"). Rather than making you mess with open- ing files, reading records and so on, a que- ry language like SQL lets you tell the computer what you want to do in English- like sentences.

Let's consider a simple example. Rela- tional databases consist of two-dimensional tables containing rows and columns of in- formation. Suppose you have a table called MAGAZINES, which lists all the maga- zines to which you subscribe (maybe you're a library). When you set up this table, you created columns with names like TITLE, COST, EXPIRATION DATE and THEME. Each row you add to the table would con- tain information for a particular magazine. ANALOG might be entered with a title of (guess what) "ANALOG',' a cost of "$28," an expiration date of "8/90" and a theme of "Atari ST computing."

Imagine that you want to write a program to extract specific rows from this MAGA- ZINES table according to particular criter- ia, sort them in some way and display certain columns from the rows retrieved. Specifically, let's find the titles of all the magazines that contain the keyword "Atari" in the THEME column. You can probably imagine the many steps needed to do this in a language like BASIC. But in SQL, you'd write a concise program statement, such as: SELECT TITLE FROM MAGA- ZINES WHERE THEME CONTAINS "Atari." Note the close resemblance be- tween this SQL statement and the English description of what we want to do.

This is not a tutorial on SQL, so we won't pursue it further. The main idea is that a query language like SQL lets the developer or customer do the conceptual work, while the computer handles the low-level stuff. Just because a 4GL is nonprocedural, doesn't mean there isn't any programming involved; it's just done at a higher level of

abstraction. In fact, the SQL statements needed for elaborate queries from multiple tables in a large database can get horrify- ingly complex.

There's some overlap of system tools be- tween 4GL and prototyping environments. Both systems usually include a screen paint- er, which lets you quickly design a form on the screen to facilitate data entry by (or dis- play to) the user, along with easily handling data validation and displaying help screens. Both systems often include a report painter and report-generator capability to easily lay out and produce even sophisticated print- outs of information retrieved from the data- base. Some 4GLs involve a language for defining reports that looks suspiciously pro- cedural to me. And a smart 4GL can actu- ally generate the code automatically for many of the database accesses (queries and updates) you need to perform.

On the plus side, a 4GL environment can be a real asset for rapid system-development (for the right kind of system), and by remov- ing much of the detailed code-writing, the maintenance requirements for a system built using a 4GL can be much reduced from those for a comparable system based on a 3GL. However, designing complex cus- tomized screens or writing complex quer- ies can result in the same system developer's headaches we're used to from older tech- nologies. And sometimes your system re- quirements may involve capabilities beyond those of a 4GL, such as graphics or heavy- duty computations. Many 4GLs deal with this by providing ways to call a program written in a 3GL from within the 4GL en- vironment. Does this average out to a 3.5-generation language?

One other advantage touted for the 4GLs is the goal of having much of the simpler applications development performed by the end user, rather than by a professional soft- ware developer. This is certainly a worthy goal in light of the serious work backlogs plaguing many software-development shops. While this may be possible with some current 4GLs, at least one of the most

popular relational database systems avail- able has a 4GL so complex (but powerful) that it turns my hair white. This may all be a clever ploy to provide permanent job secu- rity for the professional software developer.

Looking Back

Today we've explored a variety of strate- gies for developing applications software packages, including some interesting alter- natives to the traditional waterfall method. These techniques are by no means mutual- ly exclusive. Often you can benefit from a hybrid approach: some initial analysis for a general picture of the problem, followed by a little prototyping to get something into the user's hands, then either incremental or full-blown waterfall development, depend- ing on how firm the requirements are when you're ready to start.

The goal of each of these development life cycles is to meet our definition of high- quality software as closely as possible. In case you've forgotten, high-quality software is delivered on time and on budget, and it meets the user's needs. The developer's challenge is to be able to share the cus- tomer's vision of the final system, then re- fine it (based on his own experience) for performance, ease of use and reliability. In future articles we'll talk more about soft- ware quality-assurance (making sure these goals are met) and software project- management (mechanisms for meeting the goals), h

Karl Wiegers, Ph.D., spent the 70s learn- ing how to be an organic chemist, then spent the '80s wrestling with computers. He is now a software engineer in the Eastman Kodak Company photographic research labs. He hasn't yet selected a career for the '90s.

DECEMBER A.M.A.U.O.Q. Computing

Computervisions

3257 KIFER ROAD

SANTA CLARA, CA 95051

(408)749-1003

(408) 749-9389 FAX

A

STORE HOURS TUE- FRI 10am - 6pm

SAT - 10am - 5pm CLOSED SUN - MON

$3.50

ASSEM REV. A BASIC REV. A MPU 6507 PIA 6532

$4.50 EACH: 1771 FDC 1050 ROM

$12.00 EACH: ASSEM REV.B VCS TIA 444 FREDDIE

8- BIT INTEGRATED CIRCUITS

EACH:

800 CPU 6502 RAM 6810 810 ROM C POKEY

800 ANTIC PIA 6502

OS ROMS (499B-599B)

XL CPU 14806 XL/XE MMU

XE GATE ARRAY BASIC REV C XL/XE OS

GTIA

XL DELAY

XL ANTIC 8 50 ROM E

NEW PRINTED CIRCUIT BOARDS WITH PARTS

800 MAIN/CHIPS ... 10.00 800

800 16K RAM 10.00 800

810 SIDE WITH D/S 15.00 800

810 ANALOG 10.00 810

10K 0/S . . POWER .... CPU W/GTIA POWER ....

10,

5.

10.

15,

00 00 00 00

JOYSTICKS

ATARI STANDARD(2) 12.00

EPYX 200 XJ 16.95

EPYX 500XJ 19. 95

SLICK STICK 9.95

TAC-2 12.99

TAC-3 14.95

WICO 3 -WAY .

WICO BAT HNDL POWER PLAYER ERGOSTICK . . . STARMASTER . . TAC-5

14

22. 29. 24. 14. 19.

,95

00 95 95 95 95

RUN MAC SOFTWARE ON YOUR ST!!

MAGIC SAC 59.95

SPECTRE 179. 95

TRANSLATOR ONE .. 279.95

DISCOVERY OPT.O 188.00

64K MAC ROMS . 9.9 5 128K MAC ROMS 159.9 5 MAC FINDER . . 44.9 5 DISC. OPT. 2 . . .266.00

8- BIT DISK DRIVES

ATARI 810

ATARI 810 WITH NO CASE

ATARI XF551

B&C 810

10 50 1050 1050 1050 INDUS

WITH SUPER ARCHIVER

WITH HAPPY ENHANCEMENT . . . WITH US DOUBLER INSTALLED

RECONDITIONED

GT

ASTRA 1001 WITH PRINTER INTERFACE

130 85 199 130, 250, 275. 225. 175. 175. 175.

00 00 95 00 00 00 00 00 00 00

POWER PACKS

65XE 12. 00

800/810/1050 ... 10.00

800XL/130XE .... 20.00

830/835 10.00

1030 10. 00

2600 5,

1027 29.

520 EXTERNAL ... 50.

520/1040 INTRNL 75.

ST DISK DRIVE . . 35.

00 95 00 00 00

HAPPY ENHANCEMENT 810 OR 1050 $99.95 1050 SUPER ARCHIVER CHIP $69.95

DE RE ATARI $10.00

ST INTEGRATED CIRCUITS

DISK CONTROLLER WD1772 PHOTO COUPLER PC900 . . .

YAMAHA SOUND CHIP

6850 ACIA

68000-8 CPU

KEYBOARD CHIP

DMA CONTROLLER

MMU

VIDEO SHIFTER

GLUE CHIP

BLITTER

25.

2.

10.

00 95

00

3.95 27.00

15

26

28.

26.

28.

39.

00 00 00 00 00 95

ATARI520/1040/lVfEGA ST SOFTWARE

ENTERTAINMENT

10TH FRAME BOWLING . 22.50

A DAY AT HE RACES .. 35.95

ADULT POKER 17.95

ALF'S FIRST ADVENTURE 13.50

ARTURA

AFTERBURNER

ALIEN SYNDROME

AXE OF RAGE

BACKGAMHON

BAL. OF POWER 1990

BARD'S TALE

BATMAN

BATTLE CHESS

BATTLEHAWKS 1942 . .

BISMARK

BLOCKBUSTER .......

BORODINO

35.95 35.95 35.95 44.95 31.50 44.95 17.95 35.95 44.95 44.95 3 5.95 44.96 53.95 CAPTAIN BLOOD 44.95

CARRIER COMMAND CENTERFOLD SQUARES .

COIOSSUS CHESS

DEJAVU

DEJAVU II

BATTLE TECH

DEATH BRINGER

DEAMON'S WINTER ....

DOUBLE DRAGON

DRAGONNINJA

DUNGEON MASTER

EMPIRE

FIG COMBAT PILOT ..

FALCON

FALCON HISSION 1 . . .

FIREZONE

GAUNTLET

GAUNTLET II

GOLDEN PATH

GUILD OF THIEVES . . . HEROES OF THE LANCE. HOSTAGE RESCUE HISS. HOLEIN-ONE HIN.GOLF HUNT FOR RED OCTOBER

IKARI WARRIORS

IMPOSSIBLE MISSION 2 INTERNATIONAL SOCCER INTO THE EAGLES NEXT

14.95 26.95 44.95 44.95 44.95 44.95 35.95 35.95 35.95 35.95 35.95 44.95 44.95 44.95 35.95 31. 50 44.95 44.95 4.95 9.95 35.95 40.50 26.95 44.95 35.95 17.95 35.95 35.95

JAWS

JET

JINXTER

JOKER POKER

KARATE KID II ... KENNEDY APPROACH KING OF CHICAGO .

KINGS OUEST

KINGS QUEST II . . KINGS QUEST III . KINGS QUEST IV . .

KNIGHT ORK

KULT

LAST DUEL

LEADERBOARD DUEL PACK 22 . 50

L.E.D. STORM 17.95

LEISURE SUIT LARRY .. 35.95 LEISURE SUIT LARRY II 44.95 LOST DUTCHMAN'S MINE 44.95

MANHUNTER

MARBLE MADNESS .

METROCROSS

MICROLEAGUE B BALL II

MOEBIUS

NINE PRINCESS AMBER

OBLITERATOR

OIDS

OFF SHORE WARRIOR . .

OPERATION WOLF

OUTRUN

PALADIN

PALADIN OUEST DISK .

PAWN

PIRATES

PLATOON

POLICE QUEST

POLICE QUEST 2

POWER PLAY

POPULOUS

PREDATOR

PSYCHO

ROBOCOP

RUNNING MAN

SCRABBLE

SENTRY

SHADOWGATE

SPACE QUEST

35.95 44.95

9.95 53.95 35.95 44.95 21.50 44.95 44.95 44.95 44.95

9.95 44.95 17.95

44.96 31.50 22.50 53.95 35.95 13.50 22.50 31.50 35.95 35.95 44.95 35.95 22.50

9.95 40.50 35.95 44.95 44.95 35.95 44.95 35.95 26.95 35.95 44.95 35.95

9.95 44.95 44.95

SPACE QUEST II

SPACE QUEST III ....

STARGLIDER

STRIP POKER II

SUPER HANG -ON

TANGLEWCOD

TASS TIMES TONE TOWN

TECHNOCOP

TEST DRIVE

TETRIS

TRACKER

TV SPORTS FOOTBALL. .

UMS

VEGAS CRAPS

VEGAS GAHBLER

WESTERN GAMES

WINTER GAMES

WAR IN MIDDLE EARTH

XYBOTS

ZAK MCKRACKEN

ZANY GOLF

ZERO GRAVITY

MULTI-GAME PACKS

ACTION ST

ARCADE FORCE FOUR . . AWSOHE ARCADE ACTION

COMPUTER HITS

COMPUTER HITS II ... FIVE STAR GAME PACK

MEGA PACK HI

MEGA PACK H2

TRIAD VOL. 1

PROGRAMMING

ASSEHPRO 5 3.95

C-BREEZE 44.95

DEVPACK 89 . 95

GFA BASIC 3.0 89.95

HISOFT BASIC 71.95

HISOFT C INTERPRETER 89.95

LASER C 179 .95

LASER CDB 62.95

LOGO ST 9.95

HARK WILLIAMS C .... 161.95

HARK W. C DEBUGGER . 62.95

TEMPUS II 62.95

44.95 44.95 14.95 35.95 35.95 35.95 35.95 44.95 35.95 26.95 9.95 44.95 14.95 31.50 31.50 26.95 35.95 44.95 35.95 40.50 17.95 26.95

35.95 44.95 44.95 53.95 35.95 44.95 35.95 35.95 53.95

UTILITY

BACKUP 35.95

COOEHEAD UTILITIES . 26.95

G+ PLUS 31.50

GOGOST 31.50

HOTWIRE 35.95

IB DISK UTILITIES .. 31.50

HULTIDESK 26 . 95

NEO DESK 2.0 44.95

PROCOPY 31.50

R.A.I.D 44.95

REVOLVER 44.95

TURBO ST 44.95

WERKS 40 . 50

PRODUCTIVITY

1ST WORD PLUS 89 . 95

ART fc FILM DIRECTOR 71.95

AWARD MAKER PLUS ... 35.95

BASE TWO 53.95

CAD 3D 2.0 80.95

CALAMUS .' . . . . 269 . 95

CALAMUS FONT EDITOR. 89.95

CERTIFICATE MAKER .. 26.95

COMPUTE YOUR ROOTS . 35.95

CYBER CONTROL 53.95

CYBER PAINT 71 . 95

CYBER TEXTURE 44.95

DATAMAMAGER ST 71.95

D.E.G.A.S. ELITE ... 53.95

EASYDRAW/SUPERCHARG 134.95

EASY TOOLS 44.95

EZ-SCORE PLUS 134.95

EZ-TRACK 58.50

EDIT TRACK 179.95

FLASH 26.95

HABACOMM 9.95

HABAVIEW 19.95

HI-TECH MAIL PRO ... 53.95

HI-TECH ACCTS PAYBLE 62.95

HI-TECH GEN. LEDGER 62.95

INTERLINK 35.95

INVENTORY MASTER ... 89.95

KEY MARK 13.40

LABEL HASTER ELITE . 40.50

LDW POWER 134.50

LOTTO- FILE 17.95

LOTTO LUCK 26.95

LODWIG 134.95

LOGISTIX JR. VERS .. 89.95

HICROSOFT WRITE .... 49.95

HIDISOFT STUDIO .... 89 . 95

HDSIC STUDIO 88 .... 53.95

NEOCHROME 35.95

OCP ART STUDIO 9 . 95

PAGE STREAM 179 . 95

PARTNER ST 44 . 50

PHASAR 80.95

PRINTMASTER PLUS ... 35.95

PUBLISHER ST 116 . 95

SHADOW 26.95

STOS 53.95

STOS COMPILER 31.50

STOS SPRITES 600 ... 26.95

STOS MAESTRO 44.95

SDPERBASE PERSONAL . 134.95

SWIFTCALC 71.95

TOUCHUP 161.95

WORDUP 71.95

WORD WRITER ST 71.95

WORD PERFECT 195.00

EDUCATION

FIRST SHAPES

FIRST LETTERS/WORDS

SPELLING BEE

MATH TALK

MATH BLASTER PLUS . . MAVIS BEACON TYPING

SKYPLOT

TBI PRE -CALCULUS . . .

TBI CALCULUS

TBI ALGEBRA I

UNICORN:

AESOP'S FABLES . . .

ALL ABOUT AMERICA.

ANIHAL KINGDOM . . .

ARIBIAN NIGHTS . . .

DECIMAL DUNGEON . .

FRACTION ACTION . .

HAGICAL HYTHS ....

READ 4 RHYHE

READARAHA

WORD HASTER

44.95 44.95 26.95 44.95 35.95 44.95 89.95 44.95 44.95 44.95

44.95 53.95 35.95 44.95 35.95 35.95 44.95 35.95 44.95 44.95

PRICES SUBJECT TO CHANGE WITHOUT NOTICE - ALL SALES ARE FINAL

ComputerVisions

3257 KIFER ROAD

SANTA CLARA, CA 95051

(408) 749-1003

(408) 749-9389 FAX

A

STORE HOURS TUE - FRI 10am - 6pm

SAT - 10am - 5pm CLOSED SUN - MON

SOO/ X l^/ X E software

ALL TITLES ON DISK

ENTERTAINMENT

12 ADAMS ADVENTURES . . 221B BAKER STREET ....

ALIANTS

ALT. REALITY CITY

ALT. REAL nUNGEON

ASSDLT FORCE 3D

AUTO DUEL

BEYOND CASTLE WOLF ....

BANDITS

BISHARK

BLOCK BUSTER

BORDINO:1812

BOULDERDASH CONSTR.SET

BRUCE LEE

CASTLE WOLFENSTEIN. . . . CHAMP. LODE RUNNER ... CONFLICT IN VIET NAM .

CONAN

COSMIC TUNNELS

CRUSADE IN EUROPE ....

D-BUG

DALLAS QUEST

DELUXE INVADERS

DECISION IN DESERT . . .

F-15 STRIKE EAGLE

FIGHT NIGHT

GAUNTLET (64K)

DEEPER DUNGEONS

GRAPHIC ADVENTURES 16

GUNSLINGER

HARD HAT MAC

INFILTRATOR

JAWBREAKER

KARATEKA

KNICKERBOCKERS

KENNEDY APPROACH

LAST V-8

L.A. SWAT/PANTHER

LEADERBOARD

LODE RUNNER

MICROLEAGUE BASEBALL..

NAPOLEON AT WATERLOO .

NEVER ENDING STORY . . .

MONTEZUMA'S REVENGE...

MOUSEOUEST

MOON SHUTTLE

NATO COMMANDER

NIBBLER

NINJA

OIL'S WELL

O'RILEY'S MINE

PENSATE

PIE MAN

PIRATES OF BARB. COAST

PITFALL/DEMON ATTACK .

PREPPIE I l II

ROME i THE BARBARIANS

SILENT SERVICE

SOLO FLIGHT

SPITFIRE 40

SPY VS. SPY I « II . . .

STARBASE HYPERION

STARFLEET I

STAR RAIDERS II

STOCKMARKET

STRIP POKER

SUMMER GAMES

TAX DODGE

TEMPLE OF APSHAI

THE HULK

THEATRE EUROPE

TOP GUNNER

TRAILBLAZER

ULTIMA II

ULTIMA III

14 .95

8.95

26.95

26.95

26.95

19.95

35.95

14.95

5.35

26.95

7.95

22.50

17.95

8.95

14.95

26.95

10.95

8.95

9.95

10.95

7.95

7.95

7.95

10.95

14.95

17.95

31.50

22.50

26.95

26.95

7.95

13.50

9.95

13.50

13.50

10.95

8.95

8.95

13.50

13.50

35.95

22.50

8.95

14.95

17.95

7.95

10.95

12.95

8.95

9.95

9.95

14.95

14.95

22.50

13.50

9.95

17.95

12.95

12.95

31.50

9.95

7.95

44.95

17.95

22.50

26.95

17.95

9.95

9.95

5.35

8.95

10.95

26.95

35.95

35.95

ULTIMA IV 53.95

UNIVERSE 44.95

WINTER CHALLENGE 13.50

ZAXXON (400/800) 13.50

PROGRAMMING

DOS 2.5 7.95

DOS XE 10. 00

DISK I/O 26.95

KYAN PASCAL 62 . 95

LIGHTSPEED C 35.95

PRODUCTIVITY

ANIMATION STATION .... 79.95

ATARIWRITER+/SPELLCHK 44 . 95 ATARIWRITER 80

REQUIRES XEP80 .... 44.95

ATARI BOOKKEEPER 14.95

AWARDWARE (1050) 13.50

BANK STREET WRITER.... 14.95

BLAZ I NG PADDLES 31.50

COMPUTE YOUR ROOTS ... 35.95

DATAHANAGER 8.95

ELECTRONIC CHECKBOOK . 8.95

FAMILY FINANCE 6.95

FORMS GENERATOR 21.50

HOME ACCOUNTANT 19.95

HOME FILING MANAGER. . 6.95

HOHEPAK 24.95

INVENTORY MASTER 80.95

LETTER WIZARD 29.95

MONEY MANAGER 8.95

MUSIC CONSTRUCTION SET 13.50

NEWSROOM (1050 - 64K) . 13.50

NEWS STATION 26.95

NEWS STA. COMPANION. . 26.95

PAGE DESIGNER 26.95

PAINT 12.95

PRINT POWER (1050).... 13.50

PRINTKIT (1050) 13.50

PRINTSHOP 34.95

P.S. COMPANION (64K) . 24.95

P.S.GRAPHICS LIBRARY 1 17.95

P.S.GRAPHICS LIBRARY 2 17.95

P.S.GRAPHICS LIBRARY 3 17.95

PROOF READER 17.95

PUBLISHING PRO 35.95

RUBBER STAMP 26.95

SYNTREND 14.95

SUPER MAILER 35.95

THE LOTTO PROGRAM .... 17.95

TIMEWISE 6.95

TURBOWORD 80 "44.95

TURBOFILE 80 «44.95

* REQUIRES XEP80

VIDEO TITLESHOP (64K). 26.95

VIRTUOSO 29.95

VISICALC 24.95

EDUCATION

BUZZWORD 22

FRACTIONS MULTPLY/DIV 7 GRANDMA'S HOUSE (-10) HEY DIDDLE (AGE 3-10), LINEAR EQUATIONS ..... LINKWORD: SPANISH ....

LINKWORD: GERMAN 22.50

LINKWORD: FRENCH 22.50

.95 9.95

9.95

7.95

22.50

LINKWORD: ITALIAN .... 22.50

MASTER TYPE 14.95

PRE SAT WORD ATTACK .. 14.95 SAT PRACTICE TESTS ... 19.95 SNOOPER TROOPS CASE HI 9.95 SNOOPER TROOPS CASE N2 9.95 STATES AND CAPITALS .. 9.95 SPELLING BEE (AG 5-10) 14.95

TOUCH TYPING 9.95

QUIZ MASTER CONSTR.... 8.95 QUIZ MSTR. USA CONSTR. 8.95

AH EX I CAM EDUCATION: A+ BIOLOGY G10+ , . .

A+ GERMAN

A+ GRAMHER G4+ . . . A+ READING COMP Gl" A+ SCIENCE Gi-4 ... A+ SCIENCE G5-6 . . . A+ SCIENCE G7-8 ...

A+ SPANISH

A+ SPELLING G2-8 . . A+ U.S. GOV. G10+ . A+ U.S. HIST. G5t . A+ VOCABULARY G4 + . . A+ WORLD GEOG. G8+ A + WORLD niST. G8+ (G = GRADE LEVEL)

ATAXI |

CONCENTRATION

DIVISION DRILL

GRAPHING

INSTRUCTIONAL COMPUT

PLAYER MAKER

PREFIXES

SCREEN MAKER

SECRET FORMULA INTERM

SECRET FORMULA ADVANC

SPELL IN CONTEXT 8. . BUY 2, GET ONE FREE! CBS (AGE 3-6) :

ASTROGROVER

BIG BIRD SPEC DEL1VE

ERNIE'S MAGIC SHAPE.

17.95 17.95 17.95 17.95 17.95 17.95 17.95 17.95 35.95 17.95 17.95 17.95 17.95 17.95

8.95 8.95 8.95

DE3I&IMAZE:

MATHMAZE (6-11) 26.95

MISSION ALGEBRA (13+)13.50 SPELLICOPTER (6-11). 26.95

-6):

Tint XOIK (AGE 4-

ABC'S

COUNT AND ADD

SMART THINKER

SPELLING

SUBTRACTION

THINKING SKILLS . . . ALL 6 TINK TONKS .

8.95 8.95 8.95 8.95 8.95 8.95 39.95

UBICOU I

10 LITTLE ROBOTS

(PRE-SCHOOL) 26.95

FUN BUNCH (6-ADULT) 26.95 RACECAR RITHMETIC

(AGE 6+) 26.95

MEEKLY XIADEK ( PRE SCHOOL) :

STICKY BEAR SHAPES . 26.95

STICKY BEAR NUMBERS. 26.95

STICKY BEAR ABC'S .. 26.96

STICKY BEAR OPPOSITE 26.95

SB BASKET BOUNCE ... 26.95

STICKY BEAR BOP .... 26.95

RUN FOR IT 26.95

PIC BUILDER 26.95

saa/ X JL,/ X E SOFTWARE

ALL TITLES ON CARTRIDGE

ENTERTAINMENT

3D TIC-TAC-TOE 9 .95

AIRBALL (XL/XE) 24.95

ALIEN AMBUSH 9.95

ACE OF ACES .(XL/XE) . 24.95

ARCHON 14.95

ASTEROIDS 15.95

ASTRO CHASE 14 . 95

ATARI TENNIS 9.95

ATLANTIS 14.95

BALL BLAZER 14 . 95

BARNYARD BLASTER .... 24.95*

BASKETBALL 14 . 95

BATTLEZONE 19 . 95

BLUE MAX 19.95

BOULDERS t BOMBS .... 14.95

CAVERNS OF MARS 14.95

CENTIPEDE 14 . 95

CHICKEN 7.00

CHOPLIFTER 19.95

CLAIM JUMPER (400/800) 9.95

CLOUDBURST 9.95

CRIME BUSTER 24 . 95*

CROSSBOW 24.95*

CROSSFIRE 9.95

CRYSTAL CASTLES (XL/XE) 19.95

DARK CHAMBERS (XL/XE). 24.95

DAVIDS HIDNIGHT MAGIC 19.95

DEFENDER 9 . 95

DESERT FALCON 14.95

DIG DUG 19 . 95

DONKEY KONG 10 . 00

CART ONLY 5.00

DONKEY KONC JR 19.95

EASTERN FRONT (1941). 19.95

E.T. PHONE HOME 9.95

FIGHT NIGHT 19.95

FINAL LEGACY 19 . 95

FOOD FIGHT (XL/XE)... 19.95

FOOTBALL 14 . 95

FROGGER 14 . 95

GALAXIAN 9.95

GATO 24.95

GORF (400/800) 9.95

HARDBALL 19 . 95

INTO EAGLES NEST{ XL/XE) 19 . 95

JOUST

JUNGLE HUNT

KABOOM J

KARATEKA

KRAZY ANTICS

LODE RUNNER

MARIO BROS (XL/XE) . .

HEGAMANIA

MILLIPEDE

MISSILE COMMAND

MOON PATROL

MR. COOL

MS . PAC MAN

NECROMANCER

ONE ON ONE (XL/XE) . . PAC HAN {CART ONLY).

PENGO

PLATTERMANIA

POLE POSITION

POPEYE

Q-BERT

QIX

RESCUE ON FRACTALAS RETURN OF THE JEDI .

ROBOTRON:2084

SLIME (400/800)

SPRINGER

SPACE INVADERS

STAR RAIDERS

STAR RAIDERS II

19.95 12.95

24.95 19.95

9.95 10.00 19.95

9.95 19.95 19.95 19.95

5.00 19.95

9.95 19.95 14.95 14.95

9.95 19.95 14.95 14.95

7 .00

7.95 14.95

5.00 19.95

SUBMARINES COMMANDER SUMMER GAMES (XL/XE).

SUPER BREAKOUT

SUPER COBRA

THUNDERFOX

TURMOIL

14.95 24.95

9.95 14.95 19.95

9.95

PROGRAMMING

ACTIONI 71.95

ACTION! TOOLKIT-DISK . 26.95

BASIC XL 53.95

BASIC XL TOOLKIT DISK. 26.95

BASIC XE 71.95

DIAMOND (GEM O/S ) .... 69.95

LOGO 29 .95

MAC/65 71.95

MAC/65 TOOLKIT-DISK... 26.95

PILOT 19 .95

SPARTA DOS X 71.95

PRODUCTIVITY

ATARIWRITER 29.95

ATARIWRITER (CART ONLY)19.95

FUN WITH ART 14.95

HICROFILER 22.50

BESSK9S1

J

Etoaaa

*

Sagas

EDUCATION

ATARI LIGHT HODULE

(REQ. STARTER SET) . 9.95 HATH ENCO0NTERS 9 .95

FISHE1 PUCE (PRE SCHOOL):

DANCE FANTASY 8.95

LINKING LOGIC 8.95

LOGIC LEVELS 8.95

MEMORY MANOR 8.95

ALL 4 FOR ONLY .... 24.95

SFXHAKEZ (AGE 3-10):

ALF IN COLOR CAVES . 9.95

ALPHABET ZOO 9.95

DELTA DRAWING 9 .95

FACEHAKER 9.95

KIDS ON KEYS 9.95

KINDERCOMP 9.95

STORY MACHINE (XL/XE) 9.95

(AGE 7 - ADDLT):

ADV . CREATOR ( 400/BOO ) .9.95

FRACTION FEVER 9.95

(" - REO. LIGNT GDN)

Ifcf ■!" Tii )"iT

SPECIAL PRICE

ATARI

XE GAME MACHING

NOW ONLY

$99.95

LIMITED TIME ONLY LIGHTGUN 34.95

.S ZJF>ER S F*EC I A i »S

RECONDITIONED ATARI MERCHANDISE 30 DAY WARRANTY

*

800 (48K)

COMPUTER

$79.95

10 JO MODEM WITH EXPRESS!

$24.95

SPACE AGE JOYSTICK

$5.00.

ATARI TRACKBALL

$9.95

3- 1/2" DISKS AS LOW AS 75 CENTS

10 FOR SB. 95

100 FOR $80

1000 FOR $750

DOUBLE SIDED WITH

OLD DEMO SOFTWARE

1020 COLOR PRINTER/ PLOTTER

$19.95

(new in box) 40 COLUMNS WIDE

INC. PENS, PAPER, ETC.

«00XL COMPUTERS

64K - $64.95 16K - $49.95

ATARI

NUMERIC

KEYPAD $7.95

5-1/4" DISKETTES AS LOW AS 20 CENTS

10 FOR $4.00

100 FOR $29.95

1000 FOR $200

MOST ARE IINNOTCHED

WITH OLD SOFTWARE

subject to change.

Phone orders accepted TUESDAY THROUGH FRIDAY from 10:00 am to 6:00 pm PST. We carry a full line of ATARI products - large public domain library - write or call for free catalogue

PRICES SUBJECT TO CHANGE WITHOUT NOTICE - ALL SALES ARE FINAL

CIRCLE #109 ON READER SERVICE CARD.

by Arthur Leyenberger

I don't know. Maybe it's me. Regardless of how much I want Atari to be successful, something always happens with them that frustrates the heck out of me.

Maybe being an Atari user for so long has clouded my judgment. As an Atari user, the inner workings of Atari Corp. is really none of my business. Really. I'm also an IBM PC user. I don't get all excited when IBM does something I disagree with or something that appears to be stupid.

Atari appears to be getting their act to- gether. They promised that 1989 would see a renewed effort on their part to promote and sell the ST in the United States. It may not actually happen until the first half of 1990. That's okay with me— at least they are trying. But in the midst of this effort, the revolving door of Atari management has opened and closed once again.

Assistant vice-president of sales Joe Men- dolia is no longer with Atari. I don't know the details of his leaving. Whether he quit or was fired doesn't matter to me. It just in- dicates once again that the Tramiels are dif- ficult to work for.

In my column in the October ST-LOG I mentioned the new User Group Coordina- tor, Chris Roberts. He had big plans for uniting the users' groups across the coun- try via a special-interest group on a telecommunications service. Other plans in- cluded the publishing of a users' group newsletter by Atari to improve communi-

cations with Atari Corp. Now, before the ink has dried on the pages of ST-LOG, Chris is no longer with Atari Corp.

Atari has said many times that they are relying on users' groups to help spread the ST gospel. It's a two-way street. If they want the support of users' groups, they need to support the user groups.

Interface Wars: The Continuing Saga

I have written many times about the ab- surdity of the interface wars, otherwise known as the "look and feel" lawsuits that have plagued the microcomputer industry. It seems that Apple Computer has spent more money suing other companies with products that have allegedly infringed on the look and feel of the Macintosh Desktop than they have on research and development. You probably recall that Apple threatened to sue Digital Research because the GEM Desk- top looked too much like the Mac Desktop. As a result, DR modified the GEM Desk- top (for MS-DOS machines) so it now is less intuitive and more difficult to use. For- tunately, the GEM Desktop on the ST has not been affected.

Apple actually brought suit against Microsoft for their Windows product and Hewlett-Packard for their New Wave graphical user interface. Luckily, the courts put a stop to Apple's shenanigans. The court ruled that a prior agreement between Ap-

ple and Microsoft did indeed grant Microsoft broad rights to what Apple claims was theirs. In effect, the judge threw out the case.

Although Apple still has some sort of claim concerning icons and their manipu- lation and the concept of overlapping win- dows, this decision should put a stop to Apple's attempt to sue anybody with a graphical interface. Further, if this does happen, users will benefit from a more or less standard interface.

All graphical user interfaces have essen- tially the same elements: multiple windows, drop-down menus and icons. It's about time users need not have to relearn the basics of program operation. For example, in the MS-DOS world, the Fl function key is typi- cally used to invoke a help function. This has become standard practice and makes programs easier to use. ST software using the GEM interface is made easier to use be- cause program functions are accessed in a consistent manner. Although a user still has to learn the specific commands of a new program, the interface does not interfere with the learning process.

Perhaps the recent court decision against Apple Computers will send a signal to other companies that have been pursuing "look and feel" lawsuits. I hope it does. Programs are becoming more complex all the time, and anything that can help the user is much needed.

DECEMBER A.IM.A.L.O.Q. Computing

Something Old, Something New

At the June 1985 Consumer Electronics Show, the major Atari excitement centered around the CD-ROM player for the ST. As you may recall, it was shown together with Groliers Encyclopedia, a CD-ROM appli- cation. Atari announced that both would be available by the end of the year. Most of us assumed that it was going to be the end of that year, but since the Atari CD-ROM player has yet to materialize, we can't be sure which year Atari had in mind.

Also shown over four years ago were several products for the then-recently in- troduced 65XE and 130XE computers. One product, meant exclusively for the 130XE computer, was a Lotus 1-2-3 clone called The Professional. Developed by VIP Soft- ware, it too was going to be available by the end of the year and sell for under $100. What was interesting about The Profession- al was that it used windowing and pull- down menus similar to those found on the ST.

In order for The Professional to operate as promised, a graphical interface was need- ed for the 8-bit computers. Sure enough, Atari was demonstrating one of those too. Appropriately (if unimaginatively) called the GEM Desktop, the new Atari software was a GEM lookalike program that was said to run on all 8-bit Atari computers. You

guessed it, VIP Software was the developer. And, of course, the program was promised to be available by Christmas.

I don't mention these never-released 8-bit products to embarrass Atari. Instead, I want to show how the excitement over the ST (at the time) had carried over into the 8-bit world. It seemed feasible that, for the most part, what could be done on the ST could be duplicated on the 8 -bit computer with a little imagination and a lot of program- ming acumen.

Atari never did deliver on their promise to develop and market a GEM-like inter- face for the 8-bit computers. However, with- in the last year, two companies were each working on similar graphical interface products. Total Control Systems' Graphic Operating Environment (GOE) and Reeve Software's Graphical Operating System (GOS) were both scheduled to be out by now, but to date, only Diamond GOS from Reeve Software (29W 150 Old Farm Lane, Warrenville, IL 60555; 312-393-2317) has appeared.

The Diamond GOS package consists of a supercartridge containing the GOS and the desktop software, a disk containing various utilities for configuring the Diamond en- vironment, another disk with the Diamond Paint program and two manuals (Diamond GOS user manual and Diamond GOS programmer's manual). The cartridge is the piggyback type that allows you to insert an- other cartridge into the top of it. To use Dia- mond, you need a mouse (not included in the package). Although the product can work with joysticks, trackballs and touch tablets, the manual highly recommends the use of an ST mouse. So do I.

Diamond GOS is similar to the GEM Desktop. The initial configuration (which you can modify to suit your own system) consists of disk drive and trash can icons, one window in the center of the screen and four menu names (Desk, File, Disk and Op- tions). With the mouse plugged into Port 1 (the second joystick port), you have com- plete control over the desktop by pointing, clicking and dragging.

Only two windows can be opened at once on the desktop (compared to four on the ST). Interestingly, as you click on either of the two windows, the operating system re- reads the disk in the selected drive. Press- ing the escape key will update the window if you happen to change disks in the drive

that has the active window.

Another interesting difference between GOS and the ST GEM desktop is what hap- pens when you make a particular window active by clicking on it. The screen is repainted when you do this and the under- lying window information is lost. Like the GEM desktop, once you have configured your GOS desktop with particular windows and drive icons, you can save the desktop to disk. That way, whenever you boot your system with GOS, your familiar desktop configuration will be displayed.

As this is not a full review of Diamond GOS (see the September '89 ANALOG Computing), I won't describe all the fea- tures of the program. However, it is signifi- cant that someone (Reeve Software) has been able to create a graphical user inter- face for the 8-bit Atari computer. Since Dia- mond GOS works with most 8-bit disk-operating systems— Atari DOS 2.5, Atari DOS XE, Sparta DOS X, etc.— it can be thought of as an extension of DOS rath- er than a replacement.

Currently, only one program runs under Diamond GOS: the supplied paint program that comes with the package. Reeve Soft- ware states that they will be offering addi- tional programs in the near future, such as desk accessories, a word processor and a desktop-publishing program. If Diamond GOS catches on, perhaps other software suppliers will write programs to run under the system.

The cartridge version of Diamond GOS sells for $79.95. You'll have to add another $35 to the total price if you don't happen to have an ST mouse. There is no question that Diamond GOS brings a functional, modern graphical user interface to the 8-bit Atari. You'll have to decide if it is worth the price given the lack of additional soft- ware that is now available to work with it.

Arthur Leyenberger is a freelance writ- er who lives in beautiful New Jersey. He can be reached on CompuServe at 71266,46 or on Delphi as ARTL. r

DECEMBER A.IM.A.L.O.G. Computing

Ammwmwm w /mm mp m xmm m cm

•80 COLUMN EDITING

EDTFABLE PRINTER DRIVER

30,000 WORD DICTIONARY •MAILMFRGF.

ON 5K DISKETTE

$49;

CONNECTS TO ANY COMPOSITE MONITOR 80 COL DISPLAY PRINTER INTERFACE

$79 i

PACKAGE

12" MONO MONITOR ATARI XEP 80 ATARrWRITRR 80

$179

EVEN; BETTER

12" MONO MONITOR •ATARIWRrTER80

ATARI XF.P 80

102S PRINTER

$229

^1020

^^© $14.95

COLOR

PRINTER

PLOTTER

compi-etewitii:

2 PEN SETS •1 Rax PAPER

POWER SUPPIY &. CABLE

EXTRA PEN SETS

COLOR $3.98 BLACK $.89

COMPLETE Willi:

POWER SUPPLY

l/OCABI.E

DOS 2.5 W/

MANUAL

MWES

ATARI 810 ATARI 1050

$129.00 $169.00

RECONDITIONED

1200XL 64K COMPUTER <C A ft 2S6 ' OU)KS CF /Z ft

J^t|" XEGS COMPATIBLE ^O^

IWA3 MATRIX

PRINTER

RECON- DITIONS

dS59

OAA48K 0«« MEMORY

COMPUTER

RECON A Q DITIONP.D^P^Iy

p :

THE BIST LIGHT GUN

FOR YOUR 800/XL/XE

$35

OR THE PACKAGE

LIGHT GUN rri -4 t\ t\ CRIME BUSTERS *K 1 1 1 M

CROSSBOW >J-7 A vf J BARNYARD BLASTER

850 PRINTER INTERFACE $79.95

JOYSTICK EXT CABLES 10' $2.95

ATAR I TWO JOYSTICK SET $9.95

SPACE AGE JOYSTICK $14.95

WICO COMMAND JOYSTICK $14.95

WICO THE BOSS JOYSTICK $19.95

ATARI TRACKBALLS $9.95

ATARI SX212 MODEM $89.95

AVATEX 1200HC MODEM $89.95

DOS 2.5 W/ MANUAL $4.95

600XL (NO Transformed $19.95

400,800,850,1200XLTransfbmer $14.95

XL/XE Transformer $24.95

THE NEWSROOM Desktop Publisher By SmiNGBOARD

$15

BASIC CARTRIDGE $4.95

BASIC TUTOR (2 BOOKS) $4.95

01 X $4.95

TURMOIL $4.95

PAC-MAN (no bold $4.95

DONKEY KONG (no box) $4.95

GORF (400,800) $4.95

CHICKEN $4.95

SLIME (400,800) $4.95

O.AIM JUMPER $4.95

DEIJJXE INVADERS $4.95 JOURNEY TO Tl IE PLANETS $4.95

STAR RAIDERS $4.95

DEFENDER $4.95

FT $4.95

FACEMAKER $4.95

MATH ENCOUNTER $7.95

QMcnuGtiaBS wm the mmmmB

dance fantasy look: levels memory manor linking lock delta drawing hey diddle diddij- grandma's house fraction fever alphabet zoo

ALF

ASTRO CHASE

FROGGER

DIG DUG

MILLIPEDE

SKY WRITER

FOOTBALL

$8.95 ROBOTRON $19.95

$8.95 TENNIS $19.95

$8.95 FINAL LEGACY $19.95

$8.95 MARIO BROS $19.95

$9.95 DONKEY KONG JR $19.95

$9.95 JUNGLE HUNT $19.95

$9.95 MOON PATROL $19.95

$9.95 BATTLEZONE $19.95

$9.95 FOOD FIGHT $19.95

$9.95 HARDBALL $19.95

$14.95 FIGHT NIGHT $19.95

$14.95 ONE ON ONE BASKETBALL $19.95

$14.95 DESERT FALCON $19.95

$14.95 NECROMANCER $19.95

$14.95 RESCUE ON FRACTAUJS $19.95

$14.95 BAIXBLAZER $19.95

BLUE MAX $19.95

STAR RAIDERS II $19.95 DAVID'S MIDNIGHT MAGIC $19.95

ARCHON $19.95

KARATEKA $19.95

CHOPLIFTER $19.95

GATO $24.95

ACE OF ACES $24.95

LODE RUNNER $24.95 BARNYARD BI.ASTER (I-G) $24.95

DARK CHAMBERS $29.95

A1RBALL $29.95

SUMMER GAMES $29.95

CROSSBOW (LG) $29.95

EAGLES NEST $29.95

CRIME BUSTERS (IXJ) $29.95

MICROTI I EK (JaUha.se) $19.95

HSK SOFTWARE FOR TOE MtofflUXB

DAVID'S MIDNIGHT MAGIC $4.95

SPIDERMAN $4.95

CRYSTAL RAIDERS $4.95

REPTON $4.95

BANDITS (48K 400,800) $4.95

CLAIM JUMPER $4.95

DECISION IN THE DESERT $4.95

CRUSADE IN EUROPE $4.95

KENNEDY APPROACH $4.95

CONFLICT IN VIETNAM $4.95

NATO COMMANDER CROSSCHECK MISSION ASTEROID COMMBAT PREPPIE I THE COUNT FREAKY rACTORY LASER HAWK CRYSTAL RAIDERS ADVENTUREI.AND

$4.95 $4.95 $4.95 $4.95 $4.95 $4.95 $4.95 $4.95 $4.95 $4.95

SECRET MISSION

VOODOO CASTLE

STRANGE ODYSSEY

REPTON

HULK

AIJEN AMBUSH

JAWBREAKER

SPY VS SPY

$4.95 $4.95 $4.95 $4.95 $4.95 $4.95 $7.95 $9.95

TOP GUNNER COLLECTION

(3 GAMES) $9.95

SIUCONDREAMS0O5O) $9.95

JEWELS of DARKNESS(1050) $9.95 SILENT SERVICE $9.95

DISPATCH RIDER $9.95

SILICON DREAMS $9.95

F-15 STRIKE EAGLE $9.95

THE NEWSROOM(1050-64K) $15.00 BOOKKEEPER

W/ num keypad $29.95

HOME ACCOUTANT $29.95

SPECIALISE

NEW Ataumis

DECISION IN THE DESERT $4.95

CRUSADE IN EUROPE $4.95

KENNEDY APPROACH $4.95

CONFLICT IN VIETNAM $4.95

NATO COMMANDER $4.95

F-15 STRIKE EAGLE $9.95

SILENT SERVICE $9.95

SPY VS SPY $9.95

EIGHT SPEED C

DEVELOPMENT

KIT

$35.95

^

^m^

emmmm

SALE

ONLY $14.95

Reg. S29.95

fim rme mm smpptm

ON ALL GROUND ORDERS IN THE CONTINENTAL U.S. *

,J7>v,sfwr mm

3.5 BULK PACKS WITH LABELS

l-$.99 25 -$24.75 1000 -$750.00

3 TO CHOOSE FROM!

SM124 MONO MONITORS

$149

MEM0M WGilAmS,

TECH SPECIALTIES 2/4Meg $149.95

NEW WORLD UPGRADE 2/4Meg $139.95 ARCO BOARD l/2/4Meg $169.95

256K/lMeg CHIPS $CALL

SIT TOfcM) SMEW!!

J.AT.O.BOARD8/16Mhz $99

CMI PROCESSOR ACCELERATOR $299 Math Co-processor for CMI 12Mhz $99

Smm PRINTERS;

STAR NX1000

STAR NX1000 Rainbow

STAR NX2400 4 Fonts

9 Pin $199 9 Pin $299 24 Pin $399

mmAGE

$99

64K 8-bit COMPUTER

1020 COLOR PRINTER PLOTTER

1025 DOT MATRIX PRINTER (80 COL)

PAC-MAN CARTRIDGE

BASIC WITH TUTOR SET

Give the kids something else to play with besides your ST!

m- mm wm%Am

SI. AGON '■<

GOl.DRUNNER •JUPITER PROBE

KARATE KID PART

$29

mL $$m OF FREE w SQFTmiE*

WITH PURCHASE OF ANY NEW ST!

YOU GET Knight Ore, Tracker*Advanced Art

Studio, Guild of Theives, The Pawn, Golden

Path, U.M.S., Jinxter Sent™ Starghder, Hit

Disk, Goldrunner II, The Grail, Invasion,

Soccer, Zero Gravity, Tetra Quest, Paint Pro,

Datatneve, Neocrome, Planetarium, Magical

Math, Spelling Bee

520ST W/SSDD Drive (USED) $299

520STFM W/DSDD Drive (NEW) $499 1040STFM W/DSDD Drive (NEW) $699

(NEW) $1199 (NEW) $1799

«s $650

Mega 2ST Computer Mega 4ST Computer JRI GENLOCK SYSTEM ST/IME MODULE

Battery Backed up Clock slw ' $59 IMG SCAN Printer Scanner $89

RC AEROCHOPPER

RC Flight Simul. w/Futaba control $199 WICO COMMAND JOYSTICKS $14.95

"WcrKs only wild TOS 10

We reserve the ricftt to make exchanges for out of stock items

ST HARD DRIVE

sMwm,

ATARI MEGAFILE 30 $529

AWESOME 60+ (60Meg 28ms) $799

AWESOME 80+ (80Meg 28ms) $999

peBomdi «4Q

l§feS101gl! Reg. $199.95

THE M BEST

MClJSE.

LACEMENT MOUSE FOR THE ST!

mmmm

"i"

Golden Path

Knight Ore

Tracker

Advanced Art Studio

Guild of Thieves

The Pawn

Jinxter

Sentry

StarGlider

Universal Military

Simulator Carrier Command

ALL ITEMS REG. $59.95

$4.95 $9.95 $9.95 $9.95 $9.95 $9.95 $9.95 $9.95 $9.95

$14.95 $29.95

$49.95

Sm€ML SOETmAME^ SALE CI

HIT DISK (4 games) GOI.DRUNNER II GRAIL INVASION SOCCER ZERO GRAVITY TETRA QUEST PAINT PRO DATA RETRIEVE II & DBASE Atari PIJVNARIUM

Reg $59.95 Reg $»95 Reg $19.95 Reg $29.95 Reg $»95 Reg $29.95 Reg $29.95 Reg $49.95 Reg $49.95 Reg $99.95 Reg $29.95

NOW! $29.95 NOW! $1995 NOW! $12.95 NOW! $19.95 NOW! $19.95 NOW! $19.95 NOW! $19.95 NOW! $19.95 NOW! $19.95 NOW! $19.95 NOW! $19.95

mg:

ElmJIiMiOR

EORwmm

MAGIC SAC PLUS

w/Roms $79.95

SPECTRE 128 V1.9 $169.95

MAC ROMS 64K $19.95

MAC ROMS 128K $129.95

SAN JOSE COMPUTER

THE A T A R

STORE

640 BLOSSOM HILL RD. SAN JOSE, CA 95123 STORE (408) 224-8575 FAX (408) 224-8574

SHIPPING: ADO $5.00 TO ALL ORDERS. AIR AND INTERNATIONAL SHIPPING EXTRA. THAT'S IT.

WARRANTY: 90 DAY WARRANTY ON ALL ITEMS. TAX CALIFORNIA RESIDENTS ADO 7% SALES TAX.

PREPAYMENT! USE VISA, MASTERCARD, MONEY ORDER, CASHIER'S CHECK OR PERSONAL CHECK. PERSONAL CI IECK MUST CLEAR PRIOR TO SHIPMENT. C.O.D.: CASH, CASHIER'S CHECK OR M.Q ONIY.

Prices subject to change without notice.

Brand and/or product names are trademarks or registered trademarks of their respective holders.

Ad produced on an ATARI ST using CAI j\MUS and printed on an ATARI SLM804 PostScript compatible laser printer.

CIRCLE #110 ON READER SERVICE CARD.

mcmship:

A Complete GEM Application, Part 5

by Clayton Walnum

Iast time, we added the code needed to create a new MicroCheck ST ac- count. Unfortunately, once the ac- count was created, we still weren't able to open it. This month we'll add the program segment that'll not only handle that task but also will enable us to modify the date shown in the date informa- tion box at the bottom of the MicroCheck ST screen.

Listing 1 is the new source code for this month. You should merge it with the com- bined source code from the previous

months and delete the open acct(), do

new mnthQ, save month () and get

new dateQ stubs from the previous

portion.

Now compile the program and run it. Start a new account. After that procedure is complete, a dialog box will appear, ask- ing for the month you want to work on. Se- lect the month. The account will be opened and the information boxes on the screen will be updated for that account.

Now choose the New Date option of the Utilities drop-down menu. Another dialog will appear. Type in a new date. When you select the dialog's OK button, the date you have typed will appear in the date- information box at the bottom of the screen. Let's take a look at the new functions.

Function open acct()

This function is called whenever the user wants to open an account or has just fin- ished creating one. It gets as input a point- er to the filename of the account the user wants to open. At the beginning of the func- tion, it attempts to open the .MCK file for the account. If it fails, an alert box warns the user, and no further processing is done.

If the fopenQ call is successful, we read in the information that's stored in the file. The file format is shown below. All of the information is in character format except the account balance, which is a long integer:

Bytes 1-26 Name

Bytes 27-52 Street Address

Bytes 53-68 City

Bytes 69-78 Unused

Bytes 79-81 Stale

Bytes 92-95 Account balance (long int)

As the data is read in, it's formatted the way it will appear in the check-entry dia- log box. After reading all the data, we close the file and plug the pointers to the name

and address string into the oh spec for

each of the appropriate fields in the check- entry dialog box.

cheek_addr[CHKNAME]. ob.spec = chkname; check_addr[CHKSTREET}. ob spec = chkstreet; check _addr[CHKNAME]. ob_spec » chkcity;

In the above, check addr is the address

of the check-entry dialog box; CHKNAME, CHKSTREET and CHKCITY are the names of string objects inside the dialog box; and

ob spec is the pointer to the string to be

displayed for that object.

After setting the dialog-box strings, we

call do new mnthQ, which gets the

month selection from the user and calls the functions necessary to actually open the files. If the account gets opened okay, the flag loaded will be TRUE, and we'll call

set menu entriesQ in order to enable and

disable the appropriate entries in the drop- down menu.

Function do new mnthQ

Here, we first set the title string of the month-selection dialog box to "NEW MONTH" by placing a pointer to the string (newm) into the object's ob spec field:

concdial_addr[CANC

GJ. ob_spec a newm;

Here, cancdial addr is the address of

the month-selection dialog box and CANCSTRG is a string object within the dialog box.

The integer value choice, the button on which the user clicked to exit the month- selection dialog box, is returned from a call

to get mohthQ, the function that handles

the dialog itself. If the user exited with the OK button, we save the current month's data if it needs to be (saved equals FALSE) and call open new month Q to open the files.

Function save month ()

In this function we first take the filename of the file to save (the pointer to which is passed into the function as file) and change the extension to "BAK." We then delete any backup file that may already exist for that month and rename the old data file as the new backup file. We then open a new file with the filename pointed to by file (warn- ing the user with an alert box if we get an error), after which we write that month's data out to the file.

The first two bytes written are the num- ber of transactions in the file (in integer form). Then, using a for loop, we call

save checkQ for each check record in the

check structure, writing the data to disk, af- ter which we close the file.

Now all we have to do is save the new account balance. Our call to fseekQ moves the file pointer 91 bytes from the beginning of the file, which is where the balance is stored. We save the balance and close the file.

Function open new monthQ

The first task here is to discover which month the user selected from the month- selection dialog box. We do that by using a for loop to scan through each of the but- ton objects in the dialog to see which one is selected. (Note that this technique will work only if the button objects were creat- ed in numerical order when the dialog was first designed.) Based on which button was selected, we set the integer mnth equal to a number from 0 to 12. The value 0 represents the Month 0 file, with the values 1 through 12 representing January through

DECEMBER A.IM.A.L.O.Q. Computing

ST

December, respectively. All that's left now

is a call to open monthQ to read in and

process the data for the new month selected.

Function open monthQ

Since we're now opening a new file, we set the flag saved to TRUE. This flag will remain TRUE until we modify the data somehow. Next, we initialize some varia- bles, then construct the filename for the month we'll be opening.

After opening the file, if we find that the transaction count is zero (by reading the first two bytes from the file), we ask the user if he'd like to start a new month. We have to do this because if the user has trans- actions entered into his . AUT file (automat- ic transactions), they will be added automatically to this month's file when it's opened. This gives the user a chance to change his mind before the transactions are entered.

If the user chooses to open the file, we

call load autoQ to load any automatic

transactions. If the user chooses not to open the file, we set everything back the way it was and exit the function.

Assuming we've opened the file, the flag do—it will be TRUE, so we clear the win- dow, set the loaded flag to TRUE, set up some strings for the display and store the current month into month. Using a while loop, we read in all the checks from the file, keeping a count on the number of deposits

and the number of checks as we do. Final- ly, we initialize some strings and variables, copy the account name and the string ":Edit Mode" into the window's title bar, close the file and vamoose.

Summing It Up

The rest of the functions presented this month, though they have important roles in the workings of MicroCheck ST, do not real- ly need much discussion. Most of the programming theory used in them has al- ready been covered, so I'll give you only a quick rundown on what they do:

load autoQ loads any automatic trans- actions that may be in the user's .AUT file.

save check() saves the data for a check

to disk.

read checkQ reads the data for a check

from the disk.

clear windowQ blanks out the pro- gram's window with a white rectangle.

get monthQ brings up the month- selection dialog box and retrieves the user's choice.

get new_dateQ allows the user to

change the program's displayed date via a dialog box.

chk dateQ simply makes sure the date

dialog box in get_new_dateQ was filled in correctly by the user.

updte buttons () places new data in the

information boxes on the bottom of the screen.

And Now, the Great Cop-Out

It's become apparent to me that to con- tinue on through the entire source code for MicroCheck ST would be forcing you to sit through a lot of boring repetition. The fact is that, in the code we've covered so far, we've looked at all the major topics I want- ed to discuss and seen how they work in a full-scale program. I say, "Enough is enough!"

So we're calling it quits. On this month's disk you will find not only the code for the functions we discussed here, but the entire source file for MicroCheck ST. Study it if you're really interested in all the minor details.

In the next C-manship, we'll find a brand- new topic for discussion. (And no, at this point I haven't the vaguest idea what it will be.)

Clayton Walnum is the Executive Edi- tor of ANALOG Computing as well as the Associate Editor of VIDEOGAMES & COMPUTER ENTERTAINMENT.

ATTENTION PROGRAMMERS !

ANALOG Computing is interested in programs, articles, and software review sub- missions dealing with the Atari home computers. If you feel that you can write as well as you can program, then submit those articles and reviews that have been floating around in your head, awaiting publication. This is your opportunity to share your knowl- edge with the growing family of Atari computer owners.

All submissions for publication, both program listings and text, should be provided in printed and magnetic form. Typed or printed copy of text is mandatory and should be in upper and lower case with double spacing. By submitting articles to ANALOG Computing, authors acknowledge that such materials, upon acceptance for publica- tion, become the exclusive property of ANALOG Computing. If not accepted for pub- lication, the articles and/or programs will remain the property of the author. If submissions are to be returned, please supply a self-addressed, stamped envelope. All submissions of any kind must be accompanied by the author's full address and telephone number.

Send your programs and articles to:

ANALOG COMPUTING

P.O. BOX 1413-M.O., Manchester, CT 06040-1413

Personal Publisher

The past few Personal Publisher columns have been hard-core how- to tips-and-tricks-type articles. While I have hardly scratched the surface of what can be done using the Atari 16-bit line of computers for per- sonal publishing, I'd like to take a break. Heck, the holidays are just around the cor- ner, and it's time to work on wish lists for Santa. I've been writing about the Atari ST for more than four years now, and most of my wishes have come true by getting an editor or a publisher to send me review copies of their software (and in a few cases, their hard- ware). I'm in a pretty good position to play Santa's helper in the area of ST electronic publishing, so I'd like to make some recom- mendations as well as belatedly introduce myself to ANALOG Computing readers. I caught the computer bug in Novem- ber 1985 when we purchased a 520 ST for my wife to use as a word processor. We bought a color monitor because we knew our children would eventually want to play with the computer (not to men- tion me, the big kid in our home). We also purchased an SG-10 dot-matrix printer at the same time. By the summer of 1986, we had upgraded the 520 to one mega- byte of RAM. I was using The FinalWord for word processing, while my wife Jes- sie had switched from 1st Word to ST Writ- er 1. 7, and I approached the now-defunct ST Applications with the idea of writing software reviews.

I worked as senior production editor for Contemporary Books, the largest trade

50

by Donovan Vicha

book publisher outside New York City, and was very interested in desktop pub- lishing. I saw no reason why the ST wasn't the perfect platform to learn elec- tronic layout and design. Unfortunately, there wasn't much available for the ma- chine at the time. But the next three years saw a lot of catching up by both Atari and third-party developers.

In April 1988, 1 quit my job and began floundering about as a freelance edi- tor/designer. And now I'm about to take a job with a big financial services pub- lisher as manager of composition services and will be working on getting the com- pany into desktop publishing. Our home office now boasts our original one- megabyte 520 with color monitor hooked up to the SG-10, Supra 2400 modem and an SH204 20-megabyte hard drive; a Mega 2 with mono monitor hooked up to an Astra drive, a Blaser Star HPLJII- compatible laser printer and an NEC LC-890 PostScript laser printer.

So what do / wish for from Santa? A Mega ST4. An SLM804 with UltraScript and all of its fonts. A SyQuest 44 removable-cartridge hard disk. And at the very top of an impossible list, a 19 ' Moni- term Viking monitor.

If your wish list looks like mine, this column will probably be of little interest. But if you've got your sights on more reasonable gifts, the suggestions below should help you tailor your list so that it includes exactly those products that fit your needs.

The High End

At the very high end are products much like those on my own wish list. I'll men- tion only one here. I've seen the SLM804 in action, and while I'm warned its instal- lation process is complicated, I still want it over the two excellent laser printers I have. 'Nuff said, right? With UltraScript, the Atari laser is a killer hardware pack- age. The lack of onboard RAM, rather than being a disadvantage, makes for su- perior speed in output, which is essen- tial for professional publishing projects. It may also be possible, someday, to con- vert the laser for higher dpi output (the LaserMaster card for HP lasers, boost- ing output to 600x400 dpi, is proof that it is possible), so let no one tell you the Atari laser printer will become obsolete in a few years.

There are four DTP packages current- ly available for the ST, five if you include Publishing Partner, which has been supremely upgraded to PageStream. The other three packages are Timeworks Desk- top Publisher ST, Calamus and Fleet Street Publisher 2.0. I can recommend Fleet Street only if you already have the other three and a yen to complete your collection. Fleet Street has great poten- tial with many excellent, albeit cumber- some, type-handling features; but it lacks the ability to print multiple-page docu- ments and to flow text from one page to the next and back— two functions the oth- er programs handle inpro forma fashion. Let me state here that all of the DTP

DECEMBER A.IM.A.L.O.Q. Computing

packages have their strengths and weak- nesses. You must realize that such is the nature of electronic layout and typeset- ting, that no software package is perfect. Even the top programs for the Macintosh and IBM suffer in one way or another. Nevertheless, Fleet Street Publisher is the weakest package in the lot due to the faults mentioned above.

PageStream is the must-have program for professional publishing and creative layout needs on the ST. With Version 1.6, PageStream handles design and layout su- perbly, with tagging, rotation of text or graphics, text wrapping and a growing li- brary of excellent fonts. With its power- ful toolbox and manipulation functions (duplication, macros, rotation and group- ing), you don't really need a drawing pro- gram for creating graphics separately. It handles color printing, as well as print- ing on just about every conceivable print- er, low-end to high-end. Memory management is not its greatest strength, but it is the least stingy program RAM- wise and in terms of disk space than the other programs, meaning you can get by with the minimum configuration of a 520 and a single-sided drive.

PageStream remains the most user- friendly interface when it comes to crea- tively using the multitude of powerful functions built into this program. That does not mean it is the simplest to use, but there is usually more than one way to achieve what you want to do. Also, un- like Calamus or Fleet Street, the interface does not break down into so many specialized modes that you become easi- ly confused. PageStream is the only DTP program I can recommend to both class- es of users, beginner and expert. While the learning curve for PageStream for new users may be longer than that of Desktop Publisher, it extends over a much larger number of powerful, creative functions than the Timeworks program.

Calamus is also powerful, but when compared to the size of PageStream in terms of code alone, I still have to ask, "Where's the beef?" {PageStream is half the size of Calamus.) Calamus falls short of PageStream in a couple of categories that may or may not be critical to you: It does not support color or PostScript, and, although Calamus handles such eso- teric functions as chapter numbering and footnoting {PageStream does not), it seems needlessly complex in its user in- terface, which requires a variety of frame types with their own idiosyncratic uses.

Calamus is a high-end product for

professional-level users rather than begin- ners with no training in traditional lay- out and design. Calamus' & Compu- Graphic fonts are expensive, but that is offset by its excellent, albeit also expen- sive, font editor. Unfortunately, the pres- ent CompuGraphic fonts do not compare