Sponsors

FacebookTwitterGoogle Bookmarks

In direct contrast to Atari's 520ST, which was reported to be sold only through specialty computer stores at the beginning and is now being negotiated with K-Mart, Sears and others, the Commodore Amiga has not only been directed into computer stores, but discounting has been strongly discouraged. See attached copies. As to the Amiga's IBM compatibility, two issues arise. First, the Amiga has a windowing environment similar to the Apple Macintosh, and is, therefore, much more user friendly than an IBM PC for most people. To make the Amiga IBM compatible would be similar to asking someone to buy a calculator and have them disable the add and substract keys, so it wouldn't be too easy to use. Second, the Amiga is IBM compatible as the enclosed ads indicate. However, the compability seems to be only a temporary solution for software, until the development catches up, similar to the problem the Macintosh had at its introduction. I have also included a copy of a new Amiga oriented publication, Amazing Computing. It further details the Amiga's truly amazing hardware, and hints at the exciting future for Amiga's users. Sincerely, HenryT. Teller President, Mnemonics Incorporated, Norwalk Connecticut Amazing Computing Page 9 Hey friends! This month we have to begin with the great news that CBM has secured a refinancing of their debt which will ensure their financial integrity well into next year. This means it is up to us now. We as developers have the responsibility of turning out quality products for public consumption. We as consumers have the responsibility of demanding excellence from the manufacturers of Amiga products. We all know theAmiga personal computer is a leading edge product of high quality. One thing which has been a recurring obstacle to the market acceptance of the Amiga, is a prevailing unjustified negative press. Columnists, in many of the trades dismiss, the Amiga as an inconsequential entry by that long standing producer of toy computers.

Click image to download PDF

Document sans nom Reviews Analyze! Game Reviews Mindshadow Barataccas Racter Tutorials Forth by Jon R. Byran AmigaBasic by Kelly Kauffman C, Lisp, GLI Columns! Miga-Mania Roomers Amicus DeluxeDraw!! A complete AmigaBasic Drawing Porgram! Rmazing Dealers The following are Rmazing Dealers, dedicated to supporting as well as selling the Commodore-Amiga™. They carry Rmazing Computing™, your resource for information on the Amiga™. If you are notan Rmazing Dealer, but would like to become one, contact: PiM Publications P. O. Don 869 Fall Riuer, MR. 02722 1-617-679-3109 Alabama
Georaia Abax Data Systems Huntsville Future System Augusta
Madison Books & Computers Madison Software South Inc. Savannah
Mel's Photo &Computer Shop Montgomery Command Computers
Birmingham Illinois Arizona Computer Resolution Champaign
Computerland O'Hare Park Ridge Computer West Copperstate
Business Sys. Phoenix Phoenix BA Business Computers Batavia North American Digital Tuscon lpdian* Greg Chaney Tronixtools Tuscon Greenfield Arkansas SIS Inc. The Micro Shop Burkat Computer Ctr. South Bend Mt. Home Little Rock Vons Computers West Lafayette Computer Corner Fort Wayne California San Bruno Kansas MidKansas Computers Newton Home Computing Center Data Bank Corp. Wichita Computerland Santa Rosa Santa Rosa Midwest Computers Manhattan ConputerLand of Stockton Stockton Brown Knows Computing Redlands Louisiana Computer Nook, inc. San Bernadine Software Center Int. Metairie The Computer Room Computer Attic Scoffs Valley Palo Alto The Computer Clinic Software Mart Maine Lafayette Metairie HT Electronics Sunnyvale Colorado Aurora Valley Computers Auburn Computer Room Micro World Lakewood Marvlanri Sun Country Computers Colorado Springs XubLJubLIa Computer Crafters Wheaton Ideal Computer Systems Evergreen The Logical Choice Inc. Baltimore Whole Life Distributors Englewood Delta Gama Corp. Gaithersboro Software Advantage Rockville Connecting Point Georgetown Massachusetts Spectrum Computers New Haven The Bit Bucket West Newton Mnemonics Inc. Norwalk Tycom Inc. OmniTech Computers Pittsfield Tewksbury Florida Computerland Leominster Cotronics Inc. Stewart HCS Computer Center Marshfield Computer Terminal Inc. Sebring LCA Video & Computer Ctr. Norwood Education Computers Etc. Talahasse Memory Location Walpole Florida Book Store Gainsvilie Commodore Computer Shop Ocala Michigan MSI Business System Brooksville Midland Computer Shop Midland Computer Bar Pennsacola Specialists Computer Livomia Micro’s Etc. Altamonte Springs Roseville Computer Store Roseville Computer Image Miami Michigan Software Novi Gulf Coast Computer Electronics Panama City Bits-Bytes-Nibbles Petowskey The PC Collection Coral Gables Slip Disk Madison Heights New Age Electronics St. Petersburg Programs Unlimited Grand Rapids Softwalls Computer Center Holly Hill Chelsea Computer Ann Arbor Orlando Electronics Co. Orlando Edmunton Computer Center Pontiac Computers Plus South Dayton Slip Disk Clarkston Computer Ware Inc. Tarmac Galaxy Computers Allen Park Family Computers Sarasota Retail Computer Center Inc. Farmington Hills Random Access Computers Ft. Walton Beach The Software House Kalamazoo The Open Door Cocoa Pro Video Okemos Minnesota South Carolina MCD of Hibbing Inc. Hashing Avcom International Inc. West Columbia OnLina Computers Minnetonka Horizon Greenville Computer Specialties Plus Monticelk) Horizon Greenville Computers, etc. Eagan Computer Place Minneapolis Tonnesgeo Software First Nashville Missouri Systems Plus Independence Texas Brands Mart Computers Kansas City The Computer Experience San Antonio Software Terminal Fort Worth Nebraska Regency Educational Sys. Dallas BULLSEYE Lincoln Computer Time Inc. Marshall Double E Electronics Omaha Softest Watauga Micro Search Inc. Houston Nevada ComputerAge Houston Century 23 Inc. Las Vegas Computer Concepts Waco Computerland of Carson Carson City Softwaire Centre Dallas ComputerAge Dallas New Jersey Byte by Byte Austin Family Computing Centres Fairfield Family Computing Centres Ridgewood Utah Family Computing Centres South Orange Computers Plus Murray NewMfito Virginia New Horizon Computer Sys. Alamogordo Virginia Micro Systems Woodbridge Page One Newstand Albuquerque Diskovery Falls Church Academy Computers Albuquerque Washington NewYork A. P.P.L.E. CO-OP Renton Software & Such Scotia Micro Age
Computer Store BelMew Software Supermarket Kenmore Computron
Business Sys. Yakima Byte Shop Merrick Ray Supply Inc. Glen Fails Wisconsin Castle Computer Latham TMW Software Inc. Wavsan Tedrow Business Products Rochester Colortron Computers Racine Star Tech Systems Massena Software Shoppe Fond Du Lac Amuse Computer Club New York World Computers Inc. Hicksviile Canada Leigh's Computers NewYork Compute Or Play Alberta Video Computer Center Rome Hindsin Computing Alberta Computer Outlet Jamestown Computer Shop Alberta Computers Etc. Syracuse Computerworks Alberta The Working Computer Storey Brook Data Pro Alberta Reed Deer Micro Systems Alberta Mariti. QarQllna The Software House Alberta Digits Raleigh Computer Store of Calgary Alberta TDS Computers Carrboro Memory Lane Aberta NorthJDakota Nutec British Columbia Computer Associates Fargo Super Software British Columbia Computer King British Columbia Ohio Corti British Columbia North Coast Programming Solon Strider British Columbia Quality Computer Appliances Toledo Sprite British Columbia Quality Computer Appliances Toledo Softwaire Centre Ini North Olmsted Micromart Manitoba Earthrise Micro Systems Delaware Canadian Computer Era Manitoba Earthrise Micro Systems Columbus Earthrise Micro Systems Columbus ComputerWorkJ Maritimes J. WAIIen Maritimes Saxtan Computer Center Sandusky Kobetek
Maritimes Computers Plus of Ohio Upper Sandusky Minioomp
Maritimes Software and More Cincinnati Computer Network Newark
Electronics 2001 Ontario Lakes Consumer Electronics Akron
Chatam Computer Ontario North Coast Programming Willoughby
Hastings Data Ontario Thornbill Ontario Oklahoma Computeriand
Ontario Video-Comp Inc. Lawton Arkon Ontario Colonial Video &
Computer Bartlesville The Computer & You Ontario Second Hand
Software Oklahoma City Compspec Ontario Oregon Coackamas
Computers Coackamas Softwares Co. Quebec IB Computers Portland Deitronie Solare Quebec Computron Business Sys. Portland Mierodata Quebec Computron Business Sys. Tigard Info Mereier Quebec Laval Micro Quebec Eannaylyanla Vision Tronique Quebec Basic Computer Systems Hermitage Distribution Visipro Quebec Pittsburgh Computer Store Pittsburgh Data Softique Computerware Pittsburgh Distributed In Canada bv Avtta Software Distrbutors Concord, Ontario Rhode Island and Micro Limits SmithfiekJ Phase 4 Distrbutors Inc. Southeast Calgary, Micro Limits Warwick 1-800-661-8358 Aberta CompUtopla Warwick CompUtopia Providence International Computer Sar._ _Mas!22_ MetoSeope: MetaScope gives you everything you've always wanted in an application program debugger: tor set including relationals, all assembler number formats. Memory Windows 4' data or disassembled code, v isettuet tatemente * ireeze to preserve display and; direct conTOrsiO| to code 1*- allow restoration. ' •. W e Other Windows • ' freeze and restore; symbol, *oemo?y« etc., 7, and breakpoint windows list current definitions. e Execution Control Breakpoints with repetition it counts and conditional expressions; trace for all instructions or subroutine level, both single-step and continuous • • execution. (¦¦ e full Symbolic Capability Read symbols horn
files, define new ones, use anywhere. PUBLIC DOMAIN SOFTWARE PiM Publications, Inc. has AMICUS Disks 1 through 8 and Fred Fish Disks 1 through 11 available at special prices ALL Disks are: $ 6.00 to Amazing Computing Subscribers or $ 7.00 to non subscribers (MA Residents add 5% sales 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
customers. Please allow 4 weeks for delivery Rmazing Computing Publisher: Joyce A. Hicks Circulation Manager: Doris Gamble Assistant to The Publisher: Robert James Hicks Corporate Advisor: Robert H. Gamble Managing Editor: Don Hicks Hardware Editor: Ernest P. Vlvelros AMICUS Editor: John Foust Amazing Authors; John Foust Don Hicks Kelly Kauffman Perry Klvolowltz Richard Miner George Musser Jr. Daniel Zigmond & The AMIGA Special Thanks to: Robert H. Bergwall RESCO.tnc. David Street E. P.V. Consulting New England Technical Services Interactive
Tutorials Inc. Advertising Sales: 1-617-679-3109 Amazing
Computing™ (ISSN 0886-9480) is published by PiM PUBLICATIONS,
Inc., P.O. Box 869, Fall River, MA. 02722. Subscriptions: in
the U. S., 12 issues for $ 24.00; Canada and Mexico, $ 30.00; Overseas,
$ 35.00. Printed in the U. SA Copyright © 1986 by PiM
Publications. Inc. All rights reserved. Rmazing Computing Table of Contents April 1986 Adios Amiga? HankTellertakesexceptiontoTIMEMagazine'sAmigaarticle 8 Miga Mania Perry Kivolowitz returns with heat and guile for the Amiga 10 Analyze! A review Ernest Viverios Jr. Falls for a new spreadsheet 17 Entertainment Reviews Ervin Bobo looks at Racter and Barataccas then "pros" Kelly Kauffman's "con" of mindshadow 19 Forth! Jon Bryan begins a tutorial on the programing language Forth 25 The Amazing Lisp Tutorial: Part Three Daniel Zigmond on Lisp 27 "ROOMERS" The AMIGA has discovered a few new tid bits 31 The Amazing... C Tutorial: Part Three John Foust speeds up the approach to C 33 DeluxeDrawl! By Rick Wirch A new AmigaBasic listing to bring out the artist in all of us 38 AmigaBasic, A beginner's Tutorial Kelly Kaufman looks at Microsoft's "Basic"addition to the Amiga 47 Inside CLI: Part 3 George Musser Jr. investigates AmigaDos and gives us PIPE 49 Amiga Products A listing of available and promised Amiga hardware and software 54 The AMICUS Network: Amicus by John Foust A listing Of The Fred Fish Collection 59 63 Departments: From the Editor Letters Index of Advertisers 4 6 64 From the Editor: by Don Hicks April?? Welcome to the third issue of Amazing Computing. Some of you probably noticed the "date” on the cover of this month's issue. Yes, this is our April issue, but it will not reach the printer's until late March. Which means, you will not be reading this editorial until the end of April (if I am lucky). Unlike most other magazines that publish three months ahead of the cover date, Amazing Computing is generally shipped the same month as the cover. This has caused confusion and we are doing our best to produce faster. We have made a concentrated effort to produce a publication filled with knowledgable and interesting articles to keep the user aware of the Amiga and its markets So, as you read this April issue of Amazing Computing, please try to remember that it was written and produced at the same time other magazines are doing their June and July issues. If you keep this idea, we will continue to increase our production speed and produce a quality magazine every month. And someday, who knows, we may be publishing ahead just like some of those other magazines. This month, we are excited to publish several new tutorials and a complete Amiga Basic program. DeluxeDrawl! This issue, we have included a long program listing entitled DeluxeDrawl! By Rich Wirch. The program is listed here and is also available in the Amicus PDS Disk 8. It is an AmigaBasic program for utilizing graphics on your Amiga. It works as a stand alone "paint" program or as the "seed" to any advanced use you may dream. Two New Tutorials Forth Jon R. Byran, from Albuquerque, New Mexico, has started a new tutorial on Forth for Amazing Computing. This is exceptionally good in that Jon was still looking for either Creative Solution's MultiForth or UBZ's Forth at press time. Jon is a master at the art of Forth, and has started his article at a basic level to interest users in this flexible programing language. Don Hicks Managing Editor AmigaBasic Kelly Kauffman has started a tutorial for Amiga Basic users who want to get more from their machines. Kelly has been responsible for several good basic programs in Amazing Computing and is a natural choice to teach the language. The mail at PiM Publications is continuing to increase and we are blushing from the nice things the readers are saying. However, we would like to see letters addressed to problems and solutions on your Amiga. Covering the Amiga requires the feedback of the reader to assure we are "looking underthe right bush." If you have questions or problems, we suggest that you send them into Miga-Mania or just to this address to be answered. If you have discovered a special trick or technique on your machine, let's ihear it. Chances are there are other users who are at the same problem that would appreciate hearing your request. As I stated in our first issue, this is a forum for the widespread use of the Amiga and its products. We want you to become a part of the magazine you read. We can only function effectively when we are working on the concerns of the users in general. Aside from using Amazing Computing, do not forget the User Groups. These are your best support. There is nothing finer than finding a solution to a tricky problem with the help of good friends and a user group is the place to collect all your wisdom. If there is a group in you area, join. If there are no Amiga User Groups in your area, form one. Then write Amazing Computing and tell us: The User Group Name The city and state A contact telephone number. We want to print this information in an upcoming issue. This is a way for your group to get into print, so WRITE US. Once again, thank you for you encouragement and support. We are a small company with a big job, but our highest priority is to get you good solid information. Amiga C Compiler $ 14995 Everything you need to develop programs 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 VisiCalc, 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 of256 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 the Amiga, this allows you to quiddy and efficiently take advantage of the 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 the relationships of the pieces, and automatically rebuild your system the same way every time. $ Lattice Phone (312) 858-7950 TWX 910-291-2190 INTERNATIONAL SALES OFFICES: Text Utilities $ 75.00 Eight software tools for managing text files. GREP searches for specified character strings; DIFF compares files; EXTRACT creates a list of files to be extracted from the current directory; BUILD creates new files from a batch fist; WC displays a character count and a checksum of a specified file; ED is a line editor which utilizes output from other 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.00 Fast, flexible and easy to learn editor designed specifically for programmers. LSE’s multi-window environment provides the editor functions such as block moves, pattern searches, and “cut and paste” Plus programmer features such as an error tracking mode and three assembly language input modes. OTHER AMIGA PRODUCTS AVAILABLE FROM LATTICE: Panel: Screen Layout Utilities $ 195.00 Cross Compiler: MS-DOS to Amiga C $ 250.00 dBCliI: library of data base functions $ 150.00 Cross Reference Generator $ 45.00 With Lattice products you gd Lattice Service including telephone support, notice of new products and enhancements, and a money-back guarantee. Corporate license agreements available. Benelux: De Vooght Phone (32 2-720-91-28. England: Roundhill. Phone (0672) 54675 Japan: Lifeboat Inc. Phone (03) 2934711 France: SFL Phone (1) 46-66-11-55 The Amazing Mail: Dear Amazing Computing Just read your Premiere Issue. Finally a magazine with some useful information about the Amiga. Also used EZ-TERM by Kelly Kaufman, my first attempt in using the Amiga OnLine. The program was great. Thank You. George Favale New York Dear Amazing Computing: Yes, yes, Yes! You have the answers to an Amiga Amore's prayer! Yours is the magazine that is needed. Do not faulter. Keep it up. You are doing everything just right. You don’t need someone to say Good Luck, but I will say it anyway. Good luck and keep 'em coming, G. R. Abbott, III Oregon Dear Sirs: I find your magazine quite
AMAZING!!! I especially enjoy the tutorials in both "C" and LISP. Your first issue has more real information than any othersource I havefound. Robert A. Shingledecker California Gentlemen, Your first issue is excellent. You are to be commended on your choices of subjects, the technical depth of the articles, and the technical competence of your writers. Thanks for offering this publication. Regards. Chuck Gallagher California To whom it may concern: If each issue turns out as good as the first, you people have a sure fire hit on your hands. Convey my thanks to Mssrs. Foust and Zigmond for their superb explanations of C and Lisp. I look forward to reading them. Donald L. Sniff Colorado Gee thanks, people. The Staff Dear Sirs: I am personally thrilled to hear about your efforts to organize and collect public domain software for the Amiga. I had hoped that something like the AMICUS Network would eventually start up somewhere, but I never believed it would happen so quickly. I read about your network in the first issue of AMAZING COMPUTING. The magazine shows a lot of promise and I plan to subscribe. However, I think I would subscribe for no other reason than to have access to your public domain software service. Sincerely, William N. Spann Washington Public Domain Software grows through Public donations. Send us your programs and we will send you ourbest! The Staff Dear Sir: I recently received fifteen copies of Amazing Computing from you. However, all of them have sold. Could you please send me ten more copies as soon as possible? Thank you. Sincerely, Helen Shyr Colonel Video & Computer Oklahoma PIM Publications, Inc. I find your magazine to be the best user oriented magazine I have read yet with respect to its utility. I appreciate being told the truth even if it hurts, and at the same time I see some of the best positive support for the Amiga available. Don Hicks said it best in the column "From the Editor" something along the lines of "Cut the hype, let's get serious, but don't forget to have fun." Thank you for your time, William Steidtmann Minnesota To Whom it May Concern: The response to the January issue of Amazing Computing has been going quite well. The 30 copies I received January 31 are just sold out. I would like you to send me an additional 20 copies as soon as possible. In as much as this magazine is selling so well, I would like to change my original monthly order of 30 copies to 50. Thank you very much. Sincerely, D. F. (Skip) Pilarz NEW AGE ELECTRONICS, INC. Florida Dear Mr.
Hicks: I have just finished the Premiere Issue of Amazing
Computing, and want to thank you for a fine beginning. I was
delighted to read your letter from the editor. It indicates
that you plan to provide the information needed by all Amiga
users, because we are all New AMIGA Users, even the technical
users who have been working with computers for many years. I was especially thankful for CLI tutorial and Summary by George Musser Jr., which provided information which should have been supplied with the computer. I hope that you will be able to help us learn what is built into the standard machine and software, and how to use it. If it isn't documented in the user guide that comes with the computer, many of us don't know about it. And if it isn't officially documented anywhere, we may never even hear about it. So we count on you to help us to learn about and use what we have already bought. Once we know about what we already have, then we'll want to know about what programs and hardware are available. Please provide reviews and evaluations when possible, so that we'll have an idea of what's good and what's not so good. Thank you again for a fine magazine. I look forward to many enjoyable hours with future issues. Sincerely, F. D. Shelton Florida Gentlemen: The shipment in town of Amazing
Computing evidently sold out within several days, and everyone
I've talked with is enthusiastic about the magazine and wishes
you would publish a weekly I I am looking forward to the C
tutorial series. I hope the rest of the series can be as
clearly written and (relatively) jargon-free as the first
installment. The first page of the Lattice manual is
discouraging when it warns that it is not a tutorial and
assumes that the user already knows C. Could John discuss
other versions (Aztec, and whatever is in the works) as to
their ease of use for the beginner. Any interpreted versions
coming out? Don't forget "the rest of us”, though, who will be
doing most of our work in BASIC, hope some utilities will be
forthcoming that will help to tap the potential we keep
hearing about, particularly the graphics. Sincerely, Michael Swinger Ohio John Foust is working on a comparison review of C languages for a future isse of Amazing Computing. The Staff Keep the letters coming! V BYTE BY BYTE INTRODUCES FINANCIAL PLUS FOR THE AMIGA. FINANCIAL PLUS is die affordable way to put your business at your fingertips. FINANCIAL PLUS is die complete accounting solution with five systems in one: • General Ledger • Accounts Payable • Accounts Receivable • Payroll • Word Processor FINANCIAL PLUS is adaptable. You customize each
company according to its size and bookkeeping needs. An easy-to-read, easy-to-leam users guide provides comprehensive instructions for setting up your own books. Plain-English menus are the system “roadmaps” for 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 confiising transfer programs to obtain Suggested Retail Price: $ 295.00 Call or mail orders to: © BYTE bu BVTC. CORPORATION 3736 Bee Cave Rd., Suite 3 Austin, TX 78746 (512) 328-2985 Major credit cards and CODs accepted. Certified
checks and money orders only. Did TIME™ say.. Adios Amiga?"??? Amiga owners have long grown accustomed to the skeptics of the Commodore Amiga. Most critics of the Amiga either judge it on operating systems that are no longer in use or the financial status of Commodore Business Machines. In almost every article that refers to the Amiga, the press tells us the Amiga is a wonderful machine and applaud the potential that the Amiga has brought to the personal computer market. But, this applause is almost always buried within the article a long way from the derogatory headline. Amiga is not the only machine to receive this style of coverage. Last year, Apple Computer’s Macintosh was receiving poor press due to the slipped release dates of software and the trials and tribulations of Apple's top management as they trimmed the corporation's plants and then themselves. Now, however, the Apple Macintosh has been touted as the "new" business standard. We are told of the thousands of programs available and the excellent business position Apple enjoys. A true test of insight was released in a TIME Magazine article of Commodore and the Amiga in their February 24,1986 issue. Appearing only a few weeks before Commodore's new financial position announcement, the article attacked the Amiga with a title "Adios, Amiga?" In large letters, subtitled "Commodore flirts with failure." We encourage all Amiga owners to read this article (page 52, the cover has a picture of Philiipine's Corazon Aquino). However, we do encourage discretion. If you have a low boiling point, pass it by. Hank Teller of Mnemonics Incorporated in Norwalk, Connecticut took offense at the article and wrote a letter in protest to TIME. We at Amazing Computing understand that TIME Magazine may be too busy to print Mr. Teller's response, so we have included it for all Amiga users. The Editor TIME Time & Life Building Rockefeller Center New York, NY. 10020 Re: 2 24 86 "Adios, Amiga?" Dear Sir; As a subscriber, I look forward to my weekly issue of TIME. It gives me an opportunity to catch up on the current events, and understand them in greater depth than available through newspapers. As a computer professional, I am always interested when Time chooses to report on computers. In the February 24th issue, page 52, Mr. Gordon M. Henry reported on the Commodore Amiga, a personal computer released to the public last fall. There were several items in the letter which are in direct conflict with my understanding of the situation. Following, I have addressed these items, and, where possible, have added additional references.
1. The reported loss by Commodore of $ 53.2 million was reported
without qualification. In fact, $ 22 million was due to
Commodore's closing two unprofitable plants, as reported by
Paul Lazovick, Commodore’s director of investor relations, and
$ 29 million (for a total of $ 51 million of the $ 53million
reported) was a charge against certain inventory and other
assests, again a nonrecurring charge.
2. Although Mr. Henry did site the Amiga's ability for multitasking, as well as color graphics, he omitted its
four-channel stereo, video port, sound co-processor, graphic
co-processor, voice synthesizer, 880K disk and other
significant features.
3. When Mr. Henry reported on the marketing of the Amiga he
mistakenly implied that the Amiga would be distributed in the
same channels that the Commodore home computers (the Commodore
64,128 and 4+) have been sold. In direct contrast to Atari's
520ST, which was reported to be sold only through specialty
computer stores at the beginning and is now being negotiated
with K-Mart, Sears and others, the Commodore Amiga has not
only been directed into computer stores, but discounting has
been strongly discouraged. See attached copies.
4. As to the Amiga's IBM compatibility, two issues arise. First,
the Amiga has a windowing environment similar to the Apple
Macintosh, and is, therefore, much more user friendly than an
IBM PC for most people. To make the Amiga IBM compatible would
be similar to asking someone to buy a calculator and have them
disable the add and substract keys, so it wouldn't be too easy
to use. Second, the Amiga is IBM compatible as the enclosed ads indicate. However, the compability seems to be only a temporary solution for software, until the development catches up, similar to the problem the Macintosh had at its introduction. I have also included a copy of a new Amiga oriented publication, Amazing Computing. It further details the Amiga's truly amazing hardware, and hints at the exciting future for Amiga's users. Sincerely, Henry T. Teller President, Mnemonics Incorporated, Norwalk Connecticut Hey friends! This month we have to begin with the great news that CBM has secured a refinancing of their debt which will ensure their financial integrity well into next year. This means it is up to us now. We as developers have the responsibility of turning out quality products for public consumption. We as consumers have the responsibility of demanding excellence from the manufacturers of Amiga products. We all know the Amiga personal computer is a leading edge product of high quality. One thing which has been a recurring obstacle to the market acceptance of the Amiga, is a prevailing unjustified negative press. Columnists, in many of the trades dismiss, the Amiga as an inconsequential entry by that long standing producer of toy computers. They cannot see beyond their monochrome, low resolution, low performance, non-expandable Big Bananas. I really get the impression that manufacturers in the staid world of yesterday's technology have banded together to turn their collective back against a product that simply represents the bell tolling the end of their reign of mediocre machines for the mass market. Conspiracy? Just might be possible. Big advertising budgets often dictate editorial policy. The really mind blowing thing is Commodore has not been combatting the Amiga-Blahs in the press with persuasive arguments to the contrary. Where has the Amiga advertising budget gone? Is there one? How come such things as a recent ad from a mass-merchandiser of the Atari ST attributed the characteristics of the Amiga to the Atari and the specifications and characteristics of the Atari to the Amiga go uncontested? So, you might be asking, where is Perry going with all this? Well, I spoke of responsibilities before. We all have one very important responsibility we must perform. WE can help create a better informed public which until now has not had the benefit of a balanced coverage of the Amiga personal computer. CBM's financial security will last a year. Without us to counter the prevailing misunderstandings by the public, the year will come and go. We need to make the product stick. We must demonstrate to others what we have seen ourselves. The Amiga is a technologically superior product offering enough performance and features to finally make the personal computer a powerful, effective tool providing an adequate human-machine interface. What can we do? Saying: Simple! Write letters to editors o "How come you do not mention or cover the Amiga in your
publication?” * o "Your articles editorial advertisement did not represent the
truth sufficiently. Let me correct you on the following
points:" And, we can talk. The prevailing views we have to
combat are: o CBM cannot produce a quality product. Or, CBM: "Don't they make
toys?" It's funny. But, in Europe, CBM enjoys the opposite reputation. They are THE business machine maker. At the very least you can always say: "But CBM didn't produce the technology. Amiga (a Californian start-up) did." O The Amiga does not have an IBM-PC emulation. Not true! There are currently two PC emulation products available which work quite well. CBM's commitment is to have the top 25 IBM PC business packages running on the Amiga, o The Amiga is not a serious business computer. Why? Because it can take 8.5 megabytes of memory directly? Maybe it is because its c.p.u. offers nearly the same performance as computers in the 100 to 200 thousand dollar range? And those machines do not have the same level of hardware support for graphics and sound. Yeah, maybe it is because the Amiga can compute and render hundreds of thousands of graphics elements per second. A real business environment cannot possibly benefit from such things. So? Let’s Get Tough! User Group Information 2 ~ News From JAUG This is the last month I expect to relay news from the Jersey Amiga User Group for a while since (hint hint) readers will start sending information about their user groups and meetings to AC for publication here. You can send information about your local group to: USMail: Miga-Mania c o Amazing Computing PiM Publications Inc. P. O. Box 869 Fall River, Ma. 02722 Usenet:
ihnp41ptsfaiwelliperry CompuServe: Don Hicks 76714,2404 The
February 21st meeting of JAUG was attended by approximately
240 people. We were treated to demonstrations of Amiga music
products by CherryLane Technologies, Inc. as well as two
demonstrations of MIDI wizardry by Lou Ploch of Micro-W
Distributing. In fact, we heard a few Rag Time pieces played
in Scott Joplin's own hand (and recorded on piano rolls) by
MIDIsynthesizers controlled by an Amiga personal computer. Next month's focus will be on business software as well as on repair and service of the Amiga. Representatives from Commodor-Amiga will be present to answer questions. The meeting will be held Friday, the 21st at 7:30. Lecture hall 114 of Hill Center, Rutgers University New Brunswick campus. Hill Center is off of Brett Rd which is off of Metlars Lane which is off of River Rd which intersects Route 287 at exit 5 (consult a New Jersey map). General Helpful Advice 4 Amiga RFI (Radio Frequency Interference) Anyone who has ever opened up their Amiga personal computer to see what is inside, has been greeted by yet another sealed box made of metal. Inside the plastic case, is a metal case designed to contain radio frequency interference caused by the Amiga and prevent such interference from impacting other home products such as radios, t.v.'s and your home's electrical system. The shielding can only be effective if your Amiga is connected to a fully grounded electrical source. If your Amiga is not fully grounded, you will definitely experience interference caused by the Amiga on other home appliances. Moreover, interference caused by an improperly grounded Amiga may even cause what appears to be disk errors when reading from the Amiga's floppy disks. These errors (on reading) will go away when the computer is properly grounded. If, however, you write to a disk drive using an improperly grounded machine, you might be writing bad information. Errors of this sort will not go away. By the way, if you are using an adapter to connect your Amiga to a two conductor electrical outlet, you are definitely not grounded. In summary, if you can use your Amiga without noticing any noise over televisions or stereos running at the same time, you are probably ok. Also, if you experience a lot of disk failures check to see if you do have interference on a t.v. or radio. If so, your problems may be caused by improper grounding. Intuition 3 Messages and Message Ports Although this note is grouped under the heading of "Intuition," its scope encompasses any instance of messages and message port usage. One of the primary means of interprocess communication on the Amiga personal computer is the message. Messages can contain arbitrary information. For example, a message may be empty. It relays information simply by arriving at some destination. Or, a message may contain a C language structure specifying, for example, the position of the mouse with respect to the upper left comer of a window. Because the programmer has complete control over the content of a message, message passing can be used to convey any kind of information from one task or process to another. One way programmers will routinely use messages and message passing is doing device i o. On the Amiga, processes do not themselves do physical i o. That is, processes themselves do not normally have to diddle machine registers to make an i o go. Instead, a process opens a device (which makes sure that a device handler exists and is loaded into memory), formats a (device specific) m rssage, then passes the message to the device handler. The device handler is a piece of code written specifically to handle the grungy details of controlling some device so we will not have to do it. Our interaction with devices is accomplished via a nice clean message based interface. Messages are things which are passed from one place to another. So, we should first talk about how to set up a message destination. Messages are sent from a process to a "Message Port" (or simply, a"port"). Another process reads the AMIGA USERS AND DEALERS Do you need a powerful graphics progra. That can be used with other programs, and unleashes the graphic capibilities of the Amiga? POLYVISION SOFTWARE HAS THE ANSWER FOR YOU! INSTANT ARTIST! An inexpensive but powerful paint program with over 50 commands and thousands of possibilities that come to your fingertips by a simple dick of a button. LIKE: * Saving and loading pictures and patterns * Picture magnification * Image cloning * Airbrush technique * Mirror imaging * Ten brush sizes + the ability to make your own custom 4 brushes * Ability to merge pictures to future Polyvision programs SEND
34.95 To receive a copy of Instant Artist or SEND 39.95 To
receive a copy of Instant Artist and a guarantee for a future
updated version of it. TO: POLYVISION SOFTWARE 512 E. ALDER WALLA WALLA WA. 99362 (509) 529-3708 Amiga is a trademark of Commodore-Amiga Inc.
Instant Artist is a trademark of Polw isinn Software Inc.
message from the port and sometimeswill reply to the
message (sending a message back to the originating task or
process). So, a message port is a message destination. If
you wish to send a message to some other process, you must
locate its port. If you wish to receive messages (or
replies to your own messages) you must declare a message
port of your own. To create a port, use the call CreatePort supplied in the standard Amiga library. Synopsis: struct MsgPort *CreatePort (name, priority); char‘name; char priority: This means CreatePort returns a pointer to a structure of type MsgPort. The arguments arc a pointer to a string which represents the port's name and a byte representing the priority of the port. A port should be given a name when you want to make the port "public." That is, your desire is to have many different processes or tasks all use the same message port for communication. For example, you might define a message port over which all requests for a data base search might be routed to a data base access program. The data base manager declares the port and gives it a name (which, when using CreatePort, will automatically make it a public port). Programs, which wish to use the data base manager, will look for its message port (using FindPort) via the predefined name. When doing defice i o, a public message is not needed since their will be only two specific parties to the message communication. These are: your process and the device handler. The priority field passed to the CreatePort call is used to influence where, in the list of all public message ports, this port will be inserted. If you are not providing a name for the message port, then there is no need to set this field to anything other than 0. If a priority is given, the message port will be inserted no further down the list than the last message port having the same priority. In the grand scheme of things, a message port's priority does not affect performance all that much. CreatePort creates a message port configured to cause a signal to be sent to your task or process each time a message is sent to the port. Signals are another form of interprocess communication (IPC) available on the Amiga. They are used (in this case) to notify a process that there is something waiting for it on a message port. CreatePort performs the Amiga calls to allocate a signal and tells you which signal will be used by this message port in the field "mp_SigBit." You could use this to allow your process to sleep (not use the c.p.u.) when it is waiting for activity on the message port like so: Wait (1 L « rnyport- mp_SigBit); That is, wait for a signal whose number is mp_SigBit. Other signals can be"or’ed" into a Wait call to allow your process to wake up for any one of several signals. Now, having called CreatePort, you have got a port set up. This port might be used as a destination of replies sent as a consequence of your sending messages to someplace else, or your port might be used as a destination for messages other processes might want to send you (by the way: if you need to reply to a message sent to you, the message port to reply to is contained in the message you receive). The next step is to send a message. A message has the following form: | standard Amiga message header| | user defined data structure J There is a field in the standard Amiga message header which defines the length of the user defined data to follow. The Amiga message handling routines are not concerned with the content of the user defined data area. This area is completely dependent upon the programmerfor definition, meaning and usage. Here is an example of a user defined message which might be sent from some process to a data base manager: struct DBMS_message struct Message m; struct DBMSjdatad;} db_message; Where "m" is an instance of the standard Amiga message header and "d" is a structure defined and; WiiteHand. BYTE BY BYTE INTRODUCES WRITE HAND FOR THE AMIGA Make WRITE HAND die tool that moves your business into the productive world of electronic word processing. Suggested Retail Price: $ 50.00 Call or mail orders to: WRITE HAND is a general word processor and form letter generator that gives you die most features for your dollars. Developed to meet the special needs of small business, WRITE HAND is easy to learn and easy to use. WRITE HAND challenges you to compare the following features dollar-for-dollar, feature-for-feature to those of other word processors on the market today. • Extensive on-line HELP service • Form letter generator BYTE bu BYTE. COWOHAHON 3736 Bee Cave Rd., Suite 3 Austin, IX 78746 (512) 328-2985 Major credit cards and CODs accepted. Certified
checks and money orders only. • Powerful editing 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 understood by both
the program and the data basemanager. Before using db_message, we would specify how many bytes of data were in the message by saying: db_message. m. mn_Length=sizeof (struct DBMS_data); If a reply from the data base manager is required, we also have to specify a port of our own creation to act as a destination for the reply message sent by the data base manager back to us. R previously createported a message port whose pointer is in "rnyport" 7 db_message. m. mn_RepiyPort=rnyport; We use the PutMsg call to send a message. PutMsg takes a pointer to the destination port and a pointer to the message to be sent. Notice, in our example of a process talking to a data base manager, two ports are involved. Your process had to do a FindPort to find the public message port used by the data base manager. Also, you had to CreatePort your own port to be used as the destination of any reply messages sent from the data base manager back to you. Synopsis: PutMsgfport, mesa) struct MsgPort*port; r mesa is ai pointer to an instance of your application specific message structure 7 One really important characteristic of the kind of message passing the Amiga employs is, once you have called PutMsg, you must promise not to modify the contents of the message. In fact, you should not even read from the message after calling PutMsg since the contents may be undefined. Once you have received your reply, you are free once again to use and modify the message structure and contents. Think of it this way: By calling PutMsg, you are lending the memory in which the message sits to another process. If you were to modify that memory while the other process believes it has control of the memory, you might be messing something up. Also, if the other process modifies the memory, it might be over writing some information you thought was still valid. The reply is the other process's way of signifying you it is done using the memory you loaned it. This restriction (of not referencing the contents of a message until you have received a reply for it) is a general rule and may not apply in all cases. However, it pays not to violate the restriction even if you think you might be able to get away with it (something about not tempting fate might be in order here). You can get a message by calling GetMsg and furnishing a pointer to the message port you wish to interrogate. If a message is available for you on the supplied port, GetMsg returns a pointer to the message structure. If there is no message waiting for you at the time on the given port, GetMsg will return NULL Usually you will be sitting in some Wait call. When a message arrives for you on one of the message ports whose signal bit you have specified in the argument to Wait, the Wait call will return. Then you would call GetMag for each of the possible message sources. The WaitPort call may also be used if you are going to wait for activity from exactly one source. Replying to a message is accomplished via the ReplyMsg call. This call is passed a pointer to a user defined message. The standard message header field "mn_ReplyPort" must have been initialized to be the destination port for replies. Synopsis: ReplyMsg (mesa) In our data base example, your process might send a message to the data base manager requesting a search for a specific record. The data base manager would perform the search and, if the record was found, load it into the space reserved for it in the user defined message sent by your process. If the record was not found, the data base manager could set some flag which would be checked by your process before trying to use the data returned by the data base manager. While the data base manager performed its work, your process would be waiting for a reply. When the reply comes, it means that the data base manager is finished processing your request and you can now find the results in the data structure you had originally passed. Here is a summary of how to set up two processes sending messages back and forth. One process is a server (like a data base manager) and will not generate messages on its own but only reply to messages sent to it by other processes. UBZ FORTH t&e, Attttya, TM m Your Process Server 1. Startup 1. Startup 2. Declare public message port named Ralph 3. Wait for message on Ralph 3. Lookfor public message port named Ralph 4. Declare private message port (no name but call it rnyport) 5. Declare message (call it mymess). Mymess has standard message header called m as one field.
6. Mymess. m. mn_Length=sizeof (user defined data area) 7. Mymess. m. mn_ReplyPort=rnyport;
8. Mymess.user_definable data gets stuff.
9. PutMsg (ralph,&mymess) 10. Wait (1 L « rnyport- mp_SigBit);
4. Server wakes up.
5. Msg = GetMsg (ralph);
6. Process message 7. Formulate reply 8. ReplyMsg (msg);
11. Process wakes up. 9. Goto 3.
12. (void) GetMsg (rnyport);
13. Look at results.
14. Goto 8. ‘FORTH-83 compatible * 32 bit stack * Multitasking ‘Separate headers ‘Full screen editor ‘Assembler
‘Amiga DOS support ‘Intuition support ‘ROM kernel support
‘Graphics and sound support ‘Complete documentation ‘Assembler
source code included ‘Monthly newsletter $ 85 Shipping included
in continental U.S. (Ga. Residents add sales tax) (404) -948-4654 (call anytime) or send check or money order to:
UBZ Sofoywit, 395 St. Albans Court Mableton, Ga 30059 Try
FORTH Be Impressed ‘Amiga is a trademark for Commodore
Computer. UBZ FORTH is a trademark for UBZ Software. AmigaDosBugs 2-EarlyVersionsOfDeluxPaintWill Eat Themselves! This is not really an AmigaDos bug, but we will put it under this heading to reduce the proliferation of Miga-Mania topics. Early versions of Electronic Arts' program Delux Paint may destroy themselves, if they are written upon. What happened is, EA did not know that when a disk fills up, the free map of the disk is thrown away and a new one is recontructed at a later time. The problem is when the free block map is recreated, AmigaDos tries reading the bad sectors EA places on each disk to implement their copy protection scheme. Ordinarily, the sectors would not be considered, but since the old free map was tossed away, the information, saying not to address the bad sectors, is lost. Poor AmigaDos recoils in horror upon trying to validate your once full Delux Paint disk. Result: Dpaint becomes Dpain. If your version of Delux Paint ever gives out, do not Correction: As a last minute favor to Advanosdl Systems Design Group, Amazing Computing inserted their telephone number in the completed advertisement. However, in our haste, we erred. The corrected advertisement is printed here. We apologize to Advanced Systems Design Group and their clients for any inconvenience. Hesitate to send it back for replacement by EA. They will be glad to replace any disk damaged by this error. Well, that's all for this month. Be sure to catch the Screen Image Printer included in this issue. The note on message passing was intended to lay the grounc work for a discussion next month on how SCRIMPEF works (specifically, how to do screen dumps). Be well everybody and remember to become militan with respect to bad media coverage of the Amiga! • AC' The AMIGA learning curve is steep! J Choose a porting house
that's well advanced along the curve! Advanced 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 Commodore-Amiga, Inc. One of the reasons why some people probably purchase a personal computer is the dream that one can use it as sort of an integrated-electronic pencil-paper-calculator. With Analyze!, the electronic spreadsheet package by Micro-Systems Software, Inc., this dream can come true — on the Amiga. Analyze! A review by Ernest Paul Viveiros Jr. Analyze! Should not only be regarded as a powerful electronic spreadsheet but also as a mini-programming language. It is a powerful program and handles tasks, which would take hours by hand, in seconds with ease. Basically, Analyze! Does what you expect a personal computer to do, and does it very well. It does not take a great deal of time to become fluent with Analyze! And it takes an even shorter time to start getting results. Analyze! Includes a comprehensive sixty-four page manual consisting of a tutorial to get you started, a topical reference guide of the workings of Analyze!, and a comprehensive explanation of every function available in Analyze! Analyze! Is booted as you would boot a workbench disk: Kickstart first then when asked for Workbench just insert the Analyze! Program disk. After the workbench appears, just open the Analyze! Disk icon and the Analyze! Program icon should appear. Open that icon and away you go!! The first thing Analyze! Does is display a "requester" asking you how much memory you want to allocate for your worksheet (128k is the default). The allocation of 128k allows for a very good size sheet especially since Analyze! Uses "sparse matrix technology", that is empty cells are not allocated. After you answer the requester, Analyze! Is ready to go. At once, you will notice the screen colors are different. The screen is white (paper?), positive numbers and text are black, and negative numbers are red. (If you do not like this set-up, you can change the colors to your liking by using Preferences). On your screen you will see the basic spreadsheet. The rows are numbered, while the columns are lettered. Each location in this grid is called a cell and is identified by its column letter and row number, for example B12. Any entry can be a number, a word, or a function of the contents of other cells. This is why Analyze! Is so powerful. Whenever the contents of any cell is changed by the user, all of the cells that use the information in that cell are automatically recalculated. It is this aspect that makes Analyze! So useful. You are not limited to only the cells that are visible on the screen. The size of the actual spreadsheets is actually many times larger than the screen. Think of SOFTWARE! AVAILABLE RIGHT NOW AED PROGRAM EDITOR program editor for the AMIGA FEATURES: Easier to use than Amiga's full screen editor Uses full Amiga keyboard Includes a printer formatter for CLI Search & Replace Block moves & replace Includes a browser for CLI $ 89.95 Multiple files Multiple windows CTRIEVE FEATURES: DATABASE TOOLBOX Open Index Create GetTot GetKey Chokey Getae GetNext Close Index AddKey DelKey Gate GetPrev Dealer Inquiries Welcome Micro Search V (713) 988-2818 9651 Bissonnet • Houston, TX 77036 ®CALL NOW® Amiga is a trademark of Commodorc-Amiga, Inc. the screen as a window over a large spreadsheet. To move the sheet (and the cursor) under the window, just use the arrow keys. In addition to the grid, there is space near the top of the screen where other important information is displayed. Pressing the F2 key gets you into the Edit mode, and this area displays the contents of the current cell. Here you can edit what you typed in the cell. Pressing the F2 key, again, leaves the Edit mode. To enter a value into the sheet, just move the cursor to the cell desired, and enter whatever you please: a numerical value, text, or a function. The functions are the real beauty of Analyze! The list of available functions list from trigonometric functions (Cos.ATan, etc.), statistical functions (Std deviation, etc.), logic functions (And, Or, etc.) and assorted others. Functions also include very useful @lf and Table lookup functions. Along with the business functions (NPV, and other annuity functions), the list is long and useful. There are forty-one functions in all making for a good no-frills spreadsheet package. Analyze! Makes good use of the features of the Amiga, using color, sound, pulldown menus, function-keys and the mouse. The pulldown menus, which are activated by pressing the right mouse button, contain most of the "workings" of Analyze! Such as the archive (Loading Saving of spreadsheets), printing, data formatting, and much more. The function-keys and Amiga keys provide many shortcuts to more experienced Analyze! Users. The mouse is used not only to select pulldown menu options, but also to move the cursor on the current window. There is so much to say about this program, but not enough time or space. So to wind things down I would say that Analyze! Is definitely worth the money! I feel confident that Micro-Systems, Inc., will back this program and support it as they give both 24-hour BBS numbers and voice hotline numbers for questions. The potential is given to the user with this program. The user must remember that a program like this is only as good as you want it and push it to be. Believe me, this program can be pushed. I conclude that Analyze! Is worth your time and money and would be a great addition to any Amiga software library. *AC* RACTER from Mindscape Entertainment Reviews N, by Ervin Bobo, It may be as the cover says, that RACTER will revive the art of conversation. Or it may be that he will bury it so deeply it will never be rediscovered. With its roots in "Eliza" and it's outlook shaped by the Mad Hatter, RACTER itself is certain to become a conversation piece and there is a certain justice in this. It is a program that explores the speed and power of the Amiga without ever resorting to graphics or sound effects. "If a libertine discovered decency, he would consider it obscene." Well, there is sound. Making fine use of the Amiga speech synthesizer, RACTER speaks to you a moment after his words appear on the screen, almost giving the impression that he is indulging those of us who are too dull to read. You begin with Kickstart, then boot the RACTER disk. When the disk icon is opened, you will notice a Preferences tool. This is for setting your printer to provide a transcript of the conversation and we most emphatically recommend that you do this. Without a hard copy, you will be hard pressed to remember all the aphorisms RACTER has spawned and there may even come a day when that hard copy is your only link with reality. "How is a raven like a writing-desk?" " Because the likens insist on it. Also, because clever things happen." When the program begins, RACTER will first interview you. Yes, I know you thought it would be the other way around, but RACTER, in spite of his monotone, can be very insistent. After all, the art of conversation belongs to him and you are a novice. While there is a beginning, there is no end to this simulation. Nor of points won or scores kept. This holds true over the course of one or many sessions. (Racter does remember you from one session to the next, and will even recall for you the last topic of conversation.) So what is the point? For me, it is the certain knowledge that, at some point in the conversation, I will be made to see something as I have not seen it before. When your turn finally comes, you may ask him anything. He seems to have no secrets, although some replies may be cryptic. At one session he may tell you he is from the great void, at another that he is from the funny farm. But, perhaps they are one and the same. Gifted with the ability to tell anecdotes, RACTER is liberal in sharing these with you, usually immediately after he has answered your question. You may hear things about L.Ron Hubbard or about Aristotle that you never knew. At times, RACTER seems to be contemporary with everyone who has ever lived: "Did you hear the latest about Samson?" As "Eliza" was an early attempt at simulating artificial intelligence, RACTER is a state-of-the-art attempt at A GREAT COMPUTER... OUTSTANDING SOFTWARE......AND INCREDIBLE PRICES! There may not be a better personal 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 calculator where 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 retyping. 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 in 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 other side 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 On Line!. All for a down to earth price of only $ 69! 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 $ 429. 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 $ 429! Hundreds less than our competition! Micro-Systems Software, Inc. 4301-18 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. Simulating artificial insanity. Yet there is a fine line between insanity and genius. Laughing, sneezing, coughing and expounding, RACTER continually treads that line and does it so well you may not always be certain to which side he has slipped. "Nevertheless, when sickening crows soar and fly, their own tradition is always determined and unhinged." "When a truthsayer marries a politician, their children are honestly criminal." While RATTER’S delivery is stream-of-consciousness in the James Joyce manner, leavened with the batty logic of Lewis Carroll, the content is of foxes, ravens, communists, Immannuel Kant and Jane Fonda — and everything else you can think of. Lest you think it a waste of time to communicate (through the keyboard of a computer) with an obviously insane personage, let me assure you that it is not and then leave you with this thought: When you last communicated by modem, who (or what) was really on the other end of the line? And how can you prove that beyond the shadow of a doubt? Mindscape, Inc. 3444 Dundee Rd. Northbrook, III. Disk $ 44.95 BARATACCAS from Mindscape Your name is Kyne and you are a fugitive, framed for genetic crimes and seeking the evidence that will clear your name. Although that plot line may sound slender, it is of such things that the best adventures are made and BRATACCAS, being the first original (not adapted from another source) adventure for the Amiga may well be the one to set the standards for those that follow. This, you see, is not just a text adventure, nor even a graphics adventure. It is an animated graphics adventure and as such it utilizes much of the power of the Amiga in ways that such use was intended. Though I have heard some people compare it to "Dragon's Lair", I think a much more appropriate simile for Amiga users would be to say that playing BRATACCAS is much closer to having control over the famed "Robo-City" demo that dealers were quick to show you when you first shopped for your machine. You contol Kyne and you first meet him at his arrival on the planet Brataccas. It is up to you to get him out of the teleport module and into the underworld environs of the planet. To do this, you use the mouse and it is going to take a little while to become accustomed to the controls. Running into walls and allowing Kyne to be booked on the head by anti-grav elevators will elicit an "ouch" in the form of a comic-strip balloon above the character’s head. There are, in fact, three types of movement: Single, which is normal; Emphasized, which allows running, turning and other decisive movement; and Double Action which allows Kyne to draw or sheath his sword and to fight. As in any adventure, BRATACCAS is composed of rooms and of hidden clues. You will be required to move Kyne through many doors; up and down many elevators. You will pick up whatever can be carried and hope it may be of some use to you and you will interact with other characters on the screen. In short, BRATACCAS uses all the conventions of the classic text adventures and, even though animated, manages to retain the richness of detail and variety of dangers that, until now, could only be found in the alltext adventures such as "Zork". You will find many enemies on the world o Brataccas, some from the underworld and some constituting the authorities — remember you are a wanted man and every man's hand is turned against you. If that expression makes you wonder whether Kyne might also be spelled "Cain", you're probably right. However, you must go on, seeking the evidence that will clear your name and the problem is — you do not know what form the evidence may take. Therefore, it is impositive that you sample everything, visit every room, carefully weigh your responses to all challenges. Communication with others is in the form of comic-strip balloons. When challenged, your balloon will flip through a choice o responses and you select the one you want by pressing the le t mouse button. Then, get ready to make your move. It is in communication and movement that BRATACCAS displays it’s weakest points: Without an RGB monitor, I doubt anyone will be able to read the tiny type in the balloons; with an RGB it bears looking very closely and squinting. Movement is something else. It is going to seem very imprecise until you get the hang of it, because BRATACCAS uses a routine called "implied action": move toward a doorway and you will go through it; move toward the bag of money and you will pass it by. As explained, the computer samples your action, decides what that action implies and completes the move for you. Movement is not bad, but it will take some practice. The documentation sets the scene of your adventure; profiles your adversaries; instructs you on how to move. But don't look for tips or strategies, they don't exist. The manual is written in a tongue-in-cheek manner, offering only entertainment, and like Kyne you are on your own in a world you never made. After all, isn't that the stuff of good adventures? Mindscape, Inc. 3444 Dundee Rd. Northbrook, III. 60062 Disk $ 49.95 • AC' FUN AND GAMES WITH AMIGA AND WE’LL EVEN SHOW YOU HOW WE DID
IT! Conversation With A Computer is a truly novel piece of software that really shows off Amiga’s special abilities. You’ll carry on an entertaining voice-synthesis conversation with your computer. There are wild graphics routines, colorful screen displays, sound effects and animated objects.; Amiga will challenge you to threes separate SOURCE CODE Conversation With A Computer is 2,000 lines of Microsoft's amazing Amiga Basic. It Is a source code version so you can list the code on your screen or printer. The documentation explains how it all works. It’s a complete programming course for your Amiga. JEWAY SOFTWARE PQ Box 4313, Garden Grove, CA 92642 Phone: (714) 630-3378 CONVERSATION WITH A COMPUTER WITH SOURCE CODE: $ 29.50. Add $ 2.50 postage and handling. California residents add 6% sales tax. Immediate delivery. Requires 512K. DEALER INQUIRIES INVITED What to do? One of the more terrifying aspects of being an editor, is the day you receive completely opposing reviews of a piece of software. Mr. Kauffman had sent me his review of Mindshadow when Mr. Bobo telephoned and said the game was great and he wanted to review it. Now I had a dilemma, which was correct or did they both make valid points. Actualy, I decided to make it easy on myself and hare on you, I decided to run them both and let you judge After all, I am just the editor. CON: Mindshadow from Activision Reviewed by Kelly Kauffman In a desperate attempt to get any kind of program for my new Amiga, I decided I might as well go out and try some of the "New Generation" of graphic adventures. I should have known this program wasn't going to perform very well when I first loaded it up. It’s copy protection scheme makes your drive snarl and shake in ways you never thought it could. Including loud groans and the sound of grinding gears. You may only want to load this game up a maximum of 5 or 6 times, as I don't know what this program could do to your drive in the long run after many loads. Unfortunately, Mindshadow, is a poorly written adventure game. It's plot, however, is good... very good. The premise of the game is you are "Person X." You have amnesia, don't know where you are, don't know who left you there, or why. But that's as far as the imagination goes. The text in the adventure isn't as descriptive as I would have liked it to be, in fact, in some places the text is of no help at all. The only plus for this game are the graphics. The pictures are wonderfully detailed and are very colorful. The characters are very lively and the attention to even the most insignificant details has been given quite extensively. Period. It should be a sin to sell a program like this for the price that is being asked for it. (I paid almost $ 45.00 for it!) It took me about 2 hours of gaming, count'em — 21, to "solve" this mystery, and I am NOT an avid adventurer. When the screen cleared and announced my victory I practically ripped the disk out of the drive and flung it across the room — l thought it was going to say that I was 25% done... or at the VERY least halfway finished. Instead, I got a very blah screen that sums up your adventure... that's it. This came as a shock to me, as I had been spoiled by the impressive graphics throughout the game... l guess I just expected something more than a complete text-screen with a "Press any key to continue” message at the bottom of the screen. When you press a key, you don't get a fanfare of music (in fact, there are NO sound effects, let alone music, in the ENTIRE game), or a graphic celebration... just plain old AmigaDos with the ever familiar "1 " prompt. They did manage to merge the mouse into the game fairly well though. You can type directly from the keyboard "GET SHELL," or, you can point your mouse to the shell, click the left button, and it will be typed automatically for you and be picked up. Some commonly used commands are also listed on the right side of the screen along with some commonly used objects. This allows you to just point to a command, click the button, then point to your "verb," click again, and the command is executed. Unfortunately, these objects and commands do not change as you go through the game. So when your in London, it's useless to still have a hut listed as an object when you are many, many miles away from the hut. This game could be good. IF you found it at a VERY discounted price. (Which means definitely under $ 20.00) But, you would have to be a beginning adventurer, and be interested in some of the graphics capabilities of your machine. It also wouldn't hurt to be very desperate for ANY kind of software for your machine!!! MINDSHADOW opposition view by Erv Bobo PRO: The value of MINDSHADOW lies in the puzzle and the solution — actually a series of puzzles and solutions, nested like boxes within boxes, and the Amiga version is no exception. If you expect some of the whiz-bang graphics and animation of which the Amiga is capable, you will certainly be disappointed. While the graphics are cleaner and more detailed than in versions for other computers, they are far short of Amiga limits. As far as communication with the game is concerned, I have mixed feelings about using a mouse to click on a direction or on key words for actions. While it can sometimes be a faster way of moving, it lacks some of the charm of communication in sentences and phrases (and the MINDSHADOW parser is one of the best, but you will never know that by clicking) and thus gives the game something of a "canned" feeling. Yet for all that, I feel the puzzles of MINDSHADOW are well worth the price of the game and the time spent trying to solve them, for it is a new approach to the classic adventure game and while many of the moves, once the veneer is stripped away, are the moves of classic adventures such as ZORK, this is a positive benefit ratherthan copy-catism. In fact, if our other reviewer did indeed solve the mystery in only two hours, it is probably because he is an experienced adventurer who immediatly recognized that new puzzles could be solved with old tools — eitherthat or he was incredibly lucky. The puzzle is one of identity. Suffering from amnesia, you find yourself on a desert island, and you must try to learn who you are as well as how you came to be there. I am probably not giving too much away in saying that your first puzzle is getting off the island. A careful reading of the packaging tells you that parts of your adventure will occur in some major European cities. To do this, you must do as you have done in all adventures: examine each new scene and each of the parser's replies for clues; pick up what may be picked up and carry it for as long as you can because you never know what may be useful and what may be trash. In time you may use some of these objects as tools or you may barter them for other objects that may seem more useful. And some of them you may never use at all. In construction, MINDSHADOW is also a series of boxes within boxes: the island is comprised of many "rooms” (to use the classic adventure terminology that is a holdover from the time when fantasies took place underground) and the island itself is a room containing these rooms. Leave it and you find yourself in another large room — the sea — that is comprised of smaller rooms. In each case, you must negotiate the small rooms in order to solve the puzzle of the large room which in turn leads you to another large room comprised of small rooms that must be negotiated in order to...Oh, hell, by now you must understand. And the major cities are large rooms, comprised of small rooms and some small rooms have their own puzzles, while others are merely corridors leading to another puzzle. The themes of MINDSHADOW, then, are amnesia and (perhaps) revenge and retribution. There may even be a buried treasure somewhere (at any event, you're going to have to dig. I am still looking for a shovel.) Amnesia and abandonment are valid reasons for the existential flavor that is a mainstay of adventures and they indicate that your character may have a past and a future without needing to take the time to sketch them in. It is a valid device that keeps a new story in a classic framework and it makes a little more sense than the character in ZORK who suddenly finds himself standing before a mailbox near a cottage and who decides to venture underground just forthe hell of it. MINDSHADOW is intelligent, fun and puzzling, with graphic displays there as an aid to recognizing where you have been and what you can do. While it takes but little advantage of the power of the Amiga, if you have not played it before, play it now. AC A Great Pair 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 an 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 Amazing Computing™ your resource to the Commodore Amiga Forth! Part one by Jon Bryan Forth was originally developed as a multi-user, realtime language and operating system for controlling telescopes, at a time when 32K-words was a lot of memory. It has been hammered into its present form by professional programmers, and its speed, compactness, and programming efficiency are not easily matched by any other computer language. Forth was invented about fifteen years ago by Mr. Charles Moore while he was working at Kitt Peak National Observatory in southern Arizona. Mr. Moore was not satisfied with the other programming languages he was using and had gradually evolved a different approach to programming. He considered it a "Fourth-Generation” language, but the computer he was using at the time would only accept five-character file names, so he called his creation "Forth." Word of how the staff at Kitt Peak were raving about this new programming language got around quickly in the international community of astronomers and today many, if not most, of the world's observatories use Forth. Controlling telescopes is not the only application for Forth, however. Over the years the language has been shaped into a very powerful tool for software development of all kinds. Many commercial software packages for the IBM PC and the Macintosh have been created using Forth, and the language continues to grow in popularity. For serious development work on the Amiga, the language of choice is almost certain to be either Forth or C. My opinion is based on the fact that, while the Amiga's operating system and documentation are in C, Forth provides an environment which allows for more rapid development and debugging. While pure high-level Forth may suffer a speed penalty compared with compiled C, it has several advantages. Importantly, Forth is interactive, and that, combined with some of its other features, can result in a considerably shortened development cycle. If speed is really a problem, Forth systems typically include an assembler which can be used for optimization. Forth is an unusual language. It has a number of features which differ both practically and philosophically from other "mainstream" languages. For one thing, Forth is stack-oriented. While other languages are almost certain to have a stack, Forth is the only language which gives the programmer direct control over it. While some people do not consider this a "feature," it does provide a number of direct benefits. Forth is very fast for an "interpreted" language. The disadvantage of stack orientation is greater responsibility is placed on the programmer. Perhaps the most powerful characteristic of Forth is its extensibility. What other languages call functions, procedures, modules, or atoms, Forth programmers call "words." Previously defined words are found in the "dictionary," and new words which are added to the dictionary temporarily become part of the language. In fact, many implementations of Forth allow extensions to be added permanently, and even allow changes to the kernal through a process known as "metacompiling." In order to give you an overall feel for the language before delving further into specifics, I am going to provide an example of Forth programming by illustrating the first stages of designing an application, from the top down. This will be the definition for the highest level word:: ORAL-HYGIENE (--) BRUSH 7FLOSS RINSE; Let's look at each of the words in turn. The: (colon) tells the Forth text interpreter to begin compiling a new word, namely ORAL-HYGIENE. Following the name of the new word is a Forth comment which I have included as an example of standard practice. The parentheses in Forth are equivalent to the * 7 pair in C or Basic's REM statement. A comment in this particular location is known as a "stack picture", and the dashes indicate that ORAL-HYGIENE will neither expect nor leave anything on the stack. In the body of the definition are the three words BRUSH, 7FLOSS, and RINSE which describe the behavior of the new word, followed by a; (semi-colon) which marks the end of the definition. Let's break down, or "factor" in Forth jargon, the word BRUSH. It might be defined like this:: BRUSH (-) TOOTHBRUSH GRASP TOOTHPASTE DISPENSE TEETH CLEANSE EXPECTORATE (or SPIT, if you prefer) TOOTHBRUSH RETURN; We can factor another of these words too, just forfun.
: DISPENSE (~) PICKY? IF BOTTOM ELSE MIDDLE THEN SQUEEZE; If you are not familiar with Forth, the syntax will seem strange to you. It is a consequence of using a stack to pass parameters. The word PICKY? Is a test which will leave a Boolean flag on the stack to be used by IF. If the flag is a logical true, the word BOTTOM will be executed to select which portion of the tube to grip. If the flag is false, the MIDDLE will be Squeezed. Factoring even further, we might get:: PICKY? (-?) PSYCHOLOGICAL PROFILE PICKINESS 110SCALE-OF 6; Which means, if our PICKINESS factor is greater than six on a scale of one to ten, a true flag will be left on the stack. I have made PSYCHOLOGICAL and PROFILE two words since we might also have profiles for other characteristics, like MENTAL or PHYSICAL. PICKINESS provides a further refinement of the search. SCALE-OF is a separate word because I might also want to have a one-to-five scale, or a five-to-twenty scale. The two values preceding it select the lower and upper bounds, causing SCALE-OF to leave a value between one and ten on the stack. The word (greater-than) deserves further elaboration. In Forth, which uses postfix notation, 5 6 is the equivalent of 5 6 in standard, infix notation. The will leave a Boolean flag on the stack depending on the outcome of the test. I do not want to overwhelm you with detail, so let's back up to the word ORAL-HYGIENE and examine the next word in the body,? FLOSS (question-or query-floss). You may be wondering why I used the question mark at the end of PICKY?, while it's at the beginning of? FLOSS. Nothing in Forth enforces any kind of naming convention (you can use any ASCII character except "null'' in a name), but there is some standard practice. In this instance I'm trying to convey something about the characteristics of the words. PICKY? Leaves a flag on the stack, while? FLOSS tests something before performing an action. This might be its definition::? FLOSS («) LAZY? NOT IF FLOSS THEN; I have just introduced another Forth word, NOT, which inverts the logic of a flag on the top of the stack. If LAZY? Leaves a true flag on the stack, NOT will change it to false, and FLOSS wont be executed. I'll leave the definition of RINSE and the further refinement of the hypothetical definitions I've provided to you. I hope you're getting a feel for how programs are written in Forth and won't let anyone tell you that it's unreadable. One of the most attractive features of the language is its ability to express abstract concepts, but it also excels at low-level tasks like toggling bits on an I O port. It's at the lowest levels that Forth may become cryptic. It's made up of many simple words, and one of the hardest parts of learning the language is memorizing the "primitives." In the next installment I'll be going into much greater detail and should be able to provide some working examples. I've just received a prerelease version of UBZ Forth, and have been promised the working version very soon. Creative Solutions, which produces MacForth for the Macintosh, says that they'll release Multi-Forth for the Amiga by the end of March. I expect to be critiquing those implementations which I'm able to acquire in order to provide some guidance for those of you who wish to use Forth on your Amiga. I won't pretend to be a gum. Because I want to provide a valuable learning experience for as many people as possible, your suggestions, comments, and code are most welcome. Help me to remember the problems I had learning Forth, and I'll help you to overcome yours. -AC* In this third part of our Lisp tutorial, we will examine how to write Lisp functions that actually look something like conventional computer programs. Thus, this article will resemble the first chapter in most Pascal, BASIC, or C texts. The Amazing Lisp Tutorial, Part 3 SIMPLE OUTPUT It is often necessary for the computer to get some sort of information to the user. In Lisp, we can use the print function to do this. The print function displays Lisp expressions on the Amiga screen. For example, Input: (print '(this is a test)) (this is a test) Value: (this is a test) It is important to note that print returns the value of its argument. This means that print can be used to speed debugging by printing the intermediate values of a complex expression. To watch how (car (cdr (cdr '(a b c)))) works, we can type Input: (print (car (print (odr (print
(odr (print ’(a b c)))))))) (a be) (be) (c) c Value: c Sometimes, however, it is useful to be able to
display some text on the screen and not just a list or a
symbol. To do this, we only need to put the text in quotation marks and feed it to print. This works because characters within double quotes, called string, evaluate to themselves the same way numbers do. In other words, the value of "Hello, world!" Is simply "Hello, world!", just as the value of 3626475 is 3626475. SIMPLE INPUT Getting information from the user is even easier than output was. The function read takes no arguments and returns whatever is typed on the keyboard. We can combine read and print to create functions that interact with the user. Input: (de get-user-name () (print "Please type yourfirst name.") (read)) Value: get-user-name Input: (get-user-name) "Please type yourfirst name." Dierdre Value: dierdre Input: (get-user-name) "Please type your first name." Erica Value: erica Notice that there is an empty list just before the definition of get-user-name. It is there because the function does not take any arguments at all, so we do not need any symbols in the list of arguments. CONDITIONAL BRANCHING A program can't be very complicated if it always does exactly the same thing. Lisp provides a fairly simple way of branching to different expressions in the middle of a function. The standard way to do this is with cord. Cond takes any number of lists as its arguments. The car of the first list is evaluated, and if its value is anything except nil, the remaining elements of the list are evaluated in sequence and the value of the last oneis returned. If the car of the first list evaluates to nil, the rest of the list is skipped and the car of the second list is examined. This process continues until the car of one of the lists given to cord evaluates to some non-nil value. For example, Input: (de positivep (number) (cord ((greaterp number 0)t) (t nil))) Value: positivep Input: (positivep 10) Value: t Input: (positivep-1) Value: nil Let’s look at the definition of positivep closely. The first and only argument of positivep is stored in the symbol number. Then the cord function checks the car of the list ((greaterp number 0) t). If the number is bigger than 0, cord proceeds to evaluate the next element of the list, t, and returns t. (The opposite of greaterp is the function lessp. Both of these functions are very useful for working with numbers in Lisp.) If the number is less than or equal to 0, cord ignores the rest of the list and examines the car of the second list, (t nil). Because the car of the second list evaluates to t, the remaining part of the list is evaluated and, therefore, cord returns nil. Often, it takes some thinking to fully understand cord so you may want to go over the positivep example again before going on. We can combine this branching technique with our input output functions to create some more complicated functions. As an example, let's make an extension to our get-user-name function that greets the user. We can use cord to have our function greet different people in different ways. Input: (de greet-user (name) (cord ((equal name ’cindy) (print "Hi, Cindy.")) ((equal name 'partha) (print "Good morning, Pat.")) ((equal name briar) (print "How are you, Brian?")) ((equal name ’dierdre) (print "Hello, Dierdre.")) ((equal name 'erica) (print "Hello, Ms. Botella.")) ((equal name'ronald) (print "Hello, Mr. President.")) (t (print "Hello."))) name) Value: greet-user Now we can greet all ourfriends in a unique way. Input: (greet-user’Cindy) "Hi, Cindy." Value: cindy Input: (greet-user’Ronald) "Hello, Mr. President." Value: ronald Input: (greet-user'Mike) "Hello." Value: mike DIRECT BRANCHING, SIMPLE LOOPING, AND LOCAL VARIABLES Sometimes, cord just is not powerful enough. Cond lets us do different things under certain circumstances, but it does not provide an easy way of repeating portions of a function or skipping over parts of an expression. Both of these are usually done with GOTO statements in other languages. Lisp allows us to do branching and hoping with the primitive prog. Prog is generally refered to as the "program feature" of Lisp because it makes Lisp functions look a lot like Pascal and Fortran programs. Prog takes any number of arguments except zero. The first argument must be a list, for the time being we will always use (). The remaining arguments can be any Lisp expressions. These expressions will be evaluated in order and prog returns the value of the last one. For example, Input: (prog () (print 1) (print 2) (Print 3)) 1 2 3 Value: 3 In this simple form, prog seems useless. The power of prog lies in the way the expressions are evaluated. As the above example shows, most function calls are treated normally. However, prog changes its behavior when it comes to an unbound symbol (one without a value). Instead of signalling an error, it remembers where the symbol was found in the list. If it ever encounters the function go with that same symbol as its argument, it goes back to where the symbol was found and evaluates the expressions that follow again. This is pretty complicated. The easiest way to understand prog is to see it at work so let's try a simple example. Input: (prog () (print "Hello.") loop (print "What time is it?") (cord ((equal (read) 'noon) (go loop)) (t (print "It's not noon.")))) "Hello." "What time is it?" Noon "What time is it?" Noon "What time is it?" Midnight "It's not noon." Value: "It's not noon." What happened is fairly clear. Everytime we typed noon, cord evaluated the function call (go loop). This told prog to go back to where it found the symbol loop and start from there. When we typed midnight, however, cord evaluated (print "It's not noon.") and prog treated everything normally. Another useful feature of prog is that we can tell it to stop evaluating its arguments at any time. The function return causes prog to ignore the remaining expressions and return the value of return's argument. If we stuck the expression (return "Let's quit.") between the function call (print "What time is it?") and the cord in our prog, it would do this: "Hello." "What time is it?" Value: "Let's quit." Notice that it never lets us type the time because we skip the entire cord with the return function. Prog has allowed us to write a fairly complicated function, but there are still some fairly fundamental things that we cannot do. For example, so far, we cannot use prog to evaluate an expression exactly 10 times. The reason for this is while we are evaluating the expression, we need to store the number of times we have already evaluated it to know whether to go back and do it again. In most computer languages, we would put this information in a local variable. At the beginning of the program we would assign the variable to the number 0, then each time we evaluated the expression we would increase the variable by 1. When the variable got to 10, we would stop looping and terminate the program. The first argument of prog (the one that has always been () up until now) lets us use variables in Lisp; any symbols in this first list are treated as local variables by prog. If the symbol already had a value, it is tucked away in memory and the symbol is set to nil. After the prog is finished, the old value is retrieved and the symbol is bound to it again. Thus, nothing we do to our local variables has any chance of interfering with the rest of our functions. Now let's write a function that prints "Hello." 10 times. We will need a variable to store the number of times we have printed "Hello." So the first argument of our prog must be something like (counter). The rest is fairly straightforward: Input: (de hello-hello () (prog (counter) (setq counter 0) loop (print "Hello.”) (setq counter (plus counter 1)) (cord ((lessp counter 10) (go loop)) (t (print "All done."))))) Value: hello-hello THE EXPLORER A debug monitor for the AMIGA THE EXPLORER is a learning tool for new AMIGA owners and a debug tool for the program developer. THE EXPLORER Is a machine language monitor similar to the ones you have used on 8-bit machines, but it has some design enhancements that make it more useful. Features: display memory and files in Hex and ASCII, 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, & more! The EXPLORER doesn't force you to enter long commands to perform a function. The 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 can control the display format too, and even display informative messages. No need to spend ten minutes typing that special data structure into memory every time you debug. Just 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 S&H. COD add $ 4. Vlsa MC orders call (612) 871-6283. Money orders or checks to: Interactive Analytic Node 2345 West Medicine Lake Drive Minneapolis Minnesota 55441 MORE POWERFUL CONDITIONALS Functions like equal, greaterp, and lessp are called predicates. Remember, these functions return either t or nil. Cond can be used to branch to different parts of a function, like we did in the above example, but it is only as powerful as the predicates we can use as the first element of each of its arguments. So, before the end of this article, let's look at a few more predicate functions. Cond can be made significantly more powerful with the three functions known as logical predicates: and, or, and not. The function and takes any number of arguments, and will return nil if one of its arguments evaluates to nil. If not, it returns the value of its last argument. The function or also takes any number of arguments. It returns nil only if all of its arguments evaluate to nil. Otherwise, it returns the value of its first non-nil argument. Finally, the function not takes only one argument and returns t if its argument is nil and nil if its argument is any other value. For example, Haven’t You Set Your AMIGA’S Time And Date Once Too Often? Introducing A-TIME A clock calendar card with battery back-up, so you will never have to set the time and date in your AMIGA, EVER AGAIN! • Plugs into the parallel port. • A completely transparent printer port is provided, with total
compatibility to all I O operations. • Battery back-up keeps the clock calendar date valid on power
down. • Custom case with a footprint of only 2'Ai x 7 «" VU" (W x D x
H) in standard AMIGA color. • Leap year capability. • A-TIME package contains: 1-A — TIME clock calendar module'
1-3.5" DS Utilities Disk Operating instructions PRICE *49”
AVAILABLE: NOW Mail check to: AKRON SYSTEMS DEVELOPMENT (ASD) P. 0. BOX 6408 (409] 838-2686 BEAUMONT, TEXAS 77705 include s3.50
for shipping and handling for MCA ISA orders call (409)
833-2686 AMIGA is a trademark of Commodore — Amiga inc. Input:
(andtttt) Value: t Input: (and tt nil ttt) Value: nil Input:
(or nil hilt) Value: t Input: (or nil nil) Value: nil Input:
(not t) Value: nil Input: (not nil) Value: t These three
predicates are useful in cond's because they permit us to
branch only when, say, three different conditions are met, or
when one out of four conditions are met, or when some
condition is not met. This makes cord much more flexible than the IF statement found in many other languages. We have covered a lot this time. The best way to make sure you understand it all is to just practice and practice. We have gone over enough to allow you to write some interesting programs so just let your imagination run wild and see what you can come up with. This article was a little uncomfortable for me to write. What I have presented are the primitives necessary to create functions that look and act like those you might write in BASIC or C (to name a few examples). But Lisp isn't BASIC and Lisp is not C. Lisp has a programming style all its own that looks nothing like that of conventional languages but is arguably far more powerful. Teaching this, however, is a difficult task; difficult enough so that many users get frustrated learning it and decide that Lisp is a useless language. This is unfortunate because Lisp is an excellent language for hobbyists to learn. What I have tried to do is show how you can write useful programs in Lisp so you will not have to spend all your time on the more abstract concepts. Next month, we will begin to delve into real Lisp, that is, Lisp written as Lisp and not as a conventional language. So, my advice is to keep an open mind. Don’t get locked into the prog cord go return technique of programming; be prepared to learn completely new ways of doing things. Most important, however, have fun. • AC* IBM just announced that they will release AmigaDOS forthe
IBM PC. April Fool! Roomers byThe AMIGA I was thinking of doing an entire column of April fools material, but there are so many ‘real* items to write about, I can't afford the space! So the rest of this column is related to the real world of Amiga. No foolin'. The past few columns focused on announcements and new products... as time marches on, more and more rumors are appearing! Of course I try to catch as much as I can... so on to the rumors first: The hottest report comes from the business world, where the Amiga may be about to enter the class of 'business machine'. A couple of hacks at Lotus decided to port a well-known product to the Amiga, just for kicks. They were amazed at how easy the Amiga is to port to, and the program is done already. The same report says the higher-ups are sitting on it until Amiga sales hit 100,000 units. If what I am hearing is correct, Commodore has sold 70,000 units in the US and Canada (January was slow, February picked up again) and the Europeans are climbing the walls waiting to get their hands on the PAL version of the machine. Now we look at Ashton-Tate. A recent article (well, back in January or so) talked about their future. No mention of any Amiga plans, but the picture accompanying the article was of an Ashton-Tate programmer sitting in front of an Amiga! Now I am not one to start any rumors, but... Another big name in IBM-PC databases is porting their product to the Amiga. Expect an announcement soon. An unconfirmed rumor tells of a recent licensing deal between Amiga and AT&T, and that there is a UNIX port going on right now. I am personally skeptical of this. I know that MicroWare has someone porting OS9 to the Amiga (due this month?), it will be interesting to see how that does. Everybody and their dog is announcing peripherals. Hard disks from Tecmar, MicroForge and MicroBotics, memory expansion from those three plus three more. The gotcha is that most were designed according to the 80-pin hardware interface specs that Amiga published back in November, which is not compatible with the 100-pin format they have out now. Nevertheless, the pioneers are pushing ahead with their products. Golden Hawk Technology (Nashua NH) has announced a MIDI interface to compete with the Cherry Lane interface. The hardware software package will be priced less than Cherry Lane's package, and will be available by the end of the month. Cherry Lane, on the other hand, has decided to stop selling to the end user, and instead is selling only to Oems and the like. Last I heard, Electronic Arts has picked up Cherry Lane's Amiga music software and hardware, including MIDI interface. A-Squared Systems (makers of LIVE!) Are rumored to be working on piggyback boards for the system... one to take a standard RGB signal instead of NTSC, another to support 640x400 resolution mode, and a third to handle up to eight cameras. What? Well, I guess it's just a switcher to select one of eight cameras. Security and factory automation come to mind for applications. Are you still using Amiga C, the Lattice C compiler? Many have switched to Aztec's Manx C for the faster compilation and smaller faster code generated. Lattice must be sensitive to this, since the lastest rumors from Lattice is that they are working on an optimizer. I got two different reports about the Transformer Accelerator, the hardware speedup board for MS-DOS emulation. The first one is that it was flat out cancelled, and will be replaced by another speedup board... due out this summer. The second story, which seems more likely, is that Commodore had three simultaneous development efforts in house, and they simply terminated two of them to push the third one out the door sometime this summer. UniPress Emacs is currently one of the most powerful Emacs implementations, and it is being ported to the Amiga. Expect an announcement sometime this summer. TDI (Dallas, TX) is shipping their Modula2 compiler for $ 89.95, complete with a 300-page manual. Aegis is unleashing a line of graphics-oriented products. The first two are Images, a $ 79.95 paint programs, and Animator, a $ 79.95 animation system. The two can be purchased together for $ 139.95. From reports that I have heard, Images blows Deluxe Paint away for features and functionality. And it is not copy protected! Two more products from Aegis: Impact, similar to Microsoft's Chart, and Draw, a CAD package. This package is reported to leave the PC-AT CAD packages wondering what went past them. Speaking of Electronic Arts and Copy Protection... EA has decided, for reasons I won't comment on, that they should provide uncopyprotected backup copies of their programs (only non-games?) To purchasers who promise not to copy them for other people. Uh huh. Last I heard, EA was working on the details of this. A company called Twenty-First Century has a package called DIGI-VIEW that digitizes images into HAM (Hold And Modify, where 4096 colors may be displayed at once) mode. The package will sell for $ 200. The method is to take three pictures with a black and white camera, one each with a red, green and blue filter, then combine the image data. I hear June for a release date. I have also seen some output from another HAM digitizer from a company called NewTek... due out in May and will sell for $ 200. Hmmm. Is this the same as the 21st Century package? Some say yes, others say no. Those folks at Zoxso (Lowell MA), after announcing ZLI, their CLI replacement, announced support for LIVE! In the form of two software packages. One produces HAM images (about 5 per second), the other is an image processing applications package. The HAM software is due 'Real Soon Now', and the image processing package sometime this summer, according to Rich Miner, VP of Technical Development. Two companies have announced expander boards for the Amiga, based on the February March interface specification from Commodore-Amiga. One of these companies plans on creating a LAN (Local Area Network) capable of tying 100 Amigas together. Each Amiga will need a LAN connector card ($ 200), and the 'master* node (or nodes) will need both the card and an expansion interface. The 'master1 node will be able to have up to four off-the-shelf IBM-compatible disk drives on it... sounds interesting. No formal announcement yet, nor release date. We'll keep you posted. Have you seen MetaScope? A nice multi-window debugger for the Amiga from Metadigm, Inc (Irvine, CA). They’ve also got an editor and a tools package, including make, grep, PC file transfers, and more. Metadigm is beta-testing their 68020 version of MetaScope now. The VI.2 software is being leaked out... a preliminary version was shown at the 'World of Commodore' in February on the Amigas there. Among other things, windows no longer hang, the drag bar has been reworked to reduce interlace flicker, MetaComCo has reworked the DOS so that random I O to the disk is faster, and the Execute () call no longer loses 50 bytes of memory. Still does not appear we will see disk caching this release, though. Look for a new version of Pascal, version 1.25, with a new manual and support for calls to the OS routines. Also from MetaComCo is a new version of LISP with support for LIBCALL and EXEC; the manual has been revised and the references to the LISP editor have been removed, since there is no LISP editor. A new version of WACK (the debugger) that knows about CLI processes is also on its way. And there are rumors of a BCPL compiler... Are you interested in APL? Portable Software (Cambridge MA) is thinking about porting their Mac APL, but don't know if there's a demand for it. Call 'em at 617 547-2918 and tell them you want APL! Forget about those MicroForge prices I quoted last month! MicroForge has dropped the prices on their diskdrives. Applied Visions (Medford MA) has announced Future Sound, an audio digitizer, available in May for $ 175, with software. Variable sampling rates up to 28K, which should serve for most purposes except for the toughest audiophile. Commodore is about to announce their own terminal program... as if we needed anotherone! Stay tuned, I have more for next month... • AC* Last month, we discussed C flow-of-control statements. Amazing C Tutorial Part 3 By John Foust This month, we will take a look at the preprocessor, a few new types of variables, and the Unix style of giving input to programs. If you are serious about learning the C language, you should be reading any source code examples you can find. The AMICUS disks are a good source for both simple and complex programs. Reading C is a great way to learn C. Programmers use a dialect of expressions and coding styles. A grasp of this idiom is the essential difference between reading a tutorial as this, and feeling comfortable when programming in C. The preprocessor's purpose can be surmised from it's name — it processes your source code before it is scanned by the compiler. It does not check for C grammar mistakes, as you might guess, but can instead perform several changes to your source code, before it is sent to the compiler itself. If you've read C source code, you've encountered lines that begin with '. This character, called the 'sharp' or 'pound sign', signals the start of a preprocessor command. A common preprocessor command is include': * a simple program* include "stdio. h" main () printffHello WorldAn");} As many other languages and assemblers, 'include' is a directive to scan the text in the filename specified, as if it were part of our program. The most often used 'include' file in C is "stdio. h". It is a part of every C compiler package sold today, along with a dozen other 'include' files. For compilers for the Amiga, there are dozens more 'include' files that describe the Amiga operating system functions and variables. There is nothing magic about the 'include' files that come with a commercial C compiler. They are readable source texts that declare variables and functions used by the compiler's implementation of standard C functions. More on this later. Another common preprocessor directive is ’ define': * a simple program* include "stdio. h" define YEAR 1986 main () printffHello WorldAn"); printffThe year is %dAn", YEAR);} The output of this program would be "Hello World." And 'The year is 1986.", on separate lines. A ’ define' directive replaces a symbol, such as YEAR, with a replacement text, such as 1986. It is composed of several parts. First, the define' itself, followed by some white space (spaces or Tabs), and then a symbol, more white space, and then an arbitrary replacement text. This is similar to a word processor's search and replace function. As the compiler scans your program, it replaces any occurrences of define' symbols you have defined with the corresponding replacement text. In this way, you can make a program easier to change and modify. If the program above contained several more lines such as: printffThe year is %d. n",1986); a programmer in 1987 would have to change every 1986 to 1987, in an editor, to bring the program up to date. If the programmer would have used a define' symbol instead of the explicit constant '1986' in the program, the future programmer would only have to change the single define YEAR 1986' to def ine YEAR 1987. If a program had several dozen constants, you can see the benefits of define' directives. THE AMIGA PERSONAL COMPUTER. UNSPEAKABLY ADVANCED. UTTERLYAFFORDABLE. CALL TODAY! Note that the replacement text is arbitrary. A set of define's can make a C program look like a Pascal program: r a proper C program *1 define BEGIN define END} define PROCEDURE int defineWRITEprintf PROCEDURE mull (a, b) BEGIN WRITE("Oh! Pascal"); END Although the above examples used only capital letters for the symbol, lowercase letters could be used for symbols as well. Most programmers will enter define' symbols in capitals for clarity. Otherwise, a reader might confuse the symbol for a function or variable name. Of course, some programmers set out to do just that. There is an annual, worldwide contest for writing the most obfuscated C program. Most entries depend on uses and abuses of the preprocessor. Again, note that the symbol is not a variable. The symbol is not part of the executable program, in any sense. It serves a purpose in the time before the compilation of a program to machine code. Remember, it is only a text substitution performed before compilation, by the preprocessor. To extend the usefulness of define' symbols, the symbol can take several arguments, and each of these will be substituted in the replacement text. For example: * a simple macro* define SUM(A, B)((A) + (B)) SUM appears to be a function, on the surface. However, it is only an artifice of the preprocessor. If a program had a line such as: x = SUM(3,8); then the variable 'x' would take on the value '11'. If we could view our source text after it left the preprocessor, and before it was compiled, it would appear as: x = ((3) + (8)): The expression'((3) + (8))' is composed of constants, so the compiler will evaluate the expression, and generate machine code to move the value '11' into the variable called 'x'. Macro define' directives can make a program faster, since some simple functions can be replaced by macros. Calling a function — any function — implies a certain amount of bookkeeping within the machine language of the program. Inline macro expansions, such as the ’SUM()' macro above, could replace a function called ’sum ()’, in many situations. There is another family of preprocessor directives. Among these are ’ if, else', and endif. These control the text sent to the preprocessor and compiler. An example: r commenting out sections * r of a program with if * define NOMESS 1 main () printffLook, Ma! n"); if NOMESS prints ("No mess! n); else printffNo more! n); endif} When if is reached, the rest of the line is evaluated as a constant expression. If the expression is nonzero, (C's notion of 'truth'.) then the program text up until the else' is sent to the preprocessor. The message "No mess!" Is printed in this example. If the expression is zero, such as if we had a line: define NOMESS 0 then the message "No more!" Would have been printed. The else' is not required, so you could have a block of code surrounded by if NOMESS' and endif. Depending on the state of NOMESS, the code would be compiled or ignored. There is no way to set NOMESS so that both "No mess!” and "No more!" Will be printed._ YET ANOTHER UNFAIR ADVANTAGE. Although you haven't had your Amiga for very long, you may find that you need a more powerful line interpreter. Consider these features: Pipe. Search paths User definable command-line editing Definable function keys Unix-like wildcards More versitile redirections Command aliases Built in commands Command history All available now, at a reasonable price, from z o x s o THE AMIGA TOOLSMITHS. RO. Box 283. Lowell MA, 0I853-0283 USA Unix s a trademark of AT&T Amiga is a trademark of Commodore Amiga Inc This construct is commonly used to turn sections of code into comments. If a section of code was surrounded by ifdef FOOIE' and endif, and FOOTE was not defined anywhere before this section of program, then the code wouldn't be compiled. This is better than surrounding a section of code with T and 'Y, the C comment markers. The latest standard for C states that comments do not nest. If the code to be commented contains comments itself, the first 'Y in that code will match the *' meant to start the commented section, thus disrupting your plans. Pointers A rather important aspect of C has been left out, so far. If you know Pascal well, you have used pointers. In Pascal, 'A' (the up-arrow, or caret) is used to denote a pointer. A pointer is a data object, just as 'int' and 'char1. A pointer is an object which contains the address where another object is stored. If you only know BASIC or FORTRAN, the concept of 'pointer* is probably new. Imagine all the bytes in the computer's memory. Each has an address, a number, from zero to a large number, similar to a street address. Pointers are variables that can store addresses of objects. Any object in memory has an address. What use is a pointer? With a pointer, you can refer to objects indirectly. For example, the first argument to the 'printfO' function is a pointer to a 'char' object. Although we enter it as prints ("This text n");', the "This text n" is stored in the data section of the program, and a pointer to that text is passed to the 'printfO' subroutine. To print 'This text n", we could have said: r using a pointerto text 7 include "stdio. h" main () char*here; here ='This text n"; prints (here);} with the same result. The variable 'here' is a pointer to 'char'. It is declared with a '*' before the name of the variable. The '*' indicates that 'here' is not a 'char' variable, but a variable which can store the address of a 'char'. This example also introduces the C style of storing strings. A string of text is terminated with a zero, so the string "This text n" takes up 11 bytes in memory, ten for the text and the newline, and one for the zero, marking the end of the string. This is how 'printfO' knows about the end of a string: when it finds a zero byte, it knows the string is finished, and it stops printing. This attention to the details of the internal workings of the machine is typical of C. In most languages, you don't know how the computer represents text strings. Most often, you don't need to know, but in C, you can see everything. Just as all C objects, pointers can be grouped in arrays. To declare an array of pointers to 'char' called 'there', with four elements numbered zero to three: char*there[4j; Later, you could initialize each of the pointers: therejO] ='Text zero”; there[1] = "Text one"; there[2]='Text two"; there[2]=thereto]; prints (there[2j): But would be printed in this example? Both ’thereto]' and 'there[2j' point to the same text, so "Text zero" would be printed._ If you come from the BASIC world, please note that no additional memory space is allocated for a pointer to 'char*, beyond the space required to store the pointer. In the example above, the strings "Text zero" and "Text one" would be stored in memory at compile time, in an unchanging location. Only the pointers know that there is data there. In BASIC, the statement THERE$ [2] = THERE$ [0]' would make an extra copy of 'THERE$ [0]‘ in memory, stored under the name 'THERE$ [2j'. If string 'THERE$ [0]' were to change later in that BASIC program, string ’THERE$ [2] ’ would not be affected — it would still print as "Text zero". In C, ’there[2]' points to the same text as ’therejO]', so if 1here[0]' changes, then ’there[2]' only appears to change, too, since both pointers point to the same spot. The text "Text two" is lost forever, since the only object that knew about it is now pointing somewhere else. If you do not understand this, read it again, and draw a picture. This is different from most computer languages, which hide the details of data from the user. C does not. You get exactly what you ask for. While C string manipulation might seem strange at first, it gets easier. Most C compilers have a full compliment of standard string manipulation functions that make string work easier. Pointer types exist for all types of C objects, including functions. The ability to indirectly access functions in this fashion is very powerful. It is akin to executing the contents of a variable in BASIC. I can remember a BASIC program where I had a string that could contain "ABS", and I wanted to execute the ABS() absolute value function when it did. The only way to do something close was to use a long series of IF... THEN statements, each acting on a specific variable. It was clumsy at best. If I had only known C back then... Command line arguments So far, you haven't had much exposure to methods of sending commands to C programs. Because C has been shaped by the Unix operating system, it has a bias towards a command line oriented operating system. The AmigaDOS CLI is a command line interface. At the operating system prompt, you type the name of a program (such as DELETE) followed by a series of arguments, such as file names.__ These arguments are available to your program, if you desire. When your program starts, the operating system will provide two pieces of information. The first is an integer, the number of command line arguments typed on the command line. If you typed "DELETE AMY.TXT CIS.DOC", then the integer — called 'arge' — would be 3. The second is a pointer to an array of pointers to characters. It is called 'argv'. These 'argvQ' pointers point at strings containing each of the words from the command line, one per pointer. This involves two levels of indirection, since 'argv' points to an array of pointers, and 'argvQ' refers to the array itself, while *argv[1]' is just a pointer to 'char'. Multiple levels of pointers are not uncommon in C. The pointer array would have elements pointing to the character strings "DELETE", "AMY.TXT" and "CIS.DOC”. 'argv[1]' points to "AMY.TXT’. It turns out "DELETE" might be replaced by "C", which is a problem with AmigaDOS and or the Lattice compiler. By convention, it should be "DELETE". Be careful! Remember that C arrays start with the zeroth element, 'arge' is a count of the number of command line arguments, not the highest numbered 'argvQ' array element. You cannot access ’argvjarge]', since there are only 'arge-1' command line arguments. The first argument, the program name, is stored in argv[0]. Also, 'arge' and 'argv' must be declared properly, as arguments of the 'mainQ' function. For example: r program to print * the command line * arguments 7 include"stdio. h" main(argc.argv) int argo;
char*argvO; int i; for(i=1;i argo;i++) prints ("argv[%d] is
%s n”, i, argv[i]);} An Amiga-specific note; if you compile
this C program, and create an icon for it, and double-click
that icon from the Workbench, the 'arge' variable will be set
to zero. After all, there were no command line arguments. However, Workbench has something similar to 'arge' and 'argv', so icon-based programs can accept input in a similar fashion. The declaration of 'argv' says "there exists a variable 'argv' which is a pointer to an array of pointers to ’char"’. It is interesting that 'argv' could be declared in another way: char**argv; which means that 'argv' is a pointer to a pointer to 'char'. This is the same as a pointer to an array of pointers to 'char*, for most purposes. Next time, we'll look at some Amiga-specific functions for accessing Intuition and AmigaDOS. • AC* AMIGA USERS: FIRE YOUR EDITOR. And put Microsmiths* TxEd to use for you The Tfext Editor that should have come with your Amiga is now available. • Uses mouse and menus • Fast display and compact code • Visible highlighting of cut and paste • Multiple windows • Edits IBM text files • Easy to learn, use menus for on line help! Designed by C. Heath of Microsmiths to meet the needs of programmers. Find out why four out of five Amiga programmers prefer TxEd over any other editor available for the Amiga, regardless of price. Lb order, send $ 39.95 in check or money order plus $ 250 postage and handling to: Microsmiths’ TxEd, P.O. Box 561, Cambridge, MA 02140. TU.: (617) 576-2678. Massachusetts residents add 5% ales tax. Amiga is a trademark of Commodore-Amiga, Inc. Dealer inquiries invited. DeluxeDraw! O byRickWirch DeluxeDraw is a drawing program with many features found only in more expensive drawing programs. It saves pictures or brushes in the format used by BASIC for Bobs and Vsprites. One of the advantages of this program over other drawing programs is its ability to choose high or low resolution. You may choose the number of bit planes, thus controlling the total number of colors available. It is written in AmigaBasic and requires 512K bytes of memory. Deluxe Draw demonstrates many advanced uses of Amiga Basic, including using functions from the Amiga operating system libraries. Here is a a short description of the program's modes, and an explanation of the icons on the screen. The program listing follows on page?????. This program can be found on AMICUS PDS disk number????. The number of available drawing colors is controlled by the number of bit planes selected when the program starts. Enter 5 for 32 colors, 4 for sixteen colors, 3 for eight colors, or 2 for four colors. The leftmost column of 4,8,16, or 32 boxes is used to select the currentforeground and background colors. The foreground color is surrounded by a white highlight, the background color is the previous foreground color. The foreground background color pair are displayed in the lowest box in the second column. The rightmost column is used to select the drawing styles and to toggle options on or off. Each selected style or option is surrounded by a white highlight box. To select an option, click once on the that box. The first four boxes, with trapezoids inside, are different brush widths, from a single-pixel fine brush to a fat eight-pixel-wide brush. The fifth box, with a brush icon inside, is used to select a custom brush. This selection lets you frame an area of your picture and use that area as a brush. Move the mouse to the upper-left-hand corner of the area for the new brush, and click and hold the left mouse button. Move the mouse to the lower-right-hand comer, and release the button. If a brush has been selected, click this box again to discard the brush, and to select another. The sixth box has an icon of rays radiating from a point. It is used to draw multiple lines. Select a center point for the lines with the mouse by clicking once in a spot in the drawing area. Lines are drawn from the point where the mouse button is first pressed to the current mouse position as long as the button is held down. The seventh icon is a tipped-over paint can. This selection is used to flood fill an area with the current foreground color. The area to be filled is that area with all adjacent pixels that have the same color as the one where the mouse button was clicked. Note that this function uses the Amiga graphics library "Flood" call, instead of the corresponding Amiga Basic function. The Amiga graphics function operates as one would expect — a marked area is filled with a color. The eighth selection is for sizable circles. A circle outline is rubber-banded between the center where the button is first pressed. When the button is released, a circle is drawn at that size and location. Its radius is the distance between that center and the current mouse position. The ninth box has rectangle inside. This is the sizable rectangle selection. A rectangle is rubber banded between the point where the button is first pressed and the point where you let up on the button. The rectangle is then drawn in the current foreground color. The tenth icon with a single line is the line selection icon. It draws a line between the point where the mouse button is first pressed and the point where it is released. The eleventh box has a T inside. This denotes the text selection. Simply click the mouse button where text is to be printed, and type the text at the keyboard. Note that the text will be printed with the current foreground and background colors. The twelfth box which has three horizontal bars in it denotes the red, green, and blue sliders. Click this box to adjust the currently selected drawing color. A window with three sliders will appear. These sliders are used to precisely select the amount of red, green, and blue in the current foreground color. The thirteenth box, with a checkerboard pattern inside, is used to toggle between checker-fill and solid modes. This controls whether flood fill, lines, rays, and the various width brushes paint in solids or checks. The fourteenth box with multiple vertical stripes of color is used to turn on or off the color cycle mode. The colors between the foreground and background color are rotated in a cyclical manner. The fifteenth and last selectable box selects cycle draw. When this is turned on the current foreground color is rotated through the colors between the foreground and background colors displayed in the last box. DeluxeDraw • ByRickWirch This program is available on disk from the
AMICUS Public Domain Library Allocate enough memory to save
entire screen into an array DEF FNArraySizeS =
3+INT((BobRight+16) 16)*(BobBottom+1)*Depth BobRight = 600:
BobBottom = 187: Depth = 4 SizeS = FNArraySizeS * 2 IF FRE(0)
AND FRE(-1) SizeS THEN PRINT “Not enough memory“: END IF
FRE(0) SizeS THEN CLEAR, SizeS+24000 DEF FNArraySizeS =
3+INT((BobRight+16) 16)*(BobBottom+1)*Depth END IF DECLARE
FUNCTION SetDrMd LIBRARY ‘ Set the Drawing Mode DECLARE
FUNCTION Move LIBRARY ‘ Move the Plotting Position DECLARE
FUNCTION Flood LIBRARY 'Flood Fill an Area DEFINT a-z Depth = 0
WHILE Depth 2 OR Depth 5 INPUT ‘Select number of bit planes
(2-5) Depth WEND RES=0 IF Depth=5 THEN RES=311 ELSE WHILE RES=0
INPUT “Select resolution (Hi Lo) “, C$ C$ =LEFT$ (C$,1) IF C$ =“H“
OR C$ ="h” THEN RES=631 IF C$ =“L“ OR C$ =T THEN RES=311 WEND END
IF DIM PAT1%(1), PAT2%(1), PCan! (31,3): DIM BobArray (1)
RES2=RES 320 'For hires aspect ratio tor circles IF RES 400
THEN sermode = 1 ELSE sermode = 2 SCREEN 1, sermode*320,200,
Depth, sermode CLS WINDOW 2,“DeluxeDraw by Rick
Wirch“, (0,0)-(RES,186),0,1 WINDOW OUTPUT 2 TRU E=-1: FALSE=0
'For convenience IF Depth = 5 THEN COLBOX=6 ELSE COLBOX = 10
FOR l=0 T015: PALETTE 1,6 15,6 15,6 15: NEXT ‘ Set colors tor
Paintbox Pcan! (0,0)= 6 15: Pcan! (0,1)= 6 15: Pcan! (0,2)= 6 15
'Dark grey Pcan! (1,0)= 0 15: Pcan! (1,1)= 0 15: Pcan! (1,2)= 0 15
'Black Pcan! (2,0)=10 15: Pcan! (2,1)=10 15: Pcan! (22)=10 15
'Light grey Pcan! (3,0)=15 15: Pcan! (3,1)=15 15:
Pcan! (3,2)=15 15 'White Pcan! (4,0)=15 15: Pcan! (4,1)= 9 15:
Pcan! (4,2)= 9 15 'Pink Pcan! (5,0)=15 15: Pcan! (5,1)= 6 15:
Pcan! (5,2)= 6 15 'Ught Red Pcan! (6,0)=15 15: Pcan! (6,1)= 2 15:
Pcan! (6,2)= 2 15 'Red Pcan! (7,0)=12 15: Pcan! (7,1)= 0 15:
Pcan! (7,2)= 14 15 'Purple Pcan! (8,0)= 7 15: Pcan! (8,1)=13 15:
Pcan! (8,2)= 15 15 'Light Blue Pcan! (9,0)= 8 15: Pcan! (9,1)=
8 15: Pcan! (9,2)= 15 15 'Med. Blue Pcan! (10,0)=
4 15: PCan! (10,1)= 4 15: PCan! (10,2)=15 15 'Dark Blue
Pcan! (11,0)= 0 15: PCan! (11,1)=14 15: PCan! (11,2)= 13 15 'Aqua
Pcan! (12,0)= 8 15: PCan! (12,1)=12 15: PCan! (12,2)= 8 15 'Light
Green Pcan! (13,0)= 4 15: PCan! (13,1)=12 15: PCan! (13,2)= 4 15
'Med. Green Pcan! (14,0)= 0 15: PCan! (14,1)=15 15: PCan! (14,2)=
0 15 'Dark Green
Pcan! (15,0)=15 15: PCan! (15,1)=15 15: PCan! (15,2)= 2 15 'Yellow
Pcan! (16,0)=0 15: Pcan! (16,1)= 4 15: Pcan! (16,2)= 4 15 'aquas
Pcan! (17,0)=0 15: Pcan! (17,1)= 6 15: Pcan! (17,2)= 6 15
Pcan! (18,0)=0 15: Pcan! (18,1)= 8 15: Pcan! (18,2)= 8 15
Pcan! (19,0)=0 15: Pcan! (19,1)=10 15: Pcanl (19,2)= 10 15
Pcan! (20,0)=0 15: Pcan! (20,1)=12 15: Pcan! (20,2)= 12 15
Pcan! (21,0)=15 15: Pcan! (21,1)=15 15: Pcan! (21(2)= 2 15
*yellows Pcan! (22,0)=15 15: Pcan! (22,1)=15 15: Pcan! (22,2)=
4 15 Pcan! (23,0)=15 15: Pcan! (23,1)=15 15: Pcan! (23,2)= 6 15
Pcan! (24,0)=15 15: Pcan! (24,1)=15 15: Pcan! (24,2)= 8 15
Pcan! (25,0)=15 15: Pcan! (25,1)=15 15: Pcan! (25,2)= 10 15
Pcan! (26,0)=15 15: Pcan! (26,1)=15 15: Pcan! (26,2)= 12 15
Pcan! (27,0)= 2 15: Pcan! (27,1)= 15 15: PCan! (27,2)= 2 15 ’greens
Pcan! (28,0)= 4 15: Pcan! (28,1)= 15 15: PCan! (28,2)= 4 15
Pcan! (29,0)= 6 15: Pcan! (29,1)= 15 15: PCan! (29,2)= 6 15
Pcan! (30,0)= 8 15: Pcan! (30,1)= 15 15: PCan! (30,2)= 8 15
Pcan! (31,0)= 10 15: PCan! (31,1)= 15 15: PCan! (31,2)= 10 15 FOR
l=0 TO 2ADepth-1: PALETTE I, Pcan! (1,0), Pcan! (1,1), Pcan! (
1,2): NEXT LIBRARY "graphics. lforary" RP& = WINDOW(8) ’ Pointer
to the Raster Port W=WINDOW(2): H=WINDOW(3): WWIDTH=W:
HEIGHT=H Make color selection boxes FOR Y=0 TO HEIGHT STEP
COLBOX COL = (Y COLBOX) IF COL = 2ADepth-1 THEN COLOR COL:
LINE(0, Y)-(20, Y+COLBOX)„bf LINE(0, Y)-(20, Y+COLBOX),1, b END IF
NEXT Make style selection boxes COLOR 1: FOR Y=0 T0150 STEP
10 LINE(21, Y)-(45, Y+10)„b: NEXT Show brush widths COLOR 2:
REM OUTLINE 0: LINE(29,1)-(37,9) AREA(26,11): AREA(32,11):
AREA(40,19): AREA(34,19): AREAFILL AREA(24,21): AREA(34,21):
AREA(42,29): AREA(32,29): AREAFILL AREA(22,31): AREA(36,31):
AREA(44,39): AREA(30,39): AREAFILL Custom Brush
LINE(25,44)-(32,46)„bf: LINE(32,42)-(35,48)„bf:
LINE(35,42)-(40,48),3, bf AMIGA OUTLET 3 1 2* Disks (DS.DD)
10 S29.95 l $ 3.15 3 1 2* Disks (DS, DD) Plain Label Brand $ call
CLASSIC IMAGE, INC.-PRESENTS DIABLO — Graphic mind challenge
game $ 29.95 DISK LIBRARY Now you can File, Catalog, Update
Search, Cross Reference. Report $ 49.95 DEALER INQUIRIES INVITED
Amiga System Covers — W mouse LOGO $ 21.95 Amiga Disk Cover -
1010 or 1020 with LOGO $ 7.99 Paper T F-F F White,9 1 2 x
11,201b. 150 S8.99 Paper T F-F F White, 91 2x11. 201b.
1000 $ 22.95 Paper T F-F F l 2*Greenbar. 91 2x1 l,181bl000 $
18.99 Index Cards — T F-F F, 3x5 500 87.95 Rolodex Cards -
T F-F F, 2 1 6x4 500 $ 8.95 Labels — T F-F F, Address 1000 $ 5.00
S&H-S2.50 US S&H-$ 4.50CN Visa US $ *s only Master M. W. RUTH CO.. AMR56 510 Rhode Island Ave. Cherry Hill. NJ 08002 (609) 6 7-2526 We stock what we sell, for fast delivery. Send for FREE CATALOG*All available AMIGA items ATTENTION PROGRAMMERS — Let us take over the headaches of publishing your software. We are looking for all items related to the "AMIGA*. AUG AMIGA USERS' GROUP 68000 You will receive our official newsletter, Evaluations on software and hardware, Advanced updatings, technical information. Problem-solving, program exchange, Buying discount service, and much more. Send $ 18.00 US for Charter Membership to: AMIGA USERS' GROUP 68000 Box 3761 — Attn: Jay Forman Cherry Hill, NJ 08034 (609) 667-2036 » Vlsa Master-Add $ 1.00 Lines radiating from a
point LINE(26,52)-(41,52): LIN E(26,52)-(39,55): LIN E(
26,52)-(36,57) LINE(26,52)-(31,59): PSET(26,52),3 Area
color pattern fill AREA(31,62): AREA(38,65): AREA(31,68):
AREA(24,65): AREAFILL COLOR 3: AREA(39,65): AREA(38,69):
AREA(40,69): AREAFILL Sizeable circle COLOR 2:
CIRCLE(33,75),4: PSET(33,75),3 1 Sizeable rectangle
LINE(25,82)-(40,88)„b: PSET(25,82),3: PSET(40,88),3 '
Moveable line LINE(26,95)-(39,95): PSET(25,95),3:
PSET(40,95),3 Text onto bit map CALL Move&(RP&, 29,108):
PRINT T; Adjust a color LINE(23,112)-(43,114),3, bf:
LINE(23,112)-(43,114),1, b LINE(23,114)-(43,116),3, bf:
LINE(23,114H43,116),1, b LINE(23,116)-(43,118),3, bf: LIN
E(23,116)-(43,118),1, b • Set reset pattern PAT 1 %(0)=&H TIFF: PAT1%(1)=&HFFFF
PAT2%(0)=&HAAAA: PAT2%(1)=&H5555 PATTERN, PAT2% COLOR 1,2:
LINE(22,121)-(44,129)„bf PATTERN, PAT1%: Dotty= FALSE Color
cycle FOR l=3 T013: COUI: IF COL 2ADepth-1 THEN COUO COLOR
COL: LINE(16+2*I,131)-(17+2*I,139): NEXT COLOR 1:
LINE(44,131)-(44,139) Cycle Draw FOR b1 TO 4: COUI: IF COL
2ADepth-1 THEN COUO COLOR COL: LINE(19+4*l,143)-(23+4*l,147):
LINE(20+4*l,143)-(24+4*1,147) LINE(21+4*1,143)-(25+4*l,147):
LINE(22+4*l,143)-(26+4*l,147) NEXT Display Foreground and
Background Colors LINE(22,151H33,159), COL, bf:
LINE(34,151H44,159), LASTCOLOR, bf Menu items MENU 1,0,1,
"Project* MENU 1,1,1, "New Painting" MENU 1,2,1, "Load Brush "
MENU 1,3,1, "Load Painting" MENU 1,4,1, "Save Brush " MENU
1,5,1, "Save Painting" MENU 1,6,1, "Quit " MENU 2,0,0,"": MENU
3,0,0,"" MENU 4,0,0,"" ' Initialize starting values TextX = 47:
TextY = 8: NOBRUSH = TRUE: AdjOff = TRUE ’ Mode Booleans CycCI
= FALSE: CycDr = FALSE: ESTOP = 2ADepth — 4 ’ Cycling info COL
= 1: LASTCOLOR = 0: MaxColor=2ADepth -1 ’ Color info Style = 2:
DY = Style -1: DX=2 * DY * RES2 ’ Style info GOSUB InitRle:
GOSUB ResSel I = MOUSE(O): X = MOUSE(1): V = MOUSE(2): Main
loop — always return here or at next statement Main: WHILE loO:
I = MOUSE(O): WEND Main2: I = MOUSE(0): X = MOUSE(1): V =
MOUSE(2): Y=Y-1 ’Fix V to align better with pointer IF MENU(0)
THEN ON MENU(1) GOSUB NewPic, OpenBrush, Openfile,
WriteBrush.Writefile, Quit IF CycCI THEN Cycle the colors J =
(J +1): IF J COLEnd THEN J = COLStart FOR l=COLStart TO
COLEnd:PALETTE ((l+J) MOD Cspan)+COLStart,
Pcanl (l,0), PCanl (l,1), Pcanl (l,2): NEXT END IF IF CycDr THEN ’
Cycle the drawing color J = (J +1): IF J COLEnd THEN J =
COLStart COLOR J END IF IF X 0 OR X WWIDTH OR V 0 OR V HEIGHT
GOTO Main2 IF X 46 THEN Paint in various Styles IF Style =4
THEN GOSUB Nbrush ELSE ON Style-4 GOSUB
Brush.Dlines.DFill.DCircle.DBox.Aline.Dtext. AdjColor END IF
GOTO Main2 END IF Restore selection area ResSel: Restore
white borders for items selected
LINE(0, COLBOX*COL)-(20, COLBOX*(COL+1)),3, b IF COL=3 THEN
LINE(1, COLBOXtCOL+1H19, COLBOX*(COL+1)-1),1, b IF Style 0 THEN
LINE(21,10*(Style-1)H45,10*Style),3, b IF Dotty THEN
LINE(21,120)-(45,130),3, b IF CycDr THEN
LINE(21,140)-(45,150),3, b LINE(22,151) — (33,159), COL, bf:
LINE(34,151)-(44,159), LASTCOLOR, bf COLOR COL, LASTCOLOR RETURN
' Various brush widths Nbrush: IFI = 0THEN LEFT = 47+ DX: IF
X LEFT THEN X=LEFT TOP=0 + DY: IF YcTOP THEN Y=TOP BOTTOM =
HEIGHT-DY-1: IF V BOTTOM THEN Y=BOTTOM RIGHT=WWIDTH-DX-1: IF
X RIGHT THEN X=RIGHT X1=X: Y1=Y ELSE IF X LEFT THEN X=LEFT
IFY TOPTHEN Y=TOP IF V BOTTOM THEN Y=BOTTOM IF X RIGHT THEN
X=RIGHT IF X+DX 46 THEN AREA(X1-DX, Y1+DY): AREA(X1+DX, Y1-DY):
AREA(X+DX, Y-D Y): AREA(X-DX, Y+DY): AREAFILL X1= X: Y1=Y:
l=MOUSE(0): X=MOUSE(1): Y=MOUSE(2): Y=Y-1: END IF RETURN 1
Select Color IF I = 0 OR I = -1 THEN GOTO Main2 IF X 21 THEN
GOSUB SelColor: GOTO Main2 ’Color style selection • Erase Clear Save Load Exit Exit Select style IF V 120 THEN
GOSUB SetStyle: GOTO Main2 ’ set reset pattern IF V 130 THEN
GOSUB PatSet: GOTO Main cycle the colors IF V 140 THEN GOSUB
CycCol: GOTO Main cycle draw IF V 150 THEN GOSUB CycDraw:
GOTO Main GOTO Main — Subroutines • Adjust the Red, Green, and Blue values for a
color Toggle Color Adjuster on AdjColor: IFAdjOffTHEN
BobRight = 223: BobBottom = 30 Size& = FNArraySize& 2: DIM
SAVCOL&(Size&) GET (58f50H281,80)t SAVCOL& GOSUB ColReq AdjOff
= FALSE END IF ' If on end of slider, track with mouse, else
move by IF V 51 AND V 61 AND loO THEN Gun=0 IF V 61 AND V 71
AND loO THEN Gun=1 IF V 71 AND V 81 AND loO THEN Gun=2 GOSUB
Slider RETURN Slider: TopS = Gun110 + 52: Bottoms = Gun*10 + 58
Slide = Pcan!(COL, Gun)*15*14 + 60 WHILE loO 'Move slider to
follow mouse G1=(Slide-59) 4 IF X Slide THEN
LINE(60, TopS) — (Slide, BottomS),3, bf IF X Slide THEN
LINE(Slide, TopS) — (270, BottomS)l0, bf Pcanl(COL, Gun)=G1 15 IF
Gun=0 THEN RED = G1 IF Gun=1 THEN GRN = G1 IF Gun=2 THEN BLU =
G1 Sude=X IF Slide 61 THEN Slide = 61 IF Slide 269 THEN
Slide = 269 PALETTE COL, RED 15, GRN 15, BLU 15 hMOUSE(O):
X=MOUSE(1): Y=MOUSE(2) FutureSound... Record! WEND RETURN ColReq: LINE (58,50)-(281,80),2, bf CALL Move&(RP&, 273,58): PRINT "FT CALL Move&(RP&, 273,68): PRINT "G" CALL Move&(RP&, 273,78) PRINT "B" l= MOUSE(O): X= MOUSE(1): Y= MOUSE(2) RED = Pcan!(COL,0)*15: GRN = Pcan!(COL,1)*15: BLU = Pcan!(COL,2)*15 LINE(58,50)-(271,60),1, b 'Box for R slider LINE(60,52)-(RED*14+60,58),3, bf: LINE(RED 14+61,52)-(270,58),0, bf LINE(58,60)-(271,70),1, b 'Box for G slider LINE(60,62)-(GRN*14+60,68),3, bf: UNE(GRN*14+61,62)-(270,68),0, bf LINE(58,70)-(271,80),1, b 'Box for B slider LIN E(60,72)-(BLU*14+60,78),3, bf: LINE(BLU 14+61,72)-(270,78),0, bf RETURN Applied Visions, 15 Oak Ridge Road, Medford, MA 02155 (617) 488-3602 At last, you can take full advantage of the sound capabilities of your Amiga. Applied Visions announces FutureSound, a digital sound recorder for the Amiga personal computer. With FutureSound, anyone can create the spectacular sound effects that makes your Amiga stand out from you to record any sound, any musical instrument, any voice, and use these recordings to add instruments to music packages, create realistic sound effects for your programs or add true voices to your applications. Multitrack recording and editing is provided as well as stereo playback. Sounds can be easily accessed from "C" or BASIC. FutureSound comes complete with recorder, cables, microphone and software — all for only $ 175. Available from your Amiga dealer or directly from us. Order now and find out just how creative you and your Amiga can be! WELCOME TO CANADA! ‘Software Publishers • Peripheral Manufacturers • Hardware Developers Be Represented by Canadas Premier
Distributor of Amiga support products PHASE 4 DISTRIBUTORS INC.
HEAD OFFICE: 7157 Fisher Road South East (403) 252-0911 Calgary, Alberta Canada T2H OW5
CAVALRY-TORONTO-VANCOUVER-ST.JOHNS ATTENTION: CANADIAN
DEALERS CALL TOLL FREE 1-800-661-8358 FOR THE LATEST
AMIGA 128 UPDATES or (403)-258-0844 for our Dealer BBS '
Custom Brush Brush: IF NOBRUSH THEN GOSUB NewBrush IFI =
0THEN PUT(X, Y), BobArray, XOR: PUT(X, Y), BobArray, XOR ELSE
PUT(X, Y), BobAnray, PSET END IF RETURN NewBrush: IF I=0 OR X
47 THEN RETURN X1=X: Y1=Y: x2=X: y2=Y: CALL SetDrMd&(
RP&, 2) WHILE loO LINE(X1, Y1)-(x2, y2)„b: LINE(X1
, Y1)-(x2, y2)„b x2=X: y2=Y bMOUSE(O): X=MOUSE(1):
Y=MOUSE(2): Y=Y-1: IFX 477HEN X=47 WEND CALL SetDrMd&(RP&,
1) NOBRUSH = FALSE ERASE BobArray BobRight = x2-X1:
BobBottom = y2-Y1 ArraySize&=FNArraySize& DIM
BobArray (ArraySize&) GET (X1, Y1)-(x2, y2), BobArray RETURN 1
Area color pattern fill. Will not fill over a previously 1
pattern-filled area. Line at X=46 keeps fill in working '
portion of screen and prevents bleeding into adjoining
areas Dfill: IF 1=0 THEN RETURN WHILE loO: bMOUSE(O): WEND
IF COU1 OR COU3 THEN LINE(46,0)-(46,187),2 CALL FkzxJ&(
RP&.1.X.Y) IF COU1 OR COL=3 THEN LINE(46,0)-(46,187),0
RETURN • Variable sized circle. RES2 handles the x-y aspect ration for
high res screens Dcircle: IFI=0THEN RETURN X1=X: Y1=Y: x2=X:
y2=Y: R2=0: R=0: CALL SetDrMd&(RP&, 2) WHILE loO R=SQR(((X1
-X) RES2) A2+(Y 1 -Y) A2) IF X1-R RES2 47 THEN R=(X1-47) RES2
left limit of circle CIRCLE(X1, Y1), R: CIRCLE(X1, Y1), R
x2=X: y2=Y: R2=R bMOUSE(O): X=MOUSE(1): Y=MOUSE(2): Y=Y-1: IF
X 47 THEN X=47 WEND CALL SetDrMd&(RP&, 1): CIRCLE(X1, Y1), R2
RETURN 1 Sizeable rectangle Dbox: IFI = 0THEN RETURN X1=X:
Y1=Y: x2=X: y2=Y: CALL SetDrMd&(RP&, 2) WHILE loO LIN E(X1, Y1
)-(x2, y2)., b: LINE(X1, Y1)-(x2, y2)„b x2=X: y2=Y bMOUSE(O):
X=MOUSE(1): Y=MOUSE(2): Y=Y-1: IF X 47 THEN X=47 WEND CALL
SetDrMd&(RP&, 1): LINE(X1, Y1)-(x2, y2)„b RETURN 1 Clear the
Screen NewPic: Prompt$ =" Press Return to New" CANCEUFALSE:
GOSUB GetName' get a filename IF CANCEL THEN RETURN FOR X=0 TO
HEIGHT 2 'Add some pizazz to the dear LINE(47+X,1
+X) — (WWIDTH-X-1, HEIGHT-X),3, b LINE(46+X, X) — (WWIDTH-X, H
EIGHT-X),0, b NEXT GOSUB ResSel RETURN Save info 1 PENDING is
used to restore screen if window is resized NOFILE is used in
checking if the file already exists 1 CANCEL is set if the user
cancels the save operation 1 OK=1 if the file already exists,
=2 if OK to replace it * PENDING=3: NOFILE=FALSE: CANCEL=FALSE: OK=0 1 Load disk file 1
PENDING=4: NOFILE=FALSE: CANCEL=FALSE File name requestor
routine. We'll be looking for mouse clicks as well as
character input, so use GET versus INPUT to receive the file
name. GetName: BobRight = 190: BobBottom = 80 Size&=FNArraySize& 2 DIM SavReq&(Size&) GET(50,16)-(240,96), SavReq& FOR l=0 TO 40 'Pop out the requestor box LINE(90-l,56-l)-(200+l,56+l),2, b NEXT LINE(50,16)-(240,96),3, b COLOR 1,2: CALL Move&(RP&,53,35): PRINT Prompt$; LINE(85,50)-(202,62),3, b This little box is the "cursor", in yellow CURS=88: LINE(CURS,52) — (CURS+7,60),3, bf LINE(166,74)-(219,86),3, b COLOR 3,1: CALL Move&(RP&, 169,83): PRINT "Cancel"; Allowable file names (change it to suit your taste): First character must be a letter Remaining chars may be letters, numbers or. Or — Maximum of 13 chars No two. Or — may be adjoining No embedded blanks allowed * C$ =INKEY$: WHILE C$ o“: C$ =INKEY$: WEND 'Clear any queued input nieName$ ='“ Loop: C$ =INKEY$: l=MOUSE(0): X=MOUSE(1): Y=MOUSE(2) IF loO THEN WHILE k 0: bMOUSE(O): X=MOUSE(1): Y=MOUSE(2): WEND Wait for button release See if we're in the CANCEL box Y=Y-1 'For better pointer alignment IF X 165 AND X 220 AND V 73 AND V 87 THEN CANCEUTRUE: PUT(50,16), SavReq&, PSET: ERASE SavReqi: RETURN END IF END IF IF C$ ="" THEN GOTO Loop 'LINE(75,69)-(183,91),2, b IF LEN(RleName$)=0 THEN IF C$ c"A" AND ASC(C$)o13 GOTO Loop 'This must be the first character IF ASC(C$) = 13 THEN '13=Carriage return PUT(50,16), SavReq&, PSET: ERASE SavReqS RETURN END IF IF ASC(C$) = 8 THEN '8=Backspace RleName$ =LEFT$ (RleName$, LEN(RleName$) — 1) 'Shorten name LINEfCU RS,52)-(CU RS+7,60),2, bf 'Back up cursor CURS=CURS-8: LIN E(CURS,52)-(CU RS+7,60),3, bf GOTO Loop END IF IF LEN(RleName$) = 13 GOTO Loop 'No more letters IF RIGHT$ (RleName$,1 OR RIGHT$ (RleName$,1)=“ — " GOTO Loop IF ASC(C$)=8 THEN GOTO Loop 'Superfluous backspace IF C$ “0" OR (C$ ”9” AND C$ “A”) GOTO Loop IF (C$ "?• AND C$ c"a") OR C$ ’z" GOTO Loop Add this letter and advance cursor RleName$ = RleName$ +C$ LINE(CURS,52) — (CURS+7,60),2, bf COLOR 1,2: CALL Move&(RP&,0,59): PRINT STAB(CURS);C$; CURS=CURS+8: LINE(CURS152HCURS+7,60),3, bf GOTO Loop 'Get another character ‘ Select a color SelColor: WHILE I o 0: l=MOUSE(0): X=MOUSE(1): Y=MOUSE(2): WEND IF X 21 THEN RETURN ‘ Erase white highlight around former color LIN E(0, COLBOX*COL)-(20, COLBOX*(COL+1)),1, b IFCOU3 THEN UNE(1, COLBOX'COL+1)-(19, COLBOX'(COL+1)-1),3, b l=COL: COL=Y COLBOX IF COL MaxColor THEN COL=0 * The previous color becomes the PENH color (for pattern) IF
loCOL THEN LASTCOLOFW COLOR COL.LASTCOLOR Add white highlight
around the new color LINE(0, COLBOX*COL)-(20, COLBOX*(COL+1)),3, b
' Add an extra black highlight when color white is selected IF
COL=3 THEN LINE(1, COLBOX*COL+1)-(19, COLBOX*(COL+1)-1),1, b '
Show the foreground and background colors
LINE(22,151M33,159)tCOL, bf: LINE(34,151)-(44,159), LASTCOLOR, bf
IF Style = 12 THEN GOSUB ColReq GOSUB SetSpan FOR 1=0 TO
MaxColor: PALETTE l, PCan! (l,0), PCan! (l,1), PCan! (l,2): NEXT
COLOR COL.LASTCOLOR RETURN AMIGA CUSTOM PRINTER DRIVER:$ 35+S H
Create your own printer driver for virtually any printer. Jt IEN DRIVEN WORKSJjHR REFERENCES 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 Dealers Welcome: call for pricing on our printer driver. NxD vl 1 f i d Xxtu A (716) 873-5321 3162% Delaware Ave. & the printer Kenmore, N.Y.
14217 sTOREhouBe© * Set style (and brush width, adjusted for resolution) SetStyle:
WHILE I o 0: bMOUSE(O): X=MOUSE(1): Y=MOUSE(2): WEND IF X 21 OR
X 45 THEN RETURN IF Style=5 AND (Y 0+1)=5 THEN NOBRUSH = TRUE
IF (YYI0+1) = Style THEN RETURN IF Style 0 THEN
LINE(21,10*(Style-1))-(45,10*Style),1, b IF Style=12 THEN PUT
(58,50), SAVCOL&, PSET ’Clean up the screen ERASE SAVCOL& IF
COL=0 THEN FOR 1=31 TO 2ADepth STEP -1: PALETTE I, Pcan! (0,0),
Pcan! (0,1), Pcan! (0,2): NEXT END IF AdjOff = TRUE END IF
Style=Y 0+1 IF Style 0 THEN
LINE(21,10*(Style-1)) — (45,10*Style),3, b DY=Style-1:
DX=2*DY*RES2 RETURN Set reset pattern. When pattern is in
use, DOTTY=TRUE PatSet: IF Dotty THEN Dotty=FALSE: PATTERN
, PAT1% LIN E(21,120)-(45,130),1, b ELSE
LINE(21,120)-(45,130),3, b Dotty=TRUE: PATTERN, PAT2% END IF
GOSUB ResSei COLOR COL, LASTCOLOR RETURN Cycle colors (except
black, white and greys). 1 This option can give the effect of movement ’ (as may be noted in the selection box itself) PCLO™ ii i i Hi-'.ife — i Printed Circuit Layout For the Amigatm • High performance • Semiautomatic routing • Trace yield • Sip dip pingrid • 288" sq. — 2 layers • Full silkscreen • Full color • Area rotation • Magnification (zoom) • Surface stretch • Dot matrix checkplot • Camera ready std plotters • Powerful workspace operations • N-layer capability • Object libraries • Multiple pad types •.050 centers • Block operations • Abs, rel & local measurement • Editing: move, copy, delete • Global trace following • Supports hard drives Introductory Price $ 1024 Functional Demo
Disk $ 75 (credit towards purchase) POLO (c) SoftCircuits, Inc.
AMIGA (c) Commodore, Inc. FIRST in a series of engineering
workstation products from SoftCircuits, Inc. *401 S.W. 75th
Terrace North Lauderdale, FL 33068 • (305) 721-2707 CycCol: IF
CycCI THEN CycCI = FALSE — restore the colors — FOR l=0 TO
MaxColor: PALETTE I, Pcanl (I. O), Pcan! (l,1), Pcan! (l,2): NEXT
GOSUB ResSei ELSE CycCI = TRUE GOSUB SetSpan END IF RETURN
CycDraw: IFCycDrTHEN CycDr= FALSE LINE (21,140)-(45,150),1, b
COLOR COL, LASTCOLOR ELSE CycDr=TRUE LINE (21,140)-(45,150)
,3, b GOSUB SetSpan END IF RETURN SetSpan: IF COL LASTCOLOR
THEN COLStart = LASTCOLOR: COLEnd = COL ELSE COLStart = COL:
COLEnd = LASTCOLOR END IF Cspan = COLEnd — COLStart +1 RETURN
Quit: Prompt$ =" Press Return to Quit" CANCEL=FALSE: GOSUB
GetName' get a filename IF CANCEL THEN RETURN LIBRARY CLOSE
WINDOW CLOSE 2: SCREEN CLOSE 1 END InitFile:
collisionPlaneIncluded=2 'never set by this editor
imageShadowIncluded=4 'never set by this editor SAVEBACK=8
'save background before drawing BOB OVERLAY=16 'color 0 for BOB
is transparent, not black SAVEBOB=32 'let BOB act like a paint
brush fVSprite = 0 'user cant edit sprite FileName$ =""
Rags=SAVEBACK+OVERLAY+fVSprite BobRight= WWIDTH-1 BobBottom=
HEIGHT-1 RanePick= MaxColor RETURN OpenBrush: NOBRUSH = FALSE
BrushLoad = TRUE Prompts =" Enter Brush file name" Openfile: IF
NOT BrushLoad THEN Prompts = "Enter Picture file name"
PENDING=4: CANCEL=FALSE: GOSUB GetName ’ get a filename IF
FileName$ o"" AND (NOT CANCEL) THEN OPEN FbeNameS FOR INPUT AS 1
LEN=1024 olddepth = Depth ColorSet=CVL(INPUT$ (4f1))
Dataset=CVL(INPUT$ (4,1)) Depth=CVL(INPUT$ (4,1))
BobRight=CVL(INPUT$ (4,1)) -1 BobBottom=C VL(IN PUT$ (4,1)) -1
REM UNDONE if ColorSetoO or DataSetoO, read image. editor
format file Flags=CVI(INPUT$ (2,1)) ' IF Flags AND 1 THEN
fVSprite = 1 ELSE fVSprite = 0 IF PlanePick CVI(INPUT$ (2,1))
THEN COLOR 3,0: LOCATE 3,8: PRINT Error file has more bit
planes”: LOCATE 4,8: PRINT" than this screen has!" COLOR COL.LASTCOLOR ELSE PlaneOnOff=CVI(INPUT$ (2,1)) ERASE BobArray ArraySize&=FNArraySize& DIM BobArray (ArraySize&) BobArray (0)=BobRight +1 BobArray (1)=BobBottom +1 BobArray (2)=Depth FOR l=3 TO ArraySize&-1: BobArray (l)=CVI(INPUT$ (2,1)): NEXT IF NOT BrushLoad THEN GOSUB RedrawPicture END IF Depth = olddepth CLOSE 1 END IF PENDING = 0 BrushLoad = FALSE RETURN WriteBrush: IF NOBRUSH THEN RETURN BrushSave=TRUE Prompt$ =" Enter Brush file name" Writefile: IF NOT BrushSave THEN Prompts = "Enter Picture file name" PENDING=3: CANCEL=FALSE: GOSUB GetName ’get a filename IF FileName$ o"" AND (NOT CANCEL) THEN IF NOT BrushSave THEN GOSUB GetPicture OPEN FileName$ FOR OUTPUT AS 1 LEN=1024 PRINT 1, MKL$ (0); ’CotorSet PRINT 1, MKL$ (0); Dataset PRINT 1, MKI$ (0);MKI$ (BobArray (2)); ’depth PRINT 1, MKI$ (0);MKI$ (BobArray (0)); ’width PRINT 1, MKI$ (0);MKI$ (BobArray (1)); ’height PRINT 1, MKI$ (Flags); PRINT 1, MKI$ (PlanePick); ’planePick PRINT 1, MKI$ (0); ’planeOnOff FOR l=3 TO ArraySize&-1: PRINT 1, MKI$ (BobArray (l));: NEXT CLOSE 1 END IF PENDING = 0 BrushSave = FALSE RETURN GetPicture: BobRight = WWIDTH-1: BobBottom = HEIGHT-1 ArraySize&=FNArraySize& ERASE BobArray DIM BobArray (ArraySize&) GET (47,0) — (BobRight, BobBottom), BobArray RETURN RedrawPicture: PUT (47,0), BobArray, PSET GOSUB ResSel 'redo the command box ERASE BobArray DIM BobArray) 1) RETURN AMIGA $ 9.95 ea. Public Domain Disks Disk 1 Star Trek (Text), EZ-Terminal, Amiga Doodle Disk 2 Copperstate Copier for 2 drives Disk 3 Amiga Info EPSON* LX-80 Printer $ 249.95 JX 80 Colored Printer Ribbons $ 14.95 Amiga Printer Cables $ 29.95 3M Copy Mite Copiers Copy Mite 1 $ 169.95 Copy Mite 2 $ 269.95 Cardinal Software 13646 Jeff Davis Hwy Woodbridge, VA 22191 69SB Order NOW! 800 762-5645 Mo (703) 491-6602 SHIPPING EXTRA PUBLIC DOMAIN SOFTWARE PiM Publications, Inc. has AMICUS Disks 1 through 8 and Fred Fish Disks 1 through 11 available at special prices $ 6.00 to Amazing Computing Subscribers or $ 7.00 to non subscribers (MA Residents add 5% sales 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
customers. Please allow 4 weeks for delivery Amiga-Basic A Beginner's Tutorial by Kelly Kauffman The purpose of this ongoing tutorial is to invite new Amiga users to use their powerful machines to start earning their keep for their owner. This can be done through programming your machine in Microsoft-Basic (MBasic) to do certain tasks for you. Mbasic comes in the 1.1 upgrade kit. If you have not received a 1.1 upgrade kit, contact the dealer who sold you your Amiga to obtain one. To load Mbasic, Kickstart your Amiga, then when the screen prompts you for the Workbench, insert your "Amiga-Extras" disk and wait. When the workbench appears, doubleclick on the disk icon for the Extras disk. When the disk opens up, you will see the icon for "AmigaBASIC," double click on this. When the screen clears, two windows will appear. You have now loaded Mbasic and are ready to begin programming! A computer or Mbasic program is a series of commands that produce a desired effect. These commands shape the program and are what ACTUALLY give you your end result. Some of these commands will be very straight forward. In fact, programming in Mbasic can be a lot like telling the computer what to do in plain English. These commands are easy to memorize and with a little practice will fall right into place., The most important thing to know about programming in Mbasic is how to save and load programs off of your disks. This is important because as you may or may not know, when the computer is turned off, or you leave Mbasic, any program that you have (had) in memory is lost... forever.... UNLESS you have it saved on a diskette. There are two ways to save a program: Type "SAVE" and press the [RETURN] key — OR-Press the right button on the mouse, this will bring up the
menu selections. While still holding the right button down on
the mouse, point to the "Project" menu and slide the mouse down
to the "Save As" option and let the right mouse button up. A
"REQUESTOR" will appear asking you for the filename to save it
on the disk. To specify the filename, point your mouse into the
box inside of the requestor and click the left button. A red
cursor will appear which means it is ready for you to type your
filename. Type your filename and press [RETURN]. Now point your
mouse to the "OK" box inside of the requestor and click the
left mouse button. The drive will spin for a moment and then
stop. Your program is now saved on the diskette and it is safe
to leave Mbasic or turn your machine off. If you follow the procedure above, but instead of stopping at the "Save As" menu option, you stop at the "Save" option, the computer will use the last filename that you specified and automatically delete the old file and replace it with the program currently residing in memory. To LOAD a program (get the program off the disk and put it into memory), follow the same procedure for saving the program, but instead of stopping on "Save" or "Save As", stop on "Load." Another requestor will appear asking you for the filename to load. Again, point your mouse into the box inside of the requestor, click the left mouse button, type the filename of the file you wish to load, then press [RETURN]. Next, slide your mouse to the "OK" box and click with the left button. Boom!, your program is now in memory. If you have any questions on filenames or pathnames, please consult the AmigaBASIC manual, Page 5-3. You will be using the keyboard of your computer to issue commands to Mbasic. The keyboard on your Amiga is a lot like a normal typewriters keyboard. But there are a few exceptions. There are ten "Function" keys across the top of the keyboard, a "CTRL" at the left side, a "BACK SPACE" as well as a "DEL"ete key, an "ESC"ape key at the top left, two "ALT" keys at the lower-left and lower-middle sections of the keyboard, two red "A"migs keys on either side of the space bar, and a "HELP" key. Unfortunately the HELP key is not programmed to do anything when you press it (yet!) And will do nothing when you press it. As a matter of fact, the Function, Help, Del, Alt, Esc, and the red "A" keys will do nothing right now until we program them too. The [RETURN] key is probably the single most important key of them all. This tells Mbasic that you are finished giving it a command or line (s) of commands. Miga Rel ______ Quick Rcfe *cncc Card;;. ____ For Cqmmodorc'Ami DOS*, version 1.1 DOS'co mands'ar 2 logically grouped-by type*aisk, file, uility, and patch, to help you quickly find what you need.. 7 TipV oh getfirv starfed~exa mp ie.& oT u or tir c s and controK codes, accepted by Amiga DOS-*-aV inenudedr" — -f The two windows mentioned earlier are the "LIST' and the "OUTPUT" windows. The List window will contain the actual program contents and the Output window will contain the product of that program. You will notice that after you Load a program, the "LISTING" of that program will appear in the list window. To switch between the Output and List window, just put your mouse in the window you want to be in and click the left mouse button. The List window serves as an editing environment for your program. If you wish to make changes or "EDIT" your program, you can use the "Arrow" keys clustered together in the right side of the keyboard to move your "Cursor" (a thin red verticie bar) about the program listing and type any changes you want into the program. The "Backspace" key will delete characters to the LEFT side of the cursor as many times as you press it. Unfortunately the "DEL" key was not implemented into Revision 1.0 of Mbasic. Had it been, it would delete characters to the RIGHT of the cursor in the same fashion as the Backspace key. When you have a program in memory and you wish for the program to begin working, move your mouse to the Output window and click the left mouse button to make the window "Active." Then type "RUN" and press [RETURN]. OR, you can hold down the right mouse button, point to the "RUN" menu, and while still holding down the right button, slide the mouse down to the "Start" option and release the mouse button. And yes, there is a third way to do it, hold down the right red "A" key and press the "R" key. Inevitably with programs that you create and write yourself, there are bound to be errors. And the Amiga will make sure it points every single one of them out to you. This will eventually beat you into being a good Mbasic programmer. A small window will open atop the screen telling you what kind of error Mbasic encountered. After it reports the error to you, be sure to click the left mouse button in the "OK" box in the error window. Consult Appendix B in the back of your AmigaBASIC manual (pg A-4) for a complete explanation of the different error codes. In the next installment of this tutorial, I will begin to get into some of Mbasic's commands and guiding you on how to use them. But in the meantime, I suggest you LOAD up some of the programs ALREADY on your Amiga-Extras disk. RUN them, EDIT them, play around with the above techniques, and next time we will take our first Mbasic programming steps. *AC* When you drop from Workbench into the Command Line Interface, you give up easy-to-use graphics, but you gain speed, convenience, and, often, power. Inside CLI Part 3 byGeorge Musser Jr. CIS 76566,3714 CC004049@BROWNVM.BITNET CLI bares the structure of the Amiga disk operating system and places a number of file utilities at your fingertips. In the past two issues, we have seen how you type commands instead of pulling down menus or clicking icons. Only in CLI can you copy oft-used files into the RAM: disk or cut down on disk swapping by reassigning your logical devices. This month, we will look at how AmigaDOS works. By understanding the quirks of AmigaDOS, you might be able to suppress the urge to smash your keyboard or stuff cotton into your disk drives. The Amiga's disk drives seem a lot slower than they should be. The floppy disk hardware can read a whole track, about 5600 bytes, in a single gulp, without bothering the microprocessor. Yet the LIST command is still no fasterthan the DIR command in PCDOS. Why? For one thing, LIST has no one place to go for file information. AmigaDOS directories offer only the information needed to find the files, whereas PCDOS directories contain the file names, sizes, and whereabouts. AmigaDOS divides the 3.5" disk into 1760 blocks of 512 bytes each, as you can verify with the INFO command in CLI or Workbench. Eleven blocks comprise a track, which is a full circle. Block number 880, located midway across the disk surface, is the root block, which corresponds to the root directory. The root block stores the name of the disk, the time and date of creation and last modification, and a hash table. A hash table is a list of pointers to subdirectory or file header blocks. AmigaDOS converts the filename into a positive integer. This integer refers to an entry in the hash table. The entry, in turn, is the number of a block containing the file header or subdirectory. Subdirectories and file headers look basically like the root block; a subdirectory points to file headers and other subdirectories, and a file header points to data blocks, where the file is stored. To convert the characters of a filename into an integer, AmigaDOS applies a hash function. An example of a hash function is calling A=1, B=2, etcetera, and adding up the values of the letters. Problems arise when two filenames hash to the same number. In AmigaDOS, for instance, "Mets" and "win" both hash to 47, and "quake" and "LosGatos" hash to 14. To resolve the conflict, AmigaDOS turns to the subdirectory or file header block. This block contains the file name, date and time of creation, and a pointer to the next header whose name hashes to the same value. AmigaDOS compares the name in the block with the name it wants. If the names differ, AmigaDOS goes to the next header block, and so on, until it finds the right name or reaches the end of the chain, in which case the file does not exist. This explains the sluggishness of LIST. AmigaDOS must hash the filename, go to the file header, compare the names, go to the next file header if they don't match, and so on. The file information is dispersed, instead of being centralized as in PCDOS. To help speed things up, AmigaDOS puts the subdirectories and file headers on the inner half of the disk and the data blocks on the outer half. Unfortunately, the inside-outside scheme creates headaches for Workbench. When you open up a drawer, AmigaDOS must move the disk-drive head inward to find the right file headers and outward to read the ".info" files, which contain the icons. Consequently, the drive head shuttles back and forth across the disk surface, making lots of noise. Hopefully, a future release of Workbench will lump all the icons of a drawer into a single file. The filing system seems roundabout, but it enjoys a number of advantages. The size and number of files is limited only by disk storage capacity. More important, the system has enough redundancy that the directory tree can be rebuilt if part of it gets destroyed. Two sets of pointers describe each branch of the tree. For example, headers contain pointers to the next link in the hash chain, to the parent directory, and to the data blocks, which also point to one another. Each block has a sequence number, which indicates where it belongs, and a checksum, which signals whether the block has been corrupted_ GM(FMS®IPir PRESENTS INFO BASE Now available for the Amlgal INFO BASE Is a powerful, yet easy to use Data Base program, designed for the Amiga to store and retrieve information in an organized manner. Each record can contain up to 200 fields of information. You create, design, and edit custom print forms. Each print form, you design, can create a different type of printout such as mailing labels, multi column reports, invoices, lists, etc.... In addition, text can be incorporated into the design of print forms, allowing both text and field information to be printed on the same line. INFO BASE FEATURES ‘DESIGN DATA BASES, ALLOWING UP TO 200 FIELDS OF INFORMATION FOR EACH RECORD • SORT RECORDS BY ANY FIELD ‘SELECT STARTING AND ENDING SORT
INFORMATION ‘PRINT OUTPUT TO PRINTER OR SCREEN ‘PRINT MULTIPLE
COPIES ‘CREATE, DESIGN, AND EDIT CUSTOM PRINT FORMS ‘COMBINE
TEXT INTO THE DESIGN OF PRINT FORMS ‘ADD RECORDS AND DELETE
RECORDS ‘BROWSE THROUGH RECORDS ‘SEARCH FOR SPECIFIC RECORDS
INFO BASE is available NOWI $ 45.00 (US) Enclose Check, Money
Order, or Cashiers Check. Phone orders will be shipped C.O.D. and must add $ 3.00 S & H. Please allow 10-14 days for delivery. Horvaoft Box, 725 Kenmore, NY 14217 (716) 877-3510 Dealer Inquiries Welcome INFO BASE requires an
Amiga with 512K RAM and at least one disk drive. Amazing Computing™ Amazing Writers 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. If 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. If your idea or explanation is of interest to developers and hard core hackers, please sencTfour thoughts and a request for writer's guide lines to: AMICUS Network Editor PIM Publications P. O. Box 869 Fall River, MA. 02722 If you are more interested in
general use of the Amiga and it's products, please send your
suggestions and ideas to: Editor, Amazing Computing PIM
Publications P. O. Box 869 Fall River, MA 02722 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 type a response. Amazing Computing™, your resource to the Commodore Amiga By scanning the blocks, the sequence numbers, and the pointers, a program could reconstruct a damaged disk's file structure. The Disk-Validator does this to a limited extent. Whenever you insert a disk, the Disk-Validator checks that the filing structure is consistent and that no block is allocated twice. To the user, the AmigaDOS filing system feels just like a conventional tree structure, traversed with the CD command. AmigaDOS provides a couple of commands for you to tinker with information in the headers. The subdirectory and file header blocks include protection flags and space for a comment. You can set the protection flags with the PROTECT command in CLI or the Info command in Workbench. In release 1.1, only the delete flag has any effect. To protect a file from deletion, type: PROTECT filename rwe To allow deletion of a file, type: PROTECT filename swed Future versions of the system software will also let you protect a file from reading, writing, and executing. To add a comment to a file, enter: FILENOTE filename "text" where text may be as long as 80 characters. You can view the comment by Listing the file. You can both view and change the comment using the Workbench Info command. COPYing a file does not copy the comment, since the COPY command creates a new file header forthe destination file. When you double-click a tool or type a filename at the CLI prompt, AmigaDOS searches for the file. When the filing system locates it, the loader takes over. The loader reads the program into memory using a technique called scatter loading. The loader grabs the file in pieces, called hunks. Every hunk includes information on how it fits in with the other hunks. The loader sticks each hunk wherever it can find room in RAM and modifies the hunks so that they can find one another. Scatter loading makes the best use of available memory. After the loader finishes, AmigaDOS must define how the program interacts with the rest of the computer. AmigaDOS treats every program as a process. Each process thinks it has exclusive use of the microprocessor, even though many other processes may share the processor. Programs loaded from CLI share the CLI process, while Workbench spawns a new process for each tool you double-click. AmigaDOS also creates processes to oversee the serial port, the disk drive, the parallel port, and so on. These handler processes figure out which process can use which input output device. Processes communicate with one another through message ports, which act like telephones. For example, a text editor can ask the disk process to read in a document. The disk I O bogs down when two processes want the disk at the same time. The drive head flies back and forth, fetching data for one process and then the other. This more than doubles disk access time for both. End Guru Meditation Errors INTRODUCING AMIGA DOS & MICROSOFT®BASIC TEMPLATES iTM From the user's point of view, the processes appear as though they are running simultaneously. Several commands let you examine and control processes. Normally, programs share the CLI task, but if you prefix the filename with the RUN command, AmigaDOS will execute the program as an independent process. You can execute a string of programs by using a plus sign: RUN COPY File RAM:+ DELETE File+ ECHO "File moved to RAM" Processes created by RUN still use the CLI window for output. To create a new process with its own window, type NEWCLI. With the STATUS command, you can list what CLI processes are running. AmigaDOS cannot kill a process once it has started. Processes have to die of their own volition. Many programs will die gracefully if you type the CTRL-C sequence in their windows. Alternatively, you can use the BREAK command. BREAK 2 will break the second CLI task, as labelled by a prompt "2 ". When you type CTRL-C or use the BREAK command, what happens depends on the program; a well-behaved program will recognize the break signal and abort. The CLI utilizes the Amiga's console device driver, which is based on American National Standards Institute codes. ANSI codes are largely those of the Digital Equipment Corporation VT100 terminal. As with the VT100, escape sequences control terminal functions, such as cursor movement. You can enter escape sequences directly from the keyboard. First, type the Control Sequence Introducer, ESC [. Then, enter the command arguments, followed by a character identifying the escape sequence. For example: ESC [A moves the cursor up Get the Guru Busters!? AmigaDOS $ 9.95? Microsoft Basic $ 9.95? Both $ 16.95 Charge my:? Visa? Master Card? Check money order l Credit Card No__Exp. Date Name._ Address._ City __State ZIP_ Signature ___ Michigan residents add 4% sales tax. Add $ 1.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 ESC [B moves down ESC [C moves right ESC [D moves left Things get interesting when you play with the way the console device displays output. For instance: ESC [20I forces the Amiga to interpret linefeeds as down-cursor instead of newline ESC [20h reverts to the default of covering linefeeds to carriage return line feed. The following command changes the character attributes: ESC [style; fg; bg h Replace style with the desired font style: 0 = plain 1 = bold 3 = italic 4=underscore 7=inverse fg is the foreground color, a number from 30 to 37, and bg the background color, from 40 to 47: 0 = Workbench background 1 = window border color 2=the color menu items appear in when selected flstrashnancolur_, — AMIGA USERS AND DEALERS ‘ Do you need a powerful graphics progra. That can be used with other programs, and unleashes the graphic captoiliUes of the Amiga? POLYVISION SOFTWARE HAS THE ANSWER FOR YOIII INSTANT ARTIST! An inexpensive but powerful paint program with over SO commands and thousands of possibilities that come to your fingertips by asimple dick of abutton. LIKE: * Saving and loading pictures and patterns * Picture magnification * Image cloning * Airbrush technique * Mirror imaging * Ten brush sizes+the ability to make your own custom * brushes ‘ Ability to merge pictures to future Polyvision
programs SEND 34.95 To receive a copy of Instant Artist or SEND
39.95 To receive a copy of Instant Artist and a guarantee for a
future updated version of it TO: POLYVISION SOFTWARE 512 E.
ALDER WALLA WALLA WA. 99362 (509) 529-3708 Amiga Is a trademark of Commodore-Amlga Inc.
Instant Artist Is a trademark of Polwision Software Inc.
Try out some of the sequences. For instance, type ESC [4m
and your Amiga will underline CLI output, while
ESC [3;33;40m will change the color of CLI lettering to
the same color as the Workbench trashcan and print
italicized characters. In addition to the ANSI sequences, the console driver recognizes special Amiga sequences, such as ESC 0 space p = turn cursor off ESC space p = turn cursor on Although AmigaDOS offers the user a lot of power, the CLI environment is not exactly the friendliest. Fortunately, programmers can access AmigaDOS functions through function calls. Already, two programs have appeared that begin to tame CLI: Shell and MyCLI. (Both Shell and MyCLI are available on Amicus PDS disk number 8 as well as several more elaborate aplications. ED Note.) Written by Randeli E. Jesup and available on the CompuServe Amiga Forum, Shell translates your synonyms into AmigaDOS commands. You put a file "commands" into the SYS: directory. The file contains replacements for CLI commands. One synonym can map to a whole list of CLI commands, in effect giving you macro capability. However, once Shell completes its preprocessing, it passes the commands through to CLI; there are no built-in commands. While Shell sits on top of CLI, Mike Schwartz's MyCLI replaces CLI. Posted to Usenet, MyCLI has a number of extensions. Basic functionns, like delete, dir, makedir, and cd, are internal; they are processed by the program instead of loaded from disk. MyCLI automatically executes batch files with.bat or.cli extensions, instead of requiring you to type EXECUTE. The program lets you define function keys and has a built in, ANSI-compatible terminal. AmigaDOS has no built in pipe facility. A pipe lets you feed the output of one command into another. Such a facility is useful, for example, to sort the output of a command. To simulate pipes, Bruce Barrett of Commodore-Amiga posted a Pipe command file to Usenet. The syntax of Pipe command is: EXECUTE PIPE commandl arg1... argo | command2 arg1... argo This version of Pipe accepts two commands and a total of eight arguments. For example: EXECUTE PIPE echo "01-Jan-87" | date"?" Sets the date to New Year's Day. Basically, Pipe redirects the output of the first command into an intermediate file, from which the second command takes its input. Since Pipe keeps calling itself, it works faster out of RAM. On the one hand, Pipe shows the versatility of EXECUTE, particularly in the way it calls itself to parse the arguments. On the other hand, it is a fairly kludgy way to overcome a gap in AmigaDOS. Despite its limitations, AmigaDOS is about the closest a microcomputer operating system has come to a mainframe operating system. To learn AmigaDOS, use it. •AC0 PIPE per George Musser Jr..KEY c1,02, c3, c4, c5, c6, c7, c8, c9, ca, cb, FLAG. PIPE, an execute file that does pipes! By; Bruce Barrett. Public Domain.bra.ket} if " FLAG}" eq"" execute PIPE " c1} RAM: PIPE$ $ $ " " c2}” " c3}" " c4}" " c5}" " c6}" " c7}" " c8}" " c9}" " ca}" " cb}" "is|?" Skip END endif if" FLAG}"eq"is|?" If " c2}" eq"" echo "PIPE: Error, no *"|*" (bar) found!" Skip END endif if" c2}"eq"|" if" c4}"eq"" execute PIPE " c1}" ” c3} RAM: PIPE$ $ $ ..."""""""Dolt" skip END endif if" c5}"eq'"' execute PIPE " c1}" " c3} RAM: PIPE$ $ $ c4} ..."". Dolt" skip END endif if " c6}"eq execute PIPE " c1}" " c3} RAM: PIPE$ $ $ c4} c5}""""""" """ ’Dolt” skip END endif if" c7}"eq"" execute PIPE " c1}" " c3} RAM: PIPE$ $ $ c4} c5} c6}"..... Dolt" skip END endif if" c8}"eq"" execute PIPE " c1}" ” c3} RAM: PIPE$ $ $ c4} c5} c6} c7}"... "Dolt” skip END endif if" c9}"eq"" execute PIPE ” c1}" ” c3} RAM: PIPE$ $ $ c4} c5} c6} c7} c8}".. "Dolt" skip END endif if" ca}"eq"" execute PIPE " c1}" ” c3} RAM: PIPE$ $ $ c4} c5} c6} c7} c8} c9}". "Dolt" skip END endif else execute PIPE " c1} c2}" ” c3}" n c4}" " c5}" " c6}" ” c7}" " c8}" " c9}" " ca}" " cb}" "is|?" Skip END endif endif if " FLAG}" eq "Dolt" c1} 02} delete RAM: PIPE$ $ $ endif LAB END Amiga Products Software Languages & Tools Turbo Pascal™ Borland International TBA TBA Amiga TLC Logo Commodore Business Machines $ 99.95 NOW Amiga Pascal Commodore Business Machines $ 99.95 NOW Amiga Assembler Commodore Business Machines $ 99.95 NOW Amiga Lisp Commodore Business Machines $ 199.95 NOW Abasic Commodore Business Machines $ 24.95 NOW WACKS W Toolkit Commodore Business Machines $ 99.95 NOW IBM PC Cross Development Package Commodore Business Machines $ 99.95 NOW MultiForth™ Creative Solutions Inc. $ 179.00 1 Qtr’86 Marauder (Disk utility)™ Discovery Software $ 39.95 NOW Exactly! Discovery Software $ 24.95 April'86 The Explorer Interactive Analytic Node $ 35.00 NOW Amiga C Compiler™ Lattice $ 149.95 NOW Lattice MacLibrary™ Lattice $ 100.00 NOW Lattice Make Utility™ Lattice $ 125.00 NOW Text Utilities™ Lattice $ 149.95 NOW Lattice Screen Editor™ Lattice $ 100.00 NOW Panel (screen Layout utilities)™ Lattice $ 195.00 TBA Cross Compiler (MS-Dos to Amiga)™ Lattice $ 250.00 NOW dBCIII (Library of DB functions)™ Lattice $ 150.00 NOW Cross Reference Generator™ Lattice $ 45.00 NOW Aztec C Developer Edition MANX $ 299.00 NOW Aztec C Commercial Edition MANX $ 499.00 NOW MCC Pascal™ Metacomco $ 99.95 NOW Cambridge Lisp™ Metacomco $ 199.95 NOW MetaScope Metadigm, Inc. $ 95.00 NOW MetaScribe Metadigm, Inc. $ 85.00 NOW MetaTools Metadigm, Inc. $ 69.95 NOW Programmer's Editor Micro Forge $ 69.95 Mar '86 Ram Disk Micro Forge $ 24.95 Mar'86 TxEd Microsmith $ 39.95 NOW Custom Printer Driver Text only Software Supermarket $ 25.00 NOW Graphics upgrade Software Supermarket $ 5.00 NOW Modula-2 Regular Version TDI Software Inc. $ 89.95 NOW Modula-2 Developer’s Version TDI Software Inc. $ 149.95 NOW UBZ Forth™ UBZ Software $ 85.00 Soon AD FO"Disk File Organizer" Westcomlnd. $ 59.95 Apr'86 Amemtest Westcomlnd. $ 49.95 2Qtr'86 ZLI Zoxso $ 69.95 NOW Special Tools PCLO™ Printed Circuit Layout Softcircuits $ 1024.00 NOW Entertainment Mindshadow™ Activision $ 44.95 NOW Borrowed Time™ Activision $ 44.95 NOW Hacker Activision $ 44.95 NOW Musicraft Commodore Business Machines TBA Apr'86 Robot War Commodore Business Machines $ 49.95 TBA Wynd Walker Commodore Business Machines $ 49.95 Mar'86 Driving Game Commodore Business Machines $ 49.95 TBA Julius Erving, Larry Bird, One on One™ Electronic Arts, Inc. $ 35.95 NOW The Seven Cities of Gold™ Electronic Arts, Inc. $ 39.95 NOW Arcon™ Electronic Arts, Inc. $ 39.95 NOW Skyfox™ Electronic Arts, Inc. $ 39.95 Mar'86 Adventure Construction Set™ Electronic Arts, Inc. $ 49.95 Mar'86 Artiefox™ Electronic Arts, Inc. $ 39.95 NOW Software Golden Oldies (ILife, Pong, Eliza, Adventure) Electronic Arts, Inc. $ 34.95 NOW Sargon III™ Hayden Software $ 49.95 TBA Zorkl™ Infocom, Inc. $ 39.95 Now Zork III™ Infocom, Inc. $ 49.95 TBA Wishbringer™ Infocom, Inc. $ 39.95 NOW Enchanter™ Infocom, Inc. $ 39.95 NOW Deadline™ Infocom, Inc. $ 49.95 NOW Witness™ Infocom, Inc. $ 39.95 NOW Suspect™ Infocom, Inc. $ 39.95 NOW Starcross™ Infocom, Inc. $ 49.95 NOW Suspended™ Infocom, Inc. $ 49.95 NOW Planetfall™ Infocom, Inc. $ 39.95 NOW A Mind Forever Voyaging™ Infocom, Inc. $ 44.95 NOW Infidel™ Infocom, Inc. $ 44.95 NOW Seastalker™ Infocom, Inc. $ 39.95 NOW Cut Throat Infocom, Inc. $ 39.95 NOW Hitchhiker's Guide to the Galaxy™ Infocom, Inc. $ 39.95 NOW Spellbreakerei™ Infocom, Inc. $ 49.95 NOW Sorcerer™ Infocom, Inc. $ 39.95 NOW Conversation with a Computer Jenday Software $ 29.50 NOW Keyboard Cadet™ Mindscape $ 39.95 Mai"86 Racter™ Mindscape $ 44.95 NOW Halley Project™ Mindscape $ 44.95 Mar'86 DejaVu™ Mindscape $ 49.95 June '86 Barataccas™ Mindscape $ 49.95 NOW Jet Sublogic Communications Corporation TBA Mar'86 Graphics & Sound Aegis Animator™ with Aegis Images™ Aegis $ 139.95 NOW Aegis Images™ Aegis $ 79.95 NOW Aegis Draw™ Aegis $ 199.95 April'86 Aegis Impact™ Aegis $ 199.95 Summer Aegis Pro Draw Aegis TBA TBA FutureSound™ Applied Visions $ 175.00 NOW Graphicraft Commodore Business Machines $ 49.95 NOW DeluxePaint™ Electronic Arts, Inc. $ 79.95 NOW Sound Vision™ Hayden Software TBA TBA Instant Artist! Polyvision Software $ 34.95 NOW MORE AMIGA Business Financial Plus Byte by Byte $ 295 NOW WriteHand Byte by Byte $ 50.00 NOW Rags to Riches™ Ledger Chang Labs Chang Labs $ 199.95 NOW Receivables Chang Labs $ 199.95 NOW Payables Chang Labs $ 199.95 NOW 3Pac Chang Labs $ 499.50 NOW Filecraft™ Colony Ltd. $ 79.95 NOW Amiga Calcraft Commodore Business Machines $ 99.95 Mar'86 Textcraft Commodore Business Machines $ 99.95 NOW Transformer Commodore Business Machines $ 99.95 Apr'86 Financial Cookbook™ Electronic Arts, Inc. $ 79.95 NOW Info Base Han soft $ 45.00 NOW Unicalc™ Lattice $ 79.95 NOW Maxiplan Maxicorp $ 125.00 TBA Analyze Micro-Systems Software, Inc. $ 99.95 NOW Scribble! Micro-Systems Software, Inc. $ 69.95 NOW Flow™ Idea Processor New Horizons Software TBA 2Qtr’86 VIP VIP Technologies $ 199.95 Mar'86 References and Books The Amiga Technical Reference Series The Amiga Hardware Reference Manual Addison-Wesley Publishing Co. $ 24.95 Mar'86 The Amiga Rom Kernel Manual: Library and Devices Addison-Wesley Publishing Co. $ 29.95 Mar'86 Exec Addison-Wesley Publishing Co. $ 19.95 Apr'86 The Amiga Intuition Reference Manual Addison-Wesley Publishing Co. $ 24.95 Mar'86 The AmigaDos™ User's Manual Bantam Books $ 24.95 Mar'86 AmigaDos User's Manual Commodore Business Machines $ 14.95 NOW Amiga Technical Documentation Commodore Business Machines $ 99.95 NOW Contains a set of six technical manuals: AmigaDos Developer's Manual AmigaDos Technical Reference Manual AmigaDos User's Manual Amiga Hardware Manual Amiga Rom Kernel Manual Intuition: The Amiga User Interface Beginner's Guide to the Amiga Compute! $ 16.95 NOW Amiga Programmer's Guide Compute! $ 16.95 NOW Amiga Dos Reference Guide Compute! $ 14.95 NOW Amiga Ref Education, Computers, ETC., Inc. $ 2.95 NOW AmigaDos Template Slipped Disk $ 9.95 NOW Microsoft® Basic Template Slipped Disk $ 9.95 NOW The OfficialAmiga Programmer's Reference Guide Sybex Computer Books $ 28.95 June '86 The Amiga Programmer's Handbook Sybex Computer Books $ 24.95 Mar'86 Products! Hardware A-Time™ Akron Systems Development $ 49.95 NOW 2Meg-8Meg Card Akron Systems Development TBA TBA External 5.25 Disk Drive Commodore Business Machines $ 395.00 TBA External 3.5 Disk Drive Commodore Business Machines $ 295.00 NOW Amiga Transformer Commodore Business Machines Tba Apr'86 Modem 1200 RS Commodore Business Machines $ 295.00 TBA 256K Ram Expansion Commodore Business Machines $ 195.00 NOW RF Modulator Commodore Business Machines $ 49.95 NOW Amiga Answer Mate Commodore Business Machines $ 249.95 Apr'86 Answer Mate Modem Cartridge Commodore Business Machines $ 99.95 Apr'86 Genlock Interface Commodore Business Machines $ 249.95 Apr'86 Midi Interface Commodore Business Machines $ 49.95 NOW Amiga Live! Commodore Business Machines TBA Apr'86 68020 Processor Board Computer System Associates NANA 68020 Processor Board IO Inc. NANA Penmouse+™ Kurta $ 375 NOW Series ONE™ 200 PPI Kurta 8. 5x11 Kurta $ 695 NOW 12 x12 Kurta $ 795 NOW 12 x17 Kurta $ 895
NOW Series TWO™ 12 x 121000 PPI Kurta $ 895 NOW Series Three
24x24 and higher 1000 PPI Kurta based on size NOW 40-Meg Hard
Disk (use with expansion box) Micro Forge $ 1479.95 NOW 2nd
10-Meg Hard Disk Micro Forge $ 755.95 NOW 2nd 20-Meg Hard Disk
Micro Forge $ 849.95 NOW 2nd 40-Meg Hard Disk Micro Forge
$ 1099.95 NOW Stereo Sound Digitizer Micro Forge $ 344.95 Mar'86
2 Megabyte Memory Board Micro Forge $ 859.95 Mar'86 2400B Modem
Micro-Systems Software, Inc. $ 429.00 NOW T-Connect™ Tecmar
$ 450.00 NOW T-Card (256K)™ Tecmar $ 795.00 NOW T-Card (512K)™
Tecmar $ 895.00 NOW T-Card (1 Meg)™ Tecmar $ 995.00 NOW T-disk
(20Meg)™ Tecmar $ 1495.00 NOW T-modem™ Tecmar $ 695.00 NOW
T-tape™ Tecmar TBA 2Qtr'86 Attention: Amiga User Groups If you
belong to an Amiga User Group, Amazing Computing™ wants to
know. Amazing Computing is interested in the Amiga user and Amiga User Groups are one of the best investments of time and energy that an Amiga owner can make. The opportunity to share challenges and discoveries with other Amiga owners can help you solve some difficult problems and generate a few great applications for your Amiga. To help in the growth of a network of Amiga user groups, Amazing Computing™ will publish a list of groups in our future issues. Any Amiga owner in your area, will have an opportunity to contact your group and join. There is strength in numbers and a good club will always help. If you have a club and would like Amazing Computing to list it, please send the club's name, mailing address, meeting place and time, with a contact's telephone number to: Amiga User Groups Amazing Computing PiM Publications P. O. Box 869 Fall River, MA 02722 If you do not belong to an
Amiga user group, watch for our listing...... Or better yet,
Create your own Amiga user group! The AMICUS NETWORK by John Foust As forecast in last month's column, the AMICUS public domain library has increased by twenty disks. This increase is due to the many submissions we have received. The largest addition to the library is the 'Fred Fish disks,' a collection of fifteen disks of programs. Also, Phase Four, the Canadian distributors of Amazing Computing, sent several disks of software. AMICUS disk 3 contains both Amiga Basic and Abasic programs, including the programs from the second issue of Amazing Computing. Amicus PDS 3 contains 'arrange', a text formatting program, 'xref, a C crossreference generator, 'DPSIide', a public domain Deluxe Paint viewer, a 68000 memory tool and disassembler, a 'chop' program for truncating files transferred by the Xmodem protocol, and 'Argoterm', a tiny, 7 K assembly language terminal program, with source code. The Abasic programs include several casino-type games from R. W. Hutchinson, and a 747 simulator. The Amiga Basic programs include Kelly Kaufman's SuperTerm terminal program (from Amazing Computing 2), Graph-lt, a function graphing program, a cellular automata demonstration, and Gomoku as well as Eliza. AMICUS disk 4 contains programs and texts collected from the now-defunct Perennial Support Service, the first online source of technical information on the Amiga. The disk has program examples from older versions of the operating system, up to version 1.0. It includes the source code to the suite of programs R.J. Mical used to test Intuition. PDS 4 has a version of 'image ed', the precursor to Icon Ed, examples of requesters, the 'addmem' program, GEL, BOB, and playfield examples, input handlers, printer drivers, and much more, input handlers, and printer drivers. Disk 5 is information from the Amiga Information Network, also known as Amiga Link. This disk, combined with the version 1.1 manual chapter on printer drivers, contains enough information to create new printer drivers. AMICUS disk 4 has a prerelease version of that printer chapter, including the source code to several printer drivers. The disk has several examples of Amiga assembly language programming. Since the Amiga manuals assume that a programmer is working in C, a bias exists against those who prefer assembly language. Also, there are numerous errors in the 'include' files for assembly language. These errors have provoked at least one assembly language programmer to exclaim he must be the only person using the assembler, since the errors were so flagrant. A future disk might contain a complete list of the bugs in these files, for those who are interested. Disk 6 is a collection of IFF format pictures, with DPSIide, a public domain IFF viewing program. With DPSIide, you can enjoy the video art of others who own programs like Deluxe Paint. I would like to encourage submissions of Amiga video artwork. AMICUS could have several more disks of great pictures. They make great demos, and since they will be stored in IFF format, they can be used in many other Amiga programs. Digi-View Disk 7 has several example pictures from Digi-View, a video frame grabber from NewTek, a Topeka, Kansas company. These pictures are a spectacular demonstration of the Amiga's abilities — they look like television pictures! Digi-View™ is expected price to be $ 199, available in early May. It is a black-and-white digitizer, but color pictures can be created by filtering the incoming image._ ©©art SlhjS Communicate from your AMIGA With ElTerm, you can open your Amiga up to the world of telecommunications. ElTerm is a complete package for terminal emulation and file transfer. ElTerm can upload and download files using Kermit and Xmodem protocols. ElTerm will be available first quarter 1986. Suggested retail price is $ 75.00 US Dealer Inquiries Invited. Elcom Software 16 Oak St. 2 New Brunswick, NJ 08901 Amiga is a trademark of Commodore-Amiga Inc. ElTerm is a trademark of Elcom Software. The most interesting part of the process is the use of hold-and-modify mode, which lets pictures use up to 4096 colors. Hold-and-modify mode is a method of programming the Amiga graphics chip to produce as many as 4096 colors on the screen at once. It is sometimes called HAM mode. (AMICUS disk 2 contains a programming example of HAM mode, in C.) NewTek's digitizer has an announced price of $ 199, and they also hope to sell a companion video camera for around $ 200. According to NewTek's Tim Jenison, the use of color aliasing can effectively increase the number of colors beyond 4096. By fooling the eye, color aliasing can produce more colors than 4096. By coloring adjacent pixels in different colors, the blended colors become a third color. The digitizer is connected to the parallel port, and the software allows other programs to run at the same time. However, during digitization, the program does prevent the other programs from running. Note that Digi-View takes several seconds to digitize an image, as opposed to the A Squared video digitizer, which can digitize several frames a second. If all goes well, the next issue Amazing Computing will carry a review of the NewTek video frame grabber. Manx Aztec C Also, next issue should have a review of the Manx Aztec C compiler and assembler, comparing it to the Lattice program development system. Preliminary reports from developers who have used both systems claim that Aztec produces smaller, faster code than Lattice, and that Aztec C is easier to use as a native compiler, in the Amiga environment. For example, Aztec has an option of writing the compiler's symbol table to disk after parsing. This allows one to 'compile' a set of 'include' files — such as the AmigaDOS and Intuition files — and save the parsed information to disk. Later, in further compiles, the binary image can be included, and the compiler will not need to re-parse the unchanging 'include' files. The long scanning time of 'include' files under Lattice provoked some developers to remove the comments from their version 1.0 'include' files, thus speeding their compile time, and saving space on disk. Commodore-Amiga stripped the comments from the 'include' files on the version 1.1 disks to either save space, or reduce compile times — probably both. On the other hand, one user reported that Aztec C performs 16 bit arithmetic on compile-time expression evaluation, for such things as define constants. This could be a problem. Please remember these are unconfirmed reports. People Link In the search for the latest Amiga information and public domain software, I subscribe to several electronic networks, including CompuServe, the Source, Amiga Link, and several local Boss. I have contacts who send me summaries of the Usenet Amiga group. CompuServe has the advantage of a large subscriber base, which means there are more people who use the Amigaforum there. There are more technically literate people there than anywhere else, but this also means there are a lot of novices. CompuServe has rather high connect-time charges, too. I'm not against novices, of course, or of people seeking answers to questions about their Amigas. I do read every message in the Amigaforum, and the ratio of (personally) interesting items to uninteresting items has dropped to around 10 percent. At high rates, this begins to grind. I consider cutting back my online time. In some circles, this is called network burnout. In others, it is called fiscal responsibility. The novelty of reaching your credit card limit wears off quickly. I found a solution to this problem of high cost and low information content. Last December, I received an electronic ad on the Source, telling me about a network call People Link. This kind of ad annoys a lot of people — myself included — since you are directly paying to read it, and most systems have no way of screening such solicitations. The ad offered low rates, dozens of SIGs, uploading and downloading, mail services, and local access, all for rates a third of CompuServe's cost. I couldn't refuse — they offered free signup, and a free hour of service. W'& i CODE statement for inline assembly code. ¦ Error lister will locate and identify all errors in source code. ¦ Modula-2 is NOT copy protected. ¦ 320-page manual People Link has about 5,000 subscribers, as compared to CompuServe's 250,000 users. It offers similar services • mail, clubs, and CB — and the price is right. Also, the Amiga SIG has over a megabyte of programs, including most of the programs that are posted to CompuServe. When I tried to download a 256 K file from CompuServe, I spent an hour, and had only recieved 95 K before I halted the transmission. This was around midnight. On People Link, I got the file in about fifty minutes. Well, John Dvorak in Infoworld gave a plug for People Link, and I would like to, too. Their number is (800) 524-0100, (312) 870-5200 in Illinois. ¦ FULL interface to ROM Kernel, Intuition, Workbench and AmigaDos. ¦ 32-bit native code implementation with al) standard modules. ¦ Supports transcendental functions and real numbers. Serve of Eratosthenes Null Program Added features of Modula-2 not found In Pascal ¦ Programs may be broken up into Modules for separate compilation ¦ CASE has an ELSE and may contain subranges ¦ Dynamic strings of any size ¦ Machine level interface Bitwise operators Direct port and Memory access Absolute addressing Interrupt structure Multitasking is supported ¦ Module version control ¦ Open array parameters (VAR r: ARRAY OF REALS:) ¦ Type transfer functions ¦ 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 Niklaus Wirth). Regular Version: $ 89.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 file disassemblers, a source file cross referencer, the hermit file transfer utility and the source code to several of the Amiga Modules. Diskdrives It is not hard to connect a standard IBM drive to the Amiga, for use with the IBM Emulator. All the necessary signals are present on the disk drive connector. However, the Amiga multiplexes the motor-on signal, so a few chips are required for a proper homebrew design. Otherwise, (and this is acceptable to some) the motor has to be on all the time. With a few chips, it will turn on only when asked. Also, the drive must be able to send a 'disk changed' signal on Amiga pin 11, the other nonstandard connection on the Amiga drive. Some people added a momentary contact switch to their homemade drive. They pressed it whenever they changed the disk. Again, a few extra components will make the homemade drive more compatible with the Amiga. At this time, the details are comping together, and Amazing Computing should have a description of how to build your own Amiga drives. It turns out an extra 3 112 drive is as easy to build as a 51 4 drive. That is all for this month. Please continue sending in your Public Domain Software contributions and ideas. • AC* Rmazing Computing TM AMIGA™ Information and Programs 0 |
1 1 • JktfKA — ft Feed your Amiga RIGHT! Don't miss an issue!!! 12 Informative Issues $ 24 United States $ 30 Canada and Mexico $ 35 Overseas Send check or money order to: P j nipPBLICflTiailB. Inc. u ¦ P. O. Box 869, Fall River, IBH. 02722 Amiga™ is a trademark of
Commodore-Amiga, Inc. 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. The Fred Fish Freely Distributable Public Domain Library Please note that some Fish disk programs and texts are duplicated on the AMICUS public domain disks. Also note that some software is not debugged, or in some cases, not even correctly ported to the Amiga — Fish simply provided the source code on Amiga format for others to convert. These programs are marked with**'. Disk 1: Examples of windows; Perry Kivolowitz' kinetic ball program; dotty demo; speech demo; Amiga terminal; fast floating point demos; gadgets tutorial; 'gfxmem'. Disk 2: 'portar', a portable file archive program; two 'make' programs; MicroEmacs editor source; 'cc', a Lattice C compiler tool; 'alib', an object module librarian; 'xrf', a C cross-reference generator. Disk 3; 'gothic', a Gothic-letter banner printer; 'eforth', a portable FORTH written in C; ft', a fast text formatter; 'xlisp', version 1.4 of a public domain LISP in C *, 'roff', a portable 'nroff' lookalike in C. Disk 4: A Kermit file transfer program; 'bison', a GNU yacc' lookalike *, 'banner', a banner printing program; ’grep’; 'mycli', a simple CLI shell program; 'bm' and 'bgrep', both Boyer-Moore 'grep'; 'mandeP, a Mandelbrot set display program, version 1.0. Disk 5: speechtoy demo; 'freemap', a graphic memory usage program; disk read example; examples of graphics modes for playfields, bitmaps, fonts, and devices like the mouse, printer, joystick, timer; 'mandel', version with IFF support. Disk 6: serial and parallel printer configuration programs; 'mult', a program to print nonunique lines in a file; 'stripe', a program to remove comments and extra newlines from C source; Unix 'compress', a file compression program; an improved MicroEmacs; 'scales', a sound demo; 'sort', a file sort routine; 'dadc', a digital clock. Disk 7: The game of Hack, with executable programs and characters, maps, and rumors. This is the same adventure game described in a recent issue of AmigaWorld magazine. Disk 8: The sources and object files for the game of Hack. Disk 9: Mountain View Press FORTH, with screens for a 68000 assembler, Amiga-specific functions, and information about their commercial products; 'skewb', a Rubik's N-cube demo; 'setlace', a program to set interlace mode; 'sparks' and 'moire', graphics demos; 'proff', a portable 'nroff'-like program. Disk 10: fixobj', a smart 'chop' program to remove gasbag afterHUNK_END; trek73', a Star Trek game; 'conquest', an interstellar empire game; 'yachtC', a game like the name, IFF '. h' and example files; 'Is', a directory program; 'dehex', a de-hexify program, 'sq' and 'usq', file compression programs. Disk 11: Deluxe Paint example pictures, with DPSIide, a public domain IFF file viewer. Disks 12 through 15 were known to exist at press time, but an official list of contents was unavailable. Amazing Computing™ Index of Advertisers Advanced Systems Design Group 16 Metadigm, Inc. 2 Akron Systems Development 30 MicoLimits 34 Amiga Users' Group 68000 40 MicroSearch 18 Applied Visions 41 Micro-Systems Software, Inc. 20 Byte by Byte 7,13 Microsmiths, Inc. 37 Cardinal Software 45 M. W. Ruth Co. 40 Discovery Software C III PiM PUBLICATIONS, Inc. 2,24,46, 61 ECE Research & Devlopment Corporation 48 Slipped Disk 51 Elcom Software 60 SoftCircuits 44 Harvsoft 50 Software Supermarket 43 Interactive Analytic Node 29 TDI Software, Inc. 61 JenDay Software 21 Phase 4 Distributors Inc. 42 Lattice, Inc. 5 Polyvision 12, 52 Megatronics CIV UBZ Software 15 ZOXSO 35 COMING NEXT MONTH! In Amazing Computing A continuation of the four Amazing tutorials: The Amazing C Tutorial Lisp Tutorial Inside CLI Forth The Amazing AmigaBasic™ tutorial Business Amiga ROOMERS Miga-Maniac. The AMICUS™ Network New software and hardware releases for the Arjiiga™. New Amiga™ public domain software and, as always, a few surprises! BECAUSE YOU’RE GOING TO BUY ONLY ONE DISK BACKUP UTILITY FOR YOUR MAKE IT,® flRNDR IS EVERYTHING YOU EXPECT Marauder works on any standard Amiga with 256K of memory and one disk drive. Marauder backs up most copy-protected 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. Jmumi IS EVERYTHING YOU NEED Marauder takes advantage of Amiga's optional external disk drive and extra RAM if you have them. Maurauder, itself, is not copy protected in 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 all titles will be available FREE to registered users at any time. BEST OF All AMUR is AVAILABLE NOW!!! You can get Marauder at the SPECIAL INTRODUCTORY PRICE OF ONLY $ 39.95 B call now (215) 546-1533 AMIGA OWNERS... New Products are now available for your system. A SPELLING CHECKER with a 40,000 word dictionary. Fully compatible with editors such os Textcraft, it allows the user to add additional words. Spellcraft $ 24.95 If over 2,000 questions in several categories ore not enough, you can use the Editor to add your own or select one of several game variations. Talking Trivia $ 19.95 Carry your 1000 PC and all its accessories in this durable podded nylon cose with reinforced seams and heavy duty strops. Save 50% when you get a Modem for your AMIGA CARRYING CASE $ 109.95 • Direct 300 1200 Doud • Hayes compatible auto answer and dial • 8 LED status indicators • Free CompuServe Access Time • FCC approved • Full one year warranty Only $ 109 84321 Use your VISA or
MasterCard Same Day Shipping 800-232-6342 Nationwide
801-752-2642 Inside Utah To Order? Telex 5106012869 1 All lines from a point Dlines: IF l= 0 THEN X1=X: Y1=Y ELSE LINE (X1, Y1)-(X, Y) l=MOUSE(0): X=MOUSE(1): Y=MOUSE(2): Y=Y-1: IFX 477HEN X=47 END IF RETURN

Click image to download PDF

Merci pour votre aide à l'agrandissement d'Amigaland.com !


Thanks for you help to extend Amigaland.com !
frdanlenfideelhuitjanoplptroruessvtr

Connexion

Pub+

55.2% 
9.8% 
3.7% 
3.5% 
3% 
2.3% 
2.1% 
1.3% 
1% 
0.9% 

Today: 6
Yesterday: 74
This Week: 170
Last Week: 732
This Month: 2096
Last Month: 2867
Total: 77484

Information cookies

Cookies are short reports that are sent and stored on the hard drive of the user's computer through your browser when it connects to a web. Cookies can be used to collect and store user data while connected to provide you the requested services and sometimes tend not to keep. Cookies can be themselves or others.

There are several types of cookies:

  • Technical cookies that facilitate user navigation and use of the various options or services offered by the web as identify the session, allow access to certain areas, facilitate orders, purchases, filling out forms, registration, security, facilitating functionalities (videos, social networks, etc..).
  • Customization cookies that allow users to access services according to their preferences (language, browser, configuration, etc..).
  • Analytical cookies which allow anonymous analysis of the behavior of web users and allow to measure user activity and develop navigation profiles in order to improve the websites.

So when you access our website, in compliance with Article 22 of Law 34/2002 of the Information Society Services, in the analytical cookies treatment, we have requested your consent to their use. All of this is to improve our services. We use Google Analytics to collect anonymous statistical information such as the number of visitors to our site. Cookies added by Google Analytics are governed by the privacy policies of Google Analytics. If you want you can disable cookies from Google Analytics.

However, please note that you can enable or disable cookies by following the instructions of your browser.

Visitors

Visite depuis
03-10-2004
Visite depuis
23-02-2014