These functions should help you in your number crunching abilities on your Amiga. So what are you waing for??? Go ahead and turn your Amiga on and figure out the meaning of the universe Ill Amazing ComputingPage 23 ( J 2 Megabyte Ram Board For The Amiga PC Comspec Communlcatlons Inc. ls proud to announce an exciting new product. The MICROSHARE AX 2000 - a 2 megabyte ram board for the Commodore Amiga PC. The ablllty of the AX 2000 to Incorporate 2 megabytes of ram and allow the user growth potential by the cascading of addlttonal AX 2000s, now gives the Amiga PC vastly extended. computlng power. Mountlng on the right hand side of the Amiga PC the AX 2000 connects to the expansion port. Add!tlona! peripherals which would normally be connected. to the expansion port can then be connected on the expansion port of the AX. 2000. Standard expansion bus archltecture was used ln the deslgn of the AX 2000, thereby Insuring compattbllity with ail peripherals. The AX 2000 can be used to Increase ram memory 1 or as a fast ram drive. When used to Increase ram memory the AX 2000 wlll greatly enhance the multl-tasklng feature of the Amlga PC.
Navigation texte du magazine
Click image to download PDF
P. O.Box 869 Fall River, MA. 02722 1-617-679-3109 proraj?
Future System Mcitoal Donne llan Software South Inc Tho 64 Store F'WWi Computer House Inc IdWI Century Systems Mere Computer Applications Alabama A bar Data Systems Command Computers Madison Books & Computors Glen Falls Scotia FomstHUs Kenmof B Massena Rochester Sloney Brook Romo Hcksyxfte Syracuse Cwnputers Plus Virginia Colony Ltd Dtskowjry FarrW-* Computer Center Vrgna Mere System* »WPa«p Com Soft Computers Computer*.Inc Mere Ago Computer Store Progdtms Pius Wl»con*in Cotodron Computers Computer Software Center Mom * Computer Softwi-e Sfiocoe Sound Creations TMW Software Inc Direct Access E
dm unton Computer Ctr Galaxy Computers Global Computer Center
F. Vfrjan Sotware Mdand Computer Shop Pro-VOoo F’rotesworcaf
Computer Sys Programs Unlimited Rose. Wo Computer Stero
SipCXik Software Plus Soccuvists Computer Tho Software House
Ye Ode Computer Shoppe Retail Computer Center Inc ttmnssall
Computer Outfitters Computer Ptacc Computer Speoaltes Flus
"Computer*, etc ’ JVH Software MCDof fibbing Inc Online
Computers ScecaustslV Linsug Pontiac AIWi P. rk Dearborn Novi
M-Ja.nd L«‘-ro* St Joseph Grand Rapids Wamen MiOson Neighs
Grand RafxOS Livor»a Kalanajoo Ypruslanpi Farmington Hfll*
Hunts vile Birmingham Madison Augusta Decatur Savannah Atlanta
Honolulu Hampton Faks C (mreh FaiHai Woodbnd UtTt Photo A
Computer Shop Montgomery Universal Computer System Mobfc
flilQDI omputerWest Phoeni Copperstale Bus ness Systems
Phoenix North American Digital T roaxtoois Arkonsas SiSInc
Tl o Mcro Shop CaMatnia firuwn Knows Computing CF T Century
Cerrtuter System i Chanter* Computer Suppy Computer Attic
Computer Junction Compute Literacy Bookshop Computer Hock. Inc
ComputerLand Froemert ComputerLand p! 5to:«ton Computer 7
ethnology Homo CoTputrvg Center K J Computers leyty Op Amp
Tech Books n iOjoc'i-.* Computer Ctr irc SOS Computers
Software First Software Plus llio Computer Doom Ilic Floppy
Disk Inc Dos Moines Marshafitown Tucson Tucson Renton Even'!!
Tacoma Bn'vmx Seatfio WfhQ Adi Computer & Video Bfffl Newark Upper Sandusky Columbus Delaware Akron CO um bus Favkekf Wdowjhby Mt Homo brae Ro: k Uljrtpit BA Business Computers Computer Resolution Compute-tand Ohar* ComputerLand Cf N«teS i.“I Microcomputers Inc Trio Memory Expansion Unique Computer Batavia Champaign
P. vk Rojo N*js f»jpyx. i 0 Normal Sterling Rac-no fa‘walk«o
Sani'i'giert Fond Du Lac Madsen V avsan RetSancs Claremont La
Habra Stude City
P. ilo Alto Santa Ana Sunnyyj'e San Benadino Freemont Stockton
Pomona Si- Bruno Granada H Is Hoil wood Lcs Anoetes Ridgecrest
Los Anno ten Santa Rj'-i Citrus Heights Scotts Valley Downey
Berkley Sunnyvaio Rosm ilo MoncapOlB
f. AjutoeiO Eagan Miple Grove Hdoog Mnnelonka HopJens MSN South
Bend Ft Wayne Fed Wayne
l. tpcfl Mc-hem City Greenfield IrxLJ-n-ipOitS Wes* Lafayette
rkatComcuter Ctr Bytre i Computer Computer Corner Computer
Comer Computer Peepo Inc Grog Chaney Micro Computers Inc Vons
Computers Missouri Asso: — Vid Spungfield Kansas City Columbia
Cfxesterf 4d inetepenomae Associated Computer Sor Brands Mart
Computers Computer Concepts Ins ant R'cLiy Ltd Systems Pus
Miniuipfii Entoipr irars UnhmtOd Beaxr-mon Clackamas Portland
Tigard Portland Beaverton Eugene Eugene Ken**)
D. ila B. inkCorp J & L Electronics MdKansas Computers Midwest
Conputers Tforotmd Computers Kentucky Mcro Aye Computer Store
Reality World Computivs Lovi}ifh|
r. Vji rn Busncss Machine* Software Center Intern Softwaro Mart
The Computer Ckruc Massachusetts Club Lomputer Computerland E
J Wurtcer C: General Computer Stem HCS Computer Center ICA
Video A Computer Ctr Memory Locator Ommrek Computers Pioneer
Valley Data Fqup!
Tech Computer Store The B-t Bucko!
f. l. uyljud Computer Craftsrr.
CcmputerWoris CcmpuvssiOf ViSKJO Ctr Mcro Computer Center Software Advantage Tih? Logcil Choice Inc Walden Computer! ("n Computer Ban
V. Vtey Computer* Mfgh'gan lm.; Computer Center E ts Bytes
Nibbles Chdsoa Computer Computer Suppfy Co Compusoft Wichita
Liberal Newton Manhattan Topeka Monlani AppeigryO Computer
Systems Cveat Fa ls North Ci*£Plma D TDS Computers Tr. xl
Computers North Dakoli Computer Associates The Computer S»e
tkLiilkji bjllsTye Doutto E Electroncs My Com Vic New
Hampshire Ccmc.ter Mart Cf N H Dnwryfed Computers MsitdasiK
Family Computer Cenbi*s FamJy Ccmputor Centres Famfy Computer
Cmtes Fan-f CompuWgCentres Mon is County StaSonerS Hew Mtaijto
Aoad».*my Ccmputors New Hone or Comoutor Sys Page One ffewsand
Techrvcal Concoct Nevadp Cr’r.ljry?3 Inc Compukir World
ComputorLind of Carson New Vprii Amuse B, to Shop Casco
Computer ClA Software Center Compunte Center Computer Oufet
Leigh's Computers Colorado Citaoe* Computers Computer Discount
Computer Room Ideal Computer Systems Mere Worn!
Sun Cour. tr Computers Woi) Lie Distributors Connct'evl Connecting Pen!
Mnemonics Inc Personal Computer Center Software K-n-ytom Spccrum Compute'S P*lOL5:5 Casio Video Florida A A Computers Bock Mama Commocfcro Computer Sfxcp Computer Bar Computer Image Computer Terminal!-v: Computer Ware Inc Compute'S 4 Rer. t Computers Plus CotroTK* Inc Educabon Computers Etc Family Computors Honda Book Store Gulf Coast Computer Elect M gaped Computer Center Veras Etc MSI Busrms System New Age Electron** Rainbow Computer Center Random Access Computers Sottwals Computer Center The Corn Door Tho PC Coltoclen Colorado Springs Denver Aurora Evergreen Lakewood Colorado Springs
Er-gewcod Lewngton Le*rg: cn Pennsyiygnu Aipna Orrcg. i cBE Basic Computer Systems DataSofbouo Ccmputenwaro Pite-turg East Coast Software Hershey Pittsburgh Computi'r Store Pittsburgh Tho Electronic BouUyjo No'nsfewn Tnange Computers Indana Rhodr Island
i. iTr-abona Computer Scrv Johnston Ca-rboro Grvtnsbom Warren
Hermitage Metane v Meta r« Lafayette
F. vgo Mnot bneotn Omaha Ptahsmouth Georgetown fiarwaV NoTWTCh
East Windsor Tie* Haven Cambuden lAttSfited Norwood Well r.
ley Tewksbuy Arnfierr-t C ambudge West Newton Pittsfeld
Chester R-dg-wood South Orange Rdgewood Chrttor South Dakota
Coniputi'T Business Center 15Cn«tlf5 Com pu to'I At of Memphis
So ttw. Ve Fvst Toy 5 tifte by E te C E M Cc'poraten Coton. al
V kzi Compgte-r Ago Computer Ago Computer Mxg-c Computer
FtovcLitem Compukv Time Inc MotropcAtan Compute' V«5 Search
Regency Eoucascra' Sy* Sotwairo Centre Software Library
Software Ternynal Tne Computer Erpenence Tho Computer Step
Jacksenvi lo Orlando Ocala Pennsaccia Mart Sebrmg Tamarc.
W Palm Beach South Daytona Stewart T alahasse Sarasota Gainesvilo Panama City Venoe
• Vu-onte 'Springs Brocksyxto St Petersburg Orlando Ft Walton
Beach Holy Hill Cocoa Com! Gaoios Albuouerque Aljmogerdp
Aicuquerque L« Trues Austr Brapprui Houston Houston Dalas
Aur. tn Houston Marshal Rchardton Houston Dalai Wau. ga Dalas
Witch ta Fab rod Y.'cdh San Antonio AbJcno Ocr'an City Ccium. tJ
BalVnom Rockville Balsmoro Waldorf Las Vegas Las Vegas C.arson
f. ow York Memck Latham F’uftynq White Flans.ares town Now Yo'k
D. vnan«25fU A_ts n Grand Rjp-os Petbwskoy Ann Arbor Traverse
C. ty Kalamaroo South Caroi'na Avcom Intematona' Inc Wrrst
Columbo Hpn;on Greonyillo Can»d4 Compute Or Play Atoeda
Conputerworks Aoe-.i Computer Sf op Atood.1 Da tl Pro AR od. i
Computer Shop cl Calgary At.-to The Software House Abed. i
H-ndsin Computing Aibed.1 Red Deer Mcro Systems Arteda Memory
Lane Abe da Computer King Bntsh Columbia Corti B'lL'-h
Columbia Nutec 3nM-h Columbia Spr-te B"tsh Co-umbia IrKk'f
Bi!*-h Coumfc j Super Software Bntsh Columbia CanaOan Computer
Em Uintob.1 Nvaomad
M. imtoLi ComputcrWortd Maritime* J W A ten Maritime* Kobfti-k
Mar it me* M icomp Mar it me* A.non Ontario Chatam Ccmputor
Ontario Computer land On Sir io Cemsp« Ontvio Etoct'crves ICO
t Ontario Kastug* Data Ontario The Computer Ayou Ontario
Ttiornh. l Ontario Scftwore Co Ouebirc DelSonie So. ve Oui-Lic
Microdabs Quebec Into M-’fetor Qu« t*'C La.-a Mere OutttoC
Vtson T rprxque Qx b* c Oslnbuten Vrscro Quebec Dulnbyted in
Canad» by A vita Sotware O*stntiulors Concord. On taro
Ccmpuirt Distributors Bntah Columbia Pftise4Dist Inc Southeast
Canary 1-600 661 6356 Alberta Ohio Computer Network Computors
Pius o! GhiC Earthrise Mcro Systems Earthnso Mcro Systems
Lakes Consumer Electronics Mcro Cr- frr Mcrowj. o V.igc Corti
Coast Proyammrvg.. Qua-yCcmputerApc- i'-oni Toledo Quakty
Computer App»catons T otedo Sa tan Computer Center Sandusky
Software Centro Intern Nerbi Olmsted Softw. ve and More
Cincinnati Software Connector Maytekd Hts Oklahoma Cokyui
Video A Computer BartesvJV} PCToch Second Hand Software Video
Comp Inc Ray Supply Inc Softwaro & Such Sofbyanj City Software
Supermarket Star Tech Systems Tedrow Business Products The
Woriaxg Computer Vdeo Computer Center World Computers Inc
Computers Etc Oregon Claewamas Computer Clacxamas Computers
Computron Business Sys Computron Business Sys 19 Computers
Software Center Software Express Unrv pf Oregon Bookstore Tuba
Cxkahoma City Ltwton AMIGA HAS MULTI-TASKING, DISCOVERY
SOFTWARE USES IT!
FROM NOW ON YOU CAN PRINT OR SAVE ANY SCREEN, FROM ANY PROGRAM, ANY TIME!
GRABBiT takes WYSIWYG- to the limit.
With GRABBiT you capture exactly what you see on your screen in an instant, regardless of what other programs you're running.
GRABBiT works with all AMIGA video modes, including "Hold-and-Modify".It even lets you capture images from animated programs, like the bouncing ball in Boing!
What's more, GRABBiT runs completely in the background — transparent to your other software. GRABBiT is always ready for you to use, even while you’re in the middle of another program, As if thats not enough, GRABBiT requires only about 10K of your precious RAM to operate, and it supports dozens of printers, It's not a game, it's not a toy, GRABBiT is truly a productivity power tool for your AMIGA!
We believe powerful software shuuld be easy to use. GRABBiT is one of the EASIEST programs you'll ever use! Every GRABBiT operation is triggered by one of the "HolKcys", a set of casy-to-remember key sequences that only lake minutes to learn.
Each Hotkey is generated simply by holding down the "Control" and "Alt’ keys and pressing one of the designated letter keys.
What could be easier?
You won't grow old waiting for GRABBiT to finish printing, either. When we say multitasking, we mean it. GRABBiT has u unique TPM (Task Priority Monitor] module which makes sure your other software can still run even while GRABBiT is printing. The TPM module constantly tracks GRABBiT's printing priority, making sure it is neither too high nor too low, but always just right!
GRABBIT adds a new dimension lo the AMIGAs multi-tasking capability.
GRABBiT supports dozens of different printers because it uses the standard Amiga device drivers. Any printer you can choose in "Preferences" is automatically supported by GRABBiT. You'll get the most from color printers too. Because GRABBiT supports full- color printing. In fact, we have seen amazing color printouts produced by GRABBiT on the Oki-Mate 20, a color printer costing less than $ 200.00. Of course, GRABBiT's abilities are not limited merely to printing; GRABBiT is equally adept at saving screen images to disk -yes, even HAM screens! All GRABBiT disk files are saved in the popular IFF
format, the emerging graphics standard for AMIGA. You can capture any screen to disk for slide-show presentations or later enhancement with any popular AMIGA graphics editor like AEGIS Images or Deluxe Paint. We even include a specially modified PD utility called "SEE", which allows you to view IFF image files quickly and easily.
GRABBiT's disk operations arc lightning fast because GRABBiT is written in a hybrid of highly optimized C and 68000 Assembler.
- DISCOVERY SOFTWARE 262 South 15th Street Suite 400
Philadelphia, PA 19102
(215) 546-1533 Once you start using GRABBiT you'll want it on
every disk. You can easily install GRABBiT in your system
starlup-sequence, so it will always be there when you need
With all its features this would be a great package at any price. But we think you'll agree with us that GRABBiT's most outstanding feature is VALUE! You get all the power of this sizzling new software for an unbelievably low MetaScope gives you everything you've always wanted in an application program debugger:
• Memory Windows Move through memory, display data or
disassembled code, freeze to preserve display and allow
• Other Windows Status windows show register contents and program
state with freeze and restore; symbol, hunk, and breakpoint
windows list current definitions.
• Execution Control Breakpoints with repetition counts and
conditional expressions; trace for all instructions or
subroutine level, both single-step and continuous execution.
• Full Symbolic Capability Read symbols from files, define new
ones, use anywhere.
Metefibols I A comprehensive set of tools to aid your programming (full source included): « MeiaMake Program maintenance utility.
• Grep Sophisticated pattern matching utility
• Dill Source file compare.
Filter Text file fillet Comp Simple file compare,
• Dump File dump utility.
• MetaSend Amiga to PC file transfer.
• MetaRecy PC to Amiga file transfer.
Metadigm products are designed to fully utilize the capabilities of the Amiga v in helping you develop your programs. If you're programming the Amiga, you can't afford to be without them.
Dealer inquiries Welcome
• Powerful Expression Evaluation Use extended operator set
including relationals, all assembler number formats.
• Direct to Memory Assembler Enter instruction statements for
direct conversion to code in memory.
• and Morel Log file for operations and displays,
modify search fill memory, etc. MetaScribe: The Editor
MetaScribe has the features you need in a program editor:
• Full Mouse Support Use for text selection, command menus,
scrolling or use key equivalents when more convenient.
E Multiple Undo Undo all commands, one at a time, to level limited only by available memory.
• Sophisticated Search Replace Regular expressions,
forward backward, full file or marked block.
• Multiple Windows Work with different files or different
portions of the same file at one time.
• Keystroke Macros Record keystroke sequences or predefine,
assign to keys you choose.
PUBLIC DOMAIN SOFTWARE PiM PUBLICATIONS, Inc. has AMICUS Disks 1 through 8 and MetaScope: The Debugger Fred Fish Disks 1 through 24 available at special prices Per Disk $ 6.00 lo Amazing Computing Subscribers or $ 7.00 to non subscribers (MA Ftoaidenti add 3% eale* tax) Make checks payable to: PiM Publications, Inc.
P. O.Box 869 Fall River, MA. 02722 Everyone is encouraged to
distribute this software freely to your friends, members, and
Pimm fellow 4 wMkfe lor delvary Amazing Computing Publisher: Joyce Hicks Circulation Manager: Doris Gamble Assistant to the Publisher: Robert James Hicks Corporate Advisor: Robert H. Gamble Managing Editor: DonHlcks Hardware Edftor: Ernest P. Vivelros Sr.
AMICUS Editor: John Foust Production Assistants: Ernest P, Vivelros Jr.
John David Fastlno Amazing Aurora: Ervin Bobo John Foust DonHlcks Kelly Kauffman Perry Klvolowitz George Mussor Jr.
Rick Wlreh Daniel Zigmond & The AMIGA Special Thanks to: Robert H. Borgwall RESCO.Inc.
E. P.V. Consulting Now England Techulcal Services Interactive
Tutorials Inc Advertising Sales 1-617-679-310® Amaiing
Computing™ (ISSN 085S-9480) Is published by PIM Publican one,
Inc., P.O. Box 869, Fall River, M A. 02722.
Subicrlptloni: In the U.S., 12 lisuea for $ 24.00: Canada and Mexico, $ 30.00: Oversea*. $ 35,00. Printed In the
U. S.A. Copyright C 1886 by PIM Pubilcatiom, Inc. All right*
Fleet Clfefei or Air Mell ratal available upon roqueiL PIM Publication! Maintain* tha right lo reluie any adver tiling.
Please let us know send information to: PiM Publications, Inc.
P. O. Box 869 Fall River, MA. 02722 If we don't know where you
are, we can not send you your magazine!
Rmazing Computing Table of Contents July 1986 Temple of Apshai Trilogy review ...9 Stephen Pietrowicz on the EPYX package The Hailey Project: A Mission In Our Solar System 11 Stephen Pietrowicz on this addition from Mindscape Flow: a review 13 Erv Bobo
looks at this first idea processorfor the Amiga Textcraft Plus a first look ...15 Joe Lowery inspects this first update still in beta version How To Start Your Own Amiga User Group......! .....17 William Simpson details the steps to a good usergroup.
Amiga User Groups ....21 A list of some of the active Amiga User Groups.
AmigaBASIC Tutorial ..23 Kelly Kauffman on Amiga Basic and math functions Mailing List ......25 Kelly Kauffman has created a simple mailing list program to enter and to learn by.
Pointer Image Editor ...29 Stephen Pietrowicz has produced a little pointer magic with C Forth! ......41 John Bryan starts the design for a forth application
Roomers ..45 The AMIGA looks inside Commodore at the next generation Amigas under development SCRIMPER, Screen Image Printer .49 Perry Kivolowitz completes his explanation of the Scrimper program.
The Amazing C Tutorial ......57 Busy Stephen Pietrowicz takes the podium temporarily for John Foust to explore structures and unions The AMICUS Network: Amicus .....67 John Foust offers his experience with telecommunications (which is considerable) Fun with the Amiga Disk Controllerby Dr. Thom
Sterling ..73 The AMICUS Public Domain Software Library: AMICUS Disks 1 to 10 are listed and detailed.75 Fred Fish Disks, 1 through 25: a special list of the current Fred Fish Library of Amiga Programs.....77 Departments: From the Editor.4 Letters ......6 Index of
Advertisers ..80 From the Editor: by Don Hicks User Groups We have all been there You decided you would make the plunge and buy the Amiga, but your spouse is less than pleased with your decision on another "toy". As you mount the reasons this purchase is so crucial, you know there is one more reference you should check.... It is Seven PM on Saturday and you just picked up your new prized Amiga and have put all the pieces where you think they should fit. Unfortunately, when you turn on the power, nothing
happens... The new software package, which looked so good at the dealers, came with a 200 page manual and a degree in technical documentation if you are able to read it. For Ihe third lime, you have entered data in your everyday spreadsheet, and it has completely ignored your efforts, the computer is completely "locked up". A silent blank screen sits and watches you...... These, or many other situations just as painfully familiar, almost always lead to onelhing, ask a friend.
It is not easy buying a computer for the first time and I am positive almost everyone out there searched for a compatriot to provide moral support through the purchase. This is the very heart of User Groups.
I belonged to a user group for about six months before I had any idea we were one. Back in the "old days", Ernest Viveiros and I car pooled 1o work. We talked about different things on the drive, untill one day he mentioned he had an Apple I! (not "plus"). From then on, things quickly changed.
I started asking questions such as why he got it, what good was it, what did he do with it. The questions slowly turned to, will it do this, what software will do this, how much are they.
Ernest was (and still is) a good friend, he put up with my questions and even went with me to purchase my first machine. He even took the time to help me set it up that afternoon, Superbowl Sunday.
This is a user group, ft can be as small as two dedicated friends finding their way through a maze of problems or as large as thousands of people sharing ideas. If it serves the needs of the members, it is a user group.
In no other facet of American technology is their a need for people to gather together and discuss the pros and cons of brands, or to help individuals understand how to use their machines, or even produce and distribute programs to make their machines work.
The computer is a highly technical piece of equipment that in most cases has been purchased with considerable thought and budget juggling. Support through dealers is one thing, but a friend who has experience or at least wants to learn with you, is invaluable.
I have been a member of several user groups, some national and some local. Some are better than others, a user group is only as good as the members can make it.
In a national user group, their is probably a "home chapter" in a large city with many members, where meetings are held.
However, they normally produce an extremely good newsletter and have a large volume of Public Domain software to distribute. This access may be especially welcomed by individuals in areas where there are no common interest groups. Often, it is worth the price of membership just to have access to this material.
In a local group, you must take a positive active part in the working of the club. Either as an officer or as a "working member" your contributions are needed.
In a local group, meetings are extremely important. There is always some new bit of news that is interesting. There is often a demo of a member's or developer's software. But, most important, it is a place to share ideas, develop new applications for your machine and make friends.
Because we believe strongly in the need of user groups to promote computing and especially the Amiga, we have dedicated this issue to these groups.
We have included an article on how to develope a user group, a listing of several groups around the country and articles written by members of user groups.
It is our hope that you already belong to a group or soon will.
After all, Amazing Computing is produced by a group of users dedicated to getting the word out on the Amiga.
We believe that a good user group is the best investment you can make for your Amiga.
Amiga C Compiler $ 14995 Everything you need to develop pro grams on the Amiga, including a full set of libraries, header files, an object module disassembler, and sample C programs.
New Amiga Products From The Developers of Amiga G. Unicalc $ 79.95 A complete spread sheet package for Amiga, with the powerful features made popular by programs such as VisiGilc, SuperCalc, and Lotus 1-2-3. Unicalc provides many display options and generates printed reports in a variety of formats and print image files. Supports 8192 rows of 256 columns, and includes complete on-line help.
Lattice MacLibrary $ 100.00 The Lattice MacLibrary is a collection of more than sixty C functions enabling you to rapidly convert your Macintosh programs to run on die Amiga, cills allows you to quickly and efficiently take advantage of die powerful capabilities of the Amiga Lattice Make Utility $ 125.00 Automated product generation utility for Amiga, similar to UNIX Make. LMK rebuilds complex programs with a single command. Specify die relationships of the pieces, and automadcally rebuild your system die same wav even- time.
Lattice Text Utilities $ 75.00 Eight software tools for managing text files. GREP searches for specified character strings; D EF compares files; EXTRACT creates a list of files to be extracted from die current directory; EU11D creates new files from a batch list; WC displays a character count and a checksum of a specified file; ED is a line editor which utilizes output from odier Text Utilities; SPLAT is a search and replace function; and FILES lists, copies, erases or removes files or entire directory structures.
Lattice Screen Editor (LSE) $ 100.(X) Fast, flexible and easy to learn editor designed specifically for programmers. LSE's multi-window environment provides die editor functions such as block moves, pattern searches, and “cut and paste” Plus programmer features such as an error tracking mode and diree assembly language input modes.
OTHER AMIGA PRODUCTS AVAILABLE FROM LATTICE: Panel: Screen Layout I hlities $ 195.00 Cross Compiler: MS-DOS to Amiga C $ 250.00 dBC III: library of data base functions $ 150.00 Cross Reference Generator $ 45.00 With Lattice products you get Lattice Ser- rice including telephone support, notice of new products and enhancements, and a money back guarantee. Corporate license agreements available.
Phone (312)858-7950 TOX 910-291-2190 INTERNATIONAL SALES OFFICES: Benelux: DeYooght. Phone (32 2-720-91 -28. England: Roundhill. Phone (0672) 5-4675 japan: Lifeboat Inc. Phone (03) 293-4711 France: SFL Phone (1)46-66-11-55 Amazing Mail Dear Editor: I work at a company that deals with a number of kinds of computers (including our own 11 73 and 68000 realtime machines), and employs a number of professional programmers of differing abilities.
Recently, a document was circulated at work describing a (VERY) simple C prime number algorithm, and the results of using it to benchmark six computers including the Amiga. I have copied it below. As you can see, it doesn't make the Amiga look so good.
These results, of course, are misleading: what is actually benchmarked is the computer and its C compiler.
On the other hand, at least two of the other machines -
- the IBM PC and the HP 150 (an8086-basedsemi-PC- clone) — also
used Lattice C compilers.
Knowing that the Amiga couldn't be THAT bad, I disassembled the Amiga Lattice code for the algorithm.
This revealed a basic Lattice (3.03) weakness: data is constantly moved from registers to memory and back, and from register to register, for no good reason. In addition, however, the modulo operator ('%') makes use of a Lattice subroutine named ‘_CXD33 On a hunch, I replaced Lattice's routine with my own version:
* * import export d1 = divisor = result
* * do = that which is divided = remainder xdef _CXD33 tell the
linkerwe are here _CXD33 tst. l d1 divide by 0 (tsktsk)?
Beq LEEV leave with register values alone divs d1, d0 low word = result; high word = rmndr move.I d0, d1 copy results ext.I do make result 32 bits swap d1 put remainder in low word ext.I d1 make remainder 32 bits LEEV rts take us back... The hunch proved correct! As you can see, in the "revised'1 version, the Amiga comes in second and is actually catching up on the leader (the HP 150) in the later rounds.
Sincerely yours, Dr. Gerald Hull include "stdio. h” define MAX 4020 main () int i, n = 0; while (++n = MAX) 1 = 1; while (++i n) if (n % i == 0) break; if (i == n) prints ("%d n", n);}} System 1000 2000 3000 4000 1 HP 150 10 26 46 72 2 IBM PC 13 32 62 99 3 ATARI ST 14 35 75 175 4 AMIGA 29 92 188 313 5 ATARI 800 215 748 — 6 C-64 305 1039 „ Amiga times with my revisions: 7 AMIGA 12 28 48 73 Thank you Mr.Hull, it is nice to see what a little patience can prove.
Dear Amazing Computing: I'm very happy to see you, and hope to get to know you better, i also have a few problems which I'd appreciate your help in addressing.
I bought my Amiga because I needed something heftier than my Apple II for working on a book.
Correction:! Bought a new computer for that reason. I chose the Amiga because I was helpless to resist it. My first problem is that I have many textfiles on the Apple that I need to transfer to the Amiga, and have hardly a notion how to begin.! Think I can get them out of the Apple with a simple basic program to send a character at a time through my serial interface card, but how do I get them safely tucked away in a textfile in the Amiga? Any suggestions?
To the same end (of getting my book done), I'd be oh so grateful for a good look at available and soon to be released word processors. I had planned to get Enable Write, but as its release seems to get farther away instead of closer, I may have to settle for something else. Has anybody seen enough of it and other word processors to get a comprehensive review together yet?
Thanks for being there.
David C. Thomson Versailles, KY To answer your first problem, most terminal programs will handle the transfer of data from one machine to another through a "null modem cable" connected to the serial ports. You will need a program for each machine. You may require a stripping program to provide necessary carriage returns and line feeds.
In regards to word processing, We have included a review of Textcraft plus in this issue and are planning a review of scribble! Soon. As to Enablewrite, we have not seen the product so far.... I want Amazing Computing. My wife wants me to support industry in her hometown (Fall River). Please start my subscription.
James H. Wilson Madison, Wl Dear Sirs, You truely are producing an amazing publication, and performing a great service for Amiga owners and developers. I Have had my Amiga since late September, purchasing about the 4th bought in the city of Gainesville, Florida. I was initially somewhat frustrated, having no documnetation for such essentials as the CLI and ED.! Was THRILLED to get my hands on a copy of your magazine.
klm ctip q. iz hi
• Deluxe Paint and Aegis Images compatible.
• Deluxe Print compatible.
• Many images to choose from Cars, Animals, Borders, and more.
SOFTWARE DEVELOPMENT 2519 Bonita Drive Highland, Ca. 92346
(714) 864-2846 Be the artist you always wanted to be!
Please add $ 2.00 for shipping and handling.
Deluxe Paint, Deluxe Print is a trademark of Electronic Arts.
Aegis Images is a trademark of Aegis Software.
I am thoroughly impressed with the power of the Amiga and plan to implement it in my research at the University of Florida college of Medecine, Department of Anesthesiology for data collection and analysis, graphics development, and telecommunication (not to mention such mundane tasks as word processing). 1 am tremendously excited regarding the potential of the Amiga to function in these and other tasks.
I am happy to support your publication, and look forward to many years of mutual benefit.
Sincerely, Raymond H. Castenholz, M.D. Gainesville, Florida Dear Friends, I have read all four issues from cover to cover and believe that your publication is the tool I need to make the most use of the Amiga I have purchased. Since my dealer is a 45 minute drive away and your magazine is a vital source to my computing efforts I do not want to miss an issue.
I would like to give you some input as to what I feel helps educate and inform me about this "Amazing" machine. First of all the tutorial on C has been great and I would like to see even more information on style and form. Next, is the review section. I hope you will include reviews on utilities and other languages and not just entertainment software. Next, the "Roomers" section of the magazine is very helpful in keeping spirits high on the development of extras for the Amiga. It might be nice if there was a way for you to indicate to us how much faith you had in each "roomer", say like a
percentage indicator. Last, but surely not least are the programs that have been included in the issues. They have provided insight into the C language.
Sincerely, Lynn D. Shumaker Phoenix, AZ Dear AMAZING, Flow nice to find a publication that is really putting out the kind of nitty- gritty AMIGA information we are thirsting for! The IBM Drive Interface article was great — and so clearly presented it was elegant.
Congratulations and good luck with your great new publication.
Sincerely, JohnL. Rehak Integrated Systems Garden Grove, CA_ Dear Amazing Computing, At last, my quest has ended. I recently visited relatives in the United States, and popped into a computer dealer somewhere in Michigan. At this shop I saw the most AMAZING Amiga magazine! I mean I have met my main magazine!! This magazine was incredible!!! It should come as no surprise to your now-inflated egos that the magazine was called, oddly enough, AMAZING COMPUTING.
Of course, I bought the magazine, which brings us to my problem.
You see, such an informative magazine is addictive if you own the most addictive computer in town. But alas, in this town, this AMAZING magazine is not readily availble. The only solution to my problem seems to be to bribe you people at PiM Publications into sending me more of these AMAZING magazines.
I hope the bribe worked, John Rampelt Waterloo, Ontario, CAN Thank you all! We will continue to attempt to provide the type of information you want. However, please remember, we are in constant need of your article submissions. We need all the Amazing Writers we can get.
It’s Finally Here!! A Database Management System for the AMIGA with all the EXTRAS:
• EXTRA Easy to use. No new language to learn, just look at the
• EXTRA Flexibility, with pull down menus, automatic filing and
• EXTRA On line help, Just press for command information.
• EXTRA LOW introductory price... JUST $ 49.99!!!
Eastern Telecom Inc. 9514 Brimton Drive Orlando, FL 32817 We’ve got ALL the EXTRAS for you.
Order NOW! (305) 657-4355 Temple of Apshai Trilogy Review by Stephen R. Pietrowicz CIS [73047,2313] People Link: DR RITZ Usenet:... lihnp41pur-eeigouldihouliganisrp Many of the games first available for the Amiga were adventure-type games. Most of them were text adventures that had been out for other computers for several years.
New adventures that exploit the Amiga's graphics and sound capabiiites have appeared during the past few months.
Epyx Inc. recently released an old favorite into the Amiga graphic adventure market, the Temple of Apshai Trilogy.
This program combines three separate programs, "Temple of Apshai", "Upper Reaches of Apshai", and "Curse of Ra", All were available for almost four years on many different systems.
This fantasy adventure lets you explore the Apshai area and battle monsters to gain tame and fortune. If you've played Rogue or Hack on a mainframe or minicomputer, you'li be pleasantly surprised at the similarities and the differences.
Along with the program disk, the package includes an instruction manual with over 80 pages and a quick reference card. The manual includes the background of the adventure you’re about to take.
In "The One Minute Adventurer" section, you'li get a quick explanation on how to select your character, purchase armor and weapons, and start your adventure. I suggest that you follow the manual’s instructions in the "Rules of Apshai", and experiment with the programs puil-down menus. The manual isn't specifically written for the Amiga; it was written for the Apple 64 128 Atari versions.
It was a bit confusing when I clicked the mouse to clear the main title screen and the screen went blank with no explanation, i expected to get a selection menu as the manual stated.
The first pull-down menu has entries to create, enter, save, load, delete and obtain a summary of your characters. First time players should load the predefined character "Brian Nailfoot" from the game disk, especially if you haven't played any adventure-type games before.
Your character has 6 attributes — strength, constitution, dexterity, intelligence, intuition, and ego. Each attribute is rated from 3 to 18, 3 being the worst rating and 18 being the best. These physical and mental attributes all help to determine how you perform in different situations during your adventure.
A higher strength will help you carry more and do greater damage with your weapon against opponents. A low intuition might make you miss that trap in front of you after you've just checked to see if a trap was there. All of the attributes are clearly explained in the manual.
The "create" option will randomly select your attributes and the silver you start with. The "enter" option lets you select your own attribute values, silver, weapons, and armor. By making all your attribute values 18, filling your backpack with arrows, getting a magic sword and magic armor, you can be nearly invincible, but you'll lose the challenge of the game quickly.
When you randomly create your character, you’ll start with a limited amount of silver pieces. You'll use the silver to "outfit" your character for battle. The second menu lists the types of armor and weapons you can buy.
For example, the different types of armor you can buy are leather, ringmail, chainmail, partial plate, and full plate. The better the armor, the more expensive it is. Since you've always got to watch your silver pieces, you can even haggle with the innkeeper selling you his wares! If you make an offer that's too low he’ll complain that he has children to feed, or that he cant believe the price you want to buy that weapon for! You can also buy healing salves which help heal your wounds when you're adventuring.
The third pul! Down menu lets you choose which adventure, and which level in that adventure you wish to start. When you start adventuring, movement while inside the temple can be controlled by the mouse or the keyboard. Surprisingly, each is equally easy to use.
Your character moves through each room picking up treasure, searching for traps and secret doors, and battling monsters. Monsters vary in strength and type as you move lower into the dungeon. You have to be very careful to watch your fatigue and wound levels.
If your fatigue level drops to zero or below, you've got to rest; if your wound level drops to zero, you're dead. The more you're carrying, the more fatigued you'll be, so don't be too greedy! Monsters lurk around every corner, and if you collapse from fatigue, they'll show no mercy.
The variety of monsters is quite amusing, especially in the second adventure. You'll do battle with everything from giant rats to killer tomatoes! You can communicate with some monsters, such as drunken sailors. They will allow you to pass without bother.
Battle with monsters is not arcade style. You'll take turns with the monster to decide what to do. You have the options of attacking, thrusting, parrying, shooting your bow, or running away. The bow is quite handy when doing battle with really nasty monsters since you can shoot from a distance, and the monster can't hit you until it is near you.
1 really enjoyed the extra touches that were put into the game. When your adventurer moves down the hallway, you can watch him move his arms and legs as he walks. The information window shows a little monster peeking over the window's edge. The reference card will help you remember the game's commands.
The only things I'd like to change in the program are the room descriptions, and the room layouts. When entering a new room, you must either look up the room description in the instruction manual, or from a pull-down menu. It would be more enjoyable if the descriptions were added to the main screen, since you'll tend to go through the dungeon without constantly looking up the room descriptions.
It would also be nice if the rooms were drawn to frt the descriptions. The rooms are plain and empty, except for the treasure or monsters that might be inside each room.
The Temple of Apshai Trilogy requires a one disk, 512K Amiga system. The disk, unfortunately, is copy protected, so you'll have to be careful when you save games to the disk.
EPYX, Inc. 1043 Kiel Court Sunnyvale, CA 94089 Disk $ 39.95 PiM Publications, Inc. wishes to thank all of the fantastic Amiga owners who have accepted Amazing Computing as a resource for their Commodore Amiga. The response was far beyond our expectations. Your letters praised Amazing Computing™ and encouraged us to continue to deliver Commodore Amiga information and programs.
Amazing Computing’s success does have one draw back, our Back issues are in short supply.
If you have not purchased a copy of the above issues from your Amiga dealer, or he has sold out, PiM Publications will make these back issues available for as long as they last at our Back issue price of $ 3.50 Please send to: Back Issues Amazing Computing PiM Publications, Inc.
P. O. Box 869 Fall River, MA 02722 If you want to be sure you do
not miss a future issue, then subscribe!
Amazing Computing is available by subscription for 12 issues: $ 24.00 in the United States $ 30.00 in Canada and Mexico $ 35.00 Overseas First class rates available upon request Please allow four to six weeks for delivery Amazing Computing™ your resource to the Commodore Amiga The Hailey Project: A Mission In Our Solar System A Review By Stephen R. Pietrowicz Hailey Project is a simulation of solar system travel. You are asked to become a pilot for the Planetary and Lunar Aerospace Navigation and Exploration Team, P.L.A.N.E.T. The package includes a cassette tape with the briefing for your
mission. (Those without a cassette player can read the transcript of the tape, included in the Top Secret mission dossier).
Also included in the package are a small star chart to help you navigate, a quick reference guide, and a booklet with coupons for several astronomy related books, magazines and posters.
Unfortunately, the disk that is included with the package is copy-protecled. It would be nice to be able to make a backup copy of the program, especially since the disk must be left writable to let the program record your times for successful missions.
Many companies have hastily been porting software from other machines to the Amiga in hopes that software starved owners will buy it up as soon as it hits the shelves.
Unfortunately many of these ports don’t take advantage of the Amiga's powerful capabilities. Mindscape decided instead to rewrite "The Hailey Project" to use Amiga's sound and graphics with impressive results.
After a quick browse through the rest of the dossier, you are ready to begin your mission.
Make sure you have your sound turned up for the opening sequence. You’ll be impressed with She digitized music!
Once you have typed your name for the mission records you doni have to use the keyboard again. You use the mouse to control the functions of your ship.
You begin each mission by flying away from Bailey’s Comet.
Instructions for each of your missions are flashed up on the screen as you complete each leg of the flight. You attain new rankings each time you successfullycomplete a new mission.
In your first mission ranked as "Raven”, you must navigate to and land on Earth. As you rise in the ranks, you must navigate to a greater number of destinations to complete each mission.
Clues also become slightly more cryptic in some cases. Two screens are available to help you navigate from the comet to your mission objectives: the control panel, and the radar screen.
On the control panel screen, a small switch below the viewing screen allows viewing only in a horizontal plane. A control cluster allows you to choose which direction you fire your thrusters to put your ship into motion.
Another control lever sets the power level of the thrust adjustments. The high setting allows for quick acceleration when you are far away from the planet or moon you wish to land on, and the low setting is used to navigate when you are ready to land.
The astrological constellations along with the direction indicator give you a reference point to your mission objective after locating it using the radar screen.
The radar screen helps you orient your ship to locate your mission goals. The names of the constellations on your star chart circle the screen and are used as reference points.
The zoom in and zoom out gadgets let you adjust the radar to put the planet you wish to fly to on the outer border of the screen. The legend at the bottom of the screen adjusts as you zoom in and out, and gives the distance from your ship to the outer edge of the screen in millions of kilometers.
Once you have computed the distance to your goal, and have noted which constellation is close to it, you are ready to fly to your destination.
You use the viewing screen gadget to scroll to the constellation you noted on the radar screen. Since the distance you have to travel is veryl argo, your ship is equipped with "hyperspace" capabilites. Increasing your ship's speed to 300,000 KM second puts it into hyperspace mode.
While in hyperspace mode, the distance you are covering is shown on the screen. When you get close to how far you want to travel, pressing either mouse button will stop your ship.
Now use the radar screen to re-orient yourself again, and fly closer to ihe planet. When you get close enough to the planet, you will be able to see it on the viewing screen, and the distance to the planet will be shown.
When you get close to a planet or moon, you have to find a landing site.The landing site will be automatically locked in once you pass over it while you are in orbit. The ship must be less than 100,000 KM to land. The theme music begins playing to remind you that you are closer than 100,000 KM from the planet.
You will be able to find the landing site more easily if you use the viewing gadget to sweep back and forth on the planets surface. When the landing site is found, the locator will flash and beep. Clicking on the automatic landing system will land your ship.
COLONY SOFTWARE 931 w 21 ST NORFOLK VA 23517
(804) 625-2089 BE; 5
(804) 625-1945 FileCraft!
Data Base Manager — $ 79.95 Easy-To-Use, w 4 Ready-To-Use Data Bases, Pop-In the disk — and START USING THE PROGRAM — IMMEDIATELY!
Powerful, Fast, and Tested.. Programmable- Data Files addressed, outside DBM.
Great Documentation — BUT YOU WON’T NEED IT.
Mail Merge — $ 25 — Use w FileCraft! (above) to merge letters created with TEXT- CRAFT and data base names addresses.
Makes personalized form letters — EASILY.
Point-of-Sale — $ 99.95 — Cash register inventory Sys.
ALL OTHER COMMERCIAL AMIGA SOFTWARE, Approximately 20% OFF!
Lowest Prices — Write Call for Catalog Hints — $ 5 To Be Released (Real Soon Now); SLIDE SHOW CONSTRUCTION SET -$ 25 MARION-THE-LIBRARIAN — $ 40 RENTAL SOFTWARE Access our DISK LIBRARIES for AS LITTLE AS $ 2 DISK — RENTAL: 1000+ Disks of IBM-PC software converted to 3-1 2” disks. (Use w Transformer software, w o 5"drive.
100+ disks of AMIGA software.
Now you will receive your instructions of where to fly next.
Each mission ends by flying back to Hailey's Comet.
(Hailey's Comet is always shown on the radar screen as a blinking dot so you can distinguish it from planets). If you accidently crash into the planet you are trying to land on, you receive a 5 minute penalty which is added to your score.
Planets and moons are shown as different colored circles on your viewing screen, and do not have any details on them to make the 3D transformations easier. For example, Earth is completely blue. After landing on any of the planets or moons, your viewing screen shows a scene you might see if you really did land there. Some are quite impressive!
1 do not particularly like the hyperspace mechanism that Hailey uses.! Found it a bit boring having to wait for my speed to increase back up to 300,000 KM everytime I dropped out of hyperspace. Other than that, flying the ship is quite easy since you control everything on the ship with the mouse.
There is even a mission description gadget that will tell you what your mission is in case you did not make note of it when you landed. (This has come in handy a few times already!)
Trying to go completely out of the solar system results in termination of your mission, and you are sent back to the comet. I discovered this after 1 completed the last leg of the Falcon mission. It seemed a bit harsh at the time, but I'll never try it again!
The Hailey Project claims to be a real-time simulation, and also claims to have accurate model gravity. Neither of these claims is true.
A timer on the viewing screen keeps track of how long you take to complete each mission, but reducing your speed to zero stops the clock and lets you orient yourself without any time penalties.
As a test of gravity, I tried to fly as close as I could to the sun. 1 stopped about 1000 KM above the sun, and waited to see if it's gravity would pull my ship in. It didn't. As a further test, I set the speed control on low and moved in closer. I was able to stop at 0 KM away from the sun and nothing happened!
Despite these inconsistencies, Hailey Project is definitely worth buying, especially for children. It is entertaining while at the same time educational. It should provide hours of entertainment for you and your whole family.
"The Hailey Project: A Mission In Our Solar System" runs on an Amiga system with 256K, one disk drive, mouse, and KickStart 1.1. It has a list price of $ 44.95. ft is available from: Mindscape, Inc., 3444 Dundee Rd., Northbrook, IL 60062.
• AC* Reviewed by Erv Bobo Subtitled an idea processor for the
Amiga, FLOW is just a little more than that, having
capabilities of creating outlines, keeping an appointment
schedule, even serving as a filing system.
Although the on-screen action resembles ThinkTank, a similar program for IBM and Macintosh, FLOW seems easier and faster to use because of the implementation of the Intuition interface — mouse and pull-down menus. And, because it resides on a Workbench disk, there should be no problems in making a working copy or in installing it on a hard disk.
To show you exactly what FLOW can do, several examples are included in the drawer labelled Examples. Click it open and you will see a file labelled "Amiga Magazines". In opening this file, you’ll see Iwo entries "AmigaWorld" and "Amazing Computing”. Guess which one we're going to try.
With the mouse, you put the I-beam- shaped cursor next to the AMAZING listing, then go to the SubMenu, puli it down and click on Expand. Now the tile opens to show you a listing of every issue of AMAZING — all two of them, as of the time FLOW came to market.
Clicking on either of these entries and clicking Expand will open that file further to show you the contents of that issue.
Had we, at the outset, chosen Expand All, every entry in the AMAZING file would have been opened with one mouseclick. Going in reverse, we can close all or part of the file in much the same way: with the cursor at a subheading, click on Collapse and the entries under that heading close up. Click on the main heading and choose Collapse and the entire file closes to show just the one entry — "Amazing Computing" So what? You have both issues right here and you can open either one and see the table of contents.
As for outlines, you learned how to do that in school and, even though today you simply jot things down on scraps of paper, it's easier than turning on the computer, booting this and that, making entries and saving them and.... In the first place, FLOW gives you a Find feature. If you want to quickly locate, say, the Super Spheres listing, select Find and when the requester box appears type in a keyword from the title. Quicker than you can open issue one, FLOW highlights the entry for you providing it is a heading or subheading.
In the second instance, your school outlines were done on notebook paper and, if you did them well, much erasing and rewriting was involved. With the Cut, Paste and Copy features of FLOW, it is rather like having each line of your outline on a separate strip of paper, to be moved, arranged and rearranged until you have it right.
To create such a file, type in your title. For the next entry, a subheading, tab once. As soon as you tab, FLOW recognizes your first entry as a heading and converts it 1o bold type. Enter your subheading and on the next line, for the body of your outline, tab twice.
Again, the tabbing operation tells FLOW the last entry was a subheading and it changes to bold type. The result is a neat, clean form, suitably indented and with all headings in bold, making the later reading or scanning quick and easy.
With other options from the pulldown menus, you can change headings; cut, copy and paste; replace or erase headings and subheadings; and alphabetically sort entries in either ascending or descending order.
Although the term "what-if" is usually reserved for the multiple models that can be created with a spreadsheet, it is just as descriptive of what you can do with FLOW. Jot down your ideas as they come to you and later experiment by changing the order of events or entries until you have the one sequence that is exactly right for your project.
And speaking of projects, though FLOW uses text rather than text and symbols and though it uses a vertical list form instead of horizontal, there is probably no reason why it could not be used effectively to set a sequence of the timing of events usually called Critical Path Analysis.
Documentation for FLOW is sparse, about forty-eight pages, but you should be up-and-running after following the initial walkthrough in the first chapter. After that, the possibilities of the program will only be limited by your imagination.
ThinkTank was a successful program because it filled a need and FLOW should emulate that success because it fills a similar need for the Amiga. Although, as I did, you may not see that until you've worked with the program. Once you do, you'll find it to be indispensable.
New Horizons Software
P. O. Box 43167 Austin, Texas 78745 Disk $ 99.95 AMIGA DISK
UTILITY The First Disk Repair Kit Available: Restore deleted
files: Repair errors: Recover data from damaged files: Edit
in HEX or ASCII: Simple control using mouse: Complete
Documentation describing the disk and all the sector types
Diskwik gives you total access and control of your disks far
beyond that which DOS allows. DISKWIK has features for the
novice and advanced user, including such life saving features
as restoring deleted files, and eliminating any errors on the
disk except those due to defective disks. The INFO option will
give you block type, filename, bytes in file, protection
status, and more... The documentation included is worth the
price alone. In it you will learn how data is stored, how the
directory works, and all the different types of sectors are
explained. Diagrams matching the screen on your monitor make
it easy to locate and identify the different sections. All
this and more gives you the knowledge to fix corrupted disks,
or just experiment.
Advanced features include editing in HEX or ASCII, copy blocks to the same or another disk. Re-format tracks, correct checksums, open a file to a ram disk to save one or more individual blocks for later use.
DISKWIK fully utilizes the mouse to make moving around the disk as easy as the push of a button. All this for only $ 49.95 makes it a true value. DISKWIK is available from:
P. O. Box 665 Glendora, CA 91740 (SIS) 334-0709 Dealer Inquires
invited TEXTCRAFT PLUS A (Pre)REVIEW by Joseph Lowery (Amuse,
New York Amiga User's Group) If this isn't a healthy sign,!
Dont know what is. Imagine a company whose product is often
bundled with the hottest new computer. A pretty safe,
comfortable spot, right? No reason to put yourself out. Just
sit back and rake it in. What you'd expect, right?
Welt, take a look at TextCraft Plus. The folks at Arktronics (TextCraft Plus programmers Mike Rivera, Ralph Stefan, and Eric Thomassian) have taken an acceptable product, cut the cuteness and gimmickry by about 85%, doubled the productivity possible and broken new ground as well! Plus, they have maintained the only decent connotation of an "entry-level word-processor", and that's ease-oi-use.
TextCraft Plus now operates as a task on the Amiga. It appears in a sizeable window, using your Preferences color (either the Workbench or intuition variety). You can open multiple windows of TextCraft Plus and cut and paste between them. TextCraft Plus can even print from one window while you edit the same document in another (although this slows printing considerably).
The other major shift in TexlCraft Plus is in its handling. A menu item entitled "Select” has been added which allows you to quickly highlight everything from a single character to the entire document. Then you can act upon what you have selected — and do anything TextCraft Plus can do: cut, copy, erase, make bold, underline, single or double space, flush left, flush right, justify — the whole gamut. This concept is referred to as the "noun verb user interface." As in "Sentence — Italicize" or "Page — Erase."
Also, you no longer need to change gears before you select.
Previously you had to switch to the style brush, choosing an option such as underline, and highlighting your text with the style brush and then return to the editing mode. Now, with TextCraft Plus, highlight text by dragging the mouse (or choosing an option from the drop-down Select menu, or use one of the first five function keys) and choose your "verb."
You return to editing with one click of the mouse.
The original TextCraft's main appeal for me was its WYSIWYG capability ("What You See Is What You Get" — I love to pronouce it "Wizzywig"). The "Print Previews" common to many other word processor's make it difficult, if not impossible, to do certain tasks such as charts and number tables.
TextCraft Plus has taken this one step further and will allow you to toggle the headers and or footers into view.
(Incidentally, both open their own window so that you can have more than one line of text in each.)
TextCraft Plus is claiming support for IFF text files now, and in a future release will be able to intermix your Images or DeluxePaint pictures with your text. Now that's wizzywig I Other notable improvements include vastly improved directory handling, form saving and loading, better cursor movement through the document, auto-saving of back-up, merging of text files, and page breaks.
A major enhancement is the inclusion of a mailmerge feature for the printing of form letters and the like. TextCraft Plus uses a very simple procedure for producing the merge list and the main document. At the top of the merge list type the key words, like this: "First Name, Last Name, Address."
Then skip a line and start your list: "Joe, Schmo,322 Kokomo."
Save this as a "Merge List" and then draft your main document. To use the information in your Merge List, you use double brackets around your key words: "Dear«Last Name», Can I call you «First Name»? As a happy homeowner at «Address»..." FIRE YOUR EDITOR.
And put Microsmiths* TxEd to use for you.
? FAST display updates — more than TWENTY TIMES as fast as "Ed".
? Designed from the ground up to take advantage of the Amiga user interface.
Very easy to learn, use menus for online help.
Simple, elegant set of commands, Alternate command keys shown in menus allow fast command entry for experienced users.
Compact code works well with Amiga’s multi-tasking.
The first Amiga directory requester that doesn’t make you wait.
? All around utility editor is good for programmers, and also useful as a simple word processor. Great for use with terminal programs.
? Pronounced “Tex Ed" as in “Tex Ed. The Faster Editor in Silicon Gulch.” To order, send $ 59.95 in check or money order plus $ 2.50 postage and handling to: Microsmiths’ TxEd. P.O. Box 561, Cambridge, MA 02140. Tel.: (617) 576-2878.
Mass. Residents add 5% sales tax. Amiga is a trademark of Commodore-Amiga, Inc. Designed by C. Heath.
Dealer inquiries invited.
To print the final documents select "Print Merge" and follow the prompts.
Very simple, very impressive.
Help Is available on three levels.
"Quick Reminder" brings up a screen, similar to the original TextCraft, explaining the symbols residing in the ruler (which you can now hide).
"Keyboard Help" is a scrollable listing of the keyboard equivalents for all the TextCraft Plus commands, including a wide range of cursor movement and text scrolling. One such handy combination is "Control + nun" where "non" is any number on the numeric pad and which will whisk you to the top of that page. I have dreamed of such a feature.
The final help resource is the set of tutorials which now reside as a separate file on the disk. These have been streamlined and "de-cute-ified” while maintaining the key animation sequences. Blessedly, these routines have been speeded up; watching the cursor crawl across the screen never was my idea of a fun way to spend the afternoon.
I mentioned above Arktronics' plans to intermix IFF graphic files and text.
They also speak of supporting multiple fonts much as the new Notepad on Workbench 1.2 will. I admire and respect this committment to one's product and strongly feel that this attitude will go a long way toward convincing the public of the Amiga's staying power.
Release date and up-grade policy of TextCraft Plus have not as yet been set by Commodore-Amiga. However, the most hopeful (ASAP and free, respectively) have not been ruled out. Commodore-Amiga would do well to go by following through with this exciting enhancement. TexlCraft Plus is one steep up-grade.
P. S. I have to confess. I kind of miss the flapping cursor.
Maybe a "bird toggle?"
• AC- MICROSMITHS, IIMC.
P. O. Box 561, Cambridge, MA 02140 HOW TO START YOUR OWN AMIGA
USER GROUP Los Angeles Amiga Users Group by WILLIAM SIMPSON
Thora you sit, night after night... 14 hours on Saturday and
Sunday; adjusting the color preferences on your Workbench,
thinking, "Is this FUN or WHAT?". Yes, its fun playing with
your Amiga. But after awhile, no matter how you use your
computer, it's more fun when you can share your ideas and
experiences with someone else who can APPRECIATE all the
astounding things your Amiga can do.
The Solution? Have plenty of Amiga buddies. Ah, but there's the real problem; how do you find lots (or a feast a few) people who have the same earnest belief that if a computer cant address 8 megabytes of ram it should only be discussed when the conversation turns to ancient history?
The Answer? Form an Amiga user group. At a minimum, you will find lots of people 1o appreciate your latest version of the start-up sequence; and probably someone to show you how to improve it!
Beyond socializing, opportunities to exchange information and problem solving without making a long distance call to Commodore; user groups give you quick and free access to the latest public domain software and easier access to manufacturers and distributors of Amiga hardware and software.
Especially when a computer is new on the market, like our Amiga; the need for joining or forming a user group is even greater. Right now, we are all still trying to learn how to enter the CLI; let alone learning the intricacies of our Operating System. At this moment we are creating the common knowledge of Amiga users two years hence; and rather than each of us reinventing the wheel; a user group allows us to jointly become aware of the latest methods and mutually evolve them for the benefit of us all.
There are still more benefits of user grouping including the gratification of seeing that article you wrote printed in your group newsletter, and the advantage of DISCOUNTS on purchasing that 2 megabyte memory expansion you've been dreaming about.
So, now that we've decided that it's worthwhile to form or join an Amiga user group; what is the next step? Gather together a core of people who will help.
You probably already know some other Amiga users; call them up and start making plans. If you're using a modem, get on line with folks in the vicinity. Put an ad in your local newspaper, "Amiga Users Unite!".
If all else fails try hanging around your local Amiga dealer.
When you see someone browsing the Amiga software — start talking. This is a good opportunity to mention one of your greatest assesls in creating a user group — your Amiga dealer. If you create a good relation with the dealer, it will benefit both the group and dealer on a continuing basis.
Start now! Get to know the manager of the store; perhaps a specific person has already been designated to work with user groups.
Don't let the fact that the dealer sells more than one kind of computer deter you. He wants to sell Amigas or he wouldn't have them in stock. If a group of Amiga users identify with his store, he will sell software, more peripherals and more computers. Very frequently, if a dealer can tell a prospective Amiga customer that there is an energetic user group in the area, the customer will feel more secure in making the purchase. Make your relationship with your dealer symbiotic. Each should benefit and enhance the other.
The first way the dealer can help is by displaying a sign up sheet for people interested in belonging to your user group, if that sheet is kept near the demonstration computer, you WILL get signatures. When you are preparing the sign up sheet, take the time to make it look good. The dealer has been given lots of pages of Amiga clip-art to use in preparing his own advertisements. Perhaps he will allow you to photocopy something appropriate as a heading for your sign up sheet.
After you get names and phone numbers of interested Amiga owners, try to determine the best time to have a meeting.
Initially, you may want to meet in someone’s home. This keeps the cost down and maintians an informal atmosphere for friends to gather and have some laughs.
Because of the popularity of the Amiga, you may find that even initially there are quite a tew people interested in joining your group. In that case, again, talk to your Amiga dealer.
He likes people to come into his store. Perhaps he has a meeting room already set aside for just such a purpose.
Otherwise, he might be willing to keep his store open late on a particular night so that you can hold your meeting. If you really have a supportive dealer, he may be willing to list your meeting date and time in his advertisements in the newspaper. In our local group in Los Angeles (the Los Angeles Amiga Users Group), our supporting dealer, S.O.S. Computers, actually SUGGESTED the idea of including advertising for our group in their ads. All of the ideas in this article have been tried, and work. Give them a try!
If your membership becomes too large for the dealer to accomodate, or if the dealer is not willing to provide free space; start contacting service organizations. Banks, Savings and Loan associations, churches, the Y.M.C.A.; all of these organizations have community meeting rooms which they will allow you to use for free, or on a low rental basis. There is a room out there. Make the calls and it will appear.
After the location is determined, the next step is notifying the universe that you are having a meeting. Again, there are several methods for getting the word out. Start a phone campaign. This will work to notify the folks who signed your TX£ OXATOX ST££Q 'FX Cess yR- for tfvc AMIQA Take advantage of your AMIGA'S speaking powers with THE ORATOR. THE ORATOR allows you to compose text m either regular English. Or using the Phoneme method (or a combination of both) A complete text editor permits you to change the spelling o! Words in order lo get just the right sound. You have complete
control over the Rate, Pilch, Tuning, Voice, and Mode of each individual phrase by simple, mouse controlled sliding bars and boxes A phrase can be any length up to 140 characters, and at least ZOO phrases can string together in a single continuous file. Your story, poem, jokes, or whatever, along with theirvoice settings, can be saved in a compact sequential file that you can use in your own BASIC programs. THE ORATOR also comes with THE PHONEME TUTOR, a program that makes it easy to learn the Phoneme method of text input Includes complete documentation and a utility program for use in your
Requires the AMIGA with 512K memory, one disk drive, and AbasiC or Amiga BASIC. Both versions are included on the disk Price; S39.95 postpaid COD add $ 4 (Indiana residents add 5% sales tax) Mail check or money order to Till; (N AI.I I k ((ITT At, I i;: S()l 1- t Iniurr.silv Commons Suite:«)k South Howl, to 41 (;5." liiltl' 234 -1401 AMIGA is. i lr. Mlfm. nk nl P. ommmlore Aimrj. i Itir sign up sheet. It is certainly more effective to have a person to person conversation with everyone you can.
However, there are probably a sizeable number of Amiga owners out there that would like to attend your meeting but haven’t heard about your group yet. Put an ad in your local paper. If there is a computer section in the paper, so much the better. Again, put the word out on every bulletin board (electronic and otherwise) that you can find.
I know you've read enough of this article to remember the Amiga dealer. Post notices of your first meeting. Not just in one dealer's store. Go to every Amiga dealer within 25 miles of your meeting location. And don't forget Non-Amiga dealers. If someone sells disks, or software (maybe your local bookstore), or printers; people owning Amigas will wander in from time to time.
When preparing your notice of the first meeting, be sure to mention that everyone should bring a blank disk for FREE SOFTWARE, and a checkbook for membership dues.
(Please don't let them forget their checkbooks!)
So, the meeting date is set, everyone knows to bring money; are we ready? Not quite yet. Several actions should be taken to prepare for the meeting. If the first meeting goes well, everyone will be back again and again. Take the time to organize every aspect of that meeting before it begins.
First, prepare a questionnaire. It should request the Name, Address, Telephone Number and Interests of each person attending (whether or not they intend to join the group — MORE PHONE NUMBERS!). You should also find oul it the prospective member has owned other computers and the type (will old Atari users outnumber the C-64 abusers?), and a self-rating on computer sophistication — from Beginner to Programmer or Developer. With this information you will be able to create Special Interest Groups (S.I.G.s) that will accomodate the needs of everyone.
Secondly, in order to come through on your promise of FREE SOFTWARE, you’ve got to obtain some public domain software, tf you've been reading this magazine, you know that Amazing Computing is a good source for buying Public Domain sofiware.
Other sources include other Amiga user groups (see the listings in various computer magazines and newspapers).
Most user groups are more than willing to share their library of software, usually for the price of one membership in their group. In addition, there are regular advertisements for public domain software for the Amiga in this and several other magazines.
After you've purchased some software; it must be copied.
When we copied our first disk of software for our first meeting, most of us didn't have a second drive. After 40 copies, one can easily sing a few bars of the "switchin’ the floppies blues". Share the load of copying software, and try to use people that have two drives! How many copies can you make? Enough to trade to everyone who shows up with a blank disk, plus an additional number for those folks who didn't know to bring a blank disk but are willing to pay for your disk or software. There’s no doubt that you'll have to guess, but it's probably better to over-estimate than not to have enough
disks lor the people who came to the meeting to gel software.
At our first meeting we had approximately 15 people attend.
At our second meeting, about 35, and at our third over 60.
As l said before, the Amiga is a popular computer. To put these numbers in perspective, we didn't do any advertising, other than phone calls, until the third meeting.
If you end up with extra copies of your disks, they can always be used later for people who missed your first meeting; or you can copy over the disks with the progrmas you intend to distribute at your next meeting.
It is especially important in the first few meetings to maintain some sense of stability. The users attending the meetings want to be sure that you are dependable and that the group is viable. To that end, try to verify that your meeting location will be available on the same day and lime for at least the first 3 months. By the end of that time your group will probably have out grown the location anyway. Always be on the lookout for a larger room with better facilities.
As you will be collecting money for dues and possibly software disks, it is important to open a bank account. The best option is to try to open an account at the same bank where your personal account is placed. Frequently a bank may be unwilling to open an account for an organization until you provide by-laws and a list of officers.
If you determine that by-laws are necessary prior to opening the account, prepare tentative by-laws to hand out at the first meeting. Your prospective members won't want to take the time to read or discuss the issue of by-laws, but it can't be avoided. By explaining the necessity and having them printed up previously, there can be discussion and a vote without too much wasted time.
If you are able to promise the attendees that there will be a demonstration of some new software; they will be more willing to sit through the by-laws process. Talk to that beneficent dealer about the software demonstration, and remind him to bring along some extra copies to sell after the meeting.
Where do you get the by-laws? The best place to find them is through other user groups. In this case, it makes little difference that the other group is for Macs, PC’s or C-64's.
With a little modification, their by-laws will be fine as your bylaws. In future columns I will address the problem of the content of by-laws, in more detail.
As I mentioned previously, it is important to have some kind of entertainment at the first meeting. Whether software is demonstrated by the dealer, or whether a developer shows off his work in progress, or whether you schedule a hoola- hoop contest; you should have something special to conclude the evening. Also, refreshments never hurt!
After you have pinned down some special demonstration, you're ready for your first meeting. The process I've described is not the only way to begin a user group. There are many variations on this theme. Some groups do not collect dues. Some do not have by-laws. The newsletter and even refreshments are not mandatory. Some user groups sell their public domain disk rather than trade for a blank disk. The only minimum requirement is to have semiregular meetings.
After all this work, the lingering question in your mind may be; "Hey, is it still FUN?" The answer is yes. Each time you plan a meeting it gets easier. You will find at least a few members as dedicated as yourself, and they will be willing to help carry the responsibilities of moving the group forward.
Then, just sit back and enjoy the interchange.
The best way to find volunteers is to waft for someone to comment to you "Why didut you have a...". Your response should be, "That's a great idea, why don't you have that ready for the next meeting." If someone has the energy to complain, redirect their energy to action. If the members want something done, they will provide the manpower to do it. If they don't provide the workers they don't really want the thing done. I think this explains in part the great differences between user groups; each is a manifestation of the attitudes of its members.
Of course, if all this is too complicated, way too much trouble; you can always sit there night after night 14 hours on Saturday and Sunday, adjusting the color preferences......
• AC* NETCH COMPUTER PRODUCTS ANNOUNCES: 68881 FLOATING POINT
COPROCESSOR BOARD for A & FAST — ASYNCHRONOUS 68881 OPERATION
WITH A MAXIMUM CLOCK RATE OF 16.5 Mhz II LOW COST DESIGN — USES
INEXPENSIVE 68010 CPU EMULATING 68020 COPROCESSOR INTERFACE I
UPWARD SOFTWARE COMPATIBLE WITH THE 68020 — ALL SOFTWARE
DEVELOPED FOR THIS BOARD WILL RUN ON 68020 SYSTEMS (This is a
low cost way of entering the 68020 market).
EXPANSION BOX NOT REQUIRED — INTERNAL PIGGYBACK CONFIGURATION REPLACES 68000 CPU.
SPEED INCREASE OF 300% TO 500% OR MORE FOR MATH INTENSIVE PROGRAMS I COMPLETE SOFTWARE PACKAGE INCLUDED WITH ONE YEAR OF FREE UPDATES (+ handling charge).
OPERATION TRANSPARENT TO USERS — EMULATOR LOADED AT BOOT TIME, DOES NOT AFFECT AMIGA.
BUNDLED SOFTWARE: Emulator, Manx Aztec C and Lattice C Floating Point Libraries, Assembler Tools (Allow Motorola Floating Point mnemonics to be freely mixed with 68000 code and assembled with standard AMIGA assemblers), substitute for Motorola Fast Floating Point software library.
PLANNED SUPPORT; Fortran, Scientific Library (FFT, Matrix Algebra, etc.), and other languages.
INTRODUCTORY PRICING: FPU-1 FPU-2 FPU-3 Bare Board, Software, Documentation and Manual, parts list $ 149 Assembled and Tested without 68881 Math Chip, Software, Manual $ 269 Assembled and Tested with 68881 Math Chip, Software, Manual $ 459 NCP PO Box 645 Monrovia, CA 91016
(818) 334-1002 Send orders to: Add S3.00 lor shipping & handling.
• hould be by choc* or Money Order. California Realdents add 6%
©r a Aimm C®aM©im o n©nn; By David Lipshutz Treasurer, Amuse, New York Amiga User's Group David Lipshutz has his own ideas as to where an Amiga User Group should go. He expresses his belief in the need for a collective effort in supporting the Amiga. We offer this space to express his ideas and to raise our readers awareness of the support the Amiga should receive. We ask for your response and or alternative suggestions.
The Amiga is a grassroots computer. The success of the Amiga is dependent on those of us who own and support the machine. Word of mouth is Amiga's most effective marketing tool, and the Amiga community is an invaluable ally in helping to develop new software capabilities. Amiga owners are motivated and dedicated, some might even say fanatical. Many of us have sacrificed time, energy, and money in support of the machine, often without hope of personal gain. It seems natural now to seriously consider forming a broad coalition of Amiga owners, user groups, developers, dealers, and distributors. A
national organization would provide focus, structure, and resources, for the purposes of (1) increasing the Amiga's visibility utility, (2) for encouraging the development of third- party products, and (3) education, training and dissemination of information.
Consider, for example, the press. Unfortunately, many publications have chosen to ignore the Amiga, unless they have something negative to say. This is due to an absence of information, the close-knit relationships that some publications maintain with their advertisers, and the self- perpetuating myth that the Amiga is a toy (and that Commodore is a manufacturer of toys). Despite its efforts, Commodore has not been able to fill 1he information vacuum and dispel these myths. A national organization could develop and nurture press contacts, provide demonstrations to reporters, distribute press
releases and promotional material about new products and capabilities, and sponsor "media events". Some examples of possible media events could include: an all-Amiga conference or fair; demonstrations to institutions and professional associations; and the production and distribution to cable companies of videotapes created exclusively by the Amiga.
A national organization would provide the Amiga community with a platform, and the credentials necessary to promote the Amiga effectively. In fact, the formation of a national organization could, in itself, attract media attenlion.
The Amiga community must begin to focus and leverage its technical capabilities. An umbrella organization is the only way to maximize this effort. It would enable the sponsorship of seminars for the purpose of attracting and educating software developers. It would allow us to assist developers by creating and providing new development 1ools. The organization would be in a unique position to expand the base of public domain software by providing funds for development and an outlet for distribution. Projects could be funded, aimed at improving the operating system. In essence, a national
organization would become a definitive clearing-house for technical support, documentation, bug reports and fixes, and training. We would be able 1o "grease the wheels of progress", so to speak.
Fred Fish and John Foust (on behalf of the Amicus Network) have both done a magnificent job of collecting, cataloging, and distributing public domain software. Their efforts have provided an enormous amount of useful and entertaining software. Imagine how much more productive they might become if they had the backing of a high-profile organization capable of supplying appreciable resources.
How will it be possible to fund and provide support for a national coalition? First, through the public support of well- known and respected individuals in the Amiga community (and Commodore itself, if possible). Endorsements will provide legitimacy to the organization. Second, advertisements and articles such as this one will be sent to Amiga-dedicated and general magazines. Simultaneously, public domain disks will be commissioned and distributed that contain the same appeals for participation. Software publisher's mailing lists and dealers' lists could be the next step. In this way, a
broad-based and effective drive can be mounted at a relatively modest cost. If we can induce participation by 50% of all Amiga owners at a membership fee of $ 20.00, we can generate an annual budget of $ 1 million or more. Other activities could increase the amount endowing a budget that would allow the organization to hire a full-time technical and marketing staff that would help carry out the organization’s objectives.
Ours is a mutually interdependent community, each interest group generates strength from drawing on the resources of the others. Currently, the most important thing we can do is to strengthen our own ties, and reach out en masse to attract the entire computer establishment. A national nonprofit organization is the ideal means to accomplish these ends, and in so doing, help to secure a bright future for the Amiga and ourselves.
• AC- Amiga Users Groups North American Digital BBS 3512 East
Grant Road Tucson, AZ 85716 Voice (602) 323-7897 Please don't
call during business hours 1st Amiga Users Group 543 Old Colony
Road San Carfos, CA 94070
(415) 595-5452 Robo City News $ 12.00 Year AmigaBoard! BBS Stuart
Sanders, Malibu, CA Voice (213) 477-4728 Gene's Machine BBS
Ridgecrest, CA Los Angeles Amiga User's Group Mr. William
Simpson 1711 Altivo Way Los Angeles, CA 90026
(213) 661-7959 Baha'i Faith Center 5755 Rodeo Rd, Los Angeles"
3rd Tuesday of every month,@7:30 pm Sacramento Area
Computer Club 2nd Tuesday, Fairoaks Library 1 -916-944-7400
George Leone San Fernando Valley Amiga User's Group
(818) 786-8624 Valley Federal Savings Bank, corner of Reseda &
Nordhof, Northridge. Every first Tuesday of the month,
@6:30pm Valley Computer Club Amberse M. Banks Librarian
505 Ryan Avenue Modesto, CA 95350 National Capital Area
P. O.Box 18088 Washington, DC 20036-8088 GURU $ 18.00 Year George
Washington University, Bldg. C 3rd Saturday of every month,
@1:00pm Amiga Info Xchange BBS Charles R. Goodman 225 S. Clair
Drive Panama City, FL 32401 Voice (904) 763-4926 Central
Florida Amiga Club Mr. T. Lee Kidwell Founder 1056 Neeiy
Street Oviedo, FL 32765 CFAC Newsletter $ 25.00 Year Additional
Family Members, $ 7.50 ea.
Micros Etc, 515 E. Hwy. 436 General Meetings on 1st & 3rd Tuesday of each month Space Coast AMIGA User's Group Mike Dalton President
P. O. Box 2098 Merritt Island, FL 32952
(305) 452-4737 Space Coast AUG Newsletter $ 15 Year, $ 10 Half
Year, $ 2 Month Merritt Island Public Library Every 2nd
Wednesday of the month @ 6:30pm Tampa Bay Amiga Group Billy
W. Combs Treasurer 920 South Rome Avenue Tampa, FL 33606
(813) 251-2480 Amiga Atlanta Andre Freen Box 7724 Atlanta, GA
(404) 676-0384 The Workbench $ 3Q.00 Year Eagle Rock Commodore
ComputerClub James R. White, Amiga Librarian 2100 Belmont
Avenue Idaho Falls, ID(208) 524-5464 Eagle Rock News Idaho
Falls Library Third Friday of every month @ 7:30pm AAUG
Algonam Amiga Users CRS in Algonam II 2nd Monday @ 7:00 PM
1 312 658 3040 1 312 658 6136 Commodore Hardware User's
Group Greg Chantey 1322 Fairview Drive Greenfield, IN 46140
(317) 462-3748 The C*H*U*G$ 15.00 Year Warren High School
Cafeteria, 9500 E. 16th Street, Indianapolis Third
Wednesday of each month, @6:00 pm AmigaS! G Public Domain
Library Fort Wayne Amiga Users Group Tony Vassiliadis
President 183 Oak Park Drive Roanoke, IN 467B3
(219) 672-3001 IPFW Campus, Student Union Building, Rm. 226 Date
Usually Changes @6:30pm Indiana Amiga Advisors Dennis
Graham President 912 South Brown Avenue Terre Haute, IN
(812) 234-5099 Indiana Amiga Advisors Newietter $ 12.00 Year
Spectra Computer Systems 1100 Ohio Street Terre Haute 4th
Tuesday of every month, @7:30pm Amiga group of the Boston
Computer Society Dept, of Transportation, KendleSq.
Amiga users meet 3rd Tuesday Amiga Tech Group meets IstTuesday BBS Window 617 868 1430 BBS Wonderland 617 665 3796 Baltimore Amiga Users Developers (BAUD) Ed Hopper Club Coordinator 243 West 31st Street Baltimore, MD 21211
(301) 467-1034 Commodore User's Medium Baltimore Area Computer
Club (CUM- BACC) William J. Kolodner President
P. O. Box 479 Reisterstown, MD 21136-9998 CompuServe 75026,1074
Amiga SIG PDS Library... AAAmiga EoinCain
P. O. Box 4272 Ann Arbor, Ml
(313) 662-1520 Amiga User Group Pontiac Michigan Edmunton
Computer Center, Inc. 2548 Orchard Lake Rd. Pontiac, Ml
48053-2435 Call for time 1 313681 8800 Les Jenkins Gateway
Amiga Club, Inc. 14850 Phelps Bridgeton, MO 63044
(314) 739-5181 Bridgeton Trails Library 3455 McKelvey Rd Every
first Wednesday of each month @ 7:20pm The Amigans
P. O. Box 411 Hatteras, NC 27943 Apprentice & Journeyman
$ 25.00 Year Greater Omaha Commodore User's Group Fred
P. O. Box 241155 Omaha, NE 68124
(402) 896-0136 Amiga SIG Nebraska Amiga Users Group Paul Loto
P. O. Box 2414 Lincoln, NE 68502 Jersey Amiga Users Group Perry
Kivolowitz 271-4522 Hill Center NJ Eric Lavitsky 745-2839 New
Mexico Commodore User's Group Wait Stanley
P. O. Box 37127 Albuquerque, NM 87176 Dimensions $ 12.00 Year
AMICUS? H.V., Hudson Valley
P. O. Box 1168 Wappingers Falls, NY 12590 Jim Meyer 914 297 8759
Ralph Blanchette 914 266 5606 Computer Emporiam Main St., New
Plats NY last Thursday of the Month, &PM $ 10 per year
Newsletter, "Vox Arnica" Amiga Mouse User's Group BBS Joseph
P. O. Box 148 Ceulral Islip, NY 11722 Amuse, New York Amiga Users
Group Joe Lowery 151 1st Avenue, Suite 182 New York, NY 10003
(212) 269-4879 5am-3am 7 days
P. S. 122,150 1 st Ave. At 9th St., NYC 1st and 3rd Thursday of
each month at 8PM ISTThurs. For beginners and end- users 2ND
Thurs. for developers and hackers Commputer Users Group of
Rochester Steve Collins President
P. O. Box 23463 Rochester, NY 14692
(716) 334-8991 Economy Amiga User's Group 189 Pinewood Road
Hartsdale, NY 10530
(914) 683-8912 EAUG Newsletter ATOP Development BBS 11914 Girdled
Concord, OH 44077 Voice (216)352-8471 Ohio Valley Amiga
User's Group Eric Hanson President 3115 Bellewood Avenue
Cincinatti, OH 45213-1603
(513) 351-0945 Location Varies Last Tuesday of each month @7:00
pm Amiga Computer Enthusiasts Mark Fulton President 1111
N. St. Charles 16 Oklahoma City, OK 73127
(405) 787-7273 Okihoma City Community College 7777 South May
Avenue (Conference Room A) First Tuesday of every month @
6:00pm The Northwest Amiga Group
P. O.Box 1140 Oregon City, OR 97045 NAG RAG $ 2.00 per month or
$ 24.00 per year Bonneville Power Administration Auditorium 3rd
Tuesday of every Month @ 7:00pm All memberships are due on
January 1st East Hills Amiga Group Pittsburg, PA Data Softique
Computerware 928 Presque Isle Drive 1st Wednesday of every
month, @7:00 pm Carolina Amiga Users (CAUSERS) Ray
Marsh President 2224 Airport Road West Columbia, SC 29169
(803) 782-2213 GADGET $ 5.00 initial fee Avcom International,
Beacon Hill Block 2224 Airport Road, West Columbia, SC 2nd
& 4th Wednesday of every month, @7:30pm Amiga User's Club
of Houston Joseph Manby 6525 S. Gessner 3100 Houston, TX
(713) 981-1507 ComputerAge 7535 Westheimer, Houston 2nd & 4th
Sunday of the month, from 2:00pm-5:00pm Olympia Amiga Users
Group Noah Sherman 4104 Amber Ct. SE Olympia, WA 98501
(206) 943-8257 South Sound Community Center Once a month
Washington Amiga User Group "WAG" Pres. Richard Medved 2nd
& 4th Thursday 7:30 1-206-659-9044 Amiga BitMappers Mr.
P. O. Box 1641 Milwaukee, Wl 53201 Public Service Announcement BBS Dorothy Dean Milwaukee, Wl Amiga SIG London Amiga Club Bob
Rutter London, Ontario, Canada 451-0228 Althouse College, Room
2029, London Ontario Second Monday of each month, @7:00 pm
Pacific Northwest Amiga Association 10851 Sheilbridge Way
Richmond, B.C., Canada V6X 2W8
(604) 273-2243 Panorama Newsletter $ 25.00 per year General
Meeting — 2nd Wednesday of ech month, @7:30 pm
• AC* AmigaBASIC Tutorial By Kelly Kaufman CIS [70206,640] In
this installment, we'l! Go a bit deeper into variables and some
of the different numerical functions you can perform on them.
The next 6 functions are the "easy" stuff, following these 6,
we'll go into the trigonometric functions of Mbasic.
And first up is.... ABS: The "ABS" function returns the absolute value of an argument given in parenthesis. Example: X=ABS(-38) In this example, X would equal 38. Note that this feature DOES retain the decimal point and any places behind it.
CINT: CINT rounds off an expression to the nearest integer. Example: X=CINT(12.8323) X now would equal 13... rounding 12.8323 off.
INT: INT drops off the decimal point and keeps the integer value. It DOES NOT round numbers off. For rounding, use CINT. Example: X=INT(12.8323) X is now 12, dropping the.8323. RND: You'll probably be using RND a lot if you are going to be doing any game programming in Mbasic. This function will generate a random number between 0 and 1. Here are a few examples: X=INT(RND*100) Generates a random number between 0 and 100.
X=RND*100 Generates a random number between 0 and 100, but will not be an integer. It is advisable before your program does it’s random number generation, to include the statement "RANDOMIZE TIMER." This will "SEED" the random number generator, thereby giving you more authentic random numbers.
SGN: SGN returns the value of a number as it relates to 0.
For instance, if an argument is less than 0, a -I will be returned. If the argument is equal to 0 then a 0 will be returned. And if the value of the argument is greater than 0, a I will be returned. Examples: X=SGN(3) X will be 1 X=SGN(-3) X will be-1 X=SGN(0) X will be 0 SQR: SQR returns the square root of a number. Example: X=SGR(9) X will be 3, the square root of 9.
Well so much for the easy stuff. Now here's the list of the trigonometric functions of Mbasic, just like I promised.
ATN: ATN returns the arc tangent of the argument.
Example: X=ATN(2} X will be 1.107149 the arctangent of 2.
COS: COS returns the cosine of an argument in radians.
Example: X=COS(100) X will be.8623189-the cosine of 100.
EXP: EXP returns the base of natural logarithms to the power of the argument. Example: X=EXP(3) X will be 20.08554-The natural base.
LOG: LOG returns the logarithm of the argument. Example: X=LOG[1.6) X will be.4700037, the logarithm of 1.6. SIN: The SIN function will return the sine of the following argument. Example; X=SIN(100) X will be -.5063657, the sine of 100.
TAN: TAN returns the tangent of the argument. Example: X=TAN 1.777) X will now equal -4.780646, the tangent of
1. 777. If your trigonometric needs exceed the commands given in
Mbasic, there is a table on page A-17 of your Mbasic manual
that describes formulas for 21 other trigonometric functions.
Another function that you will be using as you start making larger programs, is the FRE function. This function informs you as to how much memory is left in your Amiga. There are three areas we can look into. The entire system, the Stack, and Basic programming area. We won't concern ourselves with the Stack for now.,.that will be in a later installment of this tutorial. Here is the method for checking your remaining memory.
X=FRE(-1) Returns the total number of bytes left in the ENTIRE system.
X=FRE(1) Returns the number of bytes left in Mbasic’s List window. That is, the total number of characters left to program in. For example if it returned 5000, then you would have space left for 5000 more characters worth of programming.
These functions should help you in your number crunching abilities on your Amiga. So what are you waiting for??? Go ahead and turn your Amiga on and figure out the meaning of the universe!]!
2 Megabyte Ram Board For The Amiga PC Comspec Communications Inc. Is proud to announce an exciting new product. The MICROSHARE AX 2000 — a 2 megabyte ram board for the Commodore Amiga PC.
The ability of the AX 2000 to incorporate 2 megabytes of ram and allow the user growth potential by the cascading of additional AX 2000s, now gives the Amiga PC vastly extended computing power.
Mounting on the right hand side of the Amiga PC the AX 2000 connects to the expansion port.
Additional peripherals which would normally be connected to the expansion port can then be connected on the expansion port of the AX 2000. Standard expansion bus architecture was used In the design of the AX 2000, thereby Insuring compatibility with all peripherals.
The AX 2000 can be used to Increase ram memory, or as a fast ram drive. When used to Increase ram memory the AX 2000 will greatly enhance the multl-tasking feature of the Amiga PC. With more memory available to the system It Is possible to have more tasks running simultaneously or a greater amount of memory available to each of the tasks. Software developers will find the AX 2000 a must, allowing a great reduction In compile assembly time, thus leading to a real savings In terms of development costs.
The MICROSHARE AX 2000 Is available from stock, for Immediate delivery.
Suggested Retail Price: Canadian $ 1276.00 Cdn Funds
U. S. $ 899.00 U.S. Funds (F.O.B. Toronto) Dealer Enquiries
Invited For further information contact: Comspec
Communications Inc. 153 Bridgeland Ave., Unit 5 Toronto,
Ontario M6A 2Y6
(416) 787 0617 Amiga Is a registered trademark of Commodore
Business Machines Mailing List In AmigaRASIC By Kelly
Kaufman One of the best uses of a computer is to track
This mailing list program will hold a list of peoples names, addresses, phone numbers (both work and home), city, state and zip codes. After information has been keyed in, it can then be printed out on mailing labels for use on letters, packages, or whatever use you may have. This program requires AmigaBASIC. For single drive users, this program will work best with AmigaBASIC and this program on your workbench diskette, Type the program listing into the LIST window and SAVE IT BEFORE YOU RUN IT!!! If any section of the program doesn't perform properly, compare your listing to the one listed
below. Good luck!
Hailing List Prog: Mailing List by Kelly Kauffman 1 May 31, 1986 WINDOW 1,"Mailing List VI.0",16 PRINT PRINT "Enter the Filename of your Mailing List" PRINT "or Press [RETURN] to create a new List. " Print PRINT INPUT fil$ IF fil$ =”" THEN GOTO mnu OPEN fils FOR INPUT AS 1 INPUT 1, maxrec dimsize=maxrec+100 'allows for 100 more records to be entered 1 in one session than was originally in the A lower number 'file. Change as needed, 'will not eat up as much memory.
DIM F$ (dimsize), ln$ (dimsize), as(dimsize), c$ [dims ize) DIM s$ (dimsize), z$ (dimsize), hp$ (dimsize), wp$ (dim size) CLS LOCATE 15,30 PRINT "Total Records;maxrec FOR rec=l TO maxrec LOCATE 17,29 PRINT "Reading Record:";rec LINE INPUT 1, ln$ (rec) LINE INPUT 1, F$ (rec) LINE INPUT 1, a$ (rec) LINE INPUT 1, c$ (rec) LINE INPUT 1, s$ (rec) LINE INPUT 1, z$ (rec) LINE INPUT 1, hpS (rec) LINE INPUT 1, wp$ (rec) NEXT rec rec=maxrec CLOSE 1 mnu: CLS COLOR 0,1 LOCATE 1,34 PRINT " " '11 spaces LOCATE 2,34 PRINT ” COLOR 1,0 PRINT "Mail List”; COLOR 0,1 PRINT " " LOCATE 3,34 PRINT " " '11 spaces COLOR 1,0
PRINT SPC(14);"Choose an option by pressing the appropriate key:" PRINT PRINT ”E)dit a record," PRINT PRINT SPC (4);"D)isplay a record."
PRINT PRINT SPC (8);"P)riot a record," PRINT PRINT SPC (12);"M)ailing label print."
PRINT PRINT SPC(16);"L)eave Mail List."
PRINT PRINT SPC (20);"S)tore records to disk."
PRINT PRINT SPC(24);"+)Add a record."
PRINT PRINT SPC(28);"-)Delete a record."
PRINT Print "Press a key (E D P M L S A + -) "; menuchoose: r$ =INKEY$ IF r$ ="" THEN GOTO menuchoose r$ =UCASE$ (r$) IF r$ =" + " THEN GOTO add IF r$ ="M" THEN GOTO mail IF r$ ="S" THEN GOTO store IF rS="L" THEN GOTO leave IF r$ ="E" THEN GOTO ed IF rS="D" THEN GOTO display IF rS="P" THEN GOTO prt IF rS=" — " THEN GOTO del ‘only getE through here if they didn't press 'one of the options.
BEEP GOTO menuchoose add: GOSUB displayform rec=rec+l LOCATE 4,14 LINE INPUT ", F$ (rec) ", ln$ (rec) LOCATE 6,14 LINE INPUT LOCATE 8,14 LINE INPUT " ", a$ (roc) LOCATE 10,14 LINE INPUT " ", c$ (rec) ", s$ (rec) ", z$ (rec) ", hp$ (rec) ", wpS (rec) LOCATE 12,14 LINE INPUT " LOCATE 14,14 LINE INPUT " LOCATE 16,14 LINE INPUT " LOCATE 18,14 LINE INPUT " LOCATE 21,1 mesa$ ="Is everything Okay" GOSUB yn IF yn$ ="N" THEN rec=rec-l GOTO add END IF mesa$ ="Add Another Record" GOSUB yn IF yn$ ="N" THEN GOTO mnu GOTO add disDlayform: CLS COLOR 0, 1 PRINT PRINT PRINT PRINT II First Name: " PRINT PRINT II Last
Name: " PRINT PRINT M Addre so: " PRINT PRINT II City: " PRINT PRINT » State: " PRINT PRINT II Zip: " PRINT PRINT II Home Phone: " PRINT KILL A MOUSE GO TO JAIL!
MOUSE WASH IS A SPECIALLY DESIGNED BALL WHICH:
• CLEANS THE INSIDES OF YOUR MOUSE!
• SAVES YOU TIME AND MONEY!
• CAN BE USED HUNDREDS OF TIMES!
• NEEDS NO CHEMICALS SO TREAT YOUR MOUSE TO MOUSE WASH TODAY 1 FT
SAVIT! READ YOUR TFXT Fll FS TO YOU!
IT READS MOST STANDARD TEXT FILES ALOUD!
MOUSE WASH $ 7.95-SAVIT $ 14.95 $ 2.00 SHIPPING $ 3.00 FOR C.O.D. T&L PRODUCTS, 2645 Wilson Street Carlsbad, CA 92008 (619)729-4020 CLS PRINT "What name do you want to display?"
PRINT PRINT "Choose name by entering a search pattern for the last name. If" PRINT "I find a match within the name I will display it for you."
PRINT PRINT INPUT "Search Key = ", srch$ srch$ =UCASE$ (srch$) End if FOR i=l TO rec IF x$ ="A" THEN place=l IF x$ ="L" THEN place=INSTR(UCASE$ (InS(i)), srch$) IF x$ ="F" THEN place=INSTR(UCASES (FS (i)), srch$) IF place 0 THEN dsp=i IF ln$ (i)="DELETED" THEN 9 GOSUB dispiayform GOSUB displayrec mesa$ ="Okay to Continue" GOSUB yn IF yn$ ="N" THEN GOTO mnu END IF 9 NEXT i CLS LOCATE 15,35 COLOR 0,1 PRINT " No more matches. " COLOR 1,0 FOR rest=l TO 3000 NEXT rest GOTO mnu ed: CLS PRINT "Do you want to search for the name to edit on the F)irst or" PRINT "L)ast name field?"
3 xS=INKEY$ IF x$ ="" THEN 3 x$ =UCASE$ (x$) IF x$ "F" AND x$ "L" THEN 3 PRINT PRINT "What name do you want to edit?"
PRINT PRINT "Choose a set of letters which will be searched on in the name" PRINT "field. If a match is found, I will present it to you and you can" PRINT "decide if it Is the record you want to edit."
PRINT PRINT INPUT "What letters to search on?
", srch$ srch$ =UCASE$ (srchS) FOR i=l TO rec IF x$ ="F" THEN x=INSTR (UCASES (FS (i)), srchS) IF x$ ="L" THEN x=INSTR (UCASES (ln$ (i)), srchS) IF X 0 THEN GOSUB dispiayform dsp=i GOSUB displayrec mesas="Edit THIS record" GOSUB yn IF yn$ ="N" THEN mesas="Continue Search" GOSUB yn IF ynS="N" THEN GOTO mnu IF ynS“"Y" THEN GOTO 4 ELSE GOTO edt END IF END IF 4 NEXT i edt: CLS PRINT "When editing, the cursor will appear just under the line that" PRINT "is ready to be edited. If you wish to keep the line the same," PRINT "don’t type it again, just press return and I'll keep it the same," PRINT PRINT
"Press a key to continue."
5 x$ =INKSY$ IF x$ ="" THEN GOTO 5 GOSUB dispiayform GOSUB displayrec LOCATE 5,14 LINE INPUT " ", chgS IF obg$ "" THEN F? (dsp)=chg$ LOCATE 7,14 LINE INPUT " ", chg$ IF chg$ "" THEN ln$ (dsp)=chg$ LOCATE 9,14 LINE INPUT " ", chgfi IF chg$ "" THEN a$ (dsp)=chg$ LOCATE 11,14 LINE INPUT " ", chgS IF obg$ "" THEN c$ (dsp)=chg$ LOCATE 13,14 LINE INPUT " ", chgS IF chg$ "" THEN s$ (dsp)=chg$ LOCATE 15,14 LINE INPUT " ", chgS IF chg$ "" THEN z$ (dsp)=chg$ LOCATE 17,14 LINE INPUT " ", chg$ IF chg$ "" THEN hp$ (dsp)=chg$ LOCATE 19,14 LINE INPUT " ", chg$ IF chg$ "" THEN wp$ (dsp)=chgS GOSUB displayform GOSUB
dieplayrec mesa$ ="All edits correct" GOSUB yn IF yn$ ="Y" THEN mu IF yn$ ="N" THEN edt mall: CLS PRINT "Which records do you want to print?"
PRINT PRINT "Do you want to:" PRINT PRINT "1. Print all records."
PRINT PRINT "2. Print some based on a search in the last name field."
PRINT PRINT "3. Print some based on a search in the first name field."
PRINT PRINT ”4. Go through all records and choose each one to be printed."
PRINT PRINT INPUT "Choice:", chc IF chc 4 OR chc l THEN GOTO mnu prtsome: CLS PRINT INPUT "How many lines between labels?
", spaces PRINT PRINT IF chc=2 THEN INPUT "What letters to search on in the last name field? ", srch$ IF chc-3 THEN INPUT "What letters to search on in the first name field?
", srch$ srch$ =UCASE$ (srch$) FOR i=l TO rec IF chc=2 THEN place=INSTR(UCASE$ (ln$ (i)), srch$) IF chc=3 THEN place=INSTR(UCASE$ (F$ (i)), srch$) IF chc=4 OR chc=l THEN place=l IF place 0 THEN IF chc=4 THEN IF ln$ (i)="DELETED" THEN GOTO 6 GOSUB displayform dsp=i GOSUB displayrec rnesg$ ="Print this one" GOSUB yn IF yn$ ="N" THEN 6 END IF LPRINT F$ (i); I? F$ (i) "" THEN LPRINT " LPRINT lnS(i) LPRINT as (i) LPRINT cS (i); ";s$ (i); " ";z$ (i) FOR g=l TO spaces LPRINT NEXT g END IF 6 NEXT i GOTO mnu PRINT PRINT "Print what record? (Note: Search ADFO AMIGA DISK FILE ORGANIZER Having trouble finding
that file somewhere in your stack of floppys? Can’t find ail the copies of a particular file?
ADFO maintains a database of the directories disknames and filenames from your collection of disks. Fast response inquiries return location and last update information. Printer interface. Uses CLI or Workbench.
512K ram and 2 drives recommended S59.95 Include $ 3.50 S & H Mastercard Visa Accepted Sorry, No COD Calif. Residents Add 6V2° o Sales Tax 3386 Floyd Los Angeles, CA 90068
(213) 851-4868 Order phone 1 800 621-0849 Ext. 494 based on last
name.)"; INPUT srchS srch$ =UCASE$ (srch$) EOR i=l TO rec
x=INSTR(UCASE$ (ln$ (i)), srch$) IF x 0 THEN GOSUB displayform
dsp=i GOSUB dieplayrec mesa$ ="Print THIS record" GOSUB yn
IF ynS="N" THEN CLS: GOTO 7 LPRINT LPRINT LPRINT LPRINT
LPRINT LPRINT LPRINT LPRINT LPRINT LPRINT LPRINT LPRINT
LPRINT LPRINT LPRINT LPRINT LPRINT END IF 7 NEXT i CLS
First Name: ";F$ (i) Last Name: "; ln$ (i) Address: ";a$ (i
City: ";c$ (i State: sS(i) Zip: Home Phone: ";hpS(i) Work
Phone: ";wp$ (i) LOCATE 15,35 COLOR 0,1 PRINT " No more
matches. " COLOR 1,0 FOR rest=l TO 3000 NEXT rest GOTO mnu
del: CLS PRINT "Delete what name? (Note: Search based on
last name.)"; INPUT srch$ srchS=UCASES(srch$) FOR i=l TO
rec x=INSTR(UCASES (ln$ (i)), srch$) IF x 0 THEN GOSUB
diEplayform dsp=i GOSUB displayrec mesa$ ="Delete THIS
record" GOSUB yn IF yn$ ="N" THEN CLS: GOTO 8 IF yn$ =”Y"
THEN ln$ (i)="DELETED" F$ (i) =”DELETED" END IF END IF 8
NEXT i CLS LOCATE 15,35 COLOR 0,1 PRINT " No more matches.
" COLOR 1,0 FOR rest=l TO 3000 NEXT rest GOTO mmi store:
CLS irtesg$ ="Ready to store this mailing list" GOSUB yn IF
yn$ ="N" THEN GOTO mu CLS PRINT PRINT "What Filename INPUT
F$ IF UCASE$ F$)=UCASE$ (fil$) THEN PRINT tnesg$ ="Save
over the old file" GOSUB yn IF yn$ ="N" THEN GOTO mnu END IF
CLS PRINT "Opening File..." CLOSE 1 OPEN F$ FOR OUTPUT AS
1 PRINT PRINT "Writing Total of Records..." FOR i=l TO
rec IF In? (i) "DELETED" THEN rets=rets+l NEXT i PRINT
"There are";rets;"to save."
PRINT 1, rets rets=0 FOR i=l TO rec IF ln$ (i)="DELETED" THEN 10 rets=rets+l LOCATE 10,15 PRINT "Saving record ";rets PRINT 1, ln$ (i) PRINT l, F$ i) PRINT l, as i) PRINT fl.csii) PRINT 1, s$ (i) PRINT 1, z? (i) PRINT 1, hp$ (i) PRINT l, wp$ (i) 10 NEXT i PRINT PRINT "Closing File up...” CLOSE 1 PRINT PRINT PRINT "Done."
FOR rest=l TO 3000 NEXT rest GOTO mnu leave: CLS mesa$ ="Are you sure you want to leave now" GOSUB yn IF ynS="N" THEN GOTO mnu CLS PRINT mesa$ ="Do you want to Store this mailing list off before leaving" GOSUB yn IF yn$ ="N" THEN SYSTEM GOTO store ¦AC- (It’s a lot of fun, a brain teaser and a programming guide too!)
“Very highly recommended by me is Conversation With A Computer, from Jenday Software, a set f of games and conversation written in Amiga Basic, and shipped with the source code provided. It is f entertaining, amusing, thought provoking, and just plain fun. If you have any interest in programming in BASIC on the Amiga, this is a must have for the examples.” rf MATTHEW LEEDS, Commodore Microcomputers f This program really shows off Amiga’s talents: lots of color graphics, mouse routines, voice synthesis, sound D' and animation. The 2,000 lines of Amiga Basic can be listed to screen or
printer. The documentation describes * 4*' in detail, module by module, how it all works. There is a coded example of virtually every one of Amiga Basic's a Jjp powerful features.? C You 11 be challenged to three mind games. Memory Test will drive you to drink. Battle of Numbers and Pegboard are two of the most elegant logic games of all time. Its your brain against Amigas silicon! X) £, The program is professionally packaged with comprehensive typeset documentation. It requires 512K. It is not copy protected. Now includes an introduction to the C language. V
All orders are shipped by first class mail within 24 hours of receiving your personal check or money order. J DEALER INQUIRIES INVITED
P. O. Box 4313 Garden Grove, CA 92642 Pointer Image Editor By
Stephen R. Pietrowicz CIS: 73047,2313 People Link: DRRITZ
Usenet:.. lihnp4 ipur-ee Igould Ihouligaulsrp Many programs
for the Amiga change the default pointer sprite from the
familiar arrow to another image while you use that program.
Changing your default pointer is a relatively simple task in
C, but what if you are not familiar with C or don't own a C
By including some of the Amiga libraries into your AmigaBasic programs, you can access the subroutines So create your own mouse pointer images! The same system calls that C uses to change pointer images can be accessed through AmigaBasic. Including the exec and intuition libraries in your program with the LIBRARY statement allows you to access the necessary routines to change your pointer.
Creating a pointer is simple. First, you have to allocate enough memory for your pointer using the AllocMem () function. Then, you have 1o load that memory with the sprite image of the pointer you want to create. After loading the image data, call the intuition SetPointer) function, and voila!
Your own pointer!
Creating the pointer image data can be a bit difficult to do.
The AmigaBasic program listed at the end of this article takes away the drudgery of creating that data. It allows you to change the default colors used by your default pointer sprite, create pointer sprites that are up to 16 pixels wide and 156 pixels long, and load save the pointer images you create.
There are several areas on the screen that you will use to design your pointer image. The large box to the left side of Ihe screen is used as your palette. The four boxes below are the colors you can use to draw with. The box at the right side of the screen is labeled "RGB Settings". After selecting the color you want to change, adjust the RGB settings to the color you want. (It works similarly 1o drawing programs that are available). The gadget in the middle of the screen lets you scroll to the part of the image you want to work with.
There are also two menu lists with 7 functions to use.
The first menu list has options 1o load a pointer image from a file, save the current pointer image to a file, clear Ihe current pointer palette, and quit the program.
When loading or saving a pointer image, a requestor box will appear to type the file's name. Type any alphanumeric name. — ¦- | -, wMWm h if ¦ CvX- in the requestor box. (Hit the ESC key if you want to exit this mode). The pointer image is stored in the following format: the first three lines contain the RGB values used to create the 17th, 18th, and 19th hardware color register entries.
Simply load these values by using the AmigaBasic PALETTE statement. The next statement holds the height of the pointer image.
The next entries in the file are with values used to make up the image. There are two values line, and one ime for every pixel in height. These are the values that are stored into memory. The last line contains the program's representation of the X and V offsets of the "hot spot" of the pointer. (The "hot spot" is the point within the pointer image used to determine where the pointer is when a mouse key is pressed, and is denoted as a yellow square on the pointer palette).
The second menu list has options to test the pointer image you've created, reset the test pointer to the default program pointer, and reset the hot spot to a different part of the sprite. A word of warning when setting the "hot spot".
Because of the way that the Amiga handles the mouse pointer, setting the "hot spot” near the bottom of the sprite image will make it disappear when the pointer moves near the top of the screen. It's generally a good idea to only set the "hot spot" within the first 15 pixels from the top of the image.
The two system calls that deal with the pointer are SetPointer and ClearPointer. The format of the SetPointer function is: CALL SetPointer (window, image, height, width, HotX, HotY) where 'window' is the address of a window structure. You get that address by the WINDOW(7) function from AmigaBasic.
Window 7) returns a pointer to Ihe intuition window, ’image' is the address of the mouse pointer image. The address you pass to SetPointer is the address of the first byte of the memory return from the AilocMem function, ’height' is the height of the mouse pointer image, 'width' is the width of the mouse pointer image. 'HotX' is the X-Offset of your mouse pointer image from the "hot spot". 'HotY is the Y-Offset of your mouse pointer image from the "hoi spot".
The "hot spot" offsets are normally negative values. The upper-left hand corner of the sprite has HotX and HotY values of 0,0. The upper-right hand corner of the sprite has values -15,0. A "hot spot" placed 7 pixels over and 9 pixels down has a value of -7, — 9. For an example of how to use SetPointer, examine the DefaultPointer section in the program listing.
The ClearPointer system call will return the pointer that you've changed on the screen back to the original system default mouse pointer image. The call in AmigaBasic is simple: CALL ClearPointerfwindow) where 'window' is the same address of the window structure as used in the SetPointer system call. Here are some ideas for you to try in your own programs: By keeping track of which direction the mouse is moving, you can change the pointer image to point in that direction. You don’t have to be limited to arrows. For example, you can have a pointer that looks like a pointing finger, one image
for each direction.
You can create animated pointers in your own programs by continually changing images. You can create a flying bird, a bouncing ball, even a rainbow that changes colors!
SPECIAL NOTE: ft you do not have the.BMAP files for the exec and intuition libraries, type in the following files using the ED editor.
These short files will make a.BMAP file that will ONLY work with this program. Please get an official, complete.BMAP file from your local user group or from AMICUS disk 8, if you plan to explore.BMAPs, or use other programs that need.BMAP files.
Exec.fd: base_SysBase bias 198 public AIIocMem (byteSize, requirements)(D0 D1) bias 210 FreeMem (memoryBtock, byteSize)(A1, D0) en d intuition.fd: base JntuitionBase bias 60 public ClearPointer (Window}(AO) bias 270 SetPointer (Window, Pointer, Height, Width, Xoffset, Yoffset)(A 0 A 1, DO D 1 D2 D3) end Use the ConvertFD program located in the BasicDemos directory of the Extras disk to convert 'exec. fd' to 'exec. bmap' and 'intuition. fd' to 'intuition. bmap'. The file 'graphics. bmap' is already located on the Extras disk in the BasicDemos directory.
Note: the resulting.BMAP files should be put in the libs directory of the Workbench disk with the Amiga libraries.
You should move the.bmap files onto the same disk as the pointer editor, so the program can access the libraries.
IF YOU PLAN TO EXPERIMENT WITH.BMAP FILES, PLEASE TRY TO GET AN OFFICIAL.BMAP FILE FROM YOUR LOCAL USER GROUP OR AMICUS DISK 8.
P fogram 11 st ing: Pointer Image Editor 1 Copyright 1986 By Stephen R. Pietrowicz ¦ The author places this software in the 1 public domain. Please refer to the ’ Amazing Computing V. l 6 article 1 for more information.
' Please do not remove this copyright notice.
DECLARE FUNCTION AllocMemfi () LIBRARY DECLARE FUNCTION FreeMemi) LIBRARY DECLARE FUNCTION ReadPixelS () LIBRARY LIBRARY "exec. Library'' LIBRARY "intuition. library" LIBRARY "graphics. library" SCREEN 3,320,200,5,1 WINDOW 3,"Pointer Image Editor by SR Pietrowicz", (0, 0) -(309,186),0,3 GOSUB Setup I 1 Main loop: Wait until the mouse is clicked 1 to do anything.
I Top: WHILE MOUSE(0) = 0: WEND xl = MOUSE (3): yl = MOUSE (4) IF (xl 143) THEN CheckDial IF (yl 143) THEN CheckColor xl = INT (xl 9): yl = INT (yl 9) x2 ¦= xl*9+l: y2 = yl*9+l IF cn = 0 THEN Ncn = 0 ELSE Ncn = cn+5 END IF I 1 Set points in both windows, and make sure 1 that the "hot spot” stays visible I LINE(x2, y2)-(x2+8, y2+8), Ncn, bf PSET(180+xl, Dial+yl), Ncn IF (PFlag = 1) AND (xl = Psx) AND (yl = Psy) THEN LINE (x2+l, y2+l)-(x2+7, y2+7), ll, bf END IF I ’ Set the color that was just set in the ’ bitmap IF xl = 0 THEN Bit% = SH8000 ELSE Bit% = (2A(15-xl)) END IF Sety = Dial-2+yl IF (en 2 =
INT(cn 2)) THEN Sa% (Sety, 0) = Sa%(Sety,0) AND NOT Bit% ELSE Sa% (Sety, 0) = Sa% (Sety, 0) OR Bit% END IF IF (cn 2) THEN Sa% (Sety, 1) = Sa%(Sety, l) AND NOT Bit% ELSE Sa% (Sety, 1) = Sa%(Sety, l) OR Bit% END IF WHILE MOUSE(0) 0: WEND GOTO Top 1 Move the dial, and redraw the pointer ¦ window I CheckDial: IF (xl 152) THEN Top IF (xl 163) THEN CheckRGB MENU OFF Dbox = Dial DialTop: WHILE MOUSE (0) 0 Dy = MOUSE (6) IF (Dy 2) OR (Dy 141) THEN DialTop IF (Dy = Dial) THEN DialTop LINE (152, Dial) — (163, Dial+2),0, bf LINE (203, Dial) — (203, Dial+15),0 Dial = Dy LINE (152, Dial) — (163,
Dial+2), 1, bf LINE (203, Dial) — (203, Dial+15),1 WEND IF (Dbox = Dial) THEN MENU ON GOTO Top END IF Redraw the pointer window PointRedraw: FOR r = 0 TO 15 By = r* 9+1 Dly = Dial+r FOR s = 0 TO 15 Bx = 6*9+1 LINE (Bx, By) — (Bx+8, By+8), 1, bf LINE (Bx, By) — (Bx+8, By+8), POINT(180+a, Dly), bf NEXT B NEXT r I ’ Check to see if the "Hot Spot" goes in this window I IF Lflag = 1 THEN RETURN END IF IF (Psx = 0) THEN IF (ABS (Dial — Psd) = 0) AND (ABS(Dial — Psd) = 15) THEN Psy = Psy-(Dial-Psd) Pad = Dial IF (Psy = 0) AND (Psy = 15) THEN Npsx = Psx*9+2 Npsy = Psy*9+2 LINE (NPsx, Npey) —
(NPsx+6, Npsy+6), ll, bf Pflag = 1 ELSE Pflag = 0 END IF END IF END IF MENU ON GOTO Top 1 Change the color that is being used CheckColor: IF (yl 150) OR (yl 170) THEN Top cn = lNT(xl 36) LINE (225, Rl) — (240, Rl), 0 LINE (255, Gl)-(270, Gl),0 LINE (2B5, B1)-(300, B1),0 IF cn = 0 THEN LINE (1,176)-(143,184), 0, bf Rl = 110: Gl = 110: B1 = 110 ELSE LINE (1,176) -(143, 184), cn+5, bf Rl = 110 — (RGB! (cn, l)*100) Gl = 110 (RGB! (cn,2)*100) B1 = 110 — (RGB! (cn, 3) *100) END IF LINE (225, Rl) — (240, Rl), 11 LINE (255, G1)-(270, G1),11 LINE (285, Bl) — (300, Bl), 11 WHILE MOUSE(0) 0: WEND GOTO Top '
Change the Red, Green, Blue values of the 1 current color I CheckRGB: IF (cn = 0) THEN Top IF (xl 225) OR (xl 300) THEN Top MENU OFF IF (xl = 225) AND (xl = 240) THEN Red IF (xl = 255) AND (xl = 270) THEN Green IF (xl = 285) AND (xl = 300) THEN Blue MENU OFF GOTO Top Red: WHILE MOUSE (0) 0 Ry = MOUSE (6) IF (Ry 10) OR (Ry 110) THEN Red IF (Ry = Rl) THEN Red LINE (225, Rl) — (240, Rl), 0 Rl = Ry LINE (225, R1)-(240, R1),11 RGB! (cn,1) = (110-R1) 100 PALETTE 5+cn, RG3! (cn,1), RGB! (cn,2), RGB! (cn,3) WEND GOTO EndRGB Green: WHILE MOUSE (0) 0 Gy = MOUSE (6) A-TALK" Advanced
Communication and Terminal Program for the AMIGA
* • . KERMIT — XMODEM — ASCII TRANSFER — Xmodem binary files
are stripped of padding characters.
• DIAL-A-TALK — Phone directory, redial and script language for
auto-login. Tested login scripts. Programmable function keys.
— « m
• * m
• * a
• • m
• • a. ANSI TTY EMULATION — Resizable and full screen windows.
Termcap and terminlo for UNIX users.
• VOICE OPTION — For having mail read aloud and for telling you
how the call and login arc progressing.
• SETTINGS — Over 10 modem types supported. All communication
parameters, including X-on X-off.
* -• © 9
• ••m 'Ml
- Ml A-TALK lists for §49.95 and is not copy prelected.
§2.00 shipping; CA residents add 6.5% sales tax.
Yadc-in discounts available. For info and orders, contact: Felsina Software 3175 South Hoover Street, 275 Los Angeles, CA 90007
• Ml LINE (283, 9)-(302, 111), l, b LINE (225,110)-(240,110),11
LINE (255, 110)-(270, 110,11 LINE (285,110)-(300,110),11 R1 =
110: G1 = 110: B1 = 110 LINE (223,113)-(242,123),12, bf Sa% (i, 0)
= 0 Sa% (i, 1) = 0 NEXT i 1 Set Up Menus MENU 1,0,1,"Editor"
MENU 1,1,1,"Load " MENU 1,2,1, "Save " MENU 1,3,1,"Clear " MENU
1, 4, 1, "Quit " MENU 2,0,1,"Pointer " MENU 2,1,1, "Test MENU
2,2,1, "Reset " MENU 2, 3,1, "Hot Spot" MENU 3,0,1,"" MENU
4,0,1,"" PALETTE 30,1,0,0 Psx = 0: Psy = 0: Psd = 2: PFlag = 1
LINE (2, 2) — (8, 8), 11, bf ON MENU GOSUB CheckMenu MENU ON
Pointer drawing box and gadget LINE (0, 0)-(145,145), l, b LINE
(150,0)-(165,145), l, b Dial = 2 LINE (152, Dial) — (163, Dial+2),
l, bf 1 Palette that shows how "real" pointer
• looks t LINE (175,0)-(201,158), l, b LINE
(203, Dial) — (203, Dial+15),1 t Draw RGB Settings I PALETTE
12,1,0,0 PALETTE 13,0,1,0 PALETTE 14,0,0,1 LINE
(220,0)-(305,158), l, b LINE (223, 9) — (242, 111), 1, b LINE
(253,9)-(272, lll), l, b LINE 253,113)-(272,123),13, bf LINE
(283,113)-(302,123),14, bf LOCATE 18,32 PRINT "RGB" LOCATE 19,30
PRINT "Settings" 1 Color Box PALETTE 6, 1,0,0 PALETTE 7,0,1,0
PALETTE 8, 0,0,1 RGB! (1, 1) = 1: RGB! (1, 2) = 0: RGB!
(1,3) = 0 RGB! (2, 1) = 0: RGB! (2, 2) = 1: RGB!
(2,3) = 0 RGB! (3, 1) = 0: RGB! (3,2) = 0: RGB! (3,3) = 1 LINE (0,150)-(36,170), l, b FOR i = 1 TO 3 LINE (i*36,150) — ((i+1) *36, 170), 5+i, bf NEXT i LINE (0,175)-(144, 185), l, b Change the system pointer to the default program pointer DefaultPointer: RESTORE I Default program pointer data DATA 14 DATA -1024,0,30720, — 32768,12288, — 16384 DATA 6144, — 8192,3072, — 4096,1536, — 10240 DATA 768, — 29696,384,1536,192,768 DATA 96,384,48,192,24,96 DATA 12,48,4,24,0,8 rp£ = WINDOW (7) READ Ap% POKEW sis,0 POKEW si£+2,0 Padd = 4 FOR i = 1 TO (Ap%+1) *2 READ pl% POKEW si£+Padd, pl% Padd = Padd + 2 NEXT i
POKEW sii+Padd, 0 POKEW fifi+Padd+2,0 PALETTE 17,1,0,0 PALETTE 18,.6, 0,0 PALETTE 19, 0,. 6,.8 HotX% = 0 HotY% = 0 CALL SetPointer (rp£, sis, Ap%+1, 16, HotX%, HotY%) RETURN 1 Menu functions I CheckMenu: id = MENU (0) item = MENU (1) MENU OFF I Editor I IF id = 1 THEN Load pointer from a file IF item = 1 THEN FileName$ = "" GOSUB GetFileName IF FileNameS = "" THEN LoadDone GOSUB Clearlmage OPEN FileNameS FOR INPUT AS 1 INPUT 1, RGB! (1, 1), RGB! (1, 2), RGB! (1, 3) INPUT 1, RGB! (2, 1), RGB! (2, 2), RGB! (2,3) INPUT 1, RGB! (3, 1), RGB! (3, 2), RGB! (3, 3) INPUT l, Ap% FOR j = 0 TO
Ap% INPUT l, Sa%(j,0), Sa%(j, l) NEXT j INPUT 1, Psx, Psy CLOSE 1 Psx = -Psx Psy = -Psy Psd = INT(Psy 16)*16+2 Psy = Psy-Psd+2 PALETTE 6, RGB! (1,1), RGB! (1, 2), RGB! (1, 3) PALETTE 7, RGB! (2,1), RGB! (2,2), RGB! (2,3) PALETTE 8, RGB! (3,1), RGB! (3,2), RGB! (3,3) IF (Psd+Psy = 15) THEN Pflag = 1 ELSE Pflag = 0 END IF I 1 Reconstruct the colors, and draw them in the palette FOR Scan = 0 TO Ap% Bit% = SH8000 BitOfc = (Sa% (Scan, 0) AND SH8000) SH8000 Bitl% = (Sa% (Scan, 1) AND SH8000) SH8000 cn = (Bitl%*2) OR Bit0% IF cn = 0 THEN Ncn = 0 ELSE Ncn = cn+5 END IF PSET(180, Scan+2), Ncn FOR j = 14 TO 0
STEP -1 Bit% = (2A j) Bit0% = (Sa%(Scan,0) AND Bit%) Bit% Bitl% = (Sa% (Scan, 1) AND Bit%) Bit% cn = (Bitl%*2) OR Bit0% IF cn = 0 THEN Ncn = 0 ELSE Ncn = cn+5 END IF PSET(195-j, Scan+2),1 PSET(195-j, Scan+2), Ncn NEXT j NEXT Scan 1 and reset the intuition pointer I Lflag = 1 GOSUB PointRedraw IF (PFlag = I) THEN LINE (Psx*9+2, Psy*9+2) — (Psx* 9+8, Psy*9+8), 11, bf END IF Lflag = 0 LoadDone: MENU ON RETURN END IF I Save current pointer to a file I IF Item = 2 THEN I Make sure there is a pointer to save... Ap% “ 156 PSFlag = 1 WHILE (PSFlag = 1) IF (Ap% 0) THEN PSFlag = 0 ELSEIF (Sa%(Ap%,0)
0) OR (Sa% (Ap%, 1) 0) THEN PSFlag = 0 ELSE Ap% = Ap% — 1 END IF WEND IF (Ap% 0) THEN LOCATE 21,20 PRINT "No pointer! Hit ESC " GOTO SaveBad END IF save FileName$ = "" GOSUB GetFileName IF FileName? = "" THEN SaveDone OPEN FileNamaS FOR OUTPUT AS 1 WRITE 1, RGB! (1, 1), RGB! (1,2), RGB! (1,3) WRITE 1, RGB! (2,1).RGB! (2, 2).RGB! (2, 3) WRITE 1, RGB! (3, 1), RGB! (3,2), RGB! (3,3) WRITE l, Ap% FOR 1 = 0 TO Ap% WRITE l, Sa% (j, 0), Sa% (j, 1) NEXT j WRITE l, — psx, — (Psy+Psd-2) CLOSE 1 GOTO SaveDone SaveBad: Key$ = INKEY$: IF Key$ = "" THEN S 3. VG R a H IF ASC(Key$) 27
THEN SaveBad LOCATE 21,20 PRINT " SaveDone: MENU ON RETURN END IF t 1 Clear current pointer bitmap and drawing ’ areas IF item = 3 THEN Clearlmage: FOR i = 0 TO 156 Sa% (i, 0) = 0 Sa% (i, 1) = 0 NEXT i LINE (1, 1)-(144, 144), 0, bf LINE (152, Dial) — (163, Dial+2), 0, bf LINE (152,2)-(163,4), l, b£ LINE (203, Dial) — (203, Dial+15),0 Dial = 2 TINS (176, l)-(200, 15 7), 0, bf LINE (203,2) -(203,17),1 Psx « 0: Psy = 0: Psd = 2: PFlag = 1 LINE (2, 2) — (8, 8), 11, bf MENU ON RETURN END IF I Quit IF item = 4 THEN GOTO Stoplt MIDI IS HERE I Midi-Designs Is Proud To Introduce The MD-1 Midi Interface For
The Commodore Amiga.
Features Include: ¦ IN. OJT, THROUGH acks lor sending and receiving data ¦ Attractive custom metal enclosure ¦ 1 year warranty ¦ 100% compatible with Activision s Music Studio Software and all popular synthesizers including those manufactured by Roland, Yamaha. Casio and Korg, price $ 49.95 MD'1 INTERFACES ARE IN STOCK FOR IMMEDIATE SHIPMENT For Additional information or to Order, write or call: M DI-DESIGNS 2232 Summit Street Columbus, OH 43201
(614) 267-6755 Dealer inquiries invited Midi-Designs is a
division of J Michaels Company Great Cover-ups Protect your
investment with opaque vinyl covers.
$ 8.95 $ 4.95 $ 1.95 $ 1 95 $ 5.95 Amiga and Monitor Printers (specify brand, model and width) Ivi" Disk Drive 5 Va" Disk Drive 51decar NameAdd IF ((Keys = "A") AND (KeyS = "Z")) THEN NameAdd IF ((KeyS = "a") AND (KeyS = "z")) THEN NameAdd GOTO NameTop NameAdd: FileNameS = FileNameS + Key$ LINE (Box, 175)-(Box+7, 183), 0, bf LOCATE 23,20+NameLen PRINT KeyS; Box = Box+8 LINE (Box,175)-(Box+7,183),30, bf GOTO NameTop NameDone: LOCATE 21,20 PRINT " LINE(150,173)-(300,185),0, bf RETURN END I User the pointer image on the palette as it pointer the defau I Setit: THEN Green WHILE MOUSE (0) 0 By
= MOUSE (6) IF (By 10) OR IF (By = Bl) THEN TO: GREAT COVER-UPS 6805 5W 8th Avenue Portland, Oregon 97219 5EMD ME: Phone: (503) 246-897 7 _ Amiga & Monitor Covers @ 8.95 ea _ @ _ ea
- --@ _ ea Please add $ 1.25 each for postage and handling Dealer
inquiries invited Ap% =156 PSFlag = 1 WHILE (PSFlag = 1) IF
(Ap% 0) THEN PSFlag = 0 ELSEIF (Sa% (Ap%, 0) 0) OR (Sa%
(Ap%, 1) 0) THEN PSFlag = 0 ELSE Ap% = Ap% — 1 END IF WEND
THEN IF (Ap% 0) RE itETURN END IF POKEW sis, 0 POKEW sis+2, 0
Padd = 4 FOR j = 0 TO Ap%+1 POKEW (sis+Padd), Sa% (j, 0) Padd =
Padd + 2 POKEW (sis+Padd), Sa%(j, l) Padd = Padd + 2 NEXT j
POKEW sis+Padd, 0 POKEW sis+Padd+2,0 PALETTE
17, RGB! (1,1), RGB! (1,2), RGB! (1,3) PALETTE
18, RGB! (2,1), RGB! (2,2), RGB! (2,3) PALETTE 19, RGB! (3,1), RGB!
(3,2), RGB! (3,3) Spx% = -Psx: Spy% = CALL SetPointer (rps,
Ap%+2,16, Spx%, Spy%)
- (Psy+Psd-2) sis.
CALL SetPointer (r 4+2,1 * RETURN Clean up the loose ends, and exit I Stoplt: WINDOW CLOSE 3 SCREEN CLOSE 3 CALL FreeMem (sis, MemLength%) LIBRARY CLOSE
• AO END AmigaNotes By Richard Rae Music Editor CIS [72177,3516]
I am delighted to announce that Amiga music is a reality!
The AmigaNotes Award for First Musical Software goes to ActiVision for their Music Studio, which began appearing on store shelves in mid May; the hardware nod goes to Golden Hawk Technologies for their MIDI Gold interface. I will be doing an in-depth comparative review on MIDI Gold at a later date; suffice for now to sayjhat it is nicely constructed and functions well.
This month's column is devoted to an in-depth review of Music Studio. Before I delve into that subject, however, I should explain my reviewing style. When looking at a new product i tend to be very critical, and decide on personal purchases based on which item has the least number of features I don’t like. Even the rare gushingly enthusiastic review will contain a few points of contention. The idea here is not to pan the product, but to present a fair appraisal so that YOU can decide which package best suits your needs.
And you always have the rebuttal: if you think I’ve been too harsh in any of my comments, drop me some Email and let's discuss it.
REVIEW: ACTIVISION MUSIC STUDIO ActiVision bills Music Studio as "(a program) so complete it... otter (s) every option and audio function anyone could possibly want". As is typical of systems which attempt to do everything, Music Studio is a jack of all trades and master of none. The designers (Audio Light) did a good job of balancing capabilities with limitations, though; She result is a reasonably well thought out package which many will find useful in one capacity or another.
First let’s take a look at what Music Studio isn't, ft is not a MIDI sequencer recorder, though it does provide very limited MIDI support. It is not a professional scorewriting package, yet it gives you the capability to print sheet music. And it is not the ultimate demonstration of the Amiga's sound producing capability, although its "synthesizer" does provide four simultaneous voices and quite a bit of control over the sounds produced.
Retailing at $ 59.95, Music Studio comes in a colorful little box containing the program diskette, 78 page instruction booklet, icon reference card, and an ActiVision product flyer. The manual covers both Amiga and Atari ST versions of the program. This provides an interesting opportunity to contrast the capabilities of the two versions and, to a small extent, the relative power of the two machines.
The disk is copy protected, but the scheme is fairly straightforward: a bad sector header which causes DISKCOPY to fail with a source error. Since COPY moves individual files, COPY DFO: TO DF1: ALL will copy the disk (albeit slowly). You won't be able to boot from this backup, however: the program includes a programmed check which looks for the bad sector, and you'll enjoy a visit from 1he Guru if it isn’t found.
The backup is still useful if you treat it like a key disk protection scheme: boot from the master copy, then put it away and run from the backup. In fact, you can load your backup copy into drive zero and the master in drive one for booting: when the program checks for the disk protection, it will try all drives in sequence until it finds it. This allows you to copy Music Studio to a hard disk and insert the master only for booting. Marauder will successfully create a bootable copy, and this is probably the best solution for floppy based systems.
Music Studio will run on a 512K single drive system, although a second drive makes life considerably more pleasant. With the exception of the bad sector header, the program disk is standard AmigaDos format and boots directly from 1.1 KickStart. It comes up with a cute introductory screen and (bypassable) theme music which will immediately give you an idea of what the package is capable of. Do yourself a favor: run the audio lines to a good stereo! Your monitor speakers just won't cut it when sound is of primary importance.
Included on the disk are many demo songs, some for Amiga voices, others for an external Casio CZ1Q1 synthesizer.
Interestingly enough, some of the best songs are hidden from view unless you change the default directory match pattern. Be sure lo listen to anything with a.song or, sug extension anywhere on the disk, or you'll miss some good material. (One of my favorites among the hidden is Chris French's "AhWishAHadAModem".} COMPOSITION AND PLAYBACK The composing section of Music Studio supports two approaches to creating music. For the traditionalists among us, the main composing screen allows placement of notes on a standard musical staff. For avant-garde composers or nonmusicians, a "musical
paintbox" mode is available. The standard notation screen provides treble and bass staffs on which to place 32nd to whole notes and 32nd to whole rests.
In addition, any note may be dotted (extending its duration by 50%) or tied to other note (s), and triplets are supported.
All major keys are available, and any note may be placed with an accidental to depart from the selected keg's scale.
Eight time signatures ranging from 2 2 to 6 8 are available for your compositions.
Several block oriented editing functions are provided which simplify score entry and modification. These functions include making space between already placed notes to make additions, moving or copying a block of music, changing instruments, shortening or lengthening note and rest durations, transposing up or down a step at a time, and adding repeat bars. These functions operate on the entire GETTING YOUR MONEY'S WORTH?
SKE A COMPANY DEDICATED TO PRODUCING QUALITY SOFTWARE AT AFFORDABLE PRICES. LIKE SKEterm ¦UP TO 19200 BAUD ¦TELEPHONE DIRECTORY
• USER DEFAULTS & PARAMETERS
• ASCII, XMODEM & KERMIT FILE XFERS
¦VT1Q0 ADM3AJANS1 TTY D200 OTHERS ¦USER DEFINED XON-XOFF
• ON-LINE HELP ¦HAYES MODEM SUPPORT
• SUPPORTS BACKGROUND FILE XFER
• MULTITASKING & WRITTEN IN C PRICE S49.95 PLUS S2.50SHIPPING
(FLA. RES ADD 5%) VISAJMO CODi'CHK ACCEPTED CALL B13-787 31 11
TO ORDER TODAY OR WRITE TO SKE Software Co.
2780 COTTONWOOD COURT CLEARWATER, FL. 33519
(813) 787-3111 song or an area which has been previously
"marked", in operation this is very similar to editors
supporting the "cut and paste" mode. Moving about in a
composition longer than the screen is accomplished either
by repeatedly clicking left and right arrows or by moving a
slider bar near the bottom of the screen. You can insert up
lo three verses of lyrics in addition to the music, but be
advised that this uses memory normally reserved for notes.
Without lyrics the storage limit is approximately 8000
notes and rests.
The "Music Paintbox” offers an interesting alternative to standard notation. Instead of note symbols, musical tones are represented by rectangles, the lengths of which correspond to note durations. Your composition may be started on either screen and you can flip between them with a single mouse click.
Both composing modes support a feature which allows you to assign various instruments to each of four virtual tracks.
By turning the individual tracks on and off, you can hear any portion of your composition in isolation. For example, you can work on a horn part by turning off the bass guitar and piano parts. This is also useful when scoring for MIDI, where you might have more sound sources than the Amiga alone: you could compose up to four parts at once using only the computer's output, then turn on all the tracks for the actual performance.
Playback functions include a tempo control which extends from 57 to 200 beats per minute in 30 steps, and a volume slider which covers the musical range from pianissimo to fortissimo. Two playback modes let you select whether the musical score scrolls in lime with the music or remains fixed.
During the construction of a score you might want a hardcopy on which to jot notes or ideas. Music Studio has a function to print a song, but unfortunately it only supports Epson compatible printers and does not appear to vector through Preferences. Considering the Epson's market penetration and pricing schedule, though, they couldn't have picked a much more universal machine.
INSTRUMENT CREATION An instrument is Audio Light's name for a sound used in a composition. You may define up to fifteen instruments in a bank, and all of them may be used in a single composition if you wish, although only four may sound simultaneously.
Each instrument is identified by one of fifteen unique colors, and notes or paintbox rectangles are displayed in the color of the instrument which will play them. This is a cute idea, since each instrument would be a different timbre, which is often referred to as "tone color".
An instrument is built up from component parts called harmonics, and you have complete control of how they vary over time. (For those not familiar with the concept of harmonics and envelopes, Amazing Computing will be running a tutorial on sound synthesis in the future. Watch this space for details, and in the meantime, experimentation is the best teacher!)
Music Studio provides you with 32 sound sources: the first 31 harmonics of a tone plus what Audio Light calls "noise".
This is not noise in the traditional sense, but a harsh, raspy tone at the fundamental frequency. Up lo seven of these 32 sound sources may be selected for creating any instrument.
Each of the seven selected harmonics has an associated envelope describing its changes over time. The manual indicates that the maximum non-paused envelope time is three seconds, but in reality it is just shy of six. Up to seven points may be marked within this time period with a resolution of 20 milliseconds. These marked points are then used as end points for the segments of the harmonic envelopes. In this manner it is possible to create relatively complex sounds with up to six envelope segments per harmonic.
Normally, the program cycles through the envelope and ends the tone in the specified time regardless of actual note duration. By flagging any of the marked points as a sustain point, the tone can be made to pause at that location until the note expires, at which time the remainder of the envelope is used. The former mode is typical of piano, guitar, and percussive instruments, while the latter is good for simulating organ, violins, and wind instruments.
Other instrument parameters include tremolo (amplitude modulation) and vibrato (frequency modulation). There are no provisions for introducing a delay or changing the modulating frequency. It is also possible to assign an instrument lo the left channel, the right channel, both channels (center), or "none of the above".
The last mode is interesting in that an instrument is assigned to whatever DAC channel is currently available, resulting in voices jumping from side to side during a composition. This can add a wonderful liveliness to a piece. As an aside, you should understand that assigning an instrument to the center of the stereo field by using two channels cuts the maximum number of simultaneous notes to three. If your piece calls for a center-stage trumpet, you can only add a bass and piano on left and right sides. By assigning the trumpet to one side instead you can add a fourth instrument such as a
Once you are satisfied with the instrument sounds in the current bank, you may save the bank of instruments in a sound file for use by several songs. Or, you can forget about the instruments and get on with writing your composition: when the song is saved the bank of instruments for that song are automatically saved as well.
This means that you can load a song and play it immediately without having to fumble about looking for the correct bank of instruments to go with it.
When loading a song or instrument bank, or creating a new sound, the Amiga will pause while it recalculates the sound data. Depending on how many instruments need to be updated, this can take upwards of 20 seconds. I had no problem with this short delay, but some people I have talked to find it a minor irritation.
M LIONHEART BUSINESS & STATISTICAL SOFTWARE PC MS-DOS (5V4 & 37z), MACINTOSH, AM'GA ATARI ST, C64 128, CP M, APPLE DOS 3.3 Explanatory books with professional compiled software; the new standard (or statistical use. The Influential Seybold Report on Professional Computing has this to say about Lionheart "... our sentimental favorite because of its pragmatic approach to the basic statistical concepts... The thinking is that the computer merely facilitates the calculations; the important thing is to be able to formulate a problem correctly and to determine what type of analysis will be most
valuable." Let Lionheart help you get ahead of the competition! Spreadsheet compatable.
MIDI SUPPORT With an optional MIDI converter Music Studio can control external devices. Several interfaces, ranging in price from fifty to several hundred dollars, will be available within a few months; Music Studio supports any interface which connects to the serial port, (For those of you unfamiliar with MIDI, Amazing Computing will also be running a MIDI tutorial in the months ahead.)
Music Studio views external MIDI devices as additional sound sources only. You cannot "compose at the keyboard", use Music Studio to record a song in real time, or remotely change parameters on the synthesizer. Using the MIDI output simply increases the maximum number of simultaneous notes, with roughly the same amount of control inherent in the internal voices.
Upon first glance at the manual, you may be disappointed to find that the Atari version allows you to compose a song from a MIDI keyboard while the Amiga version does not. But read on; we're not missing much! The MIDI keyboard selects ONLY the note itself; you must still use the mouse to select the note durations and starting location. (Personally, this mode hardly seems worth the effort it must have taken to implement on the Atari.)
The MIDI screen allows you to name each of the fifteen instruments and assign a MIDI channel, preset, and key window to each. By selecting different channels for the instruments you can drive several synthesizers and perhaps a drum machine, with each unit playing independently of the others. Or, if you have a multitimbral instrument such as those in Casio's CZ series, you can play several different instrument sounds simultaneously with one synthesizer. The VISA, MasterCard, AMEX, Check
P. O. Box 379, ALBURG, VT 05440
(514) 933-4918 manual mentions that only one note may be played
via each MIDI channel. This is a misleading statement, as
it applies only to certain instruments driven in certain
modes. For many applications you can simultaneously play as
many notes as your synthesizer has voices.
For synthesizers with multiple stored sounds, the preset column allows Music Studio to automatically select the correct timbre. Thus you can set two different instruments, used in different parts of the song, to the same MIDI channel with different preset values, and the synthesizer responding to that channel will change from strings to horns to piano and back without any user intervention. There is a limitation to this mode, however: for some reason it will not operate in conjunction with the Amiga's internal voices. If you play your song from the MIDI function screen (which disables the
internal voices), or use the options menu to turn the Amiga sound off, Music Studio will properly select the desired programs on the external devices. With the Amiga voices enabled, however, the synthesizer is never sent a program change.
The key window defines a five octave range over which each instrument will be played. This feature allows you to scale synthesizer voices to properly match each other and the voices from the Amiga. For example, if you have a cello sound which you manually play around the middle of your synthesizer keyboard, it may be too low when Music Studio drives it with notes on the bass clef. Key windowing allows you to transpose the sound up an octave or so without having to rewrite the score or reprogram the sound.
Classic games software you can drive with your mouse! But. You don't need a license
- just an AMIGA and: Games Gallery I, II, and III.
Each of these packages contain exciting: Space, Gambling, Sports Games, and Mind Teasers.
Each provides a standard series of features and options for:
• Speech ‘Graphics 'Menus
• Color *Help "Voice and 'Mouse Control!
Kickstart 1,1 & 512K memory required. $ 29.95 + $ 3,00 shipping & handling.
(713) 488-2144 telephone orcte'i * ¦INC- welcome P. O Box 890408
Visa Mas’ercord Amex Houston, IX 77289-0408 AMIGA is a
fracemark of Commodore-Amiga. Inc Music Studio allows you
to use any mix of internal and MIDI sounds in your
compositions. Menu selections allow you lo toggle both the
Amiga and MIDI outputs on and off. By running both outputs
simultaneously you can "layer" sounds; for example, the
Amiga can provide chimes while your synthesizer plays the
same notes as a string ensemble.
With careful setup you can gain even more control, individual instruments can be muted in the Amiga by defining "null" voices which make no sound; these instruments can be assigned to an external synthesizer to be played.
Conversely, interns! Amiga instruments can be assigned to unused MIDI channels to silence the external devices. By combining this technique with layering, some very impressive arrangements can be developed.
As with the instruments, the MIDI parameters are stored along with the song, simplifying later playback. You will have to turn the MIDI mode on manually from the options menu, however. (A quick plug for MIDI: The Amiga has a great dea!
Of audio potential, but if you are serious about making music it should be but one tool in your arsenal. Synthesizers don’t have to be expensive; as an example, the Music Studio manual and demo songs are geared towards the Casio CZ101. This is an 8 voice multitimbral MIDI synthesizer which has been sold for less than $ 250.)
PEEVES Now comes the point at which I start railing about all the little things which irritated me while reviewing Music Studio.
Manufacturers, can’t we please give up on copy protection?
The only ones who truly benefit from CP are the writers and marketers of copy busier programs.
Second, please, PLEASE, PLEASE write protect your disks before you ship them! Like almost all software i receive, the Music Studio diskette is shipped with the write protect tab in the enabled position. This is dangerous under normal circumstances, but potentially fatal with CP’d software.
Mouse Driven People, save yourself some grief: flip that tab to the inhibit position before you insert it in the drive for the first time.
Better yet, use a pair of needle-nose pliers lo REMOVE the tab from all your master diskettes. (If you do happen to munge your only copy of Music Studio, Activision will replace it free during the first 90 days, and for $ 7.50 thereafter.)
There is no index in the owner's manual. A detailed table of contents is nice, but when I'm actually trying to USE a package I live by the index. Think I'm exaggerating the problem? Try to find the section on using repeats. Really.
While on the subject of the manual, I should mention that 1 spotted very few errors; ActiVision seems to have fairly good proofreaders. The only irritating mistake was related to deleting ties. The manual indicates this is dons by clicking once over the tie with a new tie. In reality, you must place a new tie over the old one; in other words it takes two clicks: one on the first note of the tie, the other on the last note.
Took a while to figure that one out!
For some reason Audio Light chose to depart from the Amiga mouse interface standard: both mouse buttons do exactly the same thing! Rather than pulling up the menu bar, the right button duplicates the "pick" function of the left button.
This is strange, especially when one learns that the Atari version assigns different functions to each button.
Fortunately the "one button mouse" is not too difficult to get used to, but it is an unnecessary departure from the norm.
Also relating to the user interface, Audio Light could have handled the file requesters a bit better. When you need to deal with a song or sound file, Music Studio puts up a list of the current file names along with a manual entry area; you can either use the mouse to pick your file from the list or enter it directly. Trouble is, you always have to wait for the list to be posted even if you don't want or need it. When saving a new file the list does you absolutely no good, but you’ll still cool your heels for a minute or so while the drive gronks its little heart out. The ability to click in
the manual entry field and enter a file name immediately would have really been nice; others have done it, so we know it's possible.
I wish the programmers had picked a different color palette.
The staffs are black on a brilliant white background. This tends to make the screen extremely bright, and renders the yellow instrument almost unusable because the notes blend into the background. Turn the brightness and contrast down to a more comfortable level and the black, gray, brown, and dark green notes all start to look the same. I think a black or dark gray background would have avoided this problem.
Since there is no way to exit the program, there is no way to officially change Preferences. This is unfortunate, at least for me; i prefer a peppier mouse than the setting they provided. In fact, 1 require it: Music Studio's default setting requires about half afoot more table space than I can devote to my mouse. While reviewing this program 1 was constantly picking the little critter up and moving him to the other side of his workspace to continue a cursor action. Or at least until I got tired enough of the situation to do something about it.
On the Amiga, Preferences settings are always stored in a file called 'system-configuration' in the 'devs' directory. By copying this file to another disk, you immediately set up your environment without going through Preferences. If you make a backup copy of Music Studio as described earlier, drop it in drive one while your system disk is in drive zero, and type COPY DFO: DEVS SYSTEM-CONF1GURATION TO DF1: DEVS SYSTEM-CONFIGURATION you will replace Music Studio’s Preference settings with your own. If you then boot from the backup with the master in drive one, Music Studio will use your
settings. (Of course, if you're really gutsy you could try to replace the file on the master disk, but! Do NOT recommend this, ideally you should never write to ANY master disk.) This little trick will not change the palette Music Studio uses (they set up their own inside the program), but it will let you center the screen, change the sensitivity of your mouse, and even use your customized pointer.
This is a multi-tasking machine by nature, but Music Studio doesn't acknowledge that fact. Once you begin playback of a piece, you can do exactly nothing. You can’t change volume, you can't change tempo, you can't change instruments. Well... to be perfectly fair you CAN do one thing: you can stop playback. But that’s all! The system is obviously capable of more: eject and reinsert a disk while a composition is playing, and you will hear the disk being validated while the score plays on, never missing a beat. It would have been nice to be able to change the tempo, at least.
If you intend to do professional quality recording, you should plan to rely on external synthesizers driven by Music Studio's MIDI, as the internal voices are hardly in the DX7 class. Audio Light seems to have used fairly large amplitude steps in their program, and the result is a sort of "roughness" during slow attacks and releases. Also, when a fifth sound is needed the program "yanks" a DAC away from a currently sounding note, with no concern for providing a smooth decay. The result can be random clicks and pops as Dags are reassigned.
I have lots of problems with the musical notation used. Minor nits include the fact that measure bars must be placed manually and may be placed incorrectly, and printed staffs are split wherever convenient instead of at the end of a measure.
More serious difficulties abound: there are no downward stems, no stacked notes, no beams, and only one ledger line MIDI GOLD MIDI Interface for the Commodore Amiga Personal Computer Available now...from Golden Hawk Technology!
• Dual MID! Out and single MIDI In connections.
• Sync Out connection provides clock and start stop control for
drum machines and other devices.
• Connects directly to the serial port.
• Custom metal enclosure.
• Complete with interface cable.
• One year warranty.
• Full technical information included.
PRICE $ 79.00 — Free shipping on prepaid orders.
427-3 Amherst Street, Suite 389. Nashua. NH 03063
1603) 882-7198 Weekdays 2PM — 10PM EST VISA. MasterCard'CODs
Accepted DEALERS INQUIRIES WELCOME Amiga is a trademark of
Commodore-Amiga. Inc. is displayed per note regardless of
how far above or below the staff it is. Thinking that
perhaps I was being too critical, I showed a copy of a
Music Studio printout to two musicians, one a
semi-professional organist and the other a local rock
artist. Both said that they would have to do a lot of
cleanup, such as inserting ledger lines, before they could
play the song I handed them. Remember that the appearance
of the score has absolutely nothing to do with Music
Studio's ability to play the music. If you're only
interested in dumping a hardcopy of your score for
reference or to make notes on, these limitations probably
won't bother you. But don't expect to be able to easily
read a composition printed by Music Studio unless it is
An important omission on the composing screen is control over dynamics: there is no way to make notes louder or softer within the piece. Music Studio supposedly supports an accent, and you can indeed place accented notes. But they don't get accented! The manual says any accented notes are played fortissimo, but there is no change in volume for either the internal voices or the MIDI channels.
In composing or transcribing music, you will quickly discover a frustrating fact: the score is based on "columns", not notes, and some durations can be misinterpreted if this is not taken into account. As an example, write a measure containing four quarter notes, then place an eighth note above the first and third quarter notes. The first quarter and eighth note will sound simultaneously. When the eighth note expires, Music Studio will immediately move to the next "column", cutting the first quarter note to one half of its intended duration and destroying the timing of the measure.
The same thing will happen to the third quarter note.
The workaround is to place a rest in the column after each eighth note, but according to the rules of traditional notation this should not be necessary. The upshot of this is that transcribing a piece of sheet music for Music Studio is more difficult than it should be: if you enter an exact copy of the printed score, odds are it will not play correctly and will require numerous rests scattered throughout the piece. In fact, several of the demo songs included with Music Studio contain a continuous string of rests running along the top edge of the score; 1 cant help but wonder if they are there
to patch around this problem.
Remember that I've picked nits here in some cases. There is much good about Music Studio, and overall I like the program. I can't say it will become my most used composition program, but neither can I point to something better. ActiVision has a very big pius in their favor: they were FIRST with a real music program for the Amiga. For the price, you can afford to be wrong.
ACKNOWLEDGMENTS I'd like to thank Charlotte Taylor at Activision for getting my copy of Music Studio into one of the first shipments so!
Could do a timely review. Thanks also to Jeff Arnold at Golden Hawk Technologies for rushing me one of his MIDI interfaces (to use in a review of somebody else's product!).
A tip of the hat to the Hermitage Road ComputerLand in Richmond, Virginia, for the loan of an Epson printer (they don't sell Amigas, but they are very accommodating folks.)
And 1 owe a debt of gratitude to Chuck and Don at Don Warner Music, also in Richmond, for the loan of a CZ101. (I don't have one of those in my keyboard stack).
That’s all for now. Til next month... Nybbles, Rick SUMMARY: ACTIVISION MUSIC STUDIO My overall impression of Music Studio is favorable. There are some serious limitations and a few rough edges, but we need to keep in mind that this is the first musically oriented package ever released for the Amiga, if you are interested in experimenting with music and don’t need professional quality scoring or sound, Music Studio is definitely worth considering.
PRODUCT: Music Studio $ 59.95 COPY PROTECTION: Yes, bypassable as "key disk" REQUIREMENTS: Amiga with 512K, one drive, KS 1.1 ActiVision
P. O. Box 7287 Mountain View, CA 94039 415-960-0410 4 — Vn r
• 11 th ¦
cl) IL, 'Av.
• TV Amiga™ Dreams come true with EASYL A pressure-activated
drawing pad, the EASYL™ lets you draw directly into the Amiga
with a pencil.
EASYL™ is the ultimate in sensitivity and responsiveness, Why he limited in the mouse7 Why he constrained by electronic pens?
Draw on your lull trvativitv with EASYLIM!
ACME™ or OXBERRY " compatible registration pegs for producing frame-by-frame character animation are available Please enquire PRICE IN U.S. FUNDS Tl ORDER. PLEASE CALL: Ti!
$ 1-416-744-4246 1 499 Annkin Research Inc. 100 Westmore Drive, Unit 11C, Rexdale, Ontario. Canada M9V 5C3
- VIDEO COLONIZATION % 7 I,'j) — 4* Jr-i.
All drawings rested using EASYL1'* with Detune Paint'*1 on Iht Amiga computer, Forth!
A Tutorial By Jon Bryan This month we begin the process of designing a real application for the Amiga. "Begin" is the best way to describe it. As I will be writing it as we go along. I will be learning the machine right along with the rest of you, and perhaps I can communicate some of my problems and hopefully solutions) as the program evolves.
What 1 have in mind is a three-dimensional simulation of a bouncing ball, complete with gravity, friction, and sound. it may reinforce the Amiga's image as a game machine, but it will be a lot more fun than writing a terminal program or an extension to AmigaDOS. Some aspects of the program will no doubt be primitive, and others less than optimum, but it should serve as a jumping-off point for other, more elaborate applications.
IT’S ALL BEEN DONE BEFORE The program won't be written completely from scratch, since i have already written a version for the Commodore 64. Most of the work will involve translating the graphics and sound specifics from one machine to the other. I wrote the version for the 64 using Parsec Research’s SUPER FORTH 64, and judging from the level of performance which I was able to obtain, we should be able to achieve some very impressive results on the Amiga.
I expect to use a mixture of top-down design and bottom-up coding on this application. We'll start the design phase this month, and throw in some code as the project progresses just to keep everyone interested and to give you something to play with. My rough estimate at this point is that the project will require about four installments, but that could change depending on your feedback and the level of sophistication of the final product. There will have to be some design trade-offs involved. I don’t expect to produce the be-all and end-all of Forth programs for the Amiga. The primary
constraint is one of time: I have a "real" job to which I have to devote myself. Writing this column is something I do on the side. The other constraint is space.
PROCEEDING TOWARD A DESIGN The basic idea behind the program is simple. I want to create a reasonably realistic simulation of a rubber ball bouncing inside a closed space. The screen of the monitor will provide a window into the space through which the action may be observed. It will probably look something like the view of a handball or racquetball court — as if we were spectators viewing the action through the glass back wall.
The calculations involved can be reduced to a few simple equations. For the sake of realism, our primary concern will be to generate a convincing perspective view. Figure 1 illustrates the problem. If you look at the picture, and remember some simple geometry, the rule of similar triangles requires that the following relationship be true: x D=X (D+Z) Solving for x we arrive at x=X’D (D+Z) This equation gives us the means to project the ball's position in one axis) onto the "window" of the CRT. This basic equation will also be used to determine the proper size for the ball at varying
distances. I'll be going into greater detail as we progress toward the solution.
Moving along rather quickly, the other aspect of the problem involves calculating the ball’s motion. We can't project the bail onto the screen if we can't predict where it's going to be.
In this simple simulation the forces influencing the motion of the ball will be limited to gravity and friction.
The effect of gravity on a failing object can be described by two simple equations (refer to any high school physics text): D=(V0*T)+((A 2)‘TA2) where D is the distance traveled, VO is the initial velocity, T is the eiapsed time, and A is the acceleration of gravity, and VI =V0+(A*T) where VI is the final velocity.
We can arbitrarily, and conveniently, say that one unit of time will pass each time we move the ball, since we'll be doing it in a loop. Then, when we make T=1 (and cancel units), the equations simplify to: D=V0+(A 2) and VI =V0+A Since the value for acceleration can be considered a constant, A 2 is a constant as well, thereby reducing the calculations required to handle the acceleration due to gravity to two additions.
There are two sources of frictional loss which will have lo be taken into account, since in order to be realistic the ball’s velocity should gradually decay. One aspect of that decay is expressed as the "Coefficient of Restitution." In simple UNLOCK THC MVSTCRV UJ1TH TH€ K€V TO ’C
• Source & executable Code • Foster & Cosier
• Full Documentation • Deliveries Begin Sept. 1 $ 34.95 DRTR
fl€S€RRCH PROC6SSING, INC. 5121 Rudrey Dr. Huntington Beach, CR
92649 Phone: (714)840-7186 INTRODUCING AMIGA DOS& MICROSOFT
BASIC TEMPLATES TM Get the Guru Busters!
? Amiga QOS $ 9.95? Microsoft Basic $ 9.95? Both S1G.95 Charge my: O Visa? MasterCard? Check money order Credit Card No,. Exp. Date__ Name ___ Address__ City_____ State, ZIP.
Signature __ Michigan resident add 4% sales sax. Add SI.50 shipping & handling Mail to: Slipped Disk •31044 John R • Madison Heights, Ml 48071 Dealer inquiries welcome. Phone. (313)583-9803 Allow 2-4 weeks for delivery terms, no ball is perfectly elastic: it loses energy on each bounce. The easiest way to express the coefficient is as a percentage. A very springy ball might retain 90% of its velocity on a bounce while a less springy ball might have a coefficient of 50%. Whenever the ball strikes a surface we’ll have to scale its velocity according to its coefficient of restitution, which will
be a variable (and easy to change).
There is another small problem involving friction to be solved. The ball also loses energy to friction when it's rolling. If we don’t factor in this source of friction the ball will only stop when it ’sticks" to one of the walls, since it will only lose energy on a bounce. Once the ball has struck a surface it’s a simple matter to change the sign of the velocity component perpendicular to that surface, causing the ball to "bounce." Detecting contact with a surface is straightforward as well. There are a couple of other problems which aren't so simple, but I'm going to leave you to ponder the
implications, and cover them in a later installment.
SO WHEN DO WE ACTUALLY GET TO FORTH?
The Forth program to simulate a 3-D bouncing ball could be expressed like this:: Bounce-the-ball (--) initialize-the-odds-and-ends BEGIN Move-the-ball Bounce-if-it's-necessary Has-it-stopped?
UNTIL; which is very wordy, but would be perfectly acceptable. I actually plan something a bit more complex, perhaps like this:: Bounce-it (--) Initialize BEGIN New-veloerties BEGIN Move Bounce Stopped? UNTIL AGAIN; which would bounce the ball endlessly, giving it a new set of velocities each time it came to rest.
I’m going to quickly define a few of the words contained in "Bounce-it", then sign off for this installment. Please remember that everything you see here is subject to radical change.
: Move (X positionVY position — New X New Y) New-Z New-X New-Y Clip Move-ball; I've departed from standard practice by labeling the horizontal and vertical axes as X and V respectively. A physics textbook would probably label the vertical axis Z, but I've chosen to use it to represent depth. My reasoning is that everyone is already used to calling the screen axes X and Y. You're probably thinking to yourself that "New-Z" came out of nowhere. I'm hiding the details until later, since in the earlier version of this program I used a variable for the Z-axts position to avoid what 1 thought was an
excessive amount of stack manipulation.
: Bounce (X position V position) Front back Sides Top bottom; "Bounce" checks to see if a collision has occurred and handles it accordingly. For instance,: Top bottom (Y position) DUP Ymin= OVER Ymax= OR IF Yvel Enough?
IF Blip THEN Yvel Reflect THEN; I know there are a number of things left implied here, but I want you to have something to think about. I’ll only include one more word.
: Stopped? (Y position — V position Flag) DUP Ymax — Xvel @ OR Yvel @ OR Zve! @ OR NOT; That should give you some food for thought. Keep in mind that the ball has to be ON THE FLOOR to be "stopped," and that on the screen the V axis numbering starts from the upper left comer.
OTHER ARBITRARY DECISIONS I will be writing the program using Multi-Forth from Creative Solutions. One immediate result of that decision will probably be that the Z-axis position value will be kept on the stack. Multi-Forth has "local" variables, so the stack manipulation problem will go away. There will be some tips on porting it to other implementations of Forth for the Amiga, but my main concern is to make something work and communicate the details to you. I think excessive generality would confuse more than enlighten, so those of you who have other implementations of Forth will have to
bear with me, and do some translation on your own. I will try to help ease some of the burden.
There are two ways to approach the solution to this problem, One way is to get the job done with the least amount of fuss.
The other way is to include such things as a shaded ball, a shadow and a dynamically sizeable room. While we are at it we could include sliders to vary the ball's elasticity, the force of gravity, and the friction coefficients. There could be multiple balls (and collisions between them). The possibilities are endless, and i expect to come down somewhere in the middle. I'd at least like to have a shaded ball which looks like a sphere, and S’d also like to throw in a shadow to improve the illusion. However the final version turns out, it should provide a broad-based introduction to the many
features of the Amiga.
• AC- A GREAT COMPUTER- OUTSTANDING SOFTWARE......AND INCREDIBLE
There may not be a better persona! Computer than the Commodore Amiga. But no computer can be better than the software that runs on it. Micro-Systems Software, makers of OnLine! And BBS-PC for the Amiga, proudly announce another link in their chain of value-packed software.
Analyze! Is a powerful electronic spreadsheet program.
Essentially, this program is a full-screen calculatorwhere you can organize your data into rows and columns. These rows and columns can be analyzed with simple mathematics or complicated formulas. Rows and columns can be duplicated to avoid re-typing. Both data and formulas can be edited with only a few keystrokes.
From home budgets and check registers to financial modeling and your company's general ledger, all manner of bookkeeping tasks become faster and easier with Analyze! An outstanding value at only S99!
OnLine! Combines features and convenience tn a high quality package that will meet all your telecommunications needs. With OnLine!, you can use your Amiga as a window to the world of information that is just on the otherside of your telephone. You can link up with commercial information services for stock quotes, airline information and reservations, technical databases, and thousands of other business and entertainment tasks. You can also plug into local bulletin board systems (BBS) and discover a new world of information and software for your computer. Corporate users can use OnLine! To let
their Amiga access data stored on the company's mainframe computer.
OnLine! Is the finest program of its type available for the Commodore Amiga. You can't lose when you get "online" with OnLine!. All for a down to earth price of only S69!
2400 bps modems! 2400 bps modems are breaking the speed barrier in telecommunications, and Micro-Systems is breaking the price barrier in 2400 bps modems. Transfer files 2 times faster than a 1200 bps modem and 8 times faster than a 300 bps modem. Micro-Systems will sell you a Hayes Smartmodem compatible 2400 bps modem, a special Amiga serial cable, and a copy of OnLine!, all for S429.
That's right, the modem, the cable, and the software, all you need to begin using your Amiga as a terminal to the world, priced at S429! Hundreds less than our competition!
Micro-Systems Software, Inc. 4301-13 Oak Circle Boca Raton, FL 33431
(800) 327-8724 National, (305) 391-5077 Florida Ask us about our
Amiga bulletin board program, BBS-PC.
The first BBS for Amiga!
AMIGA, OnLine!, Analyze!, BBS-PC, and Smartmodem are trademarks of Commodore-Amiga, Inc., Micro-Systems Software, inc., and Hayes Microcomputer Products, Inc., respectively, aie ° 1 REF _j|lanae
- Ch o 9' BEDROOM (ioVxii V) CLOSET PRINTED CIRCUIT ARTWORK
• » -SCHEMATICS ISOMETRICS t
• Data base to store and retrieve information on parts
specifications, vendors and pricing
• Data base system utilizes ASCII format files which are
convertable to other standards.
• Capable of utilizing up to 4.096 colors
• D*C can generate over 8.000 layers
• D*C supports most standard dot matrix printers, ink jet. Lazes
jet. Pen plotters, and the Gorbet* Photoplotter.
SYSTEM REQUIREMENTS 512 K RAM 2 Disk Drives (or) 1 Drive and Hard Disk Printer or Plotter (818} 360-3715 Inquiries invited.
P. O. BOX 3475, GRANADA HIM 5. CA 91344 rt»‘r — Irade rrwk cil
Gribn Srii-rtifir Imtiumrdi rov — it Jr mark oI Krurlcl 0 Ewr
A wade rrifSi of I rUfi rational Busifwv* Hathirws itoCAO
'r-tdr rrkjrk J Ai-tOdpV*. Inc nga tradr mark of Commodocr
5uvm-w M.Khine NET UST FROM SCHEMATIC merging from years of
successful problem solving applications in piping, and
electronics for the aerospace industry. DYMAMIC CAD has
broughta highly advanced and powerful CAD system together with
today’s most dynamic and versatile micro-computer, the Amiga.
DYNAMIC CAD takes full advantage of Amiga's extensive
capabilities with color, multiple modes of resolution, mouse
functions, and easily accessible pull-down menus.
This is not some promised "vapor-ware.” DYNAMIC CAD exists now and comes to the Amiga with a proven track record. The time and money-saving applications of DYNAMIC CAD for engineers and architects are truly astounding. Here is an advanced, 2-D drafting system with isometric capabilities that can be combined with many models of printers, plotters, and digitizers. In getting started you'lh have the support of an extensive manual written in understandable English along with working examples as tutorial lessons.
• D. C gives you all the expected CAD tunc tions of zooming,
rotating, panning, group functions and menu driven features
• D'C brings you professional CAD capability tested and proven in
the production of tens of thousands of drawings.
• D'C will liberate you from the need to draw free hand
• D’C has net listing capability from your schematic.
• Schematic comparison to your printed circuit artwork for
• D'C can produce isometric views,
• Mil Spec quality Leroy* fonts.
• Automatic line dimensioning
• D‘C includes a series of information libras ies; Symbols.
Electronic Parts Chips, Archi tectural Components. Landscaping,
etc WHAT DYNAMIC-CAD CAM DO FOR YOG By The AMIGA OK, about that
new hardware I promised you last issue. At Comdex, Commodore
unveiled several prototypes for their future Amiga. No, this
isn’t Ranger... remember what I said about the Ranger being an
ideology... open ended, expandable, etc. Instead, the newly
designed Amiga could be called 'the business Amiga.’ According
to the prototypes displayed, it will be your basic Amiga
inside, except the 68000 CPU will be replaced by a 68010,
giving it about a 10% general increase in speed. The machine is
commonly referred to as the A2000, but I have also heard from
reliable sources that it is going to be called the A2500.
The reason I call it 'the business Amiga' is the Sidecar (see last month's Amazing Computing for more info on the Sidecar) will be built in. That means native AmigaDOS and MS-DOS both built-in. Each side (68010 and 8088) will run at full speed, simultaneously, and can share resources, just as the Amiga A1000 and the Sidecar currently do. The new machine may have two built-in drives: a 3-1 2 inch drive and a 5-1 4 inch drive. The new machine's case is metal, instead of the AlOOQ's plastic case, and the keyboard has a new layout — among other things, the function keys come down the left side of
the keyboard rather than across the top.
Lastly, there may be up to six (I keep getting differing reports, six seems to be the most consistent number) Zorro expansion slots in the machine.
Also coming from Amiga A new chip set that can address 2 MB of memory, instead of the 512K that they address now. If you look at the Amiga’s memory map, you'll see a space of 1.5 MB that's "reserved for future use." Well, now you know what that future use is.
It's expanded chip memory. That means (for example) that many images can be stored in chip memory and quickly cycled through for animation effects, or sound tables and song data can be long enough to store data for a half an hour of music. Lastly, Amiga has shown some of its reps a DMA SCSI disk drive, with the warning that "we are not committed to this as a product." So we may see it, we may not.
Little known (until know): Current Amigas are shipping with a new keyboard. This keyboard does not have the "parallelogram problem" that the old keyboard has. Try this test: Hold down the A, Z and X keys at the same time. If you also get an 'S', you have an old keyboard (join the club).
Some trivia: Irving Gould, head honcho at Commodore (and holder of 6 million shares of stock) looked at the Emulator and didn't like what he saw. So he hired some crack engineers from Germany to develop the Sidecar.
In applications, CBM is trying to convince the "big three" auto makers in Detroit that they should standardize on the Amiga for inventory and parts ordering. Not only would that mean on the factory floor, but all the companies' distributors and dealers would have Amigas too. If it goes through and some swift software people realize what’s good for them, they stand to make a ton of money from special applications like this. Well? What are you waiting for?
Apparently Commodore wasn't too sure what it should do about prices of the Amiga, so it quietly extended it’s 'buy an Amiga and get a monitor' deal for another month. The latest deal, starting July 1, is that the price of the Amiga is dropped to $ 1095 (from $ 1295) and the monitor drops from $ 495 to $ 395. Now if you buy either by itself, you get a better deal, but buying both will really cost you $ 1490, which is $ 195 more than the old 'package' deal. The reason for this is that CBM was losing its shirt with the package deal, and this should even things out a bit. But if you take a look at the
CBM warehouses, you'll see a huge stockpile of 5-1 4" drives and A1080 monitors... they just can't seem to get rid of them.
Speaking of deals... a dealer up in New England tells me that they've started what he calls a 'bird-dog’ program. If you buy your machine at his place and then drag in a friend to buy an Amiga, you get 50 bucks. Some dealers are giving cash, some are giving merchandise credit. This dealer was under the impression that it was a New England only program, but not every dealer was going for it. If you're in that area, ask around.
Many people have been yanking out their 68000 CPU and replacing it with a 68010 CPU. This is an inexpensive, operation (although it voids your warranty) and provides a performance boost of about 5%. You can get up to 20% improvement in math-intensive applications, too.
Instructions on how to do this are on Fred Fish disk 18 (available from PiM Publications). Now that Motorola has announced a 50% price cut in their 68020 and 68881, we may start to see more people opting to build "Turbo Amigas", which will dramatically boost performance.
The hardware types at Amiga looked at the 'final' prototype of the Genlock, and after much scrutiny, decided the resulting picture quality wasn't good enough, so they’ve redesigned it. Now Commodore is talking about October as a release date. Meanwhile, those folks at A-squared have their LIVE! Board jumping through hoops. They are generating 10 HAM images EVERY second! That's almost LIVE! No word on whether the software that accomplishes this will be available with the machine; let's hope so!
LI YET ANOTHER UNFAIR ADVANTAGE Although you haven't had your Amiga for very long, you may find that you need a more pONverful tine interpreter Consider these features rv-.
Search paths User definable command-line editing Definable function keys Unix like wildcards More sersitile redirections Command aliases BuJt n commands Command hstory All available new. At a reasonable prce, from Z O X s o 1 HE AMIGA TOOLSMiTHS.
PCI Ito. M3 Lu«*MA.0l8S3O2a3 USA Speaking of Genlock, a company in the Washington DC area took a look at the Genlock from Amiga and said "Yuk!" They are producing their own professional-quality unit that will sell for about $ 1500. Word has it that there are 21 BNC connectors on the back of this thing!
Latest word on release 1.2 of the system software is that it will be available sometime in August. I doubt it; look for September as a release dale. However, when it does come out, you won't be disappointed. Faster directories, faster icons, less crashing, CLI search paths, RAM-resident commands that you can enable, Preferences support for the Serial device, new printer support, faster RAM disk, RAM: icon from the workbench, new disk tools, new graphics functions, auto configuration & expansion architecture support, PAL support, an expanded notepad utility and more make this an exciting
release. Another feature of VI.2 is that the DOS supports partitioned disks; you could have OS- 9 on part of your hard disk, AmigaDOS on another part, and MS-DOS on yet another pari! Whew!
The toolbox disk that will be forthcoming from Amiga will be helpful too. The FontEditor looks great! I still don't know what we’ll see for delivery date or price, though.
Speaking of fonts, be on the lookout for new fonts! A small company is about to release over 100 fonts for the Amiga that can be used in notepad, paint programs or your own custom programs! Last I heard, the individuals responsible were still deciding on a marketing strategy.
There's a new version of Scribble! Out. It is available as a free update, does mail merge, spelling check and some other goodies. Also, a new version of Analyze! Is out; it's an update that costs you money. Features include color, among other things. A new product, called Organize! Is out.
It is a database package. Look for a database package from a company called The Other Guys. Strange but true.
Are you looking for a color dot-matrix printer? Back in May at the NCAA (National Computer Graphics Association) show, Epson demonstrated a new printer that will sell for around $ 500. People who saw the unit said the quality was great. I guess this is the printer that will take the place of the discontinued JX-80. Canon is also reported to have a new low cost ($ 400) printer out soon.
If you are wondering why you can't get 300 dots per inch out of your HP Laserjet, it's because the driver was compiled at 100 dpi in draft mode and 150 dpi in letter quality mode. To remedy this, change the number stored at location $ 0F2E (draft mode) and the number stored at location $ 0F3C (draft mode) in the driverfile to one of these values: 0100: 75 dpi 0200:100 dpi 0300:150 dpi 0400:300 dpi Speaking of laser printers, word is that the Tex text formatting package is done. Look for it soon.
If you haven't seen InfoMinder from Byte By Byte, go see it!
It's gotta have the fastest disk drive access I've ever seen on the Amiga. A real classy product. $ 90.
Look for ABSOFT (publishers of Fortran for the Amiga) to come out with a Basic compiler this month; price under $ 300.
The new version of Manx’ Aztec C is out, which is compatible with release 1,2 of the Amiga system software, fixes some bugs, improves on its debugger, provides 68881 math coprocessor support, can generate output amenable to the Amiga assembler and supports scatter loading of code.
Roger Powell, formerly of now-defunct Cherry Lane Software, has emerged as Magnetic Music. So we will see Texture after all. However, Texture will only work with the Roland MPU-401 MIDI interface unit, and the MPU-401 doesn't work on the Amiga. Magnetic Music has the answer, however: an interface that allows you to hook the MPU-401 to your Amiga. Look for both products in August.
Look for MicroSmiths to announce their Mean 18 golf game for the Amiga. Also in the works: a package tentatively called Deluxe TxEd that will compete with such feature- packed packages as Microsoft Word. Hooray for MicroSmiths!
Mimetics said they will not be pushing sales of their MIDI interface; they simply built it because nobody else had one on the market. Now that other vendors are appearing with more capable devices, we may see the Mimetics interface just wither away slowly... Golden Hawk Technology reportedly has developed a MIDI interface that has all the parts inside the connectors; however it is not as versatile as MIDI Gold, and no word if it will become a product.
You may have heard of Hippopotamus, who announced support of the Amiga. Recently they announced that their Amiga products have been put on hold "indefinitely," so don’t hold your breath for them!
Metacomco has a toolbox disk coming out. Included will be support to use the serial device as a terminal, an enhanced CLI, pipes, and more. No word on release date or cost.
Also from Metacomco: APL for your Amiga! Really, they are simply doing the marketing: they did not develop it.
Yet Another Terminal Package: this one's called TeleCraft, and it's Amiga's entry. Its two claims to fame are that it supports 132-columns and the screen updates are fast; 9600 baud feels like 9600 baud, not 1200. I have not seen it, so I can't verify the throughput claim.
A company in Connecticut has developed a Commodore-64 Emulator. It was in beta test in June, so this thing is for real.
It uses the 1541 or 1571 drive and runs full speed (I know, that doesn't say much for us speed demons). It is a hardware software hybrid... now your Amiga is three machines... look for it soon!
Look for Alegra, a memory expansion unit from Access Associates. The board has 512K on it for $ 379. But wait. If you want to buy higher density memory chips and install them yourself, you can buy their controller chips for $ 10.
With the denser RAM chips, you'll then have 2MB for about $ 700. The expansion board does not pass the Amiga's expansion bus through.
MicroBotics has announced their StarBoard II and its multifunction module. The StarBoard II is a 512K to 2MB RAM box. The module allows you to write protect memory, so if you get a GURU during development, you can flip the switch and write protect the RAM disk, then do your warm reboot, without losing the contents of the RAM disk. It passes the Amiga bus, and should be available early August. Also in the works from MicroBotics: a hard disk that plugs into the parallel port and has an SCSI port, and a DMA SCSI interface in the fall.
Word around is that AST has an Amiga and is excited about its potential; it looks good that we'll see some add-on boards from them sometime soon.
Another small company has an interface that lets you control 8mm VCRs and some standard VCRs through software. The main applications are video and digital sound; you could store over 24 hours of audio on a tape. It is VCR-specific; I’ll let you know more as I know more.. _
• AC* HOUSE HARDWARE 512 K Color System Sony RGB Monitor Canon
PJ-1080A Color Printer Avatex 1203 Modem SOFTWARE Aeg i s Act i
v i s i on Byte By Byte Di g i-Vi ew In £ ocom La11 i ce Mi
cro-Systems Mi ndscape TO I Chang Labs Eletronic Arts JHM Manx
Mimetics New Horizons VIP Technologies Above is only a sample
listing PUT YOUR AMIGA TO WORK with DATAMAT FULLY RELATIONAL
DATABASE MANAGEMENT SYSTEM.
• Now with images in IFF format, display with text data voice
• Quickly build applications without any program coding from
simple phone mailing list to research to organization-wide
• Self-running tutorials created automatically for personnel
• Integrate with virtually ail existing hardware systems
Companion software with identical user-interface for MS DOS,
XENIX, UNIX, VMS, and others available. Same application fits
all hardware From $ 125.00 DATAMAT PARTIAL SPECIFICATIONS
Organization Fully Menu-driven Relational Number of data files
per data Database Management System Application base Unlimited
Data types 13 includes Image in IFF Format Number of characters per field 1,024 Global (System) Fields 40 user definable Number of fields per record 2,000 9 special purpose Number of characters per record 4,000 Field checks Mandatoryjype, Initial value, Value within a specified Number of records per file
4. 3 billion range.
Multiple response Supports multiple responses Password security Field and data base levels (up to an array of nine) for a single field.
Calculation capabilities Full complement of 23 math Number of Relations per data and trigonometric functions and 13 logical operators.
Ills (simultaneous R W access) 10 Automatic date and tlmB calculations.
Data Entry ¦ single eulry to multiple files and records. Import Export facility with data conversion reorganization.
Forms Definition • full screen editor with mini word processor. Report Generation — up to 66 lines x 132 columns, 6 level totaling with built in summary, Sort Search — up to 26 selection criteria per query, Mass Editing, Time Saver Audit ¦ stores all key strokes used In building application for automatic recreation. Statistics and Graphics- stepwise multiple regression, standard statistical tests and analysis; scatter plots, bar charts. Custom Applications Generator
- batch partial batch processing; user-delined menues;
Available through your Amiga dealers. Inquiries Welcome.
Transtime Technologies J Corporation 797 Sheridan Drive, Tonawanda, New York 14150: Phone: (716) 874-2010 Datamal is a trademark of Transtime Technologies Corporation UNIX Is a trademark of Bell Laboratories AMIGA Is a Trademark of Commodore Am ga. Incorporated VMS Is a trademark of Digital Equipment Corporation MS-DOS 4 XENIX are trademarks of Microsoil Corporation SCRIMPER Screen Image Printer By Perry Kivolowitz Usenet; 1hnp41ptsfaiwelliperry This is the third and last installment of the description of Scrimper. In the previous two installments we've discussed how programs may cause
screens lo be printed by interfacing with the printer device, we've seen how menus can be constructed at run time and were introduced to a number of programming techniques and pointers.
This month, we'll discuss the interface between menus and Intuition as well as discuss a code saving technique in C, pointers to functions.
To wrap up some loose ends from last month let's look at how the list of screens in generated and turned into a menu.
Turn to the routine, build menu. This routine will call another routine "get_screens" to assemble a list of screens then for each screen in the list plug its name into a menu structure.
The first thing of note is that one of two parameters to buildjnenu is not used. The parameter "scrn" was left over from a previous version of scrimper. Leaving scrn in as a parameter is particularly wasteful in this case. Passing unneeded parameters is always a waste because code must be generated to place the parameter on the stack. In this case however, I had made scrn in to a register variable which means that each time I invoke build_menu I waste a whole
c. p.u. register which might otherwise be used. The lesson here
is two fold: First, don’t pass parameters that won't be used.
Second, register variables are to be chosen with careful
consideration as to frequency and complexity of use.
The next statement lo be executed, a call to ailoc_menuJtem, assumes that there will be at least one screen found by get_screens. This is a reasonable assumption since scrimper itself must be running from something, probably the workbench screen.
If allot_menu_item fails it will return false and we'll in turn return false from build__menu. Next I initialize p, a pointer to Menultems', to point to first item in the menu which the first time through the coming loop will be the item created to represent the first screen currently known to the system.
I go into a loop now, notice that the first value of the loop counter is one (not 0). This is because the zeroth iteration of the loop is "hard-coded" outside the loop. This is an example of a lime honored programming technique which in this case wasn't really needed.
The technique is to "prime the pump" before entering a loop then "pumping away" by entering the loop. This is usually used when the first iteration of a loop is substantially different than the following iterations. Usually this construct is used for reading data as in: Set up first read which might need special code.
Do first read.
Do (Processing; Attempt Next Read;} While (Read Went OK); In bmid_menu, first call to allot_menu_item and the succeeding "if" statement could be done away with by noticing that the needs of the first iteration are really the same as every other iteration. Notice that First Item, a field in a Menu structure is of the same type (a Menultem) as the linkage field Nextltem contained in each Menultem structure.
Thus instead of: register struct Menultem *p; if (get_screens ()) allot_menu_item (&menu- Firstltem, 0, stifles); if (imenu- Firstltem) return ((int) FALSE); p = menu- Firstltem; for (i = 1; i screenjcount; i++) (allot_menu_item (&p- Next[tem, i, stifles[i]); if (ip- Nextltem) return ((in!) FALSE); p = p- Nextltem;} return ((int)TRUE);} return (FALSE); I could have written: register struct Menultem **p; if (get_screens ()) (p = &menu- Firstltem; for (i = 0; i screen_count; i++) allot_menu_item (p, i, stifles[i]); if (! *p) return ((int) FALSE); p = &(*p)- Nextltem;} return ((int) TRUE);
} return ((int) FALSE); The AMIGA learning curve is steep! Choose a porting house that’s well advanced along the curve!
Advanc©d Systems Design Group Your Port of Entry into the AMIGA Marketplace 280 River Rd., Suite 54A Picscataway, N.J. 08854 1-201-271-4522 Amiga is a trademark of Commodoro-Amiga, Inc. What all this indirection means is the following: P is a pointer to a pointer to a Menultem structure. That means p is the address of a place where the address of a Menultem can be found.
For each screen, call allot_menu_item which will place into the address specified by p, the address of an Menultem (thus is p a pointer to a pointer). If the address stuffed into p (that is, *p) is NULL then something went wrong in allot_menu_item.
If nothing went wrong update to point to the space reserved for the pointer to the next Menultem in the Menultem just declared. Making this modification not only produces cleaner code but reduces the code size by a whopping 24 bytes (is Aztec 3.20A)!
Let's turn our attention now to the function get_screens which is called by build_menu to assemble a list of screen titles for use in the screen selection menu. Get_screens takes no parameters but leaves the global variable screen_count containing an accurate count of the number of screens. Or is that really so?
Can anyone guess at this point where the major (well not really so major) flaw is in the routine get_screens? I'll give you a hint. The second line of code establishes Scrimper's idea of what the first screen is. Notice that screen zero is taken from Scrimper's own window screen pointer. This seems safe right?
After all the Amiga EXEC stores the list of screens as a linked list of screens sorted by depth. The first screen on the list in the frontmost screen. The last screen in the list is the rearmost. Since Scrimper is responding to a user initiated event when it goes to build the screen list, Scrimper’s window must be available to the user. Scrimper's screen must be the front most?
Right! But only some of the time.
If in fact the workbench screen is the front most screen when get screens is called, Scrimper, as coded in the example code will accurately locate each currently defined screen.
But, take for instance the possibility that another screen is really the front most but has been partially dragged down to reveal the Workbench screen where the Scrimper window can be diddled. In this case, Scrimper will not catch the screens in front of the Workbench screen since they will precede the Workbench screen in the (depth) ordered list of screens.
How to correct this deficiency is left to Ihe reader however, one hint might be "look at the first header file included by third header file included by Scrimper."
A part from this deficiency (which by the way *was* an oversight on my part where other "flaws" mentioned in this article were included for Ihe purposes of discussion) get_screens is pretty uninteresting save only for the use of Forbid and Permit.
These two routines enable and disable multitasking on the Amiga. They are to be used extremely cautiously as misusing them will lead your machine down a dark and lonely path. I Forbid upon entering get_screens because the list of screens is a data structure which is shared by all processes using Intuition to access the Amiga display device.
As such I have to take steps to ensure that the data structure will not be modified while I am looking at it. To do this I shut down mult-tasking which means that while I am in the Forbidden state, my process will not be removed from the
c. p.u. unless I explicitly volunteer to do so by calling a
routine such as Wait.
It is critical that a routine which Forbids the processor must also perform a Permit to allow other tasks to run again. Thus it can truthfully be said that failing to call Permit is Forbidden!
Notice, in get_screens there are two possible exits from the routine and each has a Permit immediately before it.
Now let's dive into the getmenu function. The neat thing about the getmenu function is that it manages two distinctly different menu structures performing completely different tasks yet does so with one set of code.
If we were to draw a picture of how an alternative means tor accomplishing this it might look like so: screen selection menu code handler -...... screen selection menu v function selection menu code handler function selection menu That is, we have a section of code which manages the screen selection menu which for any selection executes the appropriate subroutines. One of the subroutines executed would be a routine to manage the function selection menu.
There would be two routines in which the program would loop handling menu oriented messages.
The approach taken in scrimper would look like the following: generalized menu code handler A v v screen selection menu function selection menu The way we do this is to abstract function calls which are menu dependent into a data structure which can be passed as a parameter to recursive calls to the generalized menu handling code.
The structure I defined is called "jmptbi" for "jump fable". A copy of the structure definition follows: struct jmptbi struct Menu ‘menu; int (‘init)(); int (*cleanup)(); int (*pick)();} This contains what may be a new construct for many readers. That is, pointers to functions. Pointers to functions are perhaps one of the most powerful constructs in the C programming language because they permit the design of algorithms with a very high degree of abstraction, individual cases need not be coded if general purpose code can be written once and reused.
Let's look at pointers to functions are declared by comparing the declaration to others.
Int A; int *B; int C(); int *D(); int (*E)(); A, of course, is the declaration of an integer. Memory large enough to hold an integer is reserved and the symbol A is taken to mean the contents of that location, B is a declaration of a pointer to an integer. Memory is reserved for a location which will contain a pointer to another location which will contain an integer. Memory for the pointed DATA REDUCTION ASSOCIATES INC. 303 West Sixth Avenue Dept. A Tallahassee, Florida 32303 904-681-0553 INTRODUCING A 68010 UPGRADE KIT... INCLUDING; AN MC68010L8CPU, "HANDLER)!)"... AN EXCEPTION HANDLER THAT
DOES NOT MODIFY YOUR CODE i.e. MOVE. W SR, EA, "DBG010"... AN INTERACTIVE DEBUGGER THAT YOU CONTROL, AND COMPLETE INSTRUCTIONS.
PRICED @ $ 115.00 COD or CHECK.
PRICE INCLUDES SHIPPING.
To integer is NOT reserved. B is taken to be the contents of a memory location which should contain the address of an integer variable. “B is taken to be the contents of the integer variable.
C is a declaration of an integer function. C by itseff is a pointer to an integer function but the pointer is fixed pointing to the first instruction of the "C" subroutine and cannot be reassigned. The value that the C function returns is a directly usuabie integer.
D is a declaration of a function returning a pointer to an integer D by itself is a fixed non-changable pointer to a function returning a pointer to an integer. D points to the first instruction of some subroutine somewhere.
E is declaration of a pointer to a function which returns an integer. E does NOT declare a subroutine, it declares only a pointer to a routine which must be defined elsewhere. E by itself is the value of the pointer in the same by that B by itself is the valus of a pointer. In the same way that *B is the thing pointed to be B, (*E)() is a CALL to the function pointed to be E. Note that E is different from D or C in that E it is okay to change the value of E while the value of D and C are fixed.
The following statement assigns makes E point to the same place as C and in effect calls the C subroutine twice.
E-C; C(); (*E)();_ Why would we want such a contstruct? Well, it allows us to compose abstract algorithms without consideration of specific cases. For example, we were writing a sorting algorithm, the sorting algorithm is exactly the same if what we sort are integers or strings, right? In some ordering some integers come before others. Similarly in some ordering some strings come before others. The sorting algorithm itself remains the same.
When we try to translate the sorting algorithm into a programming language we find that we'll have to have one routine which sorts integers and another that sorts strings.
But wait! Why not abstract from the sorting code the statements which do the comparison of one item to another?
In this way, the bulk of the code and in essence the spirit of the algorithm will not need duplication for each variable type we wish to sort.
Instead of having a sorting routine for integers and another for strings we can have exactly one sorting routine and pass it a pointer to a routine coded to compare two variables of a specif ic type, For example the following routines might be used for comparing variables to integer and floating types: compare_integer (a, b) (if (a b) return (1); else if (a b) return (-1): return (O);) compare_floating (a, b) float a, b; if (a b) return (1); else if (a b) return (-l); return (O);} In scrimper I use the jmptbl structure to point to routines which will perform menu strip initialization, the
execution of menu selection specific code, and menu strip clean up for varying menus (in this case, the screen selection menu and the function selection menu).
The general flow will be: while (no errors and no close gadget) call getmenu with screen selection menu handle menu selection call getmenu with function selection handle menu selection return from getmenu return from getmenu} Notice the recursive call to getmenu. This strategy may not be a bigwinner (in terms of code size) for just two menus, but suppose there had been a dozen inter-related menus and sub-menus? This sort of recursive design would save considerable amounts of code as well as provide a clearer impression of what the inter-relationships are.
We call getmenu with a pointer to a jmptbl structure. The first thing getmenu does is invoke the menu strip initialization routine pointed to by the field "init" in the jmptbl structure.
In the case of a screen selection menu, the init field point to the routine, screenjnit. Screenjnit builds a fresh list of what screens are currently defined to the system by calling build_menu which has been described previously.
If build_menu returns an error then screenjnit will return an error. If there is no error the newly constructed menu is prettied up a bit by calling massagejeft_edges which centers each menu item in the space occupied by the widest item in the menu.
Next we call SetMenuStrip, an Intuition routine which takes a pointer to a window as well as a pointer to a Menu structure.
SetMenuStrip tells Intuition that it should prepare to render menus according to the specification contained in the pointed to Menu structure.
Recall that a Menu structure defines where across the menu strip the heading of the menu will appear and how wide this particular menu’s header selection box will be.
It is definately not possible to activate a menu for a given window until SetMenuStrip is called. However, calling SetMenuStrip in and of itself does not complete the steps required in enabling the proper handling of a menu.
Other steps include having the IDCMP message MENUPICK enabled. Notice I set this flag when defining the contents of the NewWindow structure. This means that whenever menu events occur while scrimper's window is active, notification of these events will be sent to scrimper via IDCMP messages.
Let's continue on a bit. After calling the menu initialization routine we enter a loop which will terminate only by exiting getmenu as a result of receiving and IDCMP message.
We attempt to get a message from the IDCMP (w- UserPort) by calling GetMsg. Recall from an earlier Miga-Mania, GetMsg will return a NULL pointer if no message is available.
Hence the test on the following line.
If no messages are queued for scrimper I remove scrimper from c.p.u. contention by calling Wait. This has the effect of placing the scrimper process in a sort of suspended animation. While in such a state scrimper will not consume any c.p.u. time allowing the full computational resources of the Amiga to be used for other concurrently executing programs.
The ROM kernel will awaken scrimper if there is any activity on scrimper’s IDCMP (a clear case of "don't call us, we'll call you").
If we get past the if statement it means that message points to a valid IntuiMessage structure. Notice that the very first things I do is to store away certain key fields of the IntuiMessage. Can you recall from the Miga-Mania in issue 3 of Amazing Computing why this is done?
It is because the space occupied by the IntuiMessage structure is being loaned to us by Intuition. As soon as we signal to intuition that we are through borrowing the IntuiMessage (which should be as soon as possible) Intuition will reuse the location for some other purpose. That is, we cannot be assured of sole access to the borrowed memory starting at the point at which we call ReplyMsg.
M So, our choices are either to not call ReplyMsg untill we're done with the message or to save the parts of ihe message we'll need and ReplyMsg right away. Which way should we go?
Well, whenever you borrow somebody's prize possesion (and main memory can be argued to be the most sought after possesion in the Amiga) you should try to return it as soon as possible so we'll go the second route of saving ihe parts of the IntuiMessage we need and ReplyMsg'ing right away.
For scrimper's purposes we need only to save Class and Code. Class will tell me what kind of IntuiMessage I just received (this is the way I tell a CLOSEWINDOW strike from a MENUPICK). Code will tell me exactly which menu item was selected IF the Class was MENUPICK (the interpretation of Code is dependent upon the value of Class).
Ef Code and Class are saved and then the message is replied to immediately. Now all we have to do is act upon the received message. To do this we switch upon the saved value of Class.
[f the message was due to a CLOSEWINDOW message it means that the user has detonated the close gadget in scrimper's title bar. If this is so, we’ll have getmenu return FALSE. Returning FALSE from getmenu means either that there was some error somewhere or the user wants to exit. In either case the FALSE value will be percolated up through any nested calls to getmenu finally causing the top level "while" loop in main to terminate.
If the message was due to the user selecting another screen or window Intuition will send scrimper an INACTIVEWINDOW message. This is needed to handle that gizmological "screen-to-front" feature of scrimper's.
If the user had depressed the LMB (left mouse button) while over scrimper's own window an ACTIVEWINDOW message would be received. Between ACTIVEWINDOW, INACTIVEWINDOW and CLOSEWINDOW we've provided a way of intercepting any left mouse button depression which might occur.
As a side, how might I saved a few lines of source code from this switch statement? Like so: case CLOSEWINDOW: case ACTIVEWINDOW: case INACTIVEWINDOW: (*jmptbl- cleanup)(); AMIGA 2S6K CARD Only $ 99.00 1 YEAR WARRANTY AMIGA GIVES YOU A CREATIVE EDGE.
MICHIGAN SOFTWARE (J DISTRIBUTORS inc. 13M5 GRAND nrVEFl • NOVI, MICHIGAN MOM TELEPHONE (313) 343 1477 MODEM (313) 340-4479 call 13 zsna return ((int)! (class == CLOSEWINDOW)); This brings us to the MENUPICK messages where we must look at the saved value of Code to determine exactly which menu item had been selected.
The first thing to observe is that the previous sentence should read "exactly which menu ITEMS had been selected."
That is, Intuition allows multiple menu items 1o be selected by depressing both mouse buttons while over one or more menu items.
When more than one menu item is selected during a single menu event intuition defines a linked list of selected menu items within the Menultem field, "NextSelect." Actually this isn't exactly so, NextSelect does not contain an absolute memory address specifying the next Menultem structure to be examined but rather it contains a compound value representing menu number, item number and sub-item number if appropriate.
Menu number starts from 0 and counts upwards from left to right. Item number starts from 0 and counts upwards from top to bottom. Similarly for sub-item numbers where appropriate.
Macros exist for converting these compound symbols for Menultems into a more useful form. For example, given a pointer to the head of a menu data structure and a code from a MENUPICK message, ItemAddress will return a pointer to the Menultem specified by the code or a NULL pointer if no corresponding item exists._ I I CARDINAL ANNOUNCES ITS x2 EXPANSION DISK DRIVE GIVE YOUR AMIGA
2. 6 MEGABYTES 2x2 CONSISTS OF: 2 5 1 4” 80 track drives,
electronics and software.
• AMIGA DOS MODE — Emulates
3. 5” drives with 880K each.
• PC DOS MODE — Provides dual 40 track, 360K drives.
_$ 595.00_ JUKI 5510 C Color Printer (Uses Epson Codes) $ 469.00 I decided, and I'm sure you'll agree with me, that for scrimper's purposes multiple menu selection don't really make sense. So, I have to filter out any multiple selections if they had occured by looping through what may potentially be a link list of menu items to find the valid member of the chain.
Once I'm satisfied that code contains the compound symbol for the last Menultem selected I pass it to the routine pointed to by the "pick" routine followed by a call to the "cleanup" routine.
Notice I pass back the value returned by the pick routine as the value of this instantiation of getmenu (this is how the percolation mentioned before is accomplished).
If we had just made a screen selection the pick routine which would be called is screen_pick. The first thing we do in screen_pick is record whichscreen was selected by saving the item number extracted from "code." Tf the first Menultem had been chosen the value of ITEMNUM(code) would be 0. If it had been the second Menultem the valud of ITEMNUM(code) would be 1 and so on.
Having recorded the user's screen selection let's find out what the user wants to do with the selected screen. To do this we call getmenu again! This time, we pass it the function selection jmptbl rather than the screen selection jmplbl.
This causes the menu strip containing the screen selection menu to be replaced with one containing a function selection menu. Screen_pick returns the value returned to it by its own call to getmenu.
Calling getmenu with the function selection jmptbl will probably lead to calling tunc_pick (should the user make any valid menu selection). Func_pick attempts to verify that the selected screen is still valid (since time may pass between generating the list of screens, displaying it, and having the user select it plus a function to perform) by rescanning the list of screens looking forthe one we're hoping for.
If the hoped for screen is found in the system's list of current screens (even if it had moved) verify_screen_pointer will return a pointer to the screen structure representing the screen selected. If the screen selected became undefined (the list of screens no longer refers to the hoped for screen) since its selection, verify_screenjoointer returns a NULL.
If the screen is a valid one we look at the saved value of Code to determine which function should be performed upon the screen. Menultem 2 (the third menu item in the function selection menu) simply causes scrimper to return to the screen selection menu.
If the user has chosen to print the selected screen we remove the function selection menu strip right away so as to eliminate a host of MENUPICK messages which might be caused by the user banging on the mouse while waiting for the printout to finish.
Finally, if the user has selected the "screen-to-front" command we bring the selected screen 1o front. Then we wait for ANY message coming in over the IDCMP. If the message is an INACTIVEWINDOW the user elected to make the new front screen the active screen by clicking the left mouse button.
Any other message will cause scrimper to bring its own screen (usuallythe workbench) back to the front thus implementing the quick screen toggling mechanism.
Notice that even at this point we check for the CLOSEW1NDOW message and pass back a FALSE value if it should take place. This way, no matter what state scrimper is in (besides printing) it will respond correctly to close gadget strikes.
Phewieili This has been a long adventure in C programming on the Amiga. In this three part tutorial we've covered the in's and out's of many advanced features in programming this exceptional machine. We covered C programming techniques and discussed why things might be done in one way over another.
And lastly, we've discussed some of the gestalt of programming. That is, you've been taken on a tour of algorithms, data structures as well as been given a glimpse of what goes on inside the head of a person whose been using C exclusively for seven years.
Maybe this code wasn’t the best choice for a brain dump considering that when it was written (fully eight months ago) it was intended as a quickie exercise never to be seen by other humans. In my opinion, one of the most useful attributes of the scrimper articles was precisely the fact that the code was not all that hot.
That is, for a change readers got to see a discussion of real world code rather than finely crafted mistake free code which does not lend itself to a discussion of alternative approaches.
All in all, I hope that this has been a worthwhile contribution to your ramping up upon the Amiga learning curve.
In the future, I am considering changing the format of Miga- Mania to be the discussion of a different short and useful program every month rather than its current grab-bag style.
INSIDE YOUR GREY BOX AMIGA SCHEMATICS M — |You can investigate:
• RAM Expansions
• Auto Boot Rom Mods
• Disk Drive Interfaces
• Additional Ports
• DMA Expansions
• Video Enhancements
• Etc0 $ 24.95
• AC- Orders Toll Free 10-6 MON-SAT 800 762-5645 14840 Build
America Dr. Woodbridge, VA 22191 Info: (703) 491-6494 Cardinal
Softwan T Computer West 4130 N. 75th Ave. 105 Phoenix, AZ 85033
(602) 849-4795 DEALER INQUIRES WELCOME Solid Oak Swivel Custom
Disk Cabinet Holds 84
3. 5" Micro Floppies Put all your disks in one place — at your
fingertips $ 49.95 Gallery of Images For DELUXE PRINT® Chapter
1 jMj Featuring: States, Social Activities, Southwestern Art,
Mix and Match onIy $ 19.95 MEMORY EXPANSION BOARD A BIG 2 mb.
Speed Features: uto configuring Mounts on expansion port Zero wait states A must for business, graphics, (b 7 rv £ f f database, and cad programs, xp y J. UU O Art Disk Deluxe Print 19.95? Memory Board S795.00 [;ame? Art Disk Deluxe Paint 19.95? Oak disk holder S69.95 Address? Check money order? Credit Card No. (-jiv Exp. Date Sign., nn,..?, V’sa? M C? Amer. Exp. Computer West m* — »¦ 75 a™. ™5
(602) 849-4795 Phoenix, AZ 85033 State Zip Amcgi is a regu'xrcd
tudemm: of Commodore Bosmeij Machine 1. DexJuxo Print ri 1
rejutencd tnacmirx of Eleca-onie Aru.
Computer Art Gallery of Animations by Ken Costello Corvette example; wheels spin, telephone poles flash by and road moves. 23 animations, Explore the animations of 1 HOC your computer. 4) JL j • j 5 The Amazing C By Stephen R. Pietrowicz CIS [73047,2313] Usenet: Jihnp41pur-eeigouidihouliganisrp People Link: DR RITZ In this lesson, we'll be exploring structures and unions, and how to use them in your own C programs.
Why use structures? Structures are used to consolidate information about a given "object". That "object" can be a page in an address book, an entry in an inventory list, a car in a parking lot... any object that has different pieces of information that you want to keep together in a single entity.
In Pascal, this is called a 'record'. In BASIC, you would use FIELD statements to define the layout of the data to be stored on disk.
Those pieces of information are kept in a form that is easy to access and manipulate. Structures are used by many Amiga system calls to handle information for the information the Amiga keeps internally. Information for creating windows, storing sprites and bobs, and creating gadgets are all stored in structures. You can create structures in your own programs to efficiently hold any type of information you choose.
Declaring your own structures Imagine that you have a mailing list. Each person on that mailing list has his own information: contact name, company name, address, city, state, zip code, age, and the number of mail items that have been sent to that person.
In a language such as Basic, each of these items would have to be kept in a separate array. Each element the array corresponds to a certain person's information. In C, this information can be kept together in a single structure: struct Entry char‘Contact; char‘Company; char ‘Address; char‘City; char‘State; char‘Zip; int Mailings;}; The tag of this structure declaration is Entry. For those of you who program in Pascal, this should look familiar. The Pascal equivalent to a structure is called a 'record'.
Declaring MailEntry structure variables is simple; struct Entry Personl, Person2, DataBase[500j; 'Person!1 and 'Person2' each have enough room reserved in them to hold information about one entry in the mailing list.
Tutorial 'DataBase' is an array that can hold up to 500 different entries.
[Editor's note: Please note that the 'DataBase' array elements only hold pointers to character strings. The 'DataBase' array does not hold the string values themselves! Each array element is a structure of type 'Entry'. Each 'Entry' struct holds only pointers to character strings.
Look at the example below, at the line 'Personl. Contact = "Amiga". In this example, the pointer-to-character element 'Contact' is initialized to point at the string "Amiga".
In other words, the pointer is set to the address of the string "Amiga", which is a constant string compiled into the program. You can print this value, using the prints ()’ function. However, if you want to store this database to disk, saving only the structures in 'DataBase' itself would make little sense, since each array element oniy contains pointers to the data, not the data strings themselves. In this sense, this is not a practical example of declaring an array for a simple database program in C. There are a lot of complications with using strings in C. It is not as easy as in BASIC or
FORTRAN. As usual, C gives much more flexibility in dealing with the content of data. [The topic of C strings will be covered in a future tutorial.)
Assigning values 1o fields is also straight forward: Personl. Contact = "Amiga"; Personl. Company = "Commodore Bussiness Mach."; Personl. Address = "1200 Wilson Drive"; Personl.City = "West Chester"; Personl.State ="PA" Personl.Zip =’19380" Personl. Mailings = 6; In a sense, we've just declared our own data type. It contains all the information we wanted to keep in a single definition. The open and close curly braces enclose the contents of the structure. Each of the structure 'elements' must be of any declared type: int, char, float even another structure type: struct Ac count char
‘AccNumber; float Balance;}; CHECK US OUT!
MORE THAN A MAGAZINE, we're the largest Commodore Users Group in the world!
Take a look. Here's what you'll get...
• Access to library for C-64. Amiga, MS DOS. VIC 20. PET CBM.
Plus 4, C-16. Superset. E-12S, C-12S.
• 10 magazines featuring articles and advice from noted experts
like Jim Butterfield. Steve Punter and Liz Deal.
• Access to the TPUG Bulletin Board System, a Punter BBS based in
• Free admission to TPUG chapter meetings, covering many special
interest areas of Commodore computing
• The right to attend TPUG's Annual Conference, with guest
experts from around the world.
TPUG yearly memberships: Regular member (attends meeiingsl — sss. no Cdn Student members (full'time, attends meenngs) 525.00 Cdn.
Associate (Onajj) — 525.00 cdn.
Associate (U.S.A.) — s2;. no us-zsjooo cdn.
Associate (Overseas sea mad) 535.00 U.S. Associate (Overseas — a: r mall 545.00 U. s Associate club,15 members) less 55.00 pet person on Appropriate membership.
FOR FURTHER INFORMATION: Send SI.00 for an Information catalogue or telephone: (416) 445-4524 (Please tell us which machine you use!)
TPUG INC DEPT, 200 101 DUNCAN MILL RD.. SUITE G7, DON MILLS. ONTARIO. CANADA M3B 1Z3 struct BankEntry char‘Name; struct Account Savings; struct Account Checking;) Accounts[3000j; Notice that the Account structure doesn't have a variable declared; it is simply a declaration of a new data type containing one character pointer, and a floating point number.
It isn't necessary for the structures to appear in this order.
If the BankEntry structure was declared before the Account structure, the compiler will assume that the Account was going to be defined later in the program. When you use a structure in a C declaration that hasn't been defined yet, but is defined later in the declarations, it is called a 'forward reference'.
Assigning values to fields of structures inside of structures is simple too: Accounts. Savings. Balance = 1872.45; Accounts. Checking. Balance = 340.23; One of the advantages of using structures is that they can be acted upon as one unit. For example, instead of copying each individual field from one structure to another, you can copy all the fields simultaneously with one assignment; Person2 = Person 1; Automatic Initialization C allows you to automaticaliy initialize variables when you declare them. For instance, if you declared an integer and want to initialize it to 500, you declare it
like this: int Number = 500; The same thing can be done with a structure. Suppose you have declared an Entry structure variable as described above, and you want to initialize each of the fields to a certain value. You can do that using a simple C assignment statement: struct Entry Personl; Personl. Contact ="Mary McGregor"; Personl. Company = "ABC Computers"; Personl. Address ="1234 Main Street"; Personl.City = "Hometown"; Personl.State ="IN"; Personl.Zip ="47906"; Personl. Mailings = 2; However, using automatic initialization, the variable could have been declared like this and achieved the same
result: static struct Entry Personl = "Mary McGregor", "ABC Computers", "1234 Main Street", "Hometown", "IN", "47906",
2); Automatic initialization can also be done for arrays of
structures: static struct Entry DataBase = "Zero",
"Zero", "Zero", "Zero", "Zero", "Zero", -1}, ("One", "One",
"One", "One", "One", "One", -1}, ("Two", Two”, "Two", Two",
"Two", "Two", -1}; This initializes the first three array
elements of DataBase.
Any array elements that are not assigned values are automatically assigned the value zero.
When using automatic initialization on structures that contain structures, the statement must contain the curly braces around each structure.
Static struct BankEntry Person3 = "Mr. Megabucks", "12345", 245056.20}, “67890", 16548.34),}; This statement is equivalent to: struct BankEulry Person3; Person3.Name = "Mr. Megabucks"; Person3. Savings. AccNumber = "12345"; Person3. Savings. Balance = 245056.20; Person3. Checking. AccNumber = "67890"; Person3. Checking. Balance = 16548.34; Allocating Memory for Structures Declaring pointers to structures is done in a similar way to declaring pointers to characters, or integers: struct Entry *Ptr; In order to assign values to individual fields when using structure pointers, the memory needed to
store the structure must first be requested from the system. The system call to request memory from the system is called 'AllocMemQ’. One way to request memory using this function is: Ptr = (struct Entry *) AllocMem (sizeof (struct Entry), MEMF_PUBLIC); Now, the first lime I saw the equivalent UNIX system call, I was pretty confused. Does the function call have two parameter lists? No, the first part of the assignment, "(struct Entry *)’, casts the AllocMem function call into a pointer of type struct Entry. In other words, the return value from AllocMem is temporarily changed into an Entry
pointer value so the compiler doesn't complain that you are trying to assign values to variables with conflicting types.
The ’sizeof operator in the first argument to AllocMem calculates the size of the Entry structure in bytes. Sizeof can be used with any declared type as it's argument, and is an easy way to calculate the size of those types. It's especially helpful when used with very large structures.
Size of is also helpful if you are writing portable C code. The size of data types may vary from machine to machine. By using the 'sizeof operator, you can eliminate the machine dependency.
Of course, you can decide just to substitute that entire expression with 'sizeofs value, but you'll lose the portability. And if you decide to add another field to the structure you are using you will have to change that number in all of the AllocMem's you use in your program.
AilocMem’s second argument is MEMF_PUBLIC, and is one of four possible attributes that describe traits associated with allocated memory: MEMF_PUBUC: Memory that must not be made non- addressable. Memory that is referenced by other tasks must public, this includes code and data, MEMF_CHIP: Memory that can be used by the DMA circuitry, (ie. Disk I O, graphics operations using the Blitter) MEMF_CHIP memory is taken from the first 512K of RAM.
MEMF_FAST: Memory that is not in the first 512K of RAM. This type of memory should be used in non-DMA critical applications.
MEMF_CLEAR: MEMF_CLEAR should be OR-ed with one of the other three attributes. Memory returned will be initialized to zeros.
You can 'or' in the MEMF CLEAR value to tel! ’AllocMem ()' the newly allocated memory to zero.
SHARPEN YOUR IMAGE w»h Digital Color Slides Posters For Professional Presentations, Art Portfolio or even for Fun!
Let your Amiga images shine with the quality you deserve. Any image created from Deluxe Paint, Graphicraft or Propaint can be made into high quality Digital* 35mm Slides or Studio Posters No additional software or hardware needed. Just send its your tile. s as they are stored on disk and in 2-3 days (plus delivery) you'll get back the proud results. Slides are $ 13 each. Matte or gloss Studio Print Posters II x 17 are $ 25.50 plus slide.
Also available. Digital Color Separations (as seen in Amiga World Magazine) and K x 10 Color Studio Prints and Transparencies. Orders must be prepaid (with sales tax in California.) Send your disk and check to: 555 19th St. 2nd Fir.
San l*'ran..Ca. 94107 415 626-N366:¦ ImageSet = ¦ — corp.? Images are not captured by photographic methods.
Rescue your 'fycipes!
Onypu uisinc Over 200 rT ecij)CS in 8 cat agarics.
'Edit avid add own recipes.
Organize and scare ft Jlfi Gy catagory or ingredient.
CS Send eficeft or Tnoncy order for S i 19.95 tc: ? TV fidei t Software V 2.0. 2 ox 700701 Smt jijo5P, Ca. 95170 rnibco ON THE AMIGAI The West Coast’s Largest Inventory of Commodore And Amiga Software And Hardware Products CALL KJ
(818) 366-5305 • 366-9120 10815 Zelzah Avenue Granada Hills. CA
91344 ’Ptr’ is assigned the return value from the call to
'AllocMem ()' which is the address of the first word in the
memory block requested.
Structure assignments using pointers are similar to regular structure assignments: Ptr- Contact = "Amiga"; Note the use of instead ofas in the previous example.
How structures are stored When structures are stored in memory, their fields are stored in consecutive memory locations. When the memory is allocated for a structure as listed above, it is returned in a single memory block. When you reference a field in that structure, C automatically indexes into that memory block to retrieve the location that you wish to use. It works similarly to indexing in an array. Ptr is the address of the beginning of the block, and by adding the correct offset, you can index to the correct variable in the structure.
For example, when the expression "Ptr- Contact" is encountered, C converts this to "Ptr+0", the address of Ptr plus an offset of zero. In the same way, "Ptr- City" is converted to "Ptr+12”, or the address of Ptr plus plus an offset of 12.
Fields of structures are 'word aligned'. Instead of packing fields in structures to reduce the size if possible, C leaves left over space in some fields. If the size of a variable is smaller than a word, the rest of the word is wasted space.
For example: The structure: struct a char a, b: into; chard;} sample; Is stored like this: Offset: Field: 0 | used | wasted | 2 | used | wasted 4 | fully used | 6 | used | wasted Unions Unions are similar to structures, but only one field can be present at any given time. In other words, the union: union int A; charr;} temp; can only hold one variable at a time, either the integer A, or the character B. (Accessing individual fields within the unions is the same as if you were using structures).
This might not sound particularly useful. Why not just declare a structure and have one field for A and one field for B?
When C encounters a union construct, it scans the fields within the union for the largest field in that union, and reserves that amount of space. Normally unions are used when you know that you're only going to need to store one type of variable in your data structure at a time, and you need (or want) to save space. In Pascal, the equivalent of unions are 'variant records'.
For example, in an inventory for a store some items are measured in pounds, (flour, sugar, etc), others are measured by the quantity in the store, (fruit, vegetables, etc). A structure can be set up to describe this: struct Item char "Name; float pounds; int quantity;}; and depending on what the value of the Name field is, the program can pick either pounds or quantity. Alternatively, the structure could have been set up this way: struct Item char ‘Name; union float pounds; int quantity;} num;}; Note that you are stilt able to determine which field in the union to pick by scanning the
Name field, and you save space in the structure. In a large scale application, intelligent use of unions can save quite a bit of memory.
Because of the way unions are stored, you can perform operations in C that you normally can't do. For example, you have to write a function to convert a floating point number from the way the Amiga stores it internally, to the internal representation of anothertype of computer.
In order to do that, you would have to perform bit manipulation on the floating point number. However, it is illegal to perform bit operations on floating point numbers in
C. The compiler simply will not let you do it. You can however
trick C into allowing you to do it by using a union: union
float a; in! B; char c;}d; By assigning the number to
split up to D. a, we can then look at D.b and D.b to see
the high and low order words in the number, and D.c,
D.c, D.c and D.c to see each byte of that number.
With what you've learned so far in the Amazing C tutorials, you should be able to begin experimenting with C to write your own Amiga programs. In future C tutorials, we'll explore the Amiga system calls and how to use what you've learned so farto program your Amiga.
25BK ADD-IN MEMORY t 95$ | bought your Amiga the 256K additional d have $ 95, this is the have been waiting for!
Heck C certified for ocessing, at this price flow situation is very
o the address below. If dy are running 5 9 2 K, or ure what to
do, send $ 1 isting of currently products for your If wi t ho me
mor deal Send f a s t e the c tight you a are n for avail Ami
ga C you ut y an you a c r pr ash) t lrea
o t s a 1 able Prices include shipping) IKOL & COMPANY Computers
2545 Bainbridge Blvd., Chesapeake, Virginia 23324 SciCalc™
Scientific Calculator For The Amiga™ $ 14.95 |0| SciCalc |-
1.234 56789 — 1 23 | 03 00 a fM (HypJ 000 m fexpl a a a a 
cm a s [S0 a 00 @ 00 000 Q a [VxJ [LnJ [CfflJ (03 CD Q 00 fSmnj
a a a Don’t lot the price fool you! SciCalc has full algebraic
hierarcy and features an automatic constant that is a delight
to use. ChooSB from 3 display modes: Floating Point, SclontHic,
or Fixed Point.. Press ihe Hyp (erbolic) key twice and a whole
new page of functions is at your fingertips. No long waits ¦
SciCalc has been available since March, Your order with manual
will be sent by First Class mail.
• Large Equals Key (Display) • Color Highlighting
• Adjustible Size * Full Error Trapping
• 10 Memories • 2 Dimensional Statistics
• Powers • Linear Regression
• Logarithms • Linear Estimation
• Trigonometry (D R G) • Correlation Coefficient
• Hyperbolics • Factorials to 170
• Polar Raclangular Conversions. And more.
Dealers Inquiries Welcome Send Check for $ 14.95 to: DESKWARE
P. O. Box 47577 St. Petersburg, FL. 33743 Smallest footprint.
Introducing Alegra'. The Amiga ™ Memory Expansion Unit from Access Associates.
Alegra: 512K now.
Now you can add 512K of externa!
Memory to your Amiga. In the smallest package available. At the lowest price available: s33900, suggested retail.
Alegra E 512K now. 2 Mb later.
If you'll need 2 Mb of memory in the future, the upgradeable Alegra E is the right choice now. Alegra E gives you 512K bytes of added memory with the option of 2 Mb later.* Because the upgrade requires only internal component changes, Alegra maintains its slim 3 4"-wide footprint. The price: s37900, suggested retail.
Alegra features a 90 day parts and labor warranty against manufacturing defects.
See Alegra at your quality Amiga dealer.
Dealer inquiries invited.
|ACCESS ASSOCIATES 491 Aldo Avenue Santa Clara, CA. 95054-2303 408-727-8520
* 45 I Mbit Drams become widely available.
"Amiga is a ifatJema** of Cornmoefoie Amiga Inc. Optimize Your AmigaBasic Programs For Speed By Stephen R. Pietrowicz People Link: Dr: Ritz CIS [73047,2313] Usenet:... lihnp41pur-eeigouldihouliganisrp You've just written an AmigaBasic program, and you're not satisfied with it's speed. What is the best way to go about making the program run more quickly?
By following some techniques used by compilers to optimize programs for speed, and by using a little bit of common sense, you'll be able to squeeze a few extra seconds out of that program!
First we'll cover a few different techniques, and then apply these optimizations lo some examples at the end of this article.
Compilers for C, Fortran, Pascal, and other languages use a variety of techniques to optimize code for speed. After generating machine language code, some compilers scan the object code and decide where to optimize.
Some compilers do a flow analysis of where the program spends most of it's time, and how variables are updated within loops in the program. The compiler can then make "intelligent" decisions about what to change in your program to optimize it.
The optimization techniques discussed below can be applied to almost any language at the source level. Most compilers preform optimizations after creating the machine language equivalent of a program.
Probably the simplest optimization method is know as "constant folding". The compiler scans the code for constants that it can combine during compilation, and thus eliminates the calculations during execution. Consider the following statement: x = 11 + 2 * (x * 9 6 + y) * 8.6 + 4 * 5 A compiler performing constant folding would change the statement to this equivalent statement: x = 17.2* (x* 1.5+ y)+ 31 It eliminated two multiplication, one division, and one addition operation. While most programmers would not leave constants like those above uncombined, we will see in the examples later that
we can do the above to reduce the number of mathematical operations in some time critical loops.
Another common optimizing technique is "code motion”. The compiler scans for expressions that never vary within loops, and moves the code outside of the loop. For example: FOR 1 = 1 TO 360 STEP 10 FORJ = 0 TO 360 STEP R = 20 + W K = SIN (I) * SIN(J) + COS(I) * COS(J) Z = Z + J + R NEXT J NEXT I The obvious statement to move is "R = 20 + W" in the inner most loop, because nothing in either of the loops changes the value of R or W. The compiler would then move the statement completely outside both loops.
A less obvious "code motion" optimization can also be done, and will eliminate many more calculations. Since the variable T remains constant within the inner loop, so do the values of SIN(I) and QOS(I).
It is therefore possible to move those two calculations to the body of the outside loop. The result of the code motion optimizations is below: R = 20 + W FOR 1 = 1 TO 360 STEP 10 X1 = SIN(t) X2 = COS(f) FORJ = 1 TO 360 K = X1 * SIN(J) + X2 * COS(J) Z=Z+J+R NEXT J NEXT I Moving two SIN and COS function calculations out of the inner loop will significantly increase the speed of the inner loop's execution by reducing number of calcuations made.
When the compiler changes the first assignment in the inner loop, it generates it's own internal variables, X1 and X2, and replaces the SIN(I) and COS(I) those variables. You should note the trade-off involved — this optimization uses more memory.
You can use these methods plus others to optimize your own programs. Since AmigaBasic is an interpreted language, and has no built in optimizer you'll have to decide where to change your code. Here are a few more tips to keep in mind when you're trying to optimize your programs: Amiga Project Programming Journal for the Amiga A no-nonsense journal dedicated to programming for the Amiga, on the Amiga.
Monthly columns written by experts covering Forth, C, assembly, Modula-2, Pascal, and more.
Help and advice for those of you who want to REALLY program your Amiga.
No HYPE, No Gee-Wizilil $ 24.00 for 12 informative issues.... Send your check or money order to Amiga Project
P. O.Box 285 Kent, OH. 44240 216-673-0185 Dealers, Advertisers,
Call for current pricing info...
1) Avoid using variables when you can use constants.
Whenever AmigaBasic scans a variable in a program, it has to look it up in it's table of variables for it's value. Look ups don't take very much time, but if your program does many calculations, the time adds up quickly.
2) Do not put comments in the main loops of programs.
Scanning past comments doesn't take AmigaBasic very long, but putting them in loops adds to the time required to execute the loop. This doesn't mean never comment your programs! You should ALWAYS comment your programs!
Commenting your code will make it easier for you to go back to later, especially if you've done something partically tricky, it also makes it easier for others that will see your program and will try to understand it.
3) Know all the functions in AmigaBasic. This may sound simple,
but it is very easy to over look some of the functions that
AmigaBasic has to offer. Why reinvent the wheel?
4) Avoid calling subroutines too often. If you have a program
that constantly loops and calls the same subroutines
repeatedly, move the code for the subroutines inside the loop.
If the subroutines are large, consider combining all the
subroutines into one. Each time you call a subroutine,
AmigaBasic keeps track of where to return to when it is
finished executing the subroutine. Doing this over and over
slows down your program.
Let's take a look at an AmigaBasic program to see how to go about doing an optimization.
Listing 1 contains 1hree different subroutines to plot a simple mathematical function 5 times using different values for each of the plots. Our goal is to get the plots to the screen as quickly as possible.
The original subroutine is called SlowPlot, and takes a little over twominutes to run. Applying the guidelines listed above, we see we can immediately eliminate three "slow spots" in the subroutine;
1) Take out the comments, or move them out of the inner loops.
2) Take out the FN a functions, and combine the constants.
3) Merge the duplicate calculations into one calculation and use
By watching the plot, we see that the left side of the plot is the same as the right side of the plot. We can take advantage of this symmetry, combine the inner loops, and plot both sides of the function at the same time. By combining the two inner loops, we've just eliminated half of the calculations needed to draw the plots.
The changes made to SlowPlot result in the second function, QuickPlot. QuickPlot takes about 45 seconds to run. Quite an improvement! Let's take a look at what we can do to QuickPlot to improve it's speed.
Notice that the only variable that changes in the inner loop is the variable "j". The calculations done with "x" repeat each time. By exchanging the inner and outer loops calculations done with "x" are doneonly once for each point, instead of five times for each point.
The last subroutine, QuickerPlot, makes this improvement, and takes about 35 seconds to run. The subroutines are arranged in listing one so you can run them and observe the execution times for yourself.
The last optimization technique I'll explain is absolutely the best, but it is also the most difficult to do. Once you’ve done absolutely everything to improve the algorithm that you've been working on, "step back’ mentally, and look at your program with a very critical eye. Is the routine you've written REALLY the best one that you can come up with? This is extremely difficult to decide, especially for beginning programmers.
Flere's a little test for yourself: right now, think how of you would design a routine that shuffles a deck of cards.
Assume that an array is already initialized with the names of the cards, and that you can use any additional variables that you want to use. Don't take too long, just use the first idea that comes to you. When you're done, continue reading.
Most programmers would come up with something similar to the routine ShuffleA shown in listing 2. The idea is this: Create two more arrays, one to put the cards into after you've picked them, and another to mark each card after you've used it. (Remember, you dent want to have duplicates!)
First clear the "marked" array. Set up a loop to fill each space in the "shuffled" array. Now, use the random number generator to pick a random card, and check the "marked" array to see if that card has already been chosen. If it hasn't, put the card in the next place the array. If it has, pick another random number, and repeat until you're filled the entire array.
While this isn't really a bad algorithm, it does have the potential for taking a long time to execute. This is what could happen in the worst case: Randomly place the first card into the "shuffled" array. The next card, and each card thereafter, could be a repeat of one of the previously picked cards.
You might have to continue picking random cards for quite a while to come up with one you haven't used. What should you do? It's possible to build in some kind of "artifical intelligence" into the algorithm, but this is really more trouble than it is worth.
ShuffleB, also listed in listing 2, is a better solution. It doesn't use any additional memory beyond the array that has already been initialized, and it always runs as the same speed.
The idea is actually quite simple. For each of the cards in the array, randomize a number between 1 and 52, and swap the current card with the card you've just randomly selected.
The routine only has to pick 52 random numbers.
To show the difference in speeds, I set up both routines to shuffle an initialized "deck" 10 times each. ShuffleA takes between 15 and 18 seconds to run. ShuffleB consistantly takes 6 seconds to run.
I told you to use the first algorithm that came to mind for good reason. Too many programmers use the first idea that comes to mind, and don't even try and think of another way to solve a problem. I can't over-emphasize the importance of getting a good algorithm. Always try to think of different ways to program a problem; you might just stumble onto a better, and quicker, solution!
Listing 1 Optimize Your AmigaBasic Programs For Speed I By Stephen R. Pietrowicz Listing one — Plotting example DEF Fha(t) = (100 360*t) 3 1 Draw each of the plots one at a time 1 and report all times when done CLS GOSUB SlowPlot FOR i = 1 TO 10000;NEXT i CLS GOSUB QuickPlot FOR i = 1 TO 10000: NEXT i CLS GOSUB QuickerPlot LOCATE 1,1 AMIGA CUSTOM PRINTER DRIVER:$ 35+S H Create your own printer driver for virtually any printer.
’ MENU DRIVEN ¦ WORKS THRU PREFERENCES We are world famous for our selection of Amiga software'_ Call our Amiga BBS at night or call during store hours to order!
We specialize in COMMODORE AND AMIGA COMPUTERS SOFTWARE SUPERMARKET 31621 2 Delaware Ave, Kenmore, N.Y. 14217 For Dealers only; Please call (orpridug on ourprinterdriver.
• • %
(716) 873-5321 & THE PRINTER Storehouse al$;" End — bl$;" End cl$;" End — PRINT "SlowPlot: Begin --
- "¦a2$ PRINT "QuickPlot: Begin --
- ";b2$ PRINT "QuickerPlot: Begin --
- ";c2 $ END SlowPlot: PRINT "SlowPlot" al$ = TIME$ FOR 3 = 20 TO
100 STEP 20 FOR x = -150 TO -1 STEP.2 1 First draw right side
I y = SIN (FNa (x)) (FNa(x)) *j+50 PSET (x+150, y),1 NEXT x
FOR x = 1 TO 150 STEP.2 Now draw left side I y = SIN (FNa
(x)) (FNa(x)) *j+50 PSET (x+15 0, y), l NEXT x NEXT j a2$ =
TIMES RETURN QuickPlot: PRINT "QuickPlot" bl$ = TIMES FOR j =
20 TO 100 STEP 20 FOR X = 1 TO 150 STEP,2 sy = x*.0925926 yl =
SIN(sy) sy*i+50 PSET (150-x, yl),1 PSET (x+150, yl), l NEXT x NEXT
j b2$ = TIMES RETURN QuickerPlot: PRINT "QuickerPlot" cl$ =
TIMES FOR x = 1 TO 150 STEP.2 sv = x*.0925926 SinTeirp =
SIN(ey) sy FOR 1 = 20 TO 100 STEP 20 yl = SinTemp*j+50 PSET
(150-x, yl},1 PSET (x+150, yl),1 NEXT j NEXT x c2$ = TIME$ RETURN
Listing 2: Optimizing Your AmigaBaeic Programs for Speed 1
Stephen R. Pietrowicz I ’ Listing 2 — Card Shuffling example I
DIM cards(52), Shuffled? (52), Check (52) DIM Spot? (4) SpotS(0) =
" of clubs" SpotS(1) = " of spades" SpotS(2) = " of diamonds"
Spot? (3) = " of hearts" DATA "ace", two", "three", "four",
"five", "six", "eev en" DATA
"eight","nine","ten","jack","queen","king" Main: RANDOMIZE
TIMER ShuffleA I PRINT "Shuffling...." al$ = TIMES FOR S = 1
TO 10 RESTORE GOSUB Init FOR I = 1 TO 52 Check (I) = 0 NEXT I
FOR I = 1 TO 52 Again: X = INT (RND*52+1) IF (Check (X) = 1)
GOTO Again Shuffled? (I) = card? (X) Check (X) = 1 NEXT I NEXT
S a2$ = TIMES PRINT "ShuffleA Start: ";al$;" End ";a2$ I '
Shuffle B i PRINT "Shuffling...." bl$ = TIMES FOR S — 1 TO 10
RESTORE GOSUB Init FOR I = 1 TO 52 X = INT (RND*52+1) SWAP
catdS (I), cards (X) NEXT I NEXT S b2$ = TIMES PRINT "ShuffleB
Start: ";bl$;n End ";b2$ END Init: X = 1 FOR J = 1 TO 13 READ
A$ FOR I = 0 TO 3 cards (X) =A$ +Spot$ (I) X = X + 1 NEXT I
NEXT J RETURN Amazing Writers!!!
Yes, we mean you! If you enjoy Amazing Computing and you are using your Amiga, you have completed one half of the qualifications of an Amazing Writer for Amazing Computing™.
We are interested in the tasks and joys you have experienced on the Amiga. We want to read the secrets you have unlocked. We want to experience your excitement and enthusiasm. If you own an Amiga, you have already qualified as an independent thinker, now use that ability to communicate your individual story or idea.
Amazing Computing ™ pages are filled with people who want to reach you with their thoughts. They explain a portion of the computer you both use and abuse, because they found it interesting.
It there is something in the Amiga family that interests you, chances are there are people who would enjoy hearing what you have to say. So don’t sit around waiting for others to teach you what you have already learned by hours of trial and error, get excited and teach the rest of us.
Amazing Computing™: your resource to the Commodore Amiga If your idea or explanation is of interest 1o developers and hard core hackers, please send your thoughts and a request for writer’s guide lines to: AMICUS Network Editor.
If you are more interested in general use of the Amiga and its products, please send your suggestions and ideas to: Editor, Amazing Computing™ But, either way post them to: PiM Publications Inc.
P. O. Box 869 Fall River, MA 02722 Please include a hard copy and
an electronic copy of your article for review. In both
instances, please include your name, address and phone number.
We will return an answer as soon as our editors stop shouting
about how great your idea is, and types a response.
Telecommunications Tips By John Foust The Amicus Network CompuServe [72237,135] People Link AMICUS Delphi JOHNFOUSTuucp through the Well "ifoust" The fastest way to get the latest public domain software is on a computer network or local bulletin board. In a sense, the national networks are a meeting place for national user Amiga groups. They aren't as formal as a local user group, and members come and go at will. However, you can meet with someone from across the country more often than you attend your local user group meeting! By honing your telecommunication skills, you can get the latest
programs for the Amiga with little trouble.
There are a few skills you need to learn before grabbing your fill of free or nearly-free software. This column will discuss a few of the problems of sending files around the country, and across town, and explain the reason why 'arc' and 'chop' have become popular Amiga programs.
As with many things, there is an easy way to do things, and a hard way. Unfortunately, the hard way to transmit files is Xmodem, and it is the defacto standard. It works well with IBM PC computers, so few people are willing to change it, It has several limitations, and one of these collides head-on with the Amiga.
If you visit a local bulletin board, or subscribe So a national network, visit the public domain file area. If you don't have telecommunications experience, you might have trouble getting a copy of the files you seelhere.
There are several pitfalls in transferring files with your modem. The first is learning the proper commands to access the public domain files on the computer you visit. It may be best to leave a message there, if you have any questions, to get proper assistance for that system. Most systems have menus for accessing different parts of the computer. After you are in the Amiga area, make menu choices that have the word Tile" or "Library" in them, and you get to the file library soon enough. With a little background, this process of getting public domain files is made easy.
There are problems inherent to the medium. It is difficult to transfer data reliably across phone lines. In a voice phone call, you are not hampered by occasional static on the line.
Static means lost bytes. For a computer, a little static means some transmitted data will be garbled. If you are reading text messages from other visitors to the network, this won't make a big difference. If one or two characters are garbled, you can still read the message. If you are transferring a program file, a scrambled bit or two means the program will not work when it gets to your computer.
File transfer protocols exist to allow error-free file transfers across phone lines. Since people often want to send binary and text files without errors, file transfer protocols are used for all file transfers, whether across the room, or across the country. Perhaps you’ve heard the name of one of these protocols.
The most common, by far, is 'Xmodem', developed back in the days when CP M was the predominant operating system.
Another is 'Kermit', more popular in the educational computer world. There are many more. The CompuServe network has its own file transfer protocol, ’CIS-B’. Each has its own advantages and shortcomings. In essence, each protocol breaks a file into pieces, and transmits each piece separately.
The protocol defines extra information that tags along with each packet. For example, it might include the packet number, so the receiving computer can put the file back together in the correct order. It also carries information to detect if the packet was garbled by noise on the phone line.
When the receiving computer gets a new packet, it checks the extra information. If it was expecting packet number 15, and it got packet number 16, it tells the sending computer that it missed a packet. If it detects a packet was garbled, it asks the sending computer to re-send the packet. When the correct-numbered packet arrives intact, the receiving computer tells the sending computer, and the sending computer sends the next packet.
Handshaking across America This system of handshaking is common to all protocols, in some form. It is similar to the process two people use when giving an address over the phone. As each part of the address is given, the other person acknowledges it was received correctly, or asks the person to say it again. In order to properly synchronize this transfer process, both sides must start the transfer at the same time. One side will wait for a 'go' signal, and then it will send the first packet.
Again, check with the computer's authorities to get the detail of this process. As with all tasks performed by computer, this process of checking each packet takes time, and this affects the time it takes to send a file without errors. Even though your 1200 baud modem can send 120 characters a second, or about 7 K a minute, a file-transmission protocol will reduce your effective transmission rate by about two- thirds, at best, or about 70 to 90 characters a second.
»r THE EXPLORER A tool to match your curiosity!
Would you like...to scout the inner workings of your Amiga?...a live window onto memory to watch what other tasks are doing?...an on-line memory map to tel! You where you are?
...to actually see the assembly language code, in human readable form, that exists inside your Amiga?...to step through a piece of code to see what it does?...to capture your own source code and customize it?
The EXPLORER has some powerful features that make it a superb extension of your curiosity. Features; display memory and files in Hex and ASCI!, memory modify, search, move, fill, display and change registers, disassembly trace, load programs, disassemble to disk. Output to printer or disk file.
Powerful commands: loops, text display, realtime RAM view, S. more! The EXPLORER puts your sense of wonder in charge!
The EXPLORER can be used for serious program development too! As a debug tool the EXPLORER’S command set is compact and efficient. You can execute your commands within loops, creating live displays of RAM or registers while you test your program. You control the display format too, and even display informative messages. No need to waste valuable time typing that patch into memory every time you debug. Simply write a new command to do it for you. After all, what are computers for? When you want to save the contents of RAM or a series of trace steps for future examination, just send them to the
printer, or better yet, send them to a disk file!
PRICE: $ 49.95 plus $ 3 shipping and handling.
COD add $ 4. Visa MC orders call C612) 871 6283. Money orders or checks to: Interactive Analytic Node 2345 West Medicine Lake Drive Minneapolis, Minnesota 55441 If the file is coming from a large mainframe computer across the country, it takes additional time for the information to travel through the phone lines. Each confirmation of error or receipt will take a few extra fractions of a second to travel back and forth. If you have lights on your modem to indicate data transmitted and data received, you can watch this process. Usually, these lights will be marked 'RD' and TD All the large
national network computers are multitasking, just like the Amiga, and they may be bogged down with other users. This severely affects the effective transmission rate.
If the lights on your modem are staying off for as long as they are staying on, you know that these delays are slowing your transmission. When you are paying between $ 4 and $ 24 an hour to visit a national computer network, this sort of delay is unacceptable, If the transfer is taking too long, you should abort the transfer and try again later at night, when there is less of a load on the computer. For a local bulletin board, you shouldn't have this sort of problem. There will be little or no delay between acknowledgements or packet transmissions, so either the RD or TD light will stay on
Sagf* How long is too long?
How long should a file take to transmit? With the Xmodem protocol found in almost every commercial and public domain terminal program, the file is broken into packets of 128 bytes each, or eight packets to a kilobyte. With the CompuServe B protocol, each packet is 512 bytes, most often. It's easy to calculate the number of packets it will take to transmit the file. If the host computer says the file is 11834 bytes long, and you are using Xmodem, count eight blocks for each thousand bytes, since a kilobyte is roughly 1000 bytes. For every four K in the file, add another packet. So this file
will take about 88 + 3 packets, or 91 packets. Ideally, at 1200 baud, each packet will take a little more than a second to transmit, since each Xmodem packet contains about 130 characters, counting the extra information with the 128 bytes of data from the file. Remember that a transfer on a network will take slightly longer than this.
An easy way to speed file transfers is to use the RAM: disk.
The floppy drives will slow the reception or transmission of data. If you are sending a file, first copy the file to the RAM: disk. If you are receiving a file, enter the filename prefaced with 'RAM:', to send it to the RAM: disk instead of the floppy. With the Online! Terminal program, this can save a lot of lime, since it doesn't buffer the packets in memory.
Some public domain terminal programs are smarter about this, and store the packets in RAM before sending them out the modem, or copying them to disk.
'chop' and 'arc' Xmodem transmits files in 128 byte pieces. Unfortunately, Xmodem has no method of transmitting the true length of the file, it always rounds up the file size to 128 byte boundaries.
If the file is 90 bytes long, then Xmodem adds padding characters to fill out the file to 128 bytes. Since Xmodem is such an old protocol, it has become very popular.
On a computer that runs the CP M operating system, file size doesn't really matter for executable programs, since the whole program is loaded into memory, and execution begins at a fixed spot in the file. Since IBM PC-DOS is just warmed- over CP M, it doesn't care about rounding file sizes to 128 increments. So, for almost all applications on an IBM-PC, Xmodem is a fine file transfer protocol. The Amiga is more finicky than the PC.
Not an object module?
On the Amiga, file size does matter. An executable program can be loaded into any section of memory. An Amiga program file contains extra information about the memory it needs. When Xmodem adds the extra padding characters to the file, it confuses the operating system, and it can't load this file as a program. In the CLI, this gives the well-known "Unable to load XXXXX: file is not an object module" error message. Here's where the 'chop' program steps in.
When you enter the file library area of the computer, you can ask for a description of the files in the database. With each file, you should find a description of the file. Part of the description of the file should state the proper file size. When you download the file, record this number. Instead of a file size, the description could say something about 'arc', such as 'This is an ARC file.' The 'arc' program will be discussed later. If the program has been 'arc'hived, you won't need the 'chop' program, but you shouldn't skip this discussion, 'arc' files do not need to be chopped, 'chop' will
remove the extra padding characters from a program file, but you need to give it the proper file size. That is why you should record the number from the description. The 'chop' program will make a new copy of the program, minus the padding characters. If you have downloaded an IFF picture file, there is no need to 'chop' the file. IFF files have the true file size stored within them, so the program you use to view or edit the picture will be able to load it correctly, regardless of the extra padding characters.
There could be a question of bootstrapping here, too. For example, what do you do if you want to download the 'chop' or 'arc' program — you have no way to chop that file, so this has become a chicken-and-egg situation. Fortunately, there is a program called 'hunkpad', which can treat a program file so that it will always load and run, regardless of file size. It adds the right kind of padding characters, instead of the garbage padding characters Xmodem uses. Smart networks and bulletin boards have 'hunkpad'ded the 'chop' and 'arc' programs, so there is no need to 'chop' them before using them.
If your BBS hasn't done this, tell them about it.
As an alternative, there are 'chop' programs written in BASIC. BASIC files don't care about Ihe Xmodem padding, either, so you can always get this file, and use it to 'chop' the 'chop' program. There is also an automatic 'chop'-type program, called 'fixobj'. This program doesn't need to know the proper file size, it is smart enough to look at the end of the file, and remove the garbage characters. Please note that the 'fixobj' program only chops program files. It won't work on binary data files, such as spreadsheet templates.
File compression It is hard to imagine, but there is a lot of 'air' in a file. In a textfile, at least one or two bits is wasted for every byte in the file. There are about 95 printable ASCII characters all NEW!
EXPERT SYSTEM KIT Those of us who get excited about computers have been looking for the application that takes us into the twenty-first century. This is it! Now you can create an expert system that will grow with your Amiga. Would you like a computer system straight out of science fiction sitting in your own home or office? How powerful can it be? As big as your imagination, because you build it the way you want it!
We supply the EXPERT SYSTEM driver along with a sample knowledge base. Complete instructions guide you to creating your own application. Experiment with artificial intelligence! The software driver analyzes your data and learns to draw the correct conclusions. Think of the applications! Diagnose circuits, plant and animal diseases. Predict events based on past performance- weather, stock market, sports. Build the ultimate science project or develop a commercial application! We will be supporting this kit with a newsletter so you can share knowledge bases, techniques and ideas.
PRICE: $ 69.95 plus $ 3 shipping and handling.
COD add $ 4. Visa MC orders call C612J 871-6283. Money orders or checks to: Interactive Analytic Node 2345 West Medicine Lake Drive Minneapolis, Minnesota 55441 ProFQrma™ — «An Enhanced Text Processor ProForma™ is a powerful Text processor and formatter with roots in Nroff.
A Unix text processor, When used with an Amiga editor, ProForma™ becomes a professional document production tool. ProForma™ supports most popular letter Quality and doi-matrix printers.
Vertical format control — page length, header format, window line, variable line spacing. Horizontal format control — margins and indent. Multicolumn Print — up to 4 text columns per page. Fill and iustificalion Tabular Data formal Headers and footers — with page numbering. Character formating * boldface, underline, italics, superscript, subscript, strikeout, double width, alternate fonts (up lo 3). Macro definition — create new ProForma™ commands. Change bar generation — lor revision control. Table of Contents Generation Index Oencralion O. ocument preview • formatted documents on the screen.
Suggested Retail Price — $ 75,00 ProForma™ developed by Future Concepts, Inc., exclusively distributed by: Professional Network Services Corporation 315 Chestnut Street Needham, MA02192
(617) 449-6450 Dealer Inquiries Invited ProForma™ — a trademark
oJ Professional Network Services Corporation * — character
formats and fonis vary with printers supported told, but a
byte can represent 256 values. Also, there are repeated
sequences of characters in a text file, words that are
repeated, and the pair of line feed characters at the end
of every line in a double-spaced document. Looking at it
another way, there are repeated streams of bits in a file.
It is possible to reduce the storage space used by a file
by compressing these sequences of bits and bytes. The file
can be squeezed of its 'air', and restored to its full size
when it is needed.The best program for file compression is
On text files, 'arc' can reduce the size of the file by forty to fifty percent. Program files are less regular and more dense, so they can be compressed only ten to twenty percent. The advantages of file compression are obvious. If you are anxious to minimize the time you are spending on an expensive computer network or long-distance phone call, a file compression program can reduce your online transmission time by as much as halt. You can store more files on a disk. This makes the most sense for archive disks. If you keep a transcript of your lelecomunications sessions, you can squeeze them,
and unsqueeze them when you are looking for a particular message. (In case you are wondering, this compression can't go on forever. Re- 'arc'ing an 'arc' file doesn't make it smaller, since 'arc' already did the best job it could on that data.
Imagine any file as a very large binary number. Under a given translation scheme, it is possible that there exists a smaller binary number with the same information content, and this is the way 'arc' works.) Perhaps you've heard of the 'sq' and 'usq' programs, pronounced 'squeeze' and 'unsqueeze'. These are one type of file-compression program, commonly found on CP M-based bulletin board systems. These use a type of compression called Huffman coding.
There is another less-well-known program called 'lar', which can store a number of files together into a single file, and burst Ihem later. Some people will use 'sq' to squeeze a set of files, and then use 'lar' to put them all together. You might find a file like this, left over from the days before 'arc' was ported to the Amiga. However, 'arc' will compress files better than 'sq'. The 'arc' program has an advantage over 'sq' and 'usq'. Beyond compressing a single file into a file called an 'arc' file, it can store more than one file in an 'arc' file. You can use this to store a number of
files together into a single file, to better organize your disks, or to minimize the hassle of downloading a dozen related files, such as programs and their icon files.
Best of all, 'arc' can keep track of the true length of a file stored in the 'arc' file, so the 'chop' program isn't needed.
When the 'arc' file is burst of its constituent files, they are all the proper size, 'arc' will always choose the best method of file compression it has. When you add files to an 'arc' file, the program will first analyze the content of the file, in order to choose the best compression scheme, out of the eight methods it knows. The only disadvantage to 'arc' is that it takes time and computer power to’arc' and un-'arc' files. Of course, it is better to take a few minutes off-line, than to spend extra money downloading a non-'are'ed file from an expensive network.
If you have another CLI running while you are online, be warned that running 'arc' in the background will rob computer power to the extent that you may lose characters coming in over the modem, ’arc' is a compute-bound process. This kind of program can bring a multitasking computer to its knees, since it will always use most of its time-slice when it has control of the computer.
The 'arc' program is self-documenting. That is, once you have a copy of 'arc', just type 'arc' at a CLI prompt, and it will show you its options, and the form of its command lines.
Most commonly, you will use 'arc' to reconstitute a file, after you have downloaded it. If you are downloading an 'arc' file, be sure to name it as such, by including a '.arc' suffix on the name you supply to your terminal program.
For example, if you have downloaded an 'arc' file you called 'mylib.arc', then you would type ARC E MYLIB.ARC to burst the files from the 'arc' file. If you downloaded the file to the RAM; disk, as recommended above, and want to put the files on a disk in drive 'DF1: type CD DF1;ARC E RAM:MYLIB.ARC and the files in the 'arc' file will be saved to the external disk drive, even though the 'arc' file itself is currently stored in the RAM: drive.
All 'arc' commands are similar to this — first the 'arc' program name, then a single letter, then the name of the 'arc' file to manipulate, and an optional list of files lo manipulate. To see a list of the files in an 'arc' file, type ARC L RAM:MYL1B.ARC or use ARC V RAM:MYLIB.ARC for a verbose listing of the files inside, including a chart of the amount of space saved in the compression, To make a new 'arc' file, composed of one or more files on your disks, use the 'A' option. To add files 'MARTHA' and 'MARY' to an ’arc' file, type ARC A NAMES.ARC MARTHA MARY at a CLI prompt. The 'NAMES.ARC'
file will be created in the current directory. If you use the ARC program a lot, then you should copy it to your Workbench disk, in the C directory.
RAM: disk bug MODULA-2 the successor to Pascal assembly Please note that there is a known bug in the RAM: disk driver program, in the SeekQ function. Do not do extensive manipulations of ’arc’ files in the RAM: disk. I have had no troubles creating new 'arc' files in the RAM: disk, and only adding files to it. If you do anything more extensive, such as the ’D' delete file option in 'arc', move the 'arc' file to disk instead. Presumably, this bug will be fixed in AmigaDOS 1.2. The 'arc' program is maintained as shareware, as the product of a company in the IBM PC world. It was ported to the
Amiga. When you invoke the 'arc' program, the author's name will appear, 'arc' files made on the Amiga can be read by the IBM PC version of the 'arc' program, and vice versa.
Of course, executable programs from the PC will not work on the Amiga, and IBM PC text files are formatted somewhat differently than Amiga text files.
PC text file lines are terminated with a carriage-return linefeed sequence, and the Amiga uses only a line-feed character at the end of each line. There are several Amiga programs in the public domain to filter IBM PC text files for use on the Amiga.
C1S-B and Kermit The CompuServe B protocol doesn't add the padding characters to files, it uses 512 byte blocks, which makes it more efficient for transmitting files over national networks.
There, the chance of noisy connections are small, and the time for sending characters between computers is large, so the two computers spend more time sending characters, instead of waiting for confirmation of receipt of a packet.
However, using CiS-B doesn't free you from the 'chop' dilemma.
Since the person who posted the program could have used Xmodem to upload the file, the file stored on the CompuServe computer has the padded characters, and the CompuServe computer will send them to you. However, if the description of the file says "uploaded with CompuServe B protocol, "you don't have to worry about 'chop.'
The Kermit protocol was named after the famous frog, if you were wondering, 'kermit' also means freedom' in Celtic. (In Swahili, freedom’ is 'uhuru', so in some strange way, Kermit the Frog and Star Terk's Lt. Uhuru are related.) Kermit will send a file correctly, with no padding characters. Few national networks have the Kermit protocol. Compuserve's Executive service has it, but the public network does not.
The Source has the Kermit protocol, and there is an Amiga area there, or will be one soon. (Did I just let out a secret?)
All Fido Net local bulletin boards have it, and the newest RBBS-PC bulletin board software can optionally support Kermit.
Workbench and AmigaDos code.
¦ 32-toil native code implementation with * Error lister will locate and rdenlify all all standard modules. Errors in source code.
¦ Supports transcendental functions and * Moduia-2 is NOT copy protected, real numbers. ¦ 320-page manual Benchmark!
Compile Unk Execute Serve of Eratosthenes 16 32
5. 3 Mull Program 14 10 Added features of Modula-2 nof found In
Pascal ¦ CASE nas an ELSE and mav contain ¦ Programs may be
broken up into subranges Modules lor separate compilation ¦
Dynamic stungs of any size ¦ Multi-tasking is supported ¦
Machine level interface ¦ Module version control Bit-wise
operators ¦ Open array parameters (VAR r ARRAY Direct port and
Memory access OF REALS!
Absolute addressing ¦ Type transfer functions Interrupt structure ¦ Definable scope of object Pascal and Modula-2 source code are nearly identical. Modula-2 should be thought of as an enhancement to Pascal (they were both designed by Professor Nikiaus Wirth).
Regular Version: $ 39.95 Developer's Version: $ 149.95 The developer's version supplies an extra diskette containing all of the definition module sources, a symbol file decoder, link and load tile disassemblers, a source file cross references the hermit file transfer utility and the source code to several of the Amiga Modules SOFTWARE, INC. 10410 Markisort Road ¦ Dallas, Terras 75238 » f2141 340-4942 Telex: 888442 CompuServe Number 75026,1331 Kermit can send more than one file in a single request, so you could ask for a computer to send you two dozen files, or all the files that begin with
’IFF', and it would send them to your computer, unattended. There are other smart protocols out there, but they are not as popular as Xmodem. One is called Ymodem, an extension of Xmodem. Other protocols exist that let you download files while reading messages, with a corresponding increase in transmission time and cost.
But until one of these smarter protocols takes hold, all computers that worry about program file size will be stuck with ’chop’-type problems.
AMICUS disks Last month, I promised to tell the contents of disks 11 through 13. I've got a half-dozen disks of new software to arrange into AMICUS disks, but lost my work to a strange bug that obliterated block 880 of the disk. The 'disksalvage' program saved most of the files, but a dozen or so were lost.
I did have backups, but it destroyed several hours of work, organizing the new files.
Beyond the examples of using the AmigaDOS libraries, disk 13 now contains examples of making your own libraries. I wrote these for the FutureSound sound digitizer from Applied Visions. They allow you to load and play IFF sampled sounds from Amiga Basic. This library interfaces C routines to an assembly language core.
Fish disk 25 has the improved game of Hack, which now has true graphics instead of character graphics. Disks 26 and 27 should be here soon.
Attention: Amiga Developers If you are an Amiga developer with an Amazing Amiga product, Amazing Computing can help. To assist in the development of other startup companies, PiM Publications and Amazing Computing have offered advertising rates to Amiga developers at ridiculously low prices.
Our aim is to create a forum for developers in Amazing Computing. We believe we can help the Amiga market produce good, productive software if new development companies have an opportunity to reach their customers without using all of their resources. Therefore, we have offered advertising rates far below what other publications can offer. And our magazine is seen and read by the people Amiga developers want to reach, Amiga owners and Amiga dealers.
Our ridiculously low ad rates are only in effect for a limited time. If you are developing a product for this fast growing market, please take advantage of these rates while we can still offer them. For more information contact: Advertising Sales Amazing Computing PiM Publications
P. O. Box 869 Fall River, MA 02722 617-679-3109 Amazing
Computing, your Amiga resource.
Fun With the Amiga Disk Controller By Dr. Thom Sterling The Amiga disk controller is interesting because it provides only the minimum hardware control over the disk drive. The disk controller hardware reads and writes the raw data directly to and from the disk, leaving it up to the programmer to interpret its meaning. Commodore, of course, has provided routines to handle the disks but any dedicated hacker will want to know how to do it themselves.
This article will discuss how the hardware reads from and writes to the disk and how a programmer can write "abnormal" information on a disk, including how to write a total of 1120K bytes of data on a standard Amiga diskette.
In order to write on a diskette the disk controller is given an address in chip memory and a word count. The words pointed to by this address are then sent to the disk drive in a serial fashion with the most significant bit first. The disk drive responds to the data by doing nothing for a "0" bit and by reversing the magnetic field on the write heads for a "1" bit. The controller can be set to send the data at a rate of 1 bit every 2 microseconds or every 4 microseconds. I will only considerthe 2 microsecond case.
The diskettes spin at the rate of 300 revolutions per minute, or 5 revolutions per second, which means 200 milliseconds per revolution. Therefore with 2 microseconds per bit, we will have 100,000 bits per revolution and we write: 100,000 bits per track * 160 tracks per disk •* 16,000,000 bits per disk = 2,000,000 bytes per disk. Unfortunately we cannot write just any pattern we choose on the diskette. There are two restrictions: One, there cannot be two flux reversals in a row (so we cannot write two "1"s in a row); two, there cannot be more than 4 "0"'s in a row.
The first restriction is because the magnetic field cannot be changed rapidly enough to recognize two reversals close together. The second restriction is because the drive uses the flux transitions to measure the speed at which Ihe drive is rotating and adjusts the clock to compensate (or speed variations. The standard method tor adapting to these restrictions is called MFM encoding. MFM encoding converts each bit of real data into 2 bits of storage data. A 1 becomes 01 and a 0 becomes 10 or 00 depending on the previous bit: if the previous bit is a 1 Ihen 00 is used, if it is a 0 then 10 is
used. So: AB — XACB 00 ~ 7010 01 — 7001 10- 0100 11 — 0101.
Logically, between each two bits A and B we insert a bit C, such that: C = ~(A | B) = NOT (A OR B) Notice the second bit is always the same as the data bit.
Restriction one is satisfied because 01 is followed by 01 or 00, and 11 is not allowed, and 10 must be preceded by 00 or
10. Restriction two is satisfied because the most zeroes we can
get in a row is 3. (In the pattern 101 — 010001).
On the Amiga, the conversion of the real data to the stored data is done by software. On many computers, e.g. the IBM PC, this conversion is done by hardware. Luckily, the Amiga has the blitter. Using 1he blitter, the data can be converted to the MFM form very quickly. Since the stored data has two bits for every real bit, the MFM can be formed more easily if we split the real data into two sets, the even bits and the odd bits. The odd bits are every other bit starting with the first.
The evens are all the others. The even and odd bits are stored separately on the disk. This simplifies the conversion because the bit leaves holes in the data in which we can insert the extra bits required by MFM. For example, the data: 01100101 — evens x1x0x1x1 and oddsx0x1x0x0
- — evens x1000101 and odds xO010010 The encoding for each block
can be done in three passes of the blitter. Step one is to find
the new bits that will be inserted in between the real data
bits. This is done for both even and odd bits at once. The
minterm is a blitter technicality: Blitter input A — real data
shifted right two bits B — real data C- none Blitter output D ~(A | B)minterm = $ 11 Step two merges the even real data with
the results from step one: Blitter input A -¦ step one D
shifted left one bit B — real data C-$ 5555 = 0101010101010101
Blitter output D — (B & C) | (A &~C)minterm = $ CA Step three
merges the odd real data with the results from step one:
Blitter input A — real data shifted right one bit B — step one
D C- $ 5555 = 0101010101010101 Blitter output D (A & C) | (B &
~C) minterm = $ AC Some bits on the ends will still need to be
adjusted. The blitter time to do the encoding can be estimated
by the number of memory references needed: 11 memory cycles per
word, or about 20 milliseconds track. Since it takes at least
200 milliseconds, plus head seek time, to write to the disk,
this is not a big overhead. When the disk is read the data must
be decoded. Decoding is easier than encoding and can be done in
one blitter operation.
Blitter input A — stored data shifted left one B — stored data C» $ 5555 = 0101010101010101 Blitter output D — (A & ~C) | (B & C) minterm= $ CA This will take about 4 memory references per word, which is about 8 milliseconds pertrack.
The AmigaDOS format encodes the data by sectors, as described in the ROM Kemal Manual Vol 2. I do not know if Commodore actually uses the blitter the way I described, but I have not found a faster way. By using MFM we store 50,000 bits track which works out to 1,000,000 bytes per disk. Alas, we cannot even get that much on the disk because we must allow for the possibility that the disk spins a little too fast. If the disk spins too fast and we try to write all 50,000 bits, the last bits will be written over the first bits and we will lose that data. A 1 percent increase in speed will overlap
500 bits. Commodore actually stores 47,888 bits on each track, of which 45,056 are user data. While MFM encoding satisfies the restrictions, there are other encoding schemes which store more data per track, and still satisfy the restrictions.
First, we will note that arbitrarily long allowable bit patterns can be formed by arranging the bit strings 01, 001, 0001 and 00001 in arbitrary orders. We can calculate the number of patterns of a given length that can be made this way recursively. For 2 and 3 there is one pattern, for 4 there are two, 0001 and 0101; for 5 there are three, 00001, 01001, and 00101. In general we can calculate the number of patterns, Xn, for n bits by the formula: Xn = Xn-2 + Xn-3 + Xn-4 + Xn-5 The Xn-2 term is from 01 followed by all patterns of length n- 2, the Xn-3 term is from 001 followed by all patterns
n-3 in length, etc. nXn 21 3 1 5 3 64 77 8 10 9 16 10 24 11 37 12 57 13 87 14 134 15 205 These patterns are too restrictive because they all start with 0 and end with 1. We can get acceptable patterns by allowing trailing zeroes. For reasons that will become clear we will allow up to 3 trailing zeroes only. We now define Pn to be: Pn = Xn + Xn-1 + Xn-2 + Xn-3 = Xn+2 which is the number of patterns with no trailing zeroes plus the number with a single trailing zero plus the number with two and three trailing zeroes. We now have bit strings with from 1 to 4 leading zeroes and from 0 to 3
These strings can be put together into acceptable strings if we adopt the rule that the first bit in each pattern becomes a 1 if both of its neighbors are zeroes. This is the same as MFM for n=2, P2 = X4 = 2. The two patterns are 01 and 00.
There are two other n's of particular interest. For n-7, P7 = X9 » 16, and so we can encode every 4 bits of real data into 7 bits of stored data (as compared 1o 8 bits of stored data with MFM). The patterns are: 7001000700010070101007010010 7001010701000170101017001001 7000101010100001001000100010 0101010010000101010010100101 A "7" will be 1 if the preceding 7 bits end with a 0. These can be assigned to the sixteen 4 bit patterns arbitrarily. The second interesting case is n=12, P12 X14 =* 134, and we can encode 7 bits of real data into 12 bits of store d data (as opposed to 14 bits with MFM).
Performing the encoding for this method is more difficult than the MFM encoding. The 7 12 would be encoded by using the blitter to separate the real data into 7 bit pieces, then using a table to find the corresponding 12 bit code, and finally using the blitter again to merge the 12 bit codes into a continuous block. This process will take about 70-80 milliseconds per track. Decoding will be just as hard.
The blitter must be used to split the stored data into 12 bit pieces, then a table is used the find the corresponding 7 bits, and the 7 bit pieces must be merged together again to recover the real data. Decoding will also take 70-80 milliseconds per track. Using the 7 12 code we could nominally store 7 12 * 100,000 — 58,333 bits per track.
Subtracting some to prevent overlap we might store 56,192 bits per track which is 7K bytes per track or 1120 Kbytes per disk, if the disk is sectored in a way similar to Commodore, we could fit 13 sectors per track and have 1040 Kbytes per disk of user data. This is an increase of 18 percent over the 880 Kbytes per disk with MFM encoding.
Thom Sterling works for the University of Michigan Physics department, and Errex, Inc., Ap.
The AMICUS Public Domain Software Library This software is collected from user groups and electronic bulletin boards around the nation. Each disk is nearly full, and is fully accessible from the Workbench. If source code is provided for any program, then the executable version is also present. This means that you don't need the C compiler to run these programs. An exception is granted for those programs only of use to people who own a C compiler.
Note: Each description line below may include something like ’S-O-E-D’, which stands for 'source, object file, executable and documentation'. Any combination of these letters indicates what forms of the program are present. Basic programs are presented entirely in source code format.
AMICUS Disk 1 iBM2Amlga fast parallel cable transfers between an John Draper AmigaTutorlsle: IBM and an Amiga Animals describes animation algorithms Abasic programs: Graphics Mandel Mandebrot set program, S-E Gadgets tutorial on gadgets 3DSofids 3d solids modeling prog am w sample moire patterned graphic demo. S-E Menus learn about Intuition menus data riles objtix makes Lattice C object tile symbols Stocks draws blocks visible to Wack, S-E Cubes draws cubes quick quick sort strings routine AMCUS Disk 3 Durer draws pictures in the style of Durer raw ex ample sample window I O Fscape draws
fractal landscapes set lace turns on interface mode, S-E C programs: Hidden 3D drawing program, w hidden line removal sparks qix-type graphic demo, S-E Xret a C cross-reference gen., S-E Bbitcolor extra-halt-brtght chip gfx demo, S-E Jpad simple paint program Other executable programs: Chop truncate (chop) tiles down to size, S-E Optical draw several optical illusions SpeechToy speech demonslraibn Cleanup removed strange characters tromtext Pain! Bo* simple paint program WhichFonl displays all available fonts files Shuttle draws the Shuttle in 3d wirelrame CR2LF converts carriage returns to
line feeds in SpacaArl graphics demo Texts: Amiga files, S-E Speaker speech utility 63020 describes 68020 speedup board Irom Error adds compile errors to a C file, S Sphere draws spheres CSA Hello window ex. Irom the RKM, S Spiral draws color spirals Aliases explains uses of the ASSIGN command Kermit generic Kermit implementation, flakey, ThreeDee 3d fund ion pfols Bugs known bug list in Lattice C 3.02 no terminal mode, S E Topography artificial topography CL Card retetence card lor AmigaDCS CLI Scales sound demo plays scales, S-E Wheels draws circle graphics CLCommands guide to using the CU
SkewB Hubikeube demo in hi-ros colors, S-E Xenoe draws fractal planet landscapes Commands shorter guide to AmlgaDOS CLI commands AmlgaBaaicProgs (dir) Abasic programs: Toots EdCommands guide to the ED editor Automata cellular automata simulation AddressBook simple database program tor addresses Filenames AmjgaOOS flier a me wildcard CrazyEighls card game CardFile simple card tile database program conventions Graph (unction graphing programs Demo mu It twin dow demo Half Bright explains rare graphics chips that can do WitchingHour a game Key Codes shows keycodes tor a key you press Menu run many
Abasic programs Horn a more colors AbsstC programs: menu Modemflns description or the serial port pinout Casino games 01 poker, blackjack, dice, MoreColors way to get more colors on the screen at RAMdtsks tips on setting up your RAM: disk and craps shapes once, using aliasing ROM Wack tips on using ROMWack Gomoku also known as 'Othello' simple color shape designer Speakit speech and narrator dBmo Sounds explanation of the Instrument demo sound file formal Sabotage sort of an adventure game Speed refutation of the Amiga's CPU and Executable programs: Abasic programs: Games custom chip speed
Disassem a 63000 disassembler, E-D BnekOU Othello Saucer classic computer brick wall game also known as 'go' slmpe shoot-em-up game WackCmds tips on using Wack DpSlide shows a given set of IFF pictures, E-D Arrange a text formatting program, E-D Spelling simple talking spelling game AMCUS Disk 2 ToyBo* selectable graphics Cemo C programs: Assembler programs: AmigaDOS object library manager Argoterm a terminal program with speech and Abbsjc programs: Sounds alb Xmodem, S-E Entertainer plays that tune. S-E HAL9000 pretends ifs a real computer as text file archive program, S-E Pdice simple
police Siren sound lixobj aulo-chops executable tiles AMCUS Disk 4 Files from the original Amiga Sugarplum plays ‘The Dance of the Sugarplum shell simple CLI shat!, S-E Technical BBS Fairies" sq usq file compression programs, S-E YachtC a familiar game, S-E.
Note that some of these fi ies are old, and roter to oldBr C programs: Make a simple 'make' programming utility, S-E versions or the operating system These files came from Aterm simple terminal program. S-E Emacs an early version of the Amiga text ed Itor, the Sun system that served as Amiga technical support cc aid to compiling wtih Lattice C S-E-D HQ tor most of 1905, These files do not carry a warranty, decynt opposite of CONVERT lor cteks and are for educational purposes only. Of course, Ihars developers Assembler programs: not to say they don't work.
Dotty source code to the 'dotty window dorm bsea;ch.a£m binary search code echo* unix-style filename expansion, partial qsortasm Unix conpstble qsotlO function, source Complete and nearly up-to-date C source to 'image. ed',
S. O-D and C test program an early version of the Icon Editor,
This is a little flaky, but fastertp explains use of
fast-lloating point math setjmp.asm seljmpO c°de lor Lattice
3.02 compiles and runs.
FixDaie fixes future dates on all tiles an a Svprintt Unix system V compatible prints () disk, S-E trees. o Unix corrpatble tree () function, O-D An Intuition demo, In full C source, Including files: Ireedraw simple Workbench drawing ptogram, S-E demomenu. c, demomenu2. c. demoreq. c, getasciix, GfxMem graphic memory usage indicator, S-E This diskfomrerty had IFF specification tiles and idemox, Idemo.gulde, kJemo.make, kJemoall. h. nodos. c. Grep searches (or a given string in a file, with examples. Since this spec is constantly updated, the IFF and txwritex documentation spec tiles have been moved
to their own disk In the ham shows o*T the hokt-and-modify method AM ious collection, They are not here.)
Addmemx aid external memory to the system of color generation boolost. c example o (BOB use consolelO. c console 10 example creaport. c create and delete ports creastdi. c create standard VO requests aeatask. c creating task examples diskio. c example of track read and write dotty. c source to the 'dotty window demo duaiplay. c dual playfield example flood. c ttood fill example treemap. c old ywsion of ‘freemap’ goltools. c toots lor Vsprites and Bobs gfxmem. c graphic memory usage indicator hello. c window example from RKM inputdev. c add ing an input handler to the input stream joystik-c reading the
joystick keybd. c direct keyboard reading layertes. c layers examples mousport. c test mouse port ownlib. c, ownlib.asm example of making your own library with Lattice paratesLc tests parallel port commands seritesLc tests serial port commands serisamp. c example of serial port use prinintr. c sample printer interface code prtbase. h printer device definitions regintes. c region test program seflace. c source to interlace orVoft program setparallel. c &et the afirbutes of the parallel port SetSerial. c set the attributes (parity, data bits) of the serial port singplay. c single playfield example
speechtoy. c source to narrator and phonetics demo timedely. c simple timer demo timer. c exec support timer functions timrstuf. c more exec support timer functions WhichFont. c loads and displays ail available system loots process.! And prtbase. i assmebler indude files: autorqstr.txt warnings of deadlocks with autorequesters consotel0.txt copy of the RKM console I O chapter diskfont.txt warning of disk font loading bug lullfunc.txt list of defines. Macros, functions inputdev.txt preliminary copy of the input device chapter License information on Workbench distribution license printer pre-release
copy of the chapter on printer drivers, Irom RKM 1.1 v1 lfd.txt ’diff of. fd ftle changes from vers ion 1.0 to 1.1 v28v 1.diff ‘diff of Indude file changes from version 28 to 1.0 AMICUS Disk 5 File from the Amiga Link Amiga Information Network Note that some of these fite6 are okJ, and refer to older versions of the operating system These files are from ArrtgaLink. For a time. Commodore supported Amiga Link, aka AIN, lor online developer technical support. It was only up and running for several weeks. These files do not carry a warranty, and are lor educational purposes only. Of course,
that's nof to say they don't work.
A demo of Intuition menu called ‘monudomo’, In C source wrierots. c find a file searching all subdirectories bobteslc BOB programming example sweep. c sound synthesis example Assembler filet: mydevasm sample device driver rrrylb.asm sample Ibrary example mylb. i my dev. I asmsupp. l macros. i assembler indude tiles: Text*: amigalricks tips on CL I commands extdisk external disk specification gameport game port spec parallel parallel port spec serial serial port spec v1.1 update list of new features in version 1.1 v1.1 h.txt ’diff of indude tile changes Irom version
1. 0 ton Files for building your ewn printer drivers, including
dospecial. c. epsondata. c, initasm, prinler. c, printer.link,
printertag.asm. render. c, and wait.asm. This disk does contain
a number of files describing the IFF spedficalion.
These are not the latest and greatest tiles, but remain here for historical purposes. They indude text files and C source examples. The latest IFF spec is elsewhere in this library.
AMICUS Diak 5 IFF Picture.
Ignores errors, E-D lists hunks in an object tile E-D saves any screen as an IFF picture E-D??
Shareware screen dump program, E only version 2.0, term program, Xmodem E-D LlbOir SavellBM Scree nDump StarTerm Texts: LatticeMain GdiskDrive GuruMed Lat3.03bugs MforgeRev Print Spooler tips on fixing _main. c in Lattice make your own 5 1 4 drive explains the Guru numbers bug list of Lattice C version 3.03 user's view of the MicroForge hard drive EXECUTE-based print spooling program This disk indudes Ihe DPSIide program, which can view a given series of IFF pictures, and the 'showpic1 program, which can view each tile at the dick of an icon, and the 'saveilDm' program, to turn any screen into
an IFF picture.
The pictures indude a screen from Artiefox, a Degas dancer, the guys at Electronic Arts, a gorilla, horses, King Tut, a lighthouse, a screen from Marble Madness, the Bugs Bunny Martian, a still Irom an old movie, the Dire Straits moving company, a screen Irom Pinball Conduction Set, a TV newcaster, the PaintCan, a world map. A Porsche, a shuttle mission patch, a tyrannosaurus rex. A planet view, a VISA card, and a ten-speed.
.BMAP file: These are the necessary links between Amiga Basic and the system Ibra ies. To take advantage of the Amiga's capabilities In Basic, you need these tiles. BMAPs are inducted lor 'disf. 'console1, 'diskfont', 'exec1, 'icon', 'intuition', 'layers', 'mathffp', malhieeedoubas', 'mathieeesingbas', 'mathtrans', ‘potgo’, 'timer' and ’translator'.
AMICUS Disk 9 Amiga Basic Program*: FlightSim simple flight simulator program HuePalette explains Hue, Saturation, and Intensity Requester ex. Ol doing req nesters from Amiga Basic ScrollDerro demonstrates scrolling capabilities Synthesizer sound program WoridMap draws a map of the world DiglVlew HAM demo picture disk AMICUS. DiaK.7. The disk has pictures from the DigiView hdd-and-modily video digitizer. It indudes the ladies with pencils and lollypops, the young girl, the bulldozer, the horse and buggy, the Byte cover, the dictionary page, the robot and Robert This includes a program to view
each picture separately, and all together as separate, slidable screens.
AMICUS DISKS C programs: Boingl latest Boing! Demo, with selectable Browse view text files on a disk, using menus speed, E S-E-D Brush2C converts an IFF brush to C data Crunch removes comments and white space instructions. Initialization code, E Irom C files. S-E Brush21oon converts IFF brush to an icon, E IconExec E XECUTE a series at commands Irom Dazzle graphics demo, tracks to mouse, E Workbench S-E OeeGEL assenblerprogramtor stopping S8010 PDScreen errors, S-E-D Dump dumps Rastport d highest screen to Klock menu-bar dock and date display, E printer tile Ihe game oNite, E Sot Alternate sets
a second Image lor an con, when clicked once S-E HmeSet tntuition-based way lo set the time and date, E Set Window makee windows lor a CLI program lo run under Workbench S-E Memacs another Emacs, moreorlenled to word processing, S-E-D SmaiCtock a small digital dock that sits in awindow menubar MyCLI a CLI shell, works without the Workbench. S-E-D Scrimper the screen printer In the tou rth Amazing Computing, S-E Text*: FnctnKeys explains how to read function keys Irom Amiga Basic Programs: Amiga Basic (Note: Many of these programs are present on AMICUS HackerSIn explains how lo win the game
'hacker Disk 1. Several of These were converted lo Amiga B3Sic, istseoio guide to installing a 68010 in your Amiga and are included hero.)
Printer Tip tips on sending escape sequences to your printer Address Book a simple address book database StartupTip tips on setting up your startup- Bail draws a ball sequence Hie Clead program to convert CompuServe hex tiles XfrmrReview list of programs that work with the to binary. S-D Transformer Clue the game, Intuition driven Colorant art drawing program Printer Driver*: DeiuaeDraw the drawing program In the 3rd Issue of Printer drivers tor the Canon PJ-1C80A, the C ttoh Amazing Computing, S-D Prowriter, an improved Epson driver that eliminates Elea conversational computer psychologist
streaking, the Epson LQ-BOO, the Gemini Star-10, the Othello the game, as known as 'go1 NEC 8C25A, the Okidata M L-92, the Panasonic KX-P 10xx FtalMaZB 3D ratmaze game family, and the Smith-Corona D300, with a document ROB boggling graphics demo describing me Installation process.
Shuttle draws 3D pictures or Ihe space shuttle Spelling simple spelling program YOYO wierd zero-gravity yo-yo demo, tracks yo- AMICUS Disk 10 Instrument antiurl demo* yo to the mouse Executable programs: This is an Icon-driven demo, circulated Jo many dealers.
It Includes Ihe sounds of an acoustic guitar, an alarm, a tsucuDe AH Icon AmlgaSpell arc Bertrand M odu ia-2 demo of a rotating cube sets a second Icon image, displayed when Ihe Icon is dickBd a a low but simple spelling checker, E-D the ARC tile compression program, must-have for telecom, E-D graphics demo banjo, a bass guitar, a bolnk. A calliope, a car horn, claves, waler drip, Blectric g utlar, a flute, a harp arpeglo. A kickdrum, a marimba, a organ minor chord, people talking, pigs, apipeergan, a Rhodes piano, a saxophone, a sitar, a snare drum, a steel drum, bells, a vbrophone, a violin, a
wailing gu'rtar, a horse whinny, and awhislle.
Disks atvage a program lo rescue trashed disks, E-D KwikCopy a Quick bul nasty disk copy program: Fred Fish disks, 1 through 25 Fred. Fi.?h_Bi&l; amigademo Graphical benchmark for conparing amigas.
Amigaterm simple communications program with Xmodem balls simulation of the “kinetic thing " wth baits on strings colorful Shows off use of hoid-and-modrfy mode, dhrystone Dhrystone benchmark program, dotty Source to the “dotty window* demo on Ihe Workbench disk.
Ireedraw A small “painl’type program with lines, boxes, etc. gad John Draper's Gadget tutorial program gfxmem Graphical memory usage display program halfbrste demonstrates “Extra-Haff-Brife“ mode, if you have it hello simple window demo lalffp accessing the Motorola Fasl Floating Point I bra y from C palette Sample program for designing color palettes.
Trackdisk Demonstrates use of the trackdisk driver, requesters John Draper's requester tutorial and example program, speech Sample speech demo program. Stripped down “speechtoy*.
Speechloy Another speech demo program.
Fred Rah Plat: 2: alb Object module librarian, cc Unix-like frortieod for Lattice C compiler, dbug Macro based C debugging package.
Machine independent, make Subset of Unix make command.
Make2 Another make subset command, microemacs Small version of emacs editor, with macros, no extensions portar Portable tile archiver, xrl DECUS C cross reference utility.
Ftefl-Hsb CM 3; gothic Gothic font banner printer, raff A *roff* type text formatter, tf A very taft text formatter eforth A highly portable forth implementation. Lois of goodies.
Xusp Xltsp 1.4, not working correctly.
Fred Fish Disk 4: banner Prints horizontal banner bgrep A Bayer-M core g rep- like utility bison CNU Unix replacement *yacc. Not working, bm Another Boyer-Moore grep-like utility grep DECUS grep hermit simpe portable Kerrrit with no connect mode.
MyCLI Replacement CLI for the Amiga. Version 1.0 mandel A Mandelbrot set program, by Robert French and RJ Mica!
F[sd. E3, tLRial£ cons Console device demo program with supporting macro routines, freemap Creates a visual diagram of tree memory input.dev sample input handler, traps key or mouse events joystick Shows how to set up the gameport device as a joystick.
Keyboard demonstrates direct communications with the keyboard, layers Shows use of the layers library mandebrot IFF Mandebrc* program mouse hooks up mouse to rig hi joystick port lalor. With ASCII Xmodem.
FrffdFish Disk 19; Blackjack text-oriented blackjack game Fred Fish Disk 13: JayMinerSudes A Bundle of Basic programs, including: Slides by Jay Miner, Amiga graphics chip Jpad toybox ezspeak man diet) rot designer, showing flowchart of the Amiga xmodem 3d sol ids addbook algebra internals, in 640 x 400.
Ror amgseqi arriga-copy band KeymapJTest bounce box brickout canvas test program to test the keymapping routines cardli cirde cdordrdes Copy LockMon Find unclosed We locks, lor programs that cubes 1 cut paste date dogstar don’t dean up.
One. window console window demo parallel Demonstrates access lo the parallel port, printer opening and using the printer, does a screen dump, not wtrking prinLsupport Printer support routines, nol working, prodest sample process creation code, not working region demos spilt drawing regions samptefont sample toot with info on creating your own se~iai_Demos the serial port_ singtePlaylield Creates 320 x 200 playfield speechtoy latest version of cute speech demo speech, demo simplified version of speechtoy, with 10 requests text.demo displays available fonts timer demos timer.dervice use trackdisk
demos trakedisk driver FredHsh Disk 6: compress like Unix compress. A file squeezer dado analog dock impersonator microemacs upgraded version of microemacs from disk 2 mull removes multiple occuring lines in files scales demos using sound and audio functions set parallel Allows changing parallel port parameters set serial Allows changing serial port parameters, sortc quicksort based sort program, in C stripe Stripe comments and extra whitespace from C source Fred Fish Disk 7: This disk contains the executables of the game Hack, version 1.0.1. Frrt Fjgh. PitisA This disk contains Ihe C sou ce
to Hack on disk 7.
Fred Rah DitK 9: moire Draws moire patterns In black and white MVP-FORTH Mountain View Press Forth, versor
t. 00.D3A. A shareware version o! FORTH from Fantasia Systems,
prott a more powerful text formatting program setlace Program
to toggle interlace mode on and oft.
Skewb a molds cube type ds mo sparks moving snake Graphics demo conquest An interstellar adventure simulation game dehex convert a hex file to binary (ilezap Patch program for any typo of file.
Tixobj Strip garbage oft Xmodem transferred tiles.
Iff Routines to read and write ift lormat tiles.
Id simple directory program fe Minimal UNIX Is, writ Unix-styfe wildcarding, inC sq.usq file squeeze and unsqueeze trek73 Star Trek game yachtc Dee game.
Fred Fish Disk 11: dpslide slide show program tot displaying IFF images with rrisceilaneous pictures FiedJijhPlek 12: amiga3d Shows a rotating 3 dimensional sotid 'Amiga sign'.
ArgoTetm a terminal emulator program, written In assembler arrowed Shows a rotating 3 dimensional wire frame arrow.
M directory listing program tconExec SetWindow two programs lot launching programs from Workbench that presently only work under
SetAtternaie Makes an icon shew a second Image when clicked once StarTerm terminal emu dragon draw dynamictriang'e Eliza ezterm filibuster fractal fscape gomoku dart haiku ha)9000 halley haunted M hidden join toz mandel menu minipaint mouse Ortheto patch pens pinwtveel gbox random-drdes Readme rgb rgbtest Rord sabotage sales talk shades shapes shuttle sketchpad spaceart speak spoach speech easy spell sphere spiral striper superpad suprshr talk terminal termtest tom topography triangle wheels xenos xmoslriper (note: seme programe a e Abase, most are AMIGAbasic.
And some programs are presented in both languages) Fred Fish Disk 14: amiga3d updateo (*t2, IncludesCsourca1oatuil hidden surface removal and 30 graphics beep Source tor a (unction that generates a beep sound dev extracts text from within C source files dimensions Oemonstrates N dimensional graphics lileaap nodaloot disk 10, a tile patch utility gfxmom updaieot disk 1, graphic memotyusage indicat o' gl converts IFF brush tiles lo Image struct, in C text, pdterm simple ANSI VT100 termrnat emulator.
In 80 x 25 screen shah simple Unix 'csh' style shell termcap mostly Unix compatble termcap" implementation.
Fred Fish Disk 15: Blobs graphics demo, like Unix ‘worms' Clock simple Digital dock program tor Ihe title bar Dazzle An eight fold symmetry dazzler program.
Really prettyl Fish double buffered sequence cycle animation of alish Monopoly A really nice monopoly game written in AbasiC.
OkidataDump Okjdata ML92 driver and Workbench screen dump program.
Potydraw A drawing program written in AbasiC.
Pofylractate A frada program written in Abase.
Complete copy of Ihe latest developer IFF disk Fred Fish Disk 17: The NewTek Dig j-'View video digitizer HAM demo disk FrialBiti. C'jiiLlli AmigaDisplay dumbterminalprogramwithbell.
Selectable fonts Ash Prerelease C ShelHtke shell program, history, loops, etc. Browser wanders a tile tree, displays tiles, all with the mouse MC69010 docs on upgrading your Amiga to use a 68010 Muttidim rotate an N dimensional cube with a joystick PigLalin SAY command that talks in Pig Latin Scrimper Screen image printer Xlfepl.6 source, docs, and executable tor a Lisp interpreter.
Amazing Computing™ has vowed, from our begining, to amass the largest selection of Public domain software in the Amiga Community, and with the help of John Foust and Fred Fish, we see a great selection of software for both beginners and advanced users.
These Public Domain software pieces are presented by a world of authors who discovered something fun or interesting on the Amiga and then placed their discoveries in the Public Domain for all to enjoy. You arc encouraged to copy and share these disks and programs with your friends, customers and fellow user group members!
The disk are very affordable!
Amazing Computing™ subscribers $ 6.00 per disk.
Non subscribers..$ 7.00 per disk AmigaToAtari converts Amiga object code to Atari format DtekSaiv program to recover files from a trashed AmigaDOS disk.
Hash example or the AmigaDOS disk hashing function Hd Hex dump utility aia Computer Language magazine, April 86 MandelBrots Mandebrot contest winners MulUTasking Tutorial and examples lor Exec level multitasking Pack Btripe whitespace from C source PortHandler sample PorFHandler program that performs.
Shows BCPL environment dues.
Random Random number generator in assembly, for C or assembler.
SetMouse2 sets mouse port lo right or loft port.
SpeochTerm terminal emulator with speech capabilities, Xmodem TxEd Demo editor Irom Microsmiths Charlie Heath FredFlah Piah.21 THIS is a copy of Thomas Wilcox's Mandebrol Set Explorer disk Verygeodi Fred Fish Diak 22 This disk contains two new 'strains" o (mlcroemacs, lemacs version 3.6 by Daniel Lawrence. For Unix V7.9SD 4.2, Amiga. MS-DOS, VMS. Uses Amiga function keys, status line, execute, startLp tiles, more.
Pemacs By Andy Poggio. New features Include ALT keys as Meta keys, mouse support, higher priority, backup lies, word wrap, lunctlon keys.
Fred Fish Disk 23 D*kol 60urce for MicroEmacs, several versions tor most popular operating systems on micros and ma'ulramos.
For people who want to port MoroEmacs to their favorite machine.
Conques Interstate! Adventure simulation game Csh update to shell on Disk 14. With built In commands, named variables, substrtutloa Modula-2 A pro-release version of the single pass Modula-2 compiler originally developed lor Macintosh at ETHZ. The code was transmitted to the AM IGA and Is executed on the AMIGA using a special loader. Binary only, Graphic Hack A graphic version of the game on disks 7 and 8 To Be Continued.,.. This is extremely reasonable for disks with almost 800K of information and programs. If you agree, please send check or money order lo: PiM Publications Inc.
P. O. Box 869 Fall River, MA 02722 Please allow 4 to 6 weeks for
delivery Amazing Computing17,1: Your resource to the Commodore
Amiga To the best o (our knowledge. Ihe materials In this
Ibrary are Ireely redistributable. This means that they have
One or more of the toilowing conditions: (1} The materials contains explicit copyright notices permitting redistrbution.
(2) The materials wets posted to a puWically accessible otodroule
bulletin board and dkt not contain any copyright notice.
(Such materials will bo removed it it is subsequently shown
that copyrig ht notices were illegally removed.)
(3) The materials were posted to a widely disseminated electronic
network (such as Usenet), thus Implying that their
author poster intended them to be freely dlstrbuted.
This applies only it they contain no notce limiting distribution.
(A) The materials contain an explicit notce placing them In the
public domain. This is not the same as condition
(1) — ¦AC- MAKE IT BECAUSE YOU’RE GOING TO BUY ONLY ONE DISK
BACKUP UTILITY FOR YOUR jmmoEL Mmrnk is everything you EXPECT
Marauder works on any standard Amiga with 256K of memory and
one disk drive.
Marauder backs up most copyprotected software titles.
Marauder's user interface is clear-cut, easy to understand, and easy to use.
Marauder's manual is written in plain English without confusing technical terms.
Marauder insures that your valuable software investment will be protected against theft, loss and accidental erasure.
JmSNDEl IS EVERYTHING YOU NEED Marauder takes advantage of Amiga's optional external disk drive ana extra RAM if you have them.
Maurauder, itself, is not copy protected n any way.
Marauder uses Amiga's advanced graphics and processing power to its fullest advantage.
Marauder automatically formats your backup disk while copying, Many complicated protection schemes are easily handled by Marauder's parameter-entry mode two numbers is all it takes.
Current parameters for ali titles will be available FREE to registered users at any time.
BEST OF ALL XRSUDEl is AVAILABLE NOW!!!
You can get Marauder at the SPECIAL INTRODUCTORY PRICE OF m ONLY $ 39.95 S call now (215) 546-1533 (Dealer Inquiries Welcome) (= DISCOVERY SOFTWARE 262 Soum 15th Street • Suite 30C. Philadelphia. PA 19102-3801 Bridge the communications gap with a new standard of comparison MacroModem Index of Advertisers Efficient far novice or expert One keystroke does the work of dozens
• User defined command macros 36 commands of 35 characters
each. A Macro may contain any key code.
• Macro Help on a function key.
• Command macros stored on disk.
• Load a new command macro set while online,
• Xmodem transfers Check sum or CRC.
• Transmit text from a disk file.
• Capture a terminal session in a disk file.
• Display the terminal capture file white online,
• The 20 most commonly used commands are invoked with the Amiga
Function Keys. HELP lists them.
• User Defined Phone Directory 36 numbers per disk file. Change
directories while on line.
• Auto Dial pick a number from the directory window or enter it
from the keyboard.
• Includes MacroModem Editor a multi-window editor for Macro
and Phone files.
• Includes FileFilter a file copy utility that ends file format
problems: Finds the end of Amiga binary files Chops data files
to specified length* Translates Amiga, Mac and IBM text files
Expands tabs Inserts or removes form feeds
• Unlimited baud rates from M2 to 262,000.
• User selected serial capture buffer size.
• Two terminal display modes TTY and ANSI.
• Command mode with multiple commands on a line,
• SHELL command for calling AmigaDOS.
• Multi-window operation.
• NewCLI Create a new AmigaDOS window when you need it, even
during File Transfers.
• Runs From CL1 or Workbench.
• Requires 256k and 1 disk drive.
Available Now Price $ 69.95 Dealer inquiries invited Kent Engineering &. Design Box 176, Mottviile, NY 13119
(315) 685-8237 Amiga, IBM, Macintosh are trademark* of Commodore
* Amiga, Inc, International Burines* Machines, and Apple
Adept Software Advanced Systems Design Group 59 50 64 40 CIV 54,55 12 56 24 51 42 61 7 1,79 8 31 39 34 59 cm 68,69 28 60 5 37 80 38 2 53 72 16 43 33 19 61 62 2,10,66,72,78, C II 70 18 36 42 65 71 14 26 58 48 27 46
• AC* Amiga Project Anakin Research Byte By Byte Cardinal
Software Colony Software Computer West Commspec Communications
Data Reductions Associates Data Research Processing DESKWARE
Digitek Discovery Software Eastern Telecom Inc. Feisina
Software Golden Hawk Technology Great Cover-Ups Image Set
Inovatronics, Inc. Interactive Analytic Node Jen Day Software K
J Computers Lattice, Inc Lionheart Macro Ware Meridian Software
Inc. Metadigm, Inc. Michigan Software Distributors Micro Search
Inc., Amiga House MicroSmiths, Inc. Micro-Systems Software Inc.
MIDI-DESIGNS Netch Computer Products Nikol & Company Pacifico
Inc. PIM Publications Professional Network Services Co.
Quality Cottage SKE Software Slipped Disk Software Supermarket TDI Software Tigress T&L Products TPUG Transtime Technology Co.
Westcom Industries zoxso Amiga Programming Tools Workt 44 owee TM indow A member of the Power TOOLS family of professional development products.
]- I SSSKSKSK The first interactive Amiga program design tool, IP®W®1? WiliTKg]©'®?©™ lets you to design fantastic looking windows, menus and gadgets in minutes instead of hours or days!
You show this incredible program what you want and it does the rest, generating C or 68000 assembler source code for you to include in your own programs. W0 (ft dH ® ff17© is a structure generator for a machine that thrives on structures. With this software package you can: Pick the exact size and position for your windows visually. No more "wait to see what it looks like"; IP©W(§bW§ rattO®1®!! Knows where your window is and everything else about it!
Design professional looking menus. Add menus, move menus, or delete menus, whatever you want to do with text menus, our program keeps track of them and writes source code letting you duplicate them exactly with simple operating system calls.
Create your own string, integer and boolean gadgets and position them anywhere in your window.
P@m BlsW $ ©W§ keeps them from colliding and remembers the type, location and text contents of each one for writing those complex gadget structures.
Best of all, you can keep your designs in a format that can be re-edited, letting you create your favorite type of windows and customize them for each program you write.
Order Form Price for is $ 89.95, plus $ 3.50 for shipping and handling. Texas residents please add 6.125% sales tax to total price.
Name _ Address_ City_ State_ Zip_ Products ordered _ Payment method: MC Visa Check Money Order AC Card Number_ Expiration Date_ Name on card_ Signature_ Enter total enclosed:____ INOURTRONICS, INC. 11311 Stemrrons Frwy., Suite 7 Dallas, TX 75229 214 241-9515 The PAL is a turnkey expansion chassis that provides the most powerful and cost effective hardware growth path for your AMIGA.
Features: High speed direct Amiga DMA controller and hard disk • Five DMA expansion slots • 1 Meg Ram with Clock Calendar • Room for multiple storage retrieval devices • 100% compatible with current and future Amigas • 1 to 8 megabyte ram card options • Optional pass through bus connector for further expansion • Optional prototyping card • Future products currently under development INFOMINDER is an inteB- gent information resource that provides the user with instantaneous access to reference information stored within the Amiga personal computer.
Fully supports multi-tasking • Fast access by menu or outline • Text capacities include: Justification.
Word Wrap. Multiple character fonts styles • Information content completely user definable • Supports combination of TEXT and IFF GRAPHICS • Programmatic interface for context sensitive help • Narration and printing of information • Expand and shrink topics.
INFOMINDER will revolutionize the way we access textual and graphical information. Stop searching and START using the information around you.
Special introductory price $ 89.95 FINANCIAL PLUS is the affordable way to put your business at your fingertips. FINANCIAL PLUS is the complete accounting solution with live systems in one:
• General Ledger • Accounts Payable • Accounts Receivable •
Payroll • Word Processor FINANCIAL PLUS is adaptable. You
customize each company according lo its size and bookkeeping
An easy-to-read, easy-to-learn users guide provides comprehensive instructions (or setting up your own books.
Plain-English menus are the system "roadmaps" lor both the novice and for the more experienced. Because FINANCIAL PLUS is a totally integrated accounting system, no longer must you purchase individual packages, store entries on separate diskettes, or run contusing transfer programs to obtain complete integration.
Suggested retail price $ 295.
WRITE HAND is a general word processor and form letter generator that gives you the most features for your dolars. Developed to meet the special needs of small business, WRITE HAND Is easy lo learn and easy to use.
WRITE HAND chalenges you to compare the fokowing features dolar-tor-dotar, lea- ture-tor-feature to those of other word processors on the market today.
• Extensive on-line HELP service • Form letter generator •
Powerful edffing capabilities • Formats documents while you
edit • Reviews and merges files while you edit • Moves blocks
of text and figures of any size • Provides word wrap, bolding
and underlining Make WRITE HAND the tool that moves your
business into the productive world of electronic word
Suggested retail price S50.
1 IF item = 3 THEN PickSet: WHILE MOUSE(0) = OrWEND Xl = MOUSE (3): yl = MOUSE (4) IF xl 143 OR yl 143 THEN PickSet xl = INT(xl 9): yl = INT(yl 9) x2 = xl*9+2: y2 = yl*9+2 IF (PFlag = 1) THEN Npsx = Psx*9+2 Npsy = Psy*9+2 PC = POINT(NPsx-l, NPsy-l) IF (Pc 0) THEN LINE (NPsx, Npsy) — (NPex+6, NPBy+6), Pc, bf ELSE LINE (NPsx, Npsy) — (NPsx+6, NPsy+6), 0, bf END IF END IF LINE (x2, y2) — (x2+6, y2+6), ll, bf Psx = xl Psy — yl Psd = Dial Pflag = 1 WHILE MOUSE(0) 0: WEND ON MENU GOSUB CheckMenu MENU ON RETURN END IF END IF RETURN END Subroutine to return FileNameS FileName$ is limited to 17
characters Hitting the escape key exits with a NULL value GetFileName: LOCATE 21,20 PRINT "Input file Name:" LINE(ISO,173)-(300,185), l, b Key$ = INKEY$ WHILE Key$ "": Key$ = INKEY$: WEND Box = 152 LINE (Box, 175) — (Box+7,183),30, bf Cursor = 20 LOCATE 23, Cursor NameTop: KeyS = INKEYS: IF Key$ = ", f THEN NameTop NameLen = LEN (FileNameS) IF (ASC(KeyS) = 27) THEN FileNameS = "" GOTO NameDone END IF IF (ASC(KevS) = 13) AND (NameLen 0) THEN NameDone IF (ASC(KeyS) = 8) AND (NameLen 0) THEN FileNameS = LEFTS(FileNameS, HameLen-1) LINE (Box,175)-(Box+7,183),0, bf Box = Box-8 LINE (Box, 175) -
(Box+7,183),30, bf GOTO NameTop END IF IF (NameLen = 17) THEN NameTop IF ((Key$ = "0") AND (KeyS = "9")) THEN
Navigation PDF du magazine
Click image to download PDF