FacebookTwitterGoogle Bookmarks

the Amiga allows a young Amigan to see instantly whether they are on the right track. Nothing is more exciting than watching a child overcome a difficult problem. Their success becomes our success. Soon they begin teaching us. An Amiga Education Education on the Amiga is more than a long list of "educational programs". It is the ability to learn and develop through using more and more tools. It doesn't matter whether you are using a word processor, a spreadsheet, a paint program, or an adventure game (a great tool for teaching logic and mapping skills), each time you or your friends (young and old) sir down to the mouse and keyboard, you are on an adventure. You start with a task and end with an achievement. And, through your efforts, have enriched yourselves. We do learn with rhe Amiga. Like the students in Commodore's presentation, we grow each day by applying the Amiga. By working on individual problems and utilizing software and hardware combinations to achieve a goal, we expand our knowledge and ability. Each project becomes easier with the knowledge of the last, but we are not satisfied. We continue to improve by making the next project more complex. With each project, we use more fearures of the software and hardware available. In time, we gain new abilities. We grow and, as the early Amiga advertisements said, the Amiga does provide the creative edge. From "Amiga-Creativity in tbe Classroom" Students attempt a variety of tasks on the Amiga. Going the next step It is comforting to know we are becoming more familiar with the potential of the Amiga. However, there are ways to be even better Amiga users. You can learn more about your Amiga and advance Amiga use in total by doing one simple thing, help a kid. Children are the hope and furure for all of us.

Click image to download PDF

Document sans nom Mn COMPUTTfCG f iriginktt AalIGA Rcwnnr&x' V of unity i , OsiO rtctobc r 19q9 i S.T.95 Oinachi S-i.9 PUTTING IT geth: Progr nuning: APL Aiv$ J¥h$ A iga Saving -CoKjir Pictures In B SI0Ancl True P (CiysignerttHigiiage Explored: Multi-Forth MjsiugCiadgets IlyAssembh; ,SP Function Evaluator ImC
- Reviews SimCity IforthJ rbfes ional Compiler Hardware Project:
3e t IV a c kMc ) 1is* D miu-rtriu t ¦NT Reading, 'kiting,
and Resolutn Graph-ics ProgiWis whth Kids LrfMincP Education:
Bhj Macmne Oji Caffipusn, sTne Amiga At The CSU EummTr A BASIC
TyptKm Tutorial Program Thejtmiga Attends Rutgers ¦ts Program o
tr Big Machine on Campus 8 by Joel Hagen I lumlHiklt State 1
’niversity in Northern California goes Amiga!
Typing Tutor 18 by Mike "Chip" Morrison Stive the city f Keycaps from capital letters.
Reading, 'riting & resolution 14 by Joe DiCcira Three paint programs primarily designed tor pre-school and elementarv grades.
COLUMNS New Products and Other Neat Stuff 24 by Hiizabetb G. Fedorzyn Populous. OMNI-PLAY Basketball, and more!
Snapshot 31 by R. Brad Andrews I lelp Ramho stive Colonel Trautment in Kant ho III. Or drive a Ferrari in the Grand I’rix, PD Serendipity 35 by Mike Morrison Mike reviews Fred Fish disks -229 to
- 236.
No Fishing! 38 by Graham Kinsey Graham reviews PD programs from the local BBS.
Bug Bytes 50 by John Steiner John keeps us up-to-date with the latest software bugs!
Roomers 53 by the Bandito The Bandito lists his annoyances. vh:!e Commodore gets ready for Christmas, Video Schmideo 56 by Barry Salomon AC's Video Editor gives us helpiul hints and tips in video!
Video C Notes from the C Group 82 by Stephen Kemp A look at a search utility program.
REVIEWS HiSoft Compiler 29 by Cole Calistra A BASIC compiler that has good features, is quick, and well worth the price!
SimCity Review 4l by Miguel Mutet How would you handle Boston, Massachusetts right before a major nuclear meltdi nvn?
Jfortli Professional 85 PROGRAMMING
• TABLE OF CONTENTS* by Jack Woebr It Jills the requirements of
the profession;! 1 Forth programmer.
0 o AMAZING KNOW IiOW Better TrackMouse 22 by Robert Katz A tnie one-handed trackball mouse!
CONFERENCES SimCity Conference 43 edited by Richard Rae A conference with Will Wright and Brian Conrad of SimCity fame.
A1000 Rejuvenator 47 edited by Richard Rae A conference with Gregory Tibbs, Saving 16-color pictures in high-resolution 58 by Paul Castonguay Part Three of the Fractals series.
Multi-Forth 68 by Lonnie Watson Iiow to implement an interface to the A HP library.
More Requesters in AmigaBASIC 71 by John Wiederbirn Pushing beyond the limits of BASIC with system routines.
Glatt's Gadgets 88 b y Jeff Glatl Adding gadgets in Assembly.
Tshell Part II 93 by Rich Falconhurg A new Amiga program that will enhance the command line environment.
Function Evaluator inC 99 by Randy Finch A routine that accepts mathematical functions as string input and then evaluates the function.
SIDEBAR The Amiga In Higher Education 11 by Tony Preston Rutgers University, in New Jersey, recognizes the special value of the Amiga.
DEPARTMENTS From the Managing Editor 4 Amazing Mail 6 Index of Advertisers 96 Public Domain Software Catalog 109 Robert J. Hicks Doris Gamble Traci Desmarais Donna Viveiros Virginia Terry Hicks Robert Gamble A eft Pics tm Suggested Retail S49.95 Managing Editor: Associate Editor: Hardware Editor: Technical Editor: Music & Sound Editor: Video Editor: Copy Editor: Copy Editor: Copy Editor: Art Director: Photographer: illustrator: Production Manager: Map Pics - World1"1 Suggested Retail S59.95 Heraldic Pics"" Suggested Retail $ 34.95 Quality Clips for Your Quality Art Don Hicks Elizabeth Fedorzyn
Ernest P. Viveiros Sr.
J. Michael Morrison Richard Rae Barry S. Solomon Aimee 8. Abren
Derek J. Perry Karen Donnelly-Solomon William Fries Paul
Michael Brian Fox Donna M. Garant ADVERTISING SALES
Advertising: Jannine Irizarry Special Assignment: Barry
Solomon Marketing Assistant: Melissa J. Bernier International
Coordinator: Marie A. Raymond Marketing Manager: Ernest P.
Viveiros Sr.
Administrative Support: Aurors R. Trepanier For Tbe Commodore AMIGA1 ADMINISTRATION Joyce Hicks Publisher: Assistant Publisher: Circulation Manager: Asst. Circulation: Asst. Circulation: Corporate Trainer: Traffic Manager: EDITORIAL China Pics"11 Suggested Retail $ 34.95 Christinas Picstm Suggested Retail S34.95 These image-packed screens are in 16- and 32- color IFF format for use with paint packages such as Deluxe Paint II on an Amiga
500. 1000 or 2000.
Bird Pics"11 Suggested Retail $ 29.95 All packages require AmigaDos V1.2 or V1.3. a minimum of 512K of memory and a paint package.
To order, see your dealer or contact : Tangent 270 PO Box 38587-A1 Denver, CO 80238
(303) 322-1262 Deluxe Paint II is a trademark of Electronic Arts:
Amiga and Amiga- Dos are trademarks of Commodore Amiga.
1-500-678-4200 FAX 1-508-675-6002 SPECIAL THANKS TO: Buddy Terrell & Byrd Press Bob at Riverside Art, Ltd.
Swansea One Hour Photo Pride Offset, Warwick, Rl Mach 1 Photo Amazing Computing1* (ISSN 0886-9480) is published monthly by PiM Publications, Inc., Currant Road, P.O. Box 869, Fall River, MA 02722-0869.
Subscriptions in the U.S., 12 issues tor $ 24.00; in Canada & Mexico surface, 636.00; foreign surface for 644.00, Second-Class Postage paid at Fall River, MA 02722 and additional mailing offices.
POSTMASTER: Send address changes to PiM Publications Inc..
P. O. Box 859, Fall River. MA 02722-0869. Printed In the U.S.A.
Copyright© Nov. 1988 by PiM Publications, Inc. All rights
First Class or Air Mail rates available upon request PiM Publications, inc. maintains the right to refuse any advertising.
Pim Publications Inc, is not obligated to return unsolicited materials.
Ail requested returns must be received with a Self Addressed Slamped Mailer.
Send artide submissions in both manuscript and disk format with your name, address, telephone, and Social Security Number on each to the Associate Editor. Requests for Author’s Guides should be directed to the address listed above, AMIGA™ is a registered trademark of Commodore-Amiga, inc. Circle 153 on Header Service card.
From The Managing Editor Commodore Takes the Amiga to Education Computers and education have long been a strong combination. Once the personal computer was available to the general public, educators quickly began using them in instruction as well as administrative roles. The first educational computer programs were little more titan drill routines and examinations. The students responded to a series of random questions and the results were graded. If the students passed the lesson’s required skill level, they were presented with the next lesson and if they failed to achieve an adequate score,
they were returned to the lesson for review and re-testing.
Later, other aspects of the computer’s ability were used. Graphics and sound were introduced to reward correct answers. Soon programs were created which avoided answers completely and provided instruction through stories and interaction. Now, Commodore is focusing die Amiga at even greater educational needs.
Commodore and Education At one time, Commodore commanded a large portion of the educational computer market. The Commodore Pet was a pioneer Ln die quest for “computer literacy'.” However, due to time, economy, competidon, and internal company policies, Commodore lost diis edge. In the last year, Commodore Business Machines has launched a multipart program of advisors, grants, special promotions, and video tapes aimed direcdy at die educator. Now, it is apparent that CBM warns to regain their position, and they believe the Amiga is the way to do it.
Commodore began by creating an Educational Advisory' Board consisdng of professors, teachers, principals, educational dealers, and business executives. Commodore went funher by creating their Desktop Video Grant Program which awarded an Amiga 2500 with a hard drive, genlock, monitor, and a variety of software to each of its twenty winners.
This spring, Commodore began a special promotion directed at educators. They bundled an Amiga 500 widt memory expansion and a 1084 monitor for $ 999-00. They also announced that Amiga 2000 systems and Amiga 2500 bundles would be offered at a special educator’s discount.
Now Commodore has released a video tape aimed to excite the educational market in the potential and cost effective use of die Amiga in education. (See the article “Commodore’s Educator" on page
17) . In the video, Commodore demonstrates the Amiga's use in
several grade levels and aspects of education.
One of the most amazing aspects of diis video is what it lacks. All of the operations and advancements demonstrated by the students are performed with commercial software packages. None of the students are shown programming the .Amiga. And, although the Amiga is heralded throughout the video as an advanced and powerful computer, little is said about die actual hardware configurations.
The entire line of Amiga computers, from the Amiga 2500 to the Amiga 500, is shown widiout demonstrating dieir differences.
The effort by Commodore is obviously to showcase the Amiga’s abilities in a classroom environment without scaring die potential Amiga educator with a technical presentation. The video is constructed to show the Amiga as a tool for creative expression instead of a computation device. While the Amiga is certainly an advanced tool for art, music, video, and education in general, it is unfortunate diat the video did not stress die computing languages and materials available to students to manipulate and create their own programs on the Amiga.
Most people feel the strength of a computer in an educadonal environment is based on how many educational extensive programs exist for that machine that are educational extensive.
In diis video, Commodore has shown that die best use of a computer in an Mac-2-Dos includes a custom hardware interlace, driver software, file conversion software, and, optionally, a Mac-compatible 3.5-inch floppy drive. The hardware interface plugs into the Amiga external disk drive connector or into the last external drive of the daisy-chained disk drives. The Mac drive draws its power from the Amiga.
PACKAGE A: Package A includes a custom hardware interface, file transfer software, and file conversion software. Only $ 99.95' PACKAGE B: Package B includes a custom hardware interlace, file transfer software, file conversion software, a Mac-compatible 3.5-inch floppy drive, and a software driver to allow the Mac drive to be used to 1 I a intosh 1 well read and write standard AmigaDOS diskettes as well. Only $ 349.95' LIMITATIONS: Mac-2-Dos is a disk tiie transfer utility program; it is not a communications program, nor is it a Macintosh emulator. If DOES NOT permit Mac programs
to run on the Amiga.
’ Plus S3,00 shipping handling,! Plus S5.00 shipping handling CO residents add appropriate sales tax.
The FASTEST Hard Disk Backup Utility!
Only $ 69.95 Plus S3.00 snipping anu handling. CO residents add sales tan.
Coming Soon! QUARTERBACK TOOLS A collection of high-quality user-lriendly utilities.
It transfers both binary (pure data) and ASCII (text) files.
Let DOS-2-DOS be your PASSPORT to the world of foreign disk formats.
Only $ 55.00 Plus 53.00 shipping and handling. CO residents add appropriate sales tax.
Transfers MS-DOS . And Atari ST fifes w0 to and from AmigaDOS!
Liiini luilll until Central Coast Software 424 Vista Avenue Golden, Colorado 8040 Bag Phone 303 526-1030 i=j FAX 303 526-0520 L~' Dealer Inquiries Welcome Ivlac-2-Dos lets you read and write Macintosh diskettes on your Amiga!
Mac-2-Dos gives your Amiga the power to read and write files to and from 400k and 800k Macintosh floppy disks using a standard Macintosh-compatible 3.5-inch externa! Floppy disk drive connected to your Amiga.
Here are a few typical Mac-2-Dos uses: ? Amiga users can now have access to the extensive variety of Macintosh clip art available on Macintosh disks! ? Amiga users can now take their Amiga PoslScript files (on a Macintosh diskette) to most any typesetting service bureau to be output on professional typesetting equipment! ? College stu dents who are required to have a pricey Macintosh can now choose the Amiga and still meet the requirement of being Macintosh compatible! ? Amiga users can transfer all kinds of files, like word processing and desktop publishing files, spreadsheet files, or
database files. ? Musicians can quickly and easily transfer Standard Midi Files (SMF) between the Macintosh and Amiga!
' ...Quarterback is the program I've chosen to keep my hard disk backed up. .. Given the added power and lower price of Quarterback, it would be my first choice for a hard disk backup program.''
- Matthew Leeds. Commodore Magazine. June. 1989 ip« nil
U. S. Open Courses I: Shmnecock Hills. Menon.
Winged Foot, Bellerive &The Country Club (Brookline).
U. S. Open Courses II: Oak Hill, Medmah 3, Olympic Club,
Baltusrol and Champions.
PGA Championship Courses: Oakmont.
Firestone. Pinehurst 2, Oakland Hills & Southern Hills.
British Open Courses: Muirfield, Sandwich.
Carnoustie, Royal Birkdale & Royal Lytham & St. Annes.
PGA Tour Courses I: Doral. Torrey Pines. TPC Sawgrass, Cypress Point & Indian Wells.
Famous European Courses: Sotogrande (Spain).
Chantilly (France). Hoylake (England). Falsterbo (Sweden), and Club Zur Vahr (Germany).
Classic American Courses: Seminole, Pine Valley. Cherry Hills. Spyglass Hill andThe National.
Great Resort Courses: Muirfield Village. Eagle Ridge. Mission Hills. Dorado Beach and Banff Springs.
Each of the 8 3'A" diskettes contains five exciting courses. Write for further information or send just S20 each disk, US currency. (Shipping, handling, overseas mai I inciuded!) Send your check or money order to MOONLIGHT DEVELOPMENT, 329 Shoreline Place, Decatur, IL 62521. Please allow 2-3 weeks for delivery.
Mean 18; :s a IiaOem** of Actotaoe AMIGA s a tracwnwK of Commodore-Amiga. Inc Circle 190 on Reader Service card.
Educational background is to use the computer as a tool.
By allowing students to perform applications in the pursuit of other tasks, the students have not only learned how to use the computer and continued their education, but they have grown in the concept that die computer is a tool. The computer becomes an appliance of learning rather than the subject of lessons.
Education and You Why should education be of interest to all Amiga users? The reasons Amigans purchased an Amiga are as diverse as die individuals themselves. Each of us look at the computer and see different applications. For most individuals, education alone is not a prime inducement.
We do learn with the Amiga. Like the students in Commodore’s presentation, we grow each day by applying die Amiga. By working on individual problems and utilizing software and hardware combinations to achieve a goal, we expand our knowledge and ability.
Each project becomes easier with the knowledge of the last, but we are not sadsfied. We continue to improve by making the next project more complex.
With each project, we use more features of the software and hardware available.
In time, we gain new abilities. We grow and, as the early Amiga advertisements said, die .Amiga does provide die creative edge.
Going the next step It is comforting to know we are becoming more familiar widi die potential of the Amiga. However, there are ways to be even better Amiga users.
You can learn more about your Amiga and advance Amiga use in total by doing one simple thing, help a kid.
Children are die hope and future for all of us. They posses one aspect of knowledge that we have tried so hard to lose, their innocence. There is not a single Amiga user who would not benefit from working with his brother, daughter, cousin, or neighbor on the Amiga.
Besides die obvious opportunity of playing the latest arcade game under the guise of “demonstrating” the Amiga, children can ask questions and provide a perspective on things we are sometimes too busy to notice. Children see things differently and want to understand totally. Once excited, a child is completely involved in a project.
Young people are problem solvers and a computer will encourage them more dian anything else. The one-to-one relationship between a young person and the Amiga allows a young Amigan to see instantly whether they are on the right track. Nothing is more exciting than watching a child overcome a difficult problem. Their success becomes our success. Soon they begin teaching us.
An Amiga Education Education on die Amiga is more than a long list of "educational programs”. It is the ability to learn and develop through using more and more tools. It doesn't matter whether you are using a word processor, a spreadsheet, a paint program, or an adventure game (a great tool for teaching logic and mapping skills), each time you or your friends (young and old) sit down to the mouse and keyboard, you are on an adventure.
You start with a task and end with an achievement. And, through your efforts, have enriched yourselves.
• AC* Simply The Best Amiga Hard Drive SUPRADRIVE HARD CARD FOR
AMIGA 2000 Before you buy a hard drive, look around. Look
closely. Compare speeds, but also look at
Interfaces...Software...Value. We think you’ll agree that
SupraDrives are Simply The Best Amiga Hard Drives. Here's why
... with revolutionary new WORDSYNC™ INTERFACE Each SupraDrive
for the A500 A2000: Autoboots directly from FFS partition •
Interface allows super smooth video, sound, etc., with no rude
interruptions for hard drive access • Compatible with
Bridgeboard™, RAM, digitizers, other boards • Supports MS-DOS
disk partitions with Bridgeboards • Installs easily •
Pre-formatted & ready to use
• Includes 2 floppy disks of software & clear, thorough manual •
Fine tuned assembly language driver software • Blind data
transfers improve speed 3x
• Knowledgeable tech support • Interfaces also available
for unlimited expansion • OPTIONAL 2MB RAM Breakthrough Speed.
SupraDrives give you access times as low as 11 ms. and data transfer speeds of over 500K sec. (Amiga® 2000) or 326K sec. (Amiga 500).
Features like full support of Workbench™
1. 3, the Fast File System (FFS), and multitasking make these
drives FLY.
State-of-the-Art Interfaces.
Supra's interfaces (included with every SupraDrive) give you innovative features no one else can match. The revolutionary WordSync™ Interface transfers 16 bits at once, which gives A2000 SupraDrives DMA speed without DMA hassle.
The A500 interface passes the Amiga bus signal through to your other peripherals; without Amiga bus pass-through, your system is severely limited. And all Supra interfaces feature SCSI ports for easy daisy-chaining.
The Best Software.
After installing the drive, you’ll be glad you have Supra's full array of powerful, easy-to- use software. SupraFormat makes formatting a breeze and lets you use up to 30 partitions and various file systems FFS, MS-DOS®, Unix, Macintosh™, and more! SupraEdit lets you access low-level Amiga system information, and other included programs make using a hard disk fun and easy.
Irresistible Value.
All this is available at a price you'll love.
Look into it! Only Supra Corporation an experienced company with a proven commitment to the Amiga and its potential gives you such an attractive alternative: The SupraDrive. It's Simply The Best Amiga Hard Drive.
Ask your dealer for details, or call: Supra Corporation All Supra Products 1133 Commercial Way Albany. OR 97321 503-967-9075 Are Made in the U.S.A. ORDERS: 1-800-727-8772 SupraDrive, WordSync, SupraFormat. And SupraEdit are trademarks of Supra Corp. Amiga is a registered trademark and Workbench is a trademark of Commodore-Amiga. Inc. MS-DOS is a registered trademark of Microsoft Corp. Macintosh is a trademark of Apple Computer.
Circle 106 on Reader Service card.
Big Machine On Campus The Amiga plays a major role at the CSU Summer Arts program by Joel Hagen Imagine an Amiga class taught by 3D and animation maestro Steve Segal, digitizing and rotoscope expert Gene Brawm, and performance professionals Rob Terry and Jody Gillerman. Twenty- five students participated in that class this past July, turning out remarkable work in marathon sessions. I was the fifth Amiga specialist teaching there, specializing in paint techniques.
The class was part of the largest interdisciplinary' arts program in tire Western United States. Humboldt State University' in tire Northern California coastal redwoods was home to the fourth year of tire CSU Summer Arts program.
Each summer, tire nineteen campuses of dre California State University system pool dreir efforts and their budgets to allow' students to “perfect their artistic skills through interaction with world- renowned professional artists," as the catalogue puts it. For four weeks, the campus is alive with activity from electronic music to chamber groups, dance to opera, video to figure drawing, Outside, audiences w-ere also privileged to see many of these guest anists on stage in the spacious auditorium. During the four weeks, hardly a day went by without a public performance or lecture.
Initiation The computer graphics class is always extremely popular. Students have a wealth of equipment at their disposal, including sixteen Amigas, six color Mac Its, and four or five Targa systems running Tips and other graphics soft- wrare. There w'ere laser printers, HP Paintjets, scanners, cameras, digitizers, framegrabbers and video editing systems.
A full Interactive performance room was set up with Amigas, a Fairiight board, LIVE!, a MindLight 7 system, and Man- dala. The students never had few'er than three instructors, and at times as many as seven. Monitors w'ere glowing virtually around the clock, and it was not uncommon for instruction to still be going on after midnight.
The man responsible for initiating this program is Chico State art professor Steve Wilson. In addition to his w-ork in traditional media, Wilson has a penchant for electronics and wras building his own computers before most artists w'ere even aware of them. With the advent of sophisticated, affordable computers and graphics software, Wilson is a persuasive advocate for their infusion into the arts.
He sees the computer as a means of accelerating learning, as a superb tool for tinkering with ideas, for enjoying the immediacy of experimentation. His suggestion to us for conducting classes was to bombard the students with tools, techniques and ideas; give them more than they could absorb with die idea of making them aware of the myriad of possibilities that exist for an artist using A3001 BBEIBBK IX SPEED BAMm New 25Mhz 68030 Upgrade Kit from GVP Puts ibmorrow's Performance in Your A2000 Ibday 25Mhz 68030 CPU and 68882 FPU with fully implemented BURST mode 32-bit memory. An order of
magnitude faster than A2500.
Up to 8MB of State-of-the-art NIBBLE MODE 32-bit DRAM memory averages zero waitstates during 68030 BURST mode.
Built-in Hard Disk Controller direct on 32-bit bus keeps ALL A2000 expansion slots free even when our hard disk is installed!
Backed up by GVP's unique full one year warranty.
25 Mhz 68030 Accelerator A3001. 25Mhz 68030 68882 Upgrade Kit Technical Highlights:
• Asynchronous 68030 design allows high clock rates and GENLOCK
• Factory Installed 25Mhz 68882 floating point processor, twice
as fast as the older 68881 chip.
Amiga rs a registered trademark o! Commodore-Amiga Inc. IMPACT and GVP are trademarks of Great Valley Products, Ine
• Fully DMA-able AUTOCON-FIGured 32-bit wide memory. Up to 8MB.
• Built-in AUTOBQOTing hard disk controller supports up to two 40
or 80MB drives (11 19ms access).
• Selectable 68000 fail-back mode for full floppy-based game
For more information, or for your nearest GVP dealer, call today. Dealer inquiries welcome.
FAX (215) 889-9416 • (215) 889-9411 * BBS (215) 889-4994 GREAT VALLEY PRODUCTS INC. 225 Plank Ave., Paoli, PA 19301 computers. We surrounded diem widi tools and software, showed them how to use diem, and stayed with them into die night to answer questions one-on-one as diey took off with their projects. The results were impressive.
The secret of the event's success The success of this program is probably due to many factors. In die first place, die course is well designed by Steve Wilson. The students tire highly motivated, and have chosen to attend this program radier than spend their summer another way. This is a far cry from the average junior college student looking for diree easy units to slide through. The caliber of talent was high.
Because so many more students apply for admission to the class dian can be accepted, an initial filter is achieved by examining slide portfolios. Many of die students are working professionals in the arts. Of great importance was sufficient hardware. Each student had a computer available day and night, no waiting.
Computer projects seem to require long blocks of uninterrupted time. This need was filled at Humboldt with die flat-out intensity of a “studio" atmosphere, instead of the sluggish time-clock creativity of die classroom.
As a long lime freelance ardst, 1 want to emphasize this last point. A studio atmosphere is elusive. At times, it happened at Humboldt. When creative people are working togedier in one room, trying new techniques and exchanging ideas, an interesting environment can emerge. Good ideas propagate.
Fatigue, with camaraderie, becomes intensity. Stress becomes a sundance and marvelous solutions emerge from mundane problems. More dian once with the students, I saw the Guru trash a day's work only to see a superior version emerge by sunup, i often saw one student’s good idea picked up by others and played like visual jazz, variations on a theme. Also, students helped each other, teaching techniques learned earlier in die day. 1 think there is no better way to imbed new knowledge than to immediately teach it to someone else. As it happens, I am talking about a summer arts program. I could as
easily be talking about a user group or just a handful of local Amiga enthusiasts who decide to get together and jam every couple of months. There is always plenty of solo time. Occasional full immersion in that elusive studio atmosphere pays rich rewards.
Perhaps the lab situation on campuses could be altered a bit to foster this aunosphere. Many computer labs are mixed graphics and business. Loud brainstorming around the Amigas by art students disturbs die business student typing his term paper. A special graphics night might be established in diese labs with extended hours for late nighters.
Enough computers to accommodate several students is, of course, critical to the flow' of learning. This brings up one of the Amiga’s obvious advantages its low cost. For instructional purposes, the combination of price and power is unbeatable. For a student headed toward a career as a professional graphics artist, solid experience on the Mac is essential.
It is die standard tool in mosr graphics finns. But for instmctional purposes in everything from design to video, painting, animation and ray tracing, I don’t diink there is a better choice than the Amiga. One student, an art teacher by profession, was particularly excited about teaching color dieory on the Amiga. He saw it as a way of getting right to the concepts without having students bogged down in die frustration over learning to mix and apply paints.
Tire Amiga’s role I wras fascinated to see several of the artists who were starting out on the Amiga eager to get over to the “big machines” in the other room: die Macs and die Targa boards. After a couple of days, many came trickling back into the Amiga room and booted Dpaint m. They had liked the resolution, the color, the stable image of the ocher systems, but the intuitive nature of the Amiga and software like Dpaint was compelling.
Again and again I heard the same diing, “the .Amiga is more fun."
One specific advantage die Amiga has over other systems is its facility widi animation. This became the main focus of many of the students. Aldiough beautiful images were being produced in die Mac Targa room, toward the last week die Amigas were booked solid day and night. I heard one student grumble from the doorway, “Oh well, I guess I’ll Scary monsters and super creeps: scenesfrom “Stormy Night’’, an animation by Dean Wellins done iri traditional cel animation style using Dpaint HI.
Go back and work on the Everex for a while, but call me if an Amiga opens up." Animation was the “Amiga factor" above all else.
71}is campus is bopping Steve Segal gave a great demonstration of traditional cel technique using Dpaint. This was the direction most of die artists followed. He also showed Sculpr-4D to a fascinated crowd, but no one really pursued it.
The immediacy of Dpaint, Animator, The Director and Photon Paint seemed more alluring. Gene Brawn showed his rotoscoping methods in detail, and several students followed that lead with excellent results. I introduced a few students to The Director so they could incorporate special effects and tiding into ANIM’s created with Dpaint and FrameGrabber.
With so much interest in anima- don, RAM became a critical issue. Four 2000's had 3 meg, and one had 7 meg, a 68030 and fat Agnus. The rest of die machines were 500’s with one meg.
These were fine for basic work and any painting, but they topped out pretty quickly on animations. Students resorted to producing animations in short segments to append together later on the larger machines. Memory conservation became a valued craft.
Students soon learned to close the Workbench and avoid running background programs like virus checkers.
We also had the advantage of good insert editing video equipment.
Students could produce long animations in segments, as in the two pieces illustrated here, then assemble them at die video stage, adding a soundtrack.
The memory issue was somewhat circumvented and, thanks to the skilled video coaching of Rob and Jody, the results were very professional.
The animadon frames shown here demonstrate the variety of approaches students took in their work. “Stormy Night”, by Dean Wellins, was done in tradidonal cel animadon style using Dpaint III. Each segment was first rendered as line drawings, then colored with die FILL toot after checking continuity'. The piece runs remarkably smoothly since Dean had the skill and patience to design the piece for a 15 frame-per- second play rate. This requires subtle incremental changes frame by frame TL Arnica. Fn Education fa hen it comes to coffege fife, the Amiga has notget etyoyed the acceptance other
computers hare. Rutgers f nioersity in f ew lersey is one schoofthat has recognized . T • . t A t A ~T~t I A Jd f -O sn -r ftr J S I Those interestedin attending- the meetings can caffior write the SIAM). Flee thephone number andaddress befow.J The lane meeting began just after 7pm with the usuaforganizationaf'terns, but the powerfufsetup for graphic w-ts students The one-year-o fa fab houses six A2000s, each with 3 megabytes of memory.. Each2000is networkedto a Sun 3 60 wor(station through students f which were shown on a oideotope made by the cfass. One of the assigned projects
inaoffed the image of a teapot. The students were reauired to create an animation starting and ending u Profesi has considerabfegraphics capabmies, it seconds to render under Scufpt 30. An identicafrendering on a A2500with a 68020 toof fust 15 seconds Since much of the student word retjw'rcs a fot ofcompfex rendering, a students woufdsetup their image, start rendering andfeaae it running affnight Pm lessor rafazzihasn t hadan easy timegetting the Amiga into Rutgers. She attemptedto get some hefpfrom Commodore insetting up thegraphics fab. Commodore showedfittfe interest, ff thoseguys in
(Rest Chester coufaonfy see what has been done at Rutgers. The marketing types at Commodore don treafize how many systems a setup fife this woufd'seffj The students thatao through thatiindofacurricufmwiffmostcifefy l . A • - . J-t . . I 7) d the fab. L hen a student hefping with the demonstrations was asiedwhat it is used for, the repfywas, Resftoppub fishing stuff not much efse. The studentdefinitefy showeda bias towards the Amiga if ext, Prif ip fmbrenda, of 71 One (TV One creates commerciafs using- the Amiga showedofftheA2500. Phifs company does a fot of commerciafs on the Amiga, andPR
if is the Amiga may not hare the same aided (juafity when compared to some of the professions strong interest in o-ideo. Jt was Rindof nice to meet some of the fofis hadspoien with on focafbuffetin boards, matching faces with names am certain that the Amiga fdsers tjroup of South lersey wiffbe a success.
For additionaf information onAOVf, caff (609)667-2526 or write them at; Aid j,
P. 0. Box 3761, Cherry iff, MT08034.-Tony Preston AccelerPisk
Get Reliable, Bootable Fast Floppy Access Now!!!
Why wait for DOS 1.4?
AccelerDisk uses Fast File System on ail your drives to give you more storage, and speed increases of up to 5 times!
$ 29.95 $ 49.95 with source MJ SYSTEMS Dept 10B 1222 Brookwood Road Madison, Wl 53711 1-800-448-4564 Answered 24 hours (Info: 1-608-274-5563) MasterCard VISA accepted 1 Circle 176 on Reader Service card.
And dedication on die artist's part to create so many drawings for each second of play. The results are clean and professional, justifying the extra effort.
To keep the ANTM size as small as possible and to make efficient use of available RAM, good palette management Is important. If l6 colors or even 8 are sufficient, then ANIM size is significandy reduced. Animations widi large, clean areas of color translate well to video, and it is often possible to design beaudful pieces around an eight-color palette.
When transferring to video, color choice is crucial. Many colors which look great in RGB simply do not work in NTSC. Red is notorious for “crawling" into odier colors when transferred to NTSC. A good rule of diunib in video palettes is to use no color with an R, G, or B VALUE higher than 12. Very dark colors tend to be indistinguishable from each other.
The opening scene of “Stormy Night” makes clever use of Dpaint’s MOVE requester to achieve a “multiplane” effect as the view'er zooms in on die house through the branches of a tree in the storm. The house was created full screen, then pushed back on the 2 axis in the MOVE requester and moved toward die screen plane brush position in die same total number of frames as die ANIM. The leaf brushes were then overlaid. During the zoom, the leaves w'ere doing X and Y transitions to give the muld-plane effect poineered by Disney in his early features.
“The Hit”, by Neal Stillman, demonstrates a visual style unusual for a computer animation. The use of black & white, and the dark, soft-focus, film-noire look are very effective. The painting technique used in the animation is a monochrome technique that I teach. It relies on having a sequential gradation of values from dark to light in the palette.
With this entire sequence selected in Dpaint as a RANGE, the powerful BLEND and SHADE tools can operate. In SHADE, one mouse button lightens and the other darkens. BLEND pushes areas of the image in the direction of brush movement, creating a soft edge as it goes. Neal also made extensive use of the SMOOTH mode to soften and blur portions of each final image frame and get away from the crisp, pixel look of typical lo-res animation.
This is a very stylish piece, and a great example of effective use of a limited technique. Neal learned the fundamental technique in ten minutes and stuck with it through the entire project. It is not always essential to know the software inside-out to achieve interesting results. I feel it is quite easy to get a student going on a good project quickly with a few basic tools, bringing the rest of the functions in little by little.
In my opinion, the best software lends itself to this approach.
One valuable tip I might pass along to anyone creating animations is to save under two names. While working on an ANIM, updating it and diligently saving every few minutes still leaves the project vulnerable to Read-Write Error Guru crashes. The tragic thing is that such a Guru in the middle of a save not only means a trashed ANIM file on the disk, but a system lockup that loses the only other copy of the ANIM, the one currently active in the paint program. For safety, save duplicate copies of the ANIM under different file names, then save to them alternately as work progresses. In addition,
important project disks should always be backed up. Electronic art is a deceptively tenuous medium.
While all this animation w'as going on in die Amiga room, and beautiful high-resolution images were coming out of the Mac Targa lab, Rob and Jody had tm amazing performance studio set up in the adjoining room. Students w'ere creating images and brushes in the Amiga room and using them with the Mandala performance software next door. They were able to create visual “hot-spots” on the screen ¦which could be “touched" by the performer as their live image w'as genlocked through the Amiga.
Keyed to sound and image events, kitricate real-time performances v ere created. Dancers were drafted from other classes for collaborations, and the studio w’as packed with onlookers as they whirled under the hot lights triggering chimes and thunder from the large amps with each kick and sweep.
Some of us used the performance studio for relaxation. I recall a beautiful time around two in the morning when Shu-Lin, a tireless animation student from Taiwan was well into 40 hours without sleep. 1 began hearing clear, structured music from the performance room, getting cleaner and cleaner as time passed. This went on for over half an hour. Looking into the dark room. 1 could see Shu-Lin lost in tranquility under the video light, her amis moving in smooth patterns while she stood relaxed, fixed on her own feedback.
1 looked around the Amiga room at the dozen or so students still working at this late hour. Gene was showing a sophisticated digitizing technique to a small group in one corner w'hiie others w'ere locked into the mental groove of frame-by-frame animation. Some were just staring into space, lost in Shu-Lm’s genlocked mantra. It occurred to me what a quiet pleasure it was to see learning happening as it should.
• AC* : For Information Contact: CSU Summer Arts The California
State University Office of the Chancellor 400 Golden Shore Long
Beach, CA 90802-4275 HardFrame 2000 The Super-Speed, DMA, SCSI
Hard Disk Interface for the Amiga2000
• AutoBoots AmigaDOS 1.3 (Price Includes HardFrame Eprom!)
• Directly Boots the New Fast-File System!
(Doesn't Need Old FS!)
• Auto-mounts All Hard Disk Partitions (no Mount List Required!)
• Designed-in,Ultra Strong, Multitasking Performance
• High Quality Metal Frame for Stable, On-Card, Hard Disk
• Power Cabling Directly from Card to Disk
• 50-pin Cable Included
• Supports up to seven SCSI hard disks of any size How fast is
fast? HardFrame 2000 transfers data at Amiga bus speeds! It’s
actually faster than the hard disk mechanism itself! And even
more important in the Amiga's multitasking environment,
HardFrame 2000 has extremely efficient DMA circuitry to get on
and off the bus in almost no time at all: 280ns to get on;
200ns to get off. And it's true, dedicated DMA, too!
HardFrame 2000 autoboots and automounts directly into the
AmigaDOS™ 1.3 Fast File System old file system partitions
are not needed!). The core of any DMA SCSI interface is in its
SCSI protocol chip and DMA chip. MicroBotics has chosen the
new, high performance Adaptec AIC-6250 SCSI chip, capable of up
to 5 megabytes per second raw transfer speed, and the Signetics
68430 DMA chip running at 12.5 megahertz. Then we added
additional FIFO buffering and enabled 16-bit wide data
transfers for maximum throughput. The sophisticated design of
HardFrame 2000 provides for automatic SCSI arbitration,
selection and reselection. The hardware supports either
synchronous or asynchronous data transfer. HardFrame 2000 can
function as either the SCSI bus initiator or the target and can
reside in a multiple master environment. Physically, Hard
Frame 2000 is optimally flexible: the compact, half-size card
comes attached to a ful! Length, plated aluminum frame. The
frame has mounting holes positioned to accept standard, 3.5"
SCSI hard disk units such as those manufactured by MiniScribe,
Seagate, Rodime, and others (hard disk mechanisms must be
supplied by the user or his dealer as a separate purchase
item). Alternatively, you can cable-connect to a SCSI drive
mounted in your Amiga’s disk bay or in an external chassis. As
many as seven hard disks may be connected to a single
HardFrame New!
8-UP! (DIP) FastRAM Another great memory board from MicroBotics, 8-UP! (DIP) is the "brother" of the original 8-UP!
(which uses SIMMs and PopSIMMs to fill its memory space). 8-UP! (DIP) uses conventional 1 megabit RAM chips in standard sockets to provide your Amiga 2000 with 2, 4, 6, or 8 megabytes of autoconfiguring FastRAM! 8-UP! (DIP) is a super efficient CMOS design for lowpower consumption and high reliability. Suggested list price, $ 239 (0k installed)
2000. There is no size limit on each disk. HardFrame 2000
includes a 50-pin SCSI cable and header connectors for
either 50-pin or 25-pin cable connection. Also included is
a current tap to power frame- mounted drives directly from
the slot itself. HardFrame 2000 comes complete with driver,
installation, and diagnostic software.
Available NOW! Suggested list price, S329 (hard disk not included) Frameless version: S299.00. See your Amiga Dealer.
The HardFrame 2000 photo shows the product with a MiniScribe twenty megabyte hard disk installed. Hard disks are not included in the purchase price of HardFrame. Note that if placed in the first slot, Join MicroBotics I ONLINE TECHNICAL SUPPORT I
¦ (The Byte Information Exchange) * | -call 1-800-227-2983 | for BIX membership information! HardFrame uses only one slot even with a disk attached.
U MicroBotics,Inc.
Great Products Since the Amiga Was Born!
811 Alpha Drive,Suite335, Richardson,Texas75081 (214)437-5330 Tell your dealer he can quick-order Irom MicroBotics directly - no minimum quantity -show him this ad!
'Amiga' is a registered trademark of Commodore-Amiga, "HardFrame 2000-. "B-UPI". ‘PopSirnm’, are trademarks ol MicroBotics, Inc, tlad no, 'mm, m AND RESOLUTION ' A look at three Amiga graphics programs designed with kids in mind by Joe DiCara This article will review three paint programs primarily designed for preschool and elementary grades. Each program will be explored to leam its capabilities, features and usefulness. The use of these programs as stepping stones to introduce both children and adults to tire world of computers and computer graphics will then be covered.
In The Beginning The promise held out by the Amiga to education has always been great. Its versatility and friendly interface, as well as its graphics and sound capabilities make it a natural for school and home use. But as we have learned since the Amiga’s introduction, having the right hardware parts does not guarantee immediate success. The key catalyst, of course, is software the mightiest engine is nothing more titan a boat anchor without the proper fuel.
Early on, some folks saw this computer’s educational potential and quickly began creating applications to meet the need, but a year after the machine’s introduction there were few programs of this type available. Most programs were ports from other machines text only, written in BASIC, and utilizing none of the Amiga’s advanced features. For those few that made the extra effort to use the speech, sound, and special graphics abilities, such as HAM (hold and modify), their programs found a very limited market. Part of the responsibility for this falls upon Commodore’s decision, conscience or
otherwise, to stand back from the educational market. With the absence of Commodore’s leverage to get these new computers through the front door of schools, these early pioneers were, in effect, left holding the bag.
Fortunately for all of us, Electronic Arts and Dan Silva also realized this machine's promise and capabilities, and created DeluxePaint. Here was a program that everyone could use for enjoyment, education or productivity.
Soon others followed, some concentrating their efforts toward special needs, namely children. With these new tools, the Amiga managed to hold on and wedge its way into industry and education.
Talking Coloring Book The first program we will examine, Talking Coloring Book, was first introduced in early 1986 by JMH Software.
This program is aimed straight at preschool children. While it does not use high-powered graphics (only nine crayons are available) it does take advantage of the mouse interface and most importantly, it uses the Amiga’s sound capability to produce good clean understandable speech. JMH has provided a very enjoyable and useful program that not only introduces basic art concepts but also teaches relationships between the spoken and written word.
Upon boot-up, a colorful clown introduces die program. Clicking on die continue box brings up the options menu. At diis point, a voice asks the child to make a selection. The four choices Demonstration, Practice, Color, and Draw can be selected either by a click of the mouse or typing die proper letter on the keyboard.
The Demonstration selection teaches the student die relationship between a color word and the associated color. This sequence can be repeated, or a new color can be displayed simply by moving the mouse pointer to the proper box.
The Practice option verbally directs the user to identify each of the nine colors. Here again, die mouse pointer is moved and elicited to select the color.
The computer patiendy teaches the student, praising correct choices or politely offering two more chances to pick the correct color.
The third option, Color, loads a menu of permanent pictures that may be colored. These are also selectable either by mouse or keyboard. Upon selection, an uncolored picture is quickly loaded.
Off to one side are die crayons. A nice feature here is diat die arrangement of the crayons is random. Each time a picture loads, the crayons will be in a different order, diereby assuring that the user is learning the color, not just its position on the screen. The student selects a crayon, the crayon’s color is turned on, and the computer says the name of the color to reinforce die learning process. The pointer is then moved to the region to be colored, and a click of the mouse flood-fiUs it with the selected color. An eraser is available if the young artist changes his or her mind.
The final option, Draw, allows new pictures to be drawn, changed and stored. After saving a drawing, these pictures are available in the Color menu for coloring.
My Paint MyPaint. Released in 1989 by Prism Computer Products, is a true paint program designed with kids in mind. The form and format of this program resembles professional paint programs.
The first of the paint tools available is the paint color box. When a color is selected a smiling face appears in that color to verify and remind the user of the color chosen from the palette of twelve colors.
The next tool is Paint Brushes. The user has a choice of a wide or narrow brush.
The last tool in this group, Fill 'Em Up.
Flood-fills the drawing.
A number of paint effect tools is provided. The first is Flashing Colors.
Selecting this icon color-cycles all colors except white, black, gray, flesh and brown. The Mirroring tool duplicates the image being drawn in each quadrant of the screen. The final tool in this group is Color Brush. Selecting this option will produce a multi-colored brush. Ail colors are used in this effect, except those mentioned in Flashing Colors.
Other special features and capabilities include the ability to choose and load one of the 28 drawings, a clear screen function, a gadget called Surprise Picture that randomly selects any of die stored images, and Listen to Sounds. This last function will produce an appropriate sound the first time a picture is selected in a session.
Hey, got any cotton candy?: the opening screen of the Talking Coloring Book by JMH Software MyPaint is a well thought-out program. Everything from lire yellow diskette to the animated icons were designed with children in mind. It is simple to use, yet provides all the tools that will allow a young creative mind to expand.
Talking Animator Talking Animator, released in 1989 by JMH Software, combines many of the features provided in the two previously discussed programs, then adds text, speech, a palette of 8 colors and, as the title implies, the ability to do simple animation. In the documentation, JMH calls this program an idea presenter and rightly so. Talking Animator is more than a paint program. With the ability to print any image or to interface to videotape, via a genlock, the user can produce a simple greeting note or perhaps graphically portray what their summer was like.
Though Talking .Animator's drawing palette is limited to 8 colors, a requester can be called up, allowing a color to be changed to any one of the Amiga's 4096 available colors. While the current page is limited to the eight selected colors, every page within the animation can have its own custom palette.
Drawing tools are limited to just two brush sizes straightline draw', and color flood-fill. Text can be typed in the picture simply by positioning the cursor where desired and typing. When this page is displayed in the animation, the text on screen is spoken. Be careful here, as this feature uses the Amiga narrator.
Some words, though typed correctly, will not sound right due to tire phonetic interpretation of the text. To help, a Talk gadget can be clicked on at any time, allowing the word to be corrected immediately.
Perhaps of the ten gadgets available, the Copy and Flip functions deserve the most explanation. After die first page is drawn, a click on the Copy gadget produces a duplicate picture and tire page counter is increased. Now the next page of tire animation is drawn. A nice animation aid is available here. By holding the “control” key down and clicking on the Page gadget, the previous drawing is revealed by ghosted blue lines. Now the current page can be drawn with easy reference to any existing page ahead or behind. It’s a simple but very effective technique. To preview the animation, just
click on Flip and behold the creation. Remember to use the text capability; it adds spoken narration that greatly enhances the picture-story with a fun new area of expression. Only the amount of available memory will limit the size of the animation.
Included with the main program disk is another disk containing demonstration animations, each requires at least one megabyte of memory. Also included is a single page of documentation. This is supplemented by on-line, spoken instructions for all functions.
The Sum is greater than the parts As stated, I would like to explain how these three programs can be used to introduce and develop anyone’s interest in computers and, in particular, prepare them for the more advanced paint animattion programs now available to the .Amiga community.
Talking Coloring Book is an ideal starting place for anyone, especially preschoolers. On the surface, it occupies the child with a very interesting succession of “fill-in-the-color11 drawings. But while the child is exploring how a green bear might look, they are quietly learning to interface with the computer. They quickly develop the hand eye coordination necessary to operate the computer, mouse, and program while creating and painting a picture, MyPaint builds nicely on the foundation laid by Talking Coloring Book. The program is specifically designed to introduce the icon-style of
interface. The animated icon's large size and color intuitively instruct on how to use this program, resulting in the student quickly accessing and using all of its functions. For the budding art student, the learning curve is also smooth and logical. Talking Coloring Book introduces the basics of color composition through Loud clothes seem to be the vogue: yet another clown, this time in MyPaint by Prism Computer Products the use of pen and ink-type drawings, then with MyPaint, all the basic tools that enable students to create more advanced computer art are provided.
Talking Animator brings all the tools, techniques, and the exposure of a sophisticated user interface together, while providing the new tools and environment that wrill allow the student to begin creating and producing useful computer art.
More important, Talking Animator is not tire end of the line for a young artist or graphic designer. The new tools, techniques, and concepts introduced by this program open the door to really high-power paint animation programs.
Power paint programs such as De- luxePaint and Photon Paint can be used immediately and without intimidation.
The concepts of programs such as PAGEflipper Plus F X by Mindware International, Fantavision by Broderbund Software, and the like will not be lost or unfamiliar to anyone who has learned to use these three entry-level programs.
All three of these programs are excellent and very effective for the targeted user. Hopefully they will now' be used in a structured and organized manner, so their combined power and teaching ability may be realized.
The far-sighted developers and programmers of these and other educational packages are owed a great amount of gratitude and appreciation. For ¦without their efforts, Amigas would be nothing more than expensive paper weights. I would hope this point is not lost on the powers that be at Commodore International.
• AC* Products Mentioned Talking Coloring Book JMH Software of
Minnesota, Inc. 7200 Hemlock, LN, Maple Grove, MN 55369
(612) 424-5464 Price $ 29.95 Inquiry *206 Talking Animator JMH
Software of Minnesota, Inc. Price S49-95 Inquiry *207
MyPaint Prism Computer Products Distributed by Centaur
P. O. Box 4500 lledondo Beach, CA 90278
(213) 542-2226 Inquiry *208 Commodore’s Educator!
CBM uses video to reach the classroom.
Commodore’s “Amiga Creativity in the Classroom" is a new sixteen-minute video demonstrating the Amiga’s extreme flexibility by showcasing teachers and students using the Amiga in the classroom and beyond, From an elementary art class in Columbia, South Carolina to Art Educadon at Ohio State University, teachers and students demonstrate their creative talents through the Amiga. Educators, filmed against a background of busy students and projects, speak freely about the Amiga’s capability and their use of the machine.
In quick succession, the Amiga is demonstrated by teachers, students, and their projects as an administrative computer, an artist's medium, a super MS-DOS clone, a musical instrument, a sound editor, a desktop publishing machine, and even the heart of a television studio. Between shots of Amiga generated graphics and sound, the Amiga is seen in both large and small computer labs. Students are shown performing their own computer presentadons and videos.
“We believe that it (the video) will help educators realize the amazing capabilities of the Amiga,,.” John DiLullo Commodore's Education Manager In a press release from Commodore, Mr. John DiLullo, Commodore’s Educadon Manager, stated, “The new Amiga Video demonstrates some of the many ways that the Amiga can be used effectively in the classroom. We believe that it (the video) will help educators realize the amazing capabilities of the Amiga, and how these capabilities can best be utilized in improving instruction.” Little is said throughout the video about the Amiga's programming
environment or languages. The video presents the Amiga without involving technical aspects of the machine. The Amiga is presented as a solution lo teaching concerns and as a tool in creative activities.
For a copy of “Amiga Creativity in the Classroom’’ please write to: John DiLullo Education Manager Commodore Business Machines, Inc. 1200 Wilson Drive West Chester, PA 19380 Inquiry *222 Scenes from a video From placing the Amiga on a pedestal to showing the excitement of achievement and discovery in a child’s eyes, Commodore's new video presents the Amiga as an indispensable tool for education.
He city of Keycaps is being threatened by a first strike of capital letters from the country of Thesaurus. They have even gone so far as to use the NATO-outlawed weapon of ultimate destmction. That's right: vowels! It is now up to you to fend off this unprovoked, hostile attack. You are armed with only one weapon. It is the weapon of choice. It is MAK (My Amiga Keyboard). No time for nonsense, you must move forth and destroy this sinister enemy!
Method to the madness As you may (or may not) have guessed, this game is an elementary typing tutorial. I had three reasons for writing this program;
1) I wanted to write a program that uses only tile standard
AmigaBASIC commands. No fancy library calls here; you can
write very7 nice programs with the commands available within
Typing Tutor by Michael “Chip”Morrison
2) I wanted the source code to be small enough so that typing it
in could be accomplished within die nonnal life span of an
3) I wanted to show7 how7 you can write easy-to-read code using
descriptive variable names and labels. For example, if you
have a routine that updates the screen, you could use a label
named “us:” or “this.is.the.routine.that.updates.the.screen”.
Well, maybe not that descriptive.
The game In Typing Tutor, letters fall from the sky at random locations. Before the letter falls too far, you must type the corresponding letter on your keyboard to save tire skyscraper below from destruction. The letters start off falling at a reasonable speed. As the game progresses, the letters fall faster and faster.
Eventually, you will not be able to react quickly enough.
You will then be subject to the desperate screams of several drousand people being cmshed to death by the falling letter that you so irresponsibly failed to locate on your keyboard (think of someone besides yourself for a change, will va?)
Once you have let three letters fall, the game ends. If you score high enough, you will be prompted to enter your name in the high score list. This should be very simple tire first 10 times you play because the program creates a blank high score list if it cannot find one in tire current directory.
Program clarification Typing Tutor is a fairly straightforward, no-octane AmigaBASIC program. How7ever, there are a few pieces of the listing that may be somewhat confusing. In die init,hi.score section of code we use tine ON ERROR GOTO command. This command allows us to trap certain errors instead of stopping the program and putting up an error message. Any time an error occurs in our program, it will go to the routine called ''handle.error”, The program tries to open the high score file named “letters,.score". If it is not found in the current directory, an error is returned by the system.
The handle.error code checks to see if the error number is 53. Error 53 is “FILE NOT FOUND” (see AmigaBASIC, Appendix B for a complete listing of error codes and messages). If it is number 53, then w7e fill the high score table with “Empty for now”. If it is another error, we use the command ON ERROR GOTO 0, This lets the system handle any errors.
The “get.char” routine could use some explaining, in this routine, die letter to be dropped and the location it is to be dropped in is randomly selected. The same set of functions are used to generate both random numbers. Way back at the beginning of the program, under the “init.some.stuff label, the RANDOMIZE TIMER command is used. This command insures that the function RNDO will generate different random numbers each time the game is played. RND(l) returns a number greater than 0 and less than 1. To generate a number between 1 and 26 (the alphabet), we first multiply by 26 and then use the
INT command to get rid of the decimal part.
Next, we add 65 to that number to get an ASCII value from A to Z (see AmigaBASIC. Appendix A: Character Codes for a list of all ASCII codes). -After all this, we use the CHRSO function to change our number into a valid string. We then enter a WHILE WEND loop. Inside the WHILE WEND loop is a FOR NEXT loop which simply causes a delay. This delay is _(continued on page 52) flp L and the fimiga: A Friendly Pair by Henry T. Lippert, EcLD.
Most Amazing readers now know die excitement of having, right on their own desks, one of the most spectacular computers ever produced the Amiga. One by one, its outstanding hardware features are being revealed by the large number of programs that are now available. From the start, tire Amiga had several languages available in which to write programs. The C language, of course, was die most powerful, while BASIC was the most popular. Another language has appeared on the scene, going unnoticed by nearly everyone.
Hidden away from the public eye, this computer language, called APL, is like no other. (An excellent review of APL “APL.68000" by Roger Nelson appeared in AC, V3.5, p. 49.)
It is difficult to work up much enthusiasm for most of the common computer languages. Languages are expected to be there in order for the computer to be respectable in the marketplace. It may even seem strange to raise die issue of a computer language being enjoyable. Languages simply aren't a whole lot of iun. Nevertheless, it is a common experience for persons to be very excited when their first non-trivial computer program actually works. It is just as common for die seasoned computer programmer to have programming excitement that parallels drat associated widi other activities such as
cleaning die gerbil cage or watching the trees grow. The initial excitement about a language gives way to the satisfaction of having accomplished a difficult task, having created a “new feel” or a best-selling program, or perhaps having received a royalty or salary check.
The excitement and fun returns when using APL to drive a computer. APL stands for “A Programming Language.” No kidding. The name came from a matiiematician, Dr. Kenneth E. Iverson. The story goes that, when asked what he was working on, he replied, “Oh, just a programming language." The name stuck, and the language became one of die greatest enigmas in all computerdom.
People in the computing world either dislike (read dismiss, despise, or hate) APL or they love it. Most of those who do not like APL have seen some code but know little about it.
Most of those who love it are really in love. The true APL-type person believes that APL is the programming language and that it will be in wide use some day. APL is used extensively to drive mainframe computers, but it is nearly always hidden from view.
Some people seem to be embarrassed to admit they know diat APL even exists. For example, at the Thomas J. Watson Research Laboratory, IBM hid APL from view for many years before venturing an admission that they used it extensively as a language for scientific development, numerical analysis, internal operations, and data processing for die corporation itself. Most folks think that because APL looks nothing like all the other languages, it cannot really be a serious language. Well, it does look a little unusual.
Why bodier widi APL, you say? Let’s take a look at some of the reasons. First, APL notation is essentially the same as diat used for plain old familiar mathematics. Here are some APL statements: 2 + 6 473 x 8492 468 - 74
367. 93 - 42.8 They look just like ordinary mathematical
statements, right? In some sense, they are. APL uses the
language of mathematics as much as possible. It is easy to
see that you can begin to use APL without having to learn a
computer language at all.
When statements such as those above are typed into the APL Interpreter, they are evaluated and an answer is displayed on the screen. The user of APL knows that APL is ready to accept a statement when the cursor appears indented seven spaces on the line. APL answers back at the left margin. The following gives you an idea of what a real APL session might look like: 2+6 8 12 x 12 144 These statements have no lasting effect. They are executed and the answer is displayed, but nothing else is done. You say, “Hey, that's just like a desk calculator!" Yes, you are correct; APL performs superbly as a
desk calculator.
APL does more dian that, too. It provides for storing statements for the long term. For example, the following statement: DATA 500 sets up a storage area called DATA which has the number 500 stored in it. The left arrow is read “specified by.” The statement above would be read, “DATA is specified by 500." After a variable is specified, it can be used in statements as follows: DATA x 3 1500 DATA + DATA 1000 If you wish to display the contents of the area located at any variable name, you just enter the name by itself: DATA 500 and API shows what is stored at the name.
The DATA could also be used in the following way: ANSWER «- DATA X DATA ANSWER 250000 where the first line would be read, “ANSWER is specified by DATA times DATA." Since the sentence began with a specification (left arrow), APL did not show the answer; it simply performed the operation. The second line, with ANSWER alone, told APL to show the contents of the variable ANSWER. APL replied with 250000 on the next line at the left margin.
The two statements could have been combined as the following statement: ? - ANSWER t- DATA X DATA 250000 The box (?) Is symbolic of the display screen and told APL to show the contents of ANSWER. Of course, the answer was stored at ANSWER before its display. The statement would be read, “The display is specified by ANSWER, which is specified by DATA times DATA."
APL uses the four fundamental mathematical operators (+, x, and ft) in their native forms. Because exponents are difficult to handle for the typical keyboard and many printers, one asterisk is used for indicating exponentiation. For example, tire statement: DATA * 2 250000 yields the same answer as DATA x DATA, and is read, “DATA raised to the powrer of two."
The most important characteristic of APL which distinguishes it from other languages is that it is “array-oriented." For example, the following statement: DATA -246756 12 writes over the previous value (500) and automatically makes the value stored at DATA into a 7-element vector of numbers.
The entry of DATA alone now yields: DATA 2 4 6 7 5 8 12 showing that the new values have been stored at DATA. The following statement as an input: DATA X 6 12 24 36 42 30 48 72 and the result at the left margin show that the APL system took care of a lot of details for us. A legal operation take die elements stored at DATA and multiply by six was asked for, and APL performed it as requested. The following example illustrates again the concept of being array-oriented: DATA + DATA 4 8 12 14 10 16 24 This result shows that if APL is asked to add together two vectors of numbers, it does so element
by element.
In most languages, a lot of bookkeeping is necessary to add die corresponding elements of two vectors, or to add a number to every element of a vector. APL keeps track of die size of vectors and performs arithmetic operations on them if requested to do so.
Before you think APL can do eventhing, try giving the following statement to APL for evaluation: DATA +489 length error DATA +489 A The resulting error message indicates that the 3-element vector of numbers, [4 8 91, is not the same length as DATA. How many elements does DATA have, anyway? In APL, finding vector lengths is simple. The following statement: pDATA 7 indicates that DATA is a 7-element vector. Of course, APL cannot successfully add a 3-element vector to one of 7 elements.
Since storage areas in APL are dynAMIGAlly allocated, rather than predefined as required by most languages, you may need to find out die size of an “object." The “rho" (p) requests the size of whatever immediately follows it. In the above example, there are 7 elements in the vector stored at DATA.
APL has a large number of already defined operations similar to rho. Dr. Iverson simply observed what programmers were spending their time doing. He noticed that in using languages such as FORTRAN and COBOL, the popular languages of die day, many operations were being coded repetitively every time a program was written. A great deal of time was spent on laborious indexing and “holding hands" with the computer, telling it over and over what to do. All of these tilings, he felt, could be left out of a programming Language if the language provided for adequate description of what the desired
output was to be like. All that was necessary was to emphasize the nature of the outcome expected of an operation, not how it was being done. Iverson simply defined such operations as a part of the language. For example, the slash ( ) has the effect of extending a mathematical operation to elements of an array. It has the name “reduction" and operates as follows: + DATA 44 The extension of addition to the elements of the DATA array placed a plus sign between each element of the array and reduced it to a single number (a scalar) by yep, you guessed it adding ’em up!
Take a more complex APL statement: ( + DATA) + pDATA
6. 285714286 which reads, “Sum reduce the elements at DATA and
divide by the size of DATA.’’ We might also have read the
statement as, “Add up the numbers at DATA and divide by the
number of elements stored at DATA,” Hey, we just computed the
arithmetic average of the numbers stored at DATA!
Well, readers, there is a lot more to APL. Whereas most languages have only the 5 arithmetic operations and the relational operators made available in branching and control statements, APL has some 60 to 80 operations that are defined as parts of tire language. It was inevitable that APL would show up on the Amiga a superior language on a superior computing engine. The combination of APL and the Amiga will no doubt place us in a permanent state of excitement.
Next time, we’ll examine what it takes to write a program.
Ail we did this time was to write a few statements, start to explore two of the new operators APL provides, store some data, analyze it, and show a little bit about the array orientation of APL. (Not bad for the small number of statements APL required to do all drat!) The homework for all FORTRAN, BASIC, C, and COBOL programmers is to perform all the things accomplished here in APL and see how many statements (or key presses) it takes in those “easier” languages. The typical comparison has demonstrated a 10-to-l advantage of APL over the traditional languages (FORTRAN and COBOL), using
whatever measure you wish. Now you know why IBM has used it internally: it's efficient and profitable. Finally, the ultimate reasonably priced computer can now have the ultimate reasonably priced language -APL. They deserve each other.
• AC* Dr. Henry T. Lippert is an educator. He has specialized in
the application of computers in education and training and to
the tasks of the instructor and the instructional designer. He
was one of the original developers of Computer-Based
Instruction (CBI) at the University of Illinois during the
1960’s. Currently, he is Chief of the Instructional Methods
Division at the Academy of Health Sciences in San Antonio,
Texas. He has been responsible for the development and use of
both microcomputers and dedicated CBI terminalsfor delivering
instruction in medical technology to Army personnel.
APL Interpreter includes Reference Manuals in a hard slip cover, not copy-protected.
APL Interpreter for the Amiga.- :; Spencer Organization, Inc.
P. O. Box 24S Westwood, New Jersey 07675 § With Your Amiga 500 or
EXPANSION SYSTEM Don’t get left behind in the ever growing market of expansion cards for the Amiga 2000, With the Toolbox 2-slot card cage you can use A2000 cards in your Amiga 500 or 1000.
GUARANTEED COMPATABILITY Since we’re the manufacturer we guarantee comparability with your machine. If there are any questions you make one phone call...the buck stops with us.
SAVE ON COMPLETE SYSTEMS Since you buy direct from the manufacturer you save money. And complete systems save you even more.
SELECTION OF PRODUCTS Toolbox - 2-slot card cage with a 9amp power supply and bus pass-through.
Memory Card - A2000 type card with 2Mb of installed RAM, expandable to 8 megabytes.
Hard Card - Autobooting SCSI DMA A2000 controller in 32 40 48 60 80Mb sizes and more.
Systems A B C I) E ToolBox
269. 95
269. 95
269. 95
269. 95
269. 95 2 Mb Memory’
699. 95
699. 95
699. 95 32Mb HardCard
749. 95
749. 95 48Mb HardCard
799. 95
799. 95 Total Cost
969. 90
1019. 90
1069. 90
1769. 85
1769. 95 Your Pri(e
789. 95
929. 95
979. 95
1499. 95
1549. 95 c1ii,„dnv415 656_2890 EXPANSION TECHNOLOGIES 44862
Osgood Road, Fremont,California94539 Circle 120 on Reader
Sorvice card.
Amazing Hardware Projects BETTER TrackMouse by Robert L. Katz In die August 1988 issue of Amazing Computing, Darryl Joyce told readers how to convert an Atari Trackball into a “TrackMouse”. This is a nice little modification. It is fairly easy to do, and the result is well wordi the effort.
When I first saw one of these devices, I wondered why anyone would want one. After all, die Amiga comes with its own easy-to-use mouse. I knew about the advantages of track balls since I had used them during my military experience. I had even designed one into a command-and-control system we were building at work. But I had never seen their usefulness demonstrated with personal computers.
However, after talking to a few people in our user group, I realized that not everyone is fond of mice. For one thing, some people don’t have good eye- hand coordination. For another, mice can take up a lot of desk space. A number of us here in Albuquerque have made this modification. Those who do mosdy graphics-type work love them. They’re able to lean back, put their feet up with Table One Original Header-to-Cable Connections: New Connections: HEADER PINS CABLE PINS COLORS HEADER PINS CABLE PINS COLORS A 3 Green A 4 Brown B 4 Brown B 3 Green C 1 White C 2 Blue D 2 Blue D 1 White TrackMouse
in lap, and work in an ultra relaxed fashion.
Generally speaking, I liked my mouse. However, I disliked having my keyboard elevated so much above lap level. I had found a nice computer desk with a pull-out keyboard shelf. However, there was not quite enough room on that shelf for a mouse to sit next to the keyboard. I used it there, but still 1 felt cramped. After seeing a TrackMouse in operation, I began to think that maybe I didn't have to suffer this particular limitation of a mouse.
Jerry Poumelle commented on just this problem in his Chaos Manor column in the August 1988 BITE. Jerry kept losing his mouse under piles of paper.
He turned to a trackball, and found that it overcame many of the difficulties he experienced with mice. For CAD and similar graphics-oriented work, a trackball is at least as good as a mouse.
Control is smooth, and it’s much easier to move the cursor across long distances. A trackball also takes minimum desk space (even less if you sit back with it in your lap).
It takes two bands... Since it seemed that a trackball would be a very nice alternative to a mouse, I bought one and made the modification. It wras then that I learned about die click-and-drag disadvantage of a trackball. While, in many ways, a trackball is superior to a mouse, it is almost impossible to do click-and-drag operations with a trackbalL While the mouse is a one-handed effort, the trackball is two-handed. It’s even worse widi the TrackMouse because die buttons are in awkward, entirely separate locations. After all, the Atari trackball was designed for use with video games. I had
previously purchased a Wico trackball for my IBM PC at work. Wico had tried to simulate click-and-drag operation, but it just didn’t work properly.
The shape of the Atari trackball housing does not lend itself to one-hand computer usage. It does not have sufficient depdi, it is too high, and too wide. Hence, there is no place to rest your hand. I realized that solving part of the problem would mean rotating the whole diing 90 degrees clockwise. This places the short dimension under your hand, giving a nice palm rest. I further realized drat there was no reason why the buttons could not be moved where I wanted them.
The one-band trackball So, after some thought and experimentation, I came up with a plan to make the trackball into a one-hand device. 1 first performed dre modification illustrated in Darryl Joyce’s ardcle. I then further modified the trackball circuitry so I could turn the whole housing 90 degrees and still maintain proper ball rotadon sensing. This is done in two steps: First, witch the horizontal and vertical axes by switching four wires between dre header and the new connecting cord. (See Table One for proper header-to-cable connections.)
The cable pins can be easily pulled out of the header and swapped around to the new configuration. This switches the horizontal and vertical axes and brings us to tire second step: Tire new horizontal axis rotation is backwards. To correct this, swap two circuit board leads. The photograph on page 3 of the modification article show's the circuit board clearly. Just to the left of the vertical trackball bearing rod are three traces going up, and then bending left by 45 degrees (see photo). Swap the outermost two of these three leads. Do this by cutting out about a 1 4 inch of each lead. Cut all
tire way through the Pace at each end of a 1 4 inch section.
Then use your knife to pull the section completely off tire board.
This leaves enough room to solder tire cross-connecting wires. Gently scrape tire top of each lead, cleaning off tire mask, until you have a smooth, shiny surface. Take two one-inch lengths of wire wrap and strip about a 1 4 inch of insulation from each end. Solder these wires in an X pattern across the two traces. The top left trace end goes to the bottom right trace end, and tire top right trace end goes to the bottom left trace end. This completes the electrical modification.
Now we have to make the mechanical changes to give us a true TrackMouse. Tire left switch on tire Amiga mouse is tire actuate button. The leftmost button on the TrackMouse is the corresponding switch. Move it alongside the trackball by cutting off the top (old 'ITois photo shows the 'guts'of the trackmouse with the modifications made.
Left) side of the trackball housing (which includes the switch). I used a Dremel Moto-Tool with a thin grinding wheel to make tire cuts.
This leaves an opening in tire housing that allows dust to get into the trackball mechanism. The opening must be closed off. This may be done in a variety of ways. I bought a sheet of 1 16- inch plastic from a local hobby store, and cut it to fit tire opening. I then used Super Glue to fasten the plastic to tire bottom half of the housing.
Since the old actuate switch requires too mudr pressure to activate, discard it, but keep tire button. Cut out a hole in the top of the trackball housing about 3 4 of an inch away from tire left edge of the ball. Epoxy a surplus keyboard switch to tire underside of the housing surface so that the switch shaft sticks up through the hole. Then epoxy the Atari button to the switch shaft.
Solder the old switch button wires to the new switch. To do this you need to extend the wires. Cut about four inches off the old connector cable to get the red and black wires that are needed. Follow the color coding to splice the new wires into the existing wires. After extending the switch wires, route them along the bottom of the case so they do not interfere with trackball operation. This completes tire actuate button modification.
The right switch on the Amiga mouse is tire select button. With the rotated housing, the previous right hand Atari button now falls under the right edge of my hand's heel. I decided to leave this button as is, but make it more convenient to operate. I positioned a stiff Hat rubber strip across tire bottom of the housing so its right end rests on the button. This looks very much like a keyboard space bar. I then epoxied tire right bottom of the strip to tire top of the button. Finally, I epoxied the left bottom of tire strip to the housing.
Note that the Atari logo on the (old) bottom of the track ball housing is made of embossed foil and glued to tire housing. It can be easily removed. I used 1 2 inch embossing label tape to make my own Amiga logo.
Putting it to Work To use the TrackMouse, 1 rest my palm on the bottom edge of tire housing.
My fingers are free to position the trackball so I can select a desired menu item. When I rest my two middle fingers on tire ball, my index finger falls naturally on the switch button.
With a little practice, click-and-drag operations are almost as easy as with the mouse. For other uses, I can easily move the ball with my middle fingers, and use my pointing finger to click on desired items. When I need to actuate the menus, I rotate my hand slightly to the right, and press down with the palm edge. The select switch is sufficiently stiff so that simply resting my palm on it does not actuate it accidentally. This modification has made the trackball so easy to use that I have permanently retired my mouse.
• AC* Swish!
New Products and Other Neat Stuff by Elizabeth G. Fedorzyn In your armchair basketball-star existence, do you find yourself torn between the desire to manage your own team and die overwhelming urge to am up tire coua with an oh-so-graceful layup, Well, SportTime may just have die basketball package for you. OMNI-PLAY Basketball, SportTime’s latest release, offers every angle of basketball simulation-plus expandibility!
OMNI-PLAY lets you own, manage and coach your own basketball team. On die managerial level, you determine playoff structures, season lengths, etc. You can recruit new players from the minor leagues, trade players, or get your current herd of hoop jocks into shape at training camp. Players are not immune to die terrors of real life b-ball, eidier.
Players age year after year, and suffer injuries as well (beware the possibility of a Celtics ’88-'89-like club). You will be provided widi complete stats on all 288 league players to help guide your decision-making as you work your way Every angle of hoop plus expandibility: SportTime's OMNI-PLAY Basketball towards a championship and that ever- coveted SportTime trophy. And don't throw' your jersey in the wash just yet.
Because on the player's level, you’re free to pass, shoot, rebound, slam it, make the J, and even shatter the backboard.
What makes OMNI-PLAY Basketball unique is the game’s expandibility feature. With the purchase of SpoitTime Option Modules and Support Disks, you can expand the peripherals of gameplay many fold. The “Side-View” Module, for example, lets you enjoy the game from a whole new' camera perspective. With the “College League” Module, you can play widi the teams, players, and stats from the 1989 college basketball season. Other Option Modules include the “Pro League", and the “Fantasy League”, to name a fewr.
OMNI-PLAY even has its owm answer to Bob Cousy. “The Nick and Bob Show” features SportTime’s two favorite announcers, Nick “The Net" Jones and “Basket" Bob Smidi. Before die start of each game and during halftime, The Net and Basket will provide you with their own analyses, predications, and general b-ball banter.
(Any long periods of silence might be interpreted as The Net and Basket’s having invited former President Reagan to do some commentary).
OMNI-PLAY Basketball requires a minimum 512K. Players can tip off against the computer, against one another, go two against die computer, or sit back and watch die computer chase itself up and down die boards. OMNI- PLAY Basketball whether your idol is Pat Reilly or Pat Ewing, it’s bound to be right up your court.
SportTime Computer Software 31S7-G Airway Avenue Costa Mesa, CA 92626
(714) 966-1311 OMNI-PLAY Basketball: 549.95 Inquiry *223 A
contest, BASICally Attention, True BASIC programmers!
True BASIC Inc. has issued a call for entries in its First
Annual Best-of BASIC Contest. True BASIC will award cash
prizes to the most innovative code submitted in three
different categories; Educational Software, Subroutine
Libraries, and Other Applications. Cash prizes within each
category are set at S250 for First Place, $ 150 for Second
Place, and $ 100 for Third Place.
The panel of very distinguished judges will include Professor Jolin G. Kemeny and Professor Thomas E. Kurtz, who together invented BASIC at Dartmouth College in 1964. Entries will be judged on the basis of their originality, usefulness, and programming style.
Contestants must include a copy of their Tme BASIC code on disk. The inclusion of documentation, on disk or in printed form, is encouraged. No entry fees are required. Entries must be received at True BASIC’s West Lebanon, NH offices no later than 5:00 PM on November 17, 1989. Contest winners will be announced December 29, 1989.
For details regarding the First Annual Best-of-BASIC Contest, you may write True BASIC, Inc., 12 Commerce Drive, West Lebanon NH 03784, or call
(603) 298-8517.
METCOM*89 The Mid-Cities Commodore Club will present METCOM*89 on Saturday, October 14. The show wili feature presentations on various topics including “Computer An” by Marilyn Coughran and “Commodore Update” by Andre Freeh, The Mid-Cities Commodore Club will be sponsoring a number of activities including an Amiga workshop and a library of Amiga public domain software.
The show7 will be held at the Arlington Convention Center, 1200 Stadium Drive East, Arlington TX 76011.
Showtime is from 10:00 AM to 5:00 PM.
Admission is free. For more information, contact Ned Kelly at (817) 277-5825.
Playing God Well, it took God set days took complete the task; let’s see how long it takes the average Amigan to create a viable world. (Don’t go scurrying to that bomb shelter just yet; it’s only a game and a rather provocative one at that).
Populous, the hot new strategy ' adventure game from Electonic Arts, places you in the role of a god (good or evil your choice) who must build up a nation and, at the same time, destroy the quests of an opposing deity. In Populous, which was designed by the European artist group “Bullfrog”, two nations are created, both with the need to populate, claim new territory, and attract new citizens. Both nations are also trying to increase their territory by spreading their population across the other’s land.
Your initial goal in Populous is to promote growth in your nation so as to increase your power as a deity. You press across the land readying areas in which followers may build mud huts, houses, or castles and then settle. The larger the settlement, the more power you are given, since the more followers there are to worship you, the more power you are given to influence world affairs (sounds a little like MTV).
Of course, creating your own nation is not the greatest of your challenges. You also have your opponent’s (un)godly ambitions to worry about. To ward off the opposing god and his plans for world control, you can use your power to turn into a Knight, then venture on a raid and destroy enemy buildings, But, heck, we’re talking serious power here. Why not just put that amateurish raiding stuff aside and create a natural disaster. Nothing like a tornado or flood to really put a damper on an opposing deity's day. Both gods will also have to beware of nasty sea monsters and wizards W'ho seek to
wreak havoc on both nations. These preliminary battles will hopefully prepare you for the final conflict: Armageddon.
Populous offers an almost limitless amount of gameplay options, as players may venture into 128,000 worlds. The game provides two modes a conquest mode and a custom mode. The conquest mode features hundreds of worlds based on four different terrains ranging from artic to desert landscapes with preset fighting conditions. The custom mode lets players design their own world and select conditions under w'hich to populate and fight. You can play against the computer, or two players can wage wrar against one another via modem.
Populous features impressive 3D maps and animations, as well as digitized sound effects. According to Bullfrog’s The whole world in your hands: Populous Word processor and then some: from Electronic Arts Mich Tron’s ProText head programmer, Peter Molyneux, "Populous incorporates the speed of an arcade game, the thought process of an adventure game, and the feel of a simulation. It is truly an interactive game that combines fun and strategy elements in one." Probably not too bad for the of ego either.
The complete Moduia-2 development environment for the Amiga that makes programming fast and easy!
Populous Electronic Arts 1820 Gateway Drive San Mateo, CA 94404
(415) 571-7171 Price: $ 49.95 Inquiry 224
• Fast, Single Pass Compiler • Source Level Debugger
• Powerful Text Editor • 170+ Libraries in source form in-
• Fast Single Pass Linker eluding ARP, Arexx, IFF and C Fax,
Call, or Write for FREE Demo Disk!
M2S, Inc. Box 550279 • Dallas, Texas 75355 Phone (214) 340-5256 • Fax (214) 341-9104 Demo also available on BIX (see M2Demo.zoo in M2Stlistings section) and CompuServe (see M2Demo.zoo in Amigavendor forum, section 12).
Amiga is the registered trademark ot Commodore Business Machines Circie 161 on Reader Service card.
Give me a “C”, a bouncy “C” This month, Blue Ribbon Bakery will release Bars&Pipes, a breakthrough in MIDI music composition. With this first object-oriented music composition system, you needn't spend days (weeks, months) setting up your system. Nor do you need to take on a the persona of a eighteenth century German composer in order to compose music.
Bars&Pipes four main features include The Pipeline, The Toolbox, the Sequencer, and The Editor. Using The Pipeline, your musical input is guided from conception to performance. By arranging the pipes and valves, you direct the flow' of musical information on a track-by-track basis. Each Pipeline can process information prior to or after recording. The Toolbox, features a host of different tools, including chord substltutor, event filter, and harmony generator, with which to process MIDI information as it flows through The Pipeline. And, if the available tools are still not enough to make you
the next Bach, you can invent your own macrotool wdth tire program’s Create-A-tool feature.
With Bars&Pipes’ Sequencer, there is no limit to the number of tracks you can record. The Sequencer boasts, among other features, global cut, copy, and paste; auto-locate registers; looped mode recording; global display of music on all tracks: and rhythm, chord, key, lyric and time signature input. The Bars&Pipes Editor lets you view your music on a piano roll format, or as bars on a staff. You can open multiple edit windows at once. Using Tools, you can process sections on a note-by-note or phrase-by-phrase basis. Each note is heard as it is edited. You can also edit key, rhytlrm, and chord
change information for algorithmic composition.
Bars and Pipes Blue Ribbon Bakery 1248 Clairmom Road, Suite 3D Atlanta, Georgia 30030
(404) 377-1514 Price: $ 250.00 Inquiry 225 All rolled into one
MichTron’s new ProText is a fully integrated word
processing package that combines the features of a word
processor, text editor, and command line interpreter.
OttlGG FGODUG ftECflVW; Acft Pics Tangent 270 2509 Dahlia
P. O. Box 38587 Denver, CO 80238
(303) 322-1262 Price: $ 49.95 Inquiry =227 AmigaDOS Reference
Guide, 3rd edition Chilton Book Company One Chilton Way
Radnor, PA 19089
(215) 964-4000 Price: S21.95 inquiry' =228 Color Window 3-1
Kimbersoft 13281 72nd Avenue, Suite 201 Surrey, BC, Canada
V3W 2N5 Inquiry- =229 CrossDos Consultron 11280 Parkview
Plymouth, MI 48170
(313) 459-7271 Price: $ 30.00 Inquiry =230 Denaris Hardwired
Entertainment 2171 Dunwin Drive, Unit 13 Mississauga,
Ontario, Canada, L5L 1X2
(416) 569-1212 Price: $ 39-95 Inquiry =231 F40 Pursuit Simulator
Tims Software Corporation 20432 Corisco Street Chatsworth.
CA 91311
(818) 709-3692 Price: $ 44.95 Inquiry* 232 ProText’s word
processing features include an easy'-to-use spell checker.
You can spell-check an entire document, a block of text, or use it interactively as text is entered. There is also word search, as well as a user-definable dictionary. Text pages are automatically formatted as they are entered and edited.
Foonotes can be entered into your document; headers, footers, and automatic page numbering is also available.
ProTexr also features mail-merging capabilities, allowing you to personalize documents based on information contained in a data file. Selective, conditional, and alternative text merges are all possible. Text editing features Jgoodies_l Delta Research
P. O. Box 1051 San Raphael. CA 94915
(415) 461-1442 Freely redistributable Jforth software Inquiry
=233 Jinks Hard Wired Entertainment 2171 Dunwin Drive, Unit
13 Mississauga, Ontario, Canada, L5E 1X2
(416) 569-1212 Price: $ 29.95 Inquiry =234 King James Version
Bible on Disk Easy Script 10006 Covington Dr. Huntsville,
AL 35803
(205) 881-6297 Price: $ 25.00 inquiry' =235 Professional Page
Templates and Design Guides Gold Disk
P. O. Box 789, Streetsville Mississauga, Ontario, Canada L5M 2C2
(416) 828-0913 Price: $ 59-95 Inquiry' =236 Prospector in the
Mazes of Xor Euros oft International 70 Woodfln Place,
Suite 400 Ashville, NC 28801
(704) 255-7590 Price: $ 39-95 Inquiry' =237 Pro Write 2.5 New-
Horizons Software 206 Wild Basin Road, Suite 109 Austin, TX
(512) 328-6650 Price $ 124.95 Inquiry-=238 allow' you to cut and
past blocks of text from one file to another.
With ProText's command-line interpreter, you can perform desktop functions without exiting the program.
You can run programs such as compilers, assemblers, and linkers from within ProText. The MichTron package offers a hassle-free environment, w-idr all commands being accessible through menus, and full on-line help available at any time.
The program supports most dotmatrix printers, including 24-pin printers: 21-pin drivers are included. Several laser printers are also supported. A print buffer is also included, allowing you to SID: A Directory Utility- Software Ingenuity 11325 94th Street North
P. O. Box 10084 Largo, FL 34643
(813) 393-8240 Available as shareware; $ 25.00 contribution
required to become registered user.
Inquiry =239 Structured ClipArt Gold Disk
P. O. Box 789, Streetsville Mississauga, Ontario Canada L5M 2C2
(416) 828-0913 Price; $ 59.95 Inquiry- =240 Supcr_DJ V2.0 Printer
Driver Creative Focus
P. O. Box 580 Chenango Bridge, NY 13745-0580
(607) 648-4082 Price: $ 25.00 Inquiry =241 Turbo Microlllusions
17408 Chatsworth Street Granada Hills, CA 91344
(818) 360-3715 Price: $ 24.95 Inquiry =242 X-CAD Designer Hazlitt
Mews Off Hazlitt Rd. London W14 OrZ England
(01) 603-3313 North American distribution through: American
Software Distributors (S00) 225-7941 Price: $ 149-95 Inquiry
=243 use the program while printing a document. Odd and even
pages can be printed separately' to allow for doublesided
MichTron’s ProText runs on a minimum 512K RAM. The package includes the program disks and a hefty' wire-bound manual.
ProText MichTron 576 S. Telegraph Pontiac, MI -18053
(313) 334-5700 Price: $ 199-95 Inquirv =226
• AO The Amazing Computing Freely Redistributable Software
Library announces the addition of... New Orleans Commodore Klub
s inNOCKulation Disk Version 1,5 To help inform Amiga users of
the newer Amiga viruses and provide them with the means to
detect and eradicate those pesky little critters!
Files and directories on the inNOCKulation Disk include: Virus_Texts (dir) Various text files from various places (Amicus 24, PeopleLink, and elsewhere!) Describing the Virus(es) and people’s experiences and their recommendations; TVSB ‘'The Virus Strikes Back”: satirical text describing future efforts to rid the universe of the dreaded (silicon) viruses! Interview with tile alleged SCA virus author!
WB(VirusCheckers (dir) VirusX3.2 Runs in the background and checks disks for viruses or non-standard boot blocks whenever they are inserted. (Recognizes several viruses and non-standard boot blocks. Removes virus in memory. Has a built-in "view boot blocks” & other features.)
Sentry Revision of VirusXl.Ol in Lattice C. ViewBoot Highly active mouse-driven disk and memory virus-checker which allows you to look at the pertinent areas (useful in case you suspect a NEW virus!)
VRTestS2 Watches memory for viruses; will alert the user and allow their removal if found. Can check & INSTALL disks, etc. CLI_VirusCbeckers (dir) AvirusII From The Software Brewery (W.
German). Disables a virus in memory'.
Clk_Doctor3 Corrects problems with the clock (caused by malignant programs, perhaps not really a “virus”) (A500 & A2Q00) Guar diant. 1 Checks for attempts at viral infection at boot! Allows you to continue with a normal boot (if desired). Includes a small utility program to permanently place the program on a copy of your Kickstart disk.
KWVirits Removes (any?) Virus from memory.
VintsKiller A grapliically appealing and user friendly program by TRISTAR.
Boot-Block _Stuff SafeBoot2.2 SafeBoot will allow the user to save custom boot sectors of all your commercial disks and save them for such an emergency. If a vims somehow manages to trash the boot sectors of a commercial disk, just mn SafeBoot and it will restore the boot sectors, therefore saving your disk!!
Virus Jdert V2.0.1 Yet another anti-virus program with a twist. Once installed on your boot disk a message is displayed just after a warm or cold boot notifying the the user that the disk and memory are virus-free, and forcing a mouse-button press before continuing.
BootBackl Saves and restores boot-blocks. Runs from CLI only.
Antivirus akaAVBB Includes SEKA assembler source.
Xboot Converts a boot-block into an executable file, so you may use your favorite debugger (Wack, Dis, ...) to study it.
The inNOCKulation disk also includes icons and arc files.
To order the inNOCKulation disk, send: s6.00 Amazing Computing inNOCKulation disk orders
P. O. Box 869 Fall River, MA 02722 includes postage & handling
($ 7.00for non-subscribers) Amazing Review Msoft Compiler by
Cole Calistra “Yet another BASIC compiler?”, you ask. Weil,
yes and no. Up to now, we have seen old unreliable (AmigaBA-
SIC), as well as A C BASIC and True BASIC. HiSoft BASIC
Professional, published by MichTron, Inc., is the newest
package to liit the market. At first, it seems to be a
combination of A C BASIC from Absoft and True BASIC from True
BASIC. Inc. However, HiSoft BASIC has more powerful features
than either of these.
This package includes a faster editor with some very good features. As for speed, it is one of the fastest compilers I have seen.
At one time or another, many of us have used AmigaBASIC, found on the Extras disk, and quickly realized diat it could not be used for any serious application. The editor lacked many features, crashed often and, worst of all, was painfully slow. To a great extent, HiSoft has corrected these problems.
HiSoft pluses This package includes a faster editor with some very good features, including search and replace and compiling from widiin the editor. In another helpful feature, after you have tried to compile your program, HiSoft will jump to the line diat contains an error.
The editor is very quick and performs all operations widi ease.
There are no more delays when scrolling tiirough your source code, and your program is not left hanging after an error. You can compile and run your program from within the editor, although this may require some added memory.
The compiler’s combined linker is also fast and efficient. It links die modules itself for stand-alone code, aldiough it can produce Blink-compatible object code. To check the efficiency of the startup code, 1 linked in witli the Lattice C startup module
(c. o) instead of letting the compiler do it for me, and it pro
duced a larger code size than wtiiat 1 got with the HiSoft
compiler. As for speed, it is one of the fastest compilers
I have seen.
The compiler gives you the option of producing stand-alone programs, or programs diat will run like a stand-alone but need the HiSoft.Library in the UBS: directory. Note that the true stand-alone requires at least one megabyte of memory and die HB.Compiler will not produce true stand-alone on the first disk.
You will need to use the HBS.Compiler on the second disk.
The language itself is about 95% compatible widi AmigaBASIC, widi a few simple differences. For example, all DECLARE .. LIBRARY statements must be made after the library is opened. Also, the LIBRARY CLOSE statement will not work.
It will compile without errors, but wtiien the program is run, it will crash. An interesting note on HiSoft's completeness is that, when the programs created with it actually do crash, diere is a different GURU message that lets you return back to where you were after you hit the left button, instead of resetting the machine (a welcome change for many programmers!).
There are other small differences between die two languages, but these shouldn't affect your programming too much.
HiSoft also took a step forward in dieir language in that it is not just compatible with AmigaBASIC, but widi some of A C BASIC's enhancements as well.
They have also introduced some new statements of their own, while adding features to the existing ones in AmigaBASIC. An example is the SELECT CASE statements, which allow you to build a structure of different statements to execute if a variable is equal to a certain set of values, very much like the switchO statement in the C language. Two very useful statements are INCR and DECR, which will increment or decrement a numeric variable by one, thus replacing the traditional X=X+1 with INCR X. The major difference here is readability and speed.
Smart Scrolls for speed.
Money Mentor has a truly unique system called Srnurt Scrolls, that handles a diversity of otherwise tedious data entry' functions and clips along saving you up to 70' ii of your typing time It’s a smart addition to Money Mentor, that's why we call it Smart Scrolls, Meet a team of the friendliest financial organizers you’ll ever run across.
Money Mentor Features:
• Net Worth Statement
• 200 Budget Categories
• .SO Integrated Accounts such as Cheeking, Cash, Savings and (
red it Cards
• l-luhorate Search Routine allows editing of transactions
according to your specific guidelines
• Automatic Cheek Printing
• Automatic Account Balancing
• Color (iraphic Reports illustrating tictiuiI rs. Budgeted
• Over SO Reports to choose from’ What they’re saying about us!
“Monty Mentor has to he the nicest look anti fed of an y money manager fxu huge for home use that I Ixtt v erer seen." Amiga Sen in “Monty Mentor is an excellent product" Amazing Computing Money Mentor is for everyone!
][ does more than just keep your checkbook balanced Money Mentor helps you manage your personal finances which is important to any family or individual.
With Money Mentor, you can be looking better financially Order Monev Mentor lodav When you want to manage your personal finances. Money Money Mentor sells for only $ 95.95!
VISA' SEDONA SOFTWARE SEDONA SOFTWARE 11828 RANCHO BERNARDO RO., SUITE 128-20 SAN DIEGO. CA 92128 CALL (619) 451-0151 Circle 119 on Reader Service card.
HiSoft has also added a statement called PCOPY, which dumps the contents of the screen to the printer, like the ScreenDump program on the Extras disk. Additional enhancements include borderless windows, windows that are not GIMME ZERO ZERO (a flag in Intuition that prevents you from drawing on the borders), backdrop windows, and a flag to the COLOR statement allowing you to set the drawing mode.
77re dotvti side Although HiSoft is graced with features, it does suffer from some major problems. The OPEN statement does not support non-AmigaDOS device names, so COM1:, SCRN:, and LPT1: do not wrork anymore. Instead, HiSoft uses SER: for tire serial port, PRT: for tire printer, and CON: or RAW: for the screen.
However, a problem may arise when changing the serial port parameters. SER: goes only by the preferences settings, thus making HiSoft impossible to use when writing a terminal or BBS program.
Further, tire manual lists a FILL statement which does not exist in the compiler. In the revision, HiSoft gives instructions to disregard tire manual and use the more powerful PAINT statement.
Unfortunately, I received tire newest version too late. It had been damaged in shipping and did not work anyway.
Some other bugs in the program are the MENU OFF and MOUSE OFF statements, which simply did not work at all.
For technical support, Michtron has a bulletin board, a customer support number, and conferences on many of the major commercial networks. I used their BBS a few times to ask questions, and the responses were always quick and accurate. They also take suggestions for future versions of the compiler, which is good policy for any software company.
Summary If you plan on doing some casual programming and don’t mind die bugs in the OPEN command, I would recommend HiSoft BASIC Professional. I have used it extensively in developing applications software, and I believe it to be a very powerful tool for any programmer, beginner to expert. I would also recommend it to any avid AmigaBASIC fan. Its features and the program quality it generates are well worth the price tag.
• AC* Product Information HiSoft BASIC Professional The Old
School Greenfield, Bedford England MK455DE Contact in US: Apex
Resources 129 Sherman St. Cambridge, MA 02140
(617) 876-2505
(800) 343-7535 Price: SI59.95 Inquiry 22!
By R. Bradley Andrews Amazing Game Reviews SNAPSHOT Grand Prix Circuit First on the list this month are two recent releases from Accolade; Grand Prix Circuit and Fast Break.
Subtitled as the “Formula One Racing Simulation,” Grand Prix Circuit puts you in control of some of the fastest cars in the world. Each of the three cars is rated in three areas speed, handling and braking ability. The Ferrari, while a bit slower, is the easiest to handle and is a good beginner’s car. The Williams is in the middle and requires a bit more skill, while the McLaren is the most responsive, but also the most difficult to control.
Eight famous race tracks are available. From the Circuit de Monaco to the Detroit Grand Prix Circuit, each has a different layout and will require different driving strategies to master.
While you can practice on any of the tracks to learn how to shave every' second of time off your score, most time will be spent running the single race.
The first stage is a qualifying round, where one car’s time is compared to the times of the other cars to determine its starting position in the 10-car starting grid. The actual race can be anywhere from a short sprint of one lap, to an endurance marathon of a full 99 laps.
Four Amiga Games In longer races, it is not just a matter of driving around and around the track; as in a real race, pit stops begin to play an important role. While pit stops cost time, the resulting increase in performance and handling is more than enough to make up for any loss.
For additional variety, difficulty levels range from tire Rookie level where things are relatively easy, to the Pro level where everyone is out for blood. Once enough confidence has been gained on each race course, a complete tour of eight races can be done sequentially.
The main display features tire competing car dashing along the bottom third of the screen, while die view of the windshield takes up most of die remaining screen. Two rear view mirrors are mounted just above the dash, allowing the driver to keep an eye out for cars approaching from the rear. The locadon of the car on the course is shown in the upper left corner, and die time is shown in the upper right. The graphics are crisp, clear and well drawn. The sound also compliments gameplay.
Gameplay itself is the game’s biggest shortfall. While a steering wheel would be die best device to use in a racing game, a joystick can work OK.
But the game is far to sensitive to slight joystick movements. It is very easy to end up weaving from side to side when trying to get centered back on the road.
It is also extremely easy to run into the another car when coming off of the starting line. One collision can end the whole race before it even gets started.
While this is very frustrating, it might be acceptable if there -were a quick way to get back into the race. Alas, even the “quick” start option still requires a long delay for die title screen to come up and dien for the game to reload.
While Grand Prix Circuit looks like a very' detailed simulation of racing, the control difficulties make it unsuitable for all but the most fervent racing fan to enjoy, If Accolade could fix the steering problem and the ease of collision at the starting stage, this might be a game worth looking at. But for now, I would recommend avoiding it.
Fast Break The Slammers and die Jammers come head-to-head in a three-on-three variant of basketball where the focus is on action and well executed plays in Accolade's Fast Break.
Each game begins with die standard setup sequence. First, the time per quarter (3, 6, 9 or 12 minutes) is Grand Prix Circuit; Fast cars and fast reflexes on the track.
Fast Break: Slamming and jamming three-on-three.
Chosen. Shorter games play faster, but longer games add more challenge. Then you must decide which team the computer should control, or if it will "sit out" and let two players go head-to- head.
Two more decisions must be made before the game can begin. Decide which four out of the available 15 plays will be active at the start of the game.
Though these can be changed during time ours and between quarters, take care to choose a set that will compliment each other and allow for die most scoring possibilities. One play slot can even be a play of your own design, allowing even greater flexibility. After the plays have been set, it is on to player selection. Each team has a total of six available players, two in each position of guard, forward and center. Matching the player's skills between themselves and against die chosen preset plays is important in order to be successful.
Defensively, five options are available during a game: Fast break, Man-2-Man (tight), Man-2-Man (loose), Trap, and Double Team. A wise coach will learn how to quickly switch to the most effective strategy for the action at hand.
While the preset plays are available on offense, nodiing prohibits a player from charging the basket if a lane opens up. While correctly implementing a fixed play will increase the chance of a successful shot, it is often necessary to change the call in mid-play. Shots can range from slam dunks to long distance three pointers. Rebounding also plays a role in both offense and defense anti must be played aggressively.
Be careful not to be over aggressive. Both fouls and violations are portrayed in the game. Fouls can occur when e idler an offensive or defensive player lias physical contact with another player. Violations are infractions of the rules, such as die 24-second shot clock, and the half court violadon. Many normal problems, such as double dribbling, simply don't occur in the game since the computer handles die task of dribbling.
During the game, most of the screen is taken up with a view of die active half of the court. Along the bottom of die screen is a status area with such information as die currently active offensive and defensive players, the score, and the time remaining. The graphics themselves, while clear, somehow lack the zest found in many other action games. In fact, many of the starting screens where the game settings are set feature nothing but text on a colored background. The sounds are accurate, right down to die squeaking of hi-tops on the court floor.
As die rulebook states, you can use as much basketball strategy as you are willing to learn in Fast Break. However, I found tiiis to be its biggest failing. While die game may be great for someone who dreams about the perfectly executed pick and roll, those of us who know little about basketball and do not have the time or inclination to learn a great deal are left in the dust. I also found the controls difficult to comprehend. Even die practice area was hard to master, and this is where I am supposed to learn how to play die game!
1 am coming to the realization that I either really like, or really dislike an Accolade game, and unfortunately, I cannot recommend Fast Break. While the game has potential, it does not live up to the needs of most game players. If you are a knowledgable basketball fan, you may want to check out this game anyway; diere is not much competition.
Rambo III Next, it seems that the Soviets have captured your friend and mentor, Colonel Trautment. You are die only man alive with the ability to penetrate die enemy compound and rescue the man who taught you everything you know. So begins Rambo HI, from Taito.
Based on the movie of the same name, die game combines elements of arcade action with strategic planning as the daring rescue mission is carried out.
Beginning in the fortress, you must find w'here the Colonel is being held and release him. While this may sound simple enough, large numbers of guards patrol nearly every inch of the compound and you will need to carefully A Winning Hand!
Amazing on Disk Source Listings and Executables from the pages of Amazing Computing!
Only $ 6.00 per disk ($ 7.00 for Non-Subscribers) Fractals Part I: An introduction to the basics of fractals with examples in AmigaBASIC, True BASIC, and C. Shared Libraries; Using shared libraries in C. MultiSort: Sorting and intertask communication in Modula-2.
Double Playfield: Using dual playfields in AmigaBASIC.
'881 Math Part I: Programming the 68881 math coprocessor chip.
ArgS: Passing arguments to AmigaBASIC.
Digitized Sound: Playing digitized sounds using Modula-2, '881 Math Part II: Part II of programming the 68881 math coprocessor chip using a fractal sample.
At Your Request: Using the system-supplied requestors from AmigaBASIC.
Insta Sound: Tapping the Amiga's sound from AmigaBASIC, MIDI Out: A MIDI program drat you can expand upon. Written in C. Diskless Compiler.- Setting up a compiler environment that doesn't need floppies.
Fractals Part II; Part II on fractals and graphics on the Amiga in AmigaBASIC and True BASIC.
Analog Joysticks: Using analog joysticks on the Amiga hr C. AC 4 V4.7 & 4.8 C Notes: A small program to search a file for a specific string in C. Better String Gadgets: How to tap the power of string gadgets in C. On Your Alert: Using dre system’s alerts from AmigaBASIC.
Batch Files: Executing batch files from AmigaBASIC.
C Notes: The beginning of a utility program in C. Menroiy Squares: Test your memory with this AmigaBASIC game.
High Octane Colors: Use dithering in AmigaBASIC to get the appearance of many more colors.
Cell Animation: Using cell animation in Modula-2.
Improving Graphics: Improve the way your program looks no matter what screen it opens on. In C. Gels in Multi-Forth-Part 3: The third and final part on using Gels in Forth.
C Notes 4.9: Look at a simple utility program in C. Russell’s Stuff: A collection of PD programs including: lD_Cel!s, Colourscope, ShowlLBM, Labyrinth_II, Most, and Terminator.
Pick your way through the maze and make it to the next section.
.After tire Colonel has been rescued, it is off to the vehicle compound. Here, the enemy’s veliicles must be neutralized by carefully placing demolidon charges, escaping afterwards in a waiting helicopter. Finally, you face a run to the border.
The chopper takes you to a waiting enemy battle tank which you must guide in a desperate race to escape the country before being caught by the enemy.
The guards are die principle hinderance to die successful completion of your mission. While most are fairly dumb and follow a fixed pattern of movement, walking into their view causes them to attack widi extreme fury.
And this additional noise draws odier guards, which can further ruin your day.
Fortunately, if enough attackers are slain, peace returns and continuation of the mission is possible. Electric doors and mines also block your path and can prematurely end the mission.
However, not everything in the game is harmful. While initially armed widr only a knife and your wits, various useful items are scattered along your path. Stashes of bodi normal and explosive arrows can increase your ability to slice through foes. Medical Kits can restore lost strength. Other items, such as infrared goggles and rubber gloves can prove very useful.
The graphics in the game are done very well and rival those seen in traditional coin-op games. Some of the effects, such as die picture of Rambo turning white as strength is lost, are very detailed, and when combined with die smooth character movement, serve to draw the player into die playing experience. The sound compliments gameplay, tiiough die background music can become tedious if left playing for a long time. The joystick is the principle input device and works very well.
However, the game is not all roses.
A save game feature would have been really nice, since it can often take quite some time to complete even the first part of the game. The instrucuons are also very simple and lack some of the information needed for gameplay.
Because of this, it is very easy to do something that will end your life without even realizing it, such as walking into an electric door. 1 even walked into a minefield and was destroyed even though I was carrying a mine detector.
Since each game only gives you one shot at success, death is an extreme bummer. I find littie reason that such a long game should require restarting at the beginning after every death. Two to five lives would have been much more reasonable.
Much of the playing time involves imprinting the layout of the entire complex in your mind, so required tasks can he accomplished quickly. Drawing a map on a piece of paper could be useful, but most people would not bother to get so involved in a game.
On the whole, Rambo III is a very good arcade action game. While the quickness and finality of death can be most annoying, enough variety and enjoyment is provided to keep any gamer occupied for a long time. Definitely worth die money.
QIX Finally this month is a new version of an arcade classic. Taito has finally brought QIX (pronounced kicks) to Amiga screens everywhere. QIX is different than nearly every other computer game and is a challenge to describe. (It is the game diac inspired PowerStyx, reviewed last issue.)
All play In QIX occurs in a large rectangular area, a certain percentage of which must be boxed off to advance to tile next level. Movement is restricted to the interior boundary of die enclosed area. This starts as the playfield edges, but these edges grow as more and more of die screen is filled in. Filling an area involves holding die fire button and pushing the joystick perpendicular to your current direction within the game boundary. The enclosed area can be any shape as long as it ends back on another interior edge.
Areas can be “drawn” at either slow- or fast speeds. Slower speeds gain more points, but also place your token at increased risk. While drawing a box, you are vulnerable to contact with the Dix, die multi-colored line thingie that semirandomly goes around the screen. If it comes into contact with either you or an unfinished box, you will lose a life. Once an area is enclosed, however, it becomes safe and may be used as a launching point for further boxes.
Two other enemies also seek to hamper your progress. SPARX also trace their way around die interior edge and any contact with them causes instant death. While they are relatively easy to avoid by drawing a new box, more and more are added the longer it takes to fill the required percentage of the screen, until a collision somew-here is almost assured. The other enemy is the SPR1TZ.
They are shaped like the sparks, but roam the interior of the playfield, and are only deadly while in die middle of drawing a line.
You might think it would often be good to start a line, then pause and wait for danger to pass. Well don't pause too long, since an unfinished border becomes a fuse if you pause for more than a short time. If caught by a fuse, you will die!
For such a simple game, it is still surprisingly fun. The graphics are relatively simple by modern standards, though the fill patterns are a little more detailed. The joystick works fine as a control and the sounds used flow- with gameplay.
While not the world's best game, QIX would make a valuable addition to any arcade collection and is a fairly inexpensive way to spend some playing time.
• AC- Grand Prix Circuit Accolade 550 South Winchester Blvd.
San Jose, CA 95128
(408) 985-1700 Price - $ 49.95 Inquiry 201 Fast Break Accolade
Price - $ 44.95 Inquiry 202 QIX Taito 267 West Esplanade
North Vancouver, B.C. Canada V7M.1A5
(604) 984-3344 Price - $ 39-95 Inquiry 203 Rambo III Taito Price
- $ 34.95 Inquiry 204 by Mike Morrison Insight into the
World of Freely Redisributable Software for the Amiga* Fred
Fish Disk 229 AlariningClock: An alarm clock that plays
two digitized sounds when it goes off. One is an explosion
and die other is a man screaming. I took the author's
advice and played it through my stereo at half volume. It
would definitely wake me up, and die neighbors, and the guy
down the block. In die read me file, die author says that
die sounds are IFF but he reads them as hunks. I tried a
few of my own sounds that were straight data samples that
still sounded close to the actual sound. I had to rename my
sound to one of the two orignal sounds in order to get it
to work. Includes source.
Author: Brian Neal DrawMap: This program generates pictures of die Earth as if you were looking at it from space. It can generate several different views: flat, mercator, globe and orbital. You can pick a spot on die Earth for it to use as the center of die map it generates. It takes an average of 35 seconds to draw each view.
Includes source. Audior: Bryan Brown Emporos: A text adventure game. You are living on the island of Emporos, where several countries exist. Your goal is to make one of these countries your own. Binary only. Audior: Roland Richter esuoM: This program changes the direction of the mouse to opposite of the input. It can be a fun joke to play on someone. Includes source. Audior: Rob Eisenhudi LeftyMouse: This program swaps die left mouse button with the right, and vice- verse. A nice program for left-handed people. Includes source. Author: Rob Eisenhuth Shuffle: A program that will shuffle all die
screens that are open. When you use Left-Amiga-M, the front screen will go to die back. Includes source. Author: Rob Eisenhuth Sinn This program was a little out of my ball park so here is an excerpt from the description that comes on die disk: A simulator for register-transfer nets, which are used to describe hardware systems. This version also provides a compiler to define new devices in addition to Sim’s internal devices.
Version 4.0, binary only. Author: Gotz Muller Fred Fish Disk 230 AskTask: Shows all of die tasks in the system attached to ExecBase. You can then examine different bits of die task structure. Displays priority, state, flags, stack, signals, etc. You can remove tasks, change the priority of a task, or send arbitrary signals to a task.
Removing tasks can cause the system to come tumbling down, so be careful Version 2 4 89, includes source. Audior:
J. Bickers Fedup: See Expansion Drawer.
Filelt: A database program that was first prototyped on a CP M system in Turbo Pascal 3. Eventually it was ported to the Amiga and translated to DRACO. The audior suggests that an intuition interface should be added in die next upgrade.
Version 1.0, includes source. Author: John Davis Ncomnu A telecommunicadons program based on Comm version 1.34, by DJ James, The program has been enhanced with many new features and rivals some of the commercially available telecommunicadons programs. Included are several auxiliary programs such as AddCali, Calllnfo, Ibmlso, PbConvert, and ReadMail. This is version 1.8, binary only. Audior: DJ James, Danie!
Bloch, Torkel Lodberg, et al.
PrivIIndlr: A privilege violation handler for the 68010 CPU. This program is similar to Decigel but will survive a reboot so you can use it with copyprotected programs that run from boot.
Version 3, includes source in assembly code. Author: John Velddiuis Quattro: A Tetris clone. This program plays the same as the other Tetris-like games but has a few extras. It has three levels of play, sound effects, a 43-color background, next stone preview, and joystick or number pad control. Version
1. 0, binary only, source available from author. Author:
Karl-Erik Jenss Fred Fish Disk 231 DifF: Anodier diff
program. This one implements die algorithm from Communications
of the ACM, April 78.
Has enhanced output. Includes source.
Author: Donald C. Lindsay File: A program diat looks at a file and tries to figure out what its type is.
Recognizes font files, icon files, executable files, standard object files, compressed files, command scripts, C source, directories, IFF files, LaTeX source, Modula II source, arc files, shell commands and scripts, TeX source, dvi files, uuencoded files, yacc files, zoo archives, etc. Version 1.0, includes source. Author: Edwin Hoogerbeets NoClick2: A program which stops the empty drives on the B2000 from clicking when using AmigaDOS 1.3. It should also work on an A500. Binary only, source available from author. Author: Norman Iscove Plot: A program that works with Expansion Drawer F&daf)
Fred Fish Disk ' 230 This program is a file editor. You can load either binary or ASCII files to look at or edit.
It is best used for binary files. The program assumes a record length of 256 bytes. If die file does not end with an even 256-byte record, the program will pad the empty space with the * sign. Of course, you can’t edit this area.
When you start Fedup, an open, requester comes up. Once you have selected a file to load, you can then move through die file by records. Status information is displayed on the screen, such as current record, last record, and the name of the file you are currently working on. The program uses die arrow keys to move around. The file is displayed in both hex and ASCII. You can choose to edit in either hex or ASCII. A nice feature of Fedup is that when you use the backspace key instead of deleting a character as normal, die original value is replaced.
This is good if you make changes and then decide it is a mistake. Simply place die curser over the last character you changed and hold down the backspace key. All the original characters will be replaced.
The program has menus that allow you to do things like write the record you have changed, undo the last edited record, go to a certain record, search for a string, print the current record, choose between using all 256 ASCII characters (allowing ALT characters) or just the lower 127, and die obvious info, open, and exit. There is also an autosave option diat will save each altered record when you move to another. The default will not save the records you change unless you tell it to with dre write menu selection.
One of the fun things you can do widi a binary file editor like Fedup is customize your commands. Remember to do this with copies of your original commands in case you make a mistake. I loaded in the NEWCLI command from my C directory. Then I searched for die string “New CU”. This is die text diat appears in die tide bar of each CLI you open with die NEWCLI command. Then 1 changed die text to "Mike’s" and saved die record. You have to be sure to only use the same number of characters diat are in "New CLI”. This is die alloted space in the file and you will cause all sorts of problems if you go
beyond the original lengdi. Now when I use NEWCLI, they have "Mike’s" in the tide bar instead of "New CLF. The coordinates for the location and size of the new CLI could also be changed using this editor, This program is version 2.1, binary only, and was written by Martin Lindemann of Norway.
MultiPlot and ThreeDPIot to help make 2D and 3D plotting easier. Plot calls MulitPlot and ThreeDPIot while you are working in Plot. AG Baxter wrote this interface and Tim Mooney wrote MultiPlot and ThreeDPIot. This is version 1.2 and includes source to Plot.
Audior; AG Baxter, Tim Mooney Sed: Sed (stream editor) is the GNU sed program, ported to the Amiga. This program will automatically perform certain editing operations on the file you pass it or the standard input. You can specify die editing operations by the command line or a script file. Version
1. 02, includes source. Author: Unknown, ported to Amiga by Edwin
Hoogerbeets Fred Fish Disk 232 Ballylll: This is an Amiga
port of the arcade game named Click (similar to Qix). This
version fixes some bugs found in Bally II (found on Fred Fish
Disk 221. See “Expansion Draw'er" AC V4.8, page 20.) Binary
only, shareware.
Author: Oliver Wagner Dbug: This is a debugging package put together by Fred Fish. 1 don’t know where he gets die time! Best said in his own words, Dbug is: Machine- independent macro-based C debugging package. Provides function trace, selective printing of internal state information, and more. This is an update to the version released on disk 102, and now includes a machine independent stack use accounting mechanism. Includes source. Author: Fred Fish; profiling support by Binayak Banerjee ReSourceDemo: A demo of Resource, an interactive disassembler for die Amiga. In this version the “save"
feature has been disabled. This is version 3.06, an update to version 0.36 from Fred Fish Disk ~192. Binary only. Audior: Glen McDiarmid Fred Fish Disk 233 Iirik: This program calculates checksums for a file. It will do both text and binary CRCs (cyclic redundancy' codes). Text mode CRCs calculated by Brik are portable across systems for files that are in the usual text format on each system.
Binary mode CRCs are portable for files that are moved from system to system without any change. Brik can verify and automatically update an embedded checksum header within the a file. It runs under MS-DOS, UNIX system V, BSD UNIX, VAX VMS, and AmigaDOS.
This is version 2.0 and includes source.
Author: Rahul Dhesi CacheCard: Anodrer program from the labs of Dave Haynie drat only he could write, CacheCard is in die words of the docs: An accessory to SetCPU for use with A2620 cards or 68030 systems. It modifies the MMU table set up by SetCPU to selectively control caching for each expansion card. It’s also an example of how an accessory' program can track down and modify the SetCPU MMU table without having to read all kinds of MMU registers and figure it out for yourself. Version 1.00, includes source. Author: Dave Haynie CrcLists: Complete CRC check files for Fred Fish Disks 001-231
using the Brik program (also on this disk). These were made direcdy from Fred Fish's master disks. Fred has switched to Brik, from tire CRC program used to make the lists on disks 133, 146, and 173, because, "It has more features and because source is available." Author: Fred Fish Fred Fish Disk 234 Siebert Mania: This should be called the Fridtjof Siebert disk! All of these programs where written by Fridtjof. The best part about these programs is that Fridtjof also includes the source so we can have fun and learn too! Thanks a lot Fridtjof, keep up the good work!
KwikBackUp: A nice hard disk backup program that writes data track by track onto multiple floppy disks. It uses die archive bit, saves and restores comments and protection flags, and skips over bad spots during restore instead of aborting.
Version 1.0, includes source in Modula-2.
Author: Fridtjof Siebert MuchMore: Another program that displays ASCII text files to tire screen (like more, less etc.). This program opens a screen die size of your Workbench so it works with both PAL, NTSC and overscan. Allows up to 4 colors, bold, underlined, and italic text.
Has a nice smooth scroll (forward or backward), search, and on-line help.
Version 1.8, includes source in Modula-2 and Assembly code. Author: Fridtjof Siebert NetWork: A neat screen hack. Be patient and let it tun. Version 1.0, includes source in Modula-2. Author: Fridtjof Siebert Printlt: A program to print IFFs to an Epson-compatible, 9-pin printer. Prints in several resolutions (60-240 horizontal, 72, 144, or 216 vertical). You can convert color pictures to black and white by using several different options. Version
1. 0, includes source in Modula-2. Author: Fridtjof Siebert
WBPic: Replaces Workbench’s color 0 with a 2 or 4-color IFF
picture that is the same resolution as your Workbench. Has
some neat effects, but like Fridtjof says, he’s not sure of a
use for it! Version 1.0, includes source in Modula-2. Author:
Fridtjof Siebert Xhair: Replaces the mouse pointer with a
crosshair that goes off the top and bottom ot the screen. This
is nice for lining things up. There are also two other
programs that change your pointer included. Version 1.0,
includes source in Modula-2. Author: Fridtjof Siebert Fred
Fish Disk 235 CalcKey: A memory-resident calculator that pops
up when you hit a hot key sequence. It supports decimal,
octal, and hex which can be handy for converting numbers while
in another program. A nice feature is that it will output the
answer into the program you are mnning when done. If you have
your word processor running and you want to do some math, you
pop up the calculator and, when your done, it will put the
answer where you cursor is in the letter you're typing!
Version 1.0, binary only, shareware. Audior: Craig Fisher Ct:
An Amiga program to display images from a CT scanner, along
witli several new interesting sample images of scans of real
people. The display software, though it has a primitive user
interface, is quite powerful, including functions like
convolutions, averaging, laplacians.
Unsharp masking, edge detection, gradients, etc. This is version 2.2, an update to the version on disk 137.
Binary only. Additional image disks available from author. Author: Jonathan Hannan MirrorWars: A new game featuring sound, title music, and two-player mode.
You fight your opponent via laser rays, but beware of the mirrors reflecting your shots. Binary' only. Author: Oliver Wagner Fred Fish Disk 236 AmigaBench: Optimized Amiga assembly versions of the Dhrystone benchmark. Includes 68000 and 68020 versions. Author: Al Aburto DiskHandler: A sample implementation of a file system that reads and writes 1.2 format diskettes. Includes source. Author: Software Distillery Heart3D: A program to find left ventricle outlines in the output of an Imalron CT scanner, and display wireframe animations of the beating heart. Includes several sample CT scan
outputs. Binary only. Author: Jonathan Harman Ls: Version 3.1 of the popular UNIX style directory lister. This is an update to version 2.0 from disk 178, and includes some bug fixes, support for multiple wildcard pathnames, quicker sorting, a best-fit output, new output widdi and height options, and some other new features. Includes source. Author: Justin
V. McCormick.
Proc: Example program of how to create a full-fledged DOS process without needing to call LoadSeg first. Based on an idea presented at BADGE, Includes source. Author: Leo Schwab XprZmodem: An Amiga shared library which provides Zmodem file transfer capability to any XPR-compatible communications program. Version 1.0, includes source. Author: Rick Huebne
• AC* by Graham Kinsey Welcome! After the distress of seeing
Commodore Magazine fold its tents, its nice for this column to
have a home again! For everyone already familiar with this
column via past installments in Commodore Magazine, let me say
that not much will change due to the transfer to Amazing
Computing, except that I will not be reviewing Fred Fish disks
here (since they are covered in the PD Serendipity column).
Instead I will be concentrating solely on programs obtained off
of PeopleLink and local BBS’s.
This month's features include Jack Radigan’s entry into die terminal program world, the latest version of ARP. And more. For each program, the author will be given when known, and in most cases die AmigaZone download file number will also be listed (this doesn't mean that if no file number is given that it isn't on PeopleLink at die moment, simply that I obtained it from somewhere else), so those individuals having access to PeopleLink and its AmigaZone can quickly download the file.
When a public domain program has been classified as shareware, this is also mentioned, with die suggested amount if given. Due to the large size of animations diat are coming out for the Amiga, I have decided to assume that die normal size of an Amiga animation is one megabyte. This means that unless I specify otherwise, ALL animadons reviewed here require one megabyte in order to run. For Amiga owners with only 512K machines, keep this in mind until more memory can be added to your Amiga.
ARP version 1.3 ARP version 1.3: by Charlie HeaUi (and many odiers) (AmigaZone files 16909 and 18142). In addition to being updated to provide maximum compatibility widi version 1.3 of AmigaDOS, new features have been added. By far the biggest addition to ARP is die fantastic ARPfnstall program. This gadget-laden program (written in Modula-2) not only makes it possible for Workbench-only users to install .ARP, but makes it VERY easy to do, as well as making die process almost totally idiot-proof! Since die ARP commands are stored internally within die ARPInstail program itself, all a user
needs to install and use ARP is die Arplnstall program. Another new program in ARP 1.3 is ASH. It is a shell widi all the features that the Commodore’s Shell supports, plus other features like built-in batch commands and command substitutions.
As for die ARP commands diem- selves, Copy will not abort when a read write error occurs, it informs tile user of die event and asks to continue. Copy also has a new mode that will not copy a file if an identical file exists in die destinadon padi (some control over what determines which files are identical is given to die user). Assign and Mount can now handle multiple assignments mounts on one line, which speeds up startup-sequence execution greatly. The t rpe command can now add formfeeds to any file that is printed. ARP’s version of Avail includes an option to flush all libraries and
other resources from die system. Now' diere are several new' ARP commands, including Move (which combines Copy and Delete), Cmp (binary comparison of files), Set (for changing environment variables), and LoadLib (Loads a specific library').
Listed in the documentadon for ARP 1.3 (which was released several weeks after the commands) are many small incompatibilities between ARP 1.3 and AmigaDOS 1.3. While this has caused some to badmouth ARP on the networks, don’t lie discouraged from using ARP! Most of these discrepancies are things average users will never care about, and they are no reason for not taking advantage of die reduced code size and powerful features provided by ARP (Hard drive owmers might want to keep both the AmigaDOS and ARP commands on their hard drive, in separate directories, for convenience).
JRComm JRComm: by Jack Radigan (AmigaZone file 18208; Shareware: S30). Jack Radigan, die author of the famous Online PCPursuit scripts, has entered die highly competitive terminal program world with his entry, JRComm. JRComm could best be described as a streamlined and efficient terminal program, wiiicli does not have all die fancy features (and colors) that Access! Has, but instead it is designed for those wiio have little time to waste while online. JRComm has a long list of available protocols, including the only full-featured terminal program to include Zmodem internally (since many
wouldn't consider AZComm to be a full-featured program), and die ONLY terminal program to support Ymodem-G (which is very' important for those w’itir MNP-compatible modems). As might be expected, JRComm is no slouch when it comes to transfer throughput; only AZComm gives faster Zmodem transfers than JRComm.
However, JRComm is superior to AZComm, making it much easier to perform batch transfers. Not only does JRComm’s superb batch file requester allow for the selection of any number of files (even across devices'), but it also lists all files that have been selected.
JRComm also allows control over which files will be uploaded during a Zmodem transfer. JRComm can decide whether to overwrite (or append) an existing file on the receiver's reception directory according to file size, date and or CRC value. Some of JRComm's other features include complete ANSI color support, as well as support for overscan and PAL environments.
JRComm also has a unique phone directory supporting parameters for phone entries that other terminal programs don’t. In addition to fields for capture buffer and macro file names, there are also fields for a cents per minute (for online services) and password fields. The password field is very useful since there is a function in JRComm that can send the password out the serial port to the awaiting BBS or online service. The biggest problem with JRComm also relates to it’s phone directory'. It does not support existing phone directories store in The Final List format. Although Jack Radigan
has promised to add a conversion program to JRComm for TFL-fomiat phone directories, he has said that it will only be available for registered users. Other than this one problem, JRComm is a very good terminal program that is at least in the same league with die current king of the hill Access!, if not better than it. In particular those who are using AZComm now should take a close look at it, especially if transfer throughput isn't the only tiling you care about.
As of version .94a of JRComm, Jack Radigan has stated that this version would be die last freely distributable version for quite a while, so be prepared to pay the shareware fee if you want to see any future versions of JRComm until die end of 1989.
DitberS DitherR: byr Eric Quackenbush (AmigaZone file -16707). A simple graphics demo that demonstrates how to display over 1000 apparent colors in 640x400 mode using a combination of dithering and palette-changing techniques, .Although source code isn't provided, this program is useful in that it demonstrates how to display' more colors than normally possible widi die Amiga.
Now that die .Amiga has been out for four years now and programmers are now starting to push the limits of the machine’s hardware capabilities, tricks like this are vital to die improvement of graphics-intensive software for die Amiga.
InToucb intouch: by Klialed Mardam-Bey (AmigaZone file *16448). Yet another derivative of Communicator vl.34, whose main additions include a scroll buffer, ANSI and VT100 support (copied from version 2.8 of Wecker’s VT100 program).
InTouch’s other added features include variable chat window size (for the split In addition to the tiny executable size, Qmouse supports residency, which may be enough for some people to adopt it.
Screen option) and the ability to clear the screen, and a no-frills auto-redial mode.
Needless to say InTouch is no threat to the big boys, yet having another choice never hurts.
Invention Invention: by Durwood Trasher (AmigaZone file *16394). A very' simple yet amusing animated story created with The Director. Invention is all about an inventor who’s new idea isn’t exactly greeted with excitement by die family pet!
Jumble jumble: by M.D. Groshart (AmigaZone file *16419). Those who like to solve anagram puzzles may like this program. It uses brute force to help solve puzzles by listing all options, but there is one filter option that can help to reduce the possibilities.
Jeopard Jeopard: by Robert Caspar (AmigaZone file *16625). Jeopard is a very good Amiga version of the popular board game Risk, jeopard lets two to eight (Sony', no one-player option is available) people batde over the familiar colored land masses that make up die Risk game. Ail rules are faithfully observed, plus there are a few options diat might not be expected.
The biggest addition is the AutoRoll option that allows an attacker to tell the computer to roll die dice for bodi sides automatically until the attacker’s forces have dwindled down to a certain number (or until the defender is wiped out from die territory). There are also a bunch of options to alter or set-up the game board, including changing ownership of a territory, or changing the number of armies in a territory. Of course games can be saved when you can’t devote hours at a time to Jeopard. The board is rendered in 640 by 400 mode, which gives it a clean look. The only problem with doing
diat is the program is written in compiled AmigaBasic, it takes a few minutes to set-up the game on a 68000, Despite that, any Risk fan will want to get ahold of Jeopard immediately, My Menu MyMenu: by Darin Johnson (AmigaZone file *16552). .Another program diat allows for the addition of extra menus to the Workbench menus.
The menu set Ls stored as a text file in the S: directory. It provides for die additon of sub-menus and key board shortcuts for each menu opdon. The pen colors can be changed at any time, and arguments are supported for Cl.I-based programs.
PopCLIJV PopCLI_FV: by John Toebes (AmigaZone file *16420). Version four of die first ever multi-utility utility program, PopCLL Newest added features to PopCLl include Arexx support, multiple hotkeys (each with different command options. PopCLl will also grab several pieces of infonnadon from the system upon loading, including correct directory, stack size, the command line prompt and the fail level.
Qvietv Qview: by Lyman Epp (AmigaZone file *16477; Shareware; 510). From die GREAT NEW VIDEOS
• Video Guide to AMIGA Based Desktop Publishing ¦ Video Guide to
AMIGA Based Video Editing Controllers only $ 40 each CHECK MC
Road Hollis, NH 03049 1-603-886-6877 Circle 163 on Reader
Service card.
Author of Qmouse comes this text file reader. In addition to tire tiny executable size, Qmouse supports residency, which may be enough for some people to adopt it (after all there still isn’t an established replacement for Blitz, which first appeared over diree years ago).
Unforainately Qview has no file requestor nor menu set whatsoever, putting Qview more on par with tire likes of More and Less than Blitz.
TNT TNT: by John Schieb (AmigaZone file *16612). Short for Telecom Network Timer, this program will keep a log of how much time a user spends on a telecommunication service each month.
Since TNT does not accept online charge rates as a parameter it can't be used to calculate a bill, simply to calculate how many hours were spent on the service.
Since TNT can keep track of time for two services at once, it can also keep track of how much time is spent on a host packet-switching network (i.e. Telenet PCPursuit) while accessing a service that can be accessed from a host network (like PeopleLink).
WipeDemo WipeDemo: by Paul Falstad (AmigaZone file *16432), A simple slideshow program that will display IFF pictures using 35 different wipes.
Although the program has no other major features (except for script support and a few basic commands to provide a decent amount of flexibility in putting together a nice slideshow), the source code is provided for those who would like to see how wipe effects are created.
IconMeister IconMeister: by Michael Bodin (AmigaZone file *16646; Shareware; $ 15).
Another icon editing program. IconMeister uses an interface vaguely similar to DeluxePaint (except for the tool bar lying on the bottom of the screen), and its features include eight color support, animated icons, cut and paste and undo support.
IVIUS'IG c G|rl !N O L u'j 1 ic o T Lla IPIRE&BNITS: MUSIC MODULES: Record Save Edit Piay Standard MIDI Files - Use Amiga IFF sampled sounds & Amiga keyboard - Tracks, sequences & sounds limited only hy available memory - MIDI Delay & SysEx Dump - MIDI synth or interface are NOT required STAfYi'IB! KIT Only $ 49.95 SOUND EFFECTS: Modify Amiga IFF sounds w Echo, Flange.
Radio Oriental Desk Top Art Vol. 1: Oriental art work, a. Vol. 2: Martial art figures Vol. 3: Oriental folk art.
Vol. 4: Chinese Font.
Radio: lay Larry Crandall (AmigaZone file *16131). An excellent Sculpt 4D animation of a radiometer (the four- paneled solar-energized device that “appears” to move for no reason), Another example of how the price tag on Sculpt 4D can be justified. This animation will run in only 512K of memory.
MiddleButton MiddleButton: by Micheal Sinz (AmigaZone file *16976). This program allows for the use of the third button of a Boing mouse or other alternative “mouses” for the Amiga (without having to buy X-Windows). MiddleButton will make tine middle button act as an extended select in the Workbench environment (i.e. no more holding down the shift key).
Price: $ 29.95 per Vo!, plus $ 3.0 for shipping. Send check to order.
Software Integration Solutions 11027 Twin Pond Terraco San Diego, CA. 92128 Tel: 619-748-3350 Circle 1B4 on Reader Service card.
Checkers Checkers: by Ronnie Pertuit (AmigaZone file =16808). A checkers game for the Amiga has Finally arrived.
This program, written in compiled AmigaBASIC is a no-frills version, with four difficulty levels as its only significant feature. Nevertheless, another classic board game can now be played on the Amiga.
Next month’s reviews will include a new animation from Dr. Gandalf, plus updates to PcPatch, Showiz and much more. I can be reached on the AmigaZone on PeopleLink (ID: G KINSEY), or on the IDCMP BBS (617-769-3172 (3 12 2400 baud, 105 Megabytes online, running 24 hours a day), addressed to SYSOP). If you have written a public domain shareware freely distributable program, or have obtained one that you think is worth mentioning to all Amiga owners, then please attempt to contact me via the above contacts, or through Amazing Computing. See you next month.
To signup to PeopleLink and their AmigaZone, call them at: 1-800-52-4-0100 (voice) 1-800-826-8855 (via modem) For information on obtaining some the programs that aren't listed as being on PeopleLink (or for those who don’t have a modem), please write (and or send S2 for an Amiga PD catalog disk) to:
S. LAL"G 1015 So. Quincy Ave. *112 Quincy, MA 02169
• AC* It's the year 2000. Your city currently has several
problems which include but are not limited to a rising crime
rate, heavy pollution, an inadequate mass transit system and
nuclear power plants that are much too dose to major
residential areas. The citizens are demanding a new seaport, as
well as a new football stadium. To make matters worse, the
administration is facing a budget deficit, and the mayor's
popularity is dropping at the polls, Of course, there is one
other minor complication.
You just happen to be mayor.
SimCity is a fun and interesting city simulation program that puts you in charge of planning and managing a city.
You can either start from scratch, or take over ready-made simulations which, for instance, put you in charge of Boston, Massachusetts right before a major nuclear meltdown. Other scenarios include managing Rio de Janeiro during a major flood or Hamburg prior to an Allied bombing run.
After booting your computer with Kickstart, insert the SimCity Disk. If you are using a printer driver other than the Epson driver provided with SimCity, you must also insert your Workbench disk.
Double clicking on the SimCity icon reveals tliree icons: die SimCity icon, Last Minute Notes, and a Zone Evolution icon which provides a guide to the value of properties as they grow. To start the game, double click on the SimCity icon.
From the startup screen you can load a previously saved scenario, a preset scenario, or a new game.
A new game starts after the computer has “terraformed" a large parcel of land. You have the choice of accepting the terrain, or having the computer terraform another parcel of land. Once you are happy with the land, name your city and choose one of three difficulty levels: Easy, Medium, or Hard.
The Easy level gives you $ 20,000 to develop the land, the medium level starts you with $ 10,000, and the hard level grants $ 5,000.
On the left side of the screen you will see a small portion of the total land available (in tine edit window), while on die right you will find a series of l6 icons from which to choose your actions.
Move around the available land by moving the mouse to the far right, far left, top, or bottom. These movements cause die land to scroll in die same direcdon as the mouse. At die top of die screen is die city's name, the date (which always starts in January of the year
1900) , and the amount of money you have to spend. Below the dde
bar is a message bar through which the Sims (die SIMulated
citizens of your town) make known to you their requests.
Using die icons on the right, you can select from a number of possible actions for a price. Bulldozing allows you to rezone, but it will cost $ 1. The road icon lets you build a small section of road for $ 10. As you go down the list, the prices increase. You can build parks; zone commercial, industrial, or residential areas; build fire and police stadons; or create stadiums, seaports, or airports.
Once an icon is selected, a small empty box appears at die end of your cursor, representing the area affected by the command.
To zone a piece of land as residential, hit the residential icon, move die cursor to the area you want zoned residential, and press the left mouse button. The other icons work the same way. If you make a mistake, you can undo your last action by selecting UNDO from the edit menu at the top of the screen. (You access the menus by pressing the right mouse button.)
The goal of die game is to create a living, thriving community of Sims. To achieve this end, you must provide jobs (through industry), homes (by zoning residential areas), and places to conduct business (in commercial zones). The Sims take care of building churches, hospitals, office buildings, and factories, but you must provide them widi roads and mass transit. Property values increase and decrease depending on variables like access, pollution, and crime rate. As the population increases, you will also need to zone land for police and fire stations, airports, seaports, and stadiums.
Easy, you say. Well, what makes life difficult is that roads, fire stations, and police stations cost money to maintain. Of course, this money comes out of your budget. You can raise funds by levying taxes between 0 and 20%.
Then, on at least a yearly basis, you decide how much money you would like to appropriate for your transit, fire, and police departments. Full coverage for each fire and police department costs $ 100 per year. The transit department requests funds in direct proportion to the amount of roads, power lines, and transit tracks you have built. If you provide too little money to the transit department, your transit system deteriorates and traffic problems ensue.
To add to your woes, the Sims themselves often voice complaints.
Through the message bar, they communicate to you their desire for stadiums, more police or fire protection, etc. They also evaluate your performance as mayor to let you know what they think of your policies.
There is one other screen available to aid you on the job, and that is the maps graphs window. You can access this screen by selecting either the map or graph icon on the right side of die editor screen. The map section of this screen is on the left, and the graph section on the right. The icons on die map section let you see the shape of your city, property' Top: The Bulldozing icon prepares landfor new development.
Values, zoning, population density, high crime areas, high pollution areas, growth areas, as well as police and fire protection. The graph area allows you to see general trends for your city, plotted for the short term (the last 10 years), or die long term (the last 120 years). You can plot the residential, commercial and industrial growth rates, as well as the crime, pollution, and populadon rates.
Using these tools, you can see where your city is heading, and what actions you can take to help ensure its survival.
There are five menus that appear when you press the right mouse button.
Bottonv Maps and graphs make keeping track of pivperty values, zoning areas, population density, high crime areas, high pollution areas and growth areas simple and fun.
Using die FILE menu, you can start a new city, load, print or save a city, pick a preconfigured scenario, or quit. The EDIT menu allows you to UNDO your last command. The OPTIONS menu lets you set several variables. You can turn on the Auto Budget, which instructs the computer to use the same values for tax rate and expenditures every year. The Auto Bulldozer allows you to place zones on trees widiout bulldozing first.
The Auto GOTO Event automatically takes you to the scene of major events.
The SOUNDS command lets you turn die sound on and off. While the GAME SPEED allows you to pause die game, or set its speed to slow', medium, or fast.
The POWER BOLTS command lets you turn off die flashing electric bolts which appear when a zone loses power.
If you get bored, look at die DISASTER menu. Using this menu, you can wreak havoc on your community by starting fires, floods, tornadoes, earthquakes, or air disasters. You can even precipitate a visit from Godzilla! The final menu is the WINDOWS menu, which allows you to change the Budget, seek an evaluation of your job performance and city statistics, or switch to the maps graphs window.
The program has several hardware requirements. Your system must have at least 1 meg of RAM, Workbench 1.3 (if you want to use the print functions of the program), 1 disk drive, and a color monitor. The halfbrite chip is recommended, but not required (since my system has die halfbrite chip, I was unable to judge how die game would appear without it). Also helpful is a printer, so you can produce eidier a poster of your entire city (6 pages large), or a “snapshot” of a particular area. The program supports multitasking, memory permitting. Lasdy, the game can be stored on a hard disk, although
you will need to keep the original disk handy as the program uses a “KEY DISK” form of copy protection.
SiniCity makes fairly good use of the Amiga’s graphic and sound capabilities. Once you have zoned land, the Sims move in almost immediately and construct homes, schools, and other structures right before your eyes. As your city grows, more cars appear on the streets. Once things really get hopping, a railcar begins traveling along the rail lines. Should you forget to check what die latest crime statistics are, the digitized sounds of police sirens will alert you to any problems. Once you have built an airport, there is even a traffic helicopter to alert you of congested road areas.
Also, once you have built a seaport, don’t forget to look for sliips along the waterways.
Alas, no program is perfect, and there are a few things in SimCity which could be improved. .After playing ihe game for a while, I felt that even die "Fast" speed was too slow. I found myself spending a lot of time just sitting around waiting for time to pass.
Conference Simulation: SimCity Creators Talk Railways, Zone Evolution, and Version 1.1 On CompuServe edited by Richard Rae Another problem is that, although die user manual says SimCity was written for the Amiga, the diagrams in the manual are screen shots from the Macintosh version of the game. For instance, the GOTO button is shown in die manual as an eye, although it appears on the Amiga screen as an arrow in the upper right corner. Several other diagrams in tire manual do not correspond with objects on the .Amiga screen, but these discrepancies do not significandv affect play.
Also, if you have the Auto GOTO Event turned on, be careful. You could be bulldozing one area and suddenly find yourself being automatically transported to the area of an event, wlrere you may inadvertently continue to bulldoze. Even though you can fall back on the UNDO command, it will not always undo all the damage.
Overall, SimCity is an excellent game and city simulator. The designers have managed to keep dungs relatively simple and do not bog you down widr a lot of unnecessary details. The game is entertaining, and if you get bored with your city, you can aftvays build another one. As a simulator, SimCity shows you just how hard it is to plan and run a city. Well, duty calls. The demands of the citizens must be met!
• AC* SimCity Maxis Software, Inc. 953 Mt. View Dr., Suite 113
Lafayette, CA $ 4549
(415) 376-6434 Price, $ 44.95 Inquiry .209 On July 19th, 1989,
CompuServe’s AmigaForums hosted a formal conference on
SimCity. The featured guests were Will Wright (TO), die
city simulation's original designer, and Brian Conrad
(BC) who, along with Brian Witt, developed the Amiga
version. The following is a edited transcript of that
conference. Names in parentheses represent conference
AC: Welcome all to a special conference with Will Wright and Brian Conrad of SimCity fame. If you’ve been reading the forum’s message base over the last month or so, you know drat SimCity is the current "hot topic’’, being a “city simulator" which is a very addictive game...and then some. The floor is open for questions, so let's dive right in.
(Tim) Was SimCity originally coded in Assembler or C or something else, and what problems did you incur in coding it? And are there any great hints you could give us?
WW: SimCity was originally coded in 6502 machine language for the C64.
BC: On die Amiga, it is mosdy in C except for the screen stuff and the blitter stuff. There were some problems debugging it because of the multiple processes.
(Tim) Any hints?
WW: Don’t cheat too much with 1.1. BC: I have been trying to do BIG cities, and notice that you have to build slowly and wisely in order to have the density work. One tip is to build two zones adjacent with a rail or road on each side.
That way drere is always transportation to and from each zone.
(THol) Will, why don’t Sims take trains unless compelled?
WW: The rail system is treated die same as die road system, except for traffic generation, pollution, and capacity. You will frequendy get messages like "Sims want more roads", but you can ignore diese if the system is ail rails. It just means the Sims want these things, not [that they] need them.
(Jim W) Can I get a non-protected version of SimCity?
WW: Right now we have no [such] plans for Lhe Amiga version. We are trying the Mac II version unprotected to see how it goes with sales; if it looks OK we might eventually start to unprotect all our stuff, but I can’t guarantee anything.
(Jim W) Mine developed a read write error, and I haven't had time to send in my registration (still here on my desk, even). Should I send in my disk with my registration card to get a replacement?
WW: Y es, if your disk has gone bad we'll replace it.
BC: Don't forget you can back your disk up and use the original as a key disk.
(Andy Hatchell) 1 loved your newsletter! In it, you mention that you will be uploading some City Data Files to bulletin boards. Does that include CIS, and, if so, where on CIS?
BC: Actually we encourage anyone to upload their City files.
WW: I think we will start putting some up on CIS.
BC: The Amiga version also will read Mac files. And vice-versa.
WW: Right, there are already several in the MACFUN SIG library.
(Steven Wartofsky) Will and Brian, a double roads rails question: 1) Why, when we completely rail in a part of the city, does it start to decline, and 2) Does building roads under rails provide any solution to transport problems?
MASTERPIECE PROFESSIONAL FONT COLLECTION® 20 DISK SET The largest collection of fonts and clip art available in a single package for the AMIGA.
110 DIFFERENT FONT STYLES This doesn't mean 10 sizes of 11 fonts. It means 110 DIFFERENT fonts.
LARGE SIZES Specially designed for video work. 95 % of the fonts are over 100 pt. Tall. Easily resized smaller.
PATTERN CLIP ART 141 hi -res Dpaint II pages. There are thousands of objects and examples.
ALL FONTS ARE HI RES BRUSHES - 2 disks full of color brushes.
COLORFONTS - 4 full disks.
100 PAGE MANUAL - Full size font printouts.
20 DISK SET - ONLY $ 199.00 Contact your local AMIGA dealer or order direct from AROCK Computer Software, 1506 E. Sunshine, Springfield, MO 65804 1-800-288-AROK Dpaint II Is a registered trademark of Electronic Arts.
Circle 133 on Reader Service card.
BC: Take it, Will!
WW: I’m not sure why railing in a part of your city would cause it to decline unless it is not connected to the zones. And I don't think roads under rails would help anything, but it would take me a while to think that through. Odd.
(Tim) Was SimCity designed after any particular place? Your hometown maybe (originally 1 mean..)?
WW: Do you mean the concept? Or a [particular] city file?
(Tim) The concept.
WW: It w'as more designed around a Stanislaw Lem story.
(Tim) What story was that?
WW: 1 believe it was called "The Seventh Sally’’.
(Tim),Ah... just curious. Strange concept.
M. U.L.E. game, would it? (Wild stab!)
(Michael Sherrard) What enhancements are in the 1.1 version, and how much is the upgrade?
WW: Brian?
BC: Basically 1.1 takes care of a lot of bugs, mainly so diat you “power users” can multitask and have cities going. We had a lot of memory eaten up by Chip RAM and have reduced that somewhat.
For single-drive users, the fde requester works properly. There is corner scrolling instead of jerlty corner scrolling. When you save your City you can rename it at that point. The update is free if you send in your disk, S10 otherwise. Right Will?
WW: Right.
(John TCR) Hi Will. Brian Thanks for a great game! Hope Broderbund well appreciates your efforts! It’s been a great seller lor us here in Denver (35 copies sold and we’re sold out again). I’m wondering what might be next on the list for Maxis Broderbund. It wouldn't be a BC: No a H.O.R.S.E game. Grin WW: I think our next releases wall be SimCity PC and RoboSport Mac; as for our next Amiga game, diat depends on what Brian wants to do.
AC: And what does Brian want to do?
BC: Hmmm. Let's spin the dice here and see what it will be. Grin Anything that pays. I’m not too particular.
(TITol) Is diere a strong likelihood of a Version 2 or SimCity Professional, or don’t games w'ork the same as paint programs?
WW: We have had so many inquiries from universities and planning departments that it looks like we will be doing a more serious version, but we're not sure of the timetable. Brian had mentioned doing a 512K version, but that's not decided yet. Brian?
BC: We need a 512K version for Europe.
And I think one available for the States would be good too. Even though diere are as many as 80% of the Amiga users with 1 meg, you can multitask better widi a smaller game if you don't have die fat lady [the new 1 MEG Agnus] yet.
(THol) I’d really like ethnicity and faith so I can simulate Beirut. Priced at
5159. 95. What limits complexity?
BC: Errr, tiiat’s a better question for Will.
WW: I would say it's mostly processor speed; the memory is not so much of a problem. We’re working on the next system simulation right now (don’t ask me about it yet), and I am hitting a wall with die complexity issue running on a 68020. It will be refined to be faster, though.
BC: Time to drag out the ‘030 and the ol’ Assembler, Will.
(Lee J) When combining road and rail systems, is it necessary to overlap road and rail squares to establish connectivity, or is it sufficient diat the squares only be adjacent?
BC: My favorite part of the code (which I didn’t write). Grin There are a few problems I'm aware of with connectivity which I hope to address in a future version to make things connect up a little more logically. For now, just avoid die quirks. I would like to let users build freeways with roads parallel, for instance, instead of getting what you’re getting now. Anyway, to answer your question, adjacent is good enough.
(Jim W) Brian, you mentioned die scrolling and die fatter Agnus earlier; how do you do the scroll? ScrollRasterO?
ScroLlVPortO? And will the fatter Agnus be implemented in future versions?
' DPAINT III s (PLUS R IOVIESETTER USERS) ANIMATED FONTS Bring your screens to life with 3D FONT-A full rotation 3D font For effects that will knock their socks off I!
DISSOLVE FONT-Yes it does I Dissolve on or off screen - Rotate, Shrink, etc. POUR FONT-Pour in place WOW Animated paint can pours the ront on screen I COMIC FONT-See to believe I Animated characters that bring your title to life OVER 270 ANIMATED BRUSHES Thousands of screens that bring out your best ONLY $ 39.95 Delivered to your door j PsNYV & QN Two Disk P.O. Box 801 SET PROSSER, WA 99350 WARES ADD $ 3.12 TX COMING SOON-PREHISTORIC AND SCI - FI products named are trademarks of there respective oo. Y BC: The scrolls are accomplished by drawing all the tiles to the screen. The system scroll
routines caused beam collision, and dius flashing, so we just redraw all the tiles in assembler without using the blitter (which is usually slower when doing 8x8). Fatter Agnus for now just lets you multitask more easily.
(Andy Hatchell) To cancel die scenario on a scenario city, you are supposed to save die city, then load it back. But what if you want to save a scenario and reload it widiout cancelling die scenario?
BC: Scenarios are hard-coded; they can only be selected from die menu or startup at the beginning. They can also just be loaded in as a city. There is no need to save tiiem back out as a city to just run them as a city.
Circle 150 on Reader Service card.
(Andy Hatchell) Oh well. Getting through all 30 years of Dullsville in one sitting is tough!
BC: I see, Andy. Try it with a 68030.
Grin W: Good point, Andy.
(Steven Wartofsky) Why, oh why, do planes crash even when one sets up the airports for ’em to crash over water, and why do they crash so frequendy?
BC: Will, take it!
W: We get diis question a lot, which means it’s my fault for allowing it to happen. The planes will randomly crash a certain amount, depending on the difficulty setting. But also if a plane or copter has a collision with something (other aircraft, tornado, Godzilla), then they will crash regardless of the difficulty. I think I should put in a collision avoidance routine to prevent this.
(David A.) It's possible for airports (and thus planes & helicopters) to be defined in 1900. Has this been changed in 1.1, or is it just part of die what-if capabilities of the simulation?
AC: (The same applies for nuclear power plants!)
TO: David, we had historical accuracy in one of the early Mac versions, but decided to take it out because it was rather confusing to people. (“I have enough money, why can’t I build an airport NOW?”).
(John TCR) Can you release any sales figures (quantity) on die Amiga version of SimCity, and can you relate diem to your sales of SimCity on odier platforms?
WW; Yes, 1 feel it's OK to talk about it.
As of yesterday we’ve shipped out about 8000 copies of Amiga SimCity to our distributor (Broderbund), which surprises me quite a bit. It's almost running neck and neck with our Mac sales (about 11,000).
(Frank Lazar) Have you considered SimCity 2100, Crisis at L-5?
WW: What I’m working on now has some similarities to that.
BC: Alia, a space station simulation!
Sound like a good idea.
(Frank Lazar) No, it’s an O’Neil Space city1 which gets minerals from die moon, energy from die sun, voiatiles and supplies from Eardi.
WW: Want a job as a designer?
(Frank Lazar) I only program in BASIC but want to learn. I like toying with concepts, though.
BC: You don't have to program to be a designer!
Oim W) (Me, I’d like to see a BioSphere simulator). What about a multiplayer mode? Is that in the future, I hope?
WW: I think we are going to be pursuing stuff very much along those lines. There seems to be a void in the marketplace for interesting social biological simulations such as SimCity, and we'd like to be the ones bringing this stuff to reality.
Nothing Is faster!
ALF 2 Amiga Loads Faster Increased speed, safety, & efficiency on the Amiga.
¦ hard disk controller with software ¦ autobootable - 400 kB sec ¦ safer with CheckDrive ¦ faster with FastFileSystem ¦ 50% more MB with FILL-controller ¦ uses any IBM-compatible HD- even defective hard disks ¦ SCSI Bus, ST412 ST506-Bus Pre' spect Technics Inc. PO. Box 670, Station H Montreal, Quebec H3G 2M6 Phone: (514) 954-1483 Fax: (514)876-2869 BSC Buroautomatlon GmbH Postfach 400368 8000 Munchen 40 West Germany Phone: (B9) 308 4152 Fax: (B9) 307-1714 Circle 165 on Reader Service card.
(THoI) Is it a game, or a simulation? Is it (to you) just a bunch of simultaneous equations, or a statement about pro-car anti-rail? In brief, I'd like to hear what you think about the issues of making a more exact but less playable simulation or a simplified (maybe simplistic) but “fun'’ Lionel model train set, BC: Will?
WW: I think the primary goal of this is to show people how intertwined such things can get. I'm not so concerned with predicting the future accurately as I am with showing which things have influence over which other Lhings, sort of a chaos introduction, where the system is so complex that it can get very hard to predict the future ramifications of a decision or policy'. Brian, anything to add?
BC: I think the more exact simulation would be a professional product as we discussed earlier. Something drat would need to run on a more powerful system, though that could be an Amiga 3000.
Grin It should include waste disposal problems, educational zoning, etc., among the more detailed situations.
(THol) With respect to chaotic behavior, have you ever seen any “oscillating” cities which boom and bust over and over? Mine are monotonic.
WW: You will notice some periodicity' in the employment cycle, but diere are also many factors which will dampen the oscillations.
(Steven Wartofsky) Does city' growth and or decline become dependent at all upon an invisible external economy going through cycles (external market), or is it entirely the product of careful internal planning?
WW: The External Market was at first just a linear ramping function, but I didn't like the fact that it was out of the user’s sphere of influence. So I attached it to the city score so a city with a high score will experience a faster growing external market than a city with a low score.
(Jim W) Connection to Thol's question about games versus simulation: How would yTou compare SimCity to Populous, in terms of content and intent?
WW: i like Populous. I played for several hours last week. I sort of wish they went for a slightly more educational slant, but I like the idea of playing God and having a population to follow you.
BC; I haven't played Populous enough to get into tire game. Just kinda toured around the edges. Neat game though.
(Andy Hatched) Why does the Zone Evolution Chart differ so much from what one sees in the actual game? And why can’t I view the ZEC from within the game (despite what the manual says)?
WW: Brian?
BC: I wish we'd had time to move those over to a chart that could have been included in the package like the Mac zone chart. People have mentioned the inconsistency and I really haven’t had a lot of time to look into it, but Will did the Zone chart screen (passing the buck).
(Steven Wartofsky) Correct me if I'm wrong, but 1 believe that in the Amiga version if you load the ZEC chart first, then use the L-Amiga M N keys to switch foreground and background keys, you can have die ZEC available?
BC-. Only if you have fat Agnus.
(Steven Wartofsky) Brian, is that fat or fatter?
BC: Fatter, as CBM calls it.
AC: Actually, it will work with the original Agnus on a single drive system, or if you unplug your external drive before booting the disk.
(MikeM) Can SimCity be installed on a hard drive, and if so what type of copy protection is used? Key disk or a manual lookup tliingie?
WW: Brian?
BC: Yes, it can be installed on a HD. I don’t know why so many people had problems with HD installation on 1.0. It is key disk, so it will ask for your SimCity
1. 0 or 1.1 disk (depending on what you’ve got).
AC: Okay, time to wind this one down; Will and Brian have done more than their duty tonight. Thanks again Will, Brian, and Maxis!!
BC: Rick, you're quite welcome! We enjoyed it!
WW: I just wanted to say that we’re still a rather small software company right now', and w'e make a lot of silly mistakes from time to time. I just want to thank our customers for supporting us so that we can stay in business and attempt to raise the quality of entertainment software a bit.
(Steven Wartofsky) Will, there are much bigger companies that have beeit a lot less conscientious than you folks!
Congratulations on doing such a good job.
WW: Bye all, and thanks for a great CO!
• AO Copyright S 1989 AmigaForums.
All Rights Resen'ed.
On August 9th, 1989, CompuServe’s AmigaForums hosted a formal conference with Gregory Tibbs, an electrical engineer at Wright-Patterson Air Force Base and president of Amiga-Dayton, an Ohio Amiga users group.
Gregory Tibbs' A1000 Rejuvenator edited by Richard Rae Shortly after receiving a 1 meg Agnus chip for his A2000, Greg bega n i n vestigating the possibilities of installing it in an Amiga
1000. The concept grew in features and capabilities until it
became the "A1000 Rejuvenator”, a WCS daughterboard
replacement which brings many of the features of the A500
and A2000 to the original Amiga model.
The following is a heavily edited transcript of that conference. Names in parentheses represent conference participants.
AC: Greg, I don't think I even have to introduce you or your new toy, so I will just start tilings off by ' asking you if you REALLY did this just because you were told you couldn't!
GT: I am a person motivated by challenges.
When things get old hat, I get bored. So I really DID do the Rejuvenator because it was said that it couldn't be easily done! It took tons of work; I started in mid-May with die design concept, and I now have three working prototypes and am working toward getting the design mass produced.
(Jim W.) Greg, to crush the rumors, just exactly what do we get for our (how much?) Money?
GT: The Rejuvenator acts, in its minimal configuration, as a 1 megabyte RAM upgrade; this RAM is your new Chip RAM. Your [existing] motherboard RAM, through clever design, becomes Fast RAM if you use the Kickstart ROM, or 256K of Fast RAM and 256K (oil WCS. In any case, a 512K Amiga winds up with
1. 5 meg (widi ROM) or 1.25 meg (with Kickstart WCS). For good
measure, you also get an A2000 compatible real time clock and
an A2000-style video slot subset.
AC: Greg, any cost estimate at this poind GT: it’s really too early to tell. A lot depends on negotiations with CBM to get die 1 nieg Agnus and ROM at less dian dealer repair list price. I am shooting for $ 500, but I am not guaranteeing that I will make it.
(Jim w.) Will you still be able to get the 512K Fast RAM if you use a MuldStart like die one from Michigan Software?
GT: The Rejuvenator acts just like die ROM-based add-ons. If diere is no physical incompatibility then 1 guess you could keep it, but you are going to have [an empty] ROM socket on the Rejuvenator.
One note. [The Rejuvenator] replaces die Kickstart daughterboard. CBM currendy does not sell the WCS as a single repair parts item. You should be able to sell it to your dealer assuming it is in good condition or you could try to sell it to someone in a local user group. I feel it will be wordr $ 50 to $ 60, as a good WCS is hard to get nowadays.
AC: Greg, you said “but you’d have a ROM socket...”. Will die Rejuvenator let one buy a KS ROM, plug it into the new daughterboard, and get the basic functionality of, say, a KwikStart board (plus die additional RAM)?
GT: Yes. Since the WCS goes away, you do not recover diat memory as it is no longer in the computer. You will have the KS ROM plus 1.5 megabytes of RAM (on a 512K machine).
(Jon Scarpelli) How will this affect those of us with Insiders or Spirit boards?
Any incompatibilities? And what did you mean by video slot SUBset?
GT: I know that the Spirit board will physically fit. Other people who have seen the Insider say that it occupies less space dian the Spirit board; if that is true, then it too should fit.
I refer to die A1000 Rejuvenator's video slot being a subset because there are some lines [missing which] have little to do with video; if f provided a method of obtaining them from die motherboard, [it would turn] the design [into] a kludge.
[The] beauty is that [the current design] requires no jumpers or trace cuts on the motherboard, and only three ‘clip lead' jumpers from the Rejuvenator to the motherboard In particular, the A2000 video slot has complete access to the parallel port. It also has provisions for dual audio in out.
I decided to not run these wires, as I felt that most A1000 owners would use it for die flickerFixer (which has been tested) and the A2300 genlock (which hasn't). It was an engineering trade-off.
AC: I think my system may be typical of many; I have two devices on the expansion bus. What with all die problems we've heard related to loading, how would the Rejuvenator fit into such a system? Since it replaces the daughterboard, is it safe to say “if it works now, it will work with the Rejuvenator", or not?
GT: I have three points to make on this subject:
1) I could have used a Gary chip and turned the A1000 into a real
A500.1 didn’t because I wanted to use PALs to emulate the
A1000 timings as closely as possible. Pals also meant one less
chip to negotiate for.
2) Because the timings are as close as I can make them, most
expansion devices should work. I am using better (i.e. faster
15 nsec) PALs and have more dian enough copper on the power
busses to ensure that there will be no noise problem. On my
prototypes I see little noise over what is on the
motherboard's power bus.
3) The one problem that could occur is bus loading of die 68000.
There is somewhat more capacitance on the address and data
bus, and a couple more tri-state devices to leak and load die
This might make a marginal siaiation terrible, but I usually recommend going to die 68010 CPU, as it has CMOS drivers that are more noise immune.
AC: What WON’T run with your video slot subset Also, knowing how tight die 1000 is for space (especially with an Insider or Spirit installed), I have to ask: where does the video board GO???
GT: As I stated before, anything that uses the video slot’s parallel port or audio mixing capability will not work. I haven’t a list of what is available for the A2000 video slot, so I can’t say what won’t work.
The space situation is indeed tight. I intend to sell a new RF shield with die Rejuvenator that will add about .4" of clearance. You can also (optionally - you do not have to do this) trim die gold posts diat die WCS mounts on by about .3". The only limit on how low you can go is a large electrolytic capacitor on die motherboard. The video card mounts horizontally, parallel to the Rejuvenator, between die power supply and die center case support.
AC: So, for example, a flickerFixer and an Insider could coexist?
The Rejuvenator turns your A1000 into a 1.5 megabyte machine that uses the 1 meg Agnus. You will have the option to add the new ECS Denise when it is available in the future. GT GT: Sure. The only thing I know for sure diat conflicts is LUCAS’ Frances RAM board. It will fit, with some height adjustment in LUCAS Frances, but Frances will occupy the same space as the video slot card.
(Jon Scarpelli) Do you get die sense diat CBM is reluctant because of prolonging what they may view as an inevitable conversion to the A2x00, or do they seem willing to listen assist?
GT: I knew some form of diis question was going to be asked. I don’t think CBM knows WHAT to think about it.
Anything more I can’t say, as I don’t want to jeopardize future negotiadons with diem.
(Willie Schreurs) Will there be support for the full ECS (Expanded (Enhanced?)
Chip Set)? In other words, will Obese Agnus be joined by its similarly fattened brother and sister? Also, you earlier mentioned that the WCS goes. Does diis mean no more ability to swap between Kickstarts on disk? sob GT: If you have an ECS Denise beta you want to send me, I'll guarantee compatibility!
(Willie Schreurs) Empry hands GT: Seriously, 1 will try to support the ECS Denise. It is supposed to be pin-for- pin compatible with the existing Denise.
If so, then it should work.
As far as the Kickstart disk, have faith! I mentioned that one of die jumper options is to turn 256K of you motherboard RAM into a new Kickstart RAM. My next PCB artwork will incorporate the ability to switch back and forth via a mechanical switch between Kickstart RAM and ROM. The change will take place after the next keyboard reset of the Amiga.
(Pat Fallon) Glad to hear of a product with video option for the 1000! Can you hazard a guess when it might be available?
GT: I certainly want to hit the Christmas market. I am aiming for mid-November.
(Dean) How is the board installed? Are diere connectors like on the WCS board or is it a slip over the posts and (maybe) solder?
GT: The board is larger than the original WCS. It extends over die three custom chip sockets, and the board has machined-pin adapters that fit in these sockets. The Paula and Denise chips plug into die Rejuvenator, along with the 1 meg Agnus. I had to have access to the entire data and address bus, so I needed all of die pins that were used by the WCS. I originally thought to solder diose as I was concerned about noise.
However, for this to be a commercial product, I can’t have Joe Average Solderer mangling his A1000 beyond repair, so I use the same red slip-fit connectors as on the original WCS.
(Dean) Ok, so its just plug and go!
GT: Yes, along with die three clip leads to the motherboard.
(Daniel Habecker) My question has been half answered already. What about electrical compatibility with LUCAS Frances?
GT: I have a LUCAS board, but haven't tried it. Brad Fowles sent me a Frances board to check on the physical compatibility. Lucas is a little temperamental. It should work, but you might have to go through the problem of changing oscillators and or 7474s again until you get it to work. The fact that I am using 15 nsec PALs will just about assure that you will have to ‘recalibrate’ it.
(Daniel Habecker) Thanks, I hope I can get it to work. It will give the 2500 a run for the money.
(Khalid) Going back to die video slot. Is it possible to have more dian one video slot on your product (or for that matter the 2000)? Why why nod GT: I am looking at changing how the right angle connection is made. 1 may go to a header block pin socket arrangement to a 2nd PCB to obtain die right angle. If I do that, aside from vertical space considerations inside the A1000, it could be possible. However, it depends on what video cards you wish to connect. Some of the signals are meant to go from the video card to die A1000 A2000 if you are using a genlock.
This would lead to a contention problem diat cotdd damage die video cards. If die purpose was a genlock and a flickerFLxer, then okay, they might coexist. I buffer the digital RGB signals, so loading them will not be a problem.
(J. Mikell) Greg, three quick questions:
1) Availability of unpopulated boards? 2) Cost thereof? 3)
Speculations on Toaster compatibility?
GT: To work with the Toaster?!! Sure! Just ask for the $ 1500 A2000 add-on option!
The Toaster is supposed to occupy several slots of the A2000 as well as the video slot. There will be no way of making it work.
Bare PCBs will not be available for several reasons diat I am not allowed to talk about here.
AC: Who will be handling production and distribution?
GT: I am not affiliated with any company. I have a friend who is an Amiga dealer and has lots of money, and we are nearing an agreement. Don’t worry. You’ll find us, AC: So you’re not going through a distributor, you’re doing it yourselves?
GT: It depends on the final production cost, which is now being estimated by an outside firm. I'm sure that it will be direct sales at first because we probably will be conservative on production quantities.
When we get more confident and build diousands at a time, we will be able to lower the overall cost to afford a distribution layer.
(Charlie) I came in late, so I’m not sure 1 have a clear grasp of the thing itself; so could you briefly run down die major features advantages? And mostiy, has any provision been made for processor co- processor options?
GT: [The Rejuvenator] turns your A1000 into a 1.5 megabyte machine that uses die 1 meg Agnus. You will have the option to add the new ECS Denise when it is available in die future. So, as long as CBM supports the A500 &. A2000, this board which replaces your Kickstart RAM board will keep your A1000 current. It has an A2000-style video slot and a battery-backed real time clock. You can use the CBM KS ROM or, via a jumper, turn 512K of RAM into a new WCS (KS RAM). It will coexist with most major internal RAM expansions. And finally, the ROM socket is wired to accept the 512K byte ROM, should CBM
ever decide to use one.
This is not a bus expansion product; it will not act like a coprocessor slot, and there is no provision for a math coprocessor.
(Caleb(BU) You mentioned a jumper for selecdon of KS ROM or RAM. Is this jumper internal, external, or a Softswitch?
THINKER for AMIGA "..stunning capabilities..simple to operate.." "..superbly crafted.." - Gary Gehman. Amiga Sentry, 6189 Hypertext and Outline Processing combined Powerful Hypermedia I application combines V word processing and fr J database ideas into an yy I Idea Processor. Link N applications, pictures, tcxt.V The latest technology for organizing information. Use Thinker for writing, designing, documenting, or as a database.
New Features No Credit Cards
p. CA res. Add tax Demo 30 jay guarantee Disk $ 5 Add $ 5 for COD
Poor Person Software 3721 Starr King Circle, Dept 5 Palo Alto,
CA 94306 _(415J-493-7234_ Circle 127 on Reader Service card.
GT: I have referred to it both ways. In my prototype, it is one of those square two pin jumper blocks. In the future, i will run it to an available flip-flop which will be clocked by the reset line, and have the flip-flop input a switch which will run outside of the case. To change, you’d toggle the switch and reboot via Ctrl-Amiga-Amiga. At diat point the new setting would take hold.
(Caleb(BU) I expect that this will be a well-received product. As such, how small an initial production run do you expect to make? Are you thinking of doing something like ASDG and polling users first to see who will buy so as not to be under-stocked for too long?
GT: That depends more on finances. We ulan to build 100-200 for a first run, depending on production costs. I am reasonably sure that dtey will go quickly.
But we need to impress the bank!
(Caleb(BU) I think you will, Greg. The Rejuvenator sounds like a winner!
• AC* Copyright © 1989 AmigaForums. A!
Rights Reserved.
By John Steiner Bug Bytes The Bugs and Upgrades Column A posting on PeopleLink (thanks, Allegro) alerted me to a problem with MicroEmacs, the “other” freebie editor that is packaged with die Workbench on the Extras disk. After some experimentation, I have verified the bug, although I don’t really have any workarounds. It seems MicroEmacs does not clear the archive bit when it saves a file.
This bug could have disastrous consequences for hard drive users that perform incremental backups. Hard disk backup utilities, like Quarterback, automatically set the archive bit when they finish backing up a file. And programs that write to previously existing files should clear the archive bit whenever diey save a file.
Backup programs use the arcliive bit to determine if a file should be backed up when choosing an incremental backup. Incremental backups do not back up the entire drive, but do back up those files that have changed since the last backup session. If you are using MicroEmacs on a hard disk, caution is certainly in order when doing incremental backups.
While on the topic of Commodore products, there has been a smattering of postings on the networks regarding some hardware incompatibilities with various brands of third-party expansion products and the revision 6 motherboard (revision 6 boards are being shipped with the new Fatter Agnus chips in the 2000’s and 2500’s.) If you have a revision 6 motherboard and have experienced problems with third-party products, let me know. If any manufacturers have provided details on specific problems and or workarounds, let me know, and I will pass along the information.
A bug in Music-X that caused die serial port to remain allocated after the program executed has been fixed.
Registered owners can contact the folks at Microillusions for details on die upgrade.
HiSoft BASIC Professional from MichTron has been upgraded to version
1. 05. You can upgrade your copy by sending your original disks
and $ 5.00 to cover postage and handling to MichTron.
According to a press release from Gold Disk, another major upgrade for Professional Page is about to be released.
It should be available by the time you read this, if the September release date is met. The upgrade features CompuGra- phic fonts in addition to the large number of Adobe Postscript fonts. Along with several major features mentioned in the press release, the program will include high-quality, dot-matrix and non- Postscript laser printer support a feature currently missing from this otherwise excellent desktop publishing package.
X-CAD, probably the most powerful and most complicated Amiga CAD program, has problems with the dongle and the A2500. The program does not recognize the presence of the dongle.
Haitex Resources, the people who have the licensing rights to market the program, have been providing corrected disks to A2500 owners who have the original version of X-CAD.
But when one user received his upgrade, he found no indication of better performance. He initially attempted to simply drag the icon from the new floppy disk onto Inis hard drive, overwriting cine old version.
A quick call to technical support provided a solution (no documentation was included with the upgraded disks).
Before running the program, delete the old version from your hard disk entirely, and install the new version from the beginning. That should solve any dongle problems.
Another tidbit of information was made available: it is possible to get a non-donglized version of X-CAD from Haitex, along with a disk full of support programs and utilities. The cost of the upgrade is $ 29.95, and be sure to include your original master X-CAD program disk. For more information on the upgrade, contact Haitex Resources.
CADVision International, original creators of X-CAD, has not been happy with the sluggish sales of X-CAD in die United States. The program has a reputation of being difficult to learn, with little useful documentation being provided. The program currently requires a minimum of 2 MB of RAM, further limidng its potential sales to those equipped widi lots of memory expansion. As a result, CADVision has completely redesigned the interface, and is now planning to market two new versions of the program X-CAD Designer and X-CAD Professional.
X-CAD Designer is a step-down from the original X-CAD, yet still retains many of the features and high-speed capabilities of the original X-CAD. X-CAD Designer will run on any Amiga with 1 MB of RAM or more. The program also boasts a much lower price of S149.95. A press release details several features including high-resolution graphic support for 24-pin and laser printers, optional import export of AutoCAD DXF format files, IFF file export, and Aegis Draw Plus import. The program is also compatible with Gold Disk’s Professional Page. X- CAD Designer's big brother, X-CAD Professional, will
essentially replace the current version of X-CAD.
Neither program will be marketed through Haitex Resources. Instead, distribution will be through one of the largest wholesale Amiga software distributors. Since Haitex is no longer marketing the new versions, there are some technical support questions involved. The U.S. software distributor does not have technical support facilities, and the only phone number listed for CADVision International is in Great Britain.
The person I spoke with at Haitex did not know tvhich, if any, upgrade paths would be available to current X- CAD owners who wish to move to the soon-to-be-released X-CAD Professional.
ASDG Incorporated has released version 1,1 of the Professional ScanLab software. Professional ScanLab software drives die Sharp JX-300 and JX-450 color image scanners.
Due to improved 24-bit electronic color separation routines, the upgrade sports noticeably truer colors than the earlier version . The upgrade eliminates problems with color shifts caused by impurities in the inks used in the final printing process.
For more information and details on upgrading Professional Scaniab, contact ASDG Incorporated.
Gramma Software has announced an update to NAG PLUS 3.1. Several features and improvements include the addition of an Arexx port, more keyboard command equivalents, unassisted phone dialing via modem, and several bug Fixes. Registered users may receive an upgrade through an order form distributed by Gramma Software, or by contacting the company directly. Cost for the upgrade is $ 10.00; a disk and bound manual supplement may be ordered for $ 20.00. SimCity, from Maxis Software lias a bug-fixed upgrade. The new version is less hungry for Chip memory, and is easier to load and ran. Several bugs
have been squashed as well. Registered owners can call for upgrade information.
If you are a registered user and have not received an upgrade, contact Maxis Software.
ProWrite version 2.5 is now available from New Horizons Software.
Improvements to the program include better printing routines, user-adjustable page sizes, and faster, interactive spell checking. The upgrade costs $ 20.00 plus $ 5.00 shipping and handling. Send your original ProWrite program disk and payment to New Horizons Software.
That’s all for this month. If you have any workarounds or bugs to report, or if you know of any upgrades to commercial software, you may notify me by Wtiting to: John Steiner c o Amazing Computing Box 869 Fall River; MA 02722 or leave Email to Publisher on People Link or 73075,1735 on CompuServe.
• AC- Companies Mentioned MicroRlusions 17408 Chatsworth St
Granada Hills, CA 91344
(818) 360-3715 Inquiry 210 MichTron 576S. Telegraph Pontiac, MI
(313) 334-5700 Inquiry 211 Gold Disk. Inc. Box 789 Streetsville,
Mississauga ON Canada L5M 2C2
(800) 387-8192 Inquiry 212 Haitex Resources 208 Carrollton Park,
Suite 1207 Carrollton, TX 75006
(214) 241-8030 Inquiry 213 CADVisio n In temational 1612169
Uxbridge Road London, W13 9AUEngland 01144(1)603-3313
Inquiry 214 ASDG Incorpo rated 925 Stewart Street Madison,
(608) 273-6585 Inquiry 215 Gramma Software 1773015th Ave N.E.,
Suite 223 Seattle, WA 98155
(206) 363-6417 Inquiry 216 ¦ Maxis Software 953Mountain View
Drive Suite 113 Lafayette, CA 94549
(415) 376-6434 Inquiry 217 New Horizons Software, Inc. Attn:
ProWrite Upgrade PO Box 43167 Austin, Texas 78745
(512) 328-6650 Inquiry 218 (continued from page 18) .shortened
as gameplay progesses, thus speeding action. The number is
then displayed at the top of the screen using the LOCATE
command. A note is played based on the y coordinate of die
failing letter. This continues until the letter hits the
city, or the correct key is pressed.
A handy routine I frequently employ is the “key.wait" subroutine, Whenever I need to wait for a key press, I call this routine. It displays die message “Hit any key to continue", then waits for a key press. Once a key is pressed, the text is removed by printing spaces over it, and die program returns to where it was called from. It might be worth setting up this routine as a subprogram and passing to it the text to display, and the coordinates of where to display it, Typing Tutor Listing init.some.stuff: DIM scores(11),namesS(11) RANDOMIZE TIMER WINDOW 1,"Typer Tutor 1989 Mike Morrison.
Written for Amatir.g Computing", (G,Q)-(62i,186) , 10 lnit.hi.score: x=0 ON ERROR GOTO handle.errcr OPEN "letters.score" FOR INPUT AS 1 WHILE NOT EOF(1) x=x + l INPUT 1, r.amesS (x) , scores ( :) WEND CLOSE *1 hscore=scores(1) GOTO main handle.error: IF ERR 53 THEN ON ERROR GOTO 0 FOR x=i TO 10 namesS(k)="Enpty for now" Oops! Last Minute!
Please do not confuse this program with die fine commercial program TypingTutor & Word Invaders. Acadamy Software has offered their commercial product since
1981. We apologize for any m isu nderstandings.
NEXT main: del-500: lives-3:score-0 GOSUB init.screen GOSUB get.ready WHILE Uves 0 GOSUB get.char G0SU3 update,score WEND LOCATE 10,35 PRINT "GAME OVER" Typing Tutor & Word Invaders $ 34.95 Acadamv Software
P. O. Box 6277 San Rafael, CA 94903
(415) 499-0850 GCSU3 key.wait IF score scores(10) THEN GOSUB
hi.score END IF GOSUB play.again GOTO main init.screen:
COLOR 1,2 LINE(0,7)-(631,n6),2,b PAINT (1,1),2:L0CATE
1,20:PRINT "Hi-Score: ",-hscore LOCATE 1,40:PRINT
"Lives:";Iives LOCATE 1,6Q:PRINT "Sco rescore: COLOR 1,0
FOR x=0 TO 631 STEP 8 h=0 WHILE h ~ h«INT(RND(l)*20)+l WEND
LINE (x,176)- Jt + 6fr76-h),2,bf NEXT RETURN get * ready:
LOCATE 15,26:PRINT “Move the mouse out of the GOSUB
key.wait LOCATE 15,26:PRINT " RETURN play.again:
LINE(222,67)-(386,54),2, bf LOCATE 10, 31:FEINT '‘Flay
again (n=END) " rS = ” " WHILE r$ ="" r$ -INKEY$ WEND IF
’'Keyboard Aces" COLOR 1,0 LINE (128,32)-(464, 144),2,bf
COLOR 1,2 FOR x=l TO 10 LOCATE 6+x,20:PRINT namesS(x)
LOCATE 6 + x, 50: PRINT scores (x) NEXT X COLOR 1,0:LOCATE
20,33 PRINT "See you later."; END END IF CLS RETURN
get.char: xc=INT(RND(l)*77)+1 C$ =CHR$ (INI(END(1)*2 6) +65)
y=i:a S="" WHILE aSOcS AND y 22 FOR q=l TO del+spd:NEXT
SOUND 400-y*10,1 aS=UCASE$ (INKEYS) y=y + l LOCATE
y,xc:PRINT c$ WEND RETURN update.score: LINE
(xc-1)*8,3)- (xc-i)*8 + 7,7+((y-1) *8) ) , 0, bf IF aS=cS
THEN score=score+(10* (22-y)) IF score hscore THEN
hscore=sccre ELSE 1ives«lives-l:spd=0
del“500-(100*(3-lives)) BEEP END IF COLOR 1,2 LOCATE
1,20:PRINT "Hi-Score:hscore LOCATE 1,40:PRINT "Liveslives
LOCATE 1,60:PRINT "Scorescore COLOR 1,0 spd=spd-l0 RETURN
hi .score: CLS:hereto COLOR 2,1 LOCATE 2,33:PRINT "Keyboard
Aces" COLOR 1,0 FOR x-10 TO 1 STEP -1 IF score scores(x)
THEN scores (x+I} =scores (x) : namesS (x+1 ) =namesS (x)
scores (x) =score: names S (x) -**” :here=x END IF
(continued on page 108) Roomers by The Bandito [The
statements and projections presented in "Roomers"are rumors
in the purest sense. The bits of information are gathered
by a third party source from whispers inside the industry.
At press time, they remain unconfirmed and are printed for
entertainment value only. Accordingly, the staff and
associates of Amazing Computing™ cannot be held responsible
for the reports made in this column.] AmiEXPO Chicago
Report The usual companies were present.
Not surprising was the absence of Microillusions and Aegis; both of them have been avoiding shows lately because of the expense. Some interesting hardware was announced: a series of transputer boards for the A2000 how does 8192 x 8192 pixel resolution widi 16 million colors grab you? Of course, a mere 20 megabytes of video RAM will be needed to use it. No telling about the price, but it would probably be enough to make a Mac il owner take notice.
How’s that for high-end? For the old faithful A100Q owner, the RejuVenator sounds like it will put some life into the old 1000 series by offering a way to upgrade to the new Enhanced Chip Set and providing an A2000-compatible video slot.
Commodore has continued its hiring blitz by adding a new VP of marketing, Lloyd Mahaffey, who was previously in charge of federal sales for Apple. Not surprisingly, the Bandito has heard that Commodore plans a big push into the federal market. Some major defense contractors already use die Amiga for presentations, including such well-known names as Martin Marietta and Lockheed. While die Amiga may never make much headway against the installed base of PC’s, it is possible that the Amiga could be the computer of choice for die interactive video, multi- media, and presentation requirements of the
Feds. After all, the Amiga is about half die price of comparably equipped Macintosh .systems, and government contracts are sensitive to such details.
Commodore is starting to get better coverage in mainstream publications like PC Week. A recent article has corporate users describing why diey prefer the Amiga for presentations. As Commodore The Bandito has heard that George Lucas is producing a commercial for Commodore, to be directed by Matthew Robbins. Apparently George is a fan of the Amiga and offered to do it for less than would be expected.
Hires more marketing people to handle specific vertical markets, expect more coverage of die .Amiga in specialty magazines for video, graphic design, and publishing.
Commodore stock has taken a beating lately, dropping from 18 down to around 10 because of the poor quarterly returns (a S9 million loss in the latest quarter). Commodore sales were down to $ 180 million from $ 215 million; they lost $ 8.9 million versus a $ 12.2 million profit in the same quarter last year. Sales have slowed in West Gennany, and the stronger dollar has also hurt overseas profits. Commodore has also had more expenses lately, because Copperman is hiring people from Apple, trying to set up a really thorough developer support group and a well-staffed marketing department. Maybe it’s
time to buy the stock.
Commodore is gearing up for a heavy Christmas advertising schedule, while Apple is cutting back because of poor quarterly results. The rumored budget for Commodore’s advertising is $ 14 million, which would make quite a splash. It sounds like Copperman wants the Amiga to hit big this Christmas and get some name recognition (as well as sales).
The Bandito has heard that George Lucas is producing a commercial for Commodore, to be directed by Matthew Robbins. Apparently George is a fan of the Amiga and offered to do it for much less than would be expected. If this is really true, die commercial should cause quite a bit of attention, since it will be die first that Lucas has had a hand in.
The Bandito is working hard to find out just what the commercial will be like; watch out for further details.
Say, lias anybody seen that Desktop Media advertising campaign touting Macintoshes? It offers some amazing animations of a flying car, which zips along at about 3 frames a second and looks like it was drawn by a 4-year-old (no offense, kids). It should convince even' animation professional to buy an Amiga! Commodore should try to buy time right afterwards so people can see the incredible difference between the cheesy looking Macintosh Helocar and, say, any Sculpt 4D demo. Hey, a new slogan for Apple “Half die power at twice the price!"
Connectivity is becoming a more important buzzword at Commodore.
Expect to see their Novell network hookup on die market soon; it's already been demoed at shows. Commodore may cut some deals for other types of network support. There is already a couple of solutions on the market: Ameristar has an Ethernet card for the A2000, and CMI has an Appletalk card.
All diey need is major software support, and perhaps the benefit (to the corporate mind) of a Commodore label on some of diese network solutions. The Bandito hears that a lot more Amigas would sell if people could hook diem up to their network at the office.
Omnitek Computers AMIGA S FULLY AUTHORIZED SALES AND SERVICE FOR ALL COMMODORE PRODUCTS SOFTWARE CLEARANCE SALE 20 - 75% OFF We carry a complete line ol software and accessories for the AMIGA.
Come to our Salem, NH location and 1300 Main St. oav no sales taxi 78 Main St. Tewksbury, MA 01876 Salem, NH 03079
(508) 851-4580 (603)893-9791 Circle 136 on Reader Service card.
I’U Gripe Ifl Want To Dept The Bandito hates copy protection almost as much as software piracy. Isn’t it scary to insert a disk and VirusX says that it Iras a non-standard boot block?
Then you realize it is just copy protection or you hope it is just copy protection.
Tire worst sort of copy protection is the kind drat makes you look up a word in the manual, so dren you have to keep the manual handy and try to count lines and words. A real pain, especially on a piece of productivity software. It's almost as obnoxious as a key disk protection set-up. Fortunately, more developers have been coming to their senses and getting rid of copy protection, but there is still enough out there to be annoying.
The Bandito realizes drat something has to be done to protect games, but drere's no excuse for copy protection on a piece of software people depend on for their livelihood. What’s the answer? For the users, boycott copy-protected software and make sure the manufacturer knows why it's not being bought. At the same time, try to stamp out piracy by refusing to indulge in it, and reporting BBS's and other heavy offenders to tire publishers concerned. For tire publishers, leave the copy protection out, but make sure the software provides a lot of value (especially a good manual and good technical
support) at a reasonable price.
Interfaces that are so far from normal that you drink you're using an Atari ST or a UNIX machine or something. Sometimes it is due to a rush job of porting a product from anodrer computer system. Other times, the programmer just gets slap-happy and starts throwing buttons around like crazy.
The Bandito's advice: Color-blind people shouldn’t do interfaces. It would be nice if you didn’t have to read a manual just to learn each new variation on a file requester. Maybe 1.4 will help dris mess.
Tbe Latest Word Is Perfect Dept. After WordPerfect Corporation announced drat they would no longer develop software for the Amiga, loyal Amigans raised a great hue and cry. With many companies, that wouldn’t make a difference, but WordPerfect has gotten to the top of the heap by listening to its customers. So WordPerfect has bowed to public pressure and decided to continue working on WP software for die Amiga.
It’s really a non-announcement, because they were going to do that anyway at least to the extent of supporting the current version, bug fixes, and a rev for Kickstart 1.4. Still no plans for a WP 6.0 on tile Amiga, though once the IBM version is done they may consider it. If you want graphics and non-embedded formatting, you will have to use some other Amiga word processor like Excellence!The Bandito lias heard that for diose who just want to put words in as fast as possible, Transcript from Gold Disk is the best solution.
About Kickstart 1.4 Expect new versions of all major software packages. Why? Well, most will want to take advantage of the new graphics modes allowed by the Enhanced Chip Set and 1.4, so they have to rev die software. And though we were promised by Commodore that our software will work properly if it followed all the rules, you can bet that a lot of programs will not work right under 1.4. So start saving your pennies for the inevitable slew of upgrades. Hopefully, the upgrades will offer more than just working with 1.4, and we'll get more features for our money. We’ll see.
What’s hot: Sim City, Populous.
Licence to Kill. What’s not: ports of old C64 software. Things are pretty dull, really, in die Amiga market lately. Where is a hot new productivity product to get excited over? The Bandito’s hoping diat Christmas will prove more interesting. At least a new crop of games will be out.
There’s some excitement over Hyper- Clone software, but die Bandito just can’t get too thrilled about somediing diat’s really a programming language. No matter how you slice it, diat sounds too much like work. HyperClone Wars are coming this Christmas. The Bandito expects the battle to be waged in advertising, on networks and bulletin boards, and through user groups.
ULTRACARD has an early start, but there is no marketing to speak of. The competition should be arriving diis fall, and we’ll see some competitive fireworks. The big question is how the HyperClones stack up against each odier, or rather who gets the most stacks out into the market. After all, it's the stacks that really do the work.
The HAM Paint Wars are raging again as Digi-Paint 3 finally ships. Let’s see, what's the status of the combatants?
The Bandito hears that Digi-Paint 3 is a hot seller, especially since people have been waiting to see it. Deluxe PhotoLab is silent, as is Photon Paint 2.0. .Are they out of advertising ammo, or are there deeper reasons at work? DeluxePaint III is still humming along with a bit of advertising but not making too much noise. A new version of DeluxePaint III with an extra feature or two and a number of bug fixes is out now, though diere’s no formal upgrade (call EA’s customer sendee to get a copy). What’s confusing to the Bandito is that DeluxePaint II is still being offered, now at $ 99.95.
-Are diere many takers? The Bandito hears that most are opting for DeluxePaint III instead. At stake in the HAM Paint Wars is die lucrative Christmas sales market. The Bandito's tip: bet on die big ad dollars to win.
Hey, with RAM prices dropping back to where they were a couple of years ago (and lower), it’s time to consider malting the A5Q0 with 1 megabyte of memory standard. Maybe tire A2000 should have 2 megabytes standard. Multitasking only really gets useful when there is at least 3 megabytes. More programs are now requiring at least 1,5 megabytes. The Bandito’s looking forward to seeing the first game diat requires 3 megabytes. It should be simply amazing, don’t you diink?
Speaking of prices headed earthward, color printer prices are dropping as their sales improve. You can get an HP PaintJet for under a diousand, these days. The Bandito hears that prices of color inkjets will hit $ 800 on the street by year-end. Programs like PenPal look even more fun. Being able to include a digitized color image in a letter can make a powerful impact. Think of the love letters you can write... Some of the old Amiga developers that have been in deep financial waters lately are about to be sucked under the rising tide of debt. The theory is that if they can survive till
business picks up in the fall, then maybe the rising tide that lifts all boats will pull their ship out of the mud. That is as long as they’ve managed to plug die holes in the hull.
Meanwhile, the rats continue to send out their resumes.
The Japanese are busy cooking up some interesting hardware. The latest developments: Fujitsu is making the FM TOWNS, a 386 PC with a CD player built-in, eight-channel hi-fi stereo, and a software interface to the CD player and the stereo (click Play to play a CD, for instance). Hitachi has a combo PC, telephone, and word processor called the Proset 30 with a built-in color monitor, printer, internal hard disk and modem.
Sure, these sound like weird combinations, but they just might hit on something. Wouldn't you like a stereo receiver on a card for your A2000?
Byte-by-Byte is bringing out a version of Sculpt 4D for tire Macintosh II.
Well, it won’t have any animation or surface mapping in the first version, so it’s not as powerful as the Amiga version.
Oh, yes, the price tag is a bit different would you believe $ 1500? Expect to pay $ 1000 for each animation or surface mapping module. According to the Bandito’s pocket calculator, it’s cheaper to buy an Amiga 500 and a copy of Sculpt 4D than it is to buy the Macintosh version of the software. Are Mac buyers really drat unconscious? Ask Byte-by-Byte in about six mondis.
Hard disks are getting more popular in dre Amiga market, since die price is now comparable to an IBM or a Mac hard drive. If you’re doing serious work, it’s indispensable. Now if only more software developers would make it easy to install their software on a hard disk, the Bandito would be much happier. Let’s start with Commodore dieir hard disk formatting software seems to be written in CP M by a learning- disabled chimpanzee; it was documented by his twin brother.
Tire more the Bandito hears about
1. 4, dre more it sounds like the Macintosh operating system.
Hey, that’s not bad, because they’ve got a lot of good ideas.
Of course, the Macpeople haven’t figured out useful things
that we already have, like multitasking or a command line
interface option. Give them a few decades, and maybe they'll
clue in. The most disappointing thing about the 1.4 alpha is
die graphics. Supposedly, Commodore hired a real graphics
artist to design new icons and such, but it still looks radier
sophomoric to the Bandito’s critical eye. C’mon, let’s get a
real professional looking font. And it has to be readable in
the new 640 x 480 mode.
One dring the Bandito does miss about the old 1000 is the cheery “bee-dee- bieeuroop” that would greet you when it was powered up. There should be some cool standard sound when you start up, perhaps a digitized “Welcome to Amiga!"
Of course, it would have to be easy for the user to substitute their own start-up sound. Yeah, sure, if you want to hack around with your startup sequence you can do that now, but it should be easy and part of the operating system. While they’re at it, how about making it easy to put in any picture as a backdrop for the Workbench?
The Bandito is a little worried about 1.4. Sure, it’s great that Commodore is taking suggestions from all the developers about what to put into it, and
1. 4 should be a great advance in many ways. But if Commodore
ever wants to ship the bloody thing, they’ve got to draw a
line and say “That’s All, Folks!” Get something out for
Christmas and put the rest of the stuff in 1.5. Let’s get it
out early and make Apple look silly trying to put out their
new System 7.0 software with half the features in 4 times the
memory in twice the time.
VIDI-Mice Software allows you to control virtually ANY VIDEO, MUSIC, or PAINT program from your video camera input
• Transform real-time visual image into mouse and button events
• Fully programmable with instant recall and edit
• Multitask on any model Amiga®, LIVE!® frame grabber required
Please send your check or money order of $ 85.00 to (CA
residents add 6% tax) Tensor Productions 280 Mathilda Drive No.
9 Coleta, California 93117 Tel: 805-685-6245 Fax: 805-685-2994
MIDI-Mice (Music interface) also available for $ 85.00 Dealer
inquiries invited Circle 141 on Header Service card.
All is not well with the 1 megabyte Agnus chips. Some software refuses to run, particularly some games. Other games run extra slow, which is rather exasperating to those who got the 1 meg Agnus expecting better performance.
There will be some upgrades, but don’t expect all games to provide an upgrade.
Commodore can take a lesson from Apple on how not to introduce new models of their computers. Apple stock is wilting and their profits are slumping because they have introduced new models at a price that makes them much more attractive than the older computers in their product line. So, of course, people have stopped buying the older computers and are demanding the new ones; equally, Apple is still producing too many of the old computers and not enough of the new ones. While the Bandito would dearly love to see the Amiga 3000 on the market, Commodore should consider carefully how to introduce
it, and reprice the product line so they do not run into similar problems,
• AO by Barry Solomon I was working on my Amiga last night, very
tired after seven straight days of working (no rest for the
weary!) When my drained brain insisted that I get horizontal
and turn on die odier tube.
Yes, i admit it, my pre-bedtime riLual includes zoning out in front of the TV.
Oh, I tell myself it’s a great way to keep ora top of all the latest professional video effects and styles, but I’m a child of tire fifties and i just can't sleep without my fix. Anyway, diere I was flipping through the channels when what did I spy with my little eyes? My animation.
Yep, right there on my TV my very first professional project!
It’s not that I hadn’t seen it on TV before. I had but only once, and that was months ago in a neighboring town.
Anyhow, seeing the piece got me thinking back to the trials and tribulations of my first professional video gig.
About two months after I had gotten my Amiga, I was still learning the most basic graphics and animation. I had started from scratch with no computer background whatsoever. But all of a sudden, I was in business. It seems my brodter-in-law (in the video business) bad mentioned my Amiga and my plans to a friend (also in the video business) who mentioned me to a friend (you guessed it.)
This friend was a very nice woman who, with two other very nice women, owned a local real estate company. She also produced a half-hour show that appeared daily on the local cable channel. It showcased their nicest properties and, from what she told me, it worked quite nicely for them.
The problem was that the show was on very frequently and, although the houses changed every week, she felt that viewers were becoming a little blase. She wanted something new to grab their attention. A snazzy animated intro, perhaps? So she called me. Well, 1 made an appointment with her for that afternoon and immediately called in sick to my real job. (That dam cough!)
She was a little vague about what she wanted (like the Grand Canyon is a little crack), but she knew she wanted some tiling new and different. I assured her that 1 could not only handle this job, but I could increase her viewership considerably. I told her I would call her in two days with the plan. All the way home 1 looked for a phone booth to change in. I mean, if I didn’t rum into Mr. Video soon, I was sunk!
When I got home I immediately put on my thinking cap, which was no mean trick. It had been a while since I had worn it and I had gotten a little flabby around the brain. Luckily, my batteries weren’t completely dead and, as I stared at the real estate company logo, it all materialized, crystal clear, in my head.
The logo consisted of a drawing of the side of a house with two film reels on one side of it. “How’s about we animate those reels?" I said to myself.
“Yeah, that’s the ticket! We'll animate those reels and have the tide of the show kinda FLASH in on the other side of die screen."
With my confidence steadfastly rooted in God-knows-what, I met with die woman two days later. My enthusiasm must have counted for somediing, because widi absolutely nothing concrete to show her, she approved the idea. I was dying! My mind was racing with visions of fame and fortune when suddenly... “But...it doesn’t really show that it’s video.’’ she pointed out. “How about something with a TV?” I swear I'll never leave my thinking cap at home again. Luckily, synapses jumped into full gear and I had it!
“We'll start just as I said. House and reels appear; die reels are turning; die tide of die show pops in, word-by- word, and after about five seconds, we’ll have a giant TV appear beneath the house widi static on the screen which clears to black into which the cable company can key the first house of each show."
Being the spon diat I am, I even offered to give them a separate 30 seconds of the animated logo with the weekly schedule on it, over which they could run narration and use as a promo.
Well, she loved it! Hands were shaken (so was I), and I told her I would have it for her in 30 days.
Back at my home office studio, my adrenaline faded along with my hopes. I realized that, although I was sure it could be done, I really had no idea how I was going to do this. But I realized it was sink or swim, and I really hate getting water in my ears.
The first thing I had to do was get die logo on my Amiga. No problem; I used my handy-dandy digitizer. My client had even given me camera-ready art.
The digitized logo didn’t come out so well, but 1 figured I could clean it up in my paint program. An hour later, with her logo looking more like a moose than a house, I knew I was in trouble. It seems the digitizer doesn’t take too well to very thin lines. If only I had a drawing tablet, I could trace it right in. But diat was clearly not in my budget. What to do, what to do?!!
I ran to my local stationery store and bought a couple of those clear plastic folders you know, the kind you used to buy to put your book reports in to impress die teacher? Dashing home I placed this over my victim, die logo, and traced away with a fine point permanent marker. In fifteen minutes 1 had it captured forever on plastic. Opening my paint program, I drew a straight line across my screen about where I diought the bottom of die house should go. I then carefully held the plastic (widi the captive soul of the logo) against my monitor, lined it up as best 1 could, and taped the sucker
right there. In twenty minutes I had that logo right diere on my screen!
I decided diat my next step would be to animate the reels. Again, I figured no problem; I’ll create die reels with dieir “spokes," cut them out as brushes, and use the ROTATE BRUSH feature of my paint program to create she different positions for the reels (actually, six positions for die large reel and four for die small reel, as reels of different sizes would turn at different rates).
The large reel was made from 3 brushes (A, B, C). The problem was having the film (or tape) show through the holes in the reel. I made a circle in low mix mode (using Deluxe PhotoLab) over the reel with the holes (2). This gave me a perfect circle outline.
The proper colors were then filled in (3) and center holes and nut were added (4& 5).
Tire spokes were added on the second animation to exaggerate reel motion (final).
With the spokes in place, only 3 feel positions were used to create the animation.
Those of you who realize my glaring error in logic may skip to die next class. On attempting diis step, I soon realized that rotating a circle as a brush does not give you a perfect circle at Least not with any of the three programs I tried. (Well, that explained the Flintstone-like wheels I had seen on so many car animations!)
Okay, if I couldn’t turn the reels, I would move the spokes. Stamping six copies of the large reel and four copies of die small one on a blank page, I set about drawing die spokes. The little reel did actually have spokes, so that was easy. The large reel, however, resembled a standard large film reel, widi circular holes around the center, through which you could see the film.
On diis one I had to get clever. On a plain, solid circle I stamped six smaller circles around die center (representing the holes). Setting my paint program to BLEND, I then centered and stamped a circle in black (representing the film).
The circle was blended over die existing circles, so you could see right through it.
Then I simply switched back to regular paint mode and used my fill tool to recolor die reel and film parts.
Doing die TV part at die bottom of die screen was actually pretty easy, as was doing the promo L had promised, If you ever get a chance to do any kind of intro or titling that will appear on TV, you might want to keep this promo idea in mind. You can probably use the work you’ve already done and just plug in die air times as I did. Five minutes and I had something I could offer to my client as a FREE bonus.
There are diree odier things I had burned into my memory banks by diis project that you should also keep in mind:
1. Keep notes. Always use the coordinates option in your paint
program. Keep track of where your objects are in the screen.
Make special note of where you stamp brushes; you never know
when you may have to duplicate your work. Also, if animating,
it will be helpful to know where your brushes go (or don't go)
on other pages.
2. Save your work (often!), 1 know we read this all die time and
we all think it won’t happen to us. It can. It does! I lost
this entire project three times and had to begin again each
time from scratch.
3. Save all your brushes to disk.
Even tilings you are sure you will never use again. You may have to redo just diat one page and it could be very difficult (or impossible) to re-cut a previously stamped brush.
Well, that’s about it for this go- round, I’ll be back again with more hints and tips for you. And don’t forget, if you have any questions about the practical side of graphics for video, please write.
If you want to know the know the horizontal sync rate for S-VHS don't write. I know, but I'm not telling!
Barry Solomon, Video Editor do Amazing Computing
P. O. Box 869 Fall River, MA 02720
• AC* Fractals Dart III Saving 16-Color Pictures BASIC and True
BASIC programs that let your work with fractals in 16 colors
and save the images to disk by Paul Castonguay In parts I and
[I we drew fractals using only four colors, because it was
important in those first introductory examples to keep die
programs as simple and as short as possible. But now ¦we want
to learn to do more on our Amigas.
Sixteen colors The Amiga is advertised as being able to display sixteen colors simultaneously in high-resolution graphics mode (640 x 200 pixels). So where are they? Colors on the Amiga are linked to a concept called screens.
Screens A screen is a display aiea that can have its own resolution (high or low) and a number of colors (2, 4, 8, l6, or 32). The Workliench screen you see when you boot up your computer is a 4-color, high-resolution screen. To display graphics in 16 colors, you must open a 16-color screen, done in AmigaBASIC with the SCREEN command. The Amiga is a multitasking machine, so when you open a new screen it runs simultaneously with the Workbench screen. You can view a screen either individually by “stacking" it on top of all the others or simultaneously with other screens by shifting their
positions and allowing partial viewing of each.
Windows Normally we do not draw graphics directly onto a screen.
To draw graphics or even to print text we must open another kind of display area on the Amiga, called a window.
A window display area is subordinate to a screen in two respects. First, a window must remain within the area of the screen in which it is opened. Second, a window must use the I This month's example: Fractal generated on the Amiga and modeled after a picture in The Beauty of Fractals byPeitgen and Richter.
Resolution and color properties of that screen. For example, if you open a window in the Workbench screen, it inherits 640 x 200 pixel resolution and four colors. To draw graphics or text using more colors, you must first open a new screen that has the number of colors you want, and then open a window within that screen.
Let's try a little interactive experimentation... Fire up AmigaBASIC and left-select (with the mouse) anywhere in the OUTPUT window to make it active. If you enter AmigaBASIC commands in this window they will be executed immediately. (Use single-line commands only.) This is called “immediate mode’’ on most computers. You type the command and the computer immediately carries out your request. Try it by entering FOR 1=1 TO 1000: PRINT I: NEXT I [RETURN] Your computer immediately starts counting to 1000. If you’re impatient, hit [CTRLl-C to stop it. This termination is possible because AmigaBASIC
is an interactive language. Now enter a more interesting command: SCREEN 1, 640, 200, 4, 2 [RETURN] Yikes! Your monitor is suddenly blank. You see a white drag bar running left to right along the top, a pair of front-to- baclc gadgets in die top right corner, and the mouse pointer.
The rest is empty space. It’s a new blank screen. O.K., now what?
Move the mouse pointer to the drag bar, press and hold die left mouse button, then pull die mouse towards you. The new screen drags down on your monitor, exposing the Workbench screen behind. AmigaBASlC's OUTPUT window Ls diere, exacdy as you left it. Now, drag the new screen back up to the top and dien left-select the black front-to-back gadget (the litde black box). Zap! The Workbench screen fills the monitor and die new screen is now in the background.
Now, let’s assume that you have not resized AmigaBASlC’s OUTPUT window since you first fired it up. When AmigaBASIC opens, the OUTPUT window is ful]-si2e, covering the entire screen. The front-to-back gadget you see in the upper right- hand comer does not belong to a screen; it belongs to AmigaBASlC’s OUTPUT window. If you select it, vou will flip not screens, but windows.
So, how do you switch back to your new screen? You can resize AmigaBASlC's OUTPUT window, thus exposing the Workbench screen's front-to-back gadget and drag bar. Or you can use the keyboard. Press [LEFT_AMIGAJ-M and die screens flip. There’s your new screen again, Now press ILEFT_AMIGA]-
N. The Workbench screen flips back to the front. You will use
these keystrokes often when you want to return to the Work
bench screen while a fractal is being calculated.
Left-select anywhere in AmigaBASIC's OUTPUT window (in the Workbench screen) to make sure it’s active, and then enter die following command: WINDOW 2, "My Window", (50,25 - (550,175), 31, 1 [RETURN) Again you see the new screen, but this time you see that it also has a display area (window) surrounded by a white border and bearing the title “My Window.” You should now be able to print in 16 colors. Let's see. Flip back to the Workbench screen, left-select in AmigaBASIC's OUTPUT window (in die Workbench screen) to make sure that it is active, and enter die following command: FOR 1=1 TO 1000:
COLOR I MOD 16: PRINT I: NEXT I [RETURN] Now flip screens again. There you are 16 colors! Isn’t that amazing? Your computer is counting to 1000 in 16 colors on your new screen, yet you can still flip windows and do other things on your Workbench screen. That’s multitasking.
Now, flip back to the Workbench screen, left-select in AmigaBASIC’s OUTPUT window (in die Workbench screen) to make sure it is activated, and enter [CTRL] -C Flip screens and see dial the counting has stopped. Now go back to AmigaBASIC’s OUTPUT window and enter SCREEN CLOSE I [RETURN] Your l6-color screen is gone. If you try to flip screens, nothing will happen.
This month’s example: The SCREEN command SCREEN 1, 640, 200, 4, 2 The first number, 1, is die screen number. Memory permitting, you can open 4 screens in AmigaBASIC, which are numbered 1 through 4. The numbers 640 and 200 obviously specify die screen resolution. The next number, 4, is the color specification. It indicates diat you want 16 colors, die maximum available in 6-10 x 200 pixel resolution. The last number, 2, is called the “mode”; it must change depending on die resolution.
In these articles I will always use a resolution of 640 x 200 pixels, meaning diat the mode will always have a value of 2.
The WINDOWcommand WINDOW 2, , (0,0 -(S31,IS6), 0, 1 The first number, 2, is the window number. AmigaBASIC uses window number 1 for its own input and output, thus allowing you to enter commands like FILES, LIST, LOAD, SAVE, etc. in immediate mode. You may use window number 1 in your own programs, but it is not recommended.
The empty space between die first two commas means that the window will have no tide. The numbers in parendieses are the coordinates of die upper left-hand and lower right-hand comers of the window. (More about diese in a minute.)
The next number, 0, is a window attribute number, This number allows you to give your window fancy features like drag bars and sizing gadgets, but you don’t need any of diese right now. They take up room on the screen, and you want the maximum possible area for drawing your fractals. Let’s leave the attribute number at 0. The last number, 1, is the number of the screen you want the window to appear in. It’s the same number diat was specified earlier in the SCREEN command.
Confusing news Although you opened a screen with a resolution of 640 x 200 pixels, the actual size of your drawing area is 632 x 196 pixels. Now wait one minute! Since we are asking for a window that has no drag bar or sizing gadget, why don't we get the full 640 x 200 pixel area? Well, AmigaBASIC always draws a border around its windows, and that border takes up a few pixels. In my program I would prefer to have no border, but there is no easy way to get rid of it in AmigaBASIC, So, I just work widi what’s available.
But wait again, you say. Why isn’t the drawing area 632 x 187 pixels, as specified by die numbers (631,186) in the WINDOW command? Good question. You see, when the Amiga executes a WINDOW command, it counts vertical pixels as if you wanted a drag bar, restricting the maximum number of vertical pixels to 187. There simply isn’t room on the screen for a drag bar and more than 187 vertical pixels. If you ask for more, you'll get die message “illegal function call.” The WINDOW command sequence in the last section opens the largest window possible. However, because you are asking for a window
with no drag bar (attribute number 0), you will get the extra nine pixels that would have been used to make one.
These extra pixels are available for drawing graphics. The Amiga coordinates (pixel numbers) for the lower right-hand comer of die drawing surface dius become (631,195). Confusing? You bet!
Last modification Remember those two scaling lines at die beginning of the programs in the last two articles? They were written for a drawing surface of 618 x 187 pixels. Now they will have to be rewritten for a drawing surface of 632 x 196 pixels. Below I list everything needed in AmigaBASIC to set up and scale your 16- color window. (Note that die values I use for xmin through ymax are from diis month's example.)
DEF Fnx(x) = INT( I (x-xmin)+dx 2) dx) DEF Fnv(y) = 195 - INT( y-ymin)+dy 2) dy) xmin = -0.9505 xmax = -0.8825 ymin = 0.235 ymax = 0.29 dx = (xmax-xmin) 631 dy = (ymax-ymin) 195 SCREEN 1, 640, 200, 4, 2 WINDOW 2, , (0,0)-(631,186), 0, 2 The new screen runs simultaneously widi die Workbench screen. You can flip between them using the [LEFT_AMIGA]-N and [LEFT_AMIGA]-M keystrokes. See Listing One for the complete example that draws a l6-color fractal.
This overview of die SCREEN and WINDOW commands is rather brief, but it should be sufficient for anyone interested in running examples in future articles in diis series, If you feel the need to know more, I recommend Advanced AmigaBASIC by Halfhiil and Brannon (Compute, 1986).
True RiiSIC As usual, True BASIC has a slightly easier way of doing the same thing: set mode "HIGH16" let xmin = -0.95 let xm.ax = -0.B5 let ymin = 0.2325 let ymax = 0.3 cx = (xmax-xmin) 6 3 9 dy = (ymax-ymin) 19 9 set window xmin, xmax, ymin, ymax The command SET MODE "HIGH16" opens both a new screen and a full-size borderless window. You do not have to open a screen first and then a window, as you must do in AmigaBASIC. In fact, you don't even have to know the difference between a screen and a window, You also get the full 640 x 200 pixel area to draw on. No modifications of any lines from
previous examples are necessary.
Like AmigaBASIC, True BASIC allows you to flip between screens with the [LEFT_AMIGA]-M and ILEFT_AMIGA]-N keystrokes.
Remember, unlike AmigaBASIC’s WINDOW command, TRUE BASIC's SET WINDOW command does not open a new window. Instead, it scales (directly in Cartesian coordinates!) A window that has been previously opened by the SET MODE command. Listing Three gives die complete True BASIC version of this month’s example.
Specifying colors There are 16 color registers, each of which can hold a different color chosen from a palette of 4096. In AmigaBASIC, you use die PALETTE command: F ALETTE 1, 15 16, 1 16, 0 16 This line loads pink into color register 1. The fractions represent different intensities of the basic colors red, green, and blue. All colors on the Amiga are formed from these intensity numbers. They are combined togedier in the register to form a single color. Intensity numbers can have 16 different values: 0 16, 1 16, 2 16, ... , 14 16, and 15 16. The fracdon 0 16 represents minimum intensity',
while 15 16 represents the maximum.
Since there are 3 basic colors red, green, and blue in each register, and each of these has 16 possible intensities for each basic color, your resulting color will be one out of a possible 4096 (16 x 16 x 16 = 4096). Note dtat you can write dtese intensity numbers as decimals (e.g., 0.25 or 0.3125), but I prefer to use fracdonal notation.
Knowing exactly which intensity number combination will produce a certain color requires a little practice. An easy way to get started is to go to the Preferences screen on the Workbench and play widi die color controls you will find diere. You will see the colors change as you move each control, and its position will give you a crude idea of die color register numbers required to produce Lhat color.
A more exact mediod is to use DeluxePaint. The [RIGHT_AMIGAI-P (Palette) command provides color controls that also indicate the exact numbers required in die numerators of the color fractions. If you don’t have DeluxePaint, you can write a program in AmigaBASIC. There’s an example on page 49 of Advanced AmigaBASIC, although it gives you color numbers as decimals rather than as fractions.
To specify the basic color of each register, I use the subroutine Choose.Color.Numbers:, in which I store die numerator of each color-intensity fraction. These numerators are divided by 16 in die Use.Color.Xunibers subroutine, which is called later.
Choose.Color.Numbers: Reg.0.Red = 4 Reg.0.Blue = 0 Reg.0.Green * 4 Reg,1.Red = 4 Reg.1.Blue - 7 Reg.1.Green = 0 Reg.15.Blue = 0 You might think I'm being too pedantic by using a separate variable name for the intensity number of each basic color in each register, but I have a good reason. In future articles 1 will be modifying these numbers to create different artistic effects. It will be easy then to look down die list of assignments and find the register and color I want to modify'.
Making modifications to a program after it is written is called program maintenance. Designing programs diat are easy to maintain is a smart thing to do. When you come back to a program some time in the future, you will almost certainly have forgotten exacdy how it works. Naming variables descriptively helps remind you of their purposes. I know what you're diinking: But don't descriptive variable names take up a lot of valuable memory?
How much meinoiy is “a lot”?
Computers today have lots of memory'. A 512K Amiga has plenty of room for die sort of diing I'm doing here. In general, if you can think of anything diat will make your program easier to understand and maintain it’s worth it! That's what big machines are for. By using AmigaBASIC’s cut and paste features, you can design easy-to-maintain programs without an inordinate amount of time on the keyboard. Type the following diree lines: Reg.0.Red =» Reg. 0, Greer. = Reg.0.3lue = Now, left-select and drag die mouse pointer across these three lines; they will turn orange. Press [RIGHT_AM1GA]-C to copy
them to the buffer (or clipboard, as some people like to call it). Place die cursor at the next empty' line and oress [RIGHT_AMIGA]-P. Zap! Three new lines are instandv added to your program. Press [R1GHT_AM1GA!-P 14 times. Now, using die mouse to position the cursor, type die required intensity numbers at the end of each line. Done!
Structured programming Long programs should be organized into clearly defined parts that divide the total programming task into many simpler ones. Each part can be identified by an informative name diat shows its relationship to the total programming task. To make its internal operation easier to understand, each pan should contain only die code particular to its own task.
Both AmigaBASIC and True BASIC have two parts designed for this purpose subroutines and subprograms (called funcdons in True BASIC). Both have dieir advantages and disadvantages, depending on the programming situation. I 200 Armstrong Roa Las Cruces, NM 88(H)!
JtemmmrnatsfmBsmm BBS: 505-523-4405 24 Hours Day Voice: 505-526-6243 M-B 8AM-5PM MST Abacus SoRware ToolBox .....18.95 AssemPro ..55.95 Accolade Jock Nlckalaus Golf....28.50 Fast Break ..25.50 Antic Software GFA Basic ..73.95 Phasar . 50.50 Zoetrope Anlm Sys......78.95 ASDG Dual Ser Port ......169.95 Belhesda W Gretzky Hockey .28.50 BroderBund Software SIM CITY ......25.50 Byle by Byte Sculpt 3-D 56.50 Anlmote 3-D 84.50 Centaur Software Forms in Flight
II ...67.50 BAD ......28.50 World Atlas .33.95 Central Coast Software Quarterback 39.95 DOS 2 DOS ..30.95 Disk to Disk .28.50 Clnemaware Lord of Rising Sun 28.50 King of Chicago .....14.50 DeslgnLab Fine Print .....28.50 Discovery Software VIP ..28.50 ZOOM ...16.95 Sword of Sodan .....28,50 Dlgltek Hole In One Mini Golf...22.50 Epyx 500 XJ Joystick .....12.95 Free Spirit Software
Aml-AIIgn ....28.50 Fuller Computer Systems Project D ....28.50 Gold Disk Comic Setter ...56.50 CS Data Disks (ALL)....19.95 PageSetter ...56.50 Inside Atredes 1.1 VHS 19.95 Professional Page......221.95 Professional Draw......112.50 Design 3-D ..56.50 Movie Selter 56.50 Grandma's Software NAG 3.0 44.95 Haitex Halcalc ..34.95 X-Specs 3D .69.95 Hypertek GOMF 3.0 Button ...42.50 Incognito Atredes 1,1 BBS Pro.„.84.S0
Kingdom's of Eng .28.50 Optfcks ......112.50 Innovlsfon Technology Video Effects 3D ..112.50 Broadcast Tiller ...168.50 Interactive Softworks Calligrapher 2.0 ....72.95 Studio Fonts ...26.50 Newsletter Fonts ...26.50 Lion's Fonts 50.50 Asha's Fonts ...50.50 Novelty Fonls (Cafllg)..39.50 Interplay Battle Chess ...28.50 KFS Software The Accountant ...168.50 Mastertronlcs War In Middle Earth......28.50 Magic Johnson 28.50 Mlchtron HISoft Basic 89.95 HISolt Dev
Pack ....56.50 Micro Search City Desk .....84.50 Perfect Sound .50.50 Micro Systems Softwre RAW Copy ...33.95 Micro Systems Software Online Platinum .....56.50 Scribble Platinum ..84.50 The Works ...84.50 The Works Platl ...165.95 Excellence .168.50 Mlcrollluslons Fire Power ...14.50 Supra 2400 Baud Modem 99.95 Land Of Ledgends..... ,...28.50 Universal Mil Sim ,28.50 Photon Paint 2.0 ,,.84.50 UMS Sim 1 . ,11.95 Photon Pt Surf Dsk... ....16.95
UMS Sim 2 . ,11.95 Photon Vld Cell Anm ....84.50 Carrier Command ,25.50 Muslc-X .... ..168.50 ReadySoft MlndScape A-Max ..
112. 50 Captain Blood .... ....28.50 Dragon's
Lair ,33.95 Harrier Combat ... ,..28.50
Ganymed ... ,16.95 Indiana Jones Tmp!..
,..22,50 Right Answers Group MlndWare The
Director .. ,39.50 Pago Flipper F X ,,89.95
Direclor ToolKIt ... ,22.50 Pago Render 3-D
.,89.95 Soft Logic Charon 5 .. .,22.50
PnfiQ Stream .112.50 New Horizons PS Fonts (each) ...
,22.50 ProWrlle 11 ...70.50 Software
Heaven Flow ... ,,56.50 Dungeon
Master ... ,22.50 ProScrlpt ..
.,28.50 Software Visions ProFont (each) ... .,.19,95
MicroFlche Flier ... ,56.50 New Tek Spectrum Holobyle
Dlgl-View Gold ... J122.50
Falcon . ,28.50
Dlgl-Drold . ,,44.95
Tetris ... ,19.95 Oxxl Supra
Corporation Atalk 3.0 ... ,,56.50 Sunrn
Modem ?40Q ,99.95 Maxlplan 500 ...... ,,84.50 wu Ul U
|T| V VJ U I 1 1 4. » w V 1»(« | Taito MaxIPIan
Plus ..... .112.50 Bubbla Bobble ..... ,22.50
Nimbus ..... .,84.50
Gladiator .... ,22.50 Panasonic Inc
Operation Wolf ..... .22.50 WV-1410 w lens ..
.189.95 Qlx .22.50 16 MM
lens ... .,16.95
Region ....* .22,50 Par Software
Renegade ... ,22.50 Express
Paint ..... ,.78.95 Sky Shark ..
,22.50 Easy Ledger . .166.95 Unison World
Projecl Manager . .109.95 PrlnlMaster Plus ..
,22.50 Precision Art Gallery (each) . .16.95 SuperBnse
Pers .. ,,44.95 Fonl3 S Borders ... ,19.95
SuperBnse Pro 3.0 .... .196.50 William Hawes
SuperPInn . ,84.50
Arexx .. .27.95 Pro-Sound Deslanor..
.,89.95 W-Shell .27.95 Progressive
Peripherals Zuma Group InlroCAD .. ,44.95
TV Show ..... .56.50
PixMnle ..... ...39.95 TV Text .50.50
Psygnosls Epyx Joysticks Barbarian ..
,22.50 500 XJ . ,12.95
Oblllerator ,.22.50
GVP ......
- Calll Terrapods . ,.22.50 Flerlrnnte
Arts____________ ,Cs1ll RatnBIrd All brand names......carrledl
The Guild of Thieves.
,.25.50 For the hottest specials call Star Glider II . .,25.50 the Arrakls BBS lit Epyx Joystick ASDG Dual Serial 500XJ ...12.95 Board .169.95 Circle 108 on Reader Service card.
Will use subroutines mainly because they are probably already familiar to those of you who have used older BASICS on other (more primitive) computers.
So what’s a subroutine?
Let me give you just a quick overview of subroutines, as more on them will follow in future articles. In short, a subroutine is like a little program within a program which is executed by the GOSUB statement. For example, this month’s example contains the line: GOSUB Choose .Color. Numbers This causes the computer to jump to die program section labeled Choose.Color.Numbers: and to execute die program lines it finds diere. The last statement of the subroutine is the RETURN statement, which tells the computer to go back and do whatever it was doing before die subroutine was called.
With subroutines, the program operation is easier to follow and understand. When you see GOSUB Choose.Color.Numbers, you recognize its purpose immediately, just by looking at its name. You don’t have to go dirough all those color-choosing lines to see what die program is doing.
Yet, if you do want to see die color-choosing lines perhaps to modify diem you know where they are. That’s structured programming.
Saving pictures to disk In die first article of this series, I recommended you use software called GRABBiTto save your fractals to disk, and DeluxePaint to view them once they are saved. While diis is certainly an easy soludon that allows you to get on with the business of drawing fractals, it may not be acceptable to everyone. First of all, that software costs money! Secondly, diere is always that old do-it-yourself spirit. I therefore devote the remainder of diis article to explaining methods that can be used to save your fractal pictures to floppy disk in AmigaBASIC.
Before getting started, let me say that there are many ways to save data to disk, and just as many opinions among programmers as to which is the best. One person may like IFF format.
Others may want a method that uses only simple, easy-to- understand AmigaBASIC commands (no complicated system or library calls). Others may already be using GRABBiT, and would prefer that I devote less space to this than I already have. Well, I obviously cannot satisfy all these different preferences in a single article.
IFFformat in AmigaBASIC The folks who shipped you your Amiga gave you three programs on the Extras disk with which to save graphics patterns to disk in IFF format. Unfortunately, diese programs are quite complicated certainly beyond the average users capability, and far above the technical level of this article. Yet, guided by exact instructions, I’m sure you can get them working.
The Extras disk Make a copy of it! Look in the BasicDemos drawer and notice three files with AmigaBASIC data icons: exec.bmap, graphics.bmap, and dos.bmap. Some early Extras disks don’t have all three files. If you are missing any of them, they can be created by using the ConvertFD program, wliich is also in tire BasicDemos drawer. I described how to do this in my “Computer Aided Instruction" article (AC V 3-9, page 74). (Incidentally, I just received my new 1.3 AmigaDOS and it came with all three files already on It.) Once you have them all, copy the files to the root directory of a blank
floppy disk. If you have a singledrive system, drag their icons to die RAM: disk, replace the Extras disk with a new blank disk, then drag the icons to the blank disk. You’ll do a lot less disk-swapping this way.
In die BasicDemos drawer of the Extras disk, notice die following three files, each of which has an AmigaBASIC program icon: SavelLBM, LoadACBM, and LoadlLBM-SaveACBM.
Copy diese files to the root directory of die same disk you used above. Finally, if you haven’t done so already, copy to the same disk as AmigaBASIC itself die square box in the root directory of die Extras disk. You will be using one of these programs by tacking it on to the end of this month's example Lisdng One (using Amiga BASIC’s MERGE command). However, before doing so you must make sure diat the SavelLBM program is saved in ASCII format, as required by the MERGE command.
Here’s how to do that:
1. )
Fire up AmigaBASIC from the above disk (double-clic) icon)
2. )
In the OUTPUT window type: LOAD ' ‘'SavelLBM" 3*) In the OUTPUT window type: SAVE ’ ‘'SavelLBM", A
4. )
Quit AmigaBASIC You can now consider this disk a master AmigaBASIC work disk. You can save all your work to a copy of diis disk; there’s plenty of room. Make new copies of iL when you want to start other projects. Now enter this month's example Listing One. Notice the complicated-looking lines in the Save.to.Disk subroutine. Enter this stuff carefully! Now, with the program still in memory, activate AmigaBASIC’s OUTPUT window and enter MERGE "SavelLBM" Presto! The SavelLBM program has been tacked on to the end of Listing One. Save it and you’re done!
If you look at this newly merged code, you’ll probably agree diat it’s quite complicated. I might also mention that not all of it will be used. But don’t concern yourself with that now; the parts that are not used will not hurt anything.
Testing the program This month's example fractal takes a very long time to generate, so you’ll want to make sure the Save.to.Disk routine works before committing your Amiga to die job. Do a trial run first. Fire up the program (double-click the program icon). You will immediately be asked to enter the name under which the fractal will be saved. The program will then start to generate your fractal very slowly. You can quit at any time by pressing the [F-10] function key. Press it now, just to see if it works.
Successful test The disk drive will make some camelling noises while saving die screen to disk. From the Workbench, you will not be able to see the file containing the picture. No icon was generated for it. But you can check it by using either DeluxePaint, or the LoadlLBM-SaveACBM program.
DeluxePaint Put DeluxePaint in dfO: and your work disk in dfl:. Fire up DeluxePaint as if you wanted to look at a 16-color medium- Sittrp 1QR2 ~ _ 3u3E5 Order Toll Free .omputrflhllLtg. Order Toll Free iTilEVf on.5u.met -£iecttonlcb Seagate IVS Trumpcard Hard Drive I Trumpcard 500 Hard Drive Packages for A2000 Series I Packages for Amiga 500 flT-ISTN 49ME6...... _5lB0a 8T-177N ACMES.___________749 DEL ST-277N-iaOMEfl________________819 Da 8T-296N 60MES-------------849 DEI Quantum Pro Drive 40 MEG SCSI Pro Ditve 629 DEL 80 MEG SCSI Pro Drtvo ...... 949 DEL 100 MEG SC3 Pro DrVo 1029 DB.
Urn* MU Include IV8 Tnmpctrd SCSI hird dftve ctrt, cibie. •ofTwin and FREE (Mlnxy In the oortJguoua USA Tns l not musemWy HI It It t package.
Hard Drive Cards f A-20(HJ) Seagate 8T-157N 49MES_ 8T-177H SO MEG,.
..539 DEL ..789 DEI Quantum Pro Drive 40 MEG SCSI Pro DrMe ......649 DEL SO MEG SCSI Pro Drtvo ______ 969 DEL 1 GO MEG SCS Pro DrMe ......1049 DEL lhw« cards Inducto fVS Trumpcirdclrtr, mounthg bdrt. Cbi. Wftwara, and FREE (Mlmy In tha cort- kjUJUt USA WM3SSS5MSMM AMIGA SOFTWARE INFINIT40 I . J 199 INFINITJ0S • ... ,1299 INFINITJOD ’ .. .1399
• RoquKoi Tampcord of Trurrpc Qfd 500 Seagate 3T-157NJ9 Meg
3T-177N-CO Meg 579 Delivered 799 Delivered Quantum Pro Drive d0
Meg SCSI Pro Drive - 679DEUVBSD 30 Meg SCSI Pro Ditve -
999DEUVWEC 100 Meg SCSI Pro Drive- 1079DBJVESC ThoaePacksge* rc
joo Trumpeted 400 ere taaure.IVS Trumpccrd JC3 hd taVe C m
Sc*twi»» a, t-ee ito+.'wy h tv conhguou* USA Seagate super sale
ST-125N 20Meg-SCSI ......279 ST-157N 49 Msg -
SCSI ......349 ST-177N 60 Msg-SCS
J ......569 ST-225N 20 M«g -
SCSI ......265 ST-25IN 40 M»g - SCSI 375
ST-277N-1 60 Msg - SCSI ..449 ST-296N 80 M«g -
SCSI ......479 Quantum Pro Drives 20 Meg SCSI
Pro Drive .529 80 Meg SCSI Pro Drive .899 100 Meg
SCSI Pro Drive 929 XETEC Fast Card Hard Drive Packages far
Amiga 2000 iST-157N-49 M*g J?? ...519 D«l
ST-177N-60 Meg .749 Dal Quantum Pro
Drive 40 Moy SCSI Pro DrV* _____ 629 DEI 80 Meg SCSI Pro DrVe
949 Da 100 Mog SCSI Pro Ditv© 1029 Da CtrdWu-Bi Xw toe»
DM An hard, autoboori ROMjouta- carflgckcuHry . 25 pta SCS
com., dkk.utfto* manual Rtf I DEUVfRY IN THE CONTIGUOUS Aft
STATES xnrc Fast Card System Hard Dflv Package* for Amiga 500
ST-157N-49 MagS????!? ......699 Dal ST-177N-60 Msg
....919 Dal Quantum Pro Drive 40Mog
SCSI Pro Drt o ...... 019DEL 80MogSCSI Pro Ddvo I139DEL 100 M»g
SCSI Pro Drtvo .....1219 DEL Sy*t**n l c kjdetAdt stor Wlh
autaboot ROM, *rc ta*uv, marxoi. Fart lir*chkw 5v*»l'« A
thtataedSCS cabto W*h piwk i vppV md ton FREE DfUVHY IN THE
Disk Drive 1010Compatible £ ] 29 ‘Fr * D*dv*rv to lh* ConHguoua
PRINTERS Pam tone 1180 ffcW NEW NEW .... P armor fc 1191 NEW NEW NEW Pirntonc 1124 NEW 24 Pta_______819 Stir NX-1000_______________159 Star NX-1000 Mufti Fort 2 NEW NEW NEW______179 Stir NX-1000 Rainbow (cotof)--------------219 Star NX-2400 .... - .. . 275 ... 185 ..CALL Modems Amiga 1680 Modim .69 Avst« 12006 ... 69 Avat«x2400 ...... 139 AvatM 2400E ....109 AvitexB600 ErtimalNEWI .339 Supra 24004 Internal (A200C) .139 Supra 2400 Ext.
Modem & Cable
• $ 129 • FREE DELIVERY Aito-...,__ 13 95 Joe* a
Are______________28 96 Joe Bkxto 19 95 Journey-----31 95
Jug_____________ 24 96 .....3396 ... 2296 ... 296 „ 2296
...2496 2596 ...3496 ...21.96 36 96 ...29.96 ..2295 ... 1396
21. 96
- 31 96 ... 31.96 ,-29 96 .2496 .... 2496 ,.2495 ...2496 ,. 2*95
...31 96 ,..25 96 ..2D 96 ,..2496 ,2296 .... CALL .,.28 94 ,,*7
96 ..rt 96 ...2296 ™. 31.98 ...31.96 ...11.96 ...24 96 24 95 24
- 2* 96
- 31 96 ..1*96 ,..24-96 ... 1395 ..2296 . 17.95 ..6296
- 23 95 .31.96
- 3196
- CAU ... 1996
- 2496 .. 1*96
- 31 95 . 29 96 _. 3*96 , 2495 ...3696 ,.25.96 ...2396 ,.59 96
.14 96
- .CAU . 44 96 .-*7 96
2. .. 4495 Kaafonh Subhead .... 44.96 Knef 11* ThW ..... 31 96
ifrd Worrb V2 0________ .....87 95 KtgArtur'iQuert ExccJ. ..31
96 krg 1 Overt U ....._________31 96 frgan or Engard 23 96
KrtgN* of Legecta----31 96 Ktotal.The_______.....31 96 24 96
24 96 24 96 LED Storm____________2495 leem* Soft Lory.33 96
LeetDuel_______ Vatlrca.The.... Leeu* Sort lory I Leonado ...
31 96 ,.,,25 96 IkeraetaH 21 96 Lie and Death
....32.96 UqHi Camera AcHon . 43 96 Lntfcworte ......
154 95 Lor* of the Rttng -----30 96 Magetan I I_________11495
Mage Johreon 512______ 24 95 Mage Johreon 1 Meg_____31 96
Marhonter - Sew Yak______31 96 Mcr*x Martoon ,._______29 96
MarbtoMocketo_______ 1196 Mavk Beacon Typhg31 96 Moan
11__________________J796 Medal he C% Art __.... 21 *6
Menoc*_______________..It 96 M *rJ V ce________________24*6 Me
h tan FllDbk l_________3296 Micro Ftf* Fler Pta* 114.96
Md Mcigr .. CALL Mid Rec 5tadb VI.t ..3996 Mkl
Vie* ----- 2396 Migft-r* and Moglc I_________3*96
MghtyNenii________________31.96 M rdd . 1*96
Ma*dlk Mc**rGoc*« .1996 MortotorlO________64 96
MoetoAji________________3596 Mav*Setter , ...5*96 Mmfc
Studo20______________ 49 96 Muifc X ______________143 93 My
Pctat Data Dkk . 17 96 Nethenwsta .2296 Neu
amerce* _____2*96 New York War-on___________C ALL
11. 96 NlgN Force 23,96 Punto
Storybook 25.96 7JH*!dirji|Wlkl!M:UV,7J:l
CHIN ON H 384 INT. DR, ....$ 99 COLOR SPUTTER________
$ 89 GOLD WSK SCANNER-------$ 899 IMG SCAN-----------$ 106 SCAN
LOCK_______$ 819 QVP 88030 ACC. 60______CALL Wt ORDERS AND
INFORMATION 414-357-8181 FAX 414-357-7814
P. O. BOX 17882 Milwaukee, Wl 53217 NO CREDIT CARD SURCHARGE VISA
, . 11 QNDCNING INFORMATION: 6pe«ty Mtom, Fur ten drthery moh
ceihbo check or money onto. Ptrtonrtend eompeny check* alow 14
Bvrtnet* day* to beer.
¦Qfbw* order* 6% ahlpphg tor hardwe, nrtniirum *6,00, fctorterCardend V1m onto* pieeae lnoki«»e cerri I, enlnllon data and UcnaSjre. W reeUenfi paeia hokida 6k
• 500. Art drier totatgh order* 44 1919 eWpplhfl. Mlnhnum |16Aa
An order* iMppadoubdelhe Cent hartal USA.ara vippad liiltku
Irpjnd Wfcregn at a a nawarrtloebdelaetory warranty. W do no!
G eranl* oornpetiMrv 3 * r*ton i*. Dj to our toar price* rtt
**le* *r* fhaf. All Dafactfve Muma mi»l have a return •
mcamytmd. Faricea and a«eflebmy eu9)act to ohanya wtbrnrt
notba. Bhilpptng and handing a a non-rahjndabto. Wa rtil tha
rttori venbn* a »e tab la In j*. Updtto* mvrt be handtoltiy end
ueer dkaetfy wth the marnrteckrtar.
Wm m wwaw v. h», «¦ ind Canadian order*, pfeaae add B% rtibpfnf. Fttfnlmitl "it, you ell be charged hi erfcltbnaJ amourt All good* 1181 to obtain an FIA. F or your return wtl notka
l. ff foreign anlppfng cha pea • tread to* minimum amount .-----
thortraUon number, inaata c 0 (414)367- 30 Optlona ,
__________ .....31 95 30 Pout_____________ ...23 96 A C Bode
_______________ 125 96 A-Ttak 3____________ ...5496 Ac (tan
Fkjhtor___________ ...2495 Atavontag*. The________ 46 96
Adventure* o 3 tabod ...28 96 Aftor Berne* ...
.... 31,95 Alien Syrtanm ... ,.,,24 95 Am joDOS T«4te-
.....- . 36 96 Ahmakon Sound Track .
69 96 AnimationTttor . ... 4696 Ararnqjc «96 AndtaW Decbtan-------- ...2196 Ahm 4-0 ________________ ..... 67.96 Ahm. War___________ ____J9.96 Anmalon M vtptrw ,.,,6295 AnlmoBon Rataacope ...4*96 Ahrrrrtar Apprenft;*__ ... 17495 Arrvrtr c Rome ...,2196 A cNpekagga ,, 2496 Arkcmtd*
17. 96 Aunt A Ik: Aitvon .....26.96
Arturo ... Attack onlondon ,,..2296
Awad fAcier ...29 96 Aweeome A K ad* back .
3296 Am crt Rage ......----- ...11 96 IAD_________ ...29 96
• ad..... .
19. 96 Berta nc ecrfRmwr 1990.. ...31,96 BofGOTTM* .
.-.28 96 Bcrtf ¦ Tab------------- ...31 96 Ital Ok*--------- . 15 96 Ba ltael------------ .38-96 Batman . ____ ______ ... 28.96 Batlle Chan ____________ 29.96 BotttoFWe 1942 .. Batttotoc (i The C i Hk Inc. .....31,96 Baud Bandll ____________ ... 10.95 Beraerk 3 _________________
- 22.95 Beyard Dark Ccafto----- ,. 21.96 Block Jock Academy 2496
Bkatorotd* .. ...CAU Bbod Moray .
- -2S96 Bbo Argek Boomefod ____________ .25 95 B-kto nf (he
Rnbcrt .
- 2496 Brood: o*l Tttor.,----- .. 164.95 Bubble
Bcbbto ..... 2296 Cekamu* ________.
. 274 96 Cottarrta Gomei________ ....13 96 Ccrtgapfer ....7296 84 96 CopfrrtnBlond .. 31 95 Capldn Fla .....19 96 Corrnen SaoOUgfi TVne 28 96 CtataenSarOega WA ...31,96 Centortcid Vjjore ,..... ... 18 96 Cheaanvetor 2003 ______ . 28 96 ChMtmator 2100 ___ ... 31 96 C9y D**kZ0 ...... 112 96 CkieMatoDetocfNe - 25 96 CdOny_______________ ___31.96 Cortbol Comi ..... 25.96 Cemk: Setter________________« 95 Ccmfc Art Dklo (each) 2D96 Genka ..._____26 96 Crttaage ifrg Gta Khg .. ..»95 CryrtdCtocrTutbo 17,96 Cur* Suitor_________________19.95 ttafy DoubtoFtao Roc'ng .
19.96 DaikSkto .24 96 Data Retrieve Pro 179.96 Data Stem _____2496 Dea*tartager ______„„.,fta.96 CtotonetorOf T vC*wn....21.96 Deja Vu l cr 2 31.96 Defu*» Murte Cor.tr 7 C .*196 D*iu» Part III ____.. .. 97 96 Ctotam PhoToUb .97.96 DetawPrinll-------------51.96 DeJuw Praducttar* _________128.95 Defc.ee Vrtoo I ..... ... 96 95 Drt»Vb»V12__________At 96 Demon'l Wtatof___________.. .2695 Decor*----------------------2196 0*1 gn 30 59 96 DM raourut 30.96 Devon AJ m D tirwd C nper J1.96 DkTdrrdd.. ____________59 95 Dig cnUO _______6195 D rewCed -----124,95
DtgA*crt30_____________52.95 DtroWan_______________CALL Drcsour DhcDvery H 25 96 Dtot 2 Ctok _____ 25.96 Dwc Martor ____________________25 96 DekMecharta ______ 54.96 Dh» _______|A 96 DbJDb.. _____ H.96 Double Oagm __________Jfi.96 Dduq'i Mafh Aoxtaum 46 96 Dragon Focw31.96 bogm'i lar ______________iJ 95 Dragon'i Lar II CALL Draw 2000 169.95 Dungeon Mator__________24.96 ExrnQeonQjert -.-..-. -3196 Dur*x»VH » 47 95 Dynomfc Drjrri ------- 46 96 Eg* Vvewv. ScrebrJ .,...,3196 CorTrrtaerwri Dfck ...... IA96 MllPAStab .....14 96 EtanPortarmw . 35 96 Erppta*. _____ 31
96 [vrhnc* t Mag 153 95 Esoton_______________________229 eye erf l-toflji ______________24 95 M9K«*hr ..CAU F--4Q Punult Sim ______ 28.96 FA 16 Intofcefitar ......31 95 Face I . 2096 FaeryTdeAdven .29 96 f- ccn---------- 29 96 OpwolonCourTtonMJe .1696 F F tav«k3n ----37 96 Feet E ¦* * _____....._____27 96 Ftodwrrtlcn______________31 96 Fenad Formukj I ----------...31-96 .
Fferdth Fnjddy ...... 31.96 FtaePibd_______ 25 95 FbeZone _______ 22.96 Flj rt SnvObr 11 -----------31.96 European Scenery D*k . 19.96 Ftow _____ 69 96 Focui Vktoa 107 95 Forgotten Wartdi ------- 24.96 Form In Righl ..... 49,96 Formcdton 44 96 Fright Hl i* _______24.96 F*ocit Page 7496 Futu* Sound 500________59 95 CcRoctk: Cccn'jevr ,25 96 Corel WtoEd_________13 96 GojnttoM----------------,31 96 Certyiburo ----------------. 3596 GFA Bcsnc 10_______________ 57 96 Gad at lha Un 24 96 Garb ci It* Aiwtra 36 95 GadPurner2_____________2495 G *dRwh___________ 24 96
Grabbi____________________1496 Crarcf Prtt CtcuM __________27.96 CureHp ..... ..36 96 Fta-dballl ______ 28 95 Ho-toy Cta»t*cn ...._____ 31 96 Ita-paoh ____ ...,2596 toj-rtocCanbertJanutata. ..,31.96 FtocrtWave__________..2596 Woovy Metal_______________2396 I*t»cV ft* Lane* .. 2596 Hfcto___________ II 96 hoe In Or*__________________21 96 In*hOr*-Cou-i*Dt*k ...1396 itaitaoe____________ ...29 96 toinr For Bed October 31 96 MybW----------------------2296 Hjrt erDc*r* ________ 2296 Ilixfkirou* ..2296 Imponbto Miaian}.1496 [rcfeno Jar**-Act on G m*25 96 Irdcrxj Jonrt-Gftjphb Ach-
31,95 taclcxy Spcrtt_____________30 96 Irrwatao* 2 ... 43 96 Irefcnl My,fc___________1396 tatorForft___________________49 96 IrilerchorQe .. 23 96 tahoCad_______________43 96 Irwdm A hqntaq» ,59*6 Irntokm _______________________134 95
* hdo___________________II 96 W Car* From TV* D rt 11 96 JoekNt
Haul Golf 30*5 JN Course* c4 1989_______14 96 JNCouneDbe I 1496
AMI QCN _____ $ 136 SUPER GEN____________________________ $ 889
LOCK...._____11369 FUCKIR HXIR-------- $ 456 FUCKER RXER Of
NLOCK OPT___________$ 39 PBTFECT SOUND -$ 69 ,,....4496
..... 32 96 26 96 Of Share Wantar_________2496
Omnketotaai-----------31.96 Onriptay Eaebdt 5 on 5 .. 31.96 On
Lhe Pkshnum___________6495 Operation Wo4 ______22.96 Optic*
.CALX FOR SALE PRICE Oivrdd ... 2396 Outrun
31.96 Peg* Rerxtow 40 .. 94 96 PcgeSeh* .5996
bog* Sh*nn ____ W *6 Dot Mo Mi Fora I ft____ a 2495
PogeThfrtBr____________49 96 PcgeffcparPWra .8 96 Pen
Pol____________________44 96 n-ceor ____________5496 PhcAcn
Panf 2 JD_______37 96 Photon Pah Surface_______19 96 Photan
V*oeo: Cel Anfcn .*7 96 Photon Vtoeef'oniport.... 169 95
fV4 a4Wtaxd------------------2296 Ptar**rPague 2S 96 FWScr l
...92.96 PbraftfLuri________________24 96 Ptatacn
_____________27 96 Par 1st Racket*_____________25 96 Po4ceOue«
1092________3! 96 Ftad of SadoTce_________31 96
Pop.taui_______________.... 3296 ParbdCal ___________28 96
Pc*toc* t Forta Aft or C . «S24 95 Power Wtacta-n 28 ......M96
Ftawetarame .26 96 fheceety____________....48 96 Ptal Motor
Pta*------------2*96 Pta Script 28 96 Pa Soccer _____23 96 Pa
Sound Design____________96 96 P» Video Gold ...... 174 95
PioWr1to28_________________49 96 PtaOw ___________... 11295
Ptafeebrta ftag*__________22* 95 Structured C»p Art_______36 96
36 96 1 42________21 96 Pta ecfD* Backup .... 3096 Project
Matter ____129.96 Pro ec»N*ptar*--------21 96 Pccectcr Utm of
Tor .... 25 96 Pub Gam*__________26 06 Pubtohen Choice .....114
96 PvbtoherFlut---------------64.96 Pu-BtoSatam___________
19.96 Naverty Font* NuctoorWor .. Cb1to otar.....
Shogun.....---------.... ShuffiepuckCcrfe Side
Am___________... SltonrSerub*----------- JtmCHy-----------
Start* Wm________________ Sky I tarter_______
SkyChse_______________ Sky Fra II_________________ 5k .VxtV
Slipped Stream _________... Softwood FI II
______ So c ear Lord ..... Spac e •terrier ____ Space
Quetf 1 o 2____ Spot e Overt 3 -- Spac * Racer-----------
Speedbrrti Spr’eorU ___ Sfar Comrrxni _____ She Ray
__________________ $ ? » TrelcThePrxrtFfor Sfcr Woi
StelorCruiode ...... SI reel Fightor ... [Strip Ftatorr I ...
Sluda Magic Sub ftdltto Star ----- Super?tarBceketbdl ...
RomcnfSc End • Dorr* Pvbfcon A Bate RVF Ftanda _______...._____
Savtige ..... Sccrrenger .....
Scrabble Sctabto Pta*horn Secuta* A-cAyjf
Return To Attantfc__________ Beveng* d De nder.... Rtvnhg
Notebook ,. ..... (Sck DvgeM . - .. PkkCkj -k Soccer I
Meg BfckDarti Soccer 612* ... PlngSta*------------------- “ ‘ -
*1 arete_____ Quarter Back----------- Rcmbo
5 . Gynpoge --- ftaitan Raw Ccpy ------------
Redm of the Wataek Red Lghlrtng ______________ Reel Fbh’n
.... Pnhncoo ward c Sodan .---- 2* 96 SwcKk rrt
T. V. Sporti kertjal_____ 3D96 T V Sport, Faertbdl_______3D 96
_______31 96 __________2496 Technocop---------------31.96
Tempi* at Doom31.96 letraquert 2496 Tel* -.... - 2096 Tert Ed
Ptai__________________4896 T*rt Ove2-Tv*Du*l_______27 96
Cirttorrta Chtal---------1496 Curcpeon Oe4_____1496 Su pew «t
_________1496 Th tor_____________,...2298 The* Ftaert Mouf
Bdftto »ftdfdS.96 Tnrtoer________________57.96
ThrdCourtor________3*96 Thee D*»ron_____________*9 95 Thjnctor
Stade_________ 95 Tvne* c Lore ------ 2495
Hks _______________________3*96 lom *
Jerry------------------CAU Tower Toppier 31 96 Trmtcrta*
_________________.41.96 Ttak r Ftanpr 57 96
Turtw_____________________IK 96 Turbo3fc*r30 I Meg 112-95 TV
Show *496 TV Tart______*496 TwitM Zone___2496 Tw49* * Ckreom
......19 96 Utbna4~ .. 3*96 Utbnol_______________2496
l) rd*«i*a Cwnrrta ,„.,..)1 96 Urwenel 51 96 Vompke i
Cmpk* __ 3396 ¦Atoo Eftock 30------l|3*6 Vctoo Font* ____
28.96 Video Page Totor------------35.96 Vfctoo
Tlfler_____________ 54.96 Vta*oScape3D20 115 95 Interior
Diegn____________2296 Wtafcotaa ___________CAU Vvu*
HectfctaFYctocfan . 33 96 Wa J-0__________*7 96
VTXOnft*_______II 96 W3h*l___________________3196 War In Mtad*
Etrth_________29 96 Wayre Gxr+rky Ftoctoy 29 96 WetdDreorr*
.2496 Who . Who 1, When________3496 Wvta Wok*_______35
96 Wvgi O Fury ___3*96 WortoPtafttam.Th* .CAU World
Altai _______ 3596 World Tour Go*_______________1596 X-Speci
.. *4.95 Tak Me Kmc Iren __________29 96
ZrryGo*..„_____________2*96 loekap*-----------5M6
laklma_______________3*96 Zynap* ______2296 resolution
picture. Next, select Load from the pulldown menu, Saving in
True BASIC choose dfl:, select whatever filename you saved
your picture I assume that True BASIC users are more likely to
want to under, and then select Load, You will see the messages
“Your use GRABBiT, and that they are not interested in seeing
a lot of fractal is being generated,’’ and “Press [F-10] to
quit.” That’s the space devoted to this topic. Again, if there
is sufficient reader screen you just saved to disk. It works!
Interest, I can certainly do so in a future article.
I. oadlLBM-SaveACBM Fire up the LoadlLBM-SaveACBM program
(double-click its icon). At the IFF ILBM filespec prompt,
enter the name you gave your fractal. At the ACBM filespec
prompt just press iRETURN], entering nothing. The disk will
whir and you'll see your picture for about 15 seconds before
it disappears. If you want to view die picture for a longer
period of time, you have to modify the LoadlLBM-SaveACBM
program. Here’s what to do:
1. ) Fire up Amiga3ASIC by clicking on its icon.
2. ) In the OUTPUT window, type: LOAD "LoadlLBM-SaveACBM"
3. ) In the OUTPUT window, type: LIST Mcleanup. The LIST window
appears and the part of the program that you have to modify is
on the screen.
4. ) Delete the second line, which reads: FOR de = 1 TO
20000:NEXT Replace it with: WHILE INKETS CHRS(138):WEND
This will cause the picture to remain on the screen until you
press the [F 10] function key.
5. ) Save the program.
Using GRABBiT When the program finishes calculating your fractal, it will remain on die screen so you can save it to disk with die [CTRL]- [ALT]-S command (.GRABBiTs save command). When you are done, press die [F-10] function key. You will be returned to the Workbench.
Other ways to save pictures As I said earlier, there are many ways to save pictures.
The one presented here has the obvious advantage of letting you look at your pictures using DeluxePaint. In future articles, you will be modifying the colors of your fractals to produce your own artistic effects, and DeluxePaint will prove to be an excellent tool for doing that.
But you still might have an empty feeling about all of this because you really didn't write the program yourself, but copied it from the Extras disk. I feel the same way: I prefer to program the computer myself. You can always save your pictures using AmigaBASIC’S GET and PUT commands. The GET command can read graphics information directly from the screen, and it is not difficult to write a program to save that data to disk.
This method, although somewhat slower in AmigaBASIC, is much easier to understand than saving in IFF format. I wrote programs that use this method in both AmigaBASIC and True BASIC. However, because of space constraints, I’ll have to present these in a future article. The mediod is also described in Advanced AmigaBASIC Still not satisfied?
Maybe you want to do it yourself but still want to save your pictures in IFF format. You can! I would recommend the book AmigaBASIC: Inside and Out by Rugheimer and Spanik (Abacus, 1988). With example programs less complicated than the SavelLBM supplied by Amiga, it demonstrates how to save your files in IFF format.
This month’s example This month’s example was modeled after a picture in the book The Beauty of Fractals by Peitgen and Richter (Springer- Verlag, 1986, p. 79). It gives you a chance to compare the Amiga’s performance against that of a “professional computer.” Naturally, pictures from tire book are more impressive, as they were produced using a higher resolution screen and 256 colors.
Nevertheless, the Amiga does a pretty good job. The example demonstrates that you can produce very complex fractals on your Amiga, using relatively short programs in BASIC.
Execution time for this example is considerably longer than it is for die examples of previous mondis: Approximate Execution Times AmigaBASIC 36 hours True BASIC 24 hours A C BASIC 15 hours Why does it take so long? The reason is that this month's example represents a much greater magnification of the Mandelbrot set than do any of the previous months’ examples, dius requiring more processing time.
Future fractals Next time, we will continue towards our goal of understanding how these fractals are produced by seeing exacdy how lo program a computer to translate algebraic equations into graphics patterns.
Listing One: Fractal-AmigaBASIC REM ****************************************** REM - REM * Sixteen Color Fractal REM * REM * by Paul Castonguay REM * REM a***************************************** DEF Fnx(x) = INT( (x-xmin)+dx 2) dx) DEF Fny y) = 195 - INT(((y-ymin)+dy 2) dy) xmin = -.9505 xmax = -.6825 ynin = .235 yraax = .29 dx xmax-x.Tiin) 631 dy = (ymax-ymin) 195 SCREEN 1, 640, 200, 4, 2 WINDOW 2, , (0,0)-(631, 186), 0, 1 GOSUR Choose.Color.Numbers GOSUB Use.New.Colors Crunch = 800 M - A CIS ' ¦ Delete next two lines if you're using GRAB3t? * LOCATE 23, 20 INPUT "Enter name to save
fractal ILBMnaneS LOCATE 10, 23 print "... Fractal is being generated ..." PERSONAL COMPUTER SHOW Come See The California Goldrush!
October 20-22,1989 Santa Clara Convention Center Santa Clara, CA Over 10,000 Attendees and 120 Amiga Companies Will Be There.
Admission includes the Exhibition, Seminars, Keynotes & Amiga Artists Theatre!
120 Amiga Exhibitors Featuring State of the Art Software and Hardware, at the lowest prices!
Master Classes Available in Amiga Graphics, Video, Programming, Animation, Music and Publishing!
Seating for Master Classes is limited; call for schedule and availability before registering.
PRE-REGISTRATION DEADLINE IS OCTOBER 6,1989 For Hotel Reservations Call the DoubleTree Hotel at (408) 986-0700.
Hotel reservations deadline: September 20th. 1989.
For discounted airfares, call American Airlines at (800) 433-1790 and give them this ID: S-83536.
HfJrW’f or Call 8Wf-32-m fIGA Nittrimwidr (urQl%867-46fv?)
For Your Ticket to The Amiga Event!
N Yes, I want to come to AmiEXPO - California name _ Friday Registration is $ 5 Additional At The Door ZIP Master Class(es) - List Class and Time - $ 60 Each Saturday _ Sunday One day - $ 15 _ Two days - $ 20 _ Three days - $ 25 _ For MasterCard or VISA Payment Expiration Dale_ Account Number_ COMPANY ADDRESS CITY STATE Name as it appears on card:.
Signature_ Make Check or Money Order Payable to: AmiEXPO 211 E. 43rd St., Suite 301 New York, NY 10017 Total Amount Enclosed L Delete next line if you're using GRABBiT Reg.O Reg. 1 Reg. 2 Reg, 3 Reg. 4 Reg. 5 Reg. 6 Reg. 7 Reg. 8 Reg. 9 Reg.
Reg, .Red 16, Reg.O .Red 16, Reg.l .Red 16, Reg.2. .Red 16, .Reg,3 .Red 16, Reg. 4 .Red 16, Reg.5 Red 16, Reg.6 .Red 16, Reg.7 .Red 16, Reg.B Red 16, Reg. 9 Green 16, Green 16, Green 16, Green 16, Green 16, Green 16, Green 16, Green 16, Green 16, Green 16,
10. Green 1
11. Green 1
12. Green 1
13. Green 1
14. Green 1
15. Green 1 Reg.0.Slue i Reg.l.Blue I Reg.2.Blue I Reg.3.Blue l
Reg .4,Blue l Reg.5.Blue l Reg.6,Blue l Reg.7.5iue 1
Reg.3.Blue l Reg.9.Blue i Reg.10.Blue l6 Reg,11.Blue 16
Reg.12.Blue 16 Reg.13.Blue 16 Reg.14.Blue 16 Reg.I5.31ue 16
10. Red 15,
11. Red 15,
12. Red 15,
13. Red 15,
14. Red 15,
15. Red 16, Reg Reg Reg Reg Reg Reg REM REM REM GOSUB
x = 0 y = 0 k = 0 r * 0 WHILE r *=M AND k Crunch xk = x*x -
y*y + i y = 2*x*y + j x = xk k « k+1 r « x*x + y*y WEND
RETURN Select.Color; IF k » Crunch THEN COLOR 15 ELSEIF k 200
k=2B THEN COLOR 6 ELSEIF k=25 OR k=23 OR k=2l THEN COLOR 5
ELSEIF k=26 OR k=24 OR k=22 THEN COLOR 4 ELSEIF k=19 OR k=17
RETURN Choose.Color.Numbers: LOCATE 10,20 PRINT "... Please
wait while I adjust colors ..." Reg.0.Red c 2 Reg.0,Green = 0
Reg.0.Blue = 4 Reg.1.Red = 5 Reg.1.Green = 7 Reg.l.31ue = 3
Reg.2.Red - 3 Reg.2.Green = 5 Reg.2.31ue - 0 Reg.3.Red = 4
Reg.3.Green = 6 Reg.3.Blue » 7 LOCATE 12, 30 PRINT "Enter
[F-10] to QUIT" FOR j=yain TO ymax+dy 2 STEP dy FOR i = xmin
TO xnax+dx 2 STEP dx GOSUB Calculate GOSUB Select.Color PSET
i NEXT j WHILE INKEYS CHRS(13B) WEND Done: Save.To.Disk:
ccrtDir% = 0 ccrtStart% = 0 ccrtEnd% = 0 ccrtSecst = 0
ccrtMicsi = 0 DIM bPlanefi(5), cTabSave% 32) DECLARE FUNCTION
LIBRARY LIBRARY "dos,library" LIBRARY "exec.library" LIBRARY
"graphics.library" G0SU3 Sax*eIL3M Reg.4.Red « Reg.4.Green =
Reg.4.Blue = Reg.5«Red = Reg.5.Green = Reg.5.Blue = Reg.6.Red
Reg.6.Green = Reg.6.Blue » Reg.7.Red Reg.7.Green = Reg.7.Blue
3 Reg.8.Red = Reg.8.Green = Reg.8.Blue = Reg.9.Red =
Reg.9.Green = Reg.9.Blue = Reg.10.Red Reg.10.Green =
Reg.10.Blue = Reg.11.Red = Reg.11.Green = Reg.11.Blue = Reg.
12. Red 15 Reg. 12.Green ** Reg.12.Blue = Reg.13.Red
Reg.13.Green = Reg.13,Blue = Reg.14.Red = Reg.14.Green =
Reg.14.Blue = Reg.15.Red = Reg.15.Green = Reg.15.Blue =
RETURN Add Extras:Demos SaveILBM to end of listing using
MERGE command from AmigaBASIC OUTPUT window tsee text)
RETURN delete from here to end if you are using GRABB.T set
color 2 case 18, 16, 14, 12, 10, fl, 6, 4, 2, 0 set color 1
case 15, 13, 11, 9, 7, 5, 3, 1 set color 0 end select Listing
Two: Fractal_TB
r. d sub 13 13 13 12 14 15 0 0 15 1 0 15 14 0 0 0 0 Re
g_C_31ue 16 Reg”l_31ue 16 Reg_2_3lue 16 Reg_3_3lue 16
Reg_4_31ue 16 Reg_5_Blue 16 Reg_6_Blue 16 Reg_7_3lue 16
Reg_S_31ue 16 Reg_9_31ue 16 16, Reg_l0_31ue 16 16,
Reg_ll_31ue 16 16, Reg_12_3Iue 16 16, Reg_13_31ue 16 16,
Reg_14_51ue 16 16, Reg_l5_31ue 16 3_Red 16, Reg_0_ l_Red l6,
Reg_I_ 2~Red I6, Reg~2~ 3“Red lS, Reg Y 4_Red l6, Reg_4_
5_Red 16, Reg_5_ 5_Red 16, Reg_S~ 7~Red 16, Regjf 9_Red 16,
Reg_s" 9_Red l6, Reg_S~ Green 1S, Green 16, Green 15,
Green 15, Green 16, Green 16, Green 16, Green 16, Green 16,
Green 16, .10_Green ll_Green 12_Green 13_Green 14_Green
15 Green
(0) RegJ
(1) Reg_
(2) Reg_:
(3) Reg_:
(4) Reg
(5) Reg.
(6) Reg_
(7) Reg (fi) Reg.
(9) Reg_
(10) Reg
(11) Regi
(12) Reg
(13) Reg
(14) Re
(15) Reg.
10jted 16, ll"Red 16, 12 Red 16, 13~Red 16, 14_Red l6, 15_Red l6, Reg.
• AO set mode "HIGH16" let xmin = -.9505 let xmax = -.8325 let
ymin = .235 let ymax = .29 let dx - (xmax-xmin} 639 let dy »
(ymax-ymin) 199 call Choose_Color Numbers call Use_:iew_Colors
set window xmin, xmax, ymin, ymax let Crunch = 330 let M ** 4
set cursor 10,23 print "... Fractal is being generated ..." for
j»ymin to ymax-rdy 2 step dy for i=xnin to xmax+dx 2 step dx
call Calculate call Select_Color plot points: i,j next i next j
! Wait for operator to press function key [F-1Q) call
Wait_Response sub Calculate let x*0 let y-3 let k=Q let xk=0
let r=0 do while r M and k Crunch) let xk “ x’x - y*y +i let y
- 2*x*y * j let x = xk let k b k+1 let r a x*x + y*y loop end
sub sub Select Color select case k case 300 set color 15 case
201 to 759 set color 14 case 131 to 2C0 set color 13 case 74 to
130 set color 14 case 51 to 73 set color 12 case 45 to 50 set
color 11 case 40 to 44 set color 10 case 31 to 39 set color 9
case 30 set color B case 29, 27 set color 7 case 26 set color 6
case 25, 23, 21 set color 5 case 26, 24, 22 set color 4 case
19, 17 set color 3 case 20 Sixteen Color Fractal written for
AMAZING COMPUTING by Paul Castonguay December 2, 1988 sub
Wait_Response do if key input then get key k if k-324 then exit
do end if loop clear set cursor 10,17 print "... Press left
mouse button to clear er.d sub let Reg_G_Red * let Reg_0 Green
1 let Rec_0_Blue 1 let Reg_i_Red s let Reg_l_Green = let
Rea_l_BIue let Reg_2_Red let Reg_2_Green * let Reg_2_Blue 1 let
Reg_3_Red let Reg_3_Green « let Reg_3_Blue let Reg_4_Red let
Reg_4_Green let Reg_4_Blue let Reg_5_Red let Reg_5_Green ¦ let
Reg_5_BIue let Reg_6_Red let Reg_6_Greer, let Reg_6_Blue let
Reg_7_Red let Reg_7_Green let Reg 7_Blue let Reg_9_Red let
Reg_8_Green let Reg_&_Blue let Reg_9_Red let Reg_3_Green let
Reg_9_Blue let Reg_lG_Red let Reg_10_Green let Reg_lO_Blue let
Reg~il~Red let Reg_il_Green let Reg_ll_Blue let Reg_12_Red let
Let Reg_12_Blue let Reg_l3_Red let Reg_L3_Green let Reg_13_Blue let Reg_14_Red let Reg_14_Green let Reg_I4_Blue let Reg_15_Red let Reg_I5_Green let Reg_15_Blue i sub sub Use.
_Jle w_Colcrs set color mix set color mix set color mix set color nix set color mix set color mix set color mix set color mix set color mix set color mix set color mix set color mix set color mix set color mix set color mix set color mix end sub sub Choose Color_Numbers Amazing Programming Multi-Forth A Designer Language Explored by Lonnie Watson Before I delve too deeply into this article, perhaps I should state that the code sampies included with this article are written in Creative Solutions Multi-Forth programming environment. I selected Multi-Forth because, at the time, it was the only
Forth development package available for die Amiga. There were a few shareware releases of Forth compilers around, but nothing compared with Multi-Forth’s abilities and features.
I have since tried every Forth compiler on die market, but I have always returned to Multi-Forth as my main compiler.
However, because most Forths adhere to some standards, it is not all that difficult to convert these code samples to work with the other Forth compilers available.
Forth is considered a designer language it is amazingly flexible, allowing all manner of approaches to a problem. With this flexibility comes a certain lack of standardization that makes the language a bit difficult for a novice. Part of that difficulty stems from the fact diat, by and large, the programming community has skipped over Forth in favor of die other more widely accepted languages, such as C and Modula-2.
However, anyone who has effectively programmed in Fortii will attest to the insiders' view: it is perhaps the most natural of all programming languages. Combining die best of all programming worlds, Forth allows the programmer to concentrate on the real problem at hand radter dian struggling with the operating system they may be surrounded by.
In the Amiga environment, Forth is especially powerful. In my case, Fortii has allowed me to perform programming feats with my Amiga that I never found possible in other languages.
One problem I have encountered while dealing with Forth is the lack of code samples diat perform mundane functions that are perhaps STANDARD macros on other languages, such as already-defined structures that implement such system-dependent data types as Windows and Screens. Even die interfaces with Amiga-specific functions in ROM or on disk are left to the programmer to implement. This type of side-tracking often stalls a programmer, resulting in a graveyard of unfinished business.
In this series of articles, I will attempt to show ways of dealing with some of these problems. First, we will take a look at how to implement an interface to the much-talked-about ARP library.
Library actively replaces most, if not all, of the functions that the DOS library has built in, while supplying some nice extras. Two of my favorites are the ARP FileRequest routine and the ARP StringCompare routine (with full pattern matching). These functions go a long way in preventing that damaging sidetracking that often kills program development.
In order for these sections of code to work, you will need die ARP library in your LIBS: directory, if you don’t have ARP, you can get it from most local BBS's or on Fred Fish disk 123- As with most tasks on die Amiga, interfacing with a library from Forth requires a certain number of predefiniuons and other housekeeping. Forth allows easy manipulation of libraries, and even automatically closes all libraries that are left open at die exit of your program. We will define a word that will open the ARP library and place it as library 16 in the Multi-Forth system.
First, we wifi define some constants that will clarify the library- opening process.
0 CONSTANT ARPLIBREVNUMBSR rev r.eeessery 16 CONSTANT ARP-F0R7HLIE actual lib k in forth 256 CONSTANT ARPBUFMAX MAX length of names The following word will open the ARP library provided it is in the LIBS: directory and place it as lib 16 in the Multi- Forth system: : OPEN_ARP ( - ) ARP opened as lib 16 or abort if ur.able 0" arp.library" arplibrevnumber arp-forthlib open,lib not if abort then ; note the case of the 2ero delimited string. This must match cr the open.lib word will be unable to find the library. This is in stark contrast with the rest of the system where
generally case is of little consequence.
Being a library of routines. ARP has certain requirements diat differ depending on what routines you want to use. The first library call we will examine will be the FileRequest routine built into the Library, As with most Amiga Library functions, the ARP FileRequest function requires a structure definition from which it obtains die necessary1 data to function. The ARP FileRequest structure, as It is implemented in Forth, looks like this: What? No ARP?
What’s that you say you don’t have die ARP library?
Where have you been for the past year or two? ARP is a library of routines designed to replace the DOS library built into Kickstart, This DOS library, on disk for A1000 owners and in ROM for A500 and A2000 2500 owners, has several quirks that make it difficult to work with on a very low Level. The ARP LONG: +ARPGREETMSG ( ptr to titletext ) LONG: +ARPFILEBUF ( ptr to filename buffer ) LONG: tARPDIRECTGRY ( ptr to DIRname buffer ) LONG: +ARFWINDOW ( ptr to screen for ) ( arp window, NULL = NB BYTE: +ARPFUNCFLAGS ( see below tor meanings ) BYTE: +ARPRESERVED!
( paddind for aligrment ) ( set to NULL ) LONG: +ARPFUNCTION ( ptr to call for wildcards ) LONG: +ARPRESERVED ( rsvd for future upgrades ) STRUCTURE.END Bit meanings for the +ARFFUNCFLAGS function BIT MEANING 0 List function. Not implemented prior to ver 34 of the library.
1 user gadgets enable bit 2 added gadgets enable bit 3 allows modification of new window structure 4 new IDCMP only if +ARPWINDOW is NULL 5 Set this bit for different color scheme 6 Pass IDCMP messages not intended for file request 7 Do wildfunction flag ???
Now that the structure is defined, we need to create an actual instance of that structure in memory. All we have done so far is create the template from which we will obtain the various fields in the structure once we have the structure created. In Multi-Forth, creating an actual instance of a structure such as this one is very easy: STRUCT ARPFILEREQUEST ARPFILEREQUESTI STRUCTEND Here we have created an actual instance of an ARPFILERE- QUEST structure and named it ARPFILEREQUEST1. When tire word ARPFILEREQUESTI is encountered either in the input stream or in a definition, the address of the
structure's first byte will be left on the Forth parameter stack. Notice that the structure contains a number of pointers to buffers where data will be placed. These buffers must be allocated and can be preset with default parameters that will show up in the actual file request window. Parameters like the default Path name and the default filename can be selected this way. The buffers can be defined as such; VARIABLE ARPFILEBUF1 ARPBUFMAX ALLOT VARIABLE AAPDIRBUF1 ARPBUFMAX ALLOT Now, a word that will initialize the FileRequest structure and place pointers to tire buffers in the structure: :
INIT_ARPFILEREQUEST ( - ) ARPFILEREQUESTi ARPFILEREQUEST 0 FILL ARPFILEBUF1 ARPBUFMAX 0 FILL ARFDIRBUF1 ARPBUFMAX 0 FILL use this code line if you have a custom screen open and want the file request to show up on your screen. Otherwise it will appear on the Workbench screen: CURRENTSCEESN 0 ARPFILEREQUESTI +ARPWINDOW !
0" SAMPLE TITLE TEXT " ARPFILEREQUESTI +.ARPGRSETMSG ! T Now that this is defined, all we need to do is create a word that will actually call the ARP library FileRequest function with the initialize structure as a parameter. This word will also have to handle tire return value that the FileRequest function passes back to the program, and take action. For the time being, our definition will only respond to the return of a NULL. If you receive a NULL from tire FileRequest function, you have selected the cancel gadget. The definition of the calling word looks like this: : DO_AR?_FILEREQUEST ( -
flags ) ARPFILEREQUESTI !a0 call.lib IS 49 8d0 255 and ; By using the 255 and phrase at the end of the definition, we have masked off the upper 24 bits of the long word that is placed on the stack from the CPU register DO after the library call. Since Multi-Forth only allows pulling long words from registers, we need to mask off the unwanted bits to make sure we have the right number as a return value.
Now we are ready to use these words to actually get a FileRequest on the screen. A sample invocation might look like this: : DOIT open_arp init_arpfilerequest do_arp_filerequest The previous example demonstrated tire use of the ARP FileRequest function. By using this function, users can quickly implement a fast and efficient FileRequest routine into their own programs. Program development can then proceed in a timely fashion, since the programmer can concentrate on what is important in the code, not on such a trivial section of code as a File Requester.
The next ARP function that we will look at is actually a small set of functions designed to perform one task to perform string compares with full pattern matching. Pattern matching allows for the use of wildcards in string compares. Often in a program, a need arises to compare two zero-delimited strings of characters. In database programs, for example, string comparisons occur all the time, especially when the user is searching through a database for a particular set of data.
Pattern matching allows even greater power and flexibility when die user performs searches. For example, say the user wants to find someone on their mailing list, but does not know the complete first or last name. All die user knows is that the person's last name begins with die letters ABER. Using pattern matching, the user would key in ABER* and the string search routines in the program would find all the people who had ABER as die first four letters of dieir name. Such a search would bring up names such as ABERCROMBIE, ABERLONIAN, and ABERNONE. This sort of searching is often difficult and
time- consuming to program, so why bodier? The ARP library has these functions built right in.
The implementation of the string compare with pattern matching is actually distributed among several routines. The first routine compares two strings and returns values based on that comparison; diere is no pattern matching going on here. The string compare word is Implemented as follows: : DO_ARP_STRCMP ( 0$ a 0$ b - acb -l,a=b 0,a b 1 I addr of two zero delimited strings left on the stack returns 0 if strings are equal. Case ignored returns -1 if string 1 is less than string 2. Case ignored returns 1 if string 1 is greater than string 2. Case ignored !al iaO call.lib 16 43 8d0 ; Using
this word is fairly straightforward. All that is required is that the ARP Library must be open already as library 16 (the open_arp word from above is called first). Once the ARP Library is open, the string compare word can be invoked like so: ¦typed in directly at the Forth console Phone: (619) 670-3161 BBS: (619) 6700095 FAX: (619) 660-8097 Flail: P.O. Box 2104 La Mesa, CA 92044 M icroMiga Hardware: Software: A-Max Mac Emulator $ 128 Datastorm $ 26 Air Floppy Drive (Int Ext) $ 128 $ 149 Digi-Paint III $ 67 California Access Drive $ 149 Lords Rising Sun $ 33 Digi-View Gold $ 135 MusicX $ 175 Dual
Serial Port Board $ 234 Pagestream $ 129 Flash Card $ 187 Pen Pal $ 88 GVP '030 W 4MB & 68882 $ 2,500 RawCopy V1.3 $ 39 Hardframe DMA SCSI $ 250 Sculpt Anim. 4D $ 402 Phoenix Exp. Chassis W Pwr $ 21 I Vortex $ 26 Supra 2400 Modem $ 135 Populous $ 35 Genlocks Scall And a ton more!
At MicroMiga, our customer and their Amiga are Number One. We carry a full line of Amiga Products from Hard Drives to Genlocks and Games to Business Software all discounted well below retail! We also support our customers with a simple return policy and friendly sales people who know the Amiga.
Call Or Write For A Fi 'ee Catalog Of Over 1100 Amiga Products!
Visa 8c MasterCard At No Additional Charge!
Circle 182 on Reader Service card.
3" Hi" 0" 3y" DO_AR?_STRCK? . returr. will print a 1 on the screen.
The user can play with this word by supplying his own zero quote strings and calling the String Compare word directly from the keyboard. In doing so, it is easy to imagine various ways to use this little gem.
But, I can hear you out there yelling, "HEY! What about pattern matching?! Why would he make me read all that verbiage about pattern matching?!” Well, hang on one moment because here's the pattern-matching code.
As stated earlier, the pattern-matching code is separated into two different routines. The first routine takes a zero- delimited string containing the wildcard pattern to be searched for, and converts it to a tokenized partial ASCI! Zero-delimited string which the subsequent pattern match routine can use to search for a regular string (zero-delimited, of course ). Stated another way, the Preparse function is the food processor for the pattern, and the patternmatch is the consumer of the processed pattern.
first we will define a buffer that will get out pattern and chac our preparse routine will deposit the parsed pattern back into.
VARIABLE ARPPARSEDBUF1 ARPBUFMAX ALLOT next we will implement the actual preparse word.
: DO_ARP_PREPARSE ( 05ADDR to be parsed - true if wild found ) the routine will place its parsed result in the string arpparseabufl after it clears the buffer with zeros arpparsedbuf1 arpbufmax 0 fill arpparsedbuf1 la! LaO call.lib 16 93 3d0 ; Now we will define the actual pattern match word. This word will take a zero-delimited string whose address is on the stack, and use the assumed preparsed string in arpparsedbufl as a key of what to look for. The result will be true if there is a match and false otherwise: : DO_ARP_FATTERNMATCH ( Osaddr to look at - true or false ) arpparsedbufl !a0
lal call.lib 16 72 @d0 ; Using these functions is as easy as passing the wildcard that you want to look for to the DO_ARP_PREPAItSE function, then passing die string to be searched to the DO_ARP_PATTERNMATCH function. Note that the DO_ARP_PREPARSE function returns a true if there was actually a wildcard in the parsed string. If die function returns a false, then there was no wildcard in the parsed string, and the software can then use the false value to trigger the regular string compare function, which is faster.
That's ail there is to it. Imagine the effort saved by not having to create code to perform these functions. There is a whole host of other goodies in the ARP Library which can save you many hours of typing at the keyboard. We will look at diese functions at anodier time.
• AC* by John It. Wiederhirn A Requesters in AmigaBASIC Up to
now, die articles in this series have covered programming using
AutoRequesters and Alerts from within BASIC. While the
information they contain is applicable to certain situations,
there may be times when we’ll want to do something as simple as
putting up a message widi an “O.K.” button. To do diis with an
AutoRequester, you would have to give the message, give bodi
buttons the same text, wait for a response, and ignore which
button the user actually clicked on.
While it could be done with an Alert, such an approach would be highly impractical.
If you wanted to offer the user more dian two choices, neither of die previous methods would do. Ordinarily, diat would have meant having to go back to doing your own requesters from BASIC. Not anymore. The routines in this article will allow you to set up a requester with as many or as few selections as you need, as well as give you much greater flexibility' in the appearance of die Requester and its buttons.
The general dieme of the previous articles has been how to use system functions to allow BASIC programs to do things which would normally fall exclusively within the realm of C and other developer-oriented languages. This article continues that dieme.
To generate and get the response to the requesters, a small assembly language subroutine is read in and called by BASIC. This routine provides a “courier” service between Intuition and BASIC, You will not need an assembler or any other special tools to enter the routine, but you will need to type in a couple of lines of BASIC data statements which contain the assembled code that BASIC reads in and calls.
BASIC has tremendous flexibility in controlling the system, but it does lack a facility to easily receive the messages from Intuition. Those messages are used to indicate when Gadgets buttons, In your case have been pressed, and when other system events above and beyond mouse movements and menu selections have occurred.
Like those in the previous articles, the routines used in tlais program are designed to be “snipped out" and used in your own programs, just enter the listing, save it, and then run it once or twice. The routines are fully explained below, as are methods on how to use them in your own programs. Before I can explain exactly what's going on in the program, however, we’ll need to understand a number of new system structures that are necessary to make working requesters. If you are already comfortable working widi Gadget, Border, NewWindow and Requester structures, feel free to skip ahead. For the
rest of you, let’s get to it.
The Supporting Characters I’m going to assume that you have some familiarity with the topics covered in the previous articles, so I will not repeat explanations of the IntuiText structure or the memory management system routines (AlIocMem, FreeMem, and CopyMem).
There is a whole new set of system structures that are used along with IntuiTexts to create requesters, and some rules that go with setting up each one.
First, let’s start with the most basic structure after the IntuiText: the Border structure. The system uses Borders to create borders around gadgets, requesters, and other Intuition objects. Each Border structure describes a continuous set of line segments in a single color. To generate a blue and orange outline around a space, you would need two linked Border structures. This article is only going to deal with single-color borders, so the linking will be left for some other time. The C language definition of a border is as follows: strue- Border ( short LeftEdge, TopEdge,- BYTEFrontPen,
BackPen; BYTE DrawMode; BYTE Count ; short 'XY; struct Border ‘NextBorder; J; Since the Amiga was designed for C programs to use die Intuition routines easily, die system uses structures quite a bit.
For BASIC programmers, however, there is no real equivalent.
As before, the easiest way to work around this problem is to allocate the proper amount of memory using AlIocMem, and dien poke die data for each field into memory, creating a “virtual1' structure which the system can use. To do so, you need the offsets and type of each field in the structure. In the future, these will follow each structure’s C definition. Here are die offsets and types for the border’s fields (more on what they mean coming up): Field Offset Type LeftEdge +0 short integer TopEdge +2 short integer FrontPen + 4 byte (0-255 int} BackPen + 5 byte DrawMode + 6 byte Count +7 byte XY
+ 8 pointer (long int) NextBorder + 12 painter LeftEdge and TopEdge will be set to -1 for your purposes, telling Intuition to use die default setdngs (usually 0). However, diey still refer to the X and Y coordinates for the origin of die XY pairs, relative to the Intuition object of which the border is a part. More on that in a second.
The FrontPen and BackPen fields select which of the color registers (0-3) will be used to draw the border and its background. The color set in BackPen shows only for dotted lines, and since solid lines have no background, you will set die color to 0 for your uses. DrawMode serves the same purpose here as it does in an IntuiText. You will use JAM1 mode for all borders and IntuiTexts, but that doesn’t mean you couldn’t use others.
Count and XY serve special purposes. Count is the number of XY pairs that form the border. For a rectangular border, count is set to 5. XY is a pointer (long integer address) to a series of pairs of short integers (first X, then Y) which are the comers of the border lines. The line you are describing will be continuous, so the last pair is the same as the first. For example, a border box at (0,0) that was 100 pixels wide and 30 pixels high would have a Count of 5, and *XY would point at 10 short integers (each two bytes long) with the following values: 0, 0, 100, 0, 100, 30, 0, 30, 0, 0 These
values describe the four comers of the box, and ensure that it’s a closed rectangle. Incidentally, the values for each X and Y coordinate are relative to the LeftEdge and TopEdge values of the Border structure, which are in turn relative to die LeftEdge and TopEdge of the Gadget or Requester structure of which the Border structure is a part. To clear it up a little, suppose a Requester was set with a LeftEdge and TopEdge of (0,0). The Border structure for the requester would have a LeftEdge and TopEdge of 5 (5,5), and die first XY pair would be 3,3. The actual location on the screen would be
(0+5+3), (0+5+3), or (8,8).
Last, and for you, least important of the Border fields, the NextBorder field is a pointer to the address of the next Border structure in a list, and is used to create the “linked” multi-color borders discussed above. Just set it to NULL (0& in BASIC).
The next structure used to create requesters is the Gadget structure. It contains the definition of a “button” in the requester, including links to IntuiTexts (which hold die text of die button) and borders (for die oudine of die button). The C definition and offset table for a Gadget structure are as follows: struct Gadget ( struct Gadget 'NextGadget; short LeftEdge, TopEdge; short Width, Height; short Flags; short Activation; short GadgetType; APTR GadgetRender; APTR SelectRender; struct IntuiText *Gadget?ext long MutualExclude; APTR Speciallnfo; short Gadget ID; APTR UserData; ); Offset
Type Field NextC-adget +0 LeftEdge +4 TopEdge +6 Width +8 Height +10 Flags +12 Activation +14 GadgetType +16 GadgstKende r SelectRender GadgetText MutualExclude+30 Speciallnfo +34 GadgetID +38 UserData +40 pointer (long int address) short ir.t short int short int short int short int int short short int 18 pointer 22 pointer pointer long int pointer short int pointer +26 The fields of die Gadget structure afford tremendous flexibility in die design of the “buttons” for a requester. Much of that flexibility, however, is beyond the scope of this article. You need to concern yourself only widi the
values and settings which are used to construct a simple button consisting of text within a border. If you’re inquisitive, you can consult eidier die Amiga Intuition Manual or one of the many other books and articles which cover the possibilities available using gadget construction.
The first field is NextGadget, which is a pointer to another Gadget structure and is used to link lists of gadgets witiiin windows, requesters, etc. When you create each gadget you set that field to 0&. Another section of die program will “link” die various gadgets to form the list. All that will be covered under die description of die program, Next, you have the usual LeftEdge and TopEdge fields.
These locate the upper-left corner of the gadget relative to the window or requester in which it is located, as discussed above in the border explanation. Remember, the Border structure’s LeftEdge and TopEdge are relative to these figures, which in turn are relative to the LeftEdge and TopEdge of the requester.
Width and Height describe die “hot" region of the gadget, where clicking the mouse will select diat gadget and, for you, return a selection message.
Flags contains the Intuition code diat selects how the gadget is highlighted when selected. You will set diis to the value for GADGHCOMP (0), which tells Intuition to highlight the gadget by "complementing” the hot region. In other words, since your gadgets use black lines and text on a white background (under standard Workbench colors), highlighting is achieved by showing white lines and text on a black background.
The Activation value controls which message is sent by Intuition when the gadget is selected. You set this so that the assembly language subroutine receives a message as soon as die Gadget is “clicked”; this is the GADGIMMEDLATE setting (2). As soon as die Gadget is selected, Intuition sends a GADGET- DOWN message to die window in which the gadget is located, telling it diat a gadget was selected, and which one it was (via GadgetID).
GadgetType tells Intuition exactly what kind of gadget this stmcture is information which affects Intuition's handling it.
Your gadgets are all simple push-buttons and are located within requesters. Thus, you will use the value found by boolean OR'ing die settings for REQGADGET (which tells Intuition that the gadget is in a requester) and BOOLGADGET (which tells Intuition diat the gadget is a push-button): 409” (&hl000 OR &li0001).
GadgetRender and SelectRender control what Intuition displays for the gadget in its non-selected and selected states. If you were using a bitmapped gadget, they would point to structures for the appropriate bitmaps. Since you are not, and have set a “preset” way of showing selection (GADGHCOMP), set SelectRender to 0&. The GadgetRender field serves another purpose besides pointing to a bitmap image; it can point to a Border structure when a non-image gadget is being used as it is in this case. By setting GadgetRender to point at a Border structure for each button, a much more attractive button
is drawn (rather tiian text floating in space).
Speaking of text, the GadgetText field points to die IntuiText structure that defines die text for each button. This is die same IntuiText structure you may have come to know in die previous articles. Within die scope of this article, you will set die MutualExclude, Speciallnfo, and UserData fields to 0& in your gadget definitions, as your buttons do not need them.
Again, for more information on the different setdngs of gadget fields, consult an article or book which covers Intuition programming.
The only field left to cover is the GadgetID field, and it is an important one. This short integer is the code Intuition sends (indirecdy) to the Window containing the gadget, in order to indicate which gadget was responsible for the GADGETDOWN message. It doesn’t directly send die GadgetID as part of the message (called an IntuiMessage), but instead sends a pointer to the Gadget structure of die button selected. The assembly language routine then grabs the GadgedD of that structure and returns that value to die BASIC program. GadgetlDs must be unique to each Gadget structure, unless you don’t
really want to know which one was selected. 1 have run across a case or two where you wouldn’t, but “nice" gadgets should have unique GadgedD numbers.
The next system structure of concern is the Requester structure. This structure contains die definition of die area in which all die buttons appear and connects to the linked list of gadgets to appear inside the requester. Here are its C definition and offset values: struct Requester struct Requester
* OlderRequest; short LeftEdge, TopEdge; short Width, Height;
short RelLeft, RelTop; struct Gadget
* ReqGadget; struct Border
* Req3order; struct IntuiText
* ReqText; short Flags; BYTE BackFill; struct Layer
* ReqLayer; BYTE ReqPadl[32]; struct BitMap
* ImageBMap; struct Window
* RWindow; BYTE ReqPad2[36]; Field Offset Type OlderRequest +0
pointer LeftEdge + 4 short int TopEdge +6 short int width + 8
short int Height +10 short int RelLeft +12 short int RelTop +14
short int ReqGadget + 16 pointer ReqBorder +20 pointer ReqText
+24 pointer Flags +28 short int BackFill +30 byte ReqLayer +32
pointer ReqPadl[32] +36 byte array ImageBMap + 68 pointer
Rwindow +72 pointer ReqPad2[36] +76 byte array Okay, I admit
that it is definitely not one of the smaller structures on the
Amiga. There is an up side, however. You see, to create a
Requester structure in C, you declare the structure.
But before you set any of die values, you call a system roudne called InitRequester. Its sole purpose is to clear all the bytes in a Requester structure. You can use this routine from BASIC to do the same thing. After doing this, you need to set only the fields which relate to your needs. For you, drat means setting LeftEdge and TopEdge, Width, Height, ReqGadget, ReqBorder, ReqText, and BackFill. While the other fields allow some wonderful TaleSpin .. 35.00 turbo Silver ... 120.00 Turbo Silver Terrain .. 33.00 TxEd
Plus .. 55.00 Spotlight on Sottwore 3-D Options ... 34.00 AMAX 135.00 ANIMagic 59.99 Baud Bandit . 33.99 Blood Money . 27.99 CygnusEd Professional 64.69 Deluxe Paint III .. 105.00 Design 3D ..... 60,00 DigiPaint3 ..... 61.99 Digi-View Gold .. 140.00 Dunlap Utilities ...... 51.99
Elite 31.00 Falcon Mission Disk .. 18.50 GFA BASIC ..... 86.20 HISoft BASIC Professional .... 110.00 Indiana Jones Last Crusade 27.99 MAC 2 DOS ... 75.99 Page Ripper + EX 93.00 Page Render 3D .. 93.00 PageStream ...... 130.00 Pen Pal 89.99 Performer (Elan) .. 41,00 Photon Paint I! ...... 99.00 PixelScript 95.99 Spotlight on Hardware 501
Memory Clone. Supra .. 125.00 68030 Accelerator Bundle Call &-Up! Board OK DIP or SIMM 175.00 Auto Droid ..... 50.00 flickerfixer ... 475.00 Poppy Drive, Internal 2000 90.00 Roppy Drive, Unidrive 140.00 Future Sound 500 . 93.95 Han-D-Scan, C Ltd . 299.00 HardFrame 2000 250.00 IMG Scan, SunRize 120,00 Joystick, Advanced Gravis .. 39.99 MIDI, ECE 52.00 Panasonic 1410 Camera .... 220.00 Perfect Sound 500 2000 . 66.93 SCSI, Supra 500 2000
... 170.00 SCSI RAM impact A20QO OK 293.20 Spirit Boards OK .. 215.00 SupraRAM 2000 2 Megs 415.00 Orders Only Ptease.
800-544-6599 Visa MC CODs 2414 Pendleton Place ¦ Waukesha. Wl 53188 ¦ 9 AM to 5 PM M-F Circle 134 on Reader Service card.
Flexibility, you just don't need them for what you will be doing.
For diis reason, I will explain the functions only of those fields you are going to use.
The InitRequester routine takes a pointer to (the address of) a Requester structure, and returns no values to BASIC. The calling syntax looks like this: CALL InitRequester ( reqAddress& ) The reqAddress& variable would be die address of the block of memory you are calling a Requester structure.
LeftEdge and TopEdge function the same here as in die other structures in this case, as X- and Y-Offsets from the upper-left comer of die window' containing the requester. For technical reasons explained below under die NewWindow structiire, these will be set to 0 for the requester, but operate die same here as diey do for borders and gadgets.
Width and Height are essentially die same fields you are used to, with minor differences. Instead of pointing to a hot region, they define the outer boundaries of die requester box, and also set die size of die area covered by the requester’s BackFill.
ReqGadget is a pointer to the first in a list of Gadget structures. This means that after you define all the gadgets, you link them together and put the address of the first one here. The last gadget in the list has a 0& in its NextGadget field, which tells Intuition there are no more gadgets in die list.
ReqBorder is a pointer to the Border structure you use to oudine die requester's box. There is one major difference between this border and die gadget borders discussed earlier: While the gadget border XY pairs are tine outlines in that they start with an upper-left corner of (0,0) the requester border must be inside the outer edge of the requester. Accordingly, you set it with an upper-left corner of (5,3) and keep an X-Offset of 5 and a Y-Offset of 3 from the outer edge of the entire border.
ReqText, as you probably guessed, is a pointer to die IntuiText that contains the message for die requester itself.
Although you won’t do so in this program, you can generate multi-line text messages by linking IntuiTexts in the requester and gadget structures in the same manner you did in AutoRe- questers. (Here you just use a simple one-line message to tell die user what to do.)
Finally, BackFill is the register number (0-3) of the color you want to be the background for the requester. I set that to white (1), but diis could easily be changed. One interesting note: By setting the BackFill to 0, Intuition can generate a "transparent” requester, where the background is the "surface" of die window behind the requester. Here, however, you use a special window, so there is nothing to see. Since die assembly language routine creates and deletes die window, you have no way to give it a background worth looking at, anyway.
That brings me to a rather important point. The final structure you use is the NewWindow structure, which Intuition uses to define a window before opening with GpenWindow.
Normally, this would not be a required part of a requester, which could float on the current window in use. Unfortunately, AmigaBASIC does some naughty things with the windows that it opens; as a result, even an assembly language program would have to do some serious gymnastics to receive IntuiMessages from a window opened by BASIC.
There is a much simpler solution: If window's opened by BASIC aren't usable, open one for yourself. The result is diat the assembly routine needs to be passed a NewWindow structure, which it uses to open a window in which the requester is placed. The definition of die window to be created is set by the program based on the size of the requester, since the window' exists solely to contain the requester, and ceases to exist once the requester is finished.
A nice advantage to using a separate window is that it can be dragged around and moved to a more convenient location if it happens to cover important data There is, however, a catch.
Because of the peculiar way in which BASIC calls assembly and system routines, it is conceivable that wrhile a requester is being displayed in its window, BASIC could be terminated. It is also possible that responding to the requester in such a situation could crash the system or, at the very’ least, maim it.
The assembly routine is not bulletproof, and can probably be tricked into doing dangerous things. The best solution w'ould be somehow to prevent BASIC from being terminated during program execution; unfortunately, there is no readily available way to do this. The next best thing is to foolproof your program as much as possible. After all, terminating BASIC while running a program can cause unpredictable results, even writhout system routines being used. Save once, save twice, and if you still aren t sure, save it again!
On with tire discussion of system structures... The last structure you need specs for is the New'Window structure mentioned earlier. The definition and offsets of the NewWindow structure are as follows: struct NewWindow short LeftEdge, TopEdge; short Width, Height; BYTE DetailPen, BlockPen; long IDCMPFlags; long Flags; struct Gadget
• FirstGaage1 struct Image
• CbeckMark; BYTE
* Title; struct Screen
• Screen; struct BitMap
• BitMap; short MinWidth , MinHeight; short MaxWidth , MaxHeight;
short Type; ); Field Offset Type LeftEdge +0 short int TopEdge
+2 short int Width + 4 short int Height -6 short int DetailPen
+8 byte 3lockPer.
+ 5 byte IDCMPFlags +10 long int Flags +14 long int FirstGadget ¦’-18 pointer ChecfcMar k +22 pointer Title +26 pointer Screen + 30 pointer BitMap t34 pointer MinWidth + 33 short int MinHeight +40 short int MaxWidth + 42 short int MaxHeight +44 short int Type + 46 short int Even though you don’t have a nice system routine like InitRequester to clear out a NewWindow structure, set to 0 all the bytes in tire memory you allocate for it. That wray, all you'll need to do is set tire fields that are necessary for your use. For tire wrindow to work with the assembly routine, you need to set LeftEdge
andTopEdge, Width, Height, DetailPen, BlockPen, IDCMPFlags, Flags, Title, Min- and Max- Width and Height, and Type. The rest you can just ignore. Again, I will explain only the fields that you ¦will actually use.
The LeftEdge and TopEdge values given here are actual, honest-to-goodness screen coordinates. These are the master values to which the requester and, indirectly, gadget and border fields of tire same name are relative. You will set diese as the upper-left corner of die window in which you want the requester to appear on the screen.
Width and Height mean pretty much the same thing as they do in the Requester structure, referring to the size in pixels of the actual graphic image produced by Intuition. As you shall see later in the program, you set these values based on die size of the requester to be put in the relevant window.
You will set DetailFen and BlockPen to generate a window image diat conforms to die standard Intuition window white graphics with blue oudines and details. DetailPen gets set to 0 (blue) and BlockPen gets set to 1 (white), to create properly colored graphics.
The IDCMPFlag’s field tells Intuition what kinds of IntuiMessages you want this window to receive. Since all you need to receive is GADGETDOWN messages, set IDCMPFlags accordingly (32&). By setting odrer bits, you can get different kinds of messages, but GADGETDOWN is the only kind that die assembly routine understands; it ignores everything else.
Flags not to be confused with the previous field define window generadon for Intuition. Set it as ACTIVATE, SIMPLE_REFRESH, WINDOWDRAG, and GIMMEZEROZERO. In English, this means that you want the window to activate when it first appears; you don’t have a background to save, so there’s no need to bother. You’li want to be able to drag the window (and the Requester, as well) around tire screen. Also, you’ll want tire upper-left comer of tire “usable" (non-gadget) part of the window to have the coordinates (0,0), You ensure that they do by setting the appropriate bits in die Flags field, using a
value discussed later in the program section.
Note: According to the ROM Kernel Manuals, there are still ways for the user to prevent the window from becoming tire active window when opened, even if ACTIVATE is used. As usual, if the user really wants to mess things up, he she probably can. I feel obligated to try to follow Commodore doctrine, if only to prevent yet another source for program errors.
* m (Orders shipped Via UPS) PIC-MAGIC Clip Art Package If you
want the window holding the requester to have a title, you just
set the Tide pointer to the address of a string of characters
holding the dtle and ending widi a CHRS(0). 1 drink it makes
die requester appear too '“busy,” but set it to 0& (meaning
no tide). This setting makes the drag bar expand to fill the
space where the dde would have been.
All the Min's and Max’s are for resizable windows. Since you don’t have to use such a window, you can set diem to die same values you assigned Width and Height.
The last field of importance in the NewWindow structure is the Type field. This tells Intuition whether the window is for a Workbench screen or a custom screen. We're calling diis from BASIC, which normally has a Workbench screen, so this field gets set to 1 (Workbench screen). The requesters generated and used by these routines must be on a Workbench screen to function correcdy. Normally, the assembly routine opens die window, using the OpenWindow system routine, and does not expect to have to link die routine to a custom screen. Trying to put a requester on a custom screen will result either
in die requester and window being put on the Workbench screen, or in a visit from you-know-who.
That, in a nutshell, is what you need to know about Intuition Requesters. Once you understand how die program works, feel free to use your new knowledge to tinker around widi the setting of these structures. Remember die various warnings discussed above, however; nobody likes programs that crash frequently. Now let’s get to die explanation of how the demonstration program works.
Tfje Lead Roles (or How It Works...) As you go dirough each of the routines, learning how diey work and relate to each other, you may want to flip back to the structure offset tables to see exactly what each POKE does. (The long blocks of POKE statements will not be shown in their entirety. Consult die program listing for die exact POKEs and values.) Since most of the stuff has already been covered in die odier articles, I will spend little time explaining old material.
CLS DECLARE FUNCTION’ AllocMem5() LIBRARY LIBRARY "exec.library" LIBRARY "intuition.library" As usual, you have here die standard starting code, which clears die screen and opens the necessary libraries. Don’t forget, 250 High Quality Images Very Large IFF Bitmaps 10 Full Floppy Disks.
Images in the pak include: Christmas Graphics ¦ Sports Car Graphics- Sports Scenes' Universal Advertising Graphics Eye Grabbers and much more (CALL).
Credit Card Orders Call: 1-800-387-8967 Outside USA call: Tel: (416) 322-6119 Fax: (416) 489-1620 TV?-.
CANADA M5P 3C3 Circle 180 on Reader Service card.
Die exec.bmap and intuition.bmap files must be in either die current directoiy or the libs: directory of die system disk.
DIM npS(4|, msizl(4) DoReqstS = 05 nasiS = "intuition.library"+CKRS(0) dloc6 = OS Moving on through the code of the main program, you initialize some of the variables that will be used later, and make namS a string ending in CHRS(0) and holding the name of die Intuition system library. This is very important, because the assembly routine needs that string to properly open Intuition for its uses. By die way, if everything else seems to work fine, but the assembly routine just returns without doing anything, make sure the CHR$ (0) is added to the end of namS.
LOADSBR DoReqstS, dlocfi SUB LOADSBR ( sptri, dptrS ) STATIC Here you start to get into the important routines. The LOADSBR routine is what actually loads the assembly routine into memory' and returns two pointers. The spir& parameter (here going into DoReqst&) tells where the assembly routine starts. DoReqst& is later used in the calling of the assembly routine. The dptr& parameter (here going into dloc&) gives you the location of a spare piece of allocated memory which is used in the program as storage for die result returned by die assembly routine.
MEMALLOCATE sptrfi, 162s Inside die LOADSBR routine, you call the MEMALLOCATE routine in preparation for loading the assembly routine into memory, All the MEMALLOCATE routine does for you is take the number of bytes needed, call the system routine Al- locMem&, make sure everything went okay, and return a pointer to the allocated memory. I have made it a free-standing routine here because it is frequently used by the other routines.
The MEMFREE is a similar case, existing only to call die FreeMem& system routine. I needed a little more flexibility in using FreeMem&, however, so MEMFREE is slightly more flexible than previous incarnations, Bodi of these routines have been covered before, so check the previous articles for explanations of dieir funcdoning.
Dptrfi = sptrfi + 160 RESTORE MLData Having die memory location where die assembly code is going, and knowing die lengdi of that code, you can figure where your "spare” memory'- 'which holds the data starts. In diis case, the location is 160 bytes beyond die start of die assembly code. You next use RESTORE to set die start of the DATA statements to the beginning of your code data (in case your program needs to use RESTORE for data of your own).
FOR ii = sptrfi TO (sptrfi + 158) STEP 2 READ op% POKEW i&, op% NEXT ifi POKEW dptr&, 0 These lines read die assembly code from the data statements and then poke them into memory' a word at a time. After doing this, die spare memory' to which die data pointer points is cleared. That’s the end of die working part of LOADSBR.
MLData.: DATA fih48e7, fihfffe, 4h2c78, SM004, 4h701d ... END SuB The remainder of the subprogram holds the assembly language routine in the data statements a word at a time in hexadecimal format. You must make sure these lines are typed in correctly for the program to work. After the data statements, the END SUB returns execution to die main program.
FOR i% = 1 TO 3 b% = i% by% = 1 + ( i% * 15 ) bt? » "Choice" + STRS(i%) MKBTN 10, by%, 240, 12, 2, 5, 2, btS, b%, bps SUB MKBTN (x%,y»,w%,h%, c%, tx%,ty%,t$ , id%, bpfi ! STATIC The requester being made by the program will have three buttons, widi text in each reading “Choice 1,” “Choice 2,” and “Choice 3-’’ The FOR...NEXT loop sets up, creates, and links the diree buttons. Here the program initially sets up die parameters for the buttons, calling MKBTN for each. MKBTN takes die values needed for the Gadget, Border, and IntuiText structures (x% - id%), and returns a pointer (in bp&) to the
location of the Gadget structure it created in memory7. It also returns the length of the IntuiText structure (the structure itself, plus the text data) in id%, which you later use when freeing die allocated memory.
MEMALLOCATE bpfi, Bofi xyfi = bp& + 44 bdpfi = xyfi + 20 Inside MKBTN, the routine first allocates enough memory for the Gadget and Border structures, as well as for the XY data for die border. It then uses the pointer returned by MEMALLOCATE as the start of the Gadget structure and calculates pointers to the XY data and Border structure based on their lengths. The xy& pointer is the start of die XY data, while die bdp& pointer is the start of the Border structure.
MKITEXT tx%, ty%, 2, 0, 0, tS, ltpfi, less SUB MKITEXT ( y%, fc%, bc%, mi, tS, itpfi, itsfi ) static MKBTN dien passes on die appropriate data to the MKITEXT routine to create an IntuiText structure to hold die button's text. The MKITEXT routine is virtually die same as the CreatelText routines in the previous articles; it has simply been revised to use MEMALLOCATE and to place the text data immediately after die IntuiText structure, in the same block of allocated memory. I did this to help prevent memory segmenta- Uon, and to speed tilings up a little. The MKITEXT routine returns a pointer to
the IntuiText structure, as well as die size of the memory block diat was allocated. This makes freeing the memory later much easier. Check die other articles for more information on how to set up IntuiTexts from BASIC.
PCKSL bps, Ofi through POKEL bpfi + 40, Ofi This batch of POKEs actually puts the proper values into the Gadget structure you “faked” in memory. The locations are found by using the known offsets from die pointer you established as the start of the Gadget structure.
Xi% = o x2% w% yl% = 0 y2% ~ h% POKEW xyfi, xl% : POKEW xyfi + 2, yl% through POKEW xy& +16, xl% : POKEW xy& +18, yl% Here you create the XY data you need in memory to generate the proper border graphic. You calculate which two X and Y values to use, and then proceed to arrange them to create the box oudine you want.
POKEW bdpfi, -1 through POKEL bdpfi +12, Ofi Finally, MKBTN puts the needed information for the Border structure into memory, Again, you use your pointer and the known offsets to set the data into memory correctly.
Id% = itsfi END SUB Because you already have the bp& variable set to pass the pointer of the Gadget structure back to die main program, you just set id% to die length of die IntuiText structure and return to die main program.
Mp4 ( i% } =» bps msiz% i% ) = b% IF i% s 1 ) THEN bpli = mps( i%-l ) LINKBTN bpls, bps END IF NEXT i% Back in the main program, you put the pointer to the button’s memory- block and IntuiText size into arrays for later memory accounting. Then, for buttons two and three, you call LINKBTN to connect them so that button one is at the start of the linked list and button three at the end. All LINKBTN does is replace the NextGadget field of the button pointed to in its first parameter widi the pointer given as die second parameter. You don’t have to keep LINKBTN as a separate routine (it could
be replaced with a POKEL statement), but it keeps diings coherent in diis program. Feel free to replace it if you need extra speed or smaller code size in your own programs. All you have to do is use die following line (replacing bptrl& and bptr2& with the proper variables from your program): POKEL bptrlS, bptr2£ This line of code is all that LINKBTN consists of. However, separating it into a different routine does improve readability a little. The button creation loop finishes with a NEXT statement.
Rxl - 30 ry% = 30 bptrS = mps(l) rt$ = "Make I'our Selection:" KKXEQ rx%, ry%, 260, 64, bptrs, rtS, rpt, wps SUB MKREQ ( x%, y%, wl, h%, bpi, t$ , rpS, wpi ) STATIC The lines before the call to MKREQ simply set up die parameters for MKREQ to create the Requester structure, MKREQ also creates die NewWindow structure, wdiich has a couple of fields that are calculated based on the figures for die Requester structure. MKREQ returns three values in rp&, wp&, and x%. The rp& value is a pointer to the start of the Requester structure in memory. The wp& value is die same tiling, only for the NewWindow
structure. The routine returns die size of die IntuiText structure of the requester in x%, for memory accounting.
MEMA.LLOCATE rp£, 1964 CALL InitRequesterS( rp£ | rxys = rp£ + 112 rbpS = rxyK - 20 wpS = rpi + 148 First, MKREQ allocates memory for the requester, NewWindow, border, and XY data in memory, and sets pointers to the start of each area. It also calls the system routine InitRe- quester to clear out die area for the Requester structure. While this could just as easily be done using a FOR..NEXT loop as when clearing the NewWindow area there is a catch. I’m not going to promise diat diese routines will hold up after another revision of Intuition and Workbench, but hopefully they will need only to
have dieir offsets corrected. The ROM Kernel Manuals make a point of using InitRequester to clear Requester structures for use, perhaps on the chance that, in the future, the default values for some of the fields might be values odier than zero. By using InitRequester, you allow' the MKREQ routine a Lons Fonts Vol. 1 A collection of seven 3D font sets in the Interchange format. Each set has complete upper lower case letters, punctuation, and numbers! If you’re into video or do animation's, you need these fonts! $ 29.93...... Momentum Check A fill featured checkbook management package that makes
|i checkbook management easy. Class codes allow you to ; (track any expense yob wish. Use standard reports or create iyouf own custom reports. Reconciliation is so easy! S29.95: Momentum Mail | An easy-to-use mailing list managefiierit program. Why fiddle with 300-page manuals and;spend hundreds of dollars when it can be as easy and affordable as this! $ 29.95!
TeleTutor i| An-interactive-’telecommunications:tutorial. Everything « about telecommunications in one place! Has a simulated BBS to practice uploading and downloading. $ 29.95 (Izzi Interface A joystick mouse interface with an auto-fire rate of 30 rounds sec!! Switch between auto and transparent mode.
4 ft. Extension cable. Blow' your game scores away! $ 34.95 Available at fine dealers, or order dirccE. Make check or money order payable [o.
L I Micro Momentum, Inc. Dealer Inquiries') V Invited J 100 Brown Avenue jolinston, R1 02919 11 y (4oi 949 5310 I'lcsse add S1.50 for 5&H. CO.D.s add adrliEionai 52 50. All products 90 day ivarrancv.
R If ymtvi rot a product. M; re :r.u,rc-lt :!. Give ti.s a : nil. Amira i- a n I .: ¦¦¦¦: e.-.n: -i1.. »f CUM, Circle 125 on Reader Service card.
Slightly higher chance of not needing major revision after changes to Intuition. This makes it w-orth following the RKM, and is a heck of a lot faster than a FOR...NEXT loop, anyway.
Tx% = ( w% 2 ) - (( LENt ts ) * 8 ) 2 i MKITEXT txi, 6, 2, 0, 0, tS, itpS, ibsi These lines pass on the correct settings for the requester’s IntuiText structure. The tx% variable is calculated so that the message is centered at die top of the requester.
POKEW rpfi + 4, 0 through POKE rpS +30, 1 This bunch of POKEs sets up the Requester structure in memory. Note diat you set the values of die TopEdge and LeftEdge to zero. This is because you want to locate the requester based on die window location, not the requester itself.
Xl% = 5 x2% = w% - ; yl% = 3 y2% « hi - 3 POKEW rxyS, xl% : POKEW rxys + 2, yl% through POKEW rxys +16, xl% : POKEW rxyS +18, vl% As they do in the MKBTN routine, diese lines set up the XY' data for die Border stmcture only this time for die requester. The X and Y values are calculated so that the border graphic is inside die outer edge of the requester boundaries.
POKEW rbpfi, -1 through POKEL rbp& +12, 0& In case you couldn’t guess, here the routine sets up the Border structure linked to the Requester structure. For a slightly different appearance, try' changing tire POKE that sets the FrontPen to 3 instead of 2. This will create an orange border around the requester box, breaking up the monotony of all the black-on-white graphics.
FOR ii = wpS TO (WpS + 47) POKE is, 0 NEXT is w% = w% + 8 h% = h% + 12 The FOR...NEXT loop here clears out the NewWindow area of the allocated memory albeit slowly. Corrected Width and Height fields are then calculated, to adjust for the edge graphics of the window. Making w% and h% increase by more than 8 or 12 will result in a larger blue border around the requester graphic.
POKEW wpS, x% through POKEW wp& +46, 1 Surprise, surprise. Here you set the values for the fields you will use in the NewWindow structure. We don't set all the fields, and the ones that remain zero Intutuion knows how to deal with. Setting Flags to 516S& gives you die ACTIVATE I SIMPLE_REFRESH I W1NDOWDRAG I GIMMEZEROZERO setting you want. The value is found by OR’ing the values for all of the settings together.
X% = itss END SUB The MKREQ routine ends by setting x% to return the length of the IntuiText structure (all the other return variables are set) and handing the execution back to the main program, mpii 4) = rpi T,siz% 14) = rx% 'fhe main program then puts die pointer to the requester memory block and the size of its IntuiText into die arrays you are using for memory accounting. Now, everything in memory is set up to define a proper Requester unit.
CALL DoReqst&( wp&, rp&f dices, SADD(namS) ) resp% = PEEKW( dlocS ) PRINT PRINT "You selected choice number";resp%;"!i** You now call the assembly routine using the pointer you created to point at the block of memory where LOADSBR put the routine. You pass die routine a pointer to die NewWindow structure, a pointer to the Requester structure, the address of the memory where you want die result placed, and the address of the ”intuition.library”+CHRS(0) data. Because of BASIC's disconcerting habit of moiing string variables around in memory, you use SADD at the routine instead of setting a
variable. You want to make sure the routine gets where die data is now located, not where it was before BASIC moved it somewhere.
When the assembly routine returns, von pull the selected button's GadgetID value from the data memory where you told DoReqst to put the result. You can tell that DoReqst malfunctioned if the value returned is zero, and none of die GadgetlD’s were set to zero (generally a good practice). This means that the assembly routine had a problem with the data you handed it, and had to abort. More graphic examples of signs that you really messed up die data are system lock-ups and visits from Mr. Guru. .After pulling the result from memory, a quick message is printed out which indicates the selection
made from the Requester.
The following collection of lines in the FOR...NEXT loop take the address of each button’s memory block and extract the address of the related IntuiText structure. That data is used to call MEMFREE to de-allocate all die memory allocated for the button structures and data. The same is then done for the memory used by the requester, NewWindow, and their related structures. The last MEMFREE call de-allocates die memory used by the assembly routine itself, effectively erasing it from memory. Do not attempt to call DoReqst after die memory holding the routine has been freed, or the consequences
for your program could be disastrous!
LIBRARY CLOSE END At die end of the program, you close the libraries you opened and stop execution. In die words of Porky Pig, “Th-th- th-th-that’s all folks!” That's all there is to it. Once you become familiar with die routines, you will find diem easily transported to your own programs. Setting up the requester unit is a little complicated, but the end result is requesters diat work much more smoodily than ones written in BASIC.
As usual, feel free to hack and slash the routines as you see fit for use in your programs. Just remember the areas to be careful not to alter in the system structures (mentioned above).
Unless you have enough experience to understand what die assembly routine is doing, don't change it, either. Altering the data for the routine without knowing exactly what you’re changing is a quick and easy' way to crash the system when the program is executed.
There are many possible modifications which could make the routines more useful. Perhaps by generating the data separately, and tiien loading it in as a block, you could keep many requesters in memory at once, simply by' changing the pointers passed to DoReqst as needed. The routine will accept any valid LeftEdge unit, and can return die GadgetID of anything that makes a GADGETDOWN IntuiMessage.
Hopefully, these articles have made your BASIC programs better-looking and easier to use. Remember, with compilers giving die necessary' speed, BASIC is coming back as a serious language for many application developers. With judicious use of system routines along widi a little assembly boost here and diere you can really make BASIC programs as serious as the rest.
Listing One: rBas CLS DECLARE FUNCTION AuocMemSO LIBRARY LIBRARY "exec.library" LIBRARY "intuition.library" DIM mpfi(4), msiz%(4) DoReqstl = Oi nam$ = "intuition.library"+CHR$ (0) diocs = OS LOADSBR DoReqstl, aloes FOR it = 1 TO 3 b% =* i% by% = 1 + ( il * 15 ) btS “ "Choice" + STRSUI) MK3TN 10, by%, 240, 12, 2, 5, 2, bt$ , bl, bps reps( i% ) = bps msizl( il ) = bl IF ( i% 1 ) THEM bpls = mp&( il-1 ) LINKBTN bpls, bps END IF NEXT il rx% - 30 ry% - 30 bptrs = rapt(1) rt$ = "Make Your Selection:" MKREQ rxl, ryl, 260, 64, bptrs, rtS, rpS, wpS mpi(4) = rps msizl 14) ¦* rxl CALL DoReqstl( wps, rpS,
alocS, SADD(namS) ) respl = FEEKW dlocs ) PRINT PRINT "You selected choice number";respl;"!
FOR i% = 1 TO 3 bptrs = mp£( i% ) ts£ * msizl ( its ) CpS = PEEKL( bptrS + 26 ) MEMFREE bptrs, 80S MEMFREE tpS, USS NEXT il rps = mps(4| ts£ = msizl(4) tpS = PEEKL1 rps + 24 ) MEMFREE rps, 196s MEMFREE tpS, qsS MEMFREE DoReqstS, 162s LIBRARY CLOSE END SUB mkreq ( x%, yl, wl, h%, bps, t$ , rps, wps 1 static MEMALLOCATE rps, 196S CALL InitRequester!( rps ) rxys = rps + 112 rbps » rxys + 20 wpS = rpS + 148 tx% ( w% 2 ) - ( ( Lefi t$ ) * 8 ) 2 ) MKITEXT tx%, 6, 2, 0, 0, tS, itpfi, itsS POKEW rps + 4, 0 POKEW rps + 6, 0 POKEW rpS + 8, w% POKEW rps + 10, h% POKEL rps + 16, bps POKEL rps + 20,
rbps POKEL rps + 24, itps POKE rps + 30, 1 xl% = 5 x2% - wl - 5 yl% = 3 y2% = hi - 3 POKEW rxys, xll : POKEW rxyS + 2, yl% BRIDGEB0ARD USERS!
Don’t waste money, slots, or desk space buying extra IBM-compatible or Amiga floppy drives! The Bridge Drive Commander gives you direct access to your built-in and addon Amiga floppy drives from the Bridgeboard, and direct access to 360K and 720K IBM-compatible drives from AmigaDOS. Bridge Drive Commander makes access completely transparent and automatic. No software drivers to load, no precious memory or expansion slots used up. Installs on internal floppy drive connector. Floppies are completely useable by other Amiga and IBM-compatible computers.
Compatible with all software, hard disks, accelerator boards, etc. Two versions available: standard Amiga disk access, and multi-bus version, for maximum speed.
Bridge Drive Commander Standard access .....S 79.95 Multi-bus access ......$ 119.95 External drive adapter .$ 24.49 MJ SYSTEMS Dept 10B, 1222 Brookwood Road, Madison, Wl 53711 1-800-448-4564 Answered 24 hours MasterCard VISA (Info: 1-608-274-5563) Product names are trademarks of their respective companies.
Circle 169 on Reader Sorvlce card.
POKEW rxy& + 4, x2l : : POKEW rxys + 6, yll POKEW rxy& + 8 , x2% : : POKEW rxyl +10, y2% POKEW rxy4 + 12, xl» : : POKEW rxyl +14, y2l POKEW rxy& +.
16, xl % : : POKEW rxyl +18, yl% POKEW rbp&, -1 POKEW rbp& + 2, -1 POKE rbp& + 4, 2 POKE rbp& + 5, 0 POKE rbp& + 6, 0 POKE rbp& t 7, 5 POKEL rbp& + 8, rxy4 POKEL rbp& +!
12 01 FOR i& = wp& TO (wps + 47) POKE ! Ifi, 0 NEXT i& w I w % + 8 hi = hi + 12 POKEW wp&, x% POKEW wp& + 2, y% POKEW wp&
- 4, w% POKEW wp& r 6, h% POKE wpfi " 9, 1 POKEL WpS "10, 321
POKEL wpS "14, 51861 POKEW wpS
- 33, wl POKEW wp£ "40, h% POKEW wp6 "42, w% POKEW wpfi +44, h%
POKEW wp& "46, 1 xl = its& END SUB SUB MKBTN (xl,y%,wl,h%, cl,
tx%,ty%,t$ , idl, bpi » STATIC The TA?0T IpaSTES front Empire
graphics is the first fully animated fortune telling software
package for the Smiga. Tbc TAIJOT ItjaSTE? Not only entertains
you and your friends with it's authentic Tarot readings, but it
utill also guide you in tk?e interpretation of tbc mystic
• “tTwo full disks of graphics and animations
• ?utly animated Iviajor Arcana
• Classic 3 &IO card spread personal readings
• Teaches definitiary’inlerpretation of alt cards
• instructs users in proper laying of cards Experience your
future today.
Ask your retailer for Tbc TafjoT npasTEij or' Hai 1 check op noney order for* S29. 95 to EMPIRE GRAPHICS
P. O. Box 964 Union, NJ 07083 Sena S2.ee rot' cleteo disk and
coupon Amiga is a registered trademark of Commodore-fimiga,
Inc. Circle 151 on Reader Service card.
MEMALLOCATE bp&, 80S xyS “ bps + 44 baps xys + 20 MKITEXT tx%, ty%, 2, 0, 0, t$ , itp&, itss POKEL bps, 0s POKEW bps + 4f x% POKEW bps + 6, y% POKEW bps + 8, w% POKEW bps + 10, h% POKEW bps + 12, 0 POKEW bpS + 14, 3 POKEW bpS + 16, 4097 POKEL bps + 18, bdpfi POKEL bps + 22, Ofi POKEL bps + 26, itpfi POKEL bps + 30, Ofi POKEL bps + 34, OS POKEW bps + 38, ia% POKEL bps + 40, OS xl% = 0 x2% « w% II 0 y2% = h% POKEW xy&, xl* : POKEW xyS + 2, y1% POKEW xyS + 4, x2% : POKEW xys + 6, yll POKEW xyS + 8, x2* : POKEW xyS +10, y2% POKEW xyS +12,
* 1* : POKEW xyS +14, y2% POKEW xyS +16, xl% : POKEW xyS +18, yll
POKEW bdpS, -i POKEW baps + 2, -1 POKE baps + 4, cl POKE bdpS +
5, 0 POKE bdpS + 6, 0 POKE bdps + 7, 5 POKEL bdps + 8, xyfi
POKEL bdps +12, Ofi id! = itsfi END SU3 SUB LINK3TN ( bpifi,
Bring the Undent art of the Ta?0T to your Amiga SUB MEMALLOCATE
( ptrfi, sit& ) STATIC ptrfi « Ofi ptrfi = AllocMemfi( size,
655376 ) IF ( ptrfi - Ofi I THEN PRINT "Memory allocation error
- sire ";siz5 STOP END IF END SUB SUB MEMFREE ( ptrfi, sizfi I
STATIC CALL FreeMeir.fi ( ptrfi, sitfi ) END SUB SUB MKITEXT (
xl, v%, fct, bcl, m%, t$ , icpfi, itsfi ) STATIC tS = t3 +
CHR$ (0) itsfi = 20 + LEN tS ) tlfi = LEN( tS ) MEMALLOCATE
itpi, itsfi tpfi = itpi + 20 POKE itpfi, fc% POKE itpfi + 1,
bc% POKE itpfi + 2, m% PCKEW itpfi + 4, x% POKEW itpfi + 6, y%
POKEL itpfi + 8, OS POKEL itpfi +12, tpfi POKEL itpi +16, Ofi
CALL CopyMerafi( SADD( t$ ), tpfi, tlfi ) END SUB SU3 L0ADS3R (
Sptrfi, dptrfi I STATIC MEMALLOCATE sptrfi, 1624 dptrfi •*
sptrfi + 160 RESTORE MLData FOR ifi = sptrfi TO (sptrfi + 158)
STEP 2 READ Dpi POKEW ifi, op% NEXT ifi POKEW dptrfi, 0 MLData:
DATA Sh48e7, fihfffe, Sh2c78, fih0004, fih7 Old DATA fih226f,
ih004c, Sh4eae, fihfddS, fih2a40 DATA fiil670Q, Sh0084,
fih286f, fih0048, fih282f DATA ShOQ44, Sh206f, Sh0040, shcb4e,
Sh4eae DATA fihff34, 6h2a00, fih6766, fih2245, fih2044 DATA
sh4eae, fihfflO, fih6754, Shcb4e, Sh204 5 DATA fih266B,
fin0056, 4hlC2b, fihOOOf, Sh7e00 DATA 4h01c7, fih204b, shleae,
fihfeBc, ih22C3 DATA 4h660c, sh3014, fih662c, Sh2007, fih4eae
DATA Shfec2, 4h60ea, Sh224Q, fih2429, fihOC'14 DATA fih24 69,
fihOOlc, ihfieae, Shfe86, ih08S2 DATA fih0005, Sh2002, fih6702,
Sh60d2, Sh3014 DATA Sh66ce, ih302a, fih.0026, Sh3880, fiheOcS
DATA fih2245, Sh2044, fihcb4e, ihieae.
Fihf f8B DATA fih2045, fihfieae.
IhffbS, fihebfie, Sh224d DATA Sh4eae, ihfe62, fihlcdf, ih7fff, fih4e75 END SUB
• AC- This Fall see all the best of the Amiga AC (Aim miCA When
the nights turn crisp and your thoughts return to your Amiga,
let AC's Guide To The Commodore Amiga be your guide.
A Harvest of over 2100 products by more than 400 vendors!
During the summer, Amiga developers throughout the world have been diligently preparing Amiga products for all your needs. Now showcased in this, the largest Amiga-specific publication ever, is the harvest of their labors. Your guide will be an indispensable tool to doing more with the Amiga. Don't miss it!
Available at your local Amazing Dealer Notes Ijrotn th& C (froup Writing utility programs by Stephen Kemp This month we will discuss writing utility programs, A utility program is any program that performs a simple, useful task. For instance, last month’s column included a utility program that would change all the characters in a file to upper or lower case depending on what was indicated on die command line.
Most utility programs follow a similar syntax. The command line is used to indicate input files, commands, and control switches. Occasionally, it may be necessary to ask for additional information after the program has been invoked. This month’s example will include such a feature.
This program is called LOOK (see Listing One). It will search through all indicated files, looking for a search siring that is entered after the program begins. If the skeleton program, GENERIC.C (included in C Notes, V4.8), or even CASE.C (V4.9) is available, make a copy named LOOK.C. Remember, when it comes to utility programs, it is usually easier to begin with an existing shell. If GENERIC.C and CASE.C are unavailable, the entire source of LOOK is provided in Listing One.
The specifications for this program are these;
1) File names, with or without wildcard characters, are input via
the command line.
2) The search criteria should accept any string up to a pre
scribed length.
3) The user should have the option of finding an exact match for
the search criteria (case-sensitive) or a match with any
string that has the same letters, whether capital or not
(case- insensitive).
4) Each line that matches the search criteria should be displayed
for the user.
These tasks are fairly simple to program using many of die functions found in the C library. I have the MANX compiler and have used functions from its library. If another compiler is being used, find a corresponding function (or a combination of functions) to perform these tasks. This program has two functions that were not available in my standard library.
The program first checks to determine whether a sufficient number of parameters has been received. Remember, the first argument (argv[0D will be the name used to invoke die program, so it can be skipped. The program then looks at all the arguments to determine whether any switches supported by the program are indicated. You should use a switch indicator character, like this program does using die hyphen, to help distinguish die flags. LOOK accepts a -C from the command line to indicate that the search should be case-insensitive. This means that a word like DOS would match dos, Dos, DOS, or
any word containing die letters d-o-s consecudvely. If -C is not indicated, an exact match of the letters and case must be found.
The command line is only used to enter the search files and the case switch if required. Because the search string can be just diat a string it is easier for the program to aslc for it, rather than try to retrieve It from a command line. This is because, to enter a string on the command line, it must be enclosed in quotes. An example of how this might look follows: LOOK *.c "if (atr.c == 10)" If quotation marks are not used, the program will not be able to distinguish the “words” from file names. Suppose this command line was accidentally entered: LOOK *.c if (str.c •« 10) Without quotes, the
program would assume that each space-delimited item was a different argument. This program is innocent enough because it does not change anything in a file, but the hazard is obviously there. .Also, even if entered via die command fine using quotes, special editing would have to be included to determine whether or not the search string is supposed to contain the quotes. A simple way to avoid these problems is by asking for the additional input at the beginning of the program.
A simple prompt, issued by printf, is used to indicate when to begin entering the search string. The search criteria is accepted by the function fgets. Fgets was used because it accepts a maximum length as one of the parameters. LOOK is limited, in this example, to search 30 characters. This is an arbitrary number and represents the maximum number of characters that I can type without making a mistake. Any size search buffer may be used, but be sure the character buffer is at least one character larger than the request. This leaves room for the NULL at the end of die string. The “sizeof’
directive was used here to ensure that die input size was appropriate.
(Actually, fgets will stop at “max-1" character automatically, but I consider it good coding practice to always make string buffers 1 larger than required.)
After retrieving die user input, the newline character must be removed from die buffer, since this function adds it when the user presses ENTER. Some library input functions do not include the newline character, so it is always a good idea to check the documentation to decide if it must be handled.
Finally, if a -C was included (now indicated by the variable “flag"), the function strupr will be used to change die search string to all upper case. This is done to simplify finding the string. A case-insensitive search requires diat everything be “reduced” to a common denominator, LOOK uses upper case as the common denominator.
Now each file that matches the criteria is opened and searched. Each line is read, copied into an alternate buffer, then searched for the specified suing. Since die line will be changed to upper case if die flag indicates a case-insensitive search, the alternate buffer is the one that is outputted if die search is positive. When the entire file has been read, only those lines containing die search criteria will have been printed. The file is closed before beginning again.
The search function requires a little more discussion. The method that strsrch uses to find the search criteria is not unusual. In fact, it is the brute force method. Although it suffices for this example, you may be interested in discovering faster, more flexible searching techniques. Entire books have been written on the subject of string searching and pattern matching.
Also, greater flexibility can be provided by adapting a “regular expression" technique. However, these topics are not usually considered beginner material.
The input line is searched for the first character in the criteria. If this character is found, a pointer is returned with its position. A simple compare is then performed for die length of the search string. If an equal match is found (indicated by a 0 return value), then TRUE is returned from diis function. But if the strings do not match, two very important things occur, First, die input string pointer is checked to see if it is pointing at the NULL character. If it is at the end of die string, there is no point in continuing. If not, then the for-loop cycles and the string pointer (str) is
incremented (str++) past the character position that is currendy held. THIS IS VERY IMPORTANT! If the pointer is not incremented, die program will get stuck in an endless loop, continually finding the same character position in the string again and again. Likewise, it is possible to increment past the NULL and begin searching random memory if you are not at the end of the string.
That’s about it. I’ll leave the rest of the code for personal examination. It is fairly straightforward and, with die exception of the string searching function, resembles the program we did last month. After trying out die program, go back and do a few experiments. Try adding a line counter to identify the number of diose lines with matching criteria. Then try making a new switch that will stop searching die file once die first match is found make whatever revisions you choose to help you get the most from your program.
If you have any questions or comments, you can write to me c o Amazing Computing, P.O. Box 869, Fall River, MA 02720.
Listing One LOOK.C is a program that will search through the specified files for a given search string.
The parameters for LOOK can be file names with without wildcard characters (using * and ? .
An optional -C switch is also supported to indicate that the search should be Case Insensitive. Otherwise the search criteria must match the string specified.
The user will be prompted to enter the Search Criteria (string) once the program has begun.
This program was written for the MANX C compiler fir.ciude "srdio.h"
• include "fcntl.h" extern char *scdir(); " directory function'
" file accessible function" * string index search function*
extern short access(); extern char "index(); Ideflne True 1
idefine FALSE 0 main(argc,argv) short argc; char "argv[3; *
program start * * argument counter * * argument variable
pointer(s)* char "fptr; short cnt; short ndx; char flag; *
pointer to a filename* * counter for files * * index for
arguments * * case flag * * file io pointer * * search
string * ¦ lir.e buffers * FILE *ifp; char srch(31); char
ibuf[256]f altbuf[256]; if (argc = 1][ " if not enough
arguments provided " exit point if error discovered ¦ *
examine arguments* * found an if (argv(ndx)[1] -- 'c' II
argv[ndx][l] =» ‘C'J flag = TRUE; " store the flag * } if
(flag) " if case insensitive search * printf("Case
Insensitive search n"); * Send message • * ask for string *
* get the response ¦ * remove newline character* * if no
case ’ * use upper case for compare* * send newline *
printf("Enter Search String:"); fgets
(srch,sizeof(srch)-1,stdin); srch[strlen(srch)-1] = ' Q'; if
(flag) strupr(srch); orintf("IsVn", srch); ioWV 0dfo d lie®
ho °9,0?
LtSSS?**” V quqW e0 lUD D eV SV “ fts » o odd PrtnV 9 ® 0(es, _ How does IMG Scan work?
With IMG Scan you can use your dot matrix printer to scan pictures.
Simply attach the IMG Scan fiber-optic sensor to your printer, and use the IMG Scan software to digitize photographs and drawings. You can then save the picture in standard IFF format for use with your paint, desktop publishing and video programs.
Which Printers will IMG Scan work with?
IMG Scan will work with any dot matrix printer that has adjustable vertical line spacing and a print head which moves across the carriage. This includes such printers as Epson, Panasonic, Citizen, Citoh, Star and most compatible printers.
IMG Scan features: ? No video camera required ? Scans up to 360 dots per inch ? Scans in 256 gray levels IMG Scan produces near photographic quality images! Adds new dimensions to desktop publishing.
SUGGESTED LIST PRICE Scan clip art with the IMG Scan, Eliminates pasteup and saves valuable time.
SunRite Industries 3801 OLD COLLEGE jm BRYAN, TX 77801 J, TEL: (409) 846-1311 HI FAX; (409) 846-7236 USA Dealers: Contact us directly.
Circle 191 on Reeder Service card.
(ndx = 1; ndx argc ; ndx+M ( if (argv[ndx)10] == continue; found" * * • * examine arguments* * flags already * so skip to next * * This function searches a given string (line) for the string (srch)* * and returns TRUE if found and FALSE otherwise. * for(cnt-0;(fpcr scdir(argv(ndx)));cnt++) ¦ look for wildcards if (access(fptr, Q) 0) ¦ if file is found printf "*** %s *** n",fptr); * display filename short strsrch(line,srch) char *line, *srch; char *str; short len; ifp « fopenifptr,*r"); * open file for read* if (ifp *»- NULL} ( * if opens fail* printf(" - skipped -
n"); continue; * continue looping* ) for(;;) [ * loop through file if (fgets(lbuf,256,ifp) =* NULL} * EOF * fclose(ifp); ’ close file * break; * end loop * ) strcpy(altbuf,lbuf); * copy the line * if (flag) * if flag * strupr (lbuf); * up the string ¦ * strupr is a function that indexes through a string and converts * * all alphabetic characters to upper case * strupr( str } char *str; if (strsrch(lbuf,srch) == TRUE) f* if Found * printf(altbuf); * print original line* len » strlen (srch); Utility program specific code goes here for str - line; ; str++) str ¦
index(str, *srch); character* if (str =• NULL) break; if (strncmp (str, srch, len) == 0) return(TRUE); if (*str »- ' 0') break; ) return(FALSE); } * determine length* * loop through string * * look for this * if not found * * terminate loop • * Found it! * I* return true * * if at end of string* * return false for( ;*str != ’ 0r; str++)
• str - toupper(Bstr); * search until null is found * * call
upper case function * }else * if not found * printf("Cannot
find %s nw,fptr); * indicate * 1
- End of listing one- ) if (cnt -= 0) * no matches *
printf("Cannot find %s n",argv[ndx]); * for this argv *
• AC* Amazing Reviews Worth The Wait: 1 Forth Professional 2.0
review by Jack Woebr It is only fitting that the microcom
puter world’s most brilliant hardware creation, the Amiga,
should be garlanded with the most powerful software systems
available. Jforth Professional from Delta Research of San
Rafael, California fulfills this requirement from the
perspective of the professional Forth programmer.
Jforth Professional is a complete software development system centered around a state-of-the-art, full 32-bit JSR- threaded Forth. Forth programmers have always been able to point to the convenience of programming in Forth, but rarely have they been able to point so confidently to the execution speed of a Forth system as they can now with Jforth. When Jforth 1.0 was introduced in 1986, there was no comparable Forth system on any popular microcomputer.
Jforth set the standard, and the Forth world raced to catch up, Jforth provides an excellent environment for Amiga programmers, from the rankest amateur to the professional. Forth is a compiled language with an interpretive layer. Code may be added to the system simply by creating a "colon definition" typing in the name of the routine preceded by a colon, then listing tire “older" routines which the new routine is to call, and terminating the definition with a semicolon. Such definitions may be added to the system at any time, either by typing them in directly or by compiling a text file.
In traditional Forth systems, definitions are compiled into lists of addresses of the called routines. These in turn may consist of address lists and so on until, at some lowest level, executable machine code is reached. Such definitions must be "interpreted" by an “inner interpreter", a set of routines, themselves written in Forth, which understands the address lists.
This is not the case with Jforth.
Short code routines, when referenced in a definition, are compiled as inline code.
(The maximum length of words to be compiled inline is a programmer-settable option.) References to previously defined routines which are called rather than compiled inline are laid down as optimized JSR’s or BSR's in a clever register-addressed scheme that avoids the use of token cables.
The entire body of a Jforth JSR- threaded definition is executable MC68k code. Every definition ends in an RTS.
This is the fastest executing type of Forth which can be implemented on a traditional microprocessor. For a faster micro Forth you would have to buy a Harris RTX2000, a chip designed by Forth author Charles Moore specifically to execute Forth in silicon.
While Jforth enjoys compiler language execution speed, the programmer never needs to sacrifice the convenience of having a fully interpretive language at his disposal. One obvious advantage of such a system is that you do not have to learn about making Amiga library calls by constant compiling, loading, and crashing. You can open windows, create graphic objects, and move tilings around windows while controlling them inteipretively without sacrificing compiled-code speed. You can even crash the system interpretively, a great time saver over traditional compilers!
Jforth comes on two disks. The first disk, Jforth:, includes most of the source code in Forth for the entire system, many utilities, and the Amiga Include and FD files. The second disk, the Extras: disk, contains the minimal kernel of Jforth (created from Assembly), for which the source code is not included, and two other Jforth images produced by having compiled various assortments of the extensions and utilities available in source on die two disks.
The recommended precompiled development image of Jforth is about 161K. The Extras: disk also includes the system-generating code for expanding die kernel to a full development system in the Sysgen drawer. The Demos drawer contains many instructive and attractive demos with full source. The Appls drawer includes several intriguing and useful applications (including a wordcounter, a prettyprinter, and a very dumb terminal program). The Clone drawer contains the complete source to CLONE. More on CLONE in a moment.
A session widi Jforth Professional starts by clicking die XICON scripts 011 the distribution disks. The scripts assign logical device names to several of the Jforth drawers. Jforth has a full interface to the normal Amiga file system, and can “JForth provides an excellent environment for Amiga programmers, from the rankest amateur to the professional. ” call up the file from which a word in die Jforth image was compiled and display the file for the programmer. Jforth “knows” the source file locations under diese logical device names.
Double clicking on another icon brings up Jforth. System initialization includes setdng up traps in the 680x0 vector table so diat programmer errors which should incarnate the Guru, such as odd address errors, instead evoke a mild Jforth rebuke text. Of course, if the programmer is masochistic enough, he or she can compile the file RUDE.F, which generates truly shocking red-and-black system alerts. Dictionary hashing is also installed during Jforth system initialization. The Jfordi Professional dicdonary is hashed for faster searches during compiles. Compiles are now quite a bit faster than
in earlier versions of Jforth.
At any time the programmer can execute MAP, -which displays a map of die system as currently constituted. A new image widi a larger dictionary space can be created by changing a system variable and executing SAVE-FORTH.
For those familiar with more common Fordi systems, there are quite a few surprises in Jfordi, most of them quite pleasant. As mentioned above, Jforth definition bodies consist entirely of executable code. A quick DUMP of part of the dictionary is very informative on this point. Typing DEF or SEE wordname results in disassembly, rather dian decompilation. However, if branches of the disassembled Forth word point to other high-level words possessing a name header, die name of the word branched to is printed in parentheses next to die disassembled branch.
Jforth Professional CLONE is an optimizing target compiler. This means that once you have perfected your program under Jforth’s normal interpreter compiler environment and you are satisfied with your code, you can invoke CLONE and produce from the compiled program an optimized, minimally sized target image suitable for commercial distribution. The output of CLONE is not a Forth system; it is your application program pared to the bone.
Jforth Professional comes with the complete source to ODE, a congenial and complete object-oriented extension to Jforth which allows die programmer to explore Oops! Programming style without losing access to the underlying simplicity of Forth syntax. ODE has early and late binding, classes, mediods and inheritance all the tools die OOPS programmer has come to expect.
Among the 91 utilities in the Jfordnutil drawer are: floating point math, local variables, random numbers, graphics code, printer logging, multistandard package (a useful item if you intend to port code over from other Forth systems), BLOCK support (JForth uses regular Amiga text files as program source; BLOCK is a loadable option), and a Jforth implementation of the routines contained in amiga.lib mentioned in die Amiga manuals.
(Forth Professional features detachable precompiled modules, so you can use certain Jforth resources without adding diem permanently to the Forth dictionary. Among the modules are a set of Amiga Includes, an assembler and the disassembler. Source code for die modules and for die code to create new modules from your own code is included on the Jforth distribution disks.
Incidentally, the disassembler is not limited to the Jforth image. Nor is the power of words like ! (store) DUMP and @ (fetch) limited to the Jforth image. The Jforth programmer can wander around the memory like a worm, “peeking and poking” at will. (Watch out for collisions with system structures!)
Jforth actually has two assemblers, one “traditional” reverse-polish Forth- style assembler, and one featuring Motorola forward syntax widi local labels. Use die one which suits your needs. The Motorola syntax assembler is especially useful in writing code words or stand-alone routines such as interrupt handlers. The advantage of die reverse- polish Forth-style assembler is diat one can resort to assembler right in the middle of a high-level Forth definition without any “magic handwaves’’.
Another gratifying feature of die Jforth interpretive compiler environment is diat Jforth has F-kev mapping and command-line history and editing like that provided by the shell. The F-keys come premapped to such useful words as INCLUDE and MAP, but diis can be changed at any time by the programmer.
As usual, the source for these items which comes precompiled in die recommended development image is included on the distribution disks.
Jforth Professional comes with a laser-printed manual of about 300 pages in a three-ring binder. The various features of die system are described in detail. There is a tutorial for beginners in Forth, and a glossary of die Jforth vocabulary. ODE, .Amiga system calls, and the Jforth version of C structures are all carefully documented.
Jforth is die brainchild of Phil Burk, Brian Donovan, Mike Haas and Jim King. Phil and Mike recendy used Jforth and an .Amiga to win $ 1,000.00 and the dde of World’s Fastest Programmers at the Realtime Programming Convention last November in Anaheim, CA.
The World’s Fastest Programmer Contest required entrants to bring their own hardware and software and use it to program a “Mystery Gizmo’’ controller to wave a sawblade around in the air while a set of LED’s flashed out "THE RAIN IN SPAIN FALLS MAINLY IN THE PLAIN”.
With Jforth and the Amiga as dieir development platform, Phil and Mike had the one grand in the bag in a little over an hour, while other programmers were fuming, fussing, and burning out the delicate stepper motors of the Mystery Gizmo.
Jforth Professional is alternatively known as Jforth 2.0, the culmination of diree years of debugging, improvements, extensions, and optimization of the original Jfordi 1.0. Thereby hangs the tale.
In 1986 when Jforth 1.0 was first announced, die ads promised, among odier things, “Optimizing Target Compiler" and free upgrades for the cost of media and postage and handling. Early purchasers eventually received the upgrade to version 1.2, which up to now has been the latest commercial release of Jforth. However, the optimizer was not forthcoming, so to speak. In its place was a Turnkey utility that stripped the dictionary' headers from the system, thus manufacturing a legally distributable object that did not constitute a redistribution of the underlying Jforth system.
However, the object was not automatically optimized, and the programmer had to very' carefully compile a minimal image by recompiling die system upwards from the kernel to achieve a distributable object of reasonable size.
Furthermore, there was no -way to shrink die kernel itself, meaning that any Jforth program had a minimum size of about 70K.
CLONE, however, is die promised goods, and does indeed produce objects as small as about 2 1 2K. However, much has changed with Jfordi other dian CLONE, and Delta Research came to market with the greatly expanded Jforth Professional system, Jforth 2,0, offering $ 50.00 upgrades to registered 1.2 owners.
At this point, some of the earliest buyers who had purchased on the basis of the original ad (which had been long cancelled even before version 1.2 wras available11 contacted Phil Burk of Delta Research and asked why Delta should not keep its original commitment to a target compiler. Phil responded by offering a CLONE-only upgrade to registered 1.2 owners for $ 10.00, which includes the cost of media, postage and handling. This reviewer, who has followed and owned Jforth since version 1,0, is glad to see Delta honoring its early advertisements.
Jforth has its quirks, some apparently rooted in the collective personality of tire Delta team. While Jforth is advertised as “Forth 83 Standard". This is an impossibility. The 1983 Standard (unwisely, in many opinions) defined Forth in terms of 16 bits. A 32-bit Forth cannot be 83-Standard, though it may resemble the standard quite closely from tire programmer's point of view.
We take a out of the price Further, philosophical differences between Delta and certain trends of the Forth 83 Standard led to some anomalies: NOT in Jforth is a logical Boolean NOT instead of tire bitwise NOT prescribed by the 83 Standard. Division is floored to zero (0) in Jforth, instead of towards negative infinity, which is the 83 Standard. The familiar division operator UiM MOD is missing and is replaced by U wlrich operates in a slightly different manner.
P. O. Box 455 Quaker Hill, CT 06375
(800) 441-BYTE, In a (203) 443-4623 Authorized dealer for
Commodore-flmiga Computers, Great Valley Products (GVP),
Memory fi Storage Technology (M.A.S.T.). Authorized
Commodore-Amiga Service and Repair.
Authorized Amiga Graphics Dealer.
Delta Research has not been alone in its conflict with tire 83 Standard. The world's largest Forth vendor, FORTH Inc., has never totally reconciled itself to dre 83 Standard. The question may soon be moot. The Fordr language is in ANSI X3J14 procedure right now, and if anything may be gleaned from the BASIS documents leaking out from the committee, die ANSI Standard Forth to emerge in 1990 or 1991 will contain radical departures from the 83 Standard, which later was very heavily tilted towards 16- bit micros.
In any event, the Foith standard is currendy undergoing revision at die ANSI level to deal with die problems vendors faced as Forth grew beyond the horizons envisioned by the 1983 Standards committee. As a rooter on the sidelines of the current Standardization effort, it is my observation that Jfordi substantially conforms to die functionality of the still- evolving ANSI Standard BASIS.
Some of the observed anomalies in Jforth are addressed by the Jforth loadable multi-standard package which allows the programmer to go back all the way to FIG Forth if desired, but anyone intending on porting code from other Forths should be aware that the old saw, “If you’ve seen one Forth, you’ve seen...one Forth” is not ready for retirement quite yet.
Experienced Forth programmers will have mixed feelings about the absence of local multitasking in Jforth.
Phil and Mike fee! Local multitasking is inefficient on die Amiga; they recommend using the Amiga Exec facilities for spawning child processes. Your correspondent favors the syntactic convenience of Forth-style local multitasking and hopes to prevail upon the Delta gang to hook up all the stubs they purposely left in the kernel for local multitasking. Those stubs include full implementation of local variables, and make it possible for the programmer to install local multitasking on his own! I may try it Real Soon Now.
However, not one of the quirks of Jforth renders die system unusable or even difficult to use. Foith programmers just tend to be eccentric and opinionated (talk to me sometime), and the Delta gang is no exception!
Most important, I cannot envision a more suitable environment for programmers unfamiliar with the Amiga system resources to pleasantly and efficiently explore the intricacies of the Exec- Intuition-AmigaDOS universe. The value of the interpretive layer, combined with the compact syntax of Forth and the blazing execution speed of Jforth, should not be taken lightly by Amigans nor professional Forth users.
¦AC* Author 's Info Jack Woehr is a Forth programmer at Vesta Technology, Inc. in Wheat Ridge, CO. He is Chapter Coordinator for the Forth Interest Croup, and host of the Forth Conference on the WELL in Sausolito, CA. Mr. Woehr is also Sysop of the RealTime Control & Forth Board, which is pan of the CFB Forth Network.
Jack Woehr can be contacted through the Genie network, or you can write to him c o Amazing Computing, P.O. Box 869, Fall River, MA 02722-0869.
Delta Research
P. O. Box 1051 San Raphael, CA 94915
(415) 485-6867 Jforth Professional 2.0, SI 79-95 Inquiry * 219
Amazing Programming They slice, they dice, they make using
gadgets in Assembly a breeze!
Glatt's Gadgets byJeffGlatt In my last article "Getting Started in Assembly" (AC V3.12), I presented a skeletal example program that used Amiga libraries, windows, and menus, and communicated with Intuition. In this article, 1 will add some gadgets to the window.
Gadgets are visual items inside windows and requesters which can be manipulated by the user to enter data. There are several types of gadgets. Some are system gadgets, and are primarily used by Intuition. The small box at the bottom right comer of some windows which lets you resize it with the mouse select button, is an example of a system gadget. So are the front and back depm-arrangers, tire window-close box, and drag bars. You can add any of these gadgets to any window that you open by specifying certain flags in the newWindow's window flags field. For a list of window flags, see die
“Libraries and Devices” section of the ROM Kernel Manual (page D-154, beginning at line 794).
There are also application gadgets. These are gadgets that you must define yourself. You need to set up various structures that define what each gadget does, what it looks like, and where it will be located. The diree types of application gadgets are string, boolean, and proportional gadgets. String gadgets are used to enter text from the keyboard. They are commonly seen in file requesters, where diey are used to type in specific filenames. Boolean gadgets have only one of two states: selected or unselected. Think of them as switches. An example is a gadget labeled “CANCEL" or “OK” seen in
various DOS requesters. Proportional gadgets look like “sliders” or “faders.” They have a knob that moves around inside a closed box. An example of diis is the key-repeat slider in Preferences.
An example of a gadget structure is myPotGadget in Listing One. The first LONG in the structure is the address of the next gadget in die same window or requester. You create a linked list of gadgets by having that next gadget’s NextGadget field point to a third gadget, etc. When you finally get to the last gadget in die window, its NextGadget field must be zero.
The next two WORDS of die structure describe where to place the gadget (relative to the top left comer of its window or requester, unless you specify GEELBOTTOM or GRELRIGHT flags, which represent how many screen pixels to move to the left and down, respectively). If you specify GRELBOTTOM or GRELRIGHT, then die two numbers are negative offsets from the the window's right and bottom borders. The advantage of using these is that if your window' has a WINDOWSIZING system gadget, then your application gadgets will “move” with the window as it is resized. Otherwise, die gadgets might “disappear”
as die window is made smaller.
The next two WORDS are the width and height, in screen pixels, of the gadget select box. Note diat diis is die size of a rectangular area in which the user can “dick" to select the gadget. This does not determine the size or shape of the gadget’s graphics. An Iniuilmage or Border will do that.
If you skip the next two WORDS of the structure, you’ll see a field labeled Type. This is where you describe what type of gadget you’re dealing with. A list of gadget types can be found in die “Libraries and Devices” section of the RKM (page D-148, beginning at line 332). Since this is an application gadget as opposed to a system gadget like the drag bar you need to CLEAR bit 15 of this WORD. Also, this gadget is for a window as opposed to a requester so you should CLEAR bit 12, as well. You want die gadget attached to the window, and not to the screen, so bit 14 is CLEARed also. Since diis
gadget won’t be placed in the window’s border, you don’t need GIMMEZEROZERO borders, so bit 13 should be CLEARed. Here are the bits to SET for each of the available types of application gadgets: BOOLEAN GADGET Bit 0 PROPORTIONAL Bit 0 AND Bit 1 STRING GADGET Bit 2 Since myPotGadget is intended to be a proportional gadget, I SET bits 0 and 1. In die gadget structure is a Flags field. A list of available flags, their hex values, and what they do can be found in the “Libraries and Devices” section of the RKM (page D-147, beginning at line 248).
I already mentioned GRELBOTTOM and GRELRIGHT.
There are two other similar flags, GRELHEIGHT and GRELWIDTH. These change the gadget's height and width, respectively, as die window is resized. If your window doesn’t have a resizing gadget, then these four flags will not be of any use to you.
Bit 7 of the Flags field is used by Intuition to indicate when a gadget is being selected. It is SET while selected, and CLEARed when un-selected. Your program can test this bit if it wants to know if a gadget is in selected state.
If you want a special “design” in the un-selected state, you must create die image data (using an Image editor), place the data in CHIP memory, initialize an Intuihnage structure, and store that structure’s address in the GadgetRender field of the gadget. In myPotGadget, I supplied my own image for the knob. An Intuilmage structure called myPotlmage has been initialized, and the actual data for the image is at the label PotlmageData. This data must be placed in CHIP memory, but die gadget and image structures do not. I will allocate CHIP memory when the program is run, and copy PotlmageData to
this CHIP memory block before opening the window.
A good place to add this allocation is in the open_libs routine from my last article’s code. At label B3, add die following code: 36,dO ;the of bytes in PotlmageData B3 moveq moveq jsr move.1 3,dl ;means "give me PUBLIC, CHIP memory" ;_5ysBase already in a6 _LVOAlloeMem(a6) d0,myPotImage+10 ;store the address of the ;block in our ;lntuilmage structure's ;ImageData field.
BlO ;lf no memory, we'll have to exit beq. S ;===Now copy PotlmageData to this ;CHIP mem PotlmageData, aO dO, al 36,dO (a0)+f (al)+ dO,CPYI lea movea.1 moveq CPYI move.b dbra This is added right after the call to FindTask. _SysBase is still in a6, and your window hasn’t yet been opened.
Note the attributes in dl sent to AlIocMem. Setting Bit 1 means “give me CHIP mem,” and setting Bit 0 means “make it known to other tasks and interrupt code.” There are other specificadons that you can make. Setting Bit 16 will automatically give you a block that has been initialized to all zeroes. You could set bit 2 if you wanted FAST mem, but do not do this unless you are certain diat your Amiga has expanded memory (more than 512K). If you don’t set bits 1 or 2, Exec will try to get FAST mem first, and then CHIP mem if FAST is unavailable.
If you set bit 2 (FAST), and your Amiga has only 512K, then the allocation will fail (i.e., return zero).
Note that I am storing die address of the returned block in myPotlmage's ImageData field. The remaining fields in myPotl- mage describe the size of the image, the address of a Nextlmage structure linked to it (not needed here), and some variables that describe how the image is to be rendered. A short explanation of diis can be found in the “Libraries and Devices” section of die RKM (paeg D-151, beginning at line 536)- Also note that the GadgetRender field of myPotGadget contains the address of myPotlmage’s structure.
You’ll also need to de-allocate the CHIP memory when you exit the program. Add these lines at label CO (at the beginning of quit_all): CO movel myPotlmage+lO, dO beq. S Cl movea.1 dO, al moveq 36,dO movea.1 _SysBase, a6 jsr _LV0FreeMem(a6) If your assembler supports it, you can declare the data as CHIP memory right in the assembly listing. This way, you won’t have to allocate CHIP memory and copy the data into it. You do this by placing an assembler direcrive before die image data, like this: SECTION imagedata,DATA,CHIP PotlmageData ;put your data here The SECTION statement is not a 68000
instruction. It is a special command that your assembler carries out when it assembles die code. After the CHIP data, you should put another SECTION statement without the CHIP specification.
SECTION notimage,DATA Instead of an image, you can use a border to create die gadget graphics. In this case, the GadgetRender field must point to a Border structure, radier than to an Intuilmage structure.
You’ll also need to supply the data describing the points in the border, but it doesn't need to be in CHIP memory.
An example of a border structure is myStrBorder. The first two words give the X and Y coordinates of die border's origin.
This position is relative to the gadget’s top left comer. By specifying (-4,-3), I put die initial pen position 4 pixels to the left and 3 pixels up from the gadget’s top left corner. The next 2 bytes are die Fore and Back pens. Remember, with a Work- Bench screen diere are 4 choices (0 to 3). The Drawing mode is JAM1. The count field tells how many pairs of points there are in the border data. Each pair of WORDS of die data represents the X and Y coordinates of a point. The vector field is the address of the actual data points. For example, since die first two words of StrPts gives (0,0), die
first point will be at the origin. Intuition draws lines between all the points in the array.
You tell Intuition whether the GadgetRender field is pointing to a Border or to an Intuilmage structure by CLEARing or SETting die GADGIMAGE bit ( 2) of the gadget’s Flags. If you leave die GadgetRender field 0, then no imagery will be displayed for the gadget. I SET the GADGIMAGE bit of myPotGadget’s Flags, since I supplied an image, rather than a border. On die other hand, for die string gadget, myStrGadget, the GadgetRender field points to a Border structure, so myStrGadget has its GADGIMAGE bit CLEAR. (Note: For some reason, Intuition will not allow the use of a Border structure with only
proportional gadgets. You can use an Intuilmage.)
The gadget structure has a SelectRender field diat is used in conjunction with die following Flags to inform Intuition how to display the gadget when die user clicks on it: GADGHCOMP ($ 0000) Complement the colors* GADGHBOX ($ 0001) Draw a box around the gadget's image.
GADGHIMAGE ($ 0002) Use the alternate image or border (which you must supply).
GADGHNONE ($ 0003) Don't change the gadget in any way.
You need to choose one of the above. If you want GADGHIMAGE, then you must create the image or border data, along widi its associated structure. If you used a border for GadgetRender, then you must use a border for SelectRender.
The same is true for an Intuilmage. You store the address of this Intuilmage or Border structure in the gadget’s SelectRender field. If you prefer GADGHBOX, GADGHCOMP, or GADGNONE, dien set SelectRender to zero and don’t bodier with anything else. For these diree, you don’t need a border or image. GADGHCOMP changes the colors of the gadget when it is selected. GADGHBOX draws a box around the gadget, but this really works only for Boolean gadgets. Furthermore, string gadgets only allow GADGHCOMP or GADGHNONE as the highlighting mode. GADGHNONE doesn't change the gadget at all when it is
The first MS-DOS File System for the Amiga® Is ADDITION 10 reading and writing any file on an MS-DOS disk, perform the following DOS functions on files and directories.
* Scan any directory
* Create directories
* Rename
* Delete
* Set dates
* Set protection bits
* Seek file positions
* Get disk information
* Add cache buffers
• Head* or wnlcs any 3WIK nr 720K MS-DOS or ATARI ST® disks I
Version 2.0 or tnghcri with opt ional text Hie filters.
• Transparently accesses MS-DOS files from any ulility or
application (including file requesters).
• Fully integrates itself into the Amiga operating system
• Automatically readjusts todiffcreni MS-DOS ATARI ST formats.
• Can be removed after use to reclaim memory.
• Provides an easy installation program
• Available in a READ-ONLY version from the Public Domain or
directly from CONSUL77TOW for only $ 5.00. For orders placed
through CONSUL77?OW add $ 3-00 shipping and handling (SS.IX)
outside the U.S. and Canada). Michigan residents must add the
correct sales lax. C.O.D. add $ 3.00 Send check or money order
to; C0NSUL7ROW Please allow up to 2 weeks to process your
Technical Support [313) 459-7271 Dealer inquiries welcome.
11280 Parkview Plymouth, Ml 48170 Circle 156 on Reader Service card.
Note that I have chosen GADGHCOMP as the highlighting method for myPotGadget. One of the fields in the gadget structure is for Activation flags. These determine what messages Intuition will send when the gadget is selected, in use, and unselected. Here is a list of the bits that can be set to enable certain features: Bit Function ame RELVERIFY Intuition sends a GADGETUP (release) if the inouse pointer was over the selected gadget when the user released the nouse button.
Intuition sends a GADGETDOWN (selected) as soon as the nouse is clicked on the gadget- (No MQUSEBUTTON is sent here.)
3ADGIKMEDIATE Tells Intuition to end (cancel) a requester or AbsMessage when gadget is selected.
Useful for proportional gadgets.Sends nouse move messages while the gadget is selected.
FOLLOWMOUSE If you placed the gadget "along" the border of the window (like Workbench's disk full indicator), set the bit of the border that you want adjusted to "encompass" the gadget.
RIGHTBORDER LEFTBORDER TOPBORDER BQTTQMBQRDER Toggle the gadget's Select bit ( 7) statein the flags field each time the gadget is selected.
TOGGLESELECT 9 10 String gadgets require you to supply a buffer into which Intuition can dump the user's keyboard input.These two indicate where in the buffer to place the cursor.
STRINGCENTER 5TRINGRIGHT This string gadget ndicates that the user input is going to be an ASCII string of numbers which Intuition should convert to a LONG and place in the Stringlnfo's Longlnt field.
This string gadget means that you have supplied an alternate keyraap, 12 For myPotGadget, 1 want to know when the user selects it (GADGIMMEDIATE), I want to be sent mouse position messages (FOLLOWMOUSE), and I want to know when the user releases it (RELVERIFY). For proportional gadgets, the mouse doesn't have to be “over” the gadget when the button is released. So what Intuition is going to send me is the following (in this order):
1. ) One GADGETDOWN message when myPotGadget is selected,
2. ) Mouse move messages while the user moves the mouse around.
3. ) One GADGETUP message when the user finally releases.
Note that in order for FOLLOWMOUSE to work correctly, my window’s IDCMP flags must have set MOUSEMOVE, and the window Flags REPORTMOUSE.
There is a field in the gadget structure for GadgetText.
This is the address of an IntuiText structure (with its TopEdge and LeftEdge relative to the gadget's top left comer). This is for you to add text to the gadget. I chose to add the word “POT” beneath the proportional gadget.
There is a field in the gadget structure labeled Speciailnfo.
This field holds the address of a special structure. When you’re using proportional gadgets, this must be a Proplnfo structure.
When you're using string gadgets, this must be a Stringlnfo structure. For boolean gadgets, this field should be zero.
An exampie of a Proplnfo structure is myPotPropInfo. The first WORD in the structure describes the PotFlags. Here are the bits to set for various flags: AUTOKNOB (Bit 0), FREEHORIZ (Bit 1), FREEVERT (Bit 2), PROPBORDERLE5S (Bit 3).
And KNOBHIT (Bit 8).
If you SET AUTOKNOB, you do not have to allocate and initialize CHIP memory for the knob as I did with myPotGadget.
You still need to have an Intuilmage structure (like myPotl- mage) and store its address in the gadget's GadgetRender field.
But you needn’t create any image data, copy it to chip memory, and store the address of the CHIP mem in the Intuilmage’s ImageData field. Intuition will do this, thus supplying you with a default knob. (Also, you don’t have to initialize tire Intuilmage structure.)
FREEHORIZ means that the slider will be laid “on its side” and die knob will move across the screen left or right (along the Y-axis). FREEVERT means drat the slider will be “stood upright” and die knob will move up and down (along die X-axis). You can specify both, and the knob will have 360-degree mobility.
An example of this is the screen-position gadget in the middle of WorkBench's Preferences screen.
The next two WORDS are die HorizPot and VertPot fields, These two fields hold die current (X- and Y-, respectively) position of the knob within the slider. This will be a value from 0 to 65,535, with 0 being the position closest to the bottom of the screen for FREEVERT, or the position farthest to the left for FREEHORIZ. For myPotGadget, i have chosen FREEHORIZ (left and right movement only), so die HorizPot field contains the information I need. I could use this value to determine the value of a certain variable in the program, or perhaps use it to determine the current position in a list.
Many times, you won’t need the full range of values from 0 to 65,535, but regardless of die dimensions of die gadget, you always get this range. You need to scale die value for your use. The last six fields (WORDS) of the Proplnfo are for Intuition’s use.
An example of a Stringlnfo structure is myStringlnfo. The first LONG is the address of a buffer into which Intuition will place die user’s input. The second LONG is the Undo buffer used by Intuition. This is optional (for no Undo, set it to NULL), and enables Intuition to restore the previous contents of the string gadget when die user presses [right Amiga]-Q.
The next WORD is the character position where the cursor should appear when selected. After diat is the maximum number of characters (including the NULL terminator) which can be placed in the buffer. Make your buffer (and Undo) this lengdi. The next WORD is the position widiin die buffer of the first character to display. The following variables are used mainly by Intuition. You may determine how many characters are in die buffer by examining the NumChars field. The Longlnt field is used if you specified LONGINT in die gadget’s flags.
After the user types in an ASCII string of digits (widi an optional leading sign), Intuidon will convert die string into a SIGNED LONG and store it here. The last field is for supplying your own custom keymap if you have set the gadget’s ALTKEYMAP flag.
Going back to the gadget structure, there is a field for MutualExdusion. This has not been implemented as of Workbench 1.2, so I suggest you ignore this und! Commodore updates the OS. If you want to implement your own form of mutual exclusion, die Enhancer manual with 1.2 gives an example (in that awful language known as C). You'll have to turn it into retd code via a non-real-time interpreter (commonly known as a compiler).
There is a field for die gadget ID, This can be any number (of your choice) from 0 to 65,535. You should pick a unique number for each gadget, and it is a good idea to reserve 0 for any CANCEL gadget. When receiving a GADGETDOWN IntuiMessage, you can extract the Iaddress field (the base of die gadget structure that was selected), and get the gadget’s ID in order to determine which gadget is in effect.
The last field in the gadget structure is for UserData. Since Intuition ignores diis, you can use this LONG for any purpose you like.
In order to have your gadgets attached to die window, we need to store the address of the first gadget in the list (myPotGadget) in the newWindow's FirstGadget field before opening die window. Simply change die 0 in die original listing to myPotGadget. Adding or removing gadgets from an already opened window can be accomplished with Intuition’s AddGadget and RemoveGadget.
Add die code in Listing One to the code in the last article, and you should see four gadgets when the window is opened: two proportionals (one with AUTOKNOB placed in the border of the window and a size relative to the window’s), a String, and a boolean gadget. Of course, we still have not written a handler for the MOUSEMOVE, GADGETUP, and GADGET- DOWN messages that Intuition is sending, but we’ll do diat next month. For now, experiment widi positioning, sizing, and adding gadgets, as well as with changing imagery, borders, and IntuiText.
396 Washington Street Wellesley, M A 02181
(617) 237-6846 AMIGA Experts! Nothing but the best.
Satisfaction guaranteed.
Come in and try-out all the latest software, hardware, and accessories.
Your full service AMIGA dealer.
Store hours: Mon.-Thur. 10-6 Friday 10-8 Saturday 9-5. We ship UPS, Mon.-Fri. myPotGadgetl:
dc. l myPotGadget2 ;NextGadget address of Next Gadget in linhed
dc. w 125 ;LeftEdge
dc. w 160 ;TopEdge
dc. w 250 ,• Width
dc. w 10 Height
dc. w 3 ;Type = PROPortional
dc. l myStrGadget
dc. w
- 15
dc. w 10 dc .w 15 dc .w
- 19
dc. w $ 50 dc .w SB dc .w 3
dc. 1 my?otImage2 dc . 1 0
for the AMIGA at The Memory Location (an IntuiText structure
for this gadget)
dc. l 0 ;MutualExclude
dc. l myPotPropInfol ;SpecialInfo
dc. w 0 ;ID (should be different for each gadget)
dc. l 0 ,-UserData, if any myPotGadget2;
dc. l rayPotlraagel ;GadgetRender address of this gadget's image
,-SeiectRender (If not NULL, supply an image The Memory Location Assembler Listing
dc. l C in CHIP rr.em)
dc. l PotTxt Circle 107 on Reader Service card.
;GadgetText BoolFts:
dc. w 60,10, 60, 0, 0, 0,0,10,61, 10, 61,1, 62, 1, 62, 11, 1,11
dc. w 0,0 LET ACDA open your redl wwrld ¦iwhwl 2, 0 0 9 BoolPts 0
16SE,DDI 12-bit ADC cham-U UKHl mmx thrajgf* rt 2
Prograammfclr Cain (PCI Options 2 12-bit wuHiplyirq DAC
outputs 3 16-bit programmable timer* 32 TTL compatible
Digital 10 bits compatible SI775 SI895 with PC
dc. b 1 ,-FrontPen
dc. B 0 ;BackPen
dc. B 0 ; JAM!
Dc. B 0 ,-paa byte
dc. W 3 ;LeftEdge
dc. w 12 TopEdge
dc. 1 TextAttr ,-Font Attribute
dc. 1 POT ,-ptr to String
dc. l 0 ;Next!ext, if any AnigaGPIB (IEEE-488) fcr this gadget
Proto-5k DigiScope DigiScope is a digital storage
oscilloscope mjlator that worts with all of our
data-acquisitton products and all parallel-port digitizer*.
It operates 16 independent user-defined buffers, has
estersiwe DV* and graphics capabilities and a roaplete
spectral analysis package. DigiScope is completely Amigatiied
and will keep the competition at a distance for some time.
1139. 95 Introductory Price We also Carry Hitsiiiishi and Shtrko
Color Printers 1 Drivers ACDA HARDWARE AMD ScftUARE OEMO
DIM 125 ,*leftEdge, TopEdge .-Width, Height ;Depth
;ImageData (trust point to ,-PlanePick ;PlaneOnOf£
;NextImage ProtO-40k, Proto-5k, AmigaGPIB, AaigaViev,
DigiScope, and Ami gam are registered trademarks of ACDA
Corporation, ACDA is frequently ipdating its products and
reserves to right to change specifications and prices at
any time without notice.
COCopyright 1989 ACDA Corp, 48, 6 1 0 1 0 0 a CHIP mem block.)
Circle 104 on Reader Service card.
;Since an AUTOKNOB, we don't ;nor do we need any image cat initialize Proto-5k is a single channel S.5 Khz A D data-acquisition syStea with *1, and xlOO input gain ranges, real-tiw LED signal level histogram, and test-calibration switch. This paraltel*port device fits all Aaigas and has its cun ¦daisy-chain para I lei - port. Cones with C source driver and many sample application programs, uorks with DigiScope.
1279. 95
dc. l 0
dc. l myPotPropInfo2
dc. w I
dc. l 0 mySrrGadget: AmigaGPIR is a Central Purpjse Interface Bus
(IEEE-ISA} card for the A2000 that feature* all of the Talker
Listener Controller functions of the IEEE-AM stvwferd.
One Amiga can connect and control up to H other GPIB instruacnts or Aaigas. C source driver and deso* applications included. S495 A cctnptere package of Fast Fourier Transform Soutines and windowing fixictions. Includes C source.
SI 52 AmigaFFT Finally, a standardized OBJECT-0MIEMI ED INTUITION C nterface that incline* all CADGET types (with automatic ' jat exclusion), UlttOUS, MENUS, REQLNSTERS, Cu* lex multiple window EVENTS, SCREENS, LATERS. IlTAAPS. AIL IMAGE TTPES, LOW LEVEL GRAPHICS, and IfF. Manx and Lattice ctmpat iblr libraries, (her 100 routines and macros.
Extensive doc and large example directory. Reduces program Code size significantly. AmigaWarld't C programing library of choice (Sept Oct 19ST. P28).
* 79.95
• ACDA Corporation i I 720 Belle n?*de Are ¦setmMet, NT 117J3 I
(516) 6fl9 J722 Amigaview 2.0 myPotPropmfol: dc .w 2 dc .w 0 dc
.w 0
dc. w 16584
dc. w 0
dc. w 0,0,0,0,0,0 mypotproplnfo2:
dc. w 5
dc. W 0 dc .w 0 dc .w 0 dc .w 0
dc. w 0,0,0,0,0,0 myPotlmagel;
dc. w 0,0
dc. w
dc. w
dc. l
dc. b
dc. b
dc. 1 myPotImage2: ds.b 20
dc. b
dc. b
dc. b dc .1
dc. l PotTxt ,-POtFlags = FREEHORIZ ;HorizonPot ;VertPot
,-HorizonBody ;Vert?otSody ;Intuition's Variables ,-PotFlags
= FREEVERT [AUTOKNOB myStringlnfo:
dc. l myBoolGadae' dc .w 127 dc .w 185
dc. w 283
dc. W 9 dc .w 0 dc .w 1 dc .w 4
dc. l myStrBorder
dc. 1 0
dc. l 0
dc. l 0
dc. l myStringlnfo dc .w 2
dc. 1 0 lyBoolGadget:
dc. l 0 ;T
dc. w 20
dc. w 160
dc. w 61 dc .w 11 dc .w 0
dc. w 5101 dc .w 1
dc. l BooIBorder
dc. 1 0
dc. l 0
dc. 1 0
dc. l 0
dc. w 3
dc. l 0 ’lags = GADGriCOMP STRING
dc. l StrBuffer ,- Buffer
dc. l UndoEuffer ;optional UndoBuffer dc -w 0 ,- Buf ferPos
dc. W 40 ,-MaxChars (inc NULL) (you determine dc .w 0 ;DispPos
dc. w o o o o o ,-for Intuition
dc. 1 0
dc. l 0 ,-LongInt (for string integer gadg)
dc. l 0 ,-AltKeyMap (optional) StrBuffer ds.b 40 ;40 byte buffer
Undo3uffer ds.b 40 ;for undo (optional) StrPts:
dc. w C,0,287,0,287,12.0,12,0,1,286,1,286,11,1,11,1,1
myStrBorder: field is 0 in the last gadget GADGHCOM?
BOOL dc .w
- 4,-3 ;initial XY
dc. b 1,0 ,-ForePen = dc .b 0 ,-DrawMode dc .b 9 ;Count
dc. 1 StrPts ;Vector
dc. l 0 ;NextBorder PotlmageData: ;This data needs to be in CHIP
dc. w -1, 0,-1,-1,C,-1,0,-1,0
dc. w 0,-1,0,-1,0,-1,-1,0,-1 POT dc.b 'POT',0 ¦AC- The Command
Line by Rich Falconbtirg T gfbe dd Enhancing the cot This
month I will continue coverage of Tshell, a new Amiga program
that will enhance die command line environment. Because of
the depth of this program, I have chosen to spread this
review over two issues rather than just washing over the
highlights in a single article. We continue this month widi
the path command.
The Tshell PATH command initially gets a list of the paths currently established by AmigaDOS. Directories added to die search tree using the Tshell PATH command will only be seen by the shell. The new paths are not returned to the operating system.
) path path_one path_two path_three In the current implementation, there is no provision to remove a path from the list or change die order of priority.
The PRI command is similar to the AmigaDOS CHANGE- TASKPR1 command, but it also lets you use the task ID number displayed by the TASKS command (covered later) to identify the process to change. This is especially handy for those programs diat are begun in a detached CLI at a high priority. The Tshell TASKS command can display the ID number used by die system; die PRI command may be used to change its priority.
The PRINT command is a powerful facility for sending data to the printer.
PRINT Command Line Options b Boldface c Condensed cl Double strike e Elite E Enlarged j 1 Italics 1 Letter quality P Proportional font h Print the file name at the top of each page s Skip count at bottom of the page q Ignore escape sequences (see below) A text file may be formatted with embedded escape characters to perform the functions shown above plus: s Subscript S Superscript u Underline n Restore to default mode (determined by command line parms) The backslash character starts an Escape sequence.
If more than one print job is submitted, the others wait in a loop, checking the availability every ten seconds. If the printer is still busy after approximately 15 minutes, die job will exit and a message will be displayed. Unfortunately, a small procedure command line environment must be defined to execute print in the background as it does not do this by default. If no file name is given, die PRINT command may be used much like a typewriter.
The PRINTF command can be used to produce formatted output. The syntax of this command is similar to its C language equivalent. At present, only die %s specifier is operational.
The PROCS command lists currendy defined alias procedures. This is handy for procedures you may define on-the-fly and would like to save to a file to be used later. By redirecting the output to a file, you can redefine the procedure by executing that file. Procedures, and script programming in general, are a complex part of Tshell. If there is any reader interest, let me know- and I will cover the topic in greater detail in the future.
The PS command is similar to the AmigaDOS STATUS command. It produces nearly die same output. If the -1 switch is supplied, the PS command will also display the task ID associated with each process.
The PWD command is used to display the current default directory. This is necessary because, as we learned last issue, die CD command entered alone v ill return us to the starting directory, or the HOME directory if defined. It is easiest to remember diis command as “print working directory”.
The RJEAD command captures input from die keyboard and stores that data in a variable. The newline character (Carriage Return) is seen as die terminator.
The RECEIVE command adds a new1 dimension to the already robust Tshell environment. This command causes the current shell to wait for information on its public message port.
This port may be used for interprocess communication and to pass information between CLI processes widi die aid of the companion command, SEND. The SEND command uses the name of die public message port of another process to communicate. The IPC messages are implemented as Arexx-compatibie RXCOMM messages with the RXFF_TOKEN flag set. String and funcdon message types may be supported in a future release.
It is often convenient to have some means for passing multiple arguments to a command and to be able to selectively choose from a list of supplied values. The Tshell SHIFT command gives us this flexibility. Each supplied value is indicated by a numerical variable prefaced with a dollar sign. For example: SO SI 52 53 54 $ 5... POSITION ZERO is the name of die command issued.
The positions that follow-- will hold die parameters used w-ith the command. To select from this list you need only supply the SHIFT command wnrh a positive or negative increment value such as: ) shift 3 Tliis command also returns a value that may be used to determine the current position in the parameter list.
The SLEEP command is a simple way of pausing execution for a given number of seconds.
The STACK command is functionally similar to the AmigaDOS STACK command. If a value is given, the stack size will be altered to this value. Otherwise, the current stack size is displayed.
The following commands are similar to their C language counterparts. They are used to manipulate character strings in a variety of ways.
STRCAT Joins strings together as one STRCSPN Returns the position of a character within a string STRLEN Returns the length of the specified string STRSUB Returns a substring within a string By combining these commands in various ways, you can extract and manipulate information from variables. To exercise these (and at the same time provide me with some useful routines), I wrote some procedures to give me a UNIX-type of login facility. The following scripts are neither elegant nor very secure, but they do demonstrate some of the features available in Tshell. This provides me with several
captive environments that set up aliases and defaults needed for several programs.
Since I have hard drives on my system, I'm not too fond of the multiple start-sequence route. In a production environment, booting the system every so often is an unacceptable option.
The procedures shown let me set up separate processes with specific characteristics.
The following file handles the logins: cd SYS: echo -n " n e[31cilocin: ’’ ulogir. = 'read1 if (ulogin = ; login echo -n "password: e[30n" upasswd = 'read' uid = 'grep -f Sulogin s:passwd’ if (uid “ ; echo " e [31minvalid login" ; login nn = 'strsub uid (strcspn uid "1")' pw = 'strsub uid (strcspn uid *!*) (strcspn -n 2 uid "I") ' gp = 'strsub uid (strcspn -n 2 uid "!") (strcspn -n 3 uid "!")’ ud “ 'strsub uid (strcspn -n 3 uid "!") (strcspn -n 4 uid "I") 1 ds = 'strsub uid (strcspn -n 4 uid "!") (strcspn -n 5 uid "!")’ upl = 'strsub -t ud (strcspn ud “!") ' up - 'strsub upl (strcspn upl
"!")' if ((]SupasswdSI == pw) &£ [ulogin == un)) echo " e[31m Logged on to Amiga on" 'date' echo " n n n" clear -v "upasswd" "pw" "ulogin" "upl" "ud" receive -n un f change the name of the port to the user name cd up if test -e .profile ; .profile else cho " a n e[31minvalid login" ogin The following file handles logging out: echo "logged out on" 'date' if $ 1 = "-c") i exit ; echo 'exit' else ; s:login The following file contains all the user information checked on each login. Its format is similar to that of a standard UNIX password file.
Root tasiigalOI ! dhO c tsh!
Syslproll! dhO system 1 dhO c tsh!
Wplwriter!13 01 dhl wordperfect ! dhO c tsh!
Sbp!gandalf!101! ah2 superbase 1 ahO c tsh!
Cxferlxfer1200! ah2 tp vax_xfers ! ahO c tsh!
Cadligr12OH dh9 introcad l dhO c tsh!
Art'painter!300! dh9 paint ! dhO c tsh!
Dtp!writer!110! ahl PageStream ! dhO c tsh!
Mplspread!400! dh9 Maxi?lan ! dhO c tsh!
Plog!igr!110! dh2 superbase Intergraph !dhO c tsh!
The format used is: login_naine!password!group_nuinber !home_directory! Shell!
I have included a group classification for future use. The information in this file is compared to that entered. If a valid login and password combination is found, the login script will look for a .profile file in the directory defined in the home_directory field. If it exists, it is executed. Here is a sample .profile file for Lhe wp login: This is s USER login file to set up user specific alias and such.
HOME = DR1:WORDPERFECT echo " n e[33m Welcome to Amiga WordPerfect n n" setfont Amiga 8 assign WP: 5HOME assign PRINT: W?
Assign docs: w?:DOCUMENTS assign books: Docs:3ooks tel := cd docs:general articles wp & This file equates the HOME variable to the user directory, changes the font (WordPerfect gets ugly with anything other than an 8-bit font), and starts the program as a background process, indicated by the ampersand. This is much the same as saying RUN WP and is the recommended procedure for starting background processes. Why all this? First, I have a dedicated command interpreter window' that places me in the directory of the program I am using. Second, with the HOME variable defined, I can move all over
the disk and return to my login directory by simply entering “cd”. The script then automatically sets up aliases, paths, and logical names needed for the program. Using this method, I can save on boot-up time by not having to assign every single thing each time I boot. Lasdy, it’s a simple way to establish a specific environment for different users especially if they are not familiar with the computer, Tire TAIL command is extremely useful when you are reviewing large text files and need to see something towards the end of the file. Normally, you would have to read through the entire file
until you reach the part in which you are interested.
Entering “tail” with an optional numeric value will cause the entered value of lines from die end of the file to be displayed.
The default is 10. To see more (or less) enter a value such as: ) tail -50 test.c This will print the last fifty lines of the file test.c. The TASKS command lists the processes currently in die system. It is similar in some ways to the PS and AmigaDOS STATUS command except that it will list all tasks that are running. The other two commands will only display tasks associated with a Cli process. The AmigaDOS Exec is the controller of die multitasking operating system. Ail processes are Exec tasks but not all tasks are CLI processes. Confusing, huh?
The TASKS command gives us a more realistic view of what is currendy running in the system. It’s curious that the audior chose to provide this as a separate command rather dian including a “-e" switch to the PS command diat would do die same diing. This would keep the user interface closer to die UNIX shell environment that it emulates. This switch plus a “-f ’ and or 1” switch would make the PS command much more functional.
The TEST command is nearly as complete as its UNIX counterpart but has several important differences. This command may be used to determine several tilings about files, directories, and variables.
More than just a Hard Disk Backup Utility TT7L TEST Command Supported Switches
- s Size of the file
- b Number of disk blocks In the file
- t Modification time and date of the file
- n Returns TRUE if the argument Is a number
- V Returns TRUE if he argument Is defined as o shell vanoble
- p Returns TRUE if the argument Is defined as an olios procedure
- B Returns TRUE if the file or directory exists
- f Returns TRUE if it is a file
- d Returns TRUE if it is a directory
- x Returns TRUE if the file is an executable (binary load file)
- R TRUE if it exists and has Read permission
- W TRUE if It exists and has Write permission
- E TRUE if it exists and has Execute permission
- A TRUE if the Archive bit Is set
- P TRUE if the Pure bit is set
- S TRU E if the Script bit is set
- H TRUE if the Hidden bit is set As you can see, diis command
has significant utility. UNIX purists will argue that an
existing sheil script will not work as expected if this command
is used. Agreed. This is true of many of the Tshell commands. I
would prefer that a greater degree of compatibility with the
UNIX shells be maintained. The properties that are
necessarily unique to the Amiga could use either additional
switches or new commands.
If you intend to use existing UNIX shell scripts with Tshell (and riiat’s likely to be the case), you will spend a significant amount of time in conversion. This is unfortunate given the power available. If you are just looking for a more powerful script execution environment for your Amiga, I think you will be very happy with Tsheli.
The TIME command may be used as a stopwatch. It will display the number of seconds that have elapsed since the last time it was reset widi the “-r” switch.
The TSH command is used to invoke a new shell. The full command line specificadon is as follows: tsh [-w] i-i(ii scrip-] !-r ramdiskdir] [ s] £-S] [-Lpixel] [-TpixelJ [-Wpixel] [-Hpixel] The brackets indicate optional parameters.
Rapidly copies directories and Files to floppy disk IT1 A CT*Copies directories aixl files from Hard Disk lo Floppy Disk at up to !
Jei SyLi.MegaByte per minute. Can format, verify, AND fiii a new floppy disk with files in less time than it takes AmigaDOS to format a new disk!
O API? Other Hard Disk Backup Programs this fast create NON standard disks cj Ar lh ti,;(I nn|y UW(j by tlieir program NOT ExpressCopy! Express- Copy creates STD DOS disks that look just as if you had done a copy from your Hand Disk lo floppy. If your Hard Disk failed, tile backup disks can be used NORMALLY! This gives you a SAFE and EASY way to ac- cesss important files you backed up.
Select files by tiicir DateStamp, pattern figuration files. Eillier Normal or Fast File matching, Archive Bit, and by source di- compatible disks can be written. Spocifi- rectory. All file attributes I DateStamp, Pro- cally designed for effective multi-tasking, lection Bits, and FiieComment) are re- Backup restoration can be done using any mined. Options for setting the Archive hit File copy program, your favorite Directory for incremental backups, verifying the data Utility, or by ExpressCcpy's Restore prowritten to floppy disk, and estimating the gram, number of disks needed for the
backup. Up Ex press Copy has no ccpy protection and to 4 copies of die backup disks can be ere- can be used from both the CLI and Work- alcd at a time, or disks can be pre-loaded in bench.
Up to 4 disk drives. New disks arc automat- Fully documented with a 65 page manual daily formatted and verified. Easy recov- which includes a 25 page section with eiy if a bad diskette is found, Parameters to help and ideas on how you can better or- bc used for backups can be saved in con- ganize and manage your Hard Disk.
Express-Way Software, Inc. All (hc.se features and sjieed for ONLY: PO Box 10290 Columbia, MO 65205-4005 US (314)474-2984 $ 44.95 Requires an Amiga with al least 512k ram and Version 1.2 or higher of AmigaDOS Amiga. AmipalXTS. And Workbench are trademarks of Comrodore-Arnica. Inc._ Circle 122 on Reader Service card- TSH Options
- w Change the existing CLI window to a Tshell window. Take over
this window.
- i Start the shell and read "script", then pass control to the
- ii Same as -i. But exit at the end of the script
- r Use a custom RAM disk command directory
- s Get input from the standard Input instead of interactively
- S Append each line of the command history to the file tsh.out.
(Useful with -ii above)
- L Left pixel position of the shell window's fop left corner
- T Top pixel position of the shell window's top left corner
- W Width of the shell window in pixels
- H Height of the shell window In pixels The “-i” and “-ii” may
be used to define a specific startup file to be executed. The
“-ii” method is useful mainly for background shells, Tshell
will also look for three other files when invoked. If they
exist, the shell will execute each one.
Srinic.tsh [Only read when the first shell is started] s:def.tsh [Always read] s:ninit.tsh [Read as a default file for the "-j." Switch] The “-s” switch will cause the shell to get its input from somewhere other than the command line. This is useful for data coming from the SER: port or other device. Most of the other switches are self-explanatory.
The VARS command displays all currently defined shell variables. Since the variables are listed in the same manner used to define them, you can redirect the VARS command to a file, thus presenting a number of interesting possibilities.
’’I've written the best and fastest backup program on the market."
My name Is Walt Soden. I've been a programmer for thirty years, and 1 know how important it is to back up your hard disk. But when 1 looked for a good backup program for my Amiga, I found they took too much of my time managing the backup disks. I knew there had to be a better way so I spent a year writing and perfecting what I sincerely believe to be the best backup software available.
Index of Amazing Advertisers Discover something interesting?
Need more information?
Please use the Reader Service Card in every issue of AC to contact those advertisers who have sparked your interest. Advertisers want to hear from you. This is the best way they have of determining the Amiga community's interests and needs. Take a moment and contact the companies with products you want to know more about.
And, if you wish to contact an Amazing Advertiser directly, please tell them you saw their advertisement in: EZ-Backup Does what Quarterback can't.
EZ-Backup does ALL the work. EZ-Backup knows which files to back up, how many versions to save, which to erase and where they are in the backup set. So you only have Lo keep one set of backup disks, period.
Your files will always be there, safe and sound in the standard AmigaDOS format.
A special offer.
Is it the lowest price and the best value in backup software? You be the judge. EZ- Backup comes with free phone support. If you have any questions, just pick up the phone and you can talk to me personally. I’ll send you a working demonstration copy of EZ-Backup (limited only in the number of files it can back up) for only $ 5.00. If you like it, then take advantage of the special discount offer explained on the demonstration disk or you can buy the full version from your local Amiga dealer. If you don't think it's the best, most convenient backup software you've ever tried, send back the disk
and I'll refund your five bucks.
EZ-Soft, 10668 Ellen Street, El Monte, CA 91731, (818) 448-0779.
Quarterback Is a trademark of Central Coast Software.
Rz i Advertiser Page Reader Service Number ACDA 92 104 AmiEXPO 65 115 Anivision 45 150 AROCK Computer Software 44 133 Arrakis 61 108 ASDG 101 112 B & B Computers 97 110 Central Coast Software 5 145 Computability 63 117 Consultron 90 156 Day’s 103 171 E-Z Soft 96 193 Empire Graphics SO 151 Expans ion Technologies 21 120 Express-Way Software 95 122 Great Valley Products 9 158 Joe’s First Company 75 180
M. J. Systems 12 176
M. J. Systems 79 169 M2S 26 181 Micro Momentum 77 125 MicroBotics
13 109 Micromiga 70 182 Moonlight Development 6 190 Musicomp
40 159 NewTek CIV 102 Omnitek Computers International, Inc. 54
136 One Byte 87 135 Pioneer Productions 40 183 Poor Person
Software 49 127 Pre’spect Technics, Inc. 46 165 Safe Harbor 73
134 Sedona Software 30 119 Software Advantage Consulting Corp.
105 131 Software Integration Solutions 40 184 SunRize
Industries 84 191 Supra 7 106 Tangent 270 2 153 Tensor
Productions 55 141 The Bit Bucket Computer Store 107 139 The
Memory Location 91 107 Circle 193 on Reader Service card.
96 A mazing Computing V4.10 ©1989 AudioMasterll Aunt Arctic Adventure Battle Chess Battle Tech Baud Bandit Blood Money Deluxe Music 2.0 Deluxe Paint III DigiPalnt III Double Dragon Dragon's Lair Dungeon Master FA 10 Interceptor Falcon Kind Words Licence To Kill Lords of the Rising Sun OutRun Phasar Pioneer Plague Publisher Plus Rocket Ranger Rush N Attack Sinbad & Throne of Falcon SimCity Sonix
563. 95
25. 95
34. 95
36. 95
32. 95
29. 95
72. 95
109. 95
69. 95
29. 95
41. 95
27. 95
37. 95
36. 95
59. 95
29. 95
34. 95
34. 95
63. 95
28. 95
49. 95
35. 95
29. 95
19. 95
31. 95
56. 95 :&!
Tsh_initced If not set, the file "s:init.tsh" will be executed by the first shell BlockPen Menu bar color DetailPen Menu bar text color All these commands and their various capabilities combine with an environment that supports redirection and pipes, variable assignment, mathematical and boolean operators, flexible wild carding, multi-line alias and procedure construction with hill decision control, background processing, function key assignments, system environment variables, startup initialization files, and an in-line editor. Surely all this is enough.
But wait! The Amiga is a graphics powerhouse. Shouldn’t that graphics capability be accessible to the average CLI user?
The people at Metran obviously think so. They have included two pow'erful commands making this possible. The INTUITION and GRAPHICS commands interface to the Amiga’s ROM Kernel INTUITION and GRAPHICS libraries.
The INTUITION command functions include: Activatewindow win AUTOINDENT Indent procedures levels COLORS Allows escape sequences to change colors DEFCD Enables the "implied" cd command HELP Controls the HELP key operation PAUSE Controls the "more" facility FILEOK Ignores errors in scripts PR0C0K Ignores errors in procedures LINEOK Continues execution on multi-command lines if a command fails MAXPAND Allows alias procedures in alias procedures PROMPT Command prompt PROMPTI Secondary prompt HOME Home directory HUP Cursor up control HD OWN Cursor down control HNEXT Next line control HNUM History
buffer size OBASE Numeric base used TS Tab spacing value TLB IN Built-in command control flags TLSYS Code segment control flags The WC command is used for counting characters, words, or lines in a file. Other utilities include IC and FC, an integer and floating-point calculator respectively, and DIMMER, a screen-blanking program. Both calculators have extensive command line operators and are designed for interactive computation.
I mentioned system variables last time, and lauded the configurability they allow the Tshell user. The following is a list of those variables and what they do: Read Only variables _scr Workbench screen pointer _win Tshell's window pointer _rp RastPort pointer _con ConUnit pointer _maxx Window width _maxy Window height maxc window width in characters _maxr Window height in characters _curc Cursor column position _curr Cursor row position _random A random positive 32-bit integer System Environment Variables Circle 110 on Reader Service card.
DisplayBeep _scr MoveScreen _scr x y MoveWindow _win x y RefreshWindowFrame _win ScreenToBack _scr ScreenToFront _scr SizeWindow _win x y WbenchToBack WbenchToFront WindowLimits _win xmin ymin xmax ymax WindowToBack _win windowToFront _win The “_win" Is a read-only variable that is a pointer to the shell’s Intuition Window; “_scr” is a pointer to the Workbench Screen. The other arguments must be numeric.
The GRAPHICS command functions include: ClearEOL _rp CiearScreen _rp Draw _rp xl yl DrawEllipse _rp cx cy rx ry Move _rp x v RectFill _rp xl yl x2 y2 SetAPen _rp fcolor SetBPen _rp bcolor SetRast _rp clrcoior The “_rp” is a read-only variable that is a pointer to die Tshell Window's RastPort. The following script is one of the demo files included on the distribution disk and is a good example of the real power Tshell can provide.
Spirit SC 501 Vi Meg.
Trapdoor internal expansion wilh clock calendar for Amiga 500. 0K 63.95 plus shipping and handling Don’t see it here? We’ve probably got it. Call us.
Spellbound 28.95 Super Scramble 29.95 Sword of Sodan 35.95 Test Drive II 29.95 The Three Stooges 35.95 Total Eclipse 29.95 Triad 29.95 TV Sports Football 34.95
V. l.P. Virus Protection 29.95 Where in World is Carmen 32.95 Who
Framed Roger Rabbi! 32.95 Who! What! When! Where! 65.95
Enhancer Amiga DOS 1.3 20.95 Accessories & Hardware Epyx
Joystick 14,95 ErgoStick Joystick 19.95 Internal 3Vz" Floppy
Drive for 2000 99.95 California 3,5" drive 139.95 Supra 2400
Baud Modem 129.95 Your Amiga Source PO Box 575719 Murray, Utah
84157-5719 1 800 347 8004 FREE mouse pad with orders over
$ 100.
COMPUTER There are fabulous savings on all these goodies TAKE A BYTE OUT OF HIGH PRICES!
Check the arguments for validity if (St 1) II (I (test -n SI)] ( echo "'hilbert' draws an area-filling Hilbert fractal curve" echo "usage: hilbert level'" echo "The argument must be numeric; try ‘hilbert 31" echo -n "Note: you must have the external ‘graphics' command " echo "somewhere in your search path," exit -1 } if $ 1 1; echo "argument mu3t be 0"; exit -2 t initialize some variables scale the drawing to fit inside the current window blocks = ((1 « 51) - 1) t the size of the figure, in line segments width and height scaling numbers sx = ((_maxx - 32) blocks) sy = ((_maxy -
34) blocks) if (sx 11 II (sy 1) (
* degenerate figure; height or width of 0 pixels clear -v "sx"
"sy" "blocks" echo "try a smaller argument or a larger window"
exit -1 1 px - 3; Py = 14 J the current position lupper left
corner of Tshell window) Vx = 1; Vy = 0 "velocity": the
distance to move at this step color =2 the graphics color to
use when drawing the line make ROM kernal graphics interface
AmigaDOS resident load -a graphics graphics Move _rp ?x Py I
get cursor to bottom of window, then print a message clear -w
clear the window; puts cursor on top line while curr jnaxr;
echo prints newlines until at the last line print a label
only if it will fit without wrapping to the next line label =
"Hilbert figure " if maxc [3 t (strlen label)); echo -n label
clear -v "label" S unaefine label; we don't need it any more
Now define some procedures: procedure "go" t cycle the
graphics color and draw to the new position go : = if ++
color) 3; color = 1 graphics SetAPen _rp color graphics Draw
_rp (Px += (Vx * sx)) Ipy +“ (Vy * sy)) } S procedure "turn";
determine new velocity values for next line i SI is distance;
direction is determined based on current direction (the
direction that is affected is the one that is now zero) turn :=
( if Vx == 0 if Vy 0; Vx = 51 else Vx = (- $ 1) Vy = 0 i
else !
If Vx 0; Vy = SI else Vy ¦ (- SI I Vx *= 0 :¦ ) I procedure "H" 51 = level, 52 - direction draw the next level of the figure; re curses K : = if SI “ 0; return turn (- $ 2) H (51 - 1) (- 52) go turn S2 H ($ 1 - 1) 52 go H (51 - 1) $ 2 turn $ 2 go H (SI - 1) (- 52) turn (- $ 2) ) draw the whole thing H 51 1 cleanup; clear definitions of procedures clear -p go turn H f be nice on memory usage; unload the graphics command load -au graphics Tshell includes a powerful editor that has the advantage of being part of the command line environment. It’s difficult to visualize how it operates
without actually using it. Pressing Control E aims the editor on and off. When on, die history buffer can be manipulated with odrer control sequences.
There is still much more that could be said about this program, but I have to stop somewhere. Tshell author Jay Ts is continually adding features and functions drat will make future releases even more powerful. One item on the top of my list is AUX: support. Jay assures me this is in die works. The design of the editor and the character-oriented operadon makes this a very' attractive option. More compatibility with Unix shell syntax would gready improve die program's attractiveness. If diere is enough interest, I will cover more of this program in greater detail in future issues. Next time I
will begin coverage of the new Workbench 1.3 features and additions. *AC* Metmn Technology 1907 Briar Ave., Utica NY
(315) 732 558 Tshcli: $ 50.00 Inquiry *200 by Randy Finch Amazing
Programming Function Evaluator 7 In the process of
converting a 3D function plotting program from BASIC to C,
I realized I would have to write a function evaluator
routine similar to what any spreadsheet would have. To plot
different functions in the BASIC version of the program, it
is possible to stop the program, edit die function, and
then rerun the program. In a compiled language such as C,
however, this is not possible. I needed a C routine that
would accept a mathematical function as a string input and
then evaluate the function at different values. After
perusing a Modula-2 program demonstrating this technique in
the book Software E?igineering With Modula-2 and Ada by
Weiner and Sincovec (John Wiley & Sons, Inc., 1984), I
began writing a similar but more extensive routine in C.
(Note: In order to avoid conflicts in terminology when
referring to C functions and mathematical functions, 1 will
hereafter refer to mathematical functions as equations.)
The routine that resulted from my efforts consists of two externally accessible functions and many static support functions. All diese functions reside in a file entitled FUNCEVAL.C, ¦which is shown in Listing One. The two externally accessible functions are called Convert and Evaluate. Convert transforms a string containing a two-variable (X and Y) mathematical equation in standard notation into anodter string that is in a notation diat can be evaluated more quickly and efficiently (the function Convert is near the end of Listing One). Evaluate accepts two double-precision floating-point
numbers and returns dre value of die equation upon substituting these two values for X and Y. The parameter FunctionString is a pointer to a null- terminated string of unsigned characters. This string should contain an equation in two variables X and Y and may contain any of several transcendental and other function calls such as SIN, LN, SQRT, etc. (a complete list of acceptable function calls and mathematical operators is shown in Table One). FunctionString should be in standard mathematical notation, as the following equation illustrates:
- 12.5 + SIN(X~2) COS (LN (Y) + 2.2e-l) FunctionString can
contain any number of spaces and die alphabetic characters used
for function and variable names can be in either upper or lower
case. The first two support functions called by
Convert RemoveSpaces and strupr -remove all die spaces in the
string and convert all lower case letters to upper case.
CheckSyntax, die next function called by Convert, examines the syntax of FunctionString. CheckSyntax can detect 12 different syntax errors, including illegal characters, misplaced operators, and missing delimiters. These errors are symbolically defined in the header file SYNTXERR.H, which is shown in Listing Two. If an error is detected, the externally accessible global variable SyntaxErr is equated with an appropriate error value and a pointer to die offending character in FunctionString is then returned. If no error is found, SyntaxErr is set to FALSE and a zero is returned.
After FunctionString passes the syntax check, it is copied to another string, fstr. This allows the original form of the equation (with spaces removed and all alphabetic characters in upper case) to be preserved in FunctionString while modifications are made to die copy in fstr.
The first modification to fstr is performed by the support function ConvertConstants. This function initially scans fstr for unary pluses and minuses and places a zero in front of each sign. This action wrill make further processing of the string easier. Next, ConvertConstants scans fstr once again, this time replacing all numeric constants with a one-byte symbol (within a range of 128 to 255) and placing the actual value of the constant in an array for future reference. The maximum number of constants allowed in die string is 128. If fstr contains more than 128 constants, SyntaxErr is set to
TOOMANYCONSTS and FALSE is returned. Otherwise, TRUE is returned.
The next function called by Convert, ConvertFunctions, scans fstr and replaces all transcendental and other function names with a one-byte symbol within a range of 1 to 13- These symbols are defined at the beginning of FUNCEVAL.C. No error checking is necessary in this function because illegal functions will have already been detected in CheckSyntax, Therefore, ConvertFunctions is a void function.
The last support function called by Convert, InfixTo- Postfix, converts fstr which is still in standard mathematical notation and has its constants and function names substituted widi one-byte symbols into a postfix notation. This is the notation used by die computer language Forth and by Hewlett- Packard calculators. InfixToPostfix is a relatively complex function that reads the string fstr character by character and, based upon the precedence of the operators, either places the character in the static global string NewExpr or places it on a stack for later processing. If the stack underflows
or overflows during processing, SyntaxErr will be equated w'ith STACKUN- DERFLOW or STACKOVERFLOW and FALSE will be returned.
When processing is complete, NewExpr will contain the madiematical equation in postfix notation and TRUE will be returned.
The Convert and ConvertConstants functions have several lines of code which will only be compiled if the symbol DEBUG is defined. These sections of code will print the equation at various points during its processing. Let’s look at an example step by step.
Suppose the function is originally entered by die user as follows:
2. 1E-1 + K*y - sin(-.8*X) ln[+Y + 100) The following steps
will convert this function into symbolic form with postfix
notation (the support function that accomplishes each step
appears in parentheses): STEP 1. Remove all spaces.
2. lE-l+x*y-sin(-.8*X) ln(*Y+100) STEP 2. Convert lower case
letters to upper case, (strupr)
2. 1E-1+X*Y-SIN(-.8'X) LNI+Y+100) STEP 3. Check syntax. If no
errors are detected, processing continues. No changes are made
to the string. (CheckSyntax) STEP 4a. Put zeroes before unary
pluses and minuses. (Con- vertConstants)
2. 1E-l+X*Y-SItJ(0-.8*X) LN(0+Y-100) STEP 4b. Replace constants
with one-byte symbols within a range of 128 to 255. Since
these are non-printable characters, each character in the
string will be printed below as a decimal value. The actual
character or constant it represents appears beneath the
decimal value. (ConvertConstants) 128
88. . 43 88 42 89 45 83 73 78 40 129 45 130 42
21. E- X.
- 1 + X Y SIN ( 0 .8 ...41 47 76 78 40 131 43 89 43 132 41 ...
L N ( 0 + Y + 100 ) STEP 5. Replace function names with one-byte symbols within a range of 1 to 13. (ConvertFunctions) SIN, represented in STEP 4 by die sequence (83 73 78], becomes simply [1], LN, represented in STEP 4 by the sequence [76 78], simply becomes [12], STEP 6. Convert die string to postfix notation. (InfixToPostfix) 128 88 89 42 43 129 130
2. 1E-1 X Y * - 0 .8 45 1 131 89 43 132 43 SIN 0 Y + 100 + LN The
final form of the equation in this step resides in die string
NewExpr. A pointer to this string is returned by Convert, The
function Evaluate (at die end of Listing One) can be used to
evaluate the equation at different values of X and Y. Because
the equation is now in postfix notation, Evaluate is a rather
simple routine. It simply reads the characters in NewExpr
sequentially. If a character represents X, Y, or a Table One:
Function Calls and Mathematical Operators Acceptable to
FUNCEVAL.C Functions SIN (sine) COS (cosine) TAN (tangent) AS
IN (arcsine) ACOS (arccosine) ATAN (arctangent) SINH
(hyperbolic sine) COSH (hyperbolic cosine) TANH (hyperbolic
tangent) EXP (exponential) SQRT (square root) LN (natural
logarithm) LOG (logarithm base 10) Operators a (raise to
* (multiplication) (division) + (addition)
- (subtraction) () (used to group operations) Note: The standard
hierarchy of operators prevails.
Constant, its actual numerical value is pushed onto a stack. If a character represents a function, Evaluate will pass the number on the top of the stack, along with the character symbol representing the function, to the Calculate function. The result of applying die number to this function will be returned. For example, if the number equals 100 and the function is LOG, a value of 2 will be returned. This return value is then pushed onto die top of the stack.
If a character represents an operator (a, +, -, *, or ), die top two numbers on the stack and die operator symbol are passed to Calculate. The result of performing the operation on the two numbers is returned. For example, if the number on top of the stack is 24, the next number on the stack is 12, and the operator is , Calculate will return 12 24, or 0.5. Notice that the operation is alw'ays performed in the following order: (Second number on stack) Operator (Top number on stack) The above procedure continues until no more characters remain to be read from NewExpr. At this point the value
of the equation with the appropriate values of X and Y substituted will be on top of the stack. This value is returned by Evaluate.
Please note diat Evaluate does not check for illegal mathematical operations such as the square root of a negative number or a multiplication that causes an overflow. The methods for handling these types of errors vary widi different compilers. It is left up to the reader to add this form of error handling (if it is needed), A program entitled TESTFEVL.C is shown in Listing Tluee.
This program tests the Convert and Evaluate functions. The user is allowed to input a mathematical equation (up to 255 characters long) along with values of X and Y. The program will print the result of evaluating the equation. Unfortunately, the scanf function (from the C library) does not allow spaces to be entered in a string, as they are used for delimiters; therefore, you will not be able to see the RemoveSpaces function in action. (Note: If spaces are entered as part of the equation, the program will behave erratically as characters after the spaces are used as input for later scanf
If compiling FUNCEVAL.C with DEBUG defined, each stage of tire equation conversion will be printed to the standard output. You can play to your heart's content. Make sure some equations that are syntactically incorrect are typed in to see how die error detection works. The equation will be printed, an arrow will appear below dre offending character, and an appropriate error message will be printed.
FUNCEVAL.C and TESTFEVL.C are written generically and have been successfully compiled, linked, and executed on an Amiga 1000 using Lattice C v4.01 and v5.02, on an IBM AT using Microsoft C v4.0, and on a Cray XcM P supercomputer using die Cray C compiler (with one modification). If you are using an older C compiler, some of the standard library functions used in this program may not be available. If you have any questions regarding the information presented in this article, you may write to Randy Finch, c o Amazing Computing, P.O. Box 869, Fall River, MA 02722.
Fast, Compatible, Complete!
• Two high speed RS-232C serial ports for the Amiga 2000. • IBM
PC AT style (full 7 wire plus R! And DCD) connector for each
port. • Send and Receive at 110 to 115200 baud. • Complete
Amiga system software (both Exec and DOS). • Using our
exclusive Serial Dispatcher, any program which uses
"serial.device” can use any port without patches. • Public
domain and shareware software on the distribution diskette. •
One year warranty.
925 Stewart Street Madison, Wl. 5371 3 Incorporated (608) 273 - 6585 ASDG Amiga is a trademark ol C ommodore. Amiga, Inc. IBM PC AT is a trademark ot IBM Corp. Listing One: FUNCEVAL.C
* ************* ¦
* ******
* Convert () converts a string containing a math
* function in two variables, X and Y, to a postfix
* notation string with the numeric constants and
* functions converted to one byte symbols. If any
* syntax errors occur they will be posted in the global *
* external variable SyntaxErr. Definitions are in
* syntxerr.h. *
* *
* Evaluated will substitute the X and X values passed *
* to it and return the value of the function. *
* *
* This program may be freely used for non-profit *
* purposes as long as the copyright notice remains *
* in the code. *
* *
* **********************************************************
* *
* funceval.c v3.0 - Copyright 1988 Randy C. Finch * Circle 112 on
Reader Service card.
DEFINES -’ Idefine NUMSYM 128 function * * Number of constants allowed in Idefine SYMBASE 128 * 3ase value for constants symbols * ¦define STACKSIZE 256 * Stack size * Idefine SIN 1 * Symbol for sine * Idefine COS 2 * Symbol for cosine * Idefine TAN 3 * Symbol for tangent * Idefine AS IN *j * Symbol for arcsine * idef ir.e ACOS 5 * Symbol for arccosine * Idefine ATAN 6 * Symbol for arctangent * Idefine SINH ~ * Symbol for hyperbolic sine Idefine COSH 8 * Symbol for hyperbolic cosine * Idefine TANH 9 * Symbol for hyperbolic tangent * Idefine EXP 10 * Symbol for
exponential * Idefine SQRT 11 * Symbol for square root * Idefine LN 12 * Symbol for natural logarithm * Idefine LOG 13 * Symbol for logarithn base 10 * Idefine NULL 0 * Symbol for null * Idefine TRUE 1 * Symbol for true condition * Idefine FALSE 0 * Symbol for false condition * *- EXTERNAL GLOBALS
- * unsigned char SyntaxErr;
* *****
* *************************
* ************** * INCLUDES * GLOBALS struct CharStack (
linclude linclude linclude lincluae lincluae linclude linclude
ctype.h stdio.h string.h math.h float.h stdlib»h
"syntxerr.h" unsigned char c(STACKSIZE); long top; instruct
NumStack double n(STACKSIZE]; long cop; ); static struct
CharStack cstack; static struct NumStack nstack; static double
Constants[NUMSYM]; static unsigned char CurConstanastatic
unsigned char NewExpr[2561; static unsigned char CpopO if
(cstack.top == 0) return 0; else ( cstack.top; return
cstack.c[cstack.top + 1); ) ) * Cpop * .„-_ FUNCTIONS *
static char CharlnStr(s,cl unsigned char *s; unsigned char c; (
while (*s 1= NULL) [ if *s = c) return TRUE; ++s; 1 return
FALSE; ) * CharlnStr * static void DepositInum) double num;
Constants[CurConstant - SYM3ASE] = num; } • Deposit * static
void Substitutefsymb, ptr, leu) unsigned char symb; unsigned
char *ptr; unsigned long len; 1 "ptr = symb; if (len 1} [ do [
• ptr ¦ *(ptr + len - 1); ) while (*pcr != NULL); ( ) •
Substitute • static void RemcveSpacesIsrr) unsigned char *str;
unsigned char *prr; while (*str 1= NULL) ( if i'str =='')(
ptr = str; do [
• ptr = * (ptr + 1); ++ptr; 1 while ( * (ptr - 1) != NULL);
- str; ) ++str; ) } ’ RemcveSpaces * static void AddZero(ptr)
char •ptr; ( unsigned long len; char *i; len - strlen(ptr); for
(i=ptrrlen-l; i ptr; i)
* i = * (i - 1); ¦ptr = '0'; ( * AddZero * static char Cpush(c|
unsigned char c; t if (cstack.top =¦* STACKSIZE) return FALSE;
else ( t+cstack.top; cstack.cicsrack.tcp] = c; return CRUE; ) )
!* Crush • static unsigned char CtopOfStack(I ( return
cstack.c[cstack.top!; ) * CtopOfStack * static double NropO (
- nstack.top,- return nstack.n[nstack.top + 1]; 1 * Nfop *
static void N?ush(n) double n; ++nstack.top;
nstack.n[nstack.top] = n; ) * Nrush * static char Isrunction
(c unsigned char c; 1 if ( (c = SIN) £S (C = LOG) ) return
TRUE; else return FALSE; ) * IsFunctior. • static char
IsSymboi(c) unsigned char c; i if ((c ** SYMBASE) 44 (c
SYMBASE+NUMSYM)) return TRUE; else return FALSE; ) ¦ isSymbol
* static char Precedence(cl, c2) unsigned char cl,c2; I if I
(CharInStr("+-* ",cl)) 44 (c2 == '*') ) return FALSE; else if (
|CharInStr("+-", cl)) 44 (CharlnStr ["• '', c2) ) ) return
FALSE; else if ( ((cl == '(') Si c2 !- ')')) || c2 == '(') )
return FALSE; else if ( (CharlnStr cl)) Si (IsFunction (c2)) )
return FALSE; else return TRUE; ) * Precedence * static
unsigned char *CheckSyntax(str) unsigned char *str; int
rvumLP = 0 numRP =0; If ( (CharlnStr ('' *AE) ", *str))
(strncmp (str, "EXP", 3) != 0) I if (CharlnStr ('7* '",
*str)) ( SyntaxErr = MISPLACEDOP; return str; ONLY i else if
(*s;r == ) ( SyntaxErr = ILLEGALEXP; return str; lii ft* • ft’
!: ft • • - !••• , ¦ - - • • «fiffi J'Fmtai *fri' k Direct
Cour-led dual AHPllfler for the AH1GA sound.
) else SyntaxErr = MISSTNGLP; return str; ) ) ’ if * for (;;) * forever ' if ("str -- ' (') ++nunLP; ++str; if ( (CharInStr("" ,'E", *str)) &£ (strncmpfstr, "EXP",3) !- 0) ) ( if [*str == 'E' ) ( SyntaxErr = ILLEGALEXP; return str; tl’-lSilriSlj?
} else ( SyntaxErr * MISPLACEDOP; return str; } ) * if » if ( (*str = ’)') (| ("str == NULL) ) SyntaxErr = MISSINGPARM; return str; !
) * if * else if (’str == ')'} ( trnimR?; ++str; if (numRP numLP) ( SyntaxErr = MISSINGLP; return (str-1); ) else if ( (!CharlnStr (")+-* '¦", *str) ) ss (*str 1= NULL) ) ( SyntaxErr = MISSINGOP; return str; ) ) * else if *( else if ( (isdigit(*str)) !! ("str == ) char ExitFlag = FALSE, OneDecimal - FALSE, OneE = FALSE; if ("str =*= ’.') OneDecimal = TRUE; ++str; if (OneDecimal -- TRUE) £6 (!isdigit(*str)) ) SyntaxErr - LONEDECIMAL; return (str - 1); 1 while ( ( (isdigit(*str)) I! (CharlnStr("-E)-+","str)) I I (*str == NULL) ) IexitFlag ) ( if (*str == ( ++str; if (OneE) SyntaxErr
= ILLEGALEXP; return (str-1); ) VISA WASTERCARD : “..... 614-397-5639 Circle 171 on Reader Service card.
Else if (Or.eDecimai) !
SyntaxErr = EXTRADECIMAL; return (str-i); else if (strncmp(str,"EXP",3) == 0) SyntaxErr = MISSINGOP; return str; ) else if ( (!CharInStr(”+-* "£)",*str)) &£ (Iisdigit(*str)) ) ( SyntaxErr = ILLEGALCHAR; return str; ) else ( OneDecimal TRUE; ) } * if * else if ("str == 'E' ) ( ++str; if (OneE) SyntaxErr = EXTRAS; return (str-1); ) else If ( ((CharlnStr *str)) SS ((isdigit(*str)) ) ( SyntaxErr = ILLEGALEXP; return str; } else OneE = TRUE; ) ) ’ else if * else if (CharlnStr*str) ) ( if ( * (str-1) == *Ef )
* +str; else if ( (OneE l| (OneE &£ isdigit ("(str-I))) )
ExitFlag = TRUE; else [ SyntaxErr = MISPLACEDOP; return str; }
} !* else if * else if ( (*str =- ')') II (*str -= NULL) ) (
if (CharlnStr("+-S",* (str-1)) SyntaxErr = ILLEGALEXP;
return str; ) else f ExitFlag = TRUE; ; ) * else if * 1 else (
++str; } * else * ) ’ while * if( !CharlnStr "+-* )", ’str)
&S (*str NULL) ) ( SyntaxErr = MISSINGOP; return str; ] ) *
else if * else if (CharlnStr*str)) ++str; if
(CharlnStr ")Ef-* "", *str)) [| (*str == NULL) ) if
(strncmp(str,"EXP", 3) != 0) SyntaxErr = MISPLACEDOP; return
(str-1); ) ) * else ii * else if (CharlnStr("XY",*str)) !
++str; if ( (!CharlnStr(")+-* "",*str)) && (’str != NULL) SyntaxErr = MISSINGOPRP; return str; ) ! * else if * else if (isupper(*str)) ( if [strncmp(str,"LN",2) == 0) str += 2; else if (strnc.TiD (str, "SINK'1 ',4) == 0) str += ¦ else if (strncmp(str, "COSE" r,4) a t- Q J str += ¦ else if (strncmp (str, "TANK" ',4) == 0) str += ¦ else if (strncmp(str, "SIN", 3) == 0) str += 3 else if (strncmp (str, "COS",3) == 0) str += 3 else if (strncmp(str, "TAN", 3) == 0) str +** 3.
Else if (strncmp (str, "EXP", 3) == 0) str += 3 else if (strncmp(str, "LOG", 3) == 0) str += 3 else If (strncmp(str, "SQRT" ’-4) =»= 0) str +- ¦ else if (strncmp (str.
"AS IN” ',41 == 0) str +- • else if (strncmp(str, "ACOS" 4) == 0) str += ¦ else if (strncmp (str.
"AT AN" ’,4) == 0) str += ¦ else SyntaxErr = ILLEGALFUNC; return str; ) if ('str ;= ' ') SyntaxErr = MISSINGLP; return str; ) ) * else if * else if (’str == NULL) if (numL? numR?) SyntaxErr = MISSINGLP; return str; } else if (numLP numRP) [ SyntaxErr = MISSINGRP; return str; ) else ( SyntaxErr = FALSE; return 0L; !
} * else if * else SyntaxErr = ILLSGALCHAR; return str; } } * for * } * CheckSyntax * static char ConvertConstants(str) unsigned char *str; •: unsigned char *ptr; ptr = str; if ( CharlnStr*ptr) ) ( Addzerc (str) ; ptr += 2; ) while ( *ptr )=¦ NULL ) ( if ( (CharlnStr,*ptr)) 4S (*[ptr-l) == '(') ) AcdZero(ptr); ++ptr; ) ’ while * if DEBUG printf("NnAddZero: %s n", strl; endif ’ begin block * unsigned long j; unsigned char numstr[80]; double number; ptr - str; CurConstant = SYM3ASE; while ( *ptr i= NULL) ( if [ [’ptr == ',') |1 (isdigitCptr)) ) ( unsigned long lenrum =1; while (
IcharlnStr (". E-+", * (ptr+lennum) ) ) I I (isdigit(*(ptr+lennum))) ) if( (CharlnStr(pcr+lennum))) 44 (*(ptr+lennura-I) != 'E') ) break; naiennum; 1 for (j=0; j lennum; ++j) ’(numstr+j) = *(ptr+j);
* (nurastr+f) = NULL; number = atof(numstr); Deposit (number] ;
Substitute(CurConstant, ptr, iennum); t+CurConstant; if
return FALSE; i 5 * if * ++ptr; ) * while * ) * end block
* return TRUE; ) * ConvertConstents *7 Even Up The Score!
Static void ConvercFunctions(str) unsigned char 'str; ( while ( *str != NULL ) ( if ( (isupper(*str)) &S (!CharlnStr("XY",*str)) ) ( if (strncmp(atr,"LN",2) ==0) Substitute(LN,str,2L); else if (strncmp(str,"SINH",4) == 0) Substitute (SINH, str, 4L) ,- else if (strncmp(str,"COSH",4) == 0) Substitute(COSK,str,4L); else if (strncmp(str,"TANH",4) == 0) Substitute(TANK,str,4L); else if (strncmp(str,"SIN",3) == 0) Substitute(SIN,str,3L); else if (strncmp(str,"C0S"r3) == 0) Substitute(COS,str,3L); el3e if (strncmp(str,"TAN",3) == 0!
Substitute(TAN,str, 3L) ; else if (strncmp(str,"EXP",3) == 0) Substitute (EXP, str, 3L) ; else if (strncmp(str,"LOG",3) == 0) Substitute(LOG,str, 3L) ; else if (strncmp(str,"SQRT",4) == 0) Substitute(SQRT,str, 4L ; else if (strncmp(str,"ASIN",4} == 0) Substitute(ASIN,str,4L); else if (strncmp(str,"ACOS",4) == 0) Substitute(ACOS,str,41); else if (strncmp(str,"ATAN",4) == 0) Substitute(ATAN,str,4L); ) * if * ++str; ) * while *i ) * ConvertEunctions * static char InfixToPostfix(str) unsigned char "str; i unsigned long il=0, i2=0; unsigned char NextChar, TopSymbol; cstack.top = 0; *
Initialize stack * NewExpr[0] = NULL; ’ Initialize expression * while ( * (str+il) ;= NULL ) f NextChar = * (str+il); if ( (IsSymbol(NextChar)) II (NextChar ’X'I I I (NextChar == 'Y') I NewExpr[i2) = NextChar; ++i2; ) else for (;;) ¦ * Forever * if ( (cstack.top ==0) II (!Precedence(CTopOfStack(),NextChar)) ' break; if ((TopSymbol = Cpop(l) == 0) ( SyntaxErr = STACKUNDERFLOW; return FALSE; ) Let your Amiga give you the Advantage in making better investment decisions!
Color graphics of Individual Slocks and General Market Trends help you make more profit in this volatile market.
High Low Close, Moving Averages, Centered Moving Averages, Volume, Relative Strength, Stochastics, Wilder's RSI, Cycles, Trend lines and Momentum. Powerful reports such as the Relative Strength Report help you pick the best performers. Use the Market Barometers to help you time your market entries. Update Slocks, Mutual Funds and Commodities manually or automatically. Easy to use communications included.
Only $ 99.95 See your local Dealer or Call: Software Advantage Consulting Corporation 37346 Charter Oaks Blvd Ml. Clemens, MI 48043 (313) 463-4995 Amiga and Ihe Investor's Advantage ara trademarks of Iheir respective companies.
Circle 131 on Reader Service card.
If (cstack.top != 0) ( if ( (IsFunctiont CtopOfStackt) )) (NextChar == ')') ) !
TopSymbol = Cpop(); NewExpr[i2J = TopSymbol; ++i2; break; ) * if V } * if * if ( ItopSymbol == ’(') && (NextChar == ')') I break; if (TopSymbol != '(1) ( NewExpr[i2] = TopSymbol; ++i2; } ) * for * if (NextChar ! = ')') ( if (CPush(NextChar) == FALSE) ( SyntaxErr = STACKOVERFLOW; return FALSE; 1 1 } * if V ++il; ) * while * while (cstack.top != 0] [ TopSymbol = Cpop I); if (TopSymbol 1= '(') ( NewExpr[I2] = TopSymbol; ++12; ) ) NewExpr[12] = NULL; return TRUE; ) * InfixToPostfix * static double Calculate(s,n2,nl) unsigned char s; double nl,n2; ( switch (s) t case '-r' : return [nl +
n2); case ; return (nl - n2); case **' : return (nl * n2); case V' : return (nl n2); case ' : return ( exp(n2*log(nl)) case STN: return sin(n2) ); case COS: return cos(n2) )?
Case TAN: return tan(n2) )?
Case EXP: return ( exp(n2) ); case SQRT: return ( sqrt(n2) ); case LN: return ( log (n2) ); case LOG: return ( loglO(n2) ); case ASIN: return ( asin(n2) ); case ACOS: return ( acos(n2) ); case ATAN: return ( atan(n2) ); case SINH: return ( sinh(r.2) ); case COSH: return ( cosh(n2) ); case TANK: return ( tanh(n2) ); ( * switch * } * Calculate * unsigned char ‘Convert(FunctionString) unsigned char ‘FunctionString; unsigned char fstr[512],- unsigned Char *ptr; SyntaxErr = FALSE; RemoveSpaces (FunctionString); if if DEBUG printf(" nRemoveSpaces: %s r.", FunctionString); ifendif
strupr(FunctionString); tif DEBUG printf(" nstrupr: %s n", FunctionString); enaif if ((ptr = CheckSyntax(FunctionString)) 1= 0) return ptr; strcpy(fstr,FunctionString); i f DEBUG printf(" nCheckSyntax: %s n", fstr); endif if (!ConvertConstants(fstr)) return fstr; if DEBUG printf (" nConvertConstants: "); for (ptr = fstr; ''ptr != NULL; e+ptr) printf ("%d ", *ptr) ; printf(" n"); ffendi f ConvertFunctions(fstr); if DEBUG printf("VnConvertFunctions: ") ; for(ptr = fstr; *ptr 1= NULL; ++ptr) printf("%d ", *ptr); printf(" n"); tendif if (!InfixToPostfix (fstr)) return fstr; iif DEBUG
unsigned char *ptr?
Printf("YnlnfixloPostfix: *); for (ptr = NewExpr; *ptr 1= NULL; ++ptr) printf("fcd ", ‘ptr); printf(" n"); )
* endif return NewExpr; 3 * Convert * double Evaluate(x,y)
double 7. I y; unsigned char symbol; long i = 0;
r. stack.top = 0; * Initialize stack ‘ while (NewExpr [i] !=
NULL) symbol = NewExpr[i]; if (symbol == 'X') Npush(x); else
if (symbol == Vi') Npush (y); else if [IsSymbol(symbol)) ;
Npush( Constants[symboi-SYMBASE] ); ) else if
(IsFunction(symbol)) Npush Calculate symbol, NpopO, 0,0)
); ) else i Npush ( Calculate (symbol, NpopO NpopO) ) ; )
++i; ) * while * return Npop(); ) * Evaluate * Definitions
for syntax errors that may occur in the function Convert in
funceval.c. Listing Two: SYNTXERR.H The Bit Bucket syntxerr.h
Copyright 1988 Randy C. Finch
* *********************
* * * *
* *****
* * * * * w rt **************** * * define MISPLACEDOP I *
Misplaced operator * idefine ILLEGALCHAR 2 * Illegal
character * idefine ILLEGALEXP 3 * Illegal exponent *
idefine ILLEGALFUNC 4 * Illegal function * idefine MISS1NGOP
5 * Missing operator *!
6 * Missing operator or right parenthesis * idefine MISSINGLP 7 * Hissing left parenthesis idefine * idefine MISSINGRP £ * Missing right parenthesis MISSINGPARM 9 * Missing parameter * Idefine LONEDECIMAL 10 * Lone decimal point * Idefine EXTRAOECIMAL 11 * Extra decimal point * Idefine EXTRAE 12 * Extra E in exponent * idefine STACKUNDERFLOW 13 * Stack underflow * idefine STACKOVERFLOW 14 * Stack overflow * idefine TOOMANF CONST IS * Too many constants in function * COMPUTER STORE We Want Your Business!!
We Have the Best Prices!!
Oldest Commodore Dealer in the Area!!
2 Locations to Serve You
* Software
* Hardware
* Service
* Information 1294 Washington Street
W. Newton MA 02165 617-964-3080 621 Boston Post Road Sudbury MA
01776 508-443-9731 l a MmnDOR!
Wmmsm Listing Three: TESTFEVL.C Authorized Commodore Amiga Dealer and Commodore Service Center Authorized Dealer Circls 139 on Header Service card.
******** This program tests the functions Convert and Evaluate in funceval.c. It will allow the user to type in a function (no spaces please) and then enter values for X and Y. The value of the function with these values of X and Y substituted will be printed. If an error is found in the function, the function will be printed to the standard output, an up arrow will be printed beneath the offending character and an appropriate error message will be printed.
This program may be freely used for non-profit purposes as long as the copyright notice remains in the code.
Testfevl.c Copyright 1388 Randy C. Finch AT*********** I INCLUDES linclude ctype.h lnclude stdio.h linclude string.h linclude math.h linclude float.h linclude "syntxerr.h" DEFINES Idefine NULL 0 *. EXTERNAL VARIA3LES -* extern double Evaluate 0; extern unsigned char "Convert (); extern unsigned char SyntaxErr *- FUNCTIONS-- void mainf) •: unsigned char function[256j; unsigned char "expression; unsigned long spaces, i; char answerl[10], ansver2[10]; do ( printf(" nEnter a function: n n"); scanffunction); expression = Convert(function)r if (SyntaxErr) ( if (SyntaxErr ==
STACKUNDERrLOW) printf("Stack underflow n"); else if (SyntaxErr « = STACKOVERFLOW) printf ("Stack overflowin'') ; else if (SyntaxErr == TOOMANFCONST) printf ("Too many constants in functionin'1) ; else ( printf("ln%sln", function) ; spaces = expression - function; for(i=spaces; i 0; i) printf(" "); printf("Aln"); (continuedfrom previous page) switch (SyntaxErr) case MI5PLACED0P: printf ("Misplaced operatorln") ; break; case ILLEGALCHAR: printf ("Illegal characterin''); break; case ILLEGALSX?: printf("Illegal exponentln"); break; case ILLEGALFUNC: printf("Illegal functionln"); break; case
MISSINGOP: printf("Missing operatorln"); break; case MISSINGOPRP: printf("Kissing operator or right parenthesisln"); break; case MISSINGLP: printf("Missing left parenthesisln"]; break; case MISSINGRP: printf("Missing right parenthesisln"); break; case MISSINGPARM: printf ("Missing pararr.eterln") ; break; case LONEDECIKAL: printf("Lone decimal pointln"); break; case EXTRADECIMAL: printf("Extra decimalln"},- break; case EXTRAE: printf("Extra Eln"); break; ) * switch * ( * else * ) * if * else f double y., y, result; do printf("Ininput X: "}; scanf("%1f",ax); printf ("Input 'it
scanf("%lf", Sy); result = Evaluate(x,y); printf C'lnX = $ f n",x); printf("Y = %fln",y); printf("Result of is: %f nln", function, result); printf("Another calculation? (Y or N) scanf("is",answerl); ) while! ("anew ) * else * 'y') !l ("answerl 'Y' ) ,- printf("InAnother function? (Y or N) scanf("%s", answer2); } whilst [’tanswer2 == 'y') ! I (*ar.swer2 == ’Y') ); } * main ’
• AC* (continued from page 52) NEXT X LINE
(128,32)-(464,144),2,bf COLOR 1,2 "OR x=l TO 10 IF x=here THEN
6+x,50:print scores(x) NEXT X COLOR 3, 2 WHILE INKEYSO"" WEND
LOCATE 6+here,18:INPUT ”";namS nam$ =LEFT$ (naisS, 20) names
S(here)=namS LOCATE 6there,18 PRINT " LOCATE fthere,20:PRINT
namS LOCATE 6+here,50:PRINT scores(here) COLOR 1,0 OPEN
"letters.score" FOR OUTPUT AS 1 FOR X=1 TO 10 WRITE
tl,names?(x),scores(x) NEXT CLOSE St GQSUB key.wait RETURN
’empty K3 buf ":COLOR 3,2 key.wait: LOCATE 3,28:PRINT "Hit any
key to continue."
• AC* The Fred Fish Public Domain Software Library The Fred Fish
disks are collected by Mr. Fred Fish, a good and active friend
of the Amiga.
OetAxj D«! Planning ari to allow tne use- to cpmpr ie Uses- of iryedtonts (rebpa) are automatically compete csicrie totals, etc. Update FF36 V31. Binary only, by Terr Gintz Omska Seta release of Wan $ verson of the UNIX make utility. Features mulpe OeoerOancies widei'd suppoh are more Includes source B Mat: Diton Excption Exception 4 a s«' Of error handing routines that provide a programmer with the ability to easily handle often difficult to implement routines Routines such as r.o more memory, file not open, readwrze errcr etc. VO 6. Retries source. By Gerato T Hewss KickFont For A-100Q
owners, will permanently repace the topaz font on the kickstart disk with a font called "took" Includes a sample in the form of an IFF picture. V3 0. Binary only Also included is Ben;anm Fufer's treefy fedsmbutabto SwtiKicK' program 3 Greg Browne Launch Sample program shewing hew you can load and execute a program in the workbench environment, then return to the CLI. Includes source By Peter oa S4va Regexp A neariy-puOiC-domam reimp meniaticn of TO V6 regero 3. Sackage. Fives C programs re =S y:: use egrep-styte regniar expressions and does it in a rmxn Oear-er fashion man ir e analogous
routines n Sy$ V includes sojrce By Henry Spencer Tsnp Very rice ‘cut and piste* type uttey wttfi lots of uses and functors Features a pep uo ntuxbor control panei', mt tp»e tom and cctor recognitor, ctptoanl and ppe s.-ppon and a couple of utility prog*am$ Vt 4a, source for support programs only By John Rjsse;i UruiUU A tew CLI uttbes. Rerudrg some functionally snuar b re UNIX utJ-bes of re same names included are: Wc read.Tsi Tee Detap.
Ertab. And Trjnc Desenptons are g ven a re included doc files By Gary 5-*art FftiBtflDtoHlffl Browser A programmer's ‘Workbench' Allows you to eassy and ConveneTty neve copy rename, and oeete Wes & directories from a Cl!
Environment. Alsc provides a method fo create either Workbench or CLI programs Vt 6. Update to FF134, binary only. By Peter da Silva GeoTime A couple of interesting 'dock' type programs based on tie ¦Geocnrorf. Observe the earn s shadow scroll across a map or g'coe m realtime, based on the system clock V1.0. binary only, shareware By Mike Smittiwick Gphnt A black & white graphics print utility for Epson compare printers Command-tne options alio* several afferent print qualities are oens*es includes a couple of sample IFF files tor printing V2 03, snary only, sham ware By Peter Cherna Jec A
ncety done. Irttmtcn-based ediiaf that is quite user-friendly. Features word-wrap, auto-mdenl newc'i alt buffer, sp t-wrecw. Keyboard macro, help, printra. And more Vi .0. binary only, shareware. 3y Dan Bums Mo Virus Another Anti-Virus utility Tms one features known and new virus detechcr, view boot beck save and restore (xctbtocks. Several optocts and rmyre Written m assembly Vt 56.
Aw only ByNcWHson RepSri-g Nee itife CU uftfrty to repate any type cf sreg m art type of We wth arefher string of any type VI 0. Binary only. Shareware. By Luaarp Bertato Tre*Trvia Very nee mase-drrven trivia Type program tor Sta* Trek fans, Denars 1QQ questo~s won additional trivia d s available from tne auirer Binary on y shareware. By George Broussard Ffttl Fish DiiH.1.81 AWXUSP Amga ized version of the Xlsp interp*e*,er origmaiy by Davri Betz V2.00. includes source By David Betz. Amiga work, by Francos flouan Bail y Amga pen of the former aioace game named Click Lacks sauno etfects
promised for later updates. V0.1, binary prvy, shareware By Oirver Wagner T rack&r Useful debugging rout ires similar m turetcn but more versaFe to those of 'VemTrace' on FF163. Will track and report on calls fo AllocMamO, FieeMem(| [or lack thereof) among others. VO.Oa (A'pna release) By Kan Lehonbauer kzLBsm&l$ 2 AMC *Amga Message Center’ ScreUs a message from a text Lie a cress the screen on a cotonui background. Simiar to the 'greetings' prog rams developed by European Amiga enthusiasts. Vi 0. Binary only By Foster Hall Edimap A keymap edtcr Mows you to read si an exsting keyrap fife mod y
it to sm! You’ needs, and save d as a ready-to-use keyrrap V1.0. includes source Author.
Giles Gamesh HR 136 An IFF tile contammg a chah snowing every posvbie mjVe cl the suteen base pa tte cofcrs Also retjdM are opTfflzed and morochrcme pa.«ttes akjrg wtn severs tos and techniques tty using them with various pairt prcc'ams.B) Dick Bourne Icon merger Intut cm,-based program to take any two brush Wes and merge them into an aSerraie-nage type con V2.C. bfV57 on1 By Terry G*ntZ Sim Ancrer IFF sound player with several commarq-kne Options incudes severs samples V1 0. Bnary only By Nc Wilson SeiFoni Allows you to change the system font w.th varcus command-tne op ons Cem$ up at uncwn
bugs m FFT5 V25 rduOes source r. C*- By Dave Haynie FfwrnafttKiM RxFd A utikty for Amga assembiy programmers FuFd w, i read a FD We amo output a tne nat can be INCLUDE ec rare- than hawng a hnk »n re colossal 'Amiga Lb‘. Vt.C, mdudes source in assemby By Peter Wyspiansri Mklib Another example of buildina a shared I brary that evbved from "EMf FF37. Also included is a library.
Ed! & which contains sever a' lur-ctons net ihduded in the lAani standard ibrar«s includes source By Edwm Hoogeroeets wth C-functionsfrom several different authors PCO A subset implementation o1 a Irwiiy-redisiributable Pascal ccmfvler Supports include files, external references records, enumerated types, pointers, arrays strings and more. Presently aoes not support range types, me ’w,m s'atemen: or sets Vt 0 mcludes source a.nc sampe programs. By Patrick Oyaid Etfi5LEja h_Di»h_iB4 Bi A smal bmsn to to C-code image converter, mended to be used from CLI VIC. Brary cny By Terry GntZ CaroMakar A
pegrammer s ad for :reat rg ears image cata that can be used n any card game that uses tne standard 52 card deck VI 0. Bnary only. By Terry Grtz DPS Demo verson e* a program that * ; alow you *0 taka an, IFF f-e ano sa.e T as a totafly seff- codamed executabe (e trout me r.*ec for any iFF-wewers Vi 0, bnaryonfy By Foster Hail Mouse Util Irttusscn based program to arcw you to change your mouse speed without having to go through orefererces V1 1 mduoes asse-n&y souroe B?
Ljcara Bedat; Pm; Smal port utifcty oesgnec to replace re 'copy Mename to pd * command Opens a window bsbaywg the fienamg being printed, length and a status bar showing percent completed Asa includes an abed gadget vt 0 bmary onfy By ljca.no Bertato VacBench Ths amusing kttte screen hack w4i "ctear up’ your Wc-rk Bench screen lor ycu when ,t gets toe cluttered1 Binary onfy By Randy Jouett Wotfd A text adventure gams similar to tbs hloccm adventures of PtanedaH and Starc'oss Qu-te large w-itn a tremendous vanety a! Resporses Vt 02 mcuoes source By Doug *A:dcrj.q Amga port Dy Ere Kennedy
£ieL£i«lliM8LIS5 Commodore IFF This is a cooy of tne official November 1933 Cc-Tnodo'e IFF a sk All me files in the 'documents' directory are in ZP3 He 'documents zoo' Fred Fish Disk 186 A68K A 68000 assember originally written in Modula-2 in 1935 and convened to C by Charlie Gibb in 1937 Has been converted 1o accept metacomco- cOTpatibie assembler source code and to generate Amiga cb»ects includes source Tte is V2L42. An tcdate to Fft to By Bran Anderson C translation and Amiga work by Charlie Gitfi Cards O Rama A simple game that let's you push your memory it 15 played with a deck 0132
cards, grouped m 16 pa rs Tne cards are shuffled and nen displayed at the becvrrrg cf each came Yci goal 1$ to p up 35 many pars as you can until there are nq ca'ds left on tie screen. VI 0 indudes source By Werther Prari 02 A cute program mat oves me t me ne way many IE Msnearfytenvofrve" wobe actually do ic inbudes source n assembly By Charbe Gcc StCPM A CF M svrUaW 'or tne Amiga S m?ja:es an BCS0 aag *-m h 19 Nnnttf emxAabon iro-udes source This d V2 3 an update to Fft D9. By J m Cathey, Amiga pen by Charlie G-bos and Wi& fffiftfatiftaiaz DHS'Peh At3S*,DenCi'r'a'k SCra"iwhCh't,'v3cnt3Ctn
Urn a*d r » Ar.-ga This a an update to FF4S.
Wtn bug ties are more ref awe measurements o' the taster read ar d write speeds a va-'abe under the new Fast F.ie System By Rick; Spansauer 0'hLancemer.ts by Joanne Dew HackLie Th.a a the latest vefsicm the Artga pod of Hac* wtn lots of Amga speofc enhancements and neat graphics Now includes an easy to use installation program TbsisHackLiieVI 30 binary only By Software Distillery A versatile dt macro-kay mitator cased on POPCLI wtri a rnque method of *screen-blahi(ing' I won l say more, just try t1 V113 includes source Tms a an update to FF 161 By Tomas Rofocta A program designed to allow tno
user 10 detect and modify various parameters related to 32 bit CPUs lr iu«5 commands 15 ertabe or d*aWe the text data caches switch on or cff the 030 burst cache line Mi request, use the MMU 'a run a ROM image from 32-W memory, and to report various parameters when called Srom .1 script. VI.4, includes source. By Dave Haynie FrrtFlltltMiBS Machie SetCPU Bocfini'O This program creates a smaa ntro on the ooctKock o' any OSA which w.l appear after you insert the dskfcrbootng The head me can be up to 20 characters Thoscrofithgteitportjoncanbeupio 225 characters VI0, bnary cn.ly By Roger Ftschfcn
DirtOr comca-es The cements of two directories raporting cm coherences such as hies present m cn.y ere dfectory, orterert mod-icatjon Sates he fags. Wes. Commons, etc. Vi 0. Incudes source By Mark R nfre!
DrtOr A disassembler ccmme’rt generator program for tie 1 2 tGcksiart ROM exec K*ary image Generates a car rented disassenofy of the e ec I vary VI v br ryorJy By MarkuS Wandei A ‘racial program, simulating Dffjson-Limited Aggregation 1DLA' as deserted m me December ’ 9Sfl Soentrtc Amer-car. N the Ccmpuler Recreatons column Thvs program ,5 ao&ut an jrper cf magnijude ‘aster than the ‘SLO GRO program aescroed m SaeraSc Amercan. V10.
ReLdes source By Doug Houck FrabGen A fractal generator prog!am mat generates fractal E*ecDs FastG-a pidtjres from 'seeds' that you create This 4 unlM any of the other fractal gene'ators' 1 ve seen itcarbe-usedioriacancdisbaypr'evous-ty created fractal pctures. Modify existing hacta s or create yout own fractals V t 23 binary only, update lo FF142 By Douq Houck MemoryCJock A clock program that shews the amount cf fast ran Fee crsp ram as w»t as the time and date includes source m assembly code By Roger Fischlm Mart Rex x A simple A Rex x interlace which can bo oas»ly patched into almost any
program Includes as an example me freecraw program from Fft fndudes source By Tomas Rokdki Nu9 A new dos device mat behaves *ke ‘NiL ’ but unlike 'NIL , it is a rei hand'er. This makes it useful in lots of situations where 'NIL * cannot be used VQQ includes source By Gunnar Nordmark TeitDisplay A text display program like 'more' or few' but about half re size and handles an screen formats ipai rtsc irter'ace non mtedace. Etc VIM. Txrary only By Roger Frschwn EusLEMlEiSlJIS Mackie A versaile di macro-key initiator based on POPCLI w 1 a unqj« method 0! 'screen biankrg' i won't say more. IUSI try
¦!' Verson 5.20, includes source scatecf Fft 17 Ajthof TomasR&ucxj NetHack Tns 4 pan 1 cf a two part dstrfcufcen ol Nethacx.
Whch was *oo large to f4 on a smgie Psv even when zoos Part2 e on disk 150 Both parts along wth zoo to unpack them a-e required to use or reouwJ NetHacx V 2 3 Induces source Au tror Varvws. Am ga wc*» by Oaf SeOen Writ V 2 g shareware editor Has lean mode a command language menu customrzasor. Are otrer user confgjraourty and tuS!omzah ity features B-naiy only, shareware. Update to FF 173 Author Fk* Sues ErtflFishDtsiLlSfl uarylcons A oiecocr cf more irseresuig are useii* pears Author GsvRpseman LBM2!nageTakes an IFF picture and generates a C source module wheh can be compiled and linked
with your program ip d«piay the* picture With the in tuition Dawlmage furetdn B nary cny by Dens Green NetHac* Ths 4 part 2 ct a two part ooinbulion o1 NetHack which was too large to (1 on a sngi« disk even when zoo'c Pan t is on disk t8S Both parts, along wiih zoo lo unpack them, are lequtied lo use orretwidNeiHack V2 3 includes source Aulrer Vanous Amga work by Olaf Seibert EtpdF.shDisK 191 Bi tLaP E itiab is a program which lets you experiment with the blitter, to your hearts concert, in relative safety It opens a workbench wndow with gadgets lor all the registers of the Witter, and allows
ycu lo mandate individual registers and perform Phs cn a rr.agn,f*d ptnap V 1 4 an Lpdate to FF84 Induces source Aytnor Tomas Roktcir Bik A requester making tod employing various recursive algorithms Including a recursive* parser It takes irpu: text files and converts them to C-source for mdud'ng as requester oedaratons Upoate to Fft52. «rn many enhancements hcLdes source Author: Stuart Ferguson FiieBootB oc* Tn s s-mpie lrte program reads bocks 0 and 1 ol a bootable as- and saves them as a program fie mat can be am (heaven forbidi or dsassemded by programs ike DIS d DSM includes source m
assenbly cede by John VekJtnus Spei A per: cf a Urxx verucr d a tree,1 ttsaourade screen ot*rted. M.ieracT-ve speJrg checker Update to FF54, with enhancements b Tcmas RcLdu V2 0 02 reiudes source Author Pace Wifissen; enh reements by Tomas Roreki P: 15 Computer ¦verson of rrese cheao Diasic puzzles wrth 15 while He umbered 1 tfrcugn 15 and an empty scuare n a 4 by 4 arrangement This one a more challenging since you can t sorve it by |uSt pry ing out the pieces Includes source Author: MtkeHaU Fred RfthDHk 192 Eval This package aUqvrs you to man AHe expressions Currency its two mam functions
are evaluator and tSUerentiatw If also does some ba&c simplifications ibasea on partem matchingi to mane the result of a differentiation more oresentabe Includes sauroe. Author Dave Gay PacManS7 This rs a r ce l ire 'pacman l*.e' g-iTe with some new features i*e hre pts. StaWxig km.es electric arcs and fame throwers, that musl be avoided Has three levels cl difficulty, easy, medium, and haid Sounds can be toggled on or oft Keeps a record ol 'l*e top ten scores Shareware binary only. Author. Steve Jacobs and Jm Boy a Resource Demo A demo version ol ReSource an interactive disassembler for tne
Amiga This is a complete version except that the 'save' features have been disabled. VO 36. Binary only by. Gler McDiarmid Fred.Fi5h.Oisk m KeyMasEc Alaws you to change the Key Maps used with SetMap Ths is a M featured edxtor providing support fcr normal str ng and dead keys The keyboard represented is from an A20CC A500 but it is Uiy compatible with A1000 keyboards Vi 02.
Includes source Author TimFnest Ic Tfvs is a modified ' o»s*on of the Sczobon C compter (rwnFF171 It has been mool«J to generate code ccrpaxw ww to A63* asseT£ e om Fft36 and a new frontefdcontrol pegram makes it easy to use I ke the UNIX frontand Vi Cl mijdes sou'ce by Johann Fuegg Arrga work by .be Montgomery Fred Fish Disk 194 Mona A smg Dlayer dungeon svnLaton "he Ctx.ect of the game s to defeat the Bairog. Wtxh lurks n the deepest eveis of me dungeon You Cogn at the town level above the dungeon, where vou may acqjre supples weapons armor ardmag-ci cevces by barter ,rg with various shoo
owners before descending no me dungeor. To * bathe Amga enhaxemerts re*ude pull down menus.
Graptas mode pekjp mode, a continuous movemoOa a real tme roce a message wat
t. me naoe. As well as other rreahcatons to improve overai,
playaaily and to take advantage of the unquefeatures of the
Amga V3 0. B nary only, requires a! ‘east 1 Mb of memory
Author: Robert Alan Koeneke and others Amga verson by Richard
Henderson and others, EmFjfltlPMl.lB McoEMACS Version 3 1C of
Daniel Lawrence s varlani of Dave Conroy £ mtroemacs This is
an update to the verson released on dek 119 New features
include muftjpte marks, more funccn key supper, a berter crypt
Arg end-of-wo'C command, a command line swiich for setting errvircnment variables, new hocks for macros, a command to stnp trailing whitespace, intemarenal-zabon features like foregn language message sucoort, hoizontal wndow sacLrg nuch faster search agonmm.
Amga irtuittcr suppcrt ana more Indudes source are extensiveortme docymertatcn Author Dave Conroy. MANY enhancements by Dan*! Lawrence Fred Fish. Disk 156 HamPrcs Tr*se are some of Te most stmnrg ogrtzed pctures yet tor tne Amga. They were scanned at a rescxuton r 4C95 by 2;’C p»e:s 35-bts per pixel, on an Eworu 1435 Side scanner, cropped, gamma corrected, scaled, and ccmverted to Amga t=F HAM f-es They are dtsptayed w'm a soeca: L5W toaaer rat handesoreracanHAMinaBes indudes source torne display program. Author Jonathan Hue EgriiltbPifk Ti7 Ctags Create 2 tags Me from the speared C, Pascal
Fortran. YACC ex crksp sw ces A tags fre can be used by a cocperstng eddor to giddy locate soecfed ob cts n a program s source code. Berkeley V4 7. Mduoessource. Autha Ken Amoa. Jim Kleckner, and Bill Joy Ported to Amga by G R iFredl V a;ter
F. na Find a a utfdy which searches tor files tnai satsfy a given
booean expression of armouies.
5tartirg from a root pathname and sea’chmg recursively down fhrougrt the hierarchy of the file system. Very much like ine Unix find program. VI .2, incudes source Update to FF134 Author Rodney Lews Fi xHynk A program to modrty executatte files to alow Tern to run mexteTiai memory. It forces a'l DATA and B5S hunks in the file to be loaded into CHIP memory CODE hunks will still load mlo FAST ram if available. New features md jde an interactive mode :o seleci where each DATA or BSS hunk wll toad mto memory, support tor cvefays. Support for AC BASIC compiled programs, and support for new hunk
types as used by "blink" V2 1, denary only UpdasetoFF36 Author: 0J. James No Another raff style tert formatter Thrs is verson 1 5, an upoate to the version released cn cs .
75 Me* features nduce ce'e'ah-n cf ANSI ISO cooes for bod takes, ana unaertne, mere than one formatting command on a tne. Longer macro names, and many more tormatting comnarxh. Tndubes source Author Unknown posted to usenet by A n VyrwtatA Marry enhancements by Qtaf SeOert Stavte A pub&c domain ctone cf the UNIX vi e ior Supports windcw-sizing arrow Kays ard to help key V3 35a. Mchiles source Update to FF156. Author Various. Amiga work by G R r Frerfi Waleer Fffi3ffttl Pitt 138 Charon Charcn s E-adey 5 erory for ne Frst Annual Bactge Kifler Demc Contest The text cf the tJemq was written by
Lord Djnsany (long before TO Anvga) Brad-ey created the iflusfrafions are arvmation De sound track s a traflstional Sccttsf! Tune -The Arran Boat' by Lord Dunsany|l9l5i Bradley Schenck (1988; Fred Fiah Disk 199 Asimpiex An implementatron ol the Simplex algorithm lor solving linear proorems I; uses the standarczed MPSX-forma for input dais ffc Vt .2. irdudes source. Author: Stefan Forster Csh V3 02a cf a csh We shell oen red from Matt Dillon's shell, V2.07 Indudes many new or improved commands, some bug fixes, etc Includes source. Author: Matt Dillon, Sieve Drew. Carlo Borreo. Cesare Dienl
MIDisoft A program to transfer sound samples between the Anuga and a Rdand S-220 VI.0, b xary oriy Aurthor DeSer Bruns Pyro A screen blarLrg program that goes beyond the normal blanking process When there are no input events, pyro takes over and starts a 1TO fireworksdsclay nookx VI 1, binary only . Author Steve Jacobs and J6n Boyd SnpDemo Demo version 123 of storat processing program sdd by Digital Dynamics Binary only.
Author: John Hodgson Viewer A very small program for displaying IFF pctures ol any resolution This one is wnrten m assembly code are «s only 958 bytes long Brary crfy Author Mske McKjOtch firtflaftPafc-fflfl NctBO'ngAgain Dr Gandalf S entry for TO First Annual Badge Ktier Demo CortesT It ts an interlaced HAM arxmaron with nicely integrated scurri ertects. It s a jest visual pun cn TO agnal Bore aerc but s say aujncre woud air me ehect Bnary only, requires 1 Mb cl memory Author; D GandaH (Enc J Fie-scher Moi ’ank Ths b Vncents entry im me Fnsl Annua!
Badge Kdler Demo Contest h is an arwnafton of a Isrtank smuator' wth sound effects and a cute twist B -ary onfy Author Vrcent H Lee Fttti_£sllPi5L2&l DracoUpeattn Cfrts Gray s Draco dtsnbuton 'or tne AMIGAEnhar cements me We supped fey fioaftng point, register variables more optimiza- ton, improved call retumstandard. Etc. VI.2, an update to FF76. Requires documentation from FF77 to complete foe (tstriuiion kit Binay Cn-'y. Author. Cf’-’tS Gray D’ooCofo DropCtoih tets you place a pattern a2Mpi IFF image cr a combination cf a pattern ana image, into the WorkBench backdroq. This -s version 2.4.
an uodate to version 2 2 on disk 126 Shareware, binary orfy. Author. Eric Lartsky SlavicFonts A whole bunch of new toils from Roo-n LaPasha Version 1.0. Author: Robin LaPasha Vlt VLT is bcth a VTUJO emufator and a Tektronix (4014 plus suoset of 4105) emulator, currently in use at SlAC (Stanford Linear Accelerator Center). Although the Vti QQ pad was onera'iy bases on Daw Wecker ei ai's VttCC. Many enhancements were made The program requires ARP and rt has an Are* port XMODEM IKCRC aod Kermt protocol supped also included Version 3 655, bmary only Aulhor: Wjiy Largeveld FryjRthptifc 203
Examples Assembly arc C code examples. Mc'u&ng some old favor lies dike speechtoy and yaente3) dawncoded to assembly language. Includes a replacement for the official audio device, an example of creating a subtask a reuvi te in assembly cl R J MicaJ s hie requester, an ei ample of installing a custom input handler ahead of intuifon. And more Author Jim Fipre 4 Jeff Gan GurusGu de The source files for all examples published m the 'Guru's Guide, Meditation a t: interrupts by Carl Sassenraih foe architect of me Amiga's fow-levef mufttasking operating system aid dessgner of E»ec Author. Carl
Sassewath Isam A tfcrazy of routines to access relational data base systems using the Index Sequential Access Method (ISAM), This is beta version 0.9. binary only. Author Kai Oliver Ploog Fred Fish Disk 2Q4
F. ieReq A simple file requester, wnren as an eiercse by the
author to see how easy ii word be 11 wasn'ti. Includes source.
Author: Jonathan Potter GnuGrep The grep prog-am from the GNU
project Replaces grep fgrep eg ep arc bmgrep Currently does
r-c: expand Amoa style w dc&'Cs. So f you wish to scan mult:
pie files you wil need to use ! With a shefl that does this
for you. Version 1.3, ir-Cudes scuroe. Author: Mike Haertel.
James Woods, Arthur Olson, Richard Stallman, Dcug Gwyn. Scott
Henry Scarcer HAMCu instais a ostcm copper Hi lor me cunen act e view (usually workbench) that contains all the colours Iron 0x000 to Omt Aneatefted and an easy way to show off the color capabilities of me Amiga Includes source Author Jonathan Potter image-Ea An shareware icon editor submitted by me author for mduswn in foe Israry. Suggested shareware donation cf 520. Version i 3 binary only Author: Jonathan Potter JPCIock A shod dock program that is just packed with features Includes source Author; Jonathan Fetter MouseBounce A snon hade game that makes your mo-se pointer Dounce around the
screen The object is to dose the MouseBounce wnaow and ewt me game. Eacn time you dick the mouse button, the pointer speeds up indudes source, by. Jonathan Potter PcpDir A small utility when ‘poos ooen' to he!p you fcck at the omens o* a parxutar directory on demand. Verson 1.4, includes source. By.
Jonathan Potter Poplnfo A small utility which ‘pops open' to gve you information abcut the status of your devices 4 memory. V 2.9. includes source, by J Potter Teacher Teacher s a short, simple hack. I won't spoi the fun oy telling you what it does Induces source. Author: Jonathan Potter EstiFiSkPlSk 205 Baily Amiga pod of the former arcade game named Click, This version new has sound effects.
Version II, an update to FF181. Binary orfy.
Shareware, by: Oliver Wagner Battteforoe A mcety done shareware game. Subm ited by the author, that simulates combat between two or more giant. MboMike machines. Binary only, version 3.01 Author' Ralph Reed Chess A pod of a chess game posted to Usenet Pits i$ an update to the version firs: included on os*
96. Tt has been upgraded to use an Amiga Intuition ir.terfacs
Verson 20. Binary oniy Author: John Stan back, ported to
Amiga by Bob leivian Version 2,0 upgrades by Alfred Kaufmann
Ffeti.nshPi5K.2Qe Brownian A demo based on both fractal
theory and brownian motion Indudes source Author JobnM Olsen
Hawk A stereo image ol a hawk Requires red green stereo
glasses to view Author. Unknown (no documentation indudedf
MemFbck Treats all the memory in you Amiga f «e ¦? Was pan cf
a biplane inside a graphics dismay Provides sod of a
graphical pcture of c-j* memory usage. Bmary orJy. By: J,m
Webster PeX A dema of the various graphics capabi t.es ol the
Amiga. Author Unknown (no documentation included)
PicfiureGarden Another demo, apparently in compiled nas C
Aufocr Unknown (no documentation inducted, StereoDemo A demo
of stereoscope graprvcs written in assemoly langjage Requires
red-green stereo glasses to view. Indudes sources Author
David M McKinstry ’npte 3 demos of soma of me Amiga s graph
cs and sound capabilities. Binary orJy. By: romas RokXfci
Fred Fish Disk 207 Coyote Gene's entry to me 1988 Badge
Killer Demo contest A very cute (and large) animation.
Requires about 1900 blocks of disk space, so it is distributed m 'arc format’. Author- Gene Brawn FrfitiSslLDiSiOeS Aslerodfleld This is Michael s entry for the 1533 Badge Kier Derro Contest. It is a large animation cf a spacecraft fyng madly through an asier&d fiefo icnased by unseen tees mat includes a couple of near misses. Author Michael Powell Fred Fish Disk 209 Bowl This is Verrfs entry for the 1983 Badge Killer Demo Contest. It is a ScjSpt-Animate an nation that shows three colored baits fiymg in Pities above a rwrored tc*' Rendering the animation took about 2 weeks Distributedin zoo
format Because of rts s ee (zoo program included for easy unpacking). Author. Vem Staats Dps A program designed to work with the PrintScrfo!
Program, a commercial PostScript interpreter for the Amga. To provide a page creviewer V11 ard incudes source by AienNorskog Fred Fish Disk 210 Cafo A very ncey done soenifioprogrammer. Plotter calculator. The scientific portion has most cl the operators found on the more popular handhelds The programmer pofton has all the special hex b nary decimal conversions as we*i as recster opera:ons hke ASL. ROL LSI. A';D. OS XOR.
Etc The plotter portion wd plot equations Other features mcludo 26 memones, lull mouse or keyboard operation, put-do wn menus, and conization V 3.0 binary only, by Jimmy Vang LaoefPr.r: A program dial atows you to easily print labels for your csks. Verson 1.9. weware, binary only .source a.ajfable from auTior) Author Aiareas Krets NuHand An animation of a hand wih fingernails scrapemg on a desktop, including sound ejects This is Bryan s entry for the I9E3 Badge Killer Demo Contest B-inary cn'y by Byan Ca’eyGaHr ar.
Fred Ffdh Disk 211 Ar-gaWaveTms ts Allen's ent to me 1938 Badge Killer Demo Contest It is an an matron with sound effects by: Aben Hastings Esperanla A keymap modifcaticn lo usai which, in conjunction with me supplied slate foni. Will afow one to type in Esperanto and Welsh, in any program Ciat vnl use keyrrjps i fonts by Giyn Gcw.rc Imege-Ec An shareware con editor suPr.hed bv the author for inclusion in the Ibrary. Suggested shareware donation olS20. VI.9. binary only. Fixes a serious bug in Vi 8 on FF204 by: J. Potter S gnFont A Keymap and fcrrt that wii acw me user to be able to type in
American Sign Language provided mat one knows the font. Ajmor Glyr. Gow.ng Vrru&Gomr&l A new wrys deiert-on aid control program foal cnecks disks during insertion, protects trom link viruses, shows bootbock on a screen perodcaily checks systsm vectors, controls access to ties with a requester, etc Vi 3. Inekjdesfufl asserobfiy lancuage source code. Autbor: Pus fJ popen Fred Fish Oral W Alice Trus animation is Carey's entry to the 1933 Badge Kilter Demo Contest. Authot: Carey T. Peito DiskSaiv A drsk recovery program for ail Amiga fife system devices that use ether the Amiga Standard Re System
or the Amga Fasl File System DiSkSAV creates a new Mesysiem structure on another device with as much data salvaged from the original device as possible. Update to Ffl 77 Binary only. Author: DaveHaynfo DgcsWcrij This ammaton is Charles' entry to the 193S Badge Killer Demo Contest by: Charles Vcr-er Fr J Fish Disk 213 Cucog Th.-s animation of foe Champatgn-Urpana Commcdore Users Group logo was submitied to the 1983 Badge Killer Demo Contes! By Ed Serbs by Ed Serbs icons Almosj300x»nsine h!(')coJors Usesaspeoai program :c get an eghj co'or workbench tc display these icons, when were made with
Dpamtll and IconGen Most icons are nimatares cf tne man screen of therr corresponding programs, cr the picture they show, made with ‘iconize’ and "recofor’ from FF35. By: WcH-Peter Dshmck Fred Fish Disk 214 ArcFrep A-cP-ep prepares files and cr directories for archival with arc or any other program foal car. T scan tnrough different o rectories and or handle long filenames V2 1. Includes source. Author Garry Gfondown MandefVrcom A Mandetorot Juia-curve generating program foat features five numereal generators 'integer. Up, eee 023. And020381) Innarvd- crafted assembly for maximum speed, ontme
mrnuse selectable he p for all functions, generation of multiple pictures simultaneously, a sophisticated user interface wnth shaded gadcefs etc. Some of the other features include zoom magnify, cofor- CyCkng. Ccrfcunrvg auto-ccntognng. Hrstoyam.
Statistics, presets exiraTtafbrrtesupport, overscan orbdS. Pan mode, and more Requires 1Mbor more of memory. This is the source to V2,0. An updalo to FF78 A compiled binary, along with help files aid example images tan be found on FF2i5 Author: Kevin Ctague MemDiag A memory Psgnosto program to identify add'&sses which produce memory errors, and a memory quarantine program which removes such defective addresses from the system's tree memory list, until such time as the hardware errors cart be corrected.
Version 1.1. indudes source, by Fafcfcan Dufoe RunBack Another step o foe e.-cfoton pf Rob Peck s RunBacKGround program, frcm disks 73 and 152 Afows you to slan a new CLI prog*am ano run it in tne background, then Poses the new CLJ. This version has been enhanced to use the NULL device by Gunrar Nordmark. (mducted). Which is a 'rea™ device, so it solves problems with previous versions c‘ R-jiBack which used foe Nil: “fake' devce, causmg many crashes, fodjoes source.
Author: Rob Peck. Daniel Barren, Tim Maffen Smartlcon This shareware program, submitted by the author, is an Intuton objects conifer Verson I 0 is limited TO I edifying wmddwS wh h is Str'l very handy it adds a n»w 'ccrafy gadget' to eacn window, mat when ticked on confes the wrflow irio an coi n the ram disk This is the same verson as released on rr 134. But now includes tie source cede Author Gauther Grouit FiSd Fish Cish 215 MandeJVrccT A Mandelbrot Juria ourve generating &rograT that features five numencat gerer210'S [integer, ftp. Eee. 023. And C23 33J) in handcrafted assemoiy for
maximum speed, online mouse selectable hep for all functions, generation Of multiple pictures simultaneously, a sophisticated user interface with shaded gadgets etc. Some o!
The ether features indude 2oom magnify, coky- lyCing contouring, autb-consunng. Histogram.
Statistics, presets extra halforte support, overscan orbits, oan mode, and more. Requires iMo or more of memory. This is V2 0, an update to FF78.
Supports wfiecw-sizing, arrow keys, and foe nelp key. V3 6.
Irdudes source This« an update to V3 35a cn Fft 57, Author Various. Amiga work by G R (Fred) Waiter Fred Fish Disk..213 EdUb A lib-27 of additional functions for Manx. This is
VI. 1. an update to V1.Q fromFF183. Includes source. Author:
Edwin Hcogerbeets With 0- funoons from several dfferent
authors Mandel Axner mandefcrot generator program, with txts
and pieces of code from G Heath and R J. Mical This is VI .3,
an update to Ffl 11 New features and improvements include an
Arexx interface Korflinates in sghf. More state mfo saved
wrtfi a pctixe. Batch files, programmable fonctons, and
ToreploDng options. Includes source. Author dampen Maze A
program that lets you build mazes and then sol ve them. Mazes
can be trivial one level mazes to very dffcuit three level
mazes Versnyi 1.2. mdudes source. Author; Todd Lewis PcPatcn
Patches for PCCcpy and PC Formal frcm the EXTRAS disk, to
alow reading, 'writing, a.no formatting ol any kind o1 MS Dos
style disks, including 20K 3.5" diskettes Binary only This
is an update to the version on disk 163 Author Werner
Guenther Scanner Scanner makes commented C code ol a.1
irtuiton stfucures m mvemvpry. Tne strucires will receive
ccnect pointers to wards each ofoer. Scanner starts looking
at InturtfonBase, and follows ail pointers, stormg them in
memcry Wert finished, it wntes all foe structures to the
standard output.
Verson t 0 includes source Aufoo' Ste'an Pa mark Worm An Anugasmptemertabon cf the cassic 'worms' program based on an an foe in the Dec 1&87 issue ol Soentilic American. You can specify the size and length of the worms, and the number of worms includes source Author Brad Teyfor Amiga port by Chuck McManus Froti Fish Disk 219 DeepSky A database containing information on *0 363 non- stehar objects, 600 color contrasting easily resolved doub'e stars. 70 stars for settingc.roles, and mt$ e whitedwarls, red stars binaries, etc. The cstatase is distributed in zoo forma:, and s about 1 2 Mb aher
extractson V 5 0 Auror Saguaro Astronomy Club Mv A Umx slyk? Mv cp rm program that moves, copies, or removes files, Includes interactve mode, recursive mode, and force quiet mode Copies fiSe permissions, dates, and comments, supportsarp style vidcards. Subpefos moves across volumes, honors the delete bit. V11 mclijdes source.
Authcr Edwm Hoogeroeets Freti Ftsh Disk 220 Dnet A link protocol that provides essentially an unim ted number of reliabfo connect ers between processes on two machines, where each end of foe lank can be eitner an Amiga or a Unix i£SD4 3) machine Works on foe Amga wfo any EXEC device that looks like the serial device. Works cn UNIX with tty and socket devices Achieves better than 95% average throughput On li!e transfers Ths is V2.0. an update to Fft 45 Includes sources for bcth tne Amiga and Unx versions Author Matt Orion Fred Fish Disk 221 AlfocMaster Al'ocmaster is a program inspired by Nick
Sullivan's 'Reserve’ artide in Amga Transactor, for contrcEkng the amount of both Chip and Fast memory avafabe to foe rest of the system It a very usefu' for testing applications n low-memory situations. It also has a snapshot feature to report differences in available memory before and after running an application V 1.17. binary only Author John Gedach Jr AjNSiEc Dema verscn of an ANSI screen he ed tcr ft allows you fo easily create and modify a screen of ANSl-stylo text grapiiics on the Amga The standard ANSI color set (red green yellow blue, magenta, cyan, white) and text styles (plain,
boldface, underlined, italic) are provided, along with seme simple editing and craw ng functors. This demo version has foe save features disabled V1,2.0aD. bmary only, Author: Gregory Epley 3a-lyll Amga port of foe former arcade game named Click This version adds a ’cheat* noce and fixes seme minor bugs Vik an update la FF2C5 Binary only shareware, Author Ckrver Wagner Dfiame A utility tnai helps you to create animated bobs. It installs itseff in Dpaml II. Ailer which you can draw eacn bob m Dpant II wtttun its own frame and check foe animation by ca3mg Dframe from wfo.n DpainL
VI.02.bnarycnty.Aufoor JanSuitennuis IFFM2 Demo version ol an IFF support module for Interface Technologies MZAmiga Modula-2 system.
Includes a version of ViewlLBM (wth sourcel that uses foe IFF support routines VI 0 0D. Binary only. Author Gregory Eptey Ste.nscruag A terns like game (Slemschtag means ‘Failing Rock’) submitted by the author VI 5 binary only.
Author : Peter Handel Fred Fish Disk 222 MemGauge A tool ts display tne current memory usage, very much ike foe usage bar Wortoench d spays m roctd-rectcnes VI 4, includes souroe. Author: Olal Olsen' Barthel Mischief This lode program s in the long uadhon ol ‘display hacks'. It uses the input device to perform various acts of mschref Incfudes source. Aunor Oaf Olsen' Barthel rlplol A library ol C functions useful for scientific plotting on the Amiga. The library is Lattice C compatible Contour plotting, three dimensional plotting axis rftJefi niton, bg-’og p*crung and muttp-e subpages are a
few oIRploTs features Thefts can be displayed on a monitor or sent to a groubles file for subsequent pnnting. VI,00. Includes source.
Author. Tony Rschardson Frcti Fj?fl Disk 223 Csfi V3-03a of a csh l*e sh*3 derived fro n Mas Dtton s shell, version 2.07 This is an update to Fft 99 Includes a couple of new filter commands, new dir cptcn new editing ootions sourong cf a standard statup file, and some o g fixes Includes soi ce. Autnor Mao Dil'on. Steve Drew, Carla Borreo. Cesare Diem FuDiSk A program to recover as much as possible from a defective dsk. It can sometimes recover damaged (urreacaPe: tracks, cneck file integrity, cfoack foedrectory structure, undelete files, copy or show files, fix corrupted diredory pointers, etc
Full intuition interface Version 1 0 binary only. Author: Werner Guenther GravSm A preg'am tc animate up to 6 planetary masses an cf wncn aiert a mutual gravtatxanal force cn each other The planetary masses can M placed anywhere on foe screen, and theT mass and initial velocity can be determined by foe user Tne program then steps foe ammatron through t me. Psoft ng and displaying foe new position m the trajectory of each mass.
Vi ,50, induJes source Author Richaro Frost lf(2Sun A small utility for those of you who may have access to a Sun workstation, Takes an Amiga IFF fee and converts t to a Sun rasterfite format Upcate ro FF174. Win aewr pa-s rg support for HAM moce. Ard some bug fixes.
Source only, as foe p-ogram needs to be recompiled anc run from a Sun Authors: Sieve Berry. Mark Thompson iFFtcSUN This program takes a standard IFF formal image and translates it irio a SUN rasterfie formal. L«kefoe lft2Suo program also on this disk However, this one runs on foe Am iga Vl.31.includesseuroe Autnor: RcharpFrost Pacce: A pacman dene with sound a'd a game s eer editor. V1 0. Shar&wa-e. Bmary only. Alfocr Dirk Hoffman Poplnfo A small utility which 'pops open' to give you information about foe status of ycur devices and mem cry V3 3. An update to FF204 Includes source Aufocr
Jcrva'han Potter SetCPU A program designed lo a low foe user to detect and modify various parameters related to 32 tut CPUs Includes commands to enable or disable the text data caches, switch on or off foe 030 burst cache I ne f 11 request use foe MMU :o run a ROM mage from 32-bit memory, andtc report various parameters when celed from a script. V1,5 an update to FF1B7.
Includes source Author Dave Hayriie Fred Fish Disk 224 CLImax Far al'- those people who wish that foe-r CL!
Windows had 25 lines of 80 characters just like an o'd fashioned non- windowing computer, the answer is here, CLImax creates a borderless backdrop CLI window on a custom screen.
Also thrown in i$ MqveSys which reassgni SYS. C . S: L DEVS:. LIBS . Ard FONTS: to a new volume witn one simple 'pure'command.
Incfudes source Author. Paul Kienrtz KickMem A program for Al 000 hardware hackers that have done foe Amazing Comping 5t 2K uograde KickMero wil patch your i 2 or 1 3 kckstar: auk q perfonn aodmem ounng kickstart This allows warm boo: surviveab lily gf ram disk devices and eliminates addmen commands from ycur startup sequence V2.0. rrd'jdes source. Aufocr Dave Wiliams Mo'e Is Better These two haP make MORE more uselul One is called V; d s a smail 'pure' CLI command that acts as a from end lor More, causing it lo create its own window Make V ard More bom resident1 The Other is Fenestrate
wfiron su-groaty alters me CON window spec ins-de Mere enabling rt to, for instance, use Cor,Man features to create a bcrdeness window gn the topmost screen (very useful with CLImax). IncJudes source. Author Paul Kemt2 Pete'sQjest Ths cute gaTe has you, foe mtrepo Peiei. Fo'lowirvg a trail cl hearts through a world of 20 levels, ncdied with porcupines and other hazards, to rescue Dapr.no. the lave of your life that has been kidnapped by foe evil Brutus.
Version t O, bmary only. Author; Da d Mer y kVho A rewrite of fio‘. From FF79. Which gives substantial more elaborate information about foe tasks Currently running (or waiting) on your Amiga Includes source. Author George Musser rewrite fcy Paul Kiemtz Xebec A awpte of hacks to make Me eas«r for those who have Xebec hard asks One makes it mere possible to Mount a Xebec hard disk with the Fast Fite System, foe other is a compact head parking program Includes source.
Author. PaJ Kiencz Fred Fish Disk 225 AmigaTCP Trie KA9Q Internet Sofrwaro Package. The package supports IP. ICMP, TCP. UDP. And ARP as basic services and implements (he FTP. Telnet, ant SMTP protocols as applications It rons on BM PC and clones foe Apple Macintosh, and the Amiga. Includes source Author: Btfale Garbee. Phil Kam, Bran Lkjyd MyMenu M Menu afdws you to add you- own menus -o the WcrkBer.cn menu strop, to run commonfy used commands MyMenu will a low you to execute both CLI and WorkBench programs, ard is configured with a normal text file Includes source Author Oarm Johnson
ErriJjilUnKflfi Vlt VLT is both a VT100 emulator and a Tektronix (4014 plus subset of 4105) emulator, currently in use at SLAC (Stanford Linear Accelerator Source is available on FFEM4 by Kevin Clague Fred Fish Disk 216 BackDrop Backdrop allows you lo delme a pattern which w;li then be displayed on the workbench screen in the normally empty area oehind all the windows Similar in concept to DropClcth, but this one dees not require workbench to be loaded (ana does no! Cohabit very well with workbench) Includes source. Author Eddy Carroll CWEmul An April Fools spool that lums your Amiga mto a
CS4, or al least makes it look that way. Includes source Author Eddy Canci!
Cloud A program that generates and displays traaal surfaces that look remarkably i-ke douds Based on tie as from The book 'Fractals’ by Jens Feber Binary only. Author V ke Hat PrtSooo A DOS handier, a print program and a control program pat implement a print spoc! Ng system [ike PRT . The DOS hander wans for siuft to be sent to it to be printed. The prm program does
l. ne numbering and page headers The control program handles
admiros&Blrve functions Binary only. Author. Darnel Barrera
VirusX Version 3 20 of the popular virus detection vaccination
program. Features a test for 8 new viruses sir.ee the 3.10
version on Ffi 75 Includes source Autoor Steve Tobett Wanderer
A neat little game with graphics and sound.
Ported Irom the Unix version, oriqinalfy written on a Sun workstation The deafer Wanderer came from games such as Boulderdash, Xer, and the Rep ton games from Superior Software. Includes a buiitin editor lor extending the game by adding additional screens. V2 2, includes source. Author: Steven Shipway and others Amiga port by Alan Bland Fr«f Fish mm AntaCBS An animation cooked up by Leo in protest of CBS's coverage cf the Hacker's Conference m Od 88 After readme the transcript I was angered enough to feel this reeded widespread distribution even though it ts quite dd by: Leo Bois Ewhac Scfcwat
Echo A small replacemert for the Am igaDOS echo that wJI do some special functions, such as dear the screen delete to bottom e! Screen, senja me screen, place the cursor at a particular location and set the text style and or c&or Includes source Author: Gamy GtendOwn instatBeep This program replaces the CteplayBeep tu'xa on so that an IFF 8SVX sound ;s played instead of the screen hashing The PlayBeep function runs as a task in the background and runs asynchronous so the length cf the sound does not stow anything down, includes a couple of sample sound files. Version It. Binary only Author:
Tim Fnest and Don Wifhey Smpt An ;npul handler wedge which a'lows you lo cl p text Irom any window and then paste that text anywhere, as though you had typed it on me keyboard You mark the text you warn to 'snip' using the mouse, and then use the mouse lo ¦paste' the last snipped text into the active window, requester, cr anywhere, Version 1.2, includes source. Author: Seen Evemden SonitPeek A utility to let you list alt the instruments used by one or more Aegis Sonix score He s. It can scan individual Tiles, or search one cr mere directories checking all score files in each d-reetory The
output is a list of all the instruments you need to have present in order to be able to play the indicated score Hes. Includes source Author Eddy Carrol Steve A public toman done of me UN;X vi editor, were made. The program requires ARP. And it has an Apet. Port XMODEM 1KCRC anc Kermd protocol support also «ctoded V4 036 With many enhancements over tne previous version. 3.656. cn FF292. New features indude support for other senai pons, external f ie transfer protocols, and ‘chat’ mode improved behavior on the Workbench Tektronix emulation now allows saving IFF lies, PostScript lies, and
printing bitmaps to the printer. Many other enhancements and bug lixes. Binary only Author. Willy Lange veto Fred FiShPisK 227 MidiLib A d.sk based library that permits sharing ol the serial port by MIDI applications through a MIDI message routing and processing system The mtoi utilities include a midi monitor to display incoming mtoi messages to the console, a routing utility, a midi library status utility, and more. V2.0, an update to Ffi ot. And includes significant speed enhancements, new util ties to pay with MIDI files, and updated utiles, documentation and examples 3nary only (source
for examples and turningshowever) Author. Bill Barton PtxPacket Pck Packet gives you a visual display cf the DosPackef structures that a-e sent to handlers, and lets you see the results You can actuary perform handler operations such as open fties.
Read or write data. Examne or ExNe«t loots, and so forth, as by talking c recry to the file system hander involved usmg PickPacket Vi 0.
Includes source. Author. John Toebes and Doug Wafker RexxArpUb A library which originally was supposed to be an Arexx interface to toe ARP library. However, it has also become an interface to various Intuition functions, containing over 50 functions including a file requester, stringboolean requester, environment variable functions, simple message window, wildcard expander, etc. V2.3, an update to Ffi 78, Binary only. Author: W.G.J. Langeveto RexxVathLib A library which makes various h.gh level math functions such as sin. Tangent, log. Etc. avai’a&e m Arexi V 1.2 and 1 3, Binary only Author: W
GJ Langeveto Fred Fish Disk 228 Ai A mce kttfe text editor trial s last simple to use.
And very Amiga'ued VI 40 binary ortoyAutoo*: Jean-M-dnei Forgeas Gkij A text screen onentec librarian and editor tor synths. Supports toe TX61Z DxtOO DEP5.
DW8COO. And K-5 Includes source. Author Tim Thompson, Steve Falco, and Alan Bland Jazz Bench A drop-in multitasking replacement lor VvoikBench t; has more features toat WorkBench ard is fully multitasking (no more waiting for 121 clouds), tl allows you to extend it, add your own menus, key shortcuts, etc This 15 alpha verson 0 3. B nary Oriy Author David Navas Xe&er Very comprehensrve program to monitor and control system activity Morwor cpu. Memory usage, ports interrupts devices Close windows screens, show loaded tonts or tost Guru code rixr.be- Clean up memory. Tush unused kbranes.
Eences. Fonts etc ana 3 whole bunch morel Spawns its own process A ve?y nine, background task to have loaded V1 3. An update to FF171 Assemtfy stow me toed Author: Vvemer Gunther Fred. F»sh Disk 2.29 AlamwgCtock A simple alarm clock program with a very alarming ‘ring", particularly ii you hook it up to your stereo and turn up toe volume. Includes source.
Author: Brian Neal Draw Wap A program for drawi ng representations of toe Earth s surface. Can generate flat maps mercator maps, a globe view, or an orbital view includes source Author Bryan Brown Emporos Ycu are living on the island of Emporos. Where several countries exist Youx goal is to make one of these countries your own There 15 only one way to do this, and you have to find it oul Binary only. Autnor Rciarte Renter esuoM A itrte screen hack that causes the mouse ponter to move m the opposite direction cf the mouse.
Includes source. Author. Rob Eisenhuth LeftyMouse Swaas the functions cf toe left and right mouse Burtons so that Lefces can use the mouse witotoeir left hands includes source Author: Rob Eisenhuth Shuffle A basic screen shuffler Re de' nestoe key comonation Lch Am.ga M to push toe FRONT screen to the back, instead of pushing toe Workbench screen to the each. Includes source Author: Rob Eisenhuth Sim A simulator for reosTet hansfer nets, which are used to describe hardware systems This verson also provides a compier to define new devices in aodlionto Sim's internal devices Version 4.0. binary
only. Author: Got: Mullet Fred Fish Disk 230 AskTask Al lows you lo examine various prts ol toe lask structures ol all tasks in the system, Irom the lists attached to Exec Base. Diskpiays priority, state, flags, stack, signals, etc. You can a'so remove tasks, change the priority ol a task, or send arbitrary signals to a task. Version 2 4 89.
Induces source. Author J Bickers Fedup A random access, byte oriented Me editor toat gives you the option of v« wng and editing any fie Ibrary or ASCII) usng either ASCII or hexadecimal notation Verson 21. Binary only Author. Martn Lindemann Fiiett A simpte database program written in DRACO it is meant to be pcrt3t e. Tous 1 dees rot use any of Inturton s ffflSSes, Ve*s cn t C. includes scarce Author: John Daws Ncomm A commumcatiprts prog-am based on Comm ve'son 1.34, by DJ James, wth lots cf very nee enhancements. Also includes severa* auxiliary programs such as AddCalt Cat Info, l&niso.
PtConvert, and ReadMail This is vers-on 1 8.
Binary only, Author: DJ James. Dane! Bloch, Torkel Lcdberg.etal. Pmrlnfllr A privilege violation harder for the 68010 cpu Like Decigel, but survives a reboot so you can use it with copy protected programs that run from boot Version 3, includes source in assembly code, Author: John Veksthus Guattrq Another Tetos like program Has three levels ot play difficulty, sound ehects a *3-colpr background, rent store preview, and joystck or nunberpad control. Version 1.0. Omaryorty soiree available from autoor. Author: Ka-i-Erw Jenss EcedFigh PisK 2 1 Drff Yet another drt p cgram This ore im 'ements toe
atontom bom Communications of tne ACM Apr!
76 If produces output which might be co"S.Ce’ec to se a iitde more user fnmdly nan tne standard Lfrxx style diff bfog'ams Irsduoes scarce Author Donald C Lndsay File A program to at recognizes vanous types of Hes and prints what toat type -s Recogmies font files, icon Hes. Executable files, standard object lies comtoessed files, commard scripts. C source, directores. Iff files. LaTeX source moduli II source, arc Wes. Shell commands and senpts. TeX source, dvi Ties uuencoded Ties, yacc files, zoo archives, etc Verson 10. Includes source Author Edivn Hoogerbeols NoCliCk2 A program which silences
Iho ctckmg 0! Empty drives cn the B2GCO under AmigaDOS 1.3 It should also work on an A5CO Binary only, source available from author, Author: Nor ran isccve Pic! A package for making 2D and 30 plots conveme-ntiy. AG Baxter wrote toe intuition intertace program (Plcli and Tim Mccney wrote toe Multi Plot and ThreeDPIo: programs, which are cased from Plot Ths is version t 2 and includes source to Plot Author: AG Baxter. Tim Mccney Sed Thsts ne GNU sed (Stream edtori program.
Ported to the Amiga Std copes the named files, or toe standard irpuL to its standard o-utput. Whife perfonmng certain editing cperaaons spec* ed n underlined, cr inverse fonts. Version 1 8. Includes source in Moduia-ll end assembly code Author Fridtjof Sebert NetWork Another program in toe long tradition ol ‘screen hacks' for the Amiga. Won't spoil the surprise by saying what 1 does. Version 1,0 includes source in Moduta-tl. Author Fridtjof Siebert Prmtlt A program to print IFF pcfures on Epson compatible 9 pm printers Prints m many restfutions. With many ways to convert color p*cs to black,
and white Version 1 0. Includes source m Modula ll Author. F:dt,cl Sebert WBFtc Replaces Workbench's cotor 0 wrth an IFF hires ran-irtertaced picture, m 2 or 4 colors Versdn
1. 0. mcLudes sojree m Modula-N Author Frdtpf Sebert Xhar
Replaces ne mouse porter win a screen woe crosshair which 15
useful for positioning things vertcaPy o' honzortatiy Version
1 0, ndudes sourcemUodula-ll.Author Frdtjc!&eoert Fred Fish
Disk 235 CalcKey A base lour tuncbon. Memory resident, pop up
cataifator which uses only about 24K ol memory and can
automatically type the answer 10 any calculation into the
program you were using when it was popped up Version t .0,
binary onty.
Shareware Author- Craig Fisher Ct An Amiga program to display images from a CT scanner, adng with severaf new interesting sample images of scans of real people. The display software, though i| has a primitive user interface, is quite powerful, including functions like convolutions, averaging, laptaaarvs, unsharp masking, edge detection, gradients, etc Trvs is veiwr 2-2, an update to toe version on disk 13?
Binary orty. Additional image disks avalat»e from author. Author: Jonathan Harman MirrofWars A new game featuring sound title muse, and two payer mcce You fight your opponent via laser rays, but !»ware of tne mirrors reflect ng your shots Binary enfy, Author Otw Wagner Fred Fish Disk 236 Arrjga5ench Opt m7ed Amca assembly versions 0! Toe Dftrystona benchmark. Induces 530COand 6SG20 versions. Author: AlAburtO DiskHandier A sample implemer.taton of a filesystem that reads and writes ‘ .2 format diskettes Includes source. Author Software Dislilery Heart3D A program to find left ventricle outlines
n the output cl 31 imatron CT scanner, and dsplay wirelrame animations of the beating heart.
Includes several sample CT scan oulputs. Binary only. Author: Jonathan Harman Ls Version 3.‘ ol toe popular UNIX style directory lister, This 15 an update to version 2.0 IrqmdiSh
173. And irctodes seme bug fixes, support lor multiple wildcard
pathnames, quicker sorting, a best'd output new output width
and heght options, and same other new features incudes
source Auincr Justin V McCormick.
Prcc Ex amp's p-ogram of hew to create a ful -feogeo DOS process without needng 10 can LcadSeg first. Based cn an dea presented at BADGE Includes source. Author. Leo Schwab XprZmadem An Amiga shared library wtwfi provides 2Modem fie transfer capability to any XPR- compatbie communcabohs program. Version 1.0. includes source Author: Rick Huebner FrfrdIi5ti.Pi5ii23?
CUPnnt An example of pnntmg to toe CLI from assembly code, Includes source (of course), by; Jed Glalt Ctype Another ;en file reader, but ms one is small, reasonably last, and includes bidirectional scrolling, search, go to a given percentage, and printing capabilities. Version 1,0. Includes source m assembly, Author: Bill Nelson StnpCR This little p'ogmm just makes a text file ready for use with AmigaDOS with only LineFeed characters (LF) to mark tne end ol a line. II you feed it a fie with ONLY Carnage Return characters (CR). (from a Macintosh for example) 4 will replace them wi-h tne LF
character and. It toe fila requires no changes, then it does not get changed, indudes scores in assembly by: R:l N£Son PiusCR Companion program to StopCR. A reverses toe tyocedure. PtusCR produces a hie ready for use on systems wnich require both me CR end LF characters to mark the end of a line (such as those rynnmg MS-DOS for example, rndudessource « assemby. Author. BU Nelson StripLF Competes toe set of StnpCR and PljsCR It will change an LF only file into a CR only He. !l used in comoinaun with StrrpCR and PiusCR. It competes a texl Me conversion system, includes source n assembly Author.
B1I Nelson CIS Clear Screen Command made lor the purposes ol being SMALL, and thus nol wasteful of memory when made memory resident, it consuls of 96 bytes ol memory on disk! Includes source m assembly. Autoor Bill Nelson Dplot A simple display program for experimental data, with the goals of supporting paging through lots ot ca!a and providing comfortable scaling and presentation Verson 1 0. Source ava.lable from author. Autnor A A Wairra ILBMLb A shared library (r bm.i'braryl to read wrte IFF files, dewed from toe EA IFF code alorg with various enhancements Includes examples of using me
library from C code, assembly code, or BASiC, along unto source lor examples ar-g interface ccoe Author: MG art ParOut Shows how to allocate and communicate directly wth toe parallel oort hardware from an assembly lar uage program. Includes source Author.
Jelf Glatt (original C code by Phili p Lindsay) A performance benchmark useful lor campanng Amiga processing speeds.
Soeed Performs 10300 rteralKins ol some selected groups of 68000 instructions while using the DateStamp t me function to record how many ticks u takes to compile This timed duration is then compared against two known presto ed times, one lor a stock A200G Amiga and one for an A2620 enhanced A2QQ0 A relative comparison s calculated and displayed Verson t o. includes source in assembly language. Autoor JszSan Fred Fish Disk 233 CWDemo Demo ve'son of a 000-up ut-irty to control toe color register assignments ot lituton custom screens Version 31. Pmary only Author KimPersoft Cmojse A versatile
screen & mouse Warker. Auto window activator, mouse acceerator. Popdi.
Pop window to front, push window to back, etc. widget. Indudes DlneAri. A screen Wanker replacaroent p'ogram for use with Dmouse Tnis is Dmouse version 1.20. an update to version 1.10 ond'Ss 16S-169. Includes source Autoor: Matt Dillon LabelPrint A program thai allows you 10 easify print labels for your disks This is verson 2 5. An update to version 19 from disk 210 Shareware, binary pnly (source available from autoor). Author- Andreas Krebs NGC Yet another virus check program Checks toe oootbiock on all inserted foppy d s and reports nonstandard ones. Checks the |ump tabes cf all resdert
libraries and devices and reports suspioous entries. Version t. includes source m assembly Author: IM NprdQu SI A program to draw the Tree of Pythagoras Verson 1 i, indudes source Author Andreas Krebs Pyto Sfe-nscniag A tetris l e game iStemscrtag means
• Fallmg Rock") submited by the author This is ver&on i.S, an
ubdate to version 15from cjrsk 22'. Binary only Author Peter
Handel Fred Fish Disk 239 FF 239 contains Forth proc-ans horn
the Jgoodies *1 disk, Irom Delta Research ilhe makers of jForth
Professional 2 0) All of the material has been placed into a
subdirectory I Jgoodies) Betow is a Hsling of subdirectories
under Jgoodies, and their contents.
Bamjes Various tools submitted together by the author StnngPkg rs string package for both Forth style and NHL ermmatedstrings. DateSTimeare handy tools for gettng and printing formatted date and time Utils are utilities used by toe ether Ties. CuisorControl is an example cl moving toe text cursor SpaceOrEscape is a handy word for paus-rg or stopping program output includes source code. Author Roy Brunjes Evoiurcn Trts p'ogram graphitSly stoxiates the evolution of a speces ‘bugs', toe msect kind. Bugs, represented by moving blobs, eal bacteria represented by sngie pied They mutate, compets ter
food, reproduce and pass toer mutations to to-eir offspring Fascinating example of g'aphcs and scftwaro simulation Standalpne image arid soiree code. Author: Russet Yost FFT Highly optimized Fast Fourier Transform tools for d.gtal signal processing The FFT can be used to compute the frequency spectrum of a complex signal. It is useful in a variety of different applications Floatrng point and integer versions. Mixture of high level and assembly language code Includes source (requires Jforth|. Author: Jerry Kaiiaus Handy 'guru* number mterproter (weH, handy after reboot anyway1! Tefs you what
'81000009' means for example CLI usage only. Standalone image vnto readme Tie.
Source ccce included Author. M'ksHaas Converts C style h‘ indude f les to Jfcrto styfe' j" files Useful when deve:op-ng interfaces to new A-ruga i-branes i-ke ARP, etc Standalone image and source code. Autnor PtiBurk Guru H2J HAMmmm2 Graphics hack, toat ospiays movrtg tirtes in aHAMsaeenlcrahypnolceffed Uses sound tools from HM5L if ava 'abe. For a drone sound that corresponds to toe graphics image. Standalone image and source code Author: Phil Burk HeadClear This program conbined with a fibre deanmg disk, can be used to clean toe heads on your diskdrives Source code examples cl accessing the
Trackdisk device, and using gadgets are included. Standalone image with source code. Shareware. Version 2.0. Author: Phil Burk JustBeeps Simple examp e cf using Audio and Timer devices. Plays a series of beeps whose pitches are based cn a just intoned tuning system. Standalone mage with source code.
Author PnJ Burk Mandelbrot A fas! Manceicxct rendering program that uses some 0! The mathematical properties of toe Mandetorot set *0 greatly reduce the drawing time Demonstrates graoncs programming, assembly language, menus and EFF file IO, Standalone image wrth source (fie command line script or in ascnptfife, Version 1.02. includes source. Author: Eyestrain?
Unknown, ported to Amiga by Edwin HoogerOeets FfrtfUDPlliLffl Baliyltl Anga port ot tr» former a-cade game named C'-cK This verson fixes some nwor Bugs and is faster than live previous versions Thts 5 version UJ. An update to the version released on disk 221. Snary offy shareware. Author Qfiver Wagner Dbug Machine independent macro Based C debugging package Pto tes function trace, selective prntjngol internal state infcrrr-aticn and mere This is an update to the version released on ask 102, and now indudes a machine independent stack use accounting mechanism. Indudes source. Author: Fred Fish;
profiling support by Bnayak Banenee ReScurceDemo A demo version cf ReSource. An interactive tfcassemhter for me Amiga. Tha is a complete verson except that the ’save' features have been dsabfed This a verson
3. OS. an update to verson 0 36 from dak 192 Binary only Author
GtenMcOiarmd Euflfliflfflimi 0rk A general purpose program
that caCuates both teit and twwy cycle redundancy codes iCRCs)
TeitmodeCRCs calculated By »k are portable across systems for
files that are m the usual te*f format on each system B r-a*y
mode CRCs are portable for fifes that are moved Irom system to
system without any change Brik can be used to verify and
update an embedded checksum header in tiles, It runs under
MS-DOS, UNIX system V, BSD UNIX, VAX VMS, and ArngaDOS This €
version 2 0 and indudes source, Authcr: Rahul Dhest CacheCard
An accessory to SelCPU for use win A2620 cards or 58030
systems. It modifies ne MMU table set up fry SaCPU to
ssteccvefy controlcad'-mg‘oreacnexpanso-ncard Its also an
exaropfe cf how an accessory program can track down and maSfy
the SefCPU MMU labfe without having to read all kinds o' MMU
leisters and figure it out for ycurseft Version
t. 00. includes source. Author: DavaHaynie CrcUtS Complete CRC
check files for d-sks 001-231 usmg the took program also cn
this disk. These were made drectly from my master disks. I
have switched to bnk, from the ore program used to make the
fists on dsks 133.145, and
173. Because it has more features ard because source is
available. Author Fred Fish frcflflthJMflj KwikBackUo A
nates* batxup program mat writes data track by track onto
mustopfe floppy cisks Uses tne archive saves and resteres
com-rents and protected ftegs, and skips over bad spcte
during restore. Verson i.o. mduoes source m Modua-il Author
Fndt cf Seoert MuchMora Another program bke ‘more'. "ess',
‘pg-. Etc This one uses its own screen to show the fen!
Using a stow scroll. Indudes built-in help, commands to search lor ted. And commands to pnr.t the text Works with PAL or NTSC, m normal or overscan modes, Supports 4 color text in bold, italic. Textra This easy-to-use lex!
Editor allows multiple windows, and provides a Simple mouse driven interface. Those familiar wth the ’Macintosh style’ editors will be com'ortable with Textra's Cut. Copy and Paste commands. Standalone . age. Oocumentawi
• refuted. No source code. Author MteHaa Fred Fish PtsK24Q
CrcssDOS A hryware' verson ct a mountable MS-DOS fife system
for the Amga This © a software product hat a lows you to read
ard write MS- DOS. PC-DCS and A tan ST formatted frsks (Version
20 cr higher) directly from AmrgaDOS Th-s tryware version is a
'reac only'verson which does not a low any wrtes to the disk A
lully functional version is available tor a very reasonable
price (tom CONSULTRQN Version
3. 02. binary only. Author CONSULTRQN.
Leonard Poma Dis An Amiga DOS shareable library when implements a symtelcsmgte-ins’Juctcn disassembler for tne MC63300 family and a program which uses the library to disassemble- dump Arnica CCS object fifes, making full use of symbolic and relocation information, includes soiree code in Draco. Author Chris Gray DM-Maps IFF maps to the Dungeon Master game All 14 fe-vefe are inciuoed Author: Unknown MemLfc A link library of routnes to aid in debuggng memory probferts. Works win Lasce C 5,0 and pcssxiy with easier versions, ft s features ndude trasrtrg aJi aiocated memory. Trashing al1 heed
memory, keeping track of freed memory wnh notification if it is written to, notification ot memory freed twee y not at all. Notification of overrunning or underrunning allocated memory, generat.cn of low memory conditions for resting purposes, and identification of violations ol momory use by filename ard line number of the allocating routine.
Includes source Author John Toeoes and Doug Walker R jnBack Aucws you to start a new CLI program and run it in the background then closes the new CLI This is version 6. An update to the version cn disk 152 ithe version on dak 2t4 apoears to be on a different evolutionary path) Ths version compies untef Lattice with many optimizations enatfed and can be mace resident, includes source Author: Rob Peck. Darnel Barreti. Greg Seahe.
Doug Keifer Xortb External file transfer protocol library. Document and cede example lor implementing external fife transfer protocols using Amiga shared libraries.
This is an update la the version included with tne vtt program on disk 226 Author Willy Langeveld ASDG-rrd Extremely useful shareware recoverable ram disk.
This Amiga DCS device driver implements a completely DCS compatible disk device m memory that survives resets, gurus, and crashes An afrsc'ute must for those with lots of ram The is an upcate to the version released cn disk 58 It new works with up to 8Mb cf memory It was rewritten m assembly anti e now faster and much smaller Binary only. Author- Perry Kvoiwti. ASDG Inc, CSBS Tne WCRL1 BBS system for use in amateur rad*o Orignaly wrren for IBM-PC compatibles it was ported to the Amiga by Pete Ha-ore This is version 6.1c with source code. Author: Hank Oredson. The C8BS group Pete Haiti,e
Fix5803 £3 A program which patches executables that fail to run cn machines equipped with an M68Q10. So that they no longer use the prohibited privileged instructions. Binary only. Author. Gregor Brandt M an A program sim i(ar IO the U NIX ’man’ program Displays information about a topic from manual pages Dees net include any database of topes, you nave to supply your own Version i 2.
MducJes source Author Garry Gfenoown NcCfeck A program mch siferces CfiCterg of empty drives cn ne 32020 under Amiga DCS i 3 It should also work on an AMO Th s $ version 3 4.
An update to the verson ends* 231 includes assembly source code. Author: Norman Iscove Tifes A Basic life game twe Shanghai or Gun Shy A board is covered with a set ol 144 tiles. 36 different sets of 4 identical tiles each win a picture on it. The object is to remove all the tifes, 2 at a lime, by matching identical Fes Verson 2.1. includes source in Module It Author. Todd Lewis Fred Fish Disk 242 EociBldcks Detailed documentation cn wtia: a bootbiock is and how I works a lore with some sampfe cootoocks ard a program to install a custom bootbock includes source fcr the sarpfe becfr ocks ard ne
nstaS program Author Jonamar Potter CheckiMem Allows you. To check to? A specified amount cf memory, wntn certain attr.tutes from a batch fife, if me requirements are no’ net a WARN retumcode is generated. Version 2. Includes source, Author: Jonathan Potter CustRec A glorified ASK command lor your startup- sequence it generates a requester with the specified title, text, posirve and negative gadgets (either ot which can be tne default), and an optional timeout value. Version 2. Indudes source Author: Jonathan Porter Fi-eReq This s Jonathan’s second verson cf a fife requester, and rs much more
powerful than the one induced on osk 20A Sha'eware. Indites source Aunor Jonathan Potter FuliVew A text viewer that uses gadgets at the bottom cf the screen (thus can display text SO columns wide), opens uo to the full height of the workbench screen, has fast scrolling, and can work with compressed files (fife compression program included). Shareware, binary onfy, source availabfefrom author Author: Jonathan Potter lmage-Ed An icon editor tha! Allows you to draw and ed-t images up to 150 by 90. In up to 16 colors. Allows freehand draw-ng. Empty or Tied rectangles, copses, and tnangfes. Lines
curves and polygons, copy, fnp about x or y axis, stretching and Find over 1700 freely redistributable programs in an easy-to-read format, Each program is arranged by disk and indexed in: AC’s Guide to the Commodore Amiga Fall 1989 Edition On sale soon at your local Amazing Dealer center-s-ng. Flood fA and ccmpfenenr. Text w.n se?eaion and loacmg cf font style undo, magnfed ard rcrmal szeti mages, and rwc actrve drawing screens at once Ths 3 vezs cn 2.2, an ujteie to version 1.9onOiSk2n. Sirtary only, source available from author. Author: Jonathan Potter JAR A sha*eware game I Jump Ana Run)
using 3-D graphics Your task is to collect the bluepffls lying on the floors and steps, not to fall down or off the steps, and to avoid several monsters wandering about You can collect various sorts of weapons to use against the monsters. Version i ,0. Binary only, source available from author. Author: Andreas Ehreniraui JPCtock A short clock program that is just packed with features This cs verson 1.2. an upcate to version on dik 2C4 incudes source by: Jonathan Potte' Pprefs Preferable Preferences s a program designed to replace Jfe Standard preferences, nal is shorter, more effcert, and
easier to use. Binary onfy.
Author Jonathan Polter PafeEeReq An easy way to set the pafette of any screen 'rcm your p'ogram tno'utes source, by:Jonathanf orer Poplnfo A small utility which -pops open’ w gve you information about the status ol your devices and memoy, This is version 3,1. An update to version
3. 0 on disk 223, Includes source. Author: Jonathan Pouer
ZeraVirvs A fully integrated virus checker and killer, with
bootbiock save and restore features. Finds both bootbiock and
life based viruses This is version 13 binary onry, Author:
Jonathan Potter Fwd R»h Diak 243 Fraglt A dyname memory
thrasher for the Amga Ftagff randomy allocates and deallocates
psueoo- rardom sue values of merrcry. Rargngfrom 1& bytes to
50000 bytes by de'aut The resurt is an aiocaton nightmare,
tficusands c-f memory fragments are being created and
destroyed camin'jousiy. This puls stress on me memory
allocation routines of an application undergoing testing by
simulating a very busy, highly fragmented memory environment.
This is version 20, featuring many bug fixes, a lull intuition
interface, configuration settings via the icon, and more.
Indudes source. Author: Justin V, McCowck imageLab A program
which performs image processing on IFF pictures, Indudes
standard mage p-'ocesang function*Such as convg-itte.
Averaging, smoofing. Enhancement hstograns FFTs.stc Aso
fedudes file ecrve*son functions, a 6-ptward and Other useful
luncticrs Verson 2 2.
Bna'yon.'y Author- GaryMiHom LPE LaTeX Picture Ector ig a graphical editor for producing ’pcfures" for the LaTeX system, which may be imported by LaTeX. You can draw boxes, dashed boxes, lines, vectors, circles, boxes with centered text, and plain text This s version 1.0, binary only Author. Joerg Gefeste- NoCiick A program which silences the dick ng ot empty drives on the B2000 under AmigaDOS 1.3 It should also work on an A5QQ, This is version 3 5 a last mir.ute update to version 3 4 on dsk 241.
Includes assembly source code Author: Norman iscove Password A program whch enhances your computer s security by making a complicated enough mat users without your password wi I get dscouraged trying to boc t ard use your system. This should keep cut most casual or nontecnncai users.
Versicn t 2ip, bmary only. Author: George Kerper Pcapy An intuition based dsk copter s’miSar to the resident 'DiskCopy’’ This is version 2.0, a highly upgraded rewrite of the verson on d;&k 15T it features high speed diskcopy with write-verity and data recovery Irom damaged tracks A lot of effort has gone into making this copier friendly in its usage, as well in its multitasking properties.
Emary only, Author: Dirk Reisig SmiGen Ths program will add a 2 crAcoio' picture to your Work Bench screen. I* tne ocure s dgtzed. 1 wilt lock nucn like a genlock hence the name SinGen (SmUated GemocK), Bmary or,fy. Author: Gregg Tavares S-uperLr s A re* Ims demo with a readme control panel that you can use to change various aspecs cf me action. Has 10 buft m cclcr pafedes. Support for th.ngs fke color 'smudge’, co-'crcydmg, color feource’. Mutpfe resolutions, and can cipfey either lines or boxes. This is verson 1.0. binary only. Author: Chris Bailey WarpUtil Warp (version 1.11). UnWarp
(version 1.0), and WarpSpM (version 1.1). Warp reads raw filesystems and archives them mte a compressed version in a normal fife UnWarp turns them back intpfiesystems. WarpSptt spins them up into smatfer pieces on a back by track Oasis. Bmary only. Author SD3 Software Fred Fi&h Pi&h 244 SaCharrpfcn ThssBootBtekCharfWfilll. A very nicety dene p’og'an that aTows ycu to lead save, and analyte any ocotbtek, This is version 3. T. binary only, Audior: Roger FischSn Boctfntro This program creates a small intro on the bootbicck of any disk which will appear after you insert the disk for booting, The
headline can be up to 44 characters. The scrolling texi portion can be up to 300 characters. Ths is version 1.2, an update to verson J.Ocn disk 133. Binary only.
Author Roger Rschl n F MC An alternative to the NoFastMem program Uses a cute l-tte switch gadget to turn fast memory on or off Version 12. Indudes source m assembly cede. AuthO' Roger FisChrn SseChecker Sue checker uses a fast ol possible sees ol a fife to check fcr une jpected changes in the sue of Ihose files, Fcr example, it can be used to spot a link virus or to poini cut changes in the configuration ol your system. With the appreciate comments added to your size fist, you can check to see what version cf the files you are usmg
11. 2.1 3 1.4. ARP.efci. Version 1.0. binary only Author Roger
Ftschlin TextDispiay A text display program Ike ’more' or
less', Dui about has the &te and handles al! Screen formats
(paL-rttsc, interface non- interlace, etc). This is version
1.52, an update to version i .1 on disk 138. Bmary orty,
Aulfor: Roger Fischltp Xcolor A program descried to cnarge he
colors o' any screen Ycu can also add and subtract DtfpferteS
m the sceen or convert the screen !o black, and white
[grayscale) Handles HAM and EHB screens Version 12, includes
source in assembly code, Author. Roger Ftschltn In Conclusion
To Hie best ol our knowledge, the materials in this library
are freely redistributable. This means they were either
publicly posted and placed in IhB public domain by their
authors, or they have restrictions published in their files
to which we have adhered, If you become aware of any
violation ol the authors' wishes, please contact us by mail.
This list is compiled and published as a service lo the Commodore Amiga community for informational purposes only.
Its use is restricted to noncommercial groups only! Any duplication for commercial purposes is strictly forbidden. As a part ol Amazing Computing™, this list is inherently copyrighted. Any infringement on this proprietary copyright without expressed written permission of the publishers will incur the full lorce of legal actions.
Any non-commercial Amiga user group wishing to duplicate this list should contaci: PiM Publications. Inc.
P. O.Box £69 Fall River, MA C2722 PiM Publications Inc. is
extremely interested in helping any Amiga user groups in non
commercial support for the Amiga.
17 I rt HU Subscribe and Mare!
Amazing is now available by Visa and MasterCard dial 1-800-345-3360 or use the form below.
R~ Amazing Deal!
Name_ Address.
City- Zip.
State Charge my Qvisa ! MC _ Signature_ Expiration Date _ Telephone 1-800-345-3360 Ail Charges sre subject to a 520.00 minimum (charges under 520.00 will receive a 52.00 service charge.)
PROPER ADDRESS REQUIRED in order to expects ar,c guarantee your order, ail large Pudic Domain Software orders, as wen as most Back issue orders, are slipped by united Parcel Serve©. UPS requires Pi a: a- packages be addressed :o a street address for correct de very One Year Of AC! Please circle the appropriate item: New Subscription Renewal Our regular renewal now includes 12 monthly issues of Amazing Computing plus the Spring edition of AC GUIDEfLluai ? S28.00 U.S ? S44.00 Foreign Surface [ I $ 36.00 Canada and Mexico (air mail rates available on request) Our New Super Sub!
12 monthly issues of Amazing Computing PLT IS AC GXJIDE &MIGA 3 Product Guides! Spring, Fall, and Winter! A savings of $ 32.25 off the newsstand price.
Please remember, the Product Guides alone retail for $ 6.95 each!
? $ 36.00 U.S ? S52.GO Foreign Surface ?$ 44.00 Canada and Mexico (air mail rates available on request) ® VISA © Subscription: S Please circle any additional choices below: SingleBackfssues: , (
1. 2
1. 3
1. 4
1. 5
1. 6
1. 7
1. 8 1 3 $ 5 each US, 2.1
2. 2 23
2. 4
2. 5
2. 6
2. 7
2. 8 29 $ 6 each Canada &. Mexico, 3.1
3. 2
3. 3
3. 4
3. 5
3. 6
3. 7 3,8 39 $ 7 each Foreign Surface. 4.1 Public Domain Software:
4. 2
4. 3
4. 4
4. 5
4. 6
4. 7
4. 8
4. 9
2. 10
3. 10
4. 10 2 11
3. 11
2. 12
3. 12 Back issues: $ $ 6.00 each tor subscribers (yes, even the
new ones!)
$ 7.00 each for non subscribers (three disk minimum on all foreign orders) Please circleyour Public Domain Software choices below: Amazing on Disk; A *.. Source & Listings V3.8A V3.9 A 3 . Source & Listings V4 .5 & V4.6 At5.. .Source 4 List-ngs V4.3 InNOCKulation Disk: JN i...Virus protection Aa2 . Source A Listings V4.4 AHA . Source A Listings V4.7 A V4.S A*6 . Source A Listings V4,10 1 2 3 4 5 6 7 a 9 10 11 12 13 14 15 IS 17 18 19 20 21 22 23 24 25 26 1 2 3 4 5 6 7 3 9 10 11 12 13 14 15 15 17 18 19 20 21 22 23 24 25 26 27 25 29 30 31 32 33 34 35 36 37 33 39 40 41 42 43 44 45 45 47 43 49 50 51
52 53 54 55 56 MA 53 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 MA 61 82 63 B4 85 86 87 MA 89 90 91 92 S3 94 95 96 97 98 99 100 101 102 103 104 105 106 107 106 109 110 111 112 113 114 115 116 117 113 119 12: 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 133 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 158 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 136 157 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 233 239 240 241 242 243 244 AMICUS Fred Fish Disks POS Disks: $ (MA Denotes disks removed from the collection) Please complete this form and mail with check, money order or credit card information to: PiM Publications, Inc.
P. O. Box 869 Fall River, MA 02722-0869 Please allow 4 to 6 weeks
for delivery Total: Subscribe and More!
Amazing is now available by Visa and MasterCard dial 1 800-345-3360 or use the form beloiv.
Amazing Deal!
Name_ Address„ City- State Zip.
. Expiration Date Charge my i_l Visa CMC _ Signature_ Telephone 1-800-345-3360 All Charges are subject to a $ 20.00 minimum (charges under S20.00 will receive a S2.00 service charge.)
PROPER ADDRESS REQUIRED In orCerto e*p xJito and guarantee your a roar, ah large Public Domain Software orders, as well as most Back issue orders, are shipped by United Parcel Servco. UPS requires ‘Jtai alt packages be aCCressed to a street acC'ess (or correct delivery, One Year Of AC! Piease circle the appropriate item: New Subscription Renewal Our regular renewal now includes 12 monthly issues of Amazing Computing plus the Spring edition of AC4 GUIDE Asuga I i S28.00 U.S [j 54-4.00 Foreign Surface Q S36.00 Canada and Mexico (air mail rates available an request) Our New SuperSub!
12 monthly issues of Amazing Computing PLUS AC CLTDT t.WrUl 3 Product Guides! Spring, Fall, and Winter? A savings of $ 32.25 off the newsstand price.
Please remember, the Product Guides alone retail for $ 6.95 each!
? $ 36.00 U.S O $ 52.00 Foreign Surface ? $ 44.00 Canada and Mexico (air mail rales available an request) Subscription: $ _ Please circle any additional choices below: Single Back Issues:
t. t
1. 2
1. 3
1. 4
1. 5
1. 6
1. 7
1. 8
1. 9 $ 5 each US,
2. 1
2. 2
2. 3
2. 4
2. 5
2. 6
2. 7
2. 3
2. 9
2. 10 2.11 2.12 S6 each Canada & Mexico,
3. 1
3. 2
3. 3
3. 4
3. 5
3. 6
3. 7
3. 6
3. 9
3. 10 3.11 3.12 $ 7 each Foreign Surface.
Public Domain Software:
4. 1
4. 2
4. 3
4. 4
4. 5
4. 6
4. 7
4. 8
4. 9 4,10 $ 6.00 each for subscribers (yes, even the new ones!)
$ 7.00 each for non subscribers (three disk minimum on a!) Foreign orders) Please circle your Public Domain Software choices below: Amaxing on Disk; Ann. _ Source S Listings V3 64 V3 9 A 2.
A 3 .. Source S Listings V4 .5 & V4.6 A*4 A 5. . Source & Listings V4 9 A46 InNOCKulaiion Plskt iN t , Virus protocUon Back issues: $ _ .Source & Listings V4.4 Source 4 Usings V4.7 & V4.8 Source & Usings V4.*0 1 2 3 20 22 4 23 4 23 42 61 NA 99 6 25 6 25 44 63 62 7 26 7 26 45 64 83 10 It 12 13 14 15 16 17 18 19 2 21 40 59 78 97 115 117 134 135 1 36 153 15-1 155 173 174 192 193 210 211 212 229 230 231 1 20 39 53 77 96 115 3 22 41 60 79 93 9 2B 47 66 85 10 29 43 67 86 11 32 49 68 87 13 32 51 70 39 14 33 52 71 90 15 34 53 72 91 15 35 54 73 52 17 36 55 74 93 19 3B NA 76 95 PDS Disks: 172 191 Total:
113 119 120 121 122 123 124 125 125 127 128 129 130 131 ’32 133 137 '38 139 140 141 142 143 144 145 146 147 148 14S 150 151 152 156 157 158 159 160 161 152 163 164 165 166 157 168 169 170 171 175 176 1 77 1 73 179 130 181 182 163 1 84 1 85 1S6 187 1S8 189 190 194 195 1 96 197 193 199 200 201 202 203 204 205 206 207 208 209 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 232 233 234 235 236 237 233 239 240 241 242 243 244 (NA Dsnoies disks removed from the collector} Piease complete this form and mail with check, money order or credit card information to: PiM Publications,Inc,
P. O. Box 869 Fali River, MA 02722-0869 Please allow 4 to 6 weeks
for delivery AMICUS Fred Fish Disks 100 101 102 103 104 105
106 107 108 109 110 111 112 113 114 L. Amazing Reader Service
Card JL JL C OMP UTXNC' _ 7 Want to know more about Amazing
Computing Advertisers and their products? Here’s your chance!
Complete the card below and drop it in the mail (U. S. only). We will process your request and forward it to the appropriate advertiser. Quick, easy, and efficient just like all the services of Amazing Computing: Your Original A MIGA Monthly Resource.
E. Which type of articles do you like to see O 4. Soon O 5 Net
Yet O 6. Just Looking O 1. TT Language O O 2. Forth Language O
O 3 Mcxiuia-2Language O O 4 Assembly Language O O 5 BASIC
Language O O 6 GamcKcviews O O 7. Business Reviews O O 8.
Hardware Product Reviews O O 9 Software Product Reviews O Q
(j. Printer O 7, Modem O 8. MuSiC Tool O 9. Video Product O
10. Other
f. Which articles wauldyou Iik e t o see more of in .Ama n ng
Computing O 1. C Language O 2, Forth Language O 3, Modula-2
Language O 4 Assembly Language O 5. BASIC Language O 6. Game
Reviews O 7. Business Reviews O S Hardware Product Reviews O
9- Scftw-arcProduct Reviews O 1 Cr. Progra mining 1 tow To's O
11, Business How To's O 12. Video Articles O 13. Graphics
Articles O 14. Music Articles O 15 I lardw»rc How To's O 16
PDS Updates O 17. Interviews O 18. Other O 1 O 2 O 3 O 4 O 5 O
6 O 7
8. Spreadsheet
9. Da taba.se
10. Financial
11. Video
12. Graphics 13- Music
14. Other
G. Arc you a subscriber to ArnazingCamputmg7 O 1 Yes O 2. No Oct
'89 1
D. Where do you buy your Amiga products1 O I Local Amiga Dealer O
3- Manufacturer O 2 Discount Department Store O 4. Mailorder
Amiga 500 O 2 Amiga 2000 O 3 Memory Expansion O 4 Hard Drive O
5 IBM Emulators (Sidecar or Bndgcbcard) 'C Language Forth
Language Modula-2 Language Assembly Language basic language
Entertainment Telccomrrtu rucw.li ons B What Amiga hardware
product do you plan to buy next?
1, Do you own an Amiga ?
O 1. Amiga 1000 O 2. Amiga 500 O 3 Amiga 2000
C. What Amiga software product do you plamobuy neat?
Name_ Street_ City_ Country in Ama xing Computing?
10. ProgrammingHowTo's
11. Busi ness I i ow- To's
12. Video Articles
13. Graphics Articles
14. Music Articles
15. Ha rdwarc I low To'S
16. PDS Updates
17. Interviews
18. Other 101 102 103 10-1 105 221 222 223 224 225 106 107 108
109 3 10 226 227 228 229 230 111 112 113 114 115 231 232 233
234 235 116 1 17 118 119 120 236 237 23S 239 240 121 122 123
124 125 24 3 242 243 244 245 126 127 128 129 130 246 247 248
249 250 131 132 133 134 135 251 252 253 254 255 136 137 138
139 140 256 257 258 259 260 143 142 143 lit 145 263 262 263
26-1 265 146 147 148 149 150 266 267 268 269 270 151 152 153
151 155 271 272 273 274 275 156 157 158 159 160 0 1 !
277 278 279 280 l6l 162 163 164 165 2E1 2S2 233 284 285 166 167 168 169 170 286 287 288 289 290 171 172 173 174 175 291 292 293 294 295 176 177 178 179 380 296 297 290 299 3oo 181 182 183 18-1 385 303 302 303 304 305 186 187 183 189 190 306 307 303 309 330 191 192 193 19-1 195 311 312 313 314 315 196 197 198 199 200 316 317 318 319 320 201 202 203 204 205 321 322 323 324 325 206 207 206 202 210 326 527 328 329 330 211 212 213 214 215 331 332 333 334 335 216 217 218 239 220 336 337 338 339 310 AC Oct. ’89 Valid Until 12 11 89 see page 96 for reference numbers Reader Service Card Reader Service
Card AC Oct. '89 Valid Until 12 51 89 see page 96 for reference numbers ST. n AnuiingCompuUng?
10. Programming How To's
11. Business I lowTo’s 12 Video Articles 13 Graphics Articles 14
MusjCArticles 15 Hardware 1 low 1’o‘s 16 PDSL'pdatcs
17. Interviews 18 Other O 4, Soon O 5. Not Yet O 6 Jus: Looking
6. Printer O 7. Modem O 8. Music Tool O 9. Video Product O 10
Other O 10. Programming Howl O 11 Business HowTo’s O 13, Video
Articles O 13. Graphics Articles O 14 Music Articles O 15
Hardware HowTos O 16 PDS Updates O 17 Interviews O 18. Other O
8. Spreadsheet Q 9 Database O 10 Financial O 11 Video O 12
Graphics O 13 Music O 14. Other
D. Where do you buy your Amiga products* O 1. Local Amiga Dealer
O 3 Manufacturer O 2. Discount Department 5tore O 4 Mailorder
O 1. Amiga 500 O 2 Amiga 2000 O 3 Memory Expansion O 4. Hard
Drive O 5. IBM Emulators Csidccaror Bndgeboard) O I.
'CLanguage O 2. F oith language O 3 ModuIa-2LangJigc O 4
AvscmNy language O 5 BASIC Language O 6 Entertainment O 7.
Telecommunications k Do you own an Amiga?
O I. Amiga 1000 O 2. Amiga 500 O 3 Amiga 2000 C What Amiga software product do you plan to buy next?
Vt hat Amiga hardware product do you plan to buy next?
Name_ Street_ City_ Country 'C'Languagc O O 2 Forth Language O O 3 Modula-2 Language O 4 Assembly Language O O 5 BASIC Language O O 6 Game Reviews O O 7 Business Reviews O O 8 Hardware Product Reviews O O 9 Softwi rc Pi odu ft Rpi O O 1 ‘C Language O 2 Forth Language O 3 Modula-2Language O I Assembly Language O 5 BASIC Language O 6 Game Reviews O 7 Business Review* O 8 Hardware Product Reviews O 9 Software Product Reviews F Which articles would you like to see more of m.A mazing Computing?
G. Areyou a subscriber to Amazing Computing* O 1 Yes O Z No tL
Which type of articles do you like to see Oci 89 2 ZiP 101 102
103 104 105 221 222 223 224 225 106 107 108 109 110 226 227
228 229 230 111 112 113 114 115 231 232 233 234 235 116 117
118 119 120 236 237 238 239 2-10 321 122 123 124 125 241 242
243 244 245 126 127 128 129 130 246 247 248 249 250 131 132
133 134 135 251 252 253 254 255 136 137 138 139 140 256 25?
258 259 260 141 142 143 144 145 26l 262 263 264 265 146 147 148 149 150 266 267 268 269 270 151 352 153 154 155 27 J 272 273 27-| 275 156 157 158 159 160 276 277 278 279 280 161 162 163 364 165 281 282 283 284 285 166 167 168 169 370 286 2S7 283 209 290 171 172 173 174 175 291 292 293 294 295 176 177 178 179 180 296 297 298 299 300 181 182 183 18-1 185 301 302 303 304 305 386 187 188 189 190 506 507 308 309 510 191 192 193 191 195 511
* 12 313 314 315 196 197 198 199 200 516 317 318 319 320 201 202
203 204 205 321 322 323 324 325 206 207 208 209 210 326 327 328
329 330 211 212 213 214 235 331 332 333 334 335 216 21?
P. O. Box 869 Fall River, MA 02722-0869 NO POSTAGE NECESSARY IF
P. O. Box 869 Fall River, MA 02722-0869 r Save BIG on a SuoerSub
"I 3 Product Guides! S Please rent Q $ 36.00 U.S. Acs Guide Om!
I Fall '89 & Wwtar'9058,95 U.S, mmm VISA City i - Amount
Enclosed Signature
o ¦ ¦¦ ¦ ST Zip
- iLi ' ......r In card fdcfsofa JZOOsc J L A,, to *Jii
Ix: in l'.S currency drawn on i US bark Pink allow [our :o sot
seeks for pfoc rg Please Mail to:
P. O. Box 869 Foil River, MA 02722-0869 Place this order form in
on envelope with your Check or Money Order, Amazing Deal!
Name __ Address- City._ Charge my G isa GMC _ Signature_ Zip_ State Expiration Date.
Telephone 1-800-345-3360 All Charges are subject to a S20.00 minimum (charges under $ 20,00 will receive a $ 2,00 service charge.)
PROPER ADDRESS REQUIRED. Inordarto expedite and guarantee your order, all large Public Domain Software orders, as well as most Back issue orders, are shipped by United Parcel Service. UPS requires that all packages be addressed to a street address for correct delivery.
One Year Of AC! Please circle the appropriate item: New Subscription Renewal Our regular renewal now includes 12 monthly issues of Amazing Computing plus the Spring edition of AC" GCIDEj&MIGA G $ 28.00 U.S G $ 44.00 Foreign Surface ? $ 36.00 Canada and Mexico (air mail rates available on request) Our New SuperSub!
12 monthly issues of Amazing Computing PLUS AC GUIDE MIGA 3 Product Guides! Spring, Fall, and Winter! A savings of $ 32.25 off the newsstand price.
Please remember, the Product Guides alone retail for $ 6.95 each!
G $ 36.00 U.S G S52.00 Foreign Surface G S44.00 Canada and Mexico lair mail rates available on request) Subscription: $ _ Please circle any additional choices below: Single Back Issues:
1. 1
1. 2
1. 3
1. 4
1. 5
1. 6
1. 7
1. 8
1. 9 $ 5 each US,
2. 1
2. 2
2. 3 2,4
2. 5
2. 6
2. 7
2. 8
2. 9 $ 6 each Canada & Mexico, 3.1
3. 2 3 3
3. 4
3. 5
3. 6
3. 7
3. 8
3. 9 $ 7 each Foreign Surface, Public Domain Software:
4. 1 4,2
4. 3
4. 4
4. 5
4. 6
4. 7
4. 8
4. 9
2. 10
3. 10
4. 10
2. 12
3. 12
2. 11
3. 11 Back Issues: $ $ 6.00 each for subscribers (yes, even the
new ones!)
$ 7.00 each for non subscribers (three disk minimum on all foreign orders) Please circle your Public Domain Software choices below: Amazing on Disk: A 1.. .Source & Listings V3.8& V3.9 A 3.. .Source & Listings V4.5 & V4.6 A 5.. .Source & Listings V4.9 InNOCKulation Disk: IN 1...Virus protection Art2.. .Source & Ustings V4.4 Am.. .Source & Ustings V4.7 a V4..[ AS6.. .Source & Listings V4.10 1 2 3 4 S 6 7 20 21 22 23 24 25 26 10 11 12 13 14 15 16 17 18 19 3 4 22 23 41 42 60 61 79 NA 98 99 7 26 45 64 83 9 23 47 68 B5 10 29 48 67 86 12 31 50 69 13 32 51 70 14 33 52 71 90 15 34 53 72 91 16 35 54 73
92 17 36 55 74 93 18 37 56 75 94 19 38 NA 76 95 1 20 39 58 77 96 2 21 40 59 73 97 PDS Disks: $ _ NA 89 113 114 132 133 151 152 170 171 189 190 208 209 227 228 to: Total: 100 101 102 103 104 105 106 107 108 109 110 111 112 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 153 154 155 156 157 158 159 160 151 162 163 164 165 166 167 168 169 172 173 174 175 176 177 176 179 180 181 162 183 184 185 166 187 188 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 218 219
220 221 222 223 224 225 226 229 230 231 232 233 234 235 236 237 236 239 240 241 242 243 244 (NA Deno:es disks removed from the collection) Please complete this form and mail with check, money order or credit card information PiM Publications, Inc.
P. O. Box 859 Fall River, MA 02722-0869 Please allow 4 to 6 weeks
for delivery AMICUS Fred Fish Disks Unmatched.
Colorize - Play Ted Turner and add color to black-and-white images or change colors on already colored images.
Flexible Text Rendering Allows for anti-aliased fonts, Rainbow Fonts a Transparent Fonts and more.
Texture Mapping with Anti-Aliasing - Gives you super-fast warping and stretching of any image.
User-Controllable Transparency - Allows real time control of the amount of transparency and the location of the light source.
Variable Dither - Computed internally at 30 bits per pixel (over one billion colors). Giv you over 100,000 app; ent colors on screen.
Transfer 24 - Digi-Paint 3 comes with Transfer 24 image processing software to give you support of all Amiga resolution modes and the same advanced image processing found with NewTek's best-selling Digi-View Gold Video Digitizer.
100% Assembly Language - Makes Digi- Paint 3 the fastest HAM paint program ever!
Super BitMaps with Auto-Scrolling - Realtime scrolling on up to 1024 pixels high or wide image with full overscan display.
The Ultimate Paint Program: ?IGI'RAINT(g N=wT=k For more information call NewTek at 800-843-8934 or 913-354-1146 Digi-Paint 3. Digi-View Gold and Transfer 24 are trademarks of NewTek Inc. INCORPORATED

Click image to download PDF

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

Thanks for you help to extend Amigaland.com !




Today: 52
Yesterday: 75
This Week: 750
Last Week: 669
This Month: 2544
Last Month: 2931
Total: 63612

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.


Visite depuis
Visite depuis