Sponsors

FacebookTwitterGoogle Bookmarks

The Amiga offers tremendous potential as yet untapped. MIDI, the Musical Instrument Digital Interface, still in it's commercial infancy, is just beginning to take off in popularity. Yamaha has opened the floodgates to a new synthesis technology with FM sounds. Korg has blended sampled sounds and traditional analog technology into an affordable hybrid. Casio, Ensoniq and a host of others are bringing different approaches to the masses at unheard of prices. It goes on and on, and we are in the midst of it, or can be. All we have to do is open our eyes. And our ears. Nybbles, Rick Vol. 1 #5 June 1986 Page 14 AT COMDEX The Sidecar, closely mated to an Amiga, with an extra 3 1/2 disk drive on top. The Sidecar is about an inch taller than the Amiga system unit. Sidecar A First Look by John Foust The Sidecar is a hybrid machine that unites the Amiga and IBM PC computers. It provides complete IBM PC compatibility for the Amiga, wi1h a 5 1/4 disk drive, three PC-compatible card slots, 256K of onboard RAM, and a numeric coprocessor socket. The Sidecar stands an inch taller than the Amiga system unit. It mates directly to the side of the Amiga, to both the system bus and the joystick connectors. It is not a system bus passthrough, so it must be the last peripheral device connected to the Amiga bus connector.

Click image to download PDF

Document sans nom V ff v_ J) Commodore Amiga™ Information and Programs Sidecar A First Look:: y-An Interview with R. J. Mical Programs Building C Tools HSI to RGB Conversion Tool
Tutorials: The Amazing C Tutorial, Forth, Inside CLI,
Microsoft Basic HSI r. W.UUA UUJ7 Fall River, MA. 02722 1-617-679-3109 Compurt*
Cantar Computers Etc. Computaf Outlet Leigh* Compulare Ray
Supply Ire, Software & Such Sottwara C*ty Software Supermarket
Star T*ch Syttama Tadrow Butinass Products The Working
Computer Vidao Computer Cantar Wodd Computars Inc. Nartf]
Carats Tnad Computers 0*vO Computer Nehwork Computers Plus ol
Ono Earthr. te Mcro Syttems Eartfrise Mao Syttems Lakes
Consumer Electronics Moo Cantar Mere wave Magic North Coast
P'ogramrnug North Coast Programming Oua'-ty Computer Appi areas
Quality Computer Apa arcts Sa*tar. Computer Center Sohware
Cany* lot Software and Lvt Software Connect on Grand Rapdt
Patowikay Ann Arbor Travarta City Laming PonSac Alan Perk Novi
kitkand Lkonoi St Joseph Grand Rtpids Rota villa Madton Heghtt
Grand Rapids LvOTta Haoma;oo Ycslani Farmnglon K, ils Augusta
Savannah M Homo Litti Rock. Delaware Cdumbus Akron Cdumout Fa eid Scion Wioughby Toedo Toedo Sandusky Norm Omstad Cindunat Mayfeid Hts Renton Everett Tacomu B»l.i*w Scart* Roseville Mnneapofts MontcailO Eagan V. ilia G'W a Htbryj Mnraionka Hopiur. t Bata u a Champagn Par
Rdga Nias Nacarv. A Normal Starting Raat* kVwaul** Fond Du Lac
Wavtan South 3a nd Ft Wayn* Fort Via-yra Mch gan C-ty
Greanlaid ind;a. nope«is West Lefayer. a Coonut Vdeo A ConpuiK
PCTach Second Hand Software V deo Comp inc &*t»n Ciaoktomas
Computers Camoutron Busness Sys 13 Computers Schwa’* Eerier
Software Eipress Qsylvarsa Barttasvila Tulsa Ck.3ho.mj C*ty
Lawton Lot Ange!** Santo Rota Scoot Vafey Downey Berkley
Atwrta Ab* na Aberta Aberta Aberta Abera Aberia Aberta Bntth
C**jrrt n Britt h Cobrtpia Bfitsh Cob nba Bntih Cobntka
Britth CoAifTba Bntsh Cobnt a Manitoba Manitoba Mi fit me s
Mantrrat Man cm* i Maritrnet Ontario Ontario Ontario Ontario
Ontario Ontario Ontario Ontario Quebec (Xebec Quebec Quebec
(Xebec (Xebec Quebec Qsckemas Portland PcrCartd Beaverton
Eugene Vactita bt»'B Nawon Manhar. an Raiegn Car&cro Graambero
Am ora E f*'g;*«n Lakewood Ceforado Savings Englewood Apha
Omvega EBE Warren Bauc Computer Systems Hernytag Data
Softnyj* Cortpuerware Pittsburg PitttLu'gh Computer Steve
Pittsburgh Thong!* Computers Indiana piode ifand ConpL'tepj
Provdence CompUticia Warwick Ir. terrationaf Computer S*rv
Johnston Mnrt Gaerg town Norwalk Norwich Oangn Enst Windsor
New Hav*rt Ca-rCndga Laomnsiar Boston kfersh'. ad Norwood WaLs!
Ey Tewksbury A. mhiarK West Nawton South Orangi F airfaid RdgawopJ Chaitar
JjCktOn i. l» Odundo NCAA Parmtac&a ktan Sypong Tamarc W Palm
Eaach South Daytona Slaw art TallVssa Svatota Gaintwil Panjrm
C. ff Van, ca Altamonta Springs B'OOktyJia St Patafsburg O'ando
Otan Oo Computer Buvnatt Center Rapd Cry Computer lac cf
Venprvs Memphis Eastern Computer Ins Knorvile Software First
NashvUe Abw.klu* Aamojordo Aksuguaroua Let Cruet Byt by 9jt*
C E M Ccyroaton Cocria V'kJwo Ccfcnaf Video Ccrnouter Ag*
Ccmpu**? Ag* Computer Concepts Computer Mage Computer
Reydstons Computer Time Inc M*t cootan Computer yvhaarcn Oc*an
C«ty ChastarWd Ba'tmcra RocknVa Barmcra B’axor. a Houston
Houston Houston Dates Waco Aussn kte'shall Richardson Concord
Omano British Coiuntxa Sculfteatt Cafgary. Aberta Damaris cotta Alburn Latham Rushing Catfemia-Srown Knowt Computing ReCianas CF1 Ctakemont Century Comoutar Syttemt L» Habra Charrbert Ccmputer Supply Stude City Computer Abe P. iioAjto Compute Junctor Sanala Au CompuMf Literacy BocYthop Sunnyvale Computer Nock, Inc San Bernaino ComputerLand Freerrort Freemont ComputerLand of Cithut Hit Crtrius Hti ComputerLand of Saaemsuto Downtown Co"Pu'erLa''d of Sacramento How* Av* ComputerLand cl Stockton Stockton Computer Literacy Bock Shoo Sunmyva. fl H*ru« Co’O.ftflg C*n’. as S»n Bruno HT £;*C70n.rs Sufynyv*’* K J Computers Granada K*s OPArrp Technical Book! Lot Ange'eS Rdgaaatt Cctrext* Ctr Inc Rdgaaatt A'asma Aba* Data Systems HunttviH* Com rand Computers Bsrrningham Madison Boors & Computers Mat* son Mel sPheto i Com*iter Shcp Montgomery Universal Computer System Mccm Annona Computer West Pheonix Coppetstnto Business Syt Pheoni* North American Dgtul Tusoon Tronirtooh TutCOn Fka-da A A Computers Book. LAana Commodore Computer ShCP Computer Bar Compu’ar mag a Gcmpu'*' Ttenri! Inc Compute' Viars Inc Computers * Rerl Compjteft Pljt Coiforuct Ire Eoucat on Computere Etc fmki Cemp„t*r» Ftenda Boc* Store Gut Coat! Computer El act Megapert Co *pu'.*r Can!*' Mefo* Etc MSI Butina is Syttam N * Ag* Electronic* Orando Eiaevonc* Co Ran CcwComput Center SOS Ccmpulari Sot-K* First The Computer Room T b* Slippy Dsk Inc Winner's Cacl* Coaado G-ted*1 Cc'-tx.t*’! Compel*' Dtcount Conpia* Roam Ideal Computer Systems M*cro World Sun Country Corfu!*'* Whole Lila Dstubutors Conn _ ctiml Connecting Point Mnemonics Inc Personal Co'rpute' cart*' Software Cify Software K rgdom Sp*anjm Computers SIS Inc. The Mao Shop Cl Jb Ccmpu-*' CorrputartamJ EU WurtiUer Co HCS Comcu'w Car:*; LCA Vdaa i Computar Ct Mamory Locacen OmmT ek Coicjters Pionaar Vil»y Dala Es-iR Tache puler Store Tha &t Buck.4! TyCom inc Varva'd Compy!*f C’ntt »l Comput a'V or‘0 Instant R*;i»y LTD kAcroConp t*' Carter Sotwa-a Ad «*.tag* Tn Lojical Cnoica Inc Random Across Computert Inc. Ft Walton Beech SoftwaKi Computer Canto; Inc HoBy Hill Tha Open Doer Cocoa T ba PC Cofledjon Ceval G abies lp*a Easy Kays Computer Cantar lows Ciry f. 'j a oCoTfu t*f Appi ca* cn LTD fAarshafuewn Idat’. Q Atil
CorTsajtar A Vid«o Campa Computer Tune Svevepert Modwn
Business NtacNnes Mataine Sottwnra Cante' Int Metaiha Sohwaft
Marl Meaina Tha Computer Clnic Latoyane Data Ei fik Ccrp JAL
El act'Ones MdKansas Centxta's Mjw*H Coryx e't Thorougntx*3
Conyxita's Kartnofy tAaevAg* Coapjtar Stora R« il iy Worto
Computm BA But!-i*si CO’Tputars Coryx *' Ratolufeon
Compu'. ufland O'Hara Ccnpu'wrLard & N las I"ir» M 70Ccrnoct*rt
Ire Tra Mamory E»&ant on Unique Computa' Burka! Conputa-Cf
Byt'i* Cornpjt*' Computaf Constar Ccrpu1!-' Paop** Inc Giag
Chanay sacro Cerrpe'.art inc Vons CemcW*rt GiiSOia Future
Syttam &oftw«* South Inc hfiaaj Conputu* Mods* Inc. CoTputar
Barn Vallay Computer! Honolulu McNaefi Banc Corrputar Cantar BitS'Bytas-Nibblas Chelsea Computer Compute; Supply Co Diiact Access Edmunlon Computer Cantor Golary Computers MicNgun Sohwn'a Mdljird Computer Shop ProV'dao Pioflattionul Computer Syt R&groins Urfirrttad RosaviHa Computer Store Sip Dsk Software Plus Special s» Ccmputer The Software House Y« Ode Computer Shecoe Ratal Cerrou!*f Center Inc Mrr..;cta Computer Out*stert Computer Plac* Computer Spaaities Plut Comoutart ate JMH Sctware of Mrrasai MCD d H t ng Inc Online Compulare Soscal Sts IM Associa'ad Corrputar Sarvs Sonr. g‘i*ld Brandt Mart Couxjutan Kansat Gty Commputar Corcaca CofejTtoa Instant R*p(*y Ltd Chattarfold Systems Ptut ind«and nc ill. iiSSI Cempu'tor Mart d New Marrpshr Dnrarsilad Computer! Farrv'y Conputar CanVat Fam.*y Computer CanVat Famfy Conputug Censet Want County Statorm 'iir.~ wgg-a Dot; TD5 Comtutwj Trad Compute*t ri.r.1. Cah.c’j Computer Atsoaotai Tha Ccnputar Stor* fi-jbrii'iifl BULLSEYE Doutke E Electronics ¦V-y.gng Appa'grer Ceruuter Systems Great Fais Academy Computeri Haw Hcrion CO'Tpu'ar Syt Pag* On* Nawttand Tacho, cal Ccr c p«t Entarpnses Uriimtad Century 23 Inc Ut Vajat Comput*r Wor*d Lat Vagal ComputerLand of Carton Carton Cm Amuse. Jo* Lowery Byte Sfcp Cast* Computar C'A Scftwre Cenar Whte Plains Mcro Search Hutton Syracuse Mcro Search Inc Houston Jamestown Regency Educator a! Systems Daflat T wYork Soft** Watauga Gen Fafte Software Centre Dallas Scot a Software Te'minal Fat Wash Fores! H15t The Computer Eipenenc* Sen Anrono Kenmora Mnttana The Computer Slep Aboeen Rochester lilib Storey Brook Compgtert Ptut kbuny Hicksville VL'dtna Colony Ltd Hampton Greensoevo Computer Anne* Mergartown Ciskovary Fait Church Fainly Computer Canter Farta* Newark Virginia Mao Sys'.emt Wcobridge Canada Ccrput* or P.»y Corpu!6rworkt Computer Shop Data Pro Computer Shcp o Calgary Tfi* Software Home Hind sin Computug R*d Deer Mcro Sytlams Mvnvjry Lane Computer K. ng Corti Nutec Sprit Sirdar Super Software Canadian Computer Era Moomart Ccmput*rWorid J W Al*n Kob*t*k Mnicomp Alkon Chatam Computer Computer and Corns pec Elect'onict 2001 Hastings Dau Tft* Computer & You TftorrvM Software Co Oeltrone Solar* Merodata Imo Merwer Laval Mcro Vision Tronigu Dt&ibution Vitpro y ashncrcn APPLE COOP Comv Soft Computers Computeri. Inc kycro Ag* Computer Stor* P-ograma Ptut C c»tron Computers Computer Sefrware Center Software Shoppe TlfW Software Inc Avta Software Dtfc: U. Cemxkytt DsBibutevt Phase a Dst Inc 1 aoo GG1 &3Sa AMIGA HAS MULTI-TASKING, DISCOVERY SOFTWARE USES IT! FROM NOW ON YOU CAN PRINT OR SAVE ANY SCREEN, FROM ANY PROGRAM, ANYTIME! GRABBiT takes WYSIWYG* to the limit. With GRABBiT you capture exactly what you see on your screen in an instant, regardless of what other programs you're running. GRABBiT works with all AMIGA video modes, including "Hold-and-Modify' lt even lets you capture images from animated programs, like the bouncing ball in Boing! What's more, GRABBiT runs completely in the background — transparent to your other software. GRABBiT is always ready for you to use, even while you’re in the middle of another program, As if that's not enough, GRABBiT requires only about 10K of your precious RAM to operate, and it supports dozens of printers. It's not a game, it's not a toy, GRABBiT is truly a productivity power tool for your AMIGA! We believe powerful software should be easy to use. GRABBiT is one of the EASIEST programs you'll ever use! Every GRABBiT operation is triggered by one of the "HotKeys", a set of easy-to-remember key sequences that only take minutes to learn. Each Hotkey is generated simply by holding down the ‘Control" and Alt" keys and pressing one of the designated letter keys. What could be easier? You won't grow old waiting for GRABBiT to finish printing, either. When we say multitasking, we mean it. GRABBiT has a unique TPM (Task Priority Monitor) module which makes sure your other software can still run even while GRABBiT is printing. The TPM module constantly tracks GRABBiT's printing priority, making sure it is neither too high nor too low. But always just right! GRABBIT adds a new dimension to the AMIGA’S multitasking capability. GRABBiT supports dozens of different printers because it uses the standard Amiga device drivers. Any printer you can choose in "Preferences" is automatically supported by GRABBiT. You'll get the most from color printers too. Because GRABBiT supports full-color printing. In fact, we have seen amazing color printouts produced by GRABBiT on the Oki-Mate 20, a color printer costing less than $ 200.00. Of course, GRABBiT’s abilities are not limited merely to printing; GRABBiT is equally adept at saving screen images to disk -yes, even HAM screens! All GRABBiT disk files are saved in the popular IFF format, the emerging graphics standard for AMIGA. You can capture any screen to disk for slide-show presentations or later enhancement with any popular AMIGA graphics editor like AEGIS Images or Deluxe Paint. We even include a specially modified l‘D utility called ’SEE", which allows you to view IFF image files quickly and easily. GRABBiT’s disk operations are lightning fast because GRABBiT is written in a hybrid of highly optimized C and 68000 Assembler Once you start using GRABBiT you'll want it on every disk. You can easily install GRABBiT in your system startup-sequence, so it will always be there when you need it With all its features this would be a great package at any price. But we think you'll agree with us that GRABBiT's most outstanding feature is VALUE! You get all the power of this sizzling new software for an unbelievably low 95 DISCOVERY SOFTWARE 262 South 15th Street Suite 400 Philadelphia. PA 19102 (215) 546-1533 MetaScope gives you everything you've always
wanted in an application program debugger: • Memory Windows Move through memory, display data or
disassembled code, freeze to preserve display and allow
restoration. • Other Windows Status windows show register contents and program
state with freeze and restore; symbol, hunk, and breakpoint
windows list current definitions. • Execution Control Breakpoints with repetition counts and
conditional expressions; trace for all instructions or
subroutine level, both single-step and continuous execution. • Full Symbolic Capability Read symbols from files, define new
ones, use anywhere. MetdTools I A comprehensive set of tools to aid your programming (full source included); * MetaMake Program maintenance utility. * Grep Sophisticated pattern matching utility. * Diff Source file compare. * Filter Text file filter, * Comp Simple file compare. * Dump File dump utility. * MetaSend Amiga to PC file transfer, e MetaRecy PC to Amiga file
transfer. Metadigm products are designed to fully utilize the capabilities of the Amiga™ in helping you develop your programs. If you're programming the Amiga, you can't afford to be without them. Dealer Inquiries Welcome • Powerful Expression Evaluation Use extended operator set
including relational, all assembler number formats. • Direct to Memory Assembler Enter instruction statements for
direct conversion to code in memory, • and More! Log file for operations and displays, modify search fill memory, etc. MetaScribe: The Editor MetaScribe has the features you need in a program editor; • Full Mouse Support Use for text selection, command menus,
scrolling or use key equivalents when more convenient. • Multiple Undo Undo all commands, one at a time, to level
limited only by available memory. • Sophisticated Search Replace Regular expressions,
forward backward, full file or marked block. • Multiple Windows Work with different files or different
portions of the same file at one time. • Keystroke Macros Record keystroke sequences or predefine,
assign to keys you choose. • and More! Copy between files, block copy move delete, set tabs and margins, etc. MetaScope $ 95.00 MetaScribe $ 85.00 MetaTools $ 69.95 19762 MacArthur Blvd. Suite 300 Irvine, CA 92715 (714) 955-2555 (California residents +6%). Visa MasterCard accepted. Amiga is a trademark of Commodore-Amiga Inc. PUBLIC DOMAIN SOFTWARE PiM PUBLICATIONS, Inc. has AMICUS Disks 1 through 8 and MetaScope: The Debugger Fred Fish Disks 1 through 24 available at special prices Per Disk $ 6.00 to Amazing Computing Subscribers or $ 7.00 to non subscribers (MA RouJdonUndd 5% eflloe ta») Make checks payable to: PiM Publications, Inc. P. O.Box 859 Fall River, MA. 02722 Everyone is encouraged to
distribute this software Ireely to your friends, members, and
customers, Please allow * weeks for delivery Amazing Computing
Publisher; Joyce Hicks Circulation Manager: Doris Gamble
Assistant to the Publisher; Robert James Hicks Corporate
Advisor: Robert H. Gamble Managing Editor: DonHlcks Hardware
Editor: Ernest P. Viveiros Sr. AMICUS Editor: John Foust Production Assistants: Ernest P. Vlvolros Jr. John David FaslJno Am«inq Authors: Ervin Bobo John Foust DonHlcks Kelly Kauflman Perry Klvotowltz Goorgo Mussor Jr. Rick Wlreh DanlolZigmond A The AMIGA SpecialThanks to: Robert H. Bergwall RESCO.Inc. E. P.V. Consulting New England Technical Services Interactive
Tutorials Inc Advertising Sales 1-617-679-3109 Amazing
Computing™ (ISSN D886-94B0) la published by PIM
Publication!, Inc., P.O. Box 869, Fall River. MA.02722.
Subacriptioni: In the U.S., 12 laaue* for S24.00; Canada and
Mexico, 00.00; Overaeoa, 05.00. Printed fn the U. S.A. Copyright © 1986 by PiM Publication*, Inc. All right*
reaervad. Flrat Ciaa* or Air Mall into* available upon requeaL PIM Publication* maintain* the right to refute any advartlaing. Subscription Problems? Moving? Please let us know send information to: PiM Publications, Inc. P. O. Box 869 Fall River, MA. 02722 If we don't know where you
are, we can not send you your magazine! Hmazing Computin Table of Contents ig Vol. 1 5 June 1986 The HSIto RGB Conversion Tool Sieve Pietrowicz presents a small basic program for color manipulation 8 AMIGANOTES by Rick Rae Rick begins a music column for the Amiga 11 Sidecar A First Look John Foust gets "under the hood" of Commodore's new IBM compatible hardware 15 John Foust Talks with R J Mical AT COMDEX A quick conversation with the "Father of Intuition" 19 "ROOMERS" The AMIGA on Layoffs and Comdex The AMIGA went to Comdex and has a complete investigation of the Commodore booth 23 Amiga Developers appearing at Comdex A list of the Amiga Developers who appeared at Comdex in the Commodore booth 28 How does Sidecar affect Transformer? John Foust talks with D. Douglas Wyman of Simile 29 Microsoft Basic: part three Kelly Kauffman on Mbasic features 31 Inside CLI: Part 4 George Musser returns from Exams totake usdeeper into CLI 33 The Commodore Layoffs John Foust investigates the cuts at Commodore. 36 Forth: Part three John Bryan begins to play with MVP and MuitiForfh 37 The Amazing C Tutorial: Part five John Foust concludes his initial work with Aztec C 39 Scrimper Part Two by Perry Kivolowitz Perry continues his tutorial of his 'C' program to print your Amiga screen 43 Marauder reviewed Rick Wirh investigates this "back up" tool from Discovery Software 49 The AMICUS Network: Amicus Network by John Foust Building Tools By Daniel Kary 50 53 Departments: From the Editor 4 Letters 6 Index of Advertisers 64 From the Editor: by Don Hicks Of Comdex and Layoffs We have a saying in New England, originally quoted from Mark Twain, "if you don't like the weather, just wait five minutes." With very little effort, this can be applied to the micro computer market. Comdex At the end of April, we were excited by the prospects and great soltware we saw at Comdex in Atlanta. Commodore's large booth was a mecca to software developers. There was easily more going on per square foot in that booth then in any other section of Comdex. Commodore had Amiga stations strategically scattered through the booth and each was manned by smiling software developers (each showing their products at Comdex without paying the high prices for floor space). The effect worked! Press and dealers were swarming through the booth, visiting the different stations and getting a first look at some of the power software on the way. The Amiga's graphics, sound, and depth were demonstrated and extended by dozens of new programs and peripherals. The effect was euphoric. We came away from Comdex pleased and excited with the way the Amiga was attacking and attracting the market. Our course was set. We had wanted this issue to be a "Comdex" issue and our best expectations had been realized. We hurried back to our desks and began sorting through the pounds of material we had collected. Oh Well, A few weeks later, as we were chasing authors for their promised columns, the news reached us of the layoffs at Commodore. (Naturally the authors wanted to pull their stories for rewrite.) There were no fancy press releases, just the murmur of rumors moving through the networks. The cuts had come swiftly to all departments, "no one area was cut over another", one executive said. Another Commmodore representative stated that the essintial areas were left intact and that only a few management and artists were released. The effective line from most top officials was that the cuts were made across the board (or cost effectiveness. This placed a rather large gloom on our Comdex stories. Commodore may have dropped a few people, but why did they always seem to be the people we knew and with which we talked? When I asked one Commodore offical about the layoffs, he replied, "What is the concern about a corporation's infernal structure. When! Buy a Volvo, I don't worry about who is the president." I countered by asking the official when was the last time he picked up a magazine devoted 1o the Volvo. Bad News? Although we have lost a good many friends and great people from Commodore's ranks, we believe that this was good news overall. If Commodore's claim that they will continue to handle development and support of the Amiga with the remaining staff is true, then they have done what they had to do to get profits up while sales remain high. (See the AMIGA's column, "Roomers", for an alternative position on the development viewpoint.) Commodore's sales have been up, especially after the spring promotion. Yet, with their past reported losses, Commodore is under pressure to cut costs. Personnel is always the largest and easily cut portion of the budget. To be fair, Commodore had already closed some manufacturing sections. The good news, Commodore made this decision. It was not a directive from their bankers. It was a difficult and unpolpular decision and Commodore made it when they could have continued in the appearance of increased sales. That takes courage. Apple Computer made the same decision last year. Oh they were not under the same cash crunch as Commodore, but they were under pressure to place their operations in line. They shut down plants, discontinued the Lisa Computer, and released or shuffled personnel. They received flack from almost all sections of the media and suffered the bad press of suing their resigning founder, Mr. Jobs. What was the result of all these difficult decisions? Apple reported one of their best quarters ever. They became the darlings of the media and the Macintosh (you remember that computer that did not have enough software last year) has been termed by quotes in Infoworld as the second business computer format. Not Bad. The Future Commodore has taken the steps to secure their position financially. The Amiga has certainly taken a lead technically. And, through Comdex, software and hardware developers have taken the Amiga to the market. The future rests in how well each has done its job. New Amiga Products From The Developers of Amiga C. Amiga C Compiler $ 149.95 Everything you need to develop programs on die Amiga, including a full set of libraries, header tiles, an object module disassembler, and sample C programs. Unicalc $ 79-95 A complete spread sheet package for Amiga, with die powerful features made popular by programs such as VlsiCalc, SuperCalc, and Lotus 1-2-3. Unicalc provides many display options and generates printed reports in a variety of formats and print image tiles. Supports 8192 rows of 256 columns, and includes complete on-line help. Lattice MacLibrary $ 100.00 The Lattice MacLibrary Is a collection of more than sixty C functions enabling you to rapidly convert your Macintosh programs to run on the Amiga this allows you to quickly and efficiently take advantage of die powerful capabilities of die Amiga. Lattice Make Utility $ 125.00 Automated product generation utility for Amiga, similar to UNIX Make. LMK rebuilds complex programs with a single command. Specify die relationships of die pieces, and automatically rebuild your system the same wav every time. Text Utilities $ 75.00 Eight software tools for managing text files. GREP searches for specified character strings; DIFF compares files, EXTRACT creates a list of files to be extracted from die current directory; JSL ’III) creates new files from a batch list: WC displays a character count and a checksum of a specified file; ED is a line editor which utilizes output from other Text Utilities; SPLAT is a search and replace function; and IDES lists, copies, erases or removes files or entire directory structures. Lattice Screen Editor (LSE) $ 100.00 East, flexible and easy to learn editor designed specifically tor programmers. LSE's multi-window environment provides the editor functions such as block moves, pattern searches, and "ait and paste” Plus programmer features such as an error tracking mode and three assembly language input modes. OTHER AMIGA PRODUCTS AVAILABLE FROM LATTICE: Panel: Screen Layout Utilities $ 195.00 Cross Compiler: MS-DOS to Amiga C $ 250.00 dBC OI: library of data base functions $ 150.00 Cross Reference Generator 3 With Lattice products you get Lattice Service including telephone support, notice of new products and enhancements, and a money-back guarantee, Corporate license agreements available. Lattice Phone (312) 858-7950 TWX 910-291-2190 INTERNATIONAL SALES OFFICES. Benelux: De Vooght Phone (32)-2-'720-91-28. England: Roundhill. Phone (0672) 54675 Japan: Lifeboat Inc. Phone (03) 293-4711 France; SFL. Phone (1) 46-66-11-55 Amazing Mail: Dear Sirs: You people can be best represented by a very mean candy store owner. Already, there are many Amiga owners out there. And many have heard by word of mouth, (as I did.) about your magazine. But its out of our reach! We know of the magazine, but can't reach into the glass case, and the store owner (you!) Wont sell them to us! What do I mean by this? I recently spoke with the secretary to Mrs. Jan Wood, the magazine buyer to B. Dalton Bookstores and B. Dalton Software, Etc. Apparently you only have the capacity to sell your magazine to dealers, (and selected ones at that!) And not through mass distribution. O. K. I can understanci that. Alter all, not every magazine gets
an outside company to bankroll their first three issues. BUT we still can't find your magazine! (Please note that by now we does not include myself — I’ve been lucky enough to subscribe!) Let's face it — for your sake and ours — there's got to be some other major retailer through which we can find your magazine. By now, you have most certainly noticed the enclosed photocopy. It's an article that appeared about a locally based national retailer. I'm sure you've heard of 'em. It’s B. Dalton. Only it's not the bookstore we're talking about, ft’s their sister company, EL, Dalton Software, Etc. PLEASE! PLEASE! PLEASE! I’m sick and tired of borrowed out my issues of A.C.! PLEASE let Software, Etc. be an exception. PLEASE let them buy your magazine directly! My issues are wearing out! You’ve gotta let these other people find your magazine somewhere else! Thank you, Mr. LeifO. Pihl Minneapolis, MN p. s. Please excuse any spelling as I have neither a spelling
checker program nor a printer cable. Dear Mr. Pihl, Your letter was received with great interest by the staff at AC. We are very aware of the Amiga users who have either never heard of us or have never seen a copy of Amazing Computing. Perhaps, the best way to answer your letter would be to give you a short history of our magazine and company. PiM Publications Inc. was created from a dream my wife and I had ten years ago, when we were first married. The initais stand for Poetry in Motion. We liked the name for a publishing company, but at the time, we had nothing to publish. After years of working with tasks, people, computers, and writing, we found the Amiga. The Amiga was exactly what we wanted. Or rather, the Amiga with GenLock would do what we were currently working toward at a much reduced cost. We, like many, hurried to buy a developer's kit through Commodore. Having neither experience in 'C or Unix, we were rather dismayed at the absence of any alternative documentation supplied with the machine. The documentation appeared to have been written by the programmers for themselves. I read the Abasic manual in an hour, Although it was heavy with information on common basic statements and functions, the machine specific graphics, sprite and sound information was lacking. After pages of description there v ere only a few lines of code! One advantage that Commodore Amiga had over the Macintosh was its ability to be programed by the user from day one with good documentation. There were no national publications devoted to the Amiga programmer. Here was a great tool with spectacular capabilities for all types of applications, yet we could not open it! If we were having this much trouble, chances were we were not alone. We turned to the Networks and watched the current chatter of users feeling their way through the same puzzles over and over. We decided a newsletter was in order. We felt the best way to reach Amiga users and sellers was through the Commodore Amiga dealerbase. At the end of September, I called Commodore to request a list of the Amiga dealers. I was told by a Commodore executive to "get the list from the Wall Street Journal Ad." With the tiny type list and a nine dollar zipcode book from the post office, we produced a data base of all dealers. By the first of December, we mailed (first class) a letter announcing Amazing Computing Newsletter and started receiving responses. We scoured the networks looking for people who wanted to share their hard fought knowledge of the Amiga. The response was thunderous. Due to the enthusiastic replies of users, and the assistance of a local printer, we moved from the concept of a newsletter to a full magazine. We offered the magazine directly to dealers for two reasons:
1. The dealers were most in need of the type of information that
we wanted to supply. They needed the support for the machine.
2. National distributors in the United States have established a
system of distribution and schedule of payment that forces
magazines to cover costs through advertisers. The Amiga is a new machine that requires a great deal of good software to make it a viable market alternative to the prospective user. Most good and innovative software comes from small startup companies that can not support the high advertising costs of most major magazines. We decided to keep advertising costs as low as we could for as long as we could. This was a decision based on our own small size, we understand these risks. But, this does have its problems. We are only alive due to the stores and dealers who will accept us. Each issue, we send a copy of our magazine to every Amiga dealer in the United States who is not among our current Amazing Dealers (Commodore supplied a list when they saw our first issue). Here in lies our tale. In the U.S. you can find Amazing Computing at Amazing Dealers who have accepted us. We have been picked uo bv many dealers who received requests from customers and users.. But, we can not sell to a dealer who will not pick us up. We have never “selected" a dealer, instead, we have made Amazing Computing as easy fora dealer to receive as picking up the phone. Although we have moved from our 9x12 office upstairs to our basement facility (we ship from the garage), we are still the same small organization. All the people who answer your mail or take your calls are family or friends. No one, except our Authors, has yet been paid by PiM. We exist on the hope and the promise of the Amiga and the Amiga user's enthusiasim. Don Hicks and the AC staff Gentlemen: I was just in Programs Plus (the Southcenter sofiware outlet in Seattle, WA) and saw your magazine for sale. Having the "Amiga Bug”, I bought every issue of your magazine, Amazing Computing, that! Could get my hands on! Thank you for finally coming out with an excellent monthly magazine devoted exclusively to the Amiga computer. Beginner's Helpful Hint: I bought my Amiga (with 512 upgrade and 2nd disk drive) in November 1985. I also purchased the word processing program called Textcraft so I would have some functional software to utilize. Textcraft is an excellent beginner's word processing program, but being a legal word processor for the Boeing Company in Seattle, I immediately longed for something of a more professional nature. 1 finally found it in the form of Micro-Systems Software, Inc.'s SCRIBBLE! Word processor. The following is my method of converting old Textcraft files to SCRIBBLE files: it's this simple — call up the files you want converted and store them using the "Text Only” format, then rename them using the extension ".doc" in your filename. You can then call them up in SCRIBBLE and they transfer across very clean; only minor editing needs to be done! If you do not use the "Text Only” format for storing, your file will not transfer across at all. Sincerely, Gerald W. Mahute Seattle, WA Thank you for the Tip and the subscription. DOSHelper — Provides help with all AmigaDOS commands just by typing 'Help command ’ on your CLI screen. DOSHelper provides a template, full text explanation, options and examples. No more fumbling with the manuals! A menu driven version with full Workbench support is also included for those just starting with CLI. SPOOLit — A print spooler that runs from your Ram: disk leaving you and your Amiga free for other tasks. Multiple files, page skipping, and date options included. All three for $ 23.95 + $ 2.00 shipping — with source code in C, and setup instructions included. NOT COPY PROTECTED. LifeStream P. O. Box 1332 Kingston, Pa. 18704 LifeStream 'A touch of focus
for the mind Unbounded' S. The HSI to RGB Conversion Tool
ByStephen R. Pietrowicz CIS: 73047,2313 People Link: DrRitz
Usenet:...Iihnp41pur-eeigouldihouliganisrp Color graphics are
one of the Amiga's strongest attractions for new Amiga owners.
Chances are, you have already begun to explore the Amiga's
graphics, and written programs to show off your machine's
color capabilities. However, one statement in Amiga Basic can be a bit cryptic: the PALETTE statement. The Amiga Basic manual explains that the PALETTE statement accepts four arguments, the color-id, and a decimal percentage of red, green, and blue (RGB). It even lists 16 colors with their RGB percentages. Suppose you want to draw a dark orange object on the screen. How do you decide what percentages to use to get that color? Through trial and error you might be able to get the color you want, but if you wanted to change the object’s color, you would have to try and recalculate the percentages. You can use an alternate color system, hue, saturation, and intensity (HSI), to find the color you want to use, and then convert the HSI color coordinates to RGB coordinates. The program presented here does just that. First, I'll explain the HSI coordinate system. The hue coordinates are represented by the 360 degrees of a circle. Moving around the outer edge of the circle, colors change from red at 0 degrees to green at 120 degrees to blue at 240 degrees. Saturation changes by moving along the radius of the circle, and has a range from 0 to 1. A totally nonsaturated color appears gray and has a saturation value of zero. Moving outward from the center along the radius of the circle will saturate the color. At the outer edge of the circle the saturation coordinate has a value of 1 and is fully saturated. Stretching the circle by pulling it’s center out in opposite directions forms a double cone. The height of this double cone represents the intensity of the color and also has a range of 0 to 1. The bottom point of the double cone is black, with a value of 0. Moving upwards towards the top point increases the intensity. The top point of the double cone is white, with value 1. Choosing a color in the HSI coordinate system is simply a matter of rotating the circle to the color you want, deciding how saturated you want it, and then deciding how light or dark you want the colorto be. The simple HSI to RGB conversion tool listed below allows you to experiment with HS! Coordinates and see how this color system works. When you choose HSI coordinates, their RGB equivalents are listed at the top of the screen. Those are the values you should use with the PALETTE in your own Amiga Basic programs. Use the mouse to change the HSI range indicators in each box. (You must increase the intensity and saturation coordinates above zero to begin to see colors). Try setting the hue to 240, the saturation to.50, and the intensity to.40. The box below the RGB coordinates should be dark blue. Increasing the saturation value will turn the dark blue to bright blue. Increasing the intensity will lighten the color, until at 1. 00, it is completely white. When choosing your own colors, first select the hue in the range you wish to use, and then use the saturation and intensity value to narrow in on the color you want. HS1 Listing by Steven Pietrowicz Hslto RGB Conversion Tool 1 By Stephen R. Pietrowicz SCREEN 1,640,200,4,2 WINDOW 2,"HSlto RGB Conversion Tool By Stephen R. Pietrowicz",0,1 DEF FN a(n) = 2T((S*n)+.5) DEF FN b(n) =.5+(S*n)+2*(l-.5)*(.5- (S*n)) GOSUB Init Mouselnput: GOSUB PrintVals ’ Wait for left mouse button to be clicked WHILE MOUSE(O) = 0: WEND x = MOUSE(3)y = MOUSE(4) 1 Check for box boundries i IF (y c 100) OR (y 180} THEN Mouselnput IF (x 50) OR (x 550) THEN Mouselnput i ’ Hue Selected IF (y =130) THEN IF (x = 120) AND (x = 480) THEN Hue = (x -120) H = Hue 360 COLOR 0 LINE (hs,102)- hs, 128) COLOR 1 LINE (x,102)-(x, 128) hs = x END IF ¦ ’ Saturation Selected ELSEIF (y =150) THEN IF (x = 150) THEN S = (x — 50) 100 COLOR 0 LINE (sx,152)-(sx, 178} COLOR 1 LINE(x,152)-(x,178) SX = X 1 intensity Selected ELSEIF (x =450) THEN I = (x — 450)7100 COLOR 0 LINE (ix,152)-(ix,178) COLOR 1 LINE (x,152)-(x, 178) ix = x END IF END IF GOSUB Convert GOTO Mouselnput Init: CLS COLOR 3 LINE(118,100)-(482,130)„b LINE(48,150)-(152,180)„b LlNE 448,150)-(552r180), b hs = 120: sx = 50: ix = 450 COLOR 1 LINE (hs,102)-(hx, 128) LINE (sx,152)-(sx,178) LINE ix,152)-(ix,178) COLOR 2 LINE (50,25)-(550,75)„bf COLOR 1 LINE (50,25)-(550,75)„b r = 0: g = 0: b = 0: S = 0: l = 0 RETURN 1 Change given HSI coordinates to RGB Convert: IF H.167HEN Red =1 Green = H‘6 Blue =0 ELSEIF H.337HEN Red = 2 — H*6 Green = 1 Blue =0 ELSEIF H.5 THEN Red =0 Green = 1 Blue = 6*H -2 ELSEIF H.667HEN Red = 0 Green = 4 — H*6 Blue = 1 ELSEIF H.83 THEN Red = H*6-4 Green = 0 Blue =1 ELSE Red =1 Green = 0 Blue = 6 — 6"H END IF Red = Red ¦.5 Green = Green-.5 Blue = Blue —.5 IF (I =.5) THEN Red =FNa(Red) Green = FN a (Green) Blue = FN a (Blue) ELSE Red =FNb(Red) Green = FN b (Green) Blue =FNb (Blue) END IF IF Red 1 THEN Red = 1 IF Green 1 THEN Red = 1 IF Blue 1 THEN Red = 1 IF Red 0 THEN Red = 0 IF Green 0 THEN Green = 0 IF Blue 0 THEN Blue = 0 PALETTE 2, Red, Green, Blue RETURN PrintVals: COLOR 3 LOCATE 2,22 PRINT USING "Red =. ";Red; PRINT USING "Green = . ";Green; PRINT USING "Blue =. ";Blue LOCATE 12,34 PRINT USING "Hue = ";Hue LOCATE 18, 5 PRINT USING "Saturation = . "; S LOCATE 18, 55 PRINT USING "Intensity = . ";! COLOR 2 RETURN • AC-2 Megabyte Ram Board For The Amiga PC Comspec
Communications Inc. Is proud to announce an exciting new
product. The MICROSHARE AX 2000 a 2 megabyte ram board for
the Commodore Amiga PC. The ability of the AX 2000 to Incorporate 2 megabytes of ram and allow the user growth potential by the cascading of additional AX 2000s, now gives the Amiga PC vastly extended computing power. Mounting on the right hand side of the Amiga PC the AX 2000 connects to the expansion port. Additional peripherals which would normally be connected to the expansion port can then be connected on the expansion port of the AX 2000. Standard expansion bus architecture was used In the design of the AX 2000, thereby insuring compatibility with all peripherals. The AX 2000 can be used to increase ram memory, or as a fast ram drive. When used to increase ram memory the AX 2000 will greatly enhance the multitasking feature of the Amiga PC. With more memory available to the system it is possible to have more tasks running simultaneously or a greater amount of memory available to each of the tasks. Software developers will find the AX 2000 a must, allowing a great reduction In compile assembly time, thus leading to a real savings In terms of development costs. The MICROSHARE AX 2000 Is available from stock, for Immediate delivery. Suggested Retail Price: Canadian $ 1200.00 Cdn Funds (+ 12% FST as applicable) U. S. $ 899.00 U.S. Funds (F.O.B. Toronto) Dealer Enquiries
Invited For further information contact: Comspec
Communications Inc. 153 Bridgeland Ave., Unit 5 Toronto,
Ontario M6A 2Y6 (416) 787 0617 Amiga la a registered trademark of Commodore
Business Machines AMIGANOTES By Rick Rae CIS 72177,3516
People Link "watch this space". INTRODUCTION So here I am, sitting in the office after hours, keyboard straddled across my lap, groping for a way to begin my first column for Amazing Computing. Part of the problem is distraction: I keep thinking of all the things I should be doing. I can barely fulfill my current obligations... why should i take on another responsibility? The answer goes beyond the incredible potential of the Amiga architecture and my interest in seeing it succeed. It can be found, instead, in my desire to give equal time to what I consider a slighted application area: sound and music. Certainly there have been articles on computer music, and in fact there are one or two publications devoted to it. Taking the computer publishing industry as a whole, however, the majority of the effort is spent elsewhere. Word processors, spread sheets, data base managers, graphics... music seems to take a back seat to them all, which is a pity. Almost everyone enjoys some flavor of music; even those of us who cannot play a note or carry a tune listen to the radio. So, I want to piay my small part in bringing you music-oriented information. WHAT THIS COLUMN WILL BE The Amiga is well suited to many audio applications. Several manufacturers realize this, and are already hard at work on new products, some available even now. I want to pass along as much information on these products as possible. For example, there are four audio digitizers of widely varying price which will be available shortly. Which has the best signal-to-noise ratio? Are they all stereo? Which is best for your application? I intend to give you a rundown of the pros, cons, and features of all three so you can choose wisely. Product reviews will be balanced with other topics. Explanations of various synthesis methods, the physics of sound, how to mimic various instruments... these are all fertile areas to explore. I hope to interview some of the key people in the Amiga audio field, giving us all an insight into why their products work as they do. I expect the manufacturers will keep Amazing Computing informed as to future products and release dates; we will be passing what we have along to you as well._ And, most importantly, I am interested in what „you_ are doing. This is your column. If you have an interesting sound program in BASIC, C, assembler or whatever, send it in. If you have found an Amiga audio product you really love or hate, tell us about it. Disagree with something I have said? Take exception and let's discuss it. Like to see us cover your favorite topic? Let me know! Don't be afraid to write; this is going to be an informal column and I want it to be a vehicle through which we can all share. Online questions Finally, I will try to field questions. Realize that I am not an expert in the audio field, and certainly not where the Amiga is concerned. I am, however, an engineer and programmer who has been involved in electronic music for many years. It never hurts to ask; just drop me some electronic mail and let's see what we can come up with. I am a subscriber to CompuServe and People Link. You may either send me electronic mail, or leave a message on the forum bulletin board. My CompuServe ID ID number is 72177,3516, on People Link, contact AMICUS and John Foust will forward it to me. If you are not a CompuServe or People Link subscriber, you will need to fall back on the postal service; send your letters to PiM Publications to my attention, Let’s hearfrom you! DIGITAL AUDIO If everything goes as scheduled, I should have my hands on at least one audio digitizer in time for a review in next month's column. In preparation for this, let's talk a bit about digital audio. Sound is created when an object displaces air or another medium and changes its pressure at a rate which falls within the audible range. Traditional musical instruments create sound with vibrating surfaces: the strings of a violin, the reed of a clarinet, the lips of a trumpet player, the head of a drum, and so on. This vibration results in a more or less cyclic change in air pressure which causes movement of the eardrum, a membrane in the ear. Nerves connected to the eardrum create electrical impulses which the brain interprets as sound.__ GANDER SOFTWARE, LTD.! J “It Flies" TIME Et TASK PLANNER™ For Each of 5 Users: To Do List Future Plans Appointment Schedule 5-Days-At-A-Glance Calenders Runs from its ownCLI. Or workbench (floppy of Hard) Price $ 100.00 w o Abasic, $ 110.00 w ABasic Gander Software Ltd. 3223 Brass Road The Ponds Hastings, Ml 49058 Tel. (616)945-2821 Requires: 512K Amiga; iwo disk drives: Amiga-DOS 1.1; Abasic Edison discovered long ago that by reproducing these pressure variations, one could recreate the sound which originally caused Ihem. His first approach was to physically record an analog of these variations: a moving cone, caused to vibrate by changes in air pressure, scribed a groove onto a rotating cylinder. The same cone, when later driven by that cylinder, recreated the original sound. This system was fully mechanical in nature, but the same end can be achieved electrically by using different types of transducers. A microphone converts variations in air pressure to a corresponding variable voltage. A speaker then converts this same varying voltage back into variations in air pressure, and voila, we have our original sound back. With the high tech stereo gear available today, you might think this is overly simplified, but not by much. It is in fact possible to connect certain speakers together directly and use them as an ersatz intercom, with sound as the only power source. Generally, however, there will be something between input and output. Without a storage medium, we have here the basis for realtime audio communications like telephone and radio. By adding storage we can delay the reproduction of the sound to a later date. Record players and tape decks are, of course, two methods of storage and time delay. Computer Audio All these systems have one thing in common: the transmission or storage of exact analogs of the original variations in air pressure. Compact Disks and digital audio introduce a new element: the computer. Since digital circuitry does not understand about the real world, we must convert our varying voltages into digital form before the computer can deal with them. This is the function of the Analog to Digital Converter (AT)). Simply stated, an AD quantizes an analog signal into discrete steps over a given range. As an example, let's assume an 8 bit AD with a 5 volt maximum input. 8 bits gives us 2A8 or 256 possible step values, and distributing these over the 5 volt range results in a 5 255 or.0196 volt step size. (One step is lost because the last transition occurs at exactly 5 volts. Some would argue that there are in fact 256 steps; this is a matter of interpretation.) The AD converts the analog input signal into a digital output which represents the input as closely as possible with multiples of.0196 volts. if our input was 1 2 volt, the A D would output 25, which is the closest we can get: 25*.0196=0.49 volts. At this point our signal is in digital form and we can store it, transmit it, or generally do whatever we can imagine to it with a computer. When we are ready to send the signal back to the real world we must once again modify it, this time with a Digital to Analog Converter (D A). A D A basically performs the opposite function of an AD: it takes as its input digital data and converts it to an analog representation. Since the input to the AD is in discrete steps, its output will be also. Using the example above, the output of our D A will be changing in.0196 volt steps. Bits and audio We now have a method for inserting a computer into the signal path between microphone and speaker, but unfortunately all is not sweetness and light, it is obvious that the amplitude domain of our system is not continuous, since it jumps from step to step. The more bits we have, the finer the steps and the more faithfully the output represents the original signal. Using the 5 volt example above, if we upgraded to a 12 bit converter each step would be 5 (2A12-1) or.00122 volts; with 16 bits we'd get an incredible 5 (2A16-1) or.000076 volts! But what does this additional resolution buy us? Since we know we can reproduce a sound by recreating the air pressure variations associated with it, it should be obvious that making any change in those variations will affect the sound. Quantizing the amplitude with our A D and D A conversions can affect the sound in more ways than one, but for now we will concern ourselves only with Signal to Noise Ratio (S N). This is simply a measurement, in decibels, of the signal amplitude relative to the amplitude of "everything else". The more bits we have available to represent our signal, the better the S N ratio (and sound quality) will be. The following table relates S N ratios to various word widths. Since many of us don't have a feel for decibel ratios, I have included some rough comparisons which should help a bit. BITS S N (db) TYPICAL EXAMPLES 6 40 Portable Cassette Player 8 52 High Fidelity Cassette Deck 10 64 Cassette with Dolby B, Open Reel, Phonograph 12 76 Mastering Recorder 14 88 "Live" Sound, Cassette with dbx 16 100 "Live" Sound, CD Player If you are interested in calculating the S N ratio for other word widths, the formula is 6n+4 db. Where "n" is the number of bits. Be aware that this is the theoretical maximum value; for most realistic purposes you can simply use 6n db. As has been explained, amplitude quantization can affect the quality of our digitized audio. What hasn't been mentioned yet is that we have a similar problem with 1 he time domain. Sampling rate Our original analog voltage varied continuously, but no matter how quickly we pull data out of the A D it will still be coming out a chunk at a time. We will also be passing the D A its data in discrete units. Thus the quantization which we saw in the amplitude domain (which restricted values to multiples of the smallest step) also exists in the time domain (which restricts us to changing values in multiples of the sampling rate). Where sampling rate hurts us is in frequency response. The frequency of a signal is directly related to how many cycles occur per unit of time (frequency is measured in Hertz (Hz), which is equivalent to cycles per second). A mathematical concept called the Nyquist Theorem states that the sampling rale must be no less than twice the frequency to be sampled or reproduced. From this we might assume that sampling a 1 Khz signal at 2 Khz would be safe, but not necessarily. With the exception of the sine wave, all sounds are composed of numerous frequencies, most of which are higher than the pitch we perceive. These higher frequencies would violate the Nyquist conditions and result in aliasing: a "folding" of frequencies which is both quite obvious and obnoxious. The solution is either to sample at a higher rate or to filter out these higher vgt?. sL ¦i. (r r * — ¦ Amiga™ Dreams come true with EASYL I I V (,. m V 'f x v... x USE WITH: IMAGES-ANIMATOR''' GRAPHICRAFT-DELUXE PAINT'- OTHERS (SouiCi‘ included) APPLICATIONS: ANIMATION EDUCATION A V PRESENTATIONS GRAPHIC ARTS — HUME FINE ART — VIDEO COLOR!ZATION $ 1-416-744-4246 Anakin Research Inc, HX)
West more Drive, Unit 11C. Ken dale. Ontario, Canada M9V 5C3 499 Anuga", Inutrt 'Aftunilw™. Griph*rriil'w Ocluic InuM". E«yP*. Astr — "". Ouwtfy". And IBM" arr tijJ«mjrU id Comrmai. wr Am|ti. Arc4* Or**loptMnl. CoflimwJjrt Amiga Elretronar Art% Anakin Rrwtrih Inc, Anw. Oikwm and IBM HlpWliatly ¦ated using EASYL'1’ *%ilh OrEuir Faint1"11 on Ihr Amiga iumpulti and output on an Ink-Jet printer. Components.
— AMIGA OWNERS — The Memory Location IMAGINE A STORE BUILT AROUND
THE AMIGA! IT'S HERE NOW! THE MEMORY LOCATION 396 WASHINGTON STREET R T. 1 6 WELLESLEY, MA 02181 617 — 237 — 6846 JUST A FEW DOORS UP FROM THE PLAYHOUSE FEATURING THE LATEST AND THE GREATEST FOR AMIGA WHAT DO WE HAVE? FINANCIAL PLUS INFO BASE LATTICE C ZORK I DELUXE PAINT MASTERTYPE MOUSTERPIECE PAL FINANCIAL COOKBOOK BRATTACUS HACKER FOURTH SEVEN CITIES OF GOLD ONE ON ONE MARAUDER TALKING COLORING BOOK ANALYZE! TEXTCRAFT AEGIS ANIMATOR ZORK II AEGIS IMAGES LISP MONKEY BUSINESS FORTRAN 77 SPELLBREAKER AZTEC C SCRIBBLE ZORK III DIGITAL LINK FACTOR ARCHON GISMOS CUSTOM PRINT DRIVERS AMIGA DOS MANUAL (BANTAM) KID TALK BBS-PC TYCHON UTILITIES PAK-A-D1SK MOUSE MATS ON-LINE AMIGA HANDBOOK (SUNSHINE) FLOW MOUSTERPIECE BAILEY'S PROJECT PASCAL GRAPHICRAFT UBZ FOURTH ARCTIC FOX A-TIME PAR-HOME CABLES MINDSHADOW MUSIC STUDIO BORROWED TIME DISCOVERY SPELLCRAFT TxED TALKING TRIVIA DIGI-VIEW META-PASCAL MODULA II DEVELOPERS + COMMER. SPELLER BEE ELEMENTARY AMIGA BASIC BOOK INFOMINDEF! BEGINNERS GUIDE TO AMIGA WRITE HAND AMIGA CROSS DEVELOPMENT ENVIRONMENT FOR IBM MIND FOREVER VOYAGING BUSINESS STATISTICS TYPING TUTOR + WORD INVADERS WRITE HAND AVETEX 1200 MODEM EXPERIMENTAL STATISTICS MIAMIGA SALES FORCASTING VIP PRO. MIRROR PENMOUSE + SERIES ONE TABLETS MAXIPLAN ONE MEG RAM EXPANDER INFOMINDER FISHDISKS AMICUS DISKS DYNAMIC-CAD GOLDEN HAWK MIDI MI MET ICS SOFTWARE, MIDI.DIGITIZER DISCOVERY GOLDEN OLDIES MODEMS OK I MATE 20 PRINTER AMAZING COMPUTING AMIGA WORLD TRANSACTOR CANON COLOR INK JET AND DRIVER JUMPSTART SOFTWARE RENTAL CLUB CONSIGNMENT SALES AND MORE!'! A BETTER QUESTION WOULD BE "WHAT DON'T WE HAVE?" ONLY WHAT WORKS, SATISFACTION GUARANTEED So vve have two primary parameters by which to judge a digital audio system: word width and sampling rate. As always, there are tradeoffs involved. A wide word (say 14 cr 16 bits) can give us the ability to reproduce sounds indistinguishable from the original, but at what price? Higher resolution converters, both A D and D A, are expensive; A Ds which resolve more bits are slower than smaller A Ds (this has an impact on sampling rate); for systems which store data, more memory is required for wider words. A high sampling rate (50 Khz, for example) allows us to capture and reproduce the complete audio spectrum with simple guard filters, but again we pay. Higher system throughput and high speed converters translate to more expense; more memory will be required to store the digital information. Amiga sound Understanding the basics of digital audio, let's take a quick look at what we need to implement a system using the Amiga. Fortunately, a lot of the requirements have been met by hardware and software already "under the hood". Between the custom sound chip and the 68000, high throughput is not a serious issue. The Amiga has four 8 bit D A converters built in, each with it’s own 6 bit volume control. Although this would seem to limit the S N ratio somewhat, games can be played with the volume control bits to improve the quality over what we would get from a stock 8 bit converter. It is possible to pair the converters together to get much higher resolution and better sound quality in two channels. The only thing we are really lacking, in fact, is the A D support, which is the core of the audio digitizers soon to be released. We will be taking a look at these digitizers in detail as they come in over the next few months. IN CLOSING This is an exciting time to be involved with electronic music. The Amiga offers tremendous potential as yet untapped. MIDI, the Musical Instrument Digital Interface, still in it's commercial infancy, is just beginning to take off in popularity. Yamaha has opened the floodgates to a new synthesis technology with FM sounds. Korg has blended sampled sounds and traditional analog technology into an affordable hybrid. Casio, Ensoniq and a host of others are bringing different approaches to the masses at unheard of prices. It goes on and on, and we are in the midst of it, or can be. All we have to do is open our eyes. And our ears. Nybbles, Rick AC The Sidecar is a hybrid machine that unites the Amiga and IBM PC computers. It provides complete IBM PC compatibility for the Amiga, with a 5 1 4 disk drive, three PC-compatible card slots, 256K of onboard RAM, and a numeric coprocessor socket. AT COMDEX Sidecar A First Look by John Foust The Sidecar stands an inch taller than the Amiga system unit. It mates directly to the side of the Amiga, to both the system bus and the joystick connectors. It is not a system bus passthrough, so it must be the last peripheral device connected to the Amiga bus connector. The Sidecar has a single internal slot for an optional Amiga memory expansion board, in 2 megabyte or 8 megabyte sizes. For IBM memory expansion, it has empty sockets for 256K more RAM on the motherboard. Sidecar has an expected retail price of about $ 650. Commodore representatives said it should be available in late summer or early fall. Dealers should have demo Sidecars in mid-summer, as 1500 preproduction models were expected to arrive in early June. The Amiga continues to work as usual while attached to the Sidecar; it does not harm the multiprocessing capabilities of the Amiga. The PC video display appears as a window or screen on the Amiga display. However, the Sidecar requires a special Amiga program to run, so this interface software takes up some Amiga memory space. At the introduction of the Sidecar at COMDEX Spring in Atlanta, Commodore privately encouraged IBM PC hardware and software developers to test the Sidecar for IBM PC compatibility. All comers succeeded, including a hardware developer who reported his product would not run on many PC clones. "Most of the compatibles crashed with his system," according to an engineer who helped design the Sidecar. The popularity of the PC-10 and PC-20 in Europe also attests to the full compatibility of the Sidecar, Hard disk expansion The floor model of the Sidecar had a 20 megabyte hard disk card installed in one of the slots. This drive can be partitioned for use under both operating systems simultaneously. Each operating system can access the resources of the other. For example, it is possible to share PC-DOS files with AmigaDOS programs, and vice versa. The Sidecar with a hard disk card offers the most economical path towards a hard disk for the Amiga. "Hard card" disk drives of this type are commonly available for about $ 500, for 10 and 20 megabyte versions. Multifunction IBM cards could add more IBM memory, serial and parallel ports, a battery-backed clock, a modem and more on a single card, starting at $ 150. Conceivably, these resources could be used by Amiga programs, as well. If you have an Amiga 5 1 4 disk drive, you can still use it with the Sidecar, since it has the standard daisy-chain disk drive connector on the back. Resource sharing The Sidecar and Amiga share resources, so the Sidecar does not have its own keyboard, video circuitry, or parallel and serial ports. (Of course, an additional IBM card could provide more ports.) Cards are not Extra graphics necessary with the Sidecar. It emulates both IBM monochrome and color graphics using the Amiga video circuitry. Monochrome windows reside on the Workbench screen. Color windows reside on a separate pulldown screen, in 640 x 200 resolution. One monochrome window and one color screen can be present at once. However, only one can be selected to run at a time. The sixteen colors available under IBM color graphics can be adjusted with a Sidecar Preference program, using a palette gadget. To begin with, both types of windows are resizable. The Intuition gadgets scroll bars take up space on the screen, but if you double-click inside the window, the Amiga window borders disappear, and standard 24 lines by 80 columns are available to the IBM program. The video interface between the Amiga and the Sidecar depends on 128 K of dual-ported video RAM. When the PC program changes anything in on its screen, the video memory is changed. The Amiga gets an interrupt, and can decide whether to update the PC screen on the Amiga display. If it chooses to update the screen, the image in the Sidecar video memory is quickly transferred to the Amiga video memory, using the blitter. The priority of this update is selectable with the Sidecar preferences. Made in Germany The Sidecar was developed by the engineers at Commodore Business Machines in Braunschweig, West Germany. It is based on the successful design of Commodore's PC-10 and PC-20, Commodore's IBM PC compatible computers. Many Sidecar engineers were instrumental in the development of both machines. The PC-10 and PC-20 were formerly sold only in Europe and Canada, but recently, Commodore began marketing them in the U.S. Janus and Zaphod The German engineering team adopted the codename "Janus" for the Sidecar project, after the Roman god. Janus had two faces. His name gives us the month "January". According to CompuServe Amiga Forum member Jim Ventola, Janus was the first Roman state god, and that the proper sacrifice for Janus was a ram. However, RJ Mical called the Sidecar "Zaphod", after the character from the book "The Hitchhiker's Guide to the Galaxy." In the book, Zaphod Beeblebrox has two heads. They constantly argue with each other. Mical left Commodore-Amiga in January. He was the primary author of Intuition, the windowed user interface on the Amiga. When the Sidecar engineering team needed software for the Sidecar, they sought RJ Mical. For more discussion of Mical's involvement with the Sidecar, see his interview elsewhere in this issue. The German engineers developed the Sidecar on their own. "We were free to design it. No one said 'This is the way to do it,'" according to Frank Ullmann, a hardware engineer on the German team. "It was easy." Ullmann had done similar work for his master's degree. "There should be no incompatibilities," he said. Starting with the PC-10 motherboard design, they removed the interface circuitry lor the parallel printer, the serial port, and the keyboard, and made the changes lor the switch from 5 1 4 drives to 3 1 2 drives. The number of IBM card slots is still pending, Ullmann said. Also, some of the circuitry will be reduced to custom gate array chips in later production. "It was a very new style of programming, a multitasking I O driver," according to Torsten Burgdorff, a software engineer. Burgdorff and Ullmann were present at COMDEX, escorting the Sidecar prototypes through customs. The first molded plastic cases arrived just in time for the show. They tested the first 8 megabyte RAM card for the Sidecar minutes before packing them for COMDEX. The prototype board used new Toshiba t megabit RAM chips. The 2 megabyte board uses 256K chips, so both designs use have 64 sockets on the optional memory board. The slickered top of the BIOS ROM chip is visible between the eighteen RAM chips and the left ribbon cable. The three IBM-compalibie card slots are at the right edge of the picture, towards the back of the Sidecar. Sidecar vs. Transformer: Computers in Disguise The current path to IBM compatibility is the Transformer program, a software emulation of the IBM computer. It is currently bundled with the 5 1 4 disk drive available for the Amiga. The Transformer, made by Simile Research, of Centerport, New York, interprets the 8088 microprocessor instructions in an IBM program, and mimics their functions with a program written lor the 68000 microprocessor in the Amiga. This process is slow, but for many applications, speed is not a limiting factor. At one point, Commodore announced a hardware accelerator for the software Transformer, but this project has been shelved, according to Simile Research marketing director Doug Wyman. This was to be a set of custom logic chips that accelerated the translation of 8088 instructions to 68000 instructions. For more information on the Transformer, and Wyman's reaction to the Sidecar introduction, see his interview elsewhere in this issue. The German Sidecar engineering team can be reached at: Commodore Buromaschinen GmbH Ernst-Amme-Str. 24-25 3300 Braunschweig, West Germany Telephone (0531) 55051 Telex 952 518 come d Fax (0531) 50 80 88 • AO Hmazing Computing Next Month: User Groups! Finally, a programming environment that's been designed specifically for the Amiga..™ J Multi-Forth™ for the Amiga. Multi-Forth is a new language which was designed to unleash the full power of the Amiga. Multi-Forth provides complete access to all Amiga libraries including Intuition. It compiles stand-alone applications in seconds (other languages typically take several minutes). There are no royalties, and no "levels." CSI provides the best support of any computer language vendor, including CSI technical hot line, our own CompuServe net (GO FORTH), and comprehensive documentation. Programming the amazing Amiga is interactive and fun with Multi-Forth. Contact us for a technical data sheet with the complete list of Multi-Forth's features. Simply the best programming environment for the Amiga. $ 179 Introductory price. Multi-Forth is a trademark of Creative Solutions, Inc. Amiga is a trademark of Commodore-Amiga, Inc. Creative Solutions, Inc. 4701 Randolph Road Suite 12 Rockville, MD 20852 (301) 984-0262 in MD or 1-800-FORTHOK At COMDEX: John Foust talks
with RJ Mical RJ Mical (his last name is pronounced as
"Michael") wrote most of Intuition, the windowing interface
on the Amiga. In this interview, he discusses technical details of the Sidecar, along with some of the problems they encountered in its development, and why Intuition isn't hard to program. Mical's comments are prefaced with "RJ:". The comments within the transcript are mine. JF: Did you work in Germany, or where did you meetthem? RJ: Well, they first brought a prototype of it out here in the end of January, beginning of February, something like that. It was wonderful, because it was a PC talking through an Amiga window. What they really had done was the hardware interface part of it, but they didn't have any of the software, and their software cheated like mad. It sat there and didn't do anything else but look at the hardware and see if anything had changed, and it didn't use the multitasking, and it didn't use any of the system functions, and stuff like this. They realized if they were going to have a viable product, they needed to get some people who really understood the Amiga to lay the software down for them. The guy that came out to do the serious recruiting for the project was Rudolph Goedecke. "Herr Doctor Goedecke", he's a real nice guy. Much to his dismay he found when he got there that I was no longer an employee. I don't know if you know, but I'm not an employee of Commodore. JF: When did you leave? RJ: It was in January. He came out and got in touch with me at home, and asked me if I would go out to Germany. It was a real interesting job, because it was relatively easy, or within reason, I mean, to get the basics done, to get enough of the software together where the PC could exist in an Amiga window. That part was relatively easy. From the very beginning we set our sights as high as we could. It wasn't just the simple matter of a PC talking to an Amiga window. We were actually going after creating a hybrid machine, where the two of them could co-exist, one could be a coprocessor for the other. JF: ThusIhe name "Janus." RJ: Yeah, Or "Zaphod" is my name for the project. JF: That would make a little more sense to the non-classics majors. RJ: I'm not exaelly sure. Are you a classics major9 JF: No. RJ: Well, I'm not either. But I have the impression that Janus was not an altogether savory character. So I've resisted that codename aii along. 1 wanted to use some code name, so I came up with my own, "Zaphod". When it first started, it was very appropriate, it was like the two heads are constantly bickering with one another. That's what it was like when we first put the two of them together, it was a lot of fun. It was a good name for me. In fact, everywhere in my source, this was the code name I used. We've set it up so that the two of them do coexist. The PC is a normal old PC, but instead of writing to its display memory, it writes to the dual-ported memory that my software can access, not just my software, but anyone's software, that uses this interface mechanism that we’ve created. The interface mechanism is entirely bidirectional and completely flexible, so you can ask either processor to do something for you. For instance, one of the demos t wanted to get together in time for COMDEX, but I spent all my energy just working on the display stuff, was a Mandelbrot program. Have you seen this? One of the demos we wanted to put together was to have a Sidecar with a 8087 math processor. I'd really love to write some stuff. The thing that I'm most interested in these days, is there is a general dread, I understand, in the programmer community, that the Amiga is too complicated to program for, it's too difficult, it's too immense. It is in fact, in many respects, a minicomputer compacted down into a microprocessor frame. But it doesn’t have to be that scary, it's not that difficult. The documentation isn't there. The good books aren't there yet, the one that says to you, "Come here, now look, it's nice, it’s easy, it's not that scary, come here." This is the stuff I'm on about these days. I'm going out to user groups a lot, and I gave this one talk about the Executive and message passing. JF: You were at a FANG meeting, right? RJ: Yes. I was at one of them. I've done several things like this. I would like to write a book, I don’t know if I'm going to have time. I'm talking to Commodore about putting together a collection of routines, and documentation describing it, but mostly to show people that they don't have to be intimidated by this stuff. Ft’s all very accessible, you don't have to be a great computer scientist to understand this stuff. It’s all within every programmer's reach. It's just a matter of understanding the bigger picture better — which a lot of people don't have yet — to not be scared by a lot of the stuff that's presented as excessively systemy. I went out of my way when I wrote Intuition to give names that were fun, that were friendly. I hale to use the word "friendly", it’s overused. JF: Like the AMIGA_FIREWORKS display? RJ: I'm glad you read your Intuition manual. Like the unfortunately-named "GimmeZeroZero," which even I've come to hate now. Because it's so long to type. You know — dah dum dah dum dah dum. Like "gadgets." I don't remember some of the other things that people said — "You don't want to call it a 'gadget', you should call it this." No! It's a gadget! It's a fun name. Every guy wants to write a program, and goof around with gadgets. This is my main theme, to help people feel more at ease with the entire environment.! Don't think it is very intimidating. You have to be a good programmer to program tor the machine, but you don't have to be a computer scientist. There is a big distinction between the two of those. JF: I just realized what I wanted to do with your picture in the magazine, I want to put an equals sign and a minus on each side of your head. [In many source code examples distributed to developers, in the top of the text with the programmer's credits, RJ wrote his name: — =RJ Mica!=- with minus and equal signs on both sides. His handwritten signature is similar.] RJ: God, this has been a trademark for years. It started out years ago... Well, it's a long story. It's become such a repeated thing with me now, and 1 didn't really want to become identified with it, but I find myself being identified with it. They new about it in Germany before I got there, and they had this thing made up for me with equals signs on it. JF: Back to how both machines can access each other's memory. RJ: That's right, I was telling you about Mandelbrot. Mandelbrot is a real nifty program, and the pictures that it creates are really cool, but it takes a long time to do. It you do it without floating point, it gets cumbersome, or if you do it with integers, you lose some of the resolution. You could probably do it with a fixed-point long. This is one of the projects I wanted to go after, because it pertains to some other projects! Wanted to work on, and I wanted to do some fixed-point math routines. JF: I heard Ward Christensen was working on Mandelbrot wallpaper, in Turbo Pascal on the PC, RJ: My dream with Mandelbrot is to control it with a joystick, so you could zoom over the surface in real time, and dive in. 1 figured out the quantum leaps in calculation that would be required... Not with today's technology. Maybe with a Cray. One of the demos we were going to put together, was to show the Mandelbrot program as it exists today, not with the shortcuts or anything, (but) with the floating point, and do the same thing using the sidecar, where the Mandelbrot program would run on the Amiga, but instead of doing the math calculations for the innermost loop that derives the quantum for a point, it would instead be able to call the PC, and say, "Here's the current coordinates, do the routine for me." The PC would use its 8087 to do the calculation for that point in a flash, and give it back then, giving it back using that communication link that we have set up between the sidecar and the Amiga. We were looking at an increase in speed of al least a factor of ten. A factor of ten is dramatic, because some of the more intricate pictures can take six hours to draw. If you're talking about the difference between thirty-six minutes and six hours, it's a lot better. JF: Can they view each other's memory? RJ: Not directly. But there is a facility we've created where either processor can ask to see a chunk of memory in the other. We've got a 128 K dual ported. They've set up a signal-locking mechanism where they can gain access to that memory and lock each other out, and we've created a little memory manager that goes in there and allows you to allocate chunks of that memory, and use it for communications, use it for message passing, use it for accessing the hard disk by setting up a butler. You can then say to the PC "Read this information off the hard disk, into this buffer." Since it's memory that you can access from the 68000 processor, you’re getting hard disk speeds. JF: A lot of people are wondering about documentation for all this. RJ: We're doing all the documentation ourselves. I'm doing the documentation myself. Right now, that's the way it’s been, Hopefully, in the end, it won't be that way. The only completely written piece of documentation right now is the user's manual. Plus, we've put together about a seven-eight page marketing blurb that I didn’t write, I edited, for one of the Germans, this guy Dieter Preiss, who's 1he head of the project in Braunschweig. He's very good, extremely good. He's too modest about his English, he's actually very good with English, but I took it and edited it for him. So I've written the user’s manual. It goes into great detail about it. It doesn't pretend to be a tutorial about the PC itself, it's just how to use these display windows. Right now, the only thing that exists for programmers, if we were going to give it to programmers today, would be the include files, which are reasonably well documented. It’s not a good programmers guide. On the other hand, we’re not willing to release it to programmers yet. What we're showing here at COMDEX, we’re only calling the COMDEX release. They're probably going to take this version of it, and make a bunch of them and give them to dealers. JF: Do you know when evaluation units will go to developers? RJ: I don’t know. This one couldn't go. What we have now couldn't go to developers because we pulled out all of the stuff that was close, ali of the stuff that kind of worked, but every once in a while wouldn't work well, we yanked all of that. The most important thing about the Sidecar, about the PC, is for it to never crash. If we’re going to say this is PC compatible. It's got to never crash. It's got to always work, and always stay up. Otherwise, it's going to fail, and you're going to be talking with the Guru while you're using your PC, it's not going to make you real happy. It's not going to make you fee! Like you've made the right purchase. It was essential for us to not show anything here that had any risk of not working correctly. We have a lot more done than we're actually showing here. We’re just a few weeks away from having the rest of it done. JF: Things like the file interface? Can both of them access the 5 1 4 drive at the same time? RJ: Both of them can access the hard disk at the same time on the PC side. We set it up so that you don't have to buy a parallel card for your PC, because you can use the Amiga parallel port. In the end, it will work that way. Hopefully, we'll be able to pull olf the same tricks for the serial port. You don't need a color or monochrome display card, because these come built in automatically. They completely use one another's facilities together. You can write this code that asks the PC to use it's 8087 coprocessor. The way I envision it, is to have a task that's running, and the PC would send requests to this task, and this task would then turn these requests into calls lo graphics routines, executive routines, so that the PC can get at the Rom Kernal. JF: It opens up a lot of potential for debuggers, RJ: Oh, yeah. The thing that is most exciting about it is not that it's a PC and an Amiga stuck together, but that it's a new machine, that has both processors, It's yet another coprocessor in the Amiga environment. It's a brand new kind of machine, a new generation of machine, a hybrid, where the two of them exist at the same lime. This is the most exciting thing. This is the thing that may, if enough people get behind it and support it, could lead to a new generation of thinking about the Amiga computer and the PC as both in one box. [HINT. I don't think he was supposed to say that yet.] But I don’t ever want to lose the Amiga computer, i think the Amiga computer is superior in every respect. I don't want people to ever lose sight of that. In fact, I was surprised by the PC. I had never looked into it that deeply before this project. It's just a better Apple][, I was expecting some incredible, glorious system. I didn't know what I was expecting to find in there. JF: Did you read Dr. Dobbs this month? RJ: No. JF: ft explained how the RAM disk handler works in the AT. The ram disk handler gets a request through the operating system. It sets a flag, reprograms the keyboard controller to reset the processor in a short amount of time, then waits, reboots, goes through the boot ROM, and checks the flags to see it was doing a ram disk call, and then gives the data to the calling program. RJ: That’s extraordinary, almost unbelievable. 1 had this unfounded reverence for the IBM, not because t understood it. The typical, stereotyped, same set of beliefs that everyone else had. If it said IBM on the outside, you fell for it. JF: Like all these IBM clones walking around. RJ: It's not a bad machine. I'm not degrading the machine at ail. All I’m saying is that it is no glorious machine. My greatest dread was that I was brought out to do this project, and I didn't know the PC. I figured I'd spend the first two months of this two-and-a-half month project just learning the PC, before I would be able to do anything with it. 1 was delighted to find that I had learned most of everything that I needed to know on the plane ride to Germany, by going through a couple of the books that I had. Fortunately, some books that are out there that are very succinct, very clear-cut, description of what's going on inside the PC. Where those books were vague, I grabbed the PC Technical Reference manual, and where I found that too was vague, then I had BASIC, and i could write little programs, and say "What happens when you hit this hardware register with this value, then what reaily'happens?" That's been a real interesting process. The monochrome is no big deal to mimic, but the color display, by writing to hardware registers, you can change it to all these high-resolution modes. It was a real trick to follow all of that, and the logic is, unfortunately, not clean. There's convoluted bits, and it takes a convoluted understanding of what things are supposed to happen, and I didn’t have it quite right. Are you familiar with the Microsoft Flight Simulator for the PC? Well, Artwick’s a friend of mine. [Ed: Bruce Artwick, the author of Flight Simulator.]! Was constantly resisting calling him. I wanted to call him, and say "What did you do?" His program would misbehave so often with my code. To get his magic 1o occur on the PC, he uses every trick in the book, he uses every idiosyncrasy known about the PC to get it to work that well, and to get all that real beauty. And so the Flight Simulator, from the very beginning, was one of my test cases. If I could get the Flight Simulator to work, through my software, if I could have his flight simulator, in an Amiga window, which was always one of my dreams, then I knew I was doing OK, that I was on the right course. So, a lot of the time when [was doing my development, i would have the Flight Simulator up in an Amiga window. You can't just have it there, because that doesn't say if it's really working, you actually fly if around a iiltle bit, and have the display change. So I was constantly flying it around a little bit. This proves to be rather hazardous to one's productivity, i'd sit there for twenty minutes trying to land this thing. There was one day when 1 really got interested in it, and I looked at the invoice I submitted to Commodore on that date, and it looked like Swiss cheese — all these holes in it. Fifteen minutes here... With any luck, this will prove to be the first step in a new wave of computers. It's hard to say what will really come of it in the long run, because nevertheless, it's a kludge. It's taking two established computers and sticking them together. A multiprocessor environment is really where it's at, and that's where it will go in the future. I think that DMA is a crude example of multiprocessing, but the wave of the future is to never sell a box with one processor in it ever again. This is an interesting application of this idea, having two processors in one, and I think that a lot of people will gel behind it. I hope that a lot of programmers will. 1 hope that this goes further than just the Sidecar attached to the Amiga. That someone, Commodore or someone else takes the idea one step further, and makes it more of a coherent melding of different processors. The Amiga and the PC happen to be well-suited for this, because of the enormous software base available for the PC, and the enormous graphics, sound and multitasking capabilities of the Amiga. The two of them fit together really nicely. JF: What was your impression of the German engineers you worked with? RJ: They were all very good. I had a good time working with them. I wished they had spoken with me earlier. I would have strongly encouraged them to wrap the Sidecar around the top of the Amiga, rather than going right in on the side. They considered it. They said they could have found a way to do it, but it would have been very hard, because of the length of the cables involved, and the transmission times. They weren't as sensitive as we are to the footprint of the machine. It's a different philosophy in Europe. They're more concerned about the power of the machine. Roomers by The AMIGA Because so much happened in the past few weeks, I squeezed the layoffs and Comdex in, but not much else wili fit. I'll get to the hard rumors next month... Sorry to start on such a bad note, but news is news, and the most important goes first: Much of Commodore-Amiga is gone! First, back in December at the height of friction between Commodore and Amiga, Carl Sassenrath author of Exec, the Amiga’s Kernel) and RJ Mical (author of Intuition, the user interface) left Amiga on their own. Bob Pariseau (VP of Software) came close to leaving also, along with others. It is not clear that these actions came because of the friction, but the timing was the same. Now, after Comdex, Commodore decides to cut much of the staff. "Only management and engineering support were cut," the press release says. Now gone are Bob Pariseau (who got his in the first wave), Sam Dicker (the Amiga sound guru), Rob Peck (Quality Assurance), Bruce Barrett, Kodiak Burns, the Amiga in-house artists, Stan Shepard, Barry Walsh and about a half-dozen others. Amiga support on the East Coast was not cut. Without editorializing, let it be said that the CBM folks on the East Coast turned to Amiga on the West Coast for the answers, not the other way around. Needless to say, the people who brought you the Amiga are stunned. Those that are stil! Left don't know how long they'll be around. A good week of development and bug fixes of version 1.2 was lost because of people bumping into desks and the like. People are recovering, but it’s not something that is easily forgotten. Dale Luck, graphics wizard at Amiga, left for "an extended leave of absence" (his words) from May 23 to September 1. Let's hope he comes back September 1. COMDEX OK. Let's talk about Comdex. It was wild. In this AMIGA's opinion, the Amiga booth (Commodore had no C-64's or C-128's there) was the most crowded booth in the show. Next to the Amiga booth was the Lotus booth, which was bigger than the Amiga booth — and empty.__ Commodore president Tom Rattigan was heard
wondering aloud if maybe Lotus who picked up two developer
machines at the show) would be willing to rent some of their
floor space to CBM... There were ten 'stations’, each with five
Amigas. Each station was dedicated to a certain type of
software — there was music, business, entertainment, education,
financial, productivity, technical, graphics and hardware
applications demonstrated, with overlap in some booths. HARDWARE MicroForge showed their line. A spokesman was quoted as saying that MicroForge intends to support the Zorro specification, contrary to what they had originally stated. I heard that MicroForge just raised their prices; also that MicroForge just LOWERED their prices! Huh? Byte-by-Byte showed the PAL, an expansion box that sits on top of the Amiga (under your monitor) and contains a power supply, 512K of RAM, a 20MB disk drive (expandable to any two half-height drives... they had a 50MB drive at the show) a clock calendar and four expansion (Zorro) slots. Prices should be around $ 2500, available this month. Byte-by-Byte also said they have a 2MB RAM board that can be upgraded to 8MB when 1K DRAM chips become available in quantity, and they have also been contracted by A-squared to do a board that does LIVE! HAM images. Their show flyer stated that development was underway for a frame grabber, graphics tablet, digitizing tablet, professional music hardware and software, and an Ethernet board. Speaking of LIVE! And HAM, A-squared never made their appearance at the show but the LIVE! Board was there, and the software was doing HAM. It was rather primitive, but it was HAM. Each image took about 8 seconds to draw, and the software had no provisions for manipulating the image. 256K ADD-IN MEMORY | 95$ | If you bought your Amiga without the 256K additional memory and have $ 95, this is the deal you have been waiting for! Send a check (certified for faster processing, at this price the cash flow situation is very tight) to the address below. If you already are running 512K, or are not sure what to do, send $ 1 for a listing of currently available products for your Ami ga. £ Prices include shipping) VKOL & COMPANY Computers 2545 Bainbridge Blvd., Chesapeake, Virginia 23324 CSA was not at the show, but Dale Luck of CA brought an expansion box with him and had it there for all to see. It is a Zorro backplane with power supply, stands about 9x9 by maybe a foot high (I think it looks like a square smokestack) and the CSA "Turbo Amiga" boards have been modified to meet the Zorro board size (of course they don't meet the startup auto configuration code, since they take control of the bus!) Also at the show in spirit were Comspec and CardCo, who had their 2MB and 1MB memory boards, respectively, at the show via other developers. Applied Visions had their "FutureSound" sound sampling device, and Mimetics was demonstrating their "Soundscape" sound sampling device and associated software. Quoted Soundscape prices at the show were $ 99, but Mimetics has recently raised the price to $ 150, which most audio people I've talked to agree is a more realistic price for all the things that Soundscape can do. Sharing a booth with Activision was Golden Hawk Technology, showing their "MIDI Gold" interface box. The Digi-View system was also at the show — in fact it was back to back with LIVE! — which only does HAM, and does it well. You have to take three monochrome pictures, (with the digitizer), each with a different filter (red, green and blue); the software combines them and produces an image. The software also allows you to play with the color palette, so you can fine-tune the image if you like. My impression was that the Digi-View system produced better quality pictures, and Digi-View is cheaper. However, LIVE! Can do realtime digitizing, and has the potential for accomplishing all that Digi-View does, if somebody would come out with the software to do it. Another factor is availability. You can get Digi-View NOW, and nobody seems to know when LIVE! Wiil become available. At the show I heard that the LIVE! Board was put together by hand, and was designed in such a way that mass producing boards was impossible, so it's being redesigned. Also on display was the Genlock video mixer. This Amiga had no salespeople around it, because the Genlock just sold itself. They just set the device for an equal mix of Amiga and external video. People walking by could see themselves on the monitor while other standard Amiga demos ran, such as Amiga-3D and Fields. Tecmar wasn't demonstrating at the booth, but they did have an Amiga at their own booth, and had the T- connect and T-disk there. The good news is that the T- disk no longer sounds like a vacuum cleaner! The sales rep there was very pleased when we put our ear on the drive and didn't hear anything. "Yes, we fixed it!" He proudly announced. The bad news is that the price cuts they were considering have not come to pass, and the controller is still outside the drive. U. S.E. Inc had flyers for their "BoingBag" Amiga carrying cases
- The Model 1200 at $ 130, which carries the Amiga and has
enough room left for two 3. 5" disk drives, and the Model 1080 at $ 90 to carry your Model
1080 monitor. The AmigaModem exists! At least one does, anyway. The modem made a brief appearance at the show. A sticker on the bottom said "Prototype 1 — 4 25 86”. A spokesman for CBM said the modem and software have been done for a while; the holdup has been getting power supplies and DB-25 connectors! Commodore had two Electrohome long-persistence monitors at the show, just to show that the Amiga likes them. Jay Miner, designer of the Amiga's graphics chips, said that he foresaw a decrease in prices for long-persistence monitors, and that the main reason they have been so high is that the market for them has been rather small. A visit to the Electrohome booth revealed that the monitors Commodore was displaying have been discontinued by Electrohome, and a new, better looking and less expensive model has taken its place. Available now for $ 1095 or so. Sony had two Amigas at their booth, one showing RoboCity on a projection monitor and another showing Digi-View HAM slides on a KVI311CR monitor TV. A quick stop at the Iomega booth revealed that they hadn't seen a market for the Bernoulli Box on the Amiga, but after seeing the Commodore booth, two of Iomega's Engineers admitted that it was certainly worth looking into. And of course there was the hit of the show — the Sidecar. I saw AC "sub-editor" (hey, that's what his name tag said) John Foust running around tugging on people to get the inside scoop on the Sidecar, so I’ll leave that for him to tell. I did hear that there was some friction between a CBM exec and the engineers about the number of expansion slots: he wanted one, they wanted three. Last i heard, it would have three. Here's one forthe engineers! THE AMIGA PERSONAL COMPUTER. UNSPEAKABLY ADVANCED. UTTERLY AFFORDABLE. SOFTWARE There was a lot of software at the booth, loo. We had Lattice and Manx next to each other, each showing their C compilers and other utilities. Metadigm was showing its debugger for the Amiga, MetaScope, at another station. The folks from MaxiSoft were showing their new and better MaxiPlan (an integrated Spreadsheet Database Chart Maker), along with the rest of the MaxiSeries — MaxiComm (terminal program), MaxiDesk (desktop management), MaxiMizer (macro maker), MaxiShare (real-time data sharing for two Amigas), MaxiKey (looks like MaxiMizer to me) and MaxiCache (dynamic disk buffering). Mindscape had a few games: The Halley Project, Ratter, Deja Vu (graphic text adventure), Keyboard Cadet and Brataccas. First Byte (not to be confused with Byte-by-Byte) whose advertising claims are the "world's leader in software speech technology," had two packages: KidTalk and SpellerBee. Digital Creations was showing the Gizmos productivity set, a package of fifteen desk accessories for $ 49. I hear the LIFE game is pretty good. Digital Creations also had Digital Link, which lets your Amiga talk to Macs and iBM Pcs. In fact, for $ 69 you get three disks — one for each machine! Softwood Company showed MiAmiga File, a database management system for the Amiga, i've never used a database manager, and was impressed at the ease of use of MiAmiga File. Moving a column is as easy as clicking in the column and dragging to another place! It supports selection by example and range, multi-field sorting, and more, i can see that it can’t do EVERYTHING that you'd like a database to do, but for $ 99 it looks pretty good. Not to spoil the party, but I hear of problems running under VI.2 of the system software. Will keep you posted. Also in databases a fully relational database from Transtime, for $ 350-$ 500,I think. A competitor is Taurus Software, who has Acquisition, also relational and in the same price range. Software Circuits, Inc was giving a demo of their PC Board Layout system... called PCLO, it retails for $ 1024 and is the first in a line of design tools for the Amiga. It uses 320-by-200 line resolution (for memory efficiency and CPU speed, they say), and claim that CardCo laid out the 1MB RAM card using their THE EXPLORER A tool to match your curiosity! Would you like...to scout the inner workings of your Amiga?...a live window onto memory to watch what other tasks are doing?...an on-line memory map to tell you where you are?...to actually see the assembly language code, in human readable form, that exists inside your Amiga?...to step through a piece of code to see what it does?...to capture your own source code and customize it? The EXPLORER has some powerful features that make it a superb extension of your curiosity. Features: display memory and files in Hex and ASCII, memory modify, search, move, fill, display and change registers, disassembly trace, load programs, disassemble to disk. Output to printer or disk file. Powerful commands: loops, text display, realtime RAM view, & more! The EXPLORER puts your sense of wonder in charge! The EXPLORER can be used for serious program development too! As a debug too! The EXPLORER'S command set is compact and efficient. You can execute your commands within loops, creating live displays of RAM or registers while you test your program. You control the display format too, and even display informative messages. No need to waste valuable time typing that patch into memory every time you debug. Simply write a new command to do it for you. After all, what are computers for? When you want to save the contents of RAM or a series of trace steps for future examination, just send them to the printer, or better yet, send them to a disk file! PRICE: $ 49.95 plus $ 3 shipping and handling. COD add $ 4. Visa MC orders call (G12) 871-6283. Money orders or checks to: Interactive Analytic Node 2345 West Medicine Lake Drive Minneapolis, Minnesota 55441 package. PCLO supports libraries of items, highspeed routing, and source lor the plotter driver, so you can customize your own. New Horizons had Flow, an idea processor for $ 99. Classic Image had a flyer showing a game called Diablo for $ 30 and Disk Library, a disk organizer, for $ 50, Byte-by-Byte showed Write Hand, a word processor for $ 50, and SnfoMinder, a hierarchical "information database." InfoMinderSupports IFF, cross-referencing, context sensitive help, different display colors and styles, and more. It was running on their PAL expansion box (with 50MB DMA hard disk), and it was FAST! They had the entire ROM Kernel Manual on Sine, and could get to any section of it in seconds. Also by Byte-by-Byte is Financial Plus, a small-business program that does Accounts Payable, Accounts Receivable, General Ledger and Payroll. VIP Technologies showed Professional, a $ 200 integrated spreadsheet that is identical to Lotus' 1-2-3 in everyway I saw. Micro-Systems Software was showing Scribble!, their $ 100 word processor; Analyze!, the $ 100 spreadsheet; Online!, the $ 70 terminal program; and BBS-PC!, the $ 100 bulletin board system. Commodore had a software product at Comdex. It was the Mind Walker game (formerly WyndWalker but changed for some legal reasons).! Wasn't too impressed but everyone else that I talked to said they thought it was great. Activision showed their graphics text adventure games, like Borrowed Time, Hacker and MindShadow, as well as their $ 59 Music Studio software, which was making quite a lot of noise. Across from Activision were Mimetics and Electronic Arts. Mimetics was showing their SoundScape Digital Sampler, which will sample anything — they had a CD player and a microphone at different times — and play it back, either from your Amiga keyboard or a MIDI keyboard. The software is what makes the package great, however. You can adjust attack decay parameters, set up multiple triggers, looping, etc. Truly impressive for $ 150. Electronic Arts had its sofiware out, including some first peeks at some of those games we've been waiting for. I must report that Marble Madness looks truly great. Also demoed were One-on-One, Skyfox, Instant Music, Deluxe Video Construction Set, Deluxe Print, Deluxe Paint and more. I was surprised to see a demo of Instant Music; i’d heard (and previously reported) that it was cancelled — but hq! It looked easy to use, but not something for any serious music. On the other hand, the package that all musicians have been waiting for — Deluxe Music Construction Set — was not shown at the show. Aegis Development was also there, showing its products: Animator, Draw and Images. Images now has more features. Both Aegis and EA were at each other's throats during the show — Aegis had a press release politely damning EA for their copy protection; EA had a checklist of items that Deluxe Video does that Aegis Animator can’t. JMH Software of Minnesota, Inc was showing their talking coloring book, a program you (or your kids, right?) Can use to draw pictures and color them, simply and quickly. TDI was showing its Modula-2 compiler at the same Amiga as MicroForge. The demos they were running were pretty fast, and TDI has been pretty active getting people to give up Pascal for Modula-2. TDI has also been active on the networks and bulletin boards supporting the product. A1 the show by flyer only were DeBern Data Management ($ 125 Checkbook Manager), Zoxso ($ 49 ZLI command line interpreter) and Pecan Software Systems, Inc ($ 79 UCSD Pascal). And all this was in the Commodore booth! I spent a few DAYS hopping around the floor, looking for Amigas in other booths and bugging software developers to port their stuff to the Amiga. Many developers were impressed for the first time, and indicated they'd now start seriously looking into the Amiga. SSI, makers of WordPerfect for MS-DOS, announced they were changing their name to WordPerfect Corporation, and a sales rep at their booth said they'd have an Amiga version "in about six months." RUMORS There were a lot of rumors at the show, The largest centered around the upstairs at the Amiga booth. Only dealers were allowed to go up there, where — among other things — the Amiga 2 was on display. Actually, everyone at the show was calling it the A2000. Of course, the AMIGA got the scoop on it and the other prototype hardware. Next month I'll return with all the regular rumors that I didn't have space for this month, including a full report on the new hardware coming from Amiga. • AC* NEW! EXPERT SYSTEM KIT Those of us who get excited about computers have been iaoking for the application that takes us into the twenty-first century. This is it! Now you can create an expert system that will grow with your Amiga. Would you like a computer system straight out of science fiction sitting in your own home or office? How powerful can it be? As big as your imagination, because you build it the way you want itl We supply the EXPERT SYSTEM driver along with a sample knowledge base. Complete instructions guide you to creating your own application. Experiment with artificial intelligence! The software driver analyzes your data and learns to draw the correct conclusions. Think of the applications! Diagnose circuits, plant and animal diseases. Predict events based on past performance-weather, stock market, sports. Build the ultimate science project or develop a commercial application! We will be supporting this kit with a newsletter so you can share knowledge bases, techniques and ideas. PRICE: $ 69.95 plus $ 3 shipping and handling. COD add $ 4, Visa MC orders call 1612) 871-6283. Money orders or checks to: Interactive Analytic Node 2345 West Medicine Lake Drive Minneapolis, Minnesota 55441 AT COMDEX r AMIGA Developers v Appearing at COMDEX Activision, Inc. 2350 Bayshore Frontage Road Mountain View, CA 94043 (415) 960-0410 First Byte 2845 Temple Ave. Long Beach, CA 90806 (213) 595-7006 Mindscape 3444 Dundee Road Northbrook, IL 60062 (312) 480-7667 Aegis Development, Inc. 2210 wilshire Blvd., Suite
277 Santa Monica, CA 90403 (213) 306-0735 Golden Hawk Technology 427-3 Amherst Street, Suite
389 Nashua, NH 03063 (603) 882-7198 New Horizons Software 7806 Evaline Lane Austin, TX
78745 (512) 280-0319 Applied Visions 15 Oak Ridge Road Medford, MA
02155 (617) 488-3602 JMH Software of Minnesota, Inc. 7200 Hemlock Lane
Maple Grove, MN 55369 (612) 424 5464 Soft Circuits, Inc. 401 S. W. 75th Terrace N. Lauderdale, FL 33068 (305) 721 2707 Byte-by-Byte 3736 Bee Caves Road., Suite 3
Austin, TX 78746 (512) 328-2983 Lattice, Inc. P. O. Box 3072 Glen Ellyn, IL 60138 (312) 858-7950 SoftWood Company P. O. Box 2280 Santa Barbara, CA 93120 (805) 966 5884 Cardco, Inc. 300 S. Topeka Wichata, KS 67202 (316) 267 3807 Manx Software Systems, Inc. 1 Industrial Way, W.,
Bldg. B Eatontown, NJ 07724 (201) 542-1871 Taurus House 3 Bridge St. Guildford, Surrey
England GU1 4RY (0483)502048 Commodore Business Machines
1200 Wilson Drive West Chester, PA 19380 (215) 431 9100 Maxisoft 2817 Stoat Road Pebble Beach, CA 93953 (408) 625-4140 TDI Software, Inc. 10410 Markison Road Dallas,
Texas 75238 (214) 340-4942 Computer Food 2215 Sarah Court Suite 80H Norcross,
GA 30093 (404) 851 9103 Metadigm, Inc. 19762 MacArthur Blvd. Suite 300
Irvine, CA 92715 (714) 955-2555 Tecmar 6225 Cochran Road Solon. OH 44139 (216) 349-1009 Comspec Communications, Inc. 153 Bridgeland Ave.,
Unit 5 Toronto, Ontario Canada M6A2Y6 (416) 787-0617 The Micro Forge 398 Grant Street SE Atlanta, GA
30312 (404) 688-9464 Transtime Technologies 797 Sheridan Drive
Tonawanda, NY 14150 (716) 874 2010 Copperstate Business Systems (Distributors for
Softwood Company) 3125 E. McDowell Rd. Phoenix, AZ 85008
MicroTrends Inc. 650 Woodfield Drive Suite 730 Schaumburg,
IL 60195 (312) 310 8928 U. S.E., Inc. 8 E. 300 South, Suite 715 Salt Lake City, UT 84111 (800) 942-9402 Digital Creations 530 Bergut Drive, Suite F
Sacramento, CA 95814 (916) 446-4825 Micro-System Software, Inc. 4301-18 Oak Circle
Boca Raton, FL 33431 (305) 832-2503 VIP Technologies Corporation 132 Aero Camino Santa
Barbara, CA 93117 (805) 968-4045 Electronic Arts 1820 Gateway drive San Mateo, CA
94404 (415) 571-7171 Mimetics Corporation P. O. Box 60238 Sta. A Palo Alto, CA 94306 (408) 741-0117 Zoxso P. O. Box 233 Lowell, MA 01853-0283 (617) 655-9548 How does Sidecar affect Transformer? Conducted by John Foust This is an interview with 0. Douglas Wyman, the director of marketing and operations at Simile Research, the producers of the software IBM emulator. Wyman discusses the beginnings of Simile Research, the fate of the hardware accelerator, and the expected influence of the Sidecar on the IBM emulator market. JF: I'd like to find out how Simile Research got into the software emulation business. I understand you originally did mainframe emulation. DW: My partner, William Teal, when he was an undergraduate at the University of North Carolina, had emulated one of the IBM mainframes on the school's Burroughs mainframe. They didn't have an IBM, so they wanted the ability to run a lot of the IBM software. So he did that as his senior thesis project at the University of North Carolina. JF: i had heard you were a two-man operation. DW: That's right. JF: And that Commodore had heard about your emulation. DW: Weli, we approached them. We had originally written the program on a Tandy Model 16, which uses the 68000. Tandy was interested in it. What had happened was Bill had approached me with the idea, and asked it I thought it was marketable. Having used to work for Tandy, I knew a lot of corporate customers that would have like the ability to run PC software on the Model 16s they had already bought. So I knew that there was a market for it. He said that he could write the program, and he knew I would put together the marketing for it, so we got together, and formed a partnership, and I financed the start of the company, and negotiated the contract, and he wrote the program, it's really kind of incredible, because it's all written in assembly language, and it's about 64 K. And it's been rewritten about three times, This has all been done in the last two years. Bill has really done a superhuman feat of programming. JF: Could you describe a flowchart of how the program works? Oris that proprietary? DW: A tot of it is proprietary. On a broad scale, it is an interpreter. But we have some proprietary software techniques that cut down the amount of overhead that you get traditionally in an interpreter. We were working with Commodore on developing some hardware enhancements for our program. We had been shown that theoretically it would be possible to substantially speed up the emulator by putting a lot of it in silicon and taking the load oil the processor. JF: What happened with that? DW: Well, they abandoned the project. They still might pursue it at some future date, or they might get a third party to pursue it. They haven't roaliy indicated to us which direction they are going to go. I guess that's their prerogative. We're willing to work with them or another company that wants to pursue that, though. There are obviously some benefits for the consumer in that approach. JF: Can you tell me about some of the problems you’ve had with the emulation, such as copy protection? DW: Obviously, if everyone wrote their programs to the PC specification, it would have been a lot easier to write the emulator. To do the emulation successfully, since so many of the programs go below the operating system, directly down to the chip level, for our emulation to have been successful, we had to that go to that extent also. So we emulate not only the machine specifications, but we emulate it right down to the chip level. That's the only reason you don't have the color graphics at this point in time. It's not a matter of not being able to do it, it’s just that we haven't implemented that part of the system yet, we've only implemented the monochrome graphics. There's really no reason we couldn't even go to EGA graphics, or whatever. JF: Have you looked at the Sidecar? DW: Yes, I've looked at the Sidecar. I know a number of companies have tried to get 8088s to work with 68000s in the past. There was a computer on the cover of several magazines about two years ago called the Rainbow. They had a lot of problems with that. Amiga, when they were Amiga, even, looked into that, and abandoned it. The 8088 architecturally does not lend itself well to go in with a 68000. If they can pull it off, more power to them, because it's really a difficult engineering feat. The question I would have about that particular approach is that I doubt really if you could get significant economies over just going out and buying a Korean or Taiwanese clone, and how much extra value does the user get from that over our program, let's say. Our program, granted, does not run as fast as a PC, which is the lowest common denominator as far as what is expected. People are looking at AT performance. However, we do allow people to run their programs. Most programs are I O bound, and not processor bound. In actual use, a lot of programs people use are databases and word processors, there is not really that much visible degradation to the user. At the price point we can sell our package, with a 5 1 4 inch drive, it really makes a lot of sense to the consumer to take full advantage of the advanced technology of the Amiga, and possibly bring home work from the office, where they might be using the PC. I can understand why they might have gone to a Sidecar, just to cover all the bases. It gives them a complementary situation. They can go in the low-end, iow-cost, PC-compatible solution, and they can have a deluxe solution for the people where the speed is really an issue. The consumer really benefits from it. I think everyone really comes out ahead of the game. ¦AC-AMIGA DISK UTILITY The First Disk Repair Kit Available: Restore deleted files: Repair errors: Recover data from damaged files: Edit in HEX or ASCII: Simple control using mouse: Complete Documentation describing the disk and all the sector types Diskwik gives you total access and control of your disks far beyond that which DOS allows. DISKWIK has features for tire novice and advanced user, including such life saving features as restoring deleted files, and eliminating any errors on the disk except those due to defective disks. The INFO option will give you block type, filename, bytes in file, protection status, and more... The documentation included is worth the price alone. In it you will learn how data is stored, how the directory works, and all the different types of sectors are explained. Diagrams matching the screen on your monitor make it easy to locate and identify the different sections. All this and more gives you the knowledge to fix corrupted disks, or just experiment. Advanced features include editing in HEX or ASCII, copy blocks to the same or another disk. Reformat tracks, correct checksums, open a file to a ram disk to save one or more individual blocks for later use. DISKWIK fully utilizes the mouse to make moving around the disk as easy as the push of a button. All this for only $ 49.95 makes it a true value. DISKWIK is available from: P. O. Box 665 Glendora, CA 91740 (818) 334-0709 Dealer Inquires invited Microsoft Basic Tutorial
Part III: MBAS 1C Features by Kelly Kauffman CIS 70206,640
Welcome back to the Mbasic tutorial. In this third
installment, I will tell you about a couple of main
features in Mbasic and we'll start to get a little better
working knowledge of the language, Probably one of the most
important backbones of any Basic language are variables.
Variables are symbols to the computer that can change
values. Think of them as labeled boxes with different
numbers in them. Variables take the form of letter (s). For
instance you can name a variable "AMIGA" if you like. The only restrictions on variable’s name are (1) They cannot be a name that is ALSO a command in Mbasic. Those names are listed in your Amiga BASIC manual on page A-13 and A-14, (2) They are limited in length to 40 characters, and (3) They cannot contain any spaces. Some examples of acceptable
variable names are: RUNNCLOSE_WINDOWOPEN_DlSK TH E_A MIG A_l
S_G R E AT AMAZING_COMPUTINGBUTTON Take for example the first
variable — "RUNN.” We can assign it a value by giving Mbasic a
command like: (Note that this command can be typed into the
LIST window and then RUN, or you can type it in the direct
command window.) LET RUNN=322 Then, in the direct mode we can say: PRINTRUNN The computer will respond with: 322 This is what the name variable means. Now you can issue the command: LET RUNN=RUNN+RUNN The computer will take the current value of RUNN and add it to the current value of RUNN and then reassign it to the variable RUNN. So in essence we have: LET RUNN=322+322 Now, when we ask the computer to display the contents of RUNN, it will come back with 644. It should be noted that the "LET" command is optional. It is a good idea for beginners to use it, but when you become more proficient in Mbasic, you will begin to omit it which will free up some extra programming memory. It is also good practice when naming your variables that you give them names that will represent something to you. Naming variables "I" or "W" ARE acceptable, but when writing long programs with lots of variables, you will find out that you won’t always remember what T or "W" represent. For this reason, it’s good to name your variables with a word or words that will make sense to you. For instance, if you're writing an inventory program, instead of naming the variable "X" for the retail price, call it "RETAIL." This will save countless time in looking up the meanings of your cryptic X's and W's!!! Another useful feature of Mbasic are called FOR NEXT LOOPS. There are two parts to this command, the FOR and the NEXT. There is also an OPTIONAL third part, the STEP command. The syntax for this command is: FOR var = arg1 TO arg2 NEXT var The word FOR defines the beginning of your loop, while NEXT defines the end of it. The variable name (var) is any name you assign, and aryl and arg2 are the range of the loop. Here’s an example of a FOR NEXT loop. FOR LOOP=1 TO 100 NEXT LOOP In this particular loop, the variable LOOP will be changed from 1 to 2 to 3 to 4...etc. until it reaches 100. You can also place statements within the FOR NEXT loop. Say you wanted to print the actual contents of LOOP as it was actually doing the loop. Then your program would look like this: FOR LOOP=1 TO 100 PRINT LOOP NEXT LOOP Expand your Amiga’s music capability to a new creative edge... Introducing MIDI GOLD MIDI Interface Hardware for the Commodore Amiga Personal Computer • Dual MIDI Out and single MIDI In connections. • Sync Out connection provides clock and start stop control for
drum machines and other devices. • Connects directly to the serial port. • Custom metal enclosure. • Complete with interface cable. • Full technical information will be made available to all Amiga
product developers. PRICE $ 79.95 — Call or write for availability. GOLDEN HAWK TECHNOLOGY 427-3 Amherst Street, Suite 389 Nashua, New Hampshire 03063 (603) 882-7198 Weekdays 2PM-10PM EST DEALER INQUIRIES WELCOME
Amiga is a trademark of Commodorc-Amiga, Inc. When you ran
the program you would get 1...2...3...4 up until 100. This
can let your produce some very interesting effects. To change what the computer counts by, you can include the forementioned STEP command. Example: FOR LOOP=32 TO 8132 STEP 2 NEXT LOOP In this loop, the computer will start off with LOOP being 32. Then It will increment from 32 to 8132 by 2's. In other words, the computer will jump back and forth between the Fort and NEXT command 4050 times. Each time it does, it increments LOOP by 2, Notice too, that you don't have to start your loop at 1. It can be any number and doesn't have to be a whole number. In fact, it can also be negative. It is important though, that if your loop goes from a higher number TO a lower number, that you include the STEP command with a -1 or -2 or by however many you wish to step backwards. Failure to give this command will generate an error. Example: FORLOOP=100TO1 STEP-2 NEXT LOOP Now the computer will start with LOOP being 100 and work its way down 50 times, until LOOP is equal to 1. Note that the only way the computer knows if its finished with the loop is if the variable is equal to a number outside of the range. In this example, if LOOP is greater than 100 or less than 1. Consequently, the loops stops AFTER it is out of this range. So when this FOR NEXT loop is completed, LOOP will NOT equal 1, butO. Another goodie in Mbasic are the IF THEN ELSE statements. These are used to make decisions in your program and take appropriate actions. IF and THEN go together like FOR and NEXT. The way they work is: IF (a condition is true) THEN (do something) ELSE (il the condition is false, do something else) An example of this is: IF X=Y THEN PRINT "X is the same as Y" ELSE PRINT "X is different than Y" You can also use formulas in the statement.... something like this will work also: IF (X-3+7 2)=(Y+2 3+7) THEN...... Also note that the mathematical functions (like +, *,) will be discussed in a future article. If you want to get fancy, you can put a whole slew of statements after the THEN command. Something like this will work. IF X=Y THEN PRINT "Yes, it's the samel": X=5: Y=7: PRINT X: PRINT V ELSE PRINT "Nope, They’re different!": X=2: Y=3: PRINT V 2: PRINT X’3 You can also use extra words in the IF THEN statement. Two commands that can be tossed in are AND and OR. These let you test multiple conditions. You list out your conditions separated by either AND or OR~ depending on what kind of results you need. If you use AND to separate your conditions then EACH condition must be true for it to execute the THEN. If you use OR, then at least 1 condition listed must be true, before the THEN statement is executed. Example: IF X=2 AND B=3 AND Y=4 THEN PRINT "They were all right!" IF X=2 OR B=3 OR Y=4 THEN PRINT "At least 1 was right!" You can also combine them by confining certain decisions in parenthesis. Example: IF (X=2 OR B=3) AND C=1 THEN PRINT "X could be 2 or B could be 3, but C DOES equal 1 Next month, I will go a little bit deeper into variables and other topics.
— AC-We have glanced at the insides of the Amiga’s operating
system in the last three parts of Inside CLI. This month, we'll
kick around some of the AmigaDOS file utilities — tools that
help you to examine and manipulate files. Inside CLI: Part 4 by George Musser Jr. CC004049@BROWNVM.BITNET CIS 76566,3714 The Workbench disk comes with two file utilities: SEARCH and SORT. SEARCH will hunt for a text string; SORT will alphabetize a list. There are two ways you can look through a bunch of files for a text string. You can pore over a stack of printouts and circle the words with a red pen. Or you can let the Amiga’s fingers do the walking by calling on SEARCH. Searching is one of those tedious tasks at which computers excel. Writers want to locate citations or overused phrases. Bulletin board users wish to skim downloaded postings for key information. Programmers may need to find a particular subroutine lost in reams of source code. And so on. To begin a search, type: SEARCH pathname " string " (ALL) The pathname specifies which files to scan for directory, and it will look through all the files in that directory. You may also type out a pattern, a LSST. SEARCH examines files whose names match this pattern. The pattern may include special characters:? Is called a wildcard, because it matches any character; p matches zero or more repetitions of p; p1 i p2 matches either pt or p2; () demarcate a pattern. For example: Year? Matches Yearl, Year2, etc. Year? Matches Year, Yearl, Year2, Year12, etc. Year (112) matches Yearl and Year2. After the pathname, you put the search string. If the string is two or more words long, enclose it in quotes. SEARCH ignores case, so it treats "amazing" and "AMAZING" as the same. If you tack on the word ALL, SEARCH will scan the files in all the subdirectories as well. As SEARCH progresses, it displays each file name. For each occurrence of the target, it prints out the line number and the line of text containing the string. As with all CLI commands, you can redirect the output, in order to save the outcome of the search in a file for later perusal (or posterity). For instance, to store the results of a search in a file called RESULTS, enter SEARCH RESULTS etc. To abort SEARCH, press CTRL-C. CTRL-D stops looking through the current file and proceeds to the next file. Incidentally, SEARCH handles both text and non-text files, so that you can scan programs, too. Now that you've found whatever you sought, you may want to sort it. AmigaDOS includes a simple sorter named — you guessed it — SORT. SORT puts the lines of a file into ascending ASCII order: punctuation first, then numbers, then letters. SORT ignores alphabetical case. Type SORT infile outfile (COLSTART n) This will sort inftle to produce outfile. If you want the output sent to the screen instead of to a file, specify for outfile. SORT begins comparing in the first column, or column n if you specify COLSTART. Let's say you have a mailing fist: Hayes, Rutherford B. 43015 Adams, John 02184 1138, THX xxxxx Johnson, Andrew 27611 tf you SORT the list, you'll get the names in alphanumerical order: 1138, THX xxxxx Adams, John 02184 Hayes, Rutherford B. 43015 Johnson, Andrew 27611 A GREAT COMPUTER... OUTSTANDING SOFTWARE......AND INCREDIBLE PRICES! There may not be a better personal computer than the Commodore Amiga. But no computer can be better than the software that runs on it. Micro-Systems Software, makers of OnLine! And EBS-PC for the Amiga, proudly announce another link in their chain of value-packed software. Analyze! Is a powerful electronic spreadsheet program. Essentially, this program is a full-screen calculator where you can organize your data into rows and columns. These rows and columns can be analyzed with simple mathematics or complicated formulas. Rows and columns can be duplicated to avoid retyping. Both data and formulas can be edited with only a few keystrokes. From home budgets and check registers to financial modeling and your company’s general ledger, all manner of bookkeeping tasks become faster and easier with Analyze! An outstanding value at only £99! OnLine! Combines features and convenience in a high quality package that will meet ail your telecommunications needs. With OnLine!, you can use your Amiga as a window to the world of information that is just on the other side of your telephone. You can link up with commercial information services lor stock quotes, airline information and reservations, technical databases, and thousands of other business and entertainment tasks. You can also plug into local bulletin board systems (BBS) and discover a new world of Information and software for your computer. Corporate users can use OnLine! To let their Amiga access data stored on the company's mainframe computer. OnLine! Is the linest program of its type available for the Commodore Amiga. You can't lose when you get "online" with OnLine!. All (or a down to earth price of only S69! 2400 bps modems! 240D bps modems arebreakingthe speed barrier in telecommunications, and Micro-Systems is breaking the price barrier in 2400 bps modems. Transfer files 2 times faster than a 1200 bps modem and 8 times faster than a 300 bps modem. Micro-Systems will sell you a Hayes Smartmodem compatible 2400 bps modem, a special Amiga serial cable, and a copy of OnLine!, all for $ 129. That's right, the modem, the cable, and the software, all you need to begin using your Amiga as a terminal to the world, priced at $ 429! Hundreds less than our competition! Micro-Systems Software, Inc. 4301-18 Oak Circle Boca Raton, FL 33431 (800) 327-8724 National, (305) 391-5077 Florida Ask us about our
Amiga bulletin board program, BBS-BC, The first BBS for
Amiga! AMIGA, OnLine! Analyze!, BUS-RC, and Smarimodem are! Ra d e marks of Commodore-Amiga, Inc., Micro-Systems Software, Inc., and Hayes Microcomputer Products, Inc respectively. If you SORT with COLSTART 22, SORT produces a list ordered by ZIP code: Adams, John 02184 Johnson, Andrew 27611 Hayes, Rutherford B. 43015 1138, THX xxxxx SORT reads the whole file into memory and works from there. If there's not enough RAM, the system will crash. Be sure your stack size is as big as the input file. You can check file size by typing LIST file and you can set the stack size with STACK size No matter what you do, you flirt with catastrophe if you try to sort files larger than 10,000 or so lines. A file of a few thousand lines takes several minutes to sort. SORT seems to use a decent sorting technique, since sorting time appears to be proportional to n log n, where n is the number o1 lines. In fact, n log n is the theoretical limit of sorting speed. Any speed improvement would have to involve abetter-written program. SEARCH and SORT come with the Amiga, but they are hardly the only file utilities at your disposal. We'll mention a few others available in the public domain. No one should be without Dave Haynie's DiskSalv, a disk doctor program available in Data Library six of Compuserve's Amiga Forum. DiskSalv reconstructs damaged disks, taking advantage of redundancies in the AmigaDOS filing system. You type DISKSALV Dfm: (TO) Dfn: DiskSalv inspects each block of the disk to rebuild directories and files. It then copies the files to a previously formatted disk in the other drive. DiskSalv works around disk errors and tries to contain the damage, (When I wiped out a whole track and AmigaDOS was unable to read the disk, DiskSalv retrieved all but one of my files.) Need more disk space? Compress your files with SQ, available on AMICUS disk two. SQ is an old CP M utility written by R. Greenlaw, transferred to the Amiga by Rick Schaeffer, and modified by John Hodgson. SQ can pack a file to as little as half its original size. Type SQ iile1 file2 ... filer to squeeze filet, file2, etc. USQ reverses the process. SQ works by compressing strings of identical bytes. It then packs the file using Huffman encoding, whereby frequently used characters take up the least space. If you need 1o see how two files differ, try Bill Joyce's DIFF, available on CompuServe. The syntax Is: DIFF file1 fiie2 This version of DIFF isn’t too robust; it chokes on more than about 10 differences. You can not ED binary files, but you can FILEZAP them. FileZap by John Hodgson is also available on CompuServe. It displays files in 256-byte chunks, with hex code on the left side of the screen and ASCII characters to the right. You can enter either hex or ASCII code to modify the file. With FileZap you can, for example, change the default CLI window size as mentioned in part two of Inside CLI. Enter FILEZAP CLI When the FileZap screen comes up, press 3 and carriage return. This sends you to the third 256-byte block. Using the cursor keys, move to address 64. Your current address is shown after "Loc:" on the right side of the screen. You should see "CON:0 50 640 80 New Cli Window" in the ASCII area. Press * to enter ASCII characters and type the numbers you want. ESC exits modify mode. R undoes changes you've made on this screen. CTRL-C returns you to CLI. If you need a fancier SEARCH utility, you’ll appreciate GREP, a Digital Equipment Corporation DECUS utility converted to CP M-80 by Chris Kern. The version of GREP in the Progs directory on AMICUS disk one does not parse quotation marks, so you cannot search for strings longer than one word. Fortunately, the source code in the C directory compiles under version 3.03 of the Lattice C compiler to a workable version of the utility. GREP offers a bit more versatility than SEARCH. To use it, enter GREP [flags] " string " file1 ... The optional flags lets you customize the output of GREP. If you specify the flags, precede them with a hyphen. Flags include: c, which suppresses the printing of lines, giving you just a count of the number of occurrences of the search string; f, which turns off the printing of file names; n, which prints line numbers; v, which prints non-matching lines instead of matching lines. Tyfe oxyrox SreecH-TXOC£SS°K for tfve. TyMILjA Take advantage of your AMIGA'S speaking powers with THE ORATOR. THE ORATOR allows you to compose text in either regular English, or using the Phoneme method (Dr a combination of both) A complete text editor permits you to change the spelling of words in order to get just the right sound, You have complete control over the Rate, Pitch, Tuning, Voice, and Mode of each individual phrase by simple, mouse controlled sliding bars and boxes. A phrase can be any length up to 140 characters, and at least 200 phrases can string together in a single continuous file. Your story, poem, jokes, or whatever, along with their voice settings, can be saved in a compact sequential Ike that you can use in your own BASIC programs. THE ORATOR also comes with THE PHONEME TUTOR, a program that makes it easy to learn the Phoneme method of text input. Includes complete documentation and a utility program (or use in your own programs. Requires the AMIGA with 512K memory, one disk drive, and AbasiC or Amiga BASIC. Both versions are included on the disk. Price: $ 39.95 postpaid COD. Add S4 (Indiana residents add 5% sales tax) Mail check or money order to: THE QUALITY COTTAGE 630L F University Commons Suite 308 South Bend, In 46635 12H)' 234-4401 AMIGA ts a trademark of Conimodoie-Amiga Inc Unlike SEARCH, GREP lets you specify patterns in the search string. Special characters include: A matches line begin $ matches line end. Wildcard, which matches everything except a newline character a matches any alphabetic character d matches digits n matches alphanumerics:_ (colon-space) matches control characters p " matches zero or more occurrences of p p + matches one or more occurrences of p o matches a special character c [p] matches any character in p [A p] matches any character except those in p [c1 — c2] matches characters from c1 to c2 For example: $ matches $ [xyzj matches x, xx, xyz, etc. [Axyz] matches abc but not axb [a-z] matches a through z. SEARCH, SORT, DISKSALV, SQ, USQ, DIFF, FILEZAP, and GREP are but a few of the many file utilities emerging for the Amiga. Most of these utilities are available only from CLI, giving you yet another excuse to experiment with CLI.
— AC-On May 16, Commodore International, Ltd. Laid off 140
employees. According to an official announcement from Jay
Miner, general manager at Commodore-Amiga Los Gatos, a uniform
staff reduction was necessary to meet budget constraints. The Commodore Layoffs by John Foust Miner explained the cuts. "The Amiga division’s losses have come almost completely from management and engineering support services. Commodore and Amiga are continuing to support the Amiga computer, and development of new products is continuing at Amiga. "Except for a few people who quit a few months ago, we’ve lost almost no people in either the software or hardware engineering divisions. Those that we have lost have been basically quality assurance, management, and documentation. In conclusion, Miner said "the layoffs were necessitated by a need to meet certain budget figures." At Los Gatos, people were called on the phone, one by one, and asked to another room to discuss their termination. "It was horrible torture. You were obliged to sit by your phone all day," according to RJ Mical, past Commodore-Amiga director. Mical left Commodore-Amiga in January, but said he spent most of "Black Tuesday," as he called it, talking on the phone with his former coworkers at Los Gatos. "It was a reasonable, surgical strike. It's not that bad, it’s upbeat," said Mical. He explained the majority of the cuts were among those who weren't directly producing toward current goals, such as people in the accounting and purchasing departments, and lab technicians. Among Ihe first of twenty people laid off at Los Gatos were Bob Pariseau, vice-president of software development. According to Pariseau, "1 guess Commodore knew just how little I would support such actions, because I got mine in the first wave." Pariseau announced his departure on the BIX electronic network. Soon, the word flew to other networks. Rob Peck, Bob "Kodiak" Burns, Bruce Barrett, Stan Shepard, Sam Dicker, Barry Walsh, Howard Stolz and Rob Gemma soon followed. These names are well-known to Amiga developers. Their names are listed in the credits of the source code used by developers. Many helped create the Amiga operating system, including Intuition and the Sidecar software. Gemmel is less-well known, but he contributed greatly to the external design of the Amiga, in packaging and case construction. Dicker was responsible for much of the development of the Amiga's sound and MIDI capabilities. He worked closely with Mimetics in the development of their Amiga music package. Paul Goheen, director of software in West Chester, resigned from his position on May 16. Goheen announced this on BIX and CompuServe. Among many others, Jeff Bruette and Eddie Churchill were laid off from West Chester Carolyn Scheppner, a programmer in West Chester, reported no cuts in tech support there. The support group in West Chester is responsible for supporting all the Commodore computers, including the Amiga. The Dow Jones Newswire reported Commodore International had a third-quarter net loss of 36.7 million, versus 20.8 million last third quarter, and sales were $ 182.3 million, up from $ 168.3 million. Several sources claim the introduction of the Amiga into the European market will make this quarter the best for Amiga sales worldwide. So far, sales are up this quarter. However, Commodore chairman Irving Gould told Dow Jones that U.S. operations have turned in a disappointing performance, due to high marketing expenses. In a May 20 Wall Street Journal article, Gould said those high costs are due to the Amiga and 128 computers. Gould also said sales of the Amiga were lower than expected. Gould told Dow Jones "the company has since implemented a series of actions to immediately reduce costs, including a manpower expense reduction in the U.S. of almost 50 percent." In the same Dow Jones story, still-fresh Commodore president Thomas J. Rattigan said the company is striving to "break even" in the third quarter of this year, and he expects a return to profitability in the final quarter of 1986. Rattigan said that special promotions featuring the Amiga should spur growth and sales into the fall, countering some rumors of a return to higher prices in the early summer and fall. The Wall Street Journal article quotes Charles Wolf, an analyst at First Boston, Corp. "I had assumed the company had pared down, but it hadn’t.! Think Rattigan is doing the only thing he can do, which is 1o shrink the company." A source close to Los Gatos claimed nearly 100,000 Amigas have been sold worldwide, as of late May. At the time of Spring COMDEX in Atlanta, in late April, Bob Pariseau thought 70,000 Amigas had been sold. In his network posting, Pariseau explained his future plans. "I want to be where quality people are pushing beyond the edge of the art. Engineers with vision are still the best, the most forthright, and the most fundamentally interesting people I know. The vision that brought you the Amiga computer still lives." — AC* I am really excited this month! After what seemed like an interminable wait, I’ve finally gotten not one, but TWO Forths for, my Amiga. First I was able to obtain the public domain Mountain View Press (MVP) version. It was very satisfying to finally see Forth's familiar "ok," but the sparse documentation was certainly frustrating. I did not have to suffer long though, because only a few days later I received a copy of Multi-Forth (tm) from Creative Solutions Inc. (CSI), and let me tell you, THIS is the one to beat. Forth: part three byJon Bryan Creative Solutions has been in the business of supplying Forth for 68000-based computers for several years now. Their "MacForlh” for the Macintosh has been used to produce several highly-rated commercial programs. I use their implementation of Multi-Forth for the Hewlett-Packard "Series 200" computers at work, and have been very pleased with 1he documentation and support I've gotten from them over the last couple of years. Multi-Forth on a Hewlett-Packard computer is a very nice package, but Multi-Forth on the Amiga is a whole different animal altogether, and I mean that in complimentary terms. For one thing, it must be 30% faster than it is on the HP (which has a faster clock!), for reasons which I will soon detail further. But first a short digression. As I'm writing this there are two versions of Forth for the Amiga which are "real" and available right now. Others are coming: you've probably seen the ads for UBZ Forth. I have a prerelease copy, but it wouldn't be fair to comment on It. Parsec Research, which produces "Superforth 64" for the Commodore 64, is working on something for the Amiga that should be out soon. The one other company which I know intends to implement Forth on the Amiga already has a version far the Macintosh called "Machi," but they will not have an Amiga version ready until "sometime in the Fall." Back to the subject. I would like to make some observations on the two versions of Forth which I now have in my possession. There are fundamental differences in the methods which have been used to implement them, and by profiling those differences I may be able to offer some insights into the inner workings of Forth. Forth is known as a "threaded interpretive" language. Typically Forth is implemented using a scheme called "indirect” threading, in which the "compiled" form of a word is its address. Stored at that address within the word's definition is another address which points to a machine code routine which executes the word. The short code routine which "threads" its way from word to word is called NEXT, and it's the efficiency of NEXT which ultimately determines the speed of a given implementation of Forth. The "interpretive" label comes from the fact that what’s compiled is an address rather than executable code. Although the method sounds cumbersome, in practice it turns out that Threaded languages are quite efficient. Forth is fast, although not as fast as some other compiled languages or assembly code. Since all that is compiled is an address, indirect threaded Forth is also quite compact. While there are ways to implement Forth which are faster, they usually use more memory. It’s the standard tradeoff between size and speed that assembly-language programmers are familiar with. Mountain View Press's Forth for the Amiga uses a form of indirect threading, as do previous incarnations of Multi-Forth. So, you can either make your object code small or you can make it fast, right? Not so, says Creative Solutions. It would seem that after several years of practice implementing Forth for various machines which use the Motorola 68000, they've come up with a different scheme which seems to have a number of advantages. What they have used is something called "direct token" threading. Not only is it faster than a 32-bit indirect threaded implementation, it's smaller as well. In older versions of Multi-Forth for systems like Hewlett-Packard's Series 200, the compiled form of a word was a 32-bit address. In the new Multi-Forth, what's compiled is a 16-bit "token.” In Multi-Forth for the Amiga, NEXT uses She 16-bit token as an index to calculate a jump to executable machine code, bypassing the intermediate step of indirect threaded Forths. On a superficial level the big difference is that an indirect threaded version of NEXT takes three 68000 instructions, while the direct token threaded NEXT uses only two. A further improvement in speed is realized because a token can be fetched with only one 16-bit memory access, while two 32-bit addresses have to be fetched in an indirect threaded scheme. There are many more ways to implement Forth than the two I have just described. Creative Solutions has told me that they considered over a hundred different variations before settling on the approach they have used. I do not think they were exaggerating. Mountain View Press has used an indirect indexed form of threading for the sake of portability which restricts applications to 64K of memory. (To be fair, [should point out that Multi-Forth will slow down if an application grows larger than 64K.) "Subroutine" threading was chosen by UBZ for their implementation. Macht uses a combination of subroutine threading and "macro substition" on the Macintosh. I will not get into that unless and until they actually come out with something for the Amiga. Every approach involves some compromise, since the 68000 was not designed with Forth in mind. There are a number of other differences between MVP-Forth and Multi-Forth. 1 have not had time to compare them extensively, but I will try to describe what I have found so far. There is a big difference in philosophy between the two. Mountain View Press feels that portability is very important, so their Forth for the Amiga does not take advantage of many of the machine’s features. In trade you gain access to a large body of programs written in MVP-Forth covering a wide range of applications which should run virtually unchanged on the Amiga. Creative Solutions, on the other hand, has written a powerful development language which is optimized for speed and includes lots of hooks into the Amiga's Herne! Routines, but which will be considerably less portable as a result. Another difference between MVP-Forth and Multi-Forth is in the way source code files are handled. Forth source code is traditionally organized in units called "screens” (or blocks) which are 1024 bytes long. Many Forth programmers swear by screens and make a lot of claims about their superiority to text files. I've always used screen-based Forth systems in the past, and I've been reasonably satisfied. They do tend to enforce some discipline, encouraging small definitions and better organized code, but few screen-orienled Forth implementations that I've seen had very good editors. While MVP and CSI both put all source code in normal text files, the MVP-Forth editor breaks up the file into 1024-byte screens. Creative Solutions' approach was to give you the whole tile and let you use any editor you wish ("ed" is a Multi-Forth word which calls up the AmigaDOS screen editor). For the real diehards CSI includes extensions which provide a block environment and editor. I'm inclined to believe that dispensing with screens is the smart thing to do on the Amiga, being forced to that conclusion by the harsh realities of peacefully coexisting with AmigaDOS, Intuition and all of the ROM Kernel routines. Since they're all written in C, there are certain aspects of their structure (namely Structures themselves), which make a traditional Forth screen environment uncomfortably restrictive. You simply cant avoid persistently crossing screen boundaries. While it might not be "good" Forth, you're forced to do it, and rather than put up with that kind of awkwardness I think its better to dispense with screens altogether. (Now I am going to sit back and wait for the nasty letters to come in.) There is also a considerable difference between MVP-Forth and Multi-Forth in their support for AmigaDOS. MVP provides very little support for DOS routines, while CSI allows any DOS function to be called from the Multi-Forth environment. Multi-Forth allows the most common DOS routines to be used just as if you were in 1he CLI, while the rest have to be prefixed by the Forth word "CLI". That means you can type "dir df 1directly, but you have to type "cli list df IIf you want to avoid the use of "cli" entirely you can easily create your own definitions for those DOS words which are not supported by default. The details are in the manual. (For the confused: I used "CLI" in both upper and lower case because Multi-Forth by default is case insensitive. You can change that, though.) The biggest difference between Multi-Foith and MVP-Forth is that you can get MVP-Forth free, but Multi-Forth will cost you $ 179 retail, it is reasonable to expect a lot more bells and whistles when you are paying for them. MVP-Forth is really a form of advertising for Mountain View Press, and it includes a disclaimer which says it is not optimized, and is intended only to introduce you to the language. MVP will sell you a Programmer's Kit for $ 175 which includes the disk, documentation, and four books (one of which is the excellent "Starling Forth" by Leo Brodie), but you still won't have the kind of development system Creative Solutions is providing. There is nothing to stop you from creating your own based on MVP-Forth. If you've got lots of time, patience, and documentation. That's the beauty of an extensible language. 1 apologize if my column this month sounds like an advertisement for Creative Solutions, but I'm impressed. The tremendous complexity of the Amiga's hardware and "firmware" make developing a programming language for the machine a particularly difficult problem. I can't help but admire anyone who even dares to try, and Creative Solutions has not only succeeded, they have done a fine job of it. If you intend to develop software for the Amiga, Multi-Forth is definitely going to be a good language to do it with. I could really learn to love this machine. How many computers allow you to run more than one LANGUAGE at a time? I'm writing this from ED (for lack of a word-processor), have both Multi-Forth and MVP-Forth loaded, and simultaneously have the printer going typing out a draft copy of this article. I've had BASIC playing Bach in the background while I'm writing, and had Forth running a graphics demo at the same time. Someday this sort of thing will be commonplace: today it's simply mind-boggling. But if there's one thing I'm certain of, it’s that 512K isn't enough! • AC-John is continuing the review of Manx Aztec C for the Amiga
from last month, (ed note) The Amazing C Tutorial: part five
Manx review: part two by John Foust Comparison of Manx and
Lattice compile times, compiling Michael Mounier’s terminal
program To compare compile speeds for larger programs, 1 used
the Amigaterm telecommunications program by Michael Mounier. This is roughly 32 K of source, with a iarge amount of 'ffinclude' files, it is one of a dozen or so example programs provided on disk two of the Manx system. The Manx times reflect using the 'make' utility, with simple non-substituting rules. Lattice times reflect using a simple, four-line EXECUTE batch file. For on-disk library times, the reside in DFQ: while the code is in DF1: The DF1: is about 90 percent full — somewhat typical in a programming environment. For the precompiled '. h' file time in column three, it took 1:15 Listing A Manx Lattice Manx Manx libs in RAM: libs on disk, libs on libs in precompiled Lattice with Alink disk RAM: — h files libs on disk FASTER switch 'cc'or'lcl' starts 0:15 (1:15) 0:15 (1:15) 0:15 (0:30) 0:20 (2:40) 0:20 (2:40) ’as'or'Ic2' starts 1:30 (1:00) 1:30 (1:05) 0:45 (1:10) 3:00 (0:45) 3:00 (0:45) In'or Alink starts 2:30 (3:20) 2:35 (1:00) 1:55 (1:10) 3:45 (2:45) 3:45 (1:45) Compile ends 5:50 3:35 3:05 6:30 5:30 Resulting load file size Manx: 13,564 Lattice: 26,440 (27,496 before Strips) minutes to pre-compile the. h files, resulting in a 49912 byte symbol table file, which was written to disk. This small, 1133 byte source file was created by writing the top of the file to disk, as a separate file on DF1: I can't supply a compile time with the Lattice libraries in RAM: since there isn't enough room for it all in a 512 K machine. With source code on DF1: and writing the '. q’ file to DF1: 'IcV took over ten minutes alone, but this is a fault of slow disk access, not Lattice. The time in parentheses is the completion time for each phase of the compile and link sequence. Times are an average taken over several trials, and seemed to vary by up to three seconds, presumably due to disk access, too. Manx utilities As you'll see, the Manx utilities will be familiar to Unix programmers. Most are direct clones of the most popular Unix tools. Acvt: This converts standard Amiga object files to assembly language source compatible with the Manx assembler. By "standard Amiga object files," I mean the result of the Metacomco assembler ortho Amiga object librarian. This quietly turns the Lattice-supplied libraries, such as ’amiga. ilb', into dozens of short assembly language files, compatible with the Manx assembler. In this case, each program just sets up registers before and after making a call to a WCS function. Adump: This displays information about Amiga object files or loadable modules. It displays a series of hex bytes for hunks in an Amiga object file, and can optionally display each code or data block contents, and symbol names. Arev, mkarev: These are simple 'ar'-type archivers for text files. Not to be confused with the ARC file compression program from the IBM world, 'arev' packs text files together in a lump, with no compression, 'mkarev' will create a new archive file, 'arev' takes it apart. These programs are used to archive the source files for the Aztec libraries supplied with the Commercial version. The source code is only included in the commercial version of the compiler. Cmp: This is like the Unix binary file compare utility of the same name. Normally, this comes up with a message such as "files differ at byte N". Optionally, it can display a list of offsets into each file, and the differing values. Db: This is a yet-unfinished symbolic debugger. The Manx manual promises more documentation at a later date. I hope Manx adds some good documentation of the uses of 'db'. It looks tantalizing, and could doubtless sell well as a separate product. 'db' can read symbol tables from a program load file. There is a'-w'option for the linker to include these symbols. It has a nice set of instructions. It lets you select a task from the current task list, single step, disassemble, and display an expression in several forms: hex, decimal, octal, binary, as a signed number, or ASCII. Expression entry can use symbols, so you can type 'u pc' to start diassembly at the place where the PC register points. A good part of it Is obvious, such as disassembling memory. But the 'ai' command, for instance, dumps a cryptic screenful of data about 1he currently selected process. It takes a second or third look to realize it is displaying the data in the most important structs used in process control, and that the mneumonics in the dump are shortened versions of the struct member names. Come to think of it, 'db' comes with about as much paper documentation as Wack, but the program's internal help is much more helpful than Wack's. Cnm: This displays information about object modules, such as the size and symbol names for segments, and whether they are for code, data, initialized or uninitialized, and the sum of the sizes of the hunks. Diff: This is like the Unix text comparison program. Given two files, it finds the places where they differ, and sends this difference to standard out. Grep: This is yet another Unix utility, which can search for regular expressions. Fortunately, this means Unix-type regular expressions, and not the wacky ones used in AmigaDOS TRIPOS. For the uninitiated, a regular expression is a method of specifying a character string. For example, you can ask 'grep' to print all lines in a file that begin with "int", or all lines that contain words that start with "a". Hd; This is a hex dump utility, you can also specify an offset into file, and it will begin dumping at that point. Lb: This is an object file librarian, for Manx object files only. You can create new libraries, add modules, list modules in a library, or move an object file within a library. It can delete or replace object modules, and also delete nonunique modules, Ye cdp ant Deluxe Paint and Aegis Images compatible. Deluxe Print compatible. Many images to choose from Cars, Animals, Borders, and more. SOFTWARE DEVELOPMENT’ 2519 Bonita Drive Highland, Ca. 92346 (714) 864-2846 Be the artist you always wanted to be! & Please add $ 2.00 for shipping and handling. Deluxe Paint, Deluxe Print is a trademark of Electronic Arts. Aegis Images is a trademark of Aegis Software. Since the linker searches for modules in a single pass, you might want to rearrange the order of modules, with the ‘ord’ utility below. Make: This is sometimes described as a program maintenance utility, but ’make' has many uses, and that name only attempts to cover them all. Its most common use is to recompile only the source code files that have changed since the last compile and link, and then supervise the linking of the program. This 'make' has simple $ FOO macro expansion, including special macros $ @ and $ *, which can break up a target file name into name and extension. Obd: This utility will list the loader items in object file. Ord: This can sort an object file list. The basis of the sort is on reference dependencies within object module, so this will minimize backward references, which would make the object library be searched again during a link. Set: This can set or clear Manx's environment variables. Library functions include getenv () and putenvQ calls, which can access these environment variables. An environment variable is a string stored in system memory which is undisturbed by programs — sort of like your settings in Preferences. For example, typing "SET CLIB=RAM:" will create an environment variable named CliB, and it will be set to RAM: The linker will check the value of CLIB, using the getenvQ function, and search the RAM: disk for object libraries. Setdate: This forces entry of the dale and time from user. The documentation claims it allows the entry of 03 28 for the date, which accepts the present year as the default, but I couldn’t get this to work. Z: 'z' is a Unix 'vi'-like editor. If you are not familiar with Vi', it is a mode-driven, cryptic editor, which includes such features as multiple tile editing, 'undo' and macros. As a friend says, ”'z' is as good as 'vi', or as awful as 'vi', depending on how you look at it." The 'z' edit window does not take advantage of the Amiga window environment, beyond having front back gadgets. Unfortunately, the 'z' edit window cannot be resized. It is limited to editing files smaller than 58 K. Interestingly, it can’t handle files with lines terminated with just carriage returns. It crashes in the same way as the public domain MicroEmacs, when faced with a file on this type. If you aren't aquainted with 'vi', it’s pronounced 'vee-eye'. Some people prefer to say it 'vi', to rhyme with 'eye'. It is a screen editor driven by single-and double-character sequences, each of which pop you into a new mode. Pressing 'i' brings you into insert mode, and ESC gets you out. Classic Concepts FUTUREWARE™ presents: OJHW (FOOTS lor the AMIGA™ computer ONLY $ 14.95! (Irv. roduciory Pres) INCLUDES: * 13 Fresh New Fonts * Font Reference Booklet * Ideas lor Using Fonts * Install Utility Program Video Titling * Headlines * Cards
Wordprocessing * Paste-up Page-layou: * Letterheads * Signs
Newsletters * Desktop Publishing Compatbte with WORKBENCH,
NOTEPAD. DELUXE PAINT™, AEGtS IMAGES™ and many others. Send $ 14.95 US money oftier Dr check plus $ 1.00 postage and handling to: FUTUREWARE™ FONTS, P.O. Box94276, 6871 No. 3 Rd., Richmond, B.C. Canada V6Y 2A6 Anr’ga 6 a turtrr. rk d CcmredorB-AmQa Aegis Imagos *s a tuvjoma* of Anas Doyfiocrnont Do*J*o Pamt c a tractarnarfc of Boer crus Arts For example, the keys TT, 'j*. 'k', and T are the cursor movement keys, while out of insert mode, 'h' goes left, ‘j’ goes up, and 'k' goes down, while T moves right. 'L' means right, get it? Fortunately, the Amiga arrow keys work, too. Actually, the standard 'vi' cursor movement keys are easy to use, once you get used to them. Ctags utility 'z' also has a 'tags’ function, an easy way to jump between the source files of a multi-module program. To do use this, you need to run the 'ctags' utility. This program scans a set of C source programs, and produces a file named 'tags', which contains a list of the function names and the files they are in. Place your cursor on a function name, and press CTRL right-square-bracket. The editor will begin editing the source file that contains that function, place your cursor on that function's code declaration. However, this 'tags' is a little fussy about what it considers a valid function declaration. It requires the function's return value type placed on a separate line, before the name of the function itself: int foo() This might go against a programmer's personal style of formatting declarations of functions. -AC* the first serious, professional-quality. Full-featured database management system for the Commodore Amiga1 M. Mi Amiga File [m»m«iu»ib a database management system lor the Commodore Amiga lor the Commodore Amiga database management system with: © Pull-Down Menus... SoftWood Company presents O Written in "C".„ O Verf Horiz Scrolling... ° Eight f8) Field Types... © Selection by Example & Range... © Multi-field, Ascending & Descending Sorting! Format mailing labels by positioning fields on form... | Spreadsheet Format provides overview of the database. Easily define column widths, placement, and justification... Format numeric fields with commas, dollar signs, and or decimals... Transfer quickly between full database and selected records... Print columnar reports from list including automatic page headings and cummulative totals... Transfer conveniently from selected record to data entry form. Dwelling House Location Sant6 Barbara Price 350000 00 Mortgage 280000 00 Beds a | Barns 3 Garage 2 Pool No Owner Carry Yes o wrier t inonce No Automatic scrolling of data within a field
during data entry... Optionally capitalize the first letter of
each word automatically... Modify form as needed for convenient
placement of data... Data entry form automatically created by
system during database definition... rz.. ¦¦¦¦ Additional
features of the New MiAmiga File: Variable-length record
management for optimal space utilization... Flexible database
definition allows user to add remove fields at any time...
CyftTtfifexJorc. Armci. MJ Intudxn er tudemifki of CocimnJurr
Amigi, Inc C Cop jr.ght SoftWoud fumpin), |9M 805-966-5884
Dealer Inquiries Welcome. All Major Credit Cards, Checks. Money
Orders. C.O.D. Accepted. Scrimper: Part two by Perry Kivolowitz This is part two of the description of scrimper, a screen image printer, in part one appearing in last month's Amazing Computing, I gave you the scrimper user manual as well as a detailed description of the construction of printer. c, one of the two modules in scrimper. This month! Will describe the other module, scrimper. c. This module handles the interface to the user via Intuition while the module described last month deals only with the mechanics of actually getting a selected screen printed. What will be of interest in the following discussion is the use of Intuition menus (and how one might pretty them up a bit) and the use of a fancy C language construct (pointers to functions). In the time since scrimper was developed I've noticed a few deficiencies in its code so I'll point these out as we get to them. For example, three of the included header files are not actually needed. These are dos. h and dosextens. h from the directory "libraries" and startup. h from the include directory "workbench”. These headers were needed by an earlier (and in fact a later) version of scrimper but are not used in this version. Next [declare two manifest constants and two shorthands. The window width (WWIDTH) is declared to be 640, This corresponds to the width in pixels of the standard workbench screen. This is to say that the default workbench screen is a "HIRES1'screen. Making a workbench screen 60 columns or 80 columns does not change how many pixels there are across the screen (that's constant at 640), What does change is the number of pixels each character consumes (the 80 column font is narrower than the 60 column font). MAX SCREENS is simply the maximum size of an array which will keep a pointer to each active screen structure. The list could have been set up dynamically, but doing so just didn't seem worth the effort. SIZE_M! And S1ZEJT are just shorthands standing for the size (in bytes) of a Menultem and IntuiText structure respectively. This is an example of using the C preprocessor as a means for saving key strokes later on. One thing to note is the seemingly redundant parenthesis. In fact, in this case the parenthesis are technically not needed but it is a very good habit to be in to parenthesize heavily when using the C preprocessor. As a real quick explanation as to why you should parenthesize C preprocessor expressions heavily just look at the following definition: f define SQUARE(x)x' x Now invoke SQUARE with "5 + 5" as an argument. What we expect as a result is 100 (10 * 10) but... what do we actually get and why? Next, I lie to the C compiler in declaring a few external functions. When this module was written (many months ago) it wasn't clear to me just how to declare such staple routines. In fact, it still isn't quite clear but it doesn't really matter. Declaring something to be a function returning a pointer to a "void" is a handy way of reducing the number of bogus warnings about mixing pointer types. Notice that when I actually use a routine like OpenLibrary, I cast its result to precisely the type of pointer I desire. No muss, no fuss, it is, however, critical to declare a function returning a pointer as a function returning a pointer. With many compilers on many machines this is not so important since a pointer is the same size as an integer, but on the Amiga, especially when using MANX C, this is not so. A pointer is a 32 bit quantity while an integer may be 16 bits. I declare our good friend "calloc1' to be a function returning a pointer to bytes, which in fact it is. And, our good friends IntuitionBase and GfxBase. On the Amiga, libraries are accessed off of base addresses which are dynamically assigned. This way, no status address need be defined as in some very simplistic microcomputer operating systems which predate the Amiga. GfxBase and IntuitionBase must be initialized by calls to OpenLibrary and must be declared as having exactly those names. This is because the "glue" code which binds the C language to the libraries reference symbols with those names. Defining one symbol with a specific name buys us the luxury of not having to remember or hardcode dozens of entry points into the Amiga kernel. The declarations of such routines as generic_cleanup and funejnit are more examples of lying to the C compiler. I say they are "extern's" but they aren't really, i declare them in this way at this point so that the compiler will understand that these symbols refer to integer functions when 1 use their addresses to initialize some structures coming up. Next come some IntuiText structures, the structure of which I described last month. Worth mentioning again is the cast to "UBYTE This is equivalent to casting to pointers to unsigned char's. The typedef is provided by the MANX header file "exec types. h.” There are analogs under Lattice. The cast is needed because Amiga defined the IntuiText structure to expect an unsigned character pointer instead of a normal character pointer. Who knows why, since 99 Rescue Vo11r 'I cayesl omtm Puli Inc-Chfcr 200 T ccipc$ IP" J • Q a. tn O i'AT; i (?nc5. And add cw’n rcclycs Organize and search jifi £y catagorij or ingredient. Es Scnc (cAcc£ or yrt.cncij oritcr jor $ 19. 95 to: VC l i 7 £cj)t Software V 10. Lor 700707 Sa i Jjosc. Ca, 95170 percent of the time, programmers will just load a character string into this field. Notice that in each of the IntuiText structures the LeftEdge field is left as a 0. Having a LeftEdge of 0 is-ok perse but we'll get a little fancy later on and poke some values into each LeftEdge at runtime. The three IntuiText's represent the text to be displayed on "function selection" menu which is put up after the user has selected a screen to work with. The little bit of fanciness will be that need to display the menu items centered in the middle of the menu. There are two steps involved in the centering process. First, find out how wide each menu item is and how wide the widest one is. Second, run through the list of menu items adjusting the LeftEdge field in each IntuiText structure so as to center each text in the space required by the widest text. The routine "set_widths" takes as its argument a pointer to a Menu structure. It simply runs the list of Menultems starting with the Menultem pointed to by the Menu structure field, Firstltem. For each Menultem, I fill in the Width (Menultem-Width) of the IntuiText structure pointed to Menultem-ltemFill. The call to InluiTextLength takes care of figuring out exactly how many pixels a given string will occupy in a given font. The font, of course, can be determined for each IntuiText structure since one of the fields in the structure is a pointer to a text attribute structure. In the routine "massage_left_edges" we again accept a pointer to a Menu structure. We'll run the list of Menultems a second time to determine the width of the widest item. This loop could have been combined with the loop in set_widths and in fact, should have been. But, since the number of elements in the list (three in the case of the function selection menu or the number of active screens in the screen select menu) is very small, the cost of the extra tour through the list is not high. Once we've determined the width (in pixels) of the widest entry, we run the list of Menultems one more time to center each item within the field defined by the width of the widest item. This is done by dividing the space left over when you subtract the width of the current Menultem from the width of the widest Menultem into two equal fractions. For example, if the widest Menultem was 100 pixels wide, and the current Menultem was 60 pixels wide, there would be an excess of 40 pixels. Divide this by two to get 20 pixels of space on either side of the 60 pixel Menultem. Just plug the result into the LeftEdge field of the IntuiText structure and Pooof! Instant centered menus! One step that remains for each Menultem is to set its Width to that of the widest item. This way each menu items' selectable area will be the same size and will give the menu a visually appealing construction. I've been talking a good deal about Menultems, Menus, and such. Let me spend a few moments to explain how these structures interrelate to construct menus on the Amiga. At the top of the menu pyramid is the Menu structure. This structure is sort of a menu header in that there are one of these for each menu you will construct. If it is possible to select from one of several menus at any one time, each of these menus will be represented by a Menu structure in a linked list of such structures. The Intuition call SetMenuStrip takes a pointer to the first element of a link list of Menu structures as well as a pointer to a window to associate the menus with. As you know, when the right mouse button is depressed after a valid SetMenuStrip call, a menu strip appears along the top most portion of the window. The text which appears within the menu strip for each menu is defined by the MenuName field in the Menu structure. The position of the text and hence its selectable area is defined by the LeftEdge and Widthfields. The other obligatory fields, Height and TopEdge are not used for anything at this point. The linked list of Menu structures is maintained by the NextMenufield. This field is, of course, defined as a pointer to a Menu structure. The field Flags can be initialized to MENUENABLED or not, If not, the text in MenuName will be drawn but will be drawn in a ghosted fashion. If the user attempts to select the ghosted menu, no action will take place. This leads us io the field Firstltem. Firstltem is a pointer to a structure of type Menultem. Think of Menu structures as representing the names of menus while Menultem structures as representing Ihe items within each menu. As a side note, Menultems may themselves be broken down into submenus. Currently the limit to this recursion is one level. For example, a Menu structure might represent "Beverages." One of the items under this menu (represented by a Menultem) might be "Coffee." A sub-Menultem might be "black" another might be "Light and Sweet." Menultems define only the selectable area within which this item will be considered to have been chosen by the user. The actual text for the item is stored as an IntuiText structure and is pointed to by the Menultem structure by the field ItemFill. Notice that ItemFill is of type APTR (or "a ‘generic* pointer"). This is because Menultems can also point to images as well as IntuiText structures. That is, if we wished we could have a menu of pictures instead of a menu of text. Or, of course, we can mix and match. In Scrimper, we use only textual Menultems. In view of this brief discussion of menus, if you wish, go back and reread the discussion on massagejeft edges and set_widths. Recall that when using Scrimper there'll be two menus. One is static in nature in that its content is hard coded into the program source code. This static menu conveys to the user his choices of what to do with a screen once one has been chosen. The other menu (presenting a list of active screens) is built dynamically. There are two ways a data structure can be built under program control. One can either hard code the structure as in the case of the static menu or one can build the structure at "run time,"that is, when the program is actually executing. (Actually, there are two ways to build a structure dynamically. One way is on the execution stack the other is from memory allocated from a "heap." Variables defined on the stack are transient in nature and can be thought of as temporary local variables. The "heap" is the set of memory which can be added to your program's address space on the fly. Variables declared on the heap are more permanent in nature in that they will stick around until specifically deallocated by the program. Stack and heap born variables differ in another way. A stack based structure is declared to have a specific size and shape by actually having C language local variable declarations in your source code. Heap variables are declared in a two step process. First, a pointer to the structure to be created must be declared in some way. Then, the space actually used by the structure is allocated from the heap by some memory allocating function. In Scrimper, I use the routine "calloc" for heap allocation. Calloc, by the way, is a UNIX ((trademark of Bell Telephone Laboratories, Inc.)) function call so firmly CARDINAL ANNOUNCES ITS X EXPANSION DISK DRIVE GIVE YOUR AMIGA 2. 6 MEGABYTES 2x2 CONSISTS OF; 2 5 1 4" 80 track drives,
electronics and software. • AM IGA DOS M ODE — Emulates 3. 5” drives with 880K each. • PC DOS MODE — Provides dual 40 track, 360K drives. $ 595.00 PLUS SHIPPING FIRST SHIPMENTS IN JULY 1986. S 25.00 Refundable deposit reserves your drive. Cardinal Software 14840 Build America Drive Woodbridge, VA 22191 Info: (703) 491-6494 L. Order now! A**1 800 762-5645 embedded in the C programmer's mind that most non-UNIX C compilers provide the function to avoid nasty letters. The pointer is set to point to the start of the region reserved by the call to calloc. There after, dereferencing the pointer gets you the structure.) The routine "build_menu" is called often in Scrimper. In fact, I call it as often as possible since it builds the list of current screens and! Want this list to be as current as possible. Build_menu calls allot_menuJtem" once for every screen found to currently exist. AI]oc_menu_item is the routine which allocates the memory needed for one Menultem structure. Notice that the first argument to allot_menuJtem is declared as a "star star" and not as a single "star." This is read as"a pointer to a pointer to a structure of type Menultem." Remember, that whenever you want a subroutine to lastingly modify an argument, you must pass the argument as a pointer. What if what you wanted the subroutine to modify was itself a pointer? Well, just pass a pointer to the pointer. The first thing ailoc_menuJtem does is to call calloc asking for enough space for one instance of a structure of the same size as a Menultem. Notice that calloc is casted 1o the appropriate type before its result is assigned to "star p." This is because calloc is initially declared as a routine which returns a pointer to bytes (characters) not Menultems. We assign the result (a pointer to a Menultem) to "star p" because it is the pointer to the structure. P by itself is a pointer to a pointer, P with a single star is a pointer, and P with a double star refers to the structure itself. The pointer to the structure ("star p") is checked against NULL which is what calloc would return if the reservation of heap space failed lor some reason. If calloc returns a non-NULL value, we can go ahead and use *p as an ordinary pointer to a structure. Notice we immediately initialize the linkage field, Nextltem, to NULL. We do this to ensure that we can accurately find the end of the linked list whenever we need to run it. The height of this Menultem will just be the size of the default font for the current window (this assumes, of course, that a window had been opened previously). Since all my menu items are declared as having the same height, 1 can easily compute the TopEdge field as being a multiple of the height field. The parameter ”i" is passed in containing the multiplier to the height field. The first time ailoc_menu_item is called i is 0. The next time, i is one and so on. This way, each succeeding
call to allot_menuJtem creates an item further down the menu. I set the LeftEdge field to -5 in every case. I do this to set up a pleasing amount of overlap between the actual menu itself and its header text up on the menu strip. Next I fill in the Flags field with some critical bits. First is the ITEMTEXT flag which telis Intuition that the thing pointed to by ftemFill is an IntuiText and not an Intuilmage. ITEMENABLED tells Intuition to allow the user to select this item from the menu. If this bit is not turned on the item will still appear in the menu but will appear ghosted and cannot be selected by the user. The last flag I set is HIGHCOMP. This specifies the style of highlighting f want to use to provide feedback to the user indicating which item from the menu Intuition currently thinks the user is pointing at. HIGHCOMP causes Intuition to compliment the select box of an item whenever the mouse is positioned over the select box. Other choices include HIGHNONE which asks Intuition not to highlight at all and HIGHBOX which highlights by drawing a box around the currently selected text, in my experience, HIGHCOMP is the most pleasing form of highlighting. The Command field is filled with 0 indicating to Intuition that I don't want 1o define any keystroke short cuts tor getting to a menu item. If I had loaded an ascii character (a character from the keyboard) into Command, and set the COMMSEQ flag in the Flag field, Intuition would accept right Amiga-with-the character as identical 1o pushing the right mouse button and selecting the item. When using amiga-key menu shortcuts you must remember to enlarge the select box of the menu item to make room for Intuition to render the symbol for the short cut, The symbol will be displayed on the same line as the menuitem it stands for whenever the menu is drawn. In this way, the user will constantly be reminded what the short cuts are. The next field to be filled in is Subitem. I fill this NULL because I don't want any of Scrimper's menu items to enable the displaying of a submenu. Recall the previous example of how submenus might be used. The menu header might be Beverages. A menu item might be Coffee. A submenu might display the choices you have as to what to mix into the coffee. The Subitem field is of course a pointer to a structure of type Menultem. If Subitem had been initialized to point to a Menultem structure, that item (and any item pointed to by 'that" item through its Nextltem field) would be rendered whenever Ihe mouse was positioned over the original Menultem. The NextSelect field is also initialized to zero. We'll talk about this field when we discuss the actual mechanics of using menus. The MutualExclude field tells Intuition which menu items cannot be selected at the same lime this item is selected. The way this works is, each item in the menu is assigned a bit in the MutualExclude field. Item 1 gets bit 0. Item 2 gets bit 1 and so on. If a bit is turned on in a MutualExclude field it means that that item cannot be selected when this item is selected. In Scrimper, every item mutually excludes the others in the menu. So, I initialize each MutualExclude field to exclude (have a bit turned on) every other item. This is done by taking the one's compliment of a single bit in their place. The size of Choose a porting house that's well advanced along the curve! Advanced Systems Design Group Your Port of Entry into the AMIGA Marketplace 280 River Rd., Suite 54A Picscataway, N.J. 08854 1-201-271-4522 Amiga is a trademark of Commodoro-AMIGA, Inc. MutualExclude is 32 bits so the net effect is to have one off bit (representing this item itself) and 31 on bits representing all other Menultems. Since the MutualExlude field is 32 bits long, only the first 32 (of potentially many more total items) in each menu can be tested for mutual exclusion. Now it is time to declare (dynamically again) the space for the IntuiText structure which will contain the text for this menu item. For this I call the routine alloejutuitext passing it a pointer to a pointer (why?) And the string I want the IntuiText to hold. The test against string length being odd is not really needed since calloc will lake care of allocating an odd number of bytes. Star p gets the value returned by calloc when asked to reserve enough bytes for an IntuiText.If calloc returns NULL then no space was available and the NULL value of star p will signal alloejnenujtem that something is amiss. If the calloc of the IntuiText structure went ok, 1 declare enough space to hold the string I want the IntuiText structure to point to. If this second calloc is NOT successful I set star p to NULL in the "else" portion of the if statement. As in: if (d) blah blah blah} else *p = NULL; This is correct to tell alloejnenujtem that something went wrong. However, I forgot to do something right? What'd you say? That's right! I forgot to release the storage I had successfully allocated in the previous call to calloc. The code should look like: if (d) blah blah blah} else r give back the intuitext structure 7 free (*p); * p= NULL;} This bug would cause a tiny amount of memory to be
lost whenever Scrimper was run when not enough memory was
available. This oversight, though not serious, is an example of
creeping memory loss which can plague an Amiga system. If we have allocated the space for the Intuitext structure as well as space for the text to be stored we go ahead and initialize the fields in the IntuiText structure. In case you're wondering why I buffer the text (which in Scrimper is actually the names of screens), what would happen if I made the IntuiText structure point to a screen name directly and the screen was closed by the user (and then a menu was displayed)? In last month's discussion we talked about what each IntuiText field does so vve won't repeat that here. At this point we've declared and initialized everything we need for one menu item. We return from alloejutuitext with star p 'NOT* being NULL. We return to alloejnenujtem and test 1he Item Fill pointer (star p in alloejutuitext) against NULL to see if the allocations had been done successfully. If not, what oversight did I commit a second time? If the allocations had all gone ok we fill in the Width field of the Menultem by calling IntuiTextLength with the hemFili (a pointer to an IntuiText). Later on we'SI call massagejeft_edges 1o center each item within the menu as I explained earlier only here, of course, we won't have to caliseQwidths since the widths are already defined. Well conclude the discussion of Scrimper next month where i'll talk about pointers to functions and how they're used to set up generalized handling of various events. • AC-FOYER TANGO BATH BEDROOM (I01 6¦X I I' O') CLOSET PRINTED
CIRCUIT ARTWORK I merging from years of successful problem
solving 13 applications in piping, and electronics for the
aerospace st™industry, DYNAMIC CAD has broughtahighlyadvanced
and powerful CAD system together with today's most dynamic and
versatile micro-computer, the Amiga. DYNAMIC CAD takes full
advantage of Amiga's extensive capabilities with color,
multiple modes of resolution, mouse functions, and easily
accessible pulldown menus. This is not some promised "vapor-ware.” DYNAMIC CAD exists now and comes to the Amiga with a proven track record. The time and money saving applications of DYNAMIC CAD for engineers and architects are truly astounding. Here is an advanced, 2-D drafting system with isometric capabilities that can be combined with many models of printers, plotters, and digitizers. In getting started you'll have the support of an extensive manual written in understandable English along with working examples as tutorial lessons. MECHANICAL DRAFTING WHAT DYNAMIC-CAD CAN DO FOR YOG * 001 e u mo m. U mil u scots u Wol? U NET UST FROM SCHEMATIC • Orort — trade mart of Go-Set Soefdk hilrurr -rti 'LOO '-ade
mat* Knrfd F Esvr — GH trade mart of tntoraticcaT Buvea vachi i "Autocad — trade
mart ct Aj?cx3rs Inc 'Amga trade mart of Cemmodorr Suwwu
Mactmn D. C gives you all the expected CAD functions of zooming,
rotating, panning, group functions and menu driven features. D‘C brings you professional CAD capability tested and proven in the production of tens of thousands of drawtugs. • D'C will liberate you from the need to draw free hand. • D'C has net listing capability from your schematic. • Schematic comparison to your printed circuit artwork for
continuity check. • D'C can produce isometric views. • Mil Spec quality Leroy' fonts • Automatic line dimensioning • D'C includes a series of information libraries: Symbols.
Electronic Parts'Chips, Architectural Components,
Landscaping, etc. • Data base to store and relnevc information on parts
specifications, vendors, and pricing. • Data base system utilizes ASCII format files which are
convortable to other standards • Capable of utilizing up to 4,096 colors. • D'C can generate over 8.000 layers • D'C supports most standard dot matrix printers, inkjet, lazes
jet. Pen plotters, and the Gerber* Photoplotter. SYSTEM REQUIREMENTS 512 K RAM 2 Disk Drives (or) 1 Drive and Hard Disk Printer or Plotter Inquiries invited. (818) 360-3715 (Marauder: a review ByRickWirch) It is very reassuring to buy a product that performs as advertised. Marauder is such a product. Marauder provides archival backups for most copy-protected software on the market today. How important are archival backups? It depends upon how much you value your software. I have had two bad experiences with copyprotected software and Marauder removed my fears that my software could be lost. By providing a'backup of your software, any mistakes caused by inadvertent keystrokes or mouse clicks will alter only the backup, while the original is stored in a safe place. I have been using and writing programs for personal computers for the past six years. No matter how careful you are, mistakes are possible. One mishap was as simple as an inadvertent menu pick that saved a file to my copy-protected Deluxe Paint disk. That file now cannot be deleted, and my faith in the integrity of the file structure on that disk is low, Unfortunately, this mishap occurred on the original diskette and it will be that way forever. I call my other bad experience with copy-protected software a "Phase of the Moon" problem. I have a copy-protected video game, Archon, that seems to consider the "Phase of the Moon" to determine if it should start the program. Usually, it takes several tries to start the program. I was worried that the disk might further deteriorate, and someday never start. Now, I have a backup and the wear and tear will bo on the backup, not the original. How does Marauder work? Quite well — it works regardless of the number of disk drives or how much memory you have. One warning — and I HIGHLY recommend this — buy the additional 256K memory expansion. Without it, this program and most other programs will be severely limited. How limited is Marauder with 256K of memory? Well, you have to swap disks eighty times. Enough said. The program uses the Amiga interface, Intuition, and if you can pull down a menu and point and click, you should be able to use Marauder, As a matter of fact, I believe that you should be able to use the program without reading the manual at all. The Marauder's startup screen carries a brief reminder of the laws governing software duplication. After clicking "OK" the program begins. The main program's screen is colorful and well-organized. It contains start and stop buttons for the copying process, and buttons to select the source and destination disks. In one corner is a chart with boxes for each of the eighty tracks on an Amiga disk. This chart also displays which side of the disk is being copied, and puts a checkmark in each box after that track has been copied. There are two menus. One displays the author's name and exits the program. The other menu contains the names of fifteen software titles. Selecting a name from this menu enters in the two codes necessary to backup the program. If you wish to backup a program that's not listed in this menu, you have to type in the two codes by hand. The program is packaged simply — just the disk, a sheet or two of instructions, and the disk itself, all bound with a piece of stiffening cardboard, and shrink-wrapped. Also included is a small pamphlet from ADAPSO, an organization which is dedicated to informing the public about legal and illegal software duplication. The manual is a concise, easy-to-read description of how to use the program. You will also learn how to copy programs that were released after Marauder's release. To copy newly released software, you can call Discovery Software, the makers of Marauder, and ask for the two codes necessary to backup newly released software. I called Discovery Software. I was pleased with their support. They were very courteous and pleasant. They asked for my registration number and promptly answered my questions. Unfortunately, Marauder has its flaws. One, it requires you to reboot or reset the computer with Marauder as the Workbench disk to use it. This is just a pet peeve of mine but, I HATE programs that require you to reset the computer. On a multitasking computer if you have to reset the computer to start a program it CANNOT MULTI-TASK, Also, the Amiga has the ability to configure your computer to your liking with Preferences, but this configuration is lost when you reset. Another flaw is Marauder's inability to copy all programs. I thought of a way to foil Marauder as soon as I used the program. A call to Discovery Software confirmed this method to foil Marauder. Discovery Software was already aware of this flaw and is working on an upgrade. (The two numbers necessary to copy a program define the track and sync for reading that track. Currently, Marauder can only accept one set of codes, so it can only copy disks that have only one funny, unreadable track like this. If a program is protected with two mis-synced tracks, the present version of Marauder will not copy the program.) This upgrade will be available to current Marauder owners tor ten dollars. Luckily, no programs currently available use this method of copy-protection yet, so it is not a real limitation at this time. Overall, I have to give Marauder a hearty thumbs up and would recommend this product to friends. *AC* by John Foust The AMICUS Network CompuServe [72337,135] People Link AMICUS Delphi JOHNFOUST uuep through the Well "ifousf Amiga public domain software is really starting to blossom. The flashiest examples are coming out of Commodore, from the technical support people, but Amiga owners are dose behind. Printer drivers If you have a printer that doesn't have a printer driver in Preferences, you can always write your own, or have a programmer do it for you. Fortunately, I've been collecting printer drivers, so you might not have to write your own. We have a number of printer drivers available on disk 9, for the Canon PJ-1080A color ink jet printer, for graphics only, not text; the Cltoh Prowriter; the Epson LQ-800; the Gemini Star-10; the Okidata ML92; the NEC 8025S; the Panasonic KX-P10xx family; and the Smith-Corona D300. The last three were written by Rick Wirch, the others were collected from the networks and other public domain sources. The Panasonic KX-P10xx driver is based on the Epson driver, but adds the ability to do subscripts and superscripts in letter-quality mode from programs like Textcraft. Also included is a new Epson driver, with the streak bug removed. When printing graphics, the official Epson driver would overlap every eighth line of graphics, making streaks in the printed picture. This new driver doesn't have that problem. An electronic copy of the printer driver chapter from the developer's manuals is on Tech BBS disk, number 3. I have uploaded an Archive file with this text and example printer driver source code to the CompuServe, People Link and Delphi networks. People Link Update In the last issue, I claimed People Link signup was free, it was, until May 20, when the price rose to $ 10. This price includes afree hour of time on the system. The People Link Amiga group is doing very well. The Amazing Computing and AMICUS section is becoming a good resource for programmers and novices alike. The data library is over thirteen megabytes. Lately, the Sunday night conferences have been consistently attracting about 30 people, and spontaneous conferences are happening every night of the week. We have not yet uploaded the complete contents of the AMICUS and Fred Fish public domain software disks. Summaries are available online lor both collections, in condensed form, similar to the catalogs presented here in the magazine. If you would like something uploaded to the network you visit most, please send me some electronic mail to one of the addresses above, and I will upload the software you request, as time permits, i feel most comfortable uploading to CompuServe, Delphi and People Link. I'm still trying to break through the menus on the Well, and get to the Unix underneath, and with the moderation on Usenet, and the hassles of 'uuep', I'd rather establish a direct Snail Mail link with the moderators in charge of this sort of distribution. Please don't think we've sold our sou! To People Link. Many of the authors here at Amazing Computing are active on several networks, myself included. Updated AMICUS disks The appearance of new Workbench techniques, compilers, and updated programs poses a question for the distributors of public domain software disks. Do you replace the old software, or add the new to a newer disk? In most cases for the AMICUS disks, I have chosen to improve the old disks, and replace buggy versions in place, instead of freezing the old disks, and adding the new software to the most recently assembled disk. Some people have the original disks I distributed in the fall of 1985. People who get the AMICUS disks today will be getting the
best disk we can make. They won’t have to worry about
checking the whole calatog of software to find newer
versions of a particular program. For example, when we created a method of launching Abasic programs from an icon on the Workbench, we added this to AMICUS disks 1 and 2. Some people won't have the improved disks, but everyone who gets them in the future will get a better product. Also, the Manx C compiler can halve the size of many compiled programs, so this has made more free space cn the disks, too, to allow for more enhancements, like the Abasic Workbench launcher. Disk 9 The Amiga Basic programs on disk nine include FlightSim, a simple flight simulator program; HuePalette, the hue-saturation-intensity program by Steve Pietrowicz from the article in Amazing Computing; Requester, a requester subroutine for use in your programs; ScrollDemo, a demonstration of the text scrolling capabilities of Amiga Basic, Synthesizer, a sound program; and WorldMap, a program that draws a map of the world. The executable programs include the newest version of the Boing! Demo, which lets you adjust the speed of the bouncing ball. Disk 9 has the Wombat terminal program, as announced in the last issue. The program Brush2C converts an IFF brush file, as saved from Deluxe Paint, to C structure declarations. This program was called 'image' in the last issue of Amazing Computing. Another similar tool, Brush21con, converts an IFF brush to a Workbench icon. Dazzle is a graphics demo program that makes very interesting patterns, based on mouse movements. This disk has full instructions for installing a 68010 chip in place of your 68000 chip. This will give an overall increase in speed of about 10 to 15 percent. This text may be printed in a future issue of Amazing Computing. Accompanying this text, DeciGEL is a program to patch the exception vectors on the 68000 Amiga to allow unrestricted use of a 68010 chip. The assembly language source for DeciGEL is included, by Scott Turner. This irons out the few differences between the two chips, and prevents crashes from software that bends the rules of the Amiga operating system. Klock is a variation on the clock-on-the-window-bar theme. This small time display alternate between the current time and date every few seconds. TimeSet is a gadget-oriented method of setting the time on the Amiga. Instead of using Preferences or the CLI 'DATE' command, you just move a few gadgets in TimeSet, and the system clock is updated. Disk 9 has a version of the game of Life. This game is always exciting to me. I have played the version in the Gizmos utility set for hours on end. This disk contains yet another version of MicroEmacs, a version twiddled by Rick Wirch, based on the version by Andy Poggio from the Fred Fish disks. Wirch added dropdown menus for many functions, and added word-wrap, paragraph formatting, and settable margins. With these additions, this version of MicroEmacs becomes usable as a word processor. The full source code in C is included. Also present is MyCLI version 2.00, a shell that replaces many CLI functions, and adds several more. It has the advantage of taking less RAM space than keeping all those commands in the RAM: disk, while giving extra features like command line editing, so you can correct your typing mistakes, and search paths for commands. Also, this program might be the subject of a future article In Amazing Computing Bnurr.fi in C is innliiH.rH_ A-TALK Advanced Communication and Terminal program for the AMIGA «••• o a O • • •- Q s • • 4) 0“ S a Now with Kermit! KERM1T — Transfers ASCII and binary files with IBM, CDC, Cray, DEC, Prime, Tandem and Ljnivac mainframes and minis, and with micros including the JBM PC, Apple II, Atari, Commodore 64 and Macintosh. XMODEM * The standard for transferring ASCII and binary files with BBS's. FILE — ASCII file send and receive capability for exchanging data with systems that da not support advanced communication protocols. SET • Pull control of all communication parameters (baud rate, parity, stop bits, handshake, half full duplex, etc.). MODEM — Full support of various modem types (including Hayes) with autodial, auto-redial, auto-answer and hangup, D1AL-A-TALK — A powerful script language for automatic login, a phone number directory ar. d a function key definition for each dialed system. Login scripts are provided for Telenet, Tymnet, UNINET, CompuServe, NcwsNet, DIALOG, MCI, Official Airline Guides, Western Union and Dow Jones. 0 »•' •*« TERM — Full ANSI terminal emulation with resizable and full screen window options. Termcap and term info included for Emacs and vi on UNIX. 0 A-TALK lists for $ 49.95. A-TALK is nol copy protected. To order send check to: Felsina Software 3175 South Hoover Street, £275 Los Angeles, CA 90007 (213) 747*8498 The texts on disk 9 demonstrate how to read the
function keys in Amiga Basic, a solution to the game of
Hacker, tips on printer usage and startup-sequences, and a
list of things that work or don't work under the
Transformer. Disk 10 Disk 10 is a compilation of the best sampled sounds from the several 'instruments' dealer demos that circulate. The demo is icon-clickable. Among the sounds on the disk: acoustic guitar, alarm clock, banjo, bass guitar, boink, calliope, car horn, claves, drip, electric guitar, flute, harp arpeggio, kickdrum, marimba, organ minor chord, people talking, pigs, pipe organ, Rhodes electric piano, saxophone, sitar, snare, steel drum, bells, vibes, violin, wail guitar, a horse whinny, and a whistle. What will be coming up on disk 11? Disks 11 through 13 are still being organized and filled, but in the issue, they will be fully described. Disk 1I will have a charming program from Commodore that looks like a strip chart recorder. It plots CPU and memory use over time. Along with that comes a program to list all the tasks running in memory. Also, it allows you to adjust the priority of each. These won't fill the disk, so there will be other software here, too. One will be a very cute calendar program written in Amiga Basic, with a built-in animated diary. Disk 12 is a bulletin board program written in Amiga Basic, by $ 395 IS ALL YOU NEED FOR OUR 2400 bps MODEM $ 395 FOR CIS 2424 ADH $ 395 includes the bells & whistles ‘Autodial autoanswer * 2400 1200 600 300 bps operation ‘Synchronous asynchronous
‘Remote and Local Diagnostics ‘CCITT V..22 bis, V..22 A B.Bell
103 113 & Hayes Command Set Compatibility $ 395 includes an
Amiga Modem Cable $ 395 includes your choice of Maxicomm™ or
On-Line™ software. $ 395 includes a two-year warranty Add $ 2.50 for shipping and handling Mass. Residents add 5% sales tax. Visa and Mastercard Accepted Lakewood Associates 315S Chestnut Street Needham, MA02192 (617) 332-2554 Ewan Grantham. Grantham lives outside Atlanta, and
hosted an Amiga hacker party during COMDEX. Disk 13 has several programs by Carolyn Scheppner of Commodore technical support in West Chester. All are in Amiga Basic. This disk features programs documenting a new IFF hunk type that eases the loading and saving of IFF images under Amiga Basic. These programs demonstrate the use of many different libraries to access AmigaDOS functions, as several articles in recent issues of Amazing Computing have shown. I'm very glad to present this, since so many people have asked for this capability. These programs will be featured in the next issue of Amazing Computing. Because this has such appeal, I'm working on articles to complement Scheppner's programs, i hope to document the process of writing your own AmigaDOS libraries, and present a full explanation of ’. fd' files and '.bmap'files. Disk 13 isn't filled by these programs, so there will be other programs added to it soon, I have a set of examples from the 1.1 ROM Kernel Manual. Fred Fish disks Fred Fish has been busy, too. His collection has grown to 24- disks, and he has already mentioned some features of future disks ¦ including public domain C compiler. Because of the length of the additions to the Fred Fish collection, please read the catalog presented_in. Our next issue. I'll cover a few highlights in the new disks 12-24. Disk 14 has the full C source to a generalized 3-D graphics package, with hidden surface removal. This could go a long way in the right hands. This was used to write the rotating Amiga sign found on many dealer demo disks, it really shows the power of the Amiga when a great demo can be written in a generic, extensible graphics package. Disk 16 is a copy of the latest IFF disk specifications from Commodore. Disk 18 has a program that will speak Pig Latin, if you are getting tired of the SAY command. It also has the source and executable for Xlisp 1.6, a public domain Lisp interpreter I've been promising you for a long time. Disk 19 has a set of hires IFF pictures drawn by Jay Miner, the designer of the Amiga graphics chips. These pictures are flowcharts of the internals of the Amiga and its chips. Disk 20 has a sample port-handier, in disassembled 68000 code, by John Toebes. This caused some consternation at Commodore-Amiga when he posted this to Usenet. They thought he had stumbled upon some of their source code, since some of the labels were the same as the original code. I saw Toebes at COMDEX, getting chased around the booth by a Los Gatos techie. His alibi? It turns out the labels were printed in an obscure listing in the ROM Kernel Manual. Disk 20 has an example showing the hashing algorithm used on Amiga diskettes, and a tutorial on multitasking, by John Draper. Also included are the winners of a Mandelbrot picture contest, and a demo version of TxED, an editor from MicroSmiths. Disk 21 is devoted 1o Thomas Wilcox's Mandelbrot Set Explorer. This is an extensive Mandelbrot set program, with features beyond the other Mandelbrot programs around. If you haven't heard of the Mandelbrot set, or seen Mandelbrot pictures, here's a simple explanation. The Mandelbrot set is a complex mathematic object that yields fascinating color graphics pictures. Since it takes a lot of computation to make each picture, this disk represents dozens of hours of computing. Disk 24 has a prerelease public domain Modula-2 compiler, direct from Prof. Wirth’s grad students. Currently, the programs are executed with a special binary loader, so it does not produce standalone code yet. IBM PC software In the next few issues of Amazing Computing, we'll be covering some new public domain software, for both the Amiga and the IBM PC. With the advent of the Sidecar, we'll also be assembling a "best of" collection of public domain software for the PC compatible machines. My good friend Lew likes to build tools. The kinds of tools he builds are never available in stores, that is why he builds them. The reason his tools don not exist in stores is that they are designed for a specific task rather than for general use. Building Tools By Daniel D. Kary 1 can not begin to count the hours I've spent in Low's garage, or the number of times he has decided to build a new tool before we start the actual project. So many times i have been surprised that the new tool saved us much more time than it tookto build. 1 guess I've known Lew for about eight years now, and his attitudes must be beginning to influence me. Last weekend I built a toot for my Amiga that will probably never be available in a store, but it has already proven so useful to me that I would not want to be without it. I want to tell you about my tool and suggest that you might be able to build some useful tools for yourself. I am working on a large program for the Amiga that will probably make me rich and famous. I am writing this program in Lattice C. 1 have not programmed for a window-oriented environment before. Programming the Intuition environment is challenging. Intuition is very flexible, and that is the root of the problem. It is nice that I can create a menu strip, with the menu items positioned precisely where I want them, but the price is high, I have to specify where everything goes, even when I do not particularly care. Menus are specified by creating and initializing a data structure, and then passing the address of that structure to an Intuition function. This same technique is used for everything from the screen and its windows to gadgets and requesters. Certainly, it is a flexible technique, but there are so many different structures that I have difficulty dealing with them. I can not remember what the elements are, their types or their names and 1 need to know each of these at some time or another, My Intuition manual is beginning to take on a distinctively tattered look from all the times I have leafed through it to find the definition of a structure. The yellow "Post-It’' notes that I use to mark my favorite pages are torn and curled. 3M could save me some effort if they sold pretattered "Post-It" notes. 1 reached a point where I could not stand it anymore. I had to do something about this. "How about a programmers reference card", 1 wondered. No. There are too many structures for a programmers reference card, it would end up becoming another manual to leaf through. How about a Rolodex? An Intuition Window structure alone would take about eight cards. Besides, my desk is starting to feel cramped as it is. "I wish 1 could just press a button and have the structure pop up on my screen", I thought. "Oh, well. Paging through the manual isn't that bad". I admit it, I am slow, but it did finally come to me. Why can't I just press a button and have a structure pop up? Popup information is a big seller on single-tasking computers. It should be a breeze to get the same thing on my multitasking Amiga. It was all over but the shouting (and the coding). My plan was to write a program that could display the data structures. I could start this program from the CLI and use the front-back gadgets to pop it to the front whenever I wanted it. I decided to set up a data file first. My program would read the structures out of the datafile. Now, how should I create that tile? The structures are all in the manual, I could just type them in. Thai was a pleasant thought. Thinking further it occurred to me that I had a magnetic copy of all the structures since they are all defined in the include files. I could just edit those tiles. Another pleasant thought. Finally, what if I wrote a small program to copy the structures out of the include flies. Why can’t I ever think of the easy way first? See Listing 1, the module ’select.c.’ Things became a little complicated at this point. I was using the new VI.1 Amiga C compiler, which is Lattice C V3.03, The include files supplied with this version have the comments stripped out. Neato. Back to Amiga VI.0, or Lattice C V3.02. Later, I'll discuss differences between the include files of the two versions. For now, I'll just consider the problem of getting the structures out of the include files. Since every structure definition begins with the reserved word 'struct,' it is not too challenging to find the structure definitions in the include file. Because I have some experience in writing compilers, l knew that the problem is not as simple as finding every instance of the reserved word 'struct'. That word could occur in a comment, in a string literal or in the definition of an object or a pointer of a struct type. To handle the problem correctly I really should have written a parser so I could correctly determine when a structure definition occurred. This would not be difficult using modern parser construction techniques, but this is more work than simply editing the include files, the work I was trying to avoid. After scanning through the listing of the include files in the back of the ROM Kernal Manual, I found I could recognize all This Program Is VI.0 (Lattice V3.02). DANGEROUS!! WeGo See something New every time you turnon your Amiga! Significant Silly O J Funny Weird includes Phrases-Stories-Tricks Try some FUN! Si0.95 tor disk to: Ronald Peterson idSNashua St. Milford N11 03055 AMIGA is a trademark of Commodore-Amiga, Inc. the structures with two simple tests. The reserved word 'struct' occurs in column 1 and there is an open bracket' on the same line as the word struct or the line following it. The end of the structure definition is marked with a closed bracket,')'. Some structures have unions as members. Unions are delimited with open and closed brackets. By maintaining a bracket count, the end of a structure is found when the number of closed brackets scanned is equal to the number of open brackets scanned. The function 'readjile ()r in ’select. c' uses this simple technique to extract structure definitions from the file and works for most of the structures defined in the include files. The struct 'Library' defined in exec IIbraries. h is declared 'extern', I decided to simply break this line after the word 'extern'. This does not change the meaning of the declaration. This is simpler than modifying the code to deal with this aberration. Another problem is the struct ’Bob' in graphics geis. h. The declaration is followed by a comment rather than the open bracket. I joined the comment line to the previous line. Finally, all structure declarations in devices paraile!. h and devices serial. h are preceded by a blank, j deleted this blank. There are two new files and a new structure in an existing file of Amiga VI.1 (Lattice V3.03) that were not present in Amiga The new files are iattice setjump. h and devices prtbase. h. The file exec ports. h contains the new struct Semaphore, Four structs were deleted from devices clipboard. h in Amiga VI.1, they are 'ClipStream, 'Clipltem,' 'ClipANSI' and 'ClipBitMap.' After I debugged the 'read_file ()r function, I decided it would be convenient if 'select. c' would search directories recursively. That way I could just specify the include directory and select. c would extract all the struct definitions from all the files in that hierarchy. I then wrote the function ’search ()' to recursively search whatever name it is passed for files. I considered this an interesting diversion, I had been looking for a good reason to recursively search directories just to see what was involved in doing it under AmigaDos. It turned out to be an easy task. Simply 'LockQ' the file then 'Examined' it to determine if it is a file or a directory. If it is a directory, pass it (recursively) to 'searchQ,' otherwise pass it to 'readjile (),’ The 'search ()' function can be used in any program where a recursive descent of a file hierarchy is desired. For this, change the name of the function that is called when a file name is found. The final version of 'select. c' reads two arguments from the command line. The first argument is the file or directory to search and the second is the name of the file to use for the output. You may not have noticed, but my original intention was to create a tool to spare me Ihe pain of paging through my intuition manual. On the way 1 created a tool to build Ihe data file that my tool would use. This reminds me of potato chips or salted peanuts — I can't eat just one. In the end, I probably spent as much time writing 'select. c' as I would have spent editing the include files to extract the structures. But i now have a nice little program that! Can share more easily than! Could share the data file it creates. Space in magazines is scarce and time on a bulletin board or network can be expensive. Furthermore, the include files are a copyright of Commodore-Amiga, and I don not have permission to distribute even partial copies of them. The program that displays the structures is called 'display. c,', in Listing 2. 'Display. c' is very simple. It allocates resources using the technique suggested by Perry Kivolowitz in the premiere issue of Amazing Computing. It reads in the data file (s), which are specified as command line arguments, and then builds the menu strip. Finally, it enters a 'while' loop that waits for mouse events and displays the requested structures. The function 'read_file ()' reads the data file (s) and builds a structure to hold all the data. The data file marks the beginning of each new item with a line that begins with This means that 'dispiay. c' is not limited to displaying structures. Any type of textual data can be displayed. Just create a file with the data and mark the beginning of each item with an The text that follows the '!' Will be used as the menu label for that item. The end of an item is marked by either the beginning of the next item or the end of the file. When a complete item has been read in it is inserted into the list of items in alphabetical order. When all data files have been read in, 'build_menu ()' splits the list of items into fourteen sublists. Each sublist becomes a set of menu items under a menu strip item. The maximum number of fourteen sublists was selected because it is the largest number of items that I felt could fit comfortably on the menu strip. Each of these fourteen items can have up to eighteen menu items, the most I could comfortably fit on the screen. This yields a total maximum of 252 items that can be displayed. The titles on the menu strip consist of the first three characters of the first menu item under that title. These mnemonics are similar to the labels found on the spine of many encyclopedias, they are used to locate the volume that contains the information you are looking for. When a structure is selected from the menu it is displayed on the screen by the function ’redisplay!)'. Since the screen has to be brought to the foreground with the mouse by clicking the depth arranging gadget, and the item is selected from the menu with the mouse, I wanted the entire display to be controllable from the mouse. Some structures fit on the screen but others are quite long and scroll off the screen. The display can be paused by holding down the menu button of the mouse (the right button). I did not write any code to accomplish this, it is a side effect of the fact that Intuition causes all screen I O to pause while the menu system is active. The display of an item that is longer than the screen can be halted by pressing the select button of the mouse (the left button). When the menu button is used to pause the display, it must be released before the select button can be pressed to stop the display. Any mouse events that occur while the menu button is pressed are assumed to be directed to the menu system. If an item is being displayed at full speed, it requires considerable dexterity to release the mouse button and press the select button before information scrolls off the top of the screen. I felt it was necessary to slow down the display speed to avoid the need for such uncommon dexterity. It seemed a shame to slow down the printing of short items, so I compromised. The first sixteen lines of text are displayed at full speed, a delay is introduced after displaying ProFo.rmaTN1-An Enhanced Text Processor ProForma™ is a powerful text processor and formatter with roots in Nroff. A Unix text processor. When used with an Amiga editor, ProForma™ becomes a professional document production tool. ProForma™ supports most popular letter quality and dotmatrix printers. Vertical formal control — page length, header format, window line, variable line spacing. Horizontal formal control — margins and indent. Multicolumn print — up to 4 text columns per page. Fill and justification Tabular Data format Headers and footers — with page numbering. Character formating — boldlaco, underline, italics, superscript, subscript, stukeout, double width, alternate loots (up to 3). Macro definition • create now ProForma™ commands. Change bar. generation — lor revision control. Table of Conteuls Generation Mex denfralign Document preview — formatted documents on the screen. Suggested Retail Price — $ 75.00 ProForma™developed byFulure Concepts. Inc., exclusively distributed by: Professional Network Services Corporation 315 Chestnut Street Needham, MA 02192 (617) 449-6460 Dealer Inquiries Invited ProForma™ — a trademark
ol Professional Network Services Corporation * — character
formats and toms vary with printers supported. YET ANOTHER UNFAIR ADVANTAGE Although you haven’t had your Amiga foe very long, you may (¦nd that you ncec a more powerful Imc interpreter. Consider these features: Pi|X.-. Search paths User definable command-line editing Definable function keys Unix-like wildcards More versitile redirections Command aliases Built in commands Command history All available new. At a reasonable price, from Z O X s o I HE AMIGA TOOLSMIfHS. Ro fk — m LtwdiMA, o18: uti2B3 usa i FULL interface to ROW Kernel. Intuition. Workbench and Amiga Dos » 32-bit native code implementation with ail standard modules i Supports transcendental functions and real numbers Benchmark! Compile Unk Execute Serve of Eratosthenes 16 32 5. 3 Null Program 14 10 Added feature* of Modula — 2 not found In Pascal ¦ CASE nas an ELSE and may contain * Programs may be broken up into subranges Modules for separate
compilation • Dynamic strings of any size ¦ Multitasking is supported ¦
Machine level interface * Module version control Bitwise operators ¦ Open array
parameters (VAR r ARRAY Direct pod and Memory access OF REALS)
Absolute addressing ¦ Type transfer functions Interrupt
structure ¦ Definable scope of object Pascal and Modula-2
source code are nearly identical Modula-2 should be thought ol
as an enhancement to Pascal (they were both designed by
Professor Niktaus Wirth) Regular Venlon: M9.95 Developer's
Version: $ 149.95 The developers version supplies an extra
diskette containing all of the definition module sources, a
symbol lite decoder, link and loan file disassemblers, a source
file cross referencer. The hermit file transfer utility and the
source code to several of the Amiga Modules SELECT. C Copyright
Daniel D. Kary 1986 Standard Listing include
dibraries dos. h ffinclude stdio. h MODULA-2 the successor to
Pascal ¦ CODE statement for inline assembly code ¦ Error
lister will locale and identify all errors m source code ¦
Modula-2 is NOT copy protected • 320-page manual FILE-tout; main (argo, argv) int argo; char
'argvQ; int i; if (argo 3} printffUSAGE: %s infile (s)
outfile n", argv[0]); exit (1);} arge-; if ((foul =
fopen (argv[argo], "w")) == NULL)(prints ("Unable to write to
%s n", argv[argo]); exit (1);) for (i = 1; i argo; i++)
search (argv[i]); 7DI SOFTWARE, INC. Dallas. Texas 75238 ¦ (214)
340-4942 CompuServe Number 75026,1331 10410 Markison Road
Telex: 883442 each subsequent line. This time delay can be
changed by modifying the parameter in the call to 'Delay (}’
near the end of the function 'redisplayO'. The truly fleet of
finger may delete this line all together. The display program and the data for all the structures defined in all the include files requires about 100 Kbytes of RAM. Ft is hard to spare this kind of RAM in an Amiga with less than a megabyte of RAM. There is little chance that anyone will actually need ALL the structures available at a time. One way to proceed would be to use select to create several data files and read in only the ones you are currently using. The display program could be extended in several ways. The most obvious would be to include a way to read in new data files. A way to expunge menu items, free the memory they occupied and rebuild the menu strip would also be nice. A user who can not spare any RAM could modify the display program to keep only a data file offset in RAM and then 'seek ()' to this position in the file to find the data to display. 1 personally would rather use the RAM and avoid waiting for the floppy disk. I showed my new tool to my good friend Lew. He liked it, but is not going to use it yet. He is still trying to sell the eight-bitter he bought back in 7B. Once he dumps his old machine, he plans to get an Amiga. Lew has understood the value of good tools for some time now. AC} search (name) char 'name; r recursively search "name" for files 7 struct FilelnfoBlock *FIB, *AIlocMem (); int lock; char "subdir; if((FIB= AllocMem (sizeof (struct FilelnfoBlock), 0))==0) prints ("Can not allocate memory for FIB n"); return (O);) if ((lock = Lock (name, SHAREDLOCK)} == 0)(printff’Can not Lock %s n", name}; FreeMem (FIB, sizeof (struct FilelnfoBlock}); return 0);} if ((Examine (lock, FIB)) == 0) printffCan not Examine %s n", name); UnLock (lock); FreeMemfFIB, sizeof (struct FilelnfoBlock)); return (O);} if(FIB- fib_DirEntryType 0} prints ("%s (dir) n“, name); while (ExNext (lock, FIB)} subdir = (char*) malloc (stden (name)+ stden (&FIB- fib_Filename[0])+2); strepy (subdir, name); if (not_device (name)) strcat (subdir, V); strcat (subdir, &FIB- fib_Filename[0]); i1(FIB- fib_DirEntryType 0) search (subdir); eise prints ("%s n", subdir); read Jile (subdir);} f ree (subdir);} else prints ("%s n", name); read_file (name);) UnLock (lock); FreeMem (FIB, sizeof (struct FilelnfoBlock));} not_device (name) char name[]; * return TRUE if the last char is not a colon * int i, j; for (i = 0; name[i]; i++) ii (name[i] ==':') j=FALSE; else j = TRUE;} return (j); I C. Itoh 8510 (Prowriter) Printer Owners Introducing "Prodriver"
for Amiga Prodriver is a printer driver that allows the Amiga
to interface with C. Itoh printer models 8510S, B & SP. Q Gc* Prodriver supports;
- Bold, underline, proportional, & other S510 printer commands — Pica, Elite, & Fine — Full graphics capability (B&W, gray scales) Disk includes:
- Prodriver — Installation program & easy lo follow instructions Micro
Cybernetics Corporation Dealer P. O. Box 3126 inquiries Laurel, Maryland 20708 accepted "include
St.00 for shipping and handling AMIGA is a trademark of
Commodore Business Machines read_file (name) char 'name; T find
all the struct definitions in the named file and write them
on the users output file * FILE *f in; char buf 1 [256],
buf2[256], buf3[256]; int Foundl, Found2, count, q, i, j;
if((fin = fopen (name, "r")) == NULL) prints ("Unable to read
%s n", name); return (O);} while ((fgets (&buf 1 [0], 256, fin))!=NULL) if (strncmp (&bu11[0], "struct", 6) == 0)(Foundl =
Found2 = FALSE; if (stcpm (&buf 1 [0]," ”, &q)) count = 1;
Foundl — TRUE;) else if ((fgets (&buf2[0], 256, fin))!=
NULL) if stcpm (&buf2[0]," ", &q)) count = 1; Found2 = TRUE;
} buf3[j] = buf 1 [i]; buf3[j] = ‘-O'; fprintf foul,"!%s n",
&buf3[0]); fprintf (foul,"%s n", name); fprintf (foul,"%s",&buf
1 [0]);} rf (FouncJ2) fprintf (foul,"%s",&buf2[0]);
while (Found1 |] Found2) if ((fgets (&buf1[0], 256, fin))!=
NULL) fprintf (foul,"%s",&buf1 [0]); else fdose (fin);
return (O);} rf (stcpm (&buf1[0],&q)) count++;
if (stcpm (&buf1[0],&q)) if (-count == 0) Foundl = Found2 =
FALSE; 1}} fdose (fin);} rf (Found1 j| Found2)[for (i = 6;lisalpha bu!1[i]); i++); for (j = 0; isalpha (bu!1[i]); i++,
j++) DISPLAY. C Copyright Daniel D. Kary 1986 Standard Listing
* ffinciude exec types. h include exec tasks. h include
exeo'libraries. h include exec devices. h include
graphics copper. h ffinciude graphics display. h ffinciude
graphics text. h ffinciude graphics view. h ffinciude
graphics gels. h include graphics reglons. h ffinciude
hardware blit. h include intuition inturtion. h ffinciude
intuition intuitionbase. h ffinciude stdio. h ffinciude
libraries dos. h ffinciude workbench workbench. h I*
Resource Flag definitions * define FJNTUITION 0x000001
define F_GRAPHICS 0x000002 ffdefine F_Write_PORT 0x000004
ffdefine F_WRiTEJ4SG 0x000008 define F_WINDOW 0x000010
define F_CONSOLE 0x000020 r Menu definitions 7 ffdefine
MENU_PROJECT 0 ffdefine ITEM_HEIGHT 10 r for the PROJECT Menu
...7 ffdefine PROJECT_TOP 0 ffdefine PROJECT_BOTTOM 1 ffdefine
PROJECTJJP 2 ffdefine PROJECT_DOWN 3 ffdefine PROJECTJ VIDTH
120 ffdefine PROJECT_BAR 75 r for the DATA Menu’s... 7
ffdefine DATA_BAR 40 ffdefine DATAL VIDTH 95 define DATAJ.EFT
(-60) ffdefine MAXHEADINGS 14 ffdefine MAXLINES 18 ffdefine
MAXITEMS (MAXHEADINGS * MAXLINES) struct Text * linked list
of lines of text 7 struct Texl'next; char 'line;}; struct
X_Menultem r expanded Menultem, Includes a pointer to user
data 7 struct X_Menultem ‘Nextltem; SHORT LeftEdge, TopEdge;
SHORT Width, Height: USHORT Flags; LONG MutEx; APTR ItemFill;
APTR Still; BYTE Command; struct Menultem‘Subitem; USHORT
Select; struct Text‘text;}; struct IntuiText ProjectText =
0,1, JAM 1, 'front, back, mode 7 1,1, * left, top 7 NULL,
*font7 "RE-DISPLAY", NULL, r next 7 struct Menultem Project =
I NULL, next * 0, ITEM_HE! GHT * 0, * select box left, top
* PROJECTJVIDTH, * select box width 7 ITEM_HEIGHT, * select
box height 7 ITEMTEXT | COMMSEQ | ITEMENABLED | HIGHCOMP, T
flags* 0, r mutual exclude 7 (APTRj&ProjectText, * text 7
NULL, r select image 7 ’R’, r command 7 NULL, ‘subitem*
NULL, r next select * }; struct Menu MainMenu = NULL,
‘next menu 7 5,0, r select left, top 7 75,10, * select
width, height * MENUENABLED. ‘flags* "Project", r text *
Project, ‘first item 7 0,0,0,0, r mystery variables 7 struct
NewWindow nw =! 0,0, "left, top 7 640,200, r width, height * — 1, — 1, T detail pen, block pen 7 CLOSEWINDOW | MOUSEBUTTONS |
MENUPICK, ’ IDCMP Flags 7 WINDOWDEPTH | WINDOWSIZING |
WINDOWDRAG | ACTIVATE | SMART„REFRESH j WINDOWCLOSE,
’gadgetflags 7 NULL, r user gadgets 7 NULL, ‘usercheck 7
"Structure Display", "title* NULL, * screen* NULL, r super
bitmap’ 100,45, r min width, min height 7 640,200, r max
width, max height 7 WBENCHSCREEN * screen type 7 struct
Xmenultem X_MenuTemplate = NULL, ‘next’ DATAJ.EFT, 0, *
left, top * DATA_WIDTH, ITEMJHEIGHT, width, height *
1TEMTEXT | ITEMENABLED | HIGHCOMP, 'flags 7 0, NULL, NULL, A
MutEx, Fills* ’jNULL, * Command, subitem * NULL, NULL *
Next, Text List * struct Menu MenuTemplate = i NULL, 'next'
0,0, * left, top * DATA BAR, ITEM_HEIGHT, * width, height *
MENUENABLED, -flags’ NULL, NULL, * text, first item *
0,0,0,0 * mystery variables * extern struct [OStdReq
’CreateStdlOQ; extern struct MsgPort ’CreatePortQ; struct
Window *w; struct IntuiMessage'message; struct lOStdReq
*WriteMsg; struct MsgPort ‘WritePort: struct Text *current_text
= NULL; struct X_Menultem ‘head =NULL; struct X_Menultem ‘temp
= NULL; struct Text 'first = NULL; struct Texl *1 =NULL; int
Items = 0: ULONG GfxBase; ULONG IntuitionBase; Int cur resource
= NULL; main (argo, argv) int argo; char*argv[]; (int i, class,
code; struct Xmenuitem *p; If (argo 2)(prints ("USAGE;
%stite (s) n", argv[0]); exit (1); 1 it ((GfxBase =
OpenLibraryfgraphics. Library", 0))== NULL) abortfCan't open
graphics, library"); cur_resource]= F_Graphics;
if ((intuitionBase = OpenLibrary ("intuition. Library", 0)) ==
NULL) abort ("Can't open intuition. library"); cur_resource [=
F_Intuition; if ((WritePort = CreatePortfcon. Write”, 0)) == 0)
abortfCan't create console write port"); cur resource l=F WRITE
PORT: Conversation With A Computer (It’s a lot of fun, a brain
teaser and a programming guide too!) "Very highly recommended by me is Conversation With A Computer, from Jenday Software, a set of games and conversation written in Amiga Basic, and shipped with the source code provided. It is entertaining, amusing, thought provoking, and just plain fun. If you have any interest in programming in BASIC on the Amiga, this is a must have for the examples!' MATTHEW LEEDS. Commodore Microcomputers This program really shows off Amiga's talents: lots of color graphics, mouse routines, voice synthesis, sound and animation. The 2,000 lines of Amiga Basic can be listed to screen or printer. The documentation describes in detail, module by module, how it all works. There is a coded example of virtually every one of Amiga Basic's powerful features. You’ll be challenged to three mind games. Memory Test will drive you to drink. Battle of Numbers and Pegboard are two of the most elegant logic games of all time. It's your brain agaiast Amiga's silicon! The program is professionally packaged with comprehensive typeset documentation. It requires £ Q 512K. It is not copy protected. Now includes an introduction to the C language. (714) 636-3378 JENDAY SOFTWARE RO. Box 4313 Garden Grove, CA
92642 Amiga Project Programming Journal for the Amiga A
no-nonsense journal dedicated to programming for the Amiga,
on the Amiga. Monthly columns written by experts covering Forth, C, assembly, Modula-2, Pascal, and more. Help and advice for those of you who want to REALLY program your Amiga. No HYPE, No Gee-Wiz!!!! $ 24.00 for 12 informative issues.... Send your check or money order to Amiga Project P. O.Box 285 Kent, OH. 44240 216-673-0185 Dealers, Advertisers,
Call for current pricing info... if ((WriteMsg =
CreateStdlO(WritePort)) == 0) abortfCan't create console write
message"); cur_resource |= F_WRITE_MSG; if((w = (struct Window
*) OpenWindow (&nw)) == NULL) abortfCan't open new window");
cur_resource |= F_WINDOW; WriteMsg- io_Data = (APTR) w;
WriteMsg- io_Length = sizeof (*w);
if ((OpenDevice ("console.device", 0, WriteMsg, 0))!= 0)
abortfCan't open console"); cur_resource]= F_CONSOLE;
PutStr (WriteMsg," 033[0 p“); * turn the cursor off V
PutStr (WriteMsg, "Reading Data File (s), Please WaitAn"); for (i
= 1; i argo; i++) read_file (argv[i]); build_menu ();
PutChar (WriteMsg, 0x0c); f clear the screen * SetMenuStrip (w,
&MainMenu); while (f) Wait (-1); while (message = (struct
IntuiMessage *) GetMsg (w- UserPort)) class = message- Class;
code = message- Code; ReplyMsg (message); if (class ==
CLOSEWINDOW)(abortfBye!");} if (class == MENUPICK) switch
MENUNUM(code) case NOMENU: break; case MENU_PROJECT:
redisplayO; break; default: p = (struct X_Menultem *)
ItemAddressf&MainMenu, code); currentjext = p- text;
redisplayO; break;}}} I} abort (s) char *s; if
(cur_resource & F_CONSOLE) CioseDevice (WriteMsg); if
(cur_resource & F_WINDOW) ClearMenuStrip (w); CloseWindow (w);
} if (cur_resource & F_WRITE_MSG) DeleteStdlO(WriteMsg); if
(cur_resource & F_WRlTE„PORT) DeletePort (WritePorf); if
(cur_resource & F_GRAPHICS) CloseLibrary (GfxBase); if
(cur_resource & FJNTUITION) CloseLibrary (intuitionBase);
prints ("%s n", s); exit (0); redisplayO f int i, class, code;
struct Text't; i = 0; t = current_text; PutChar (WriteMsg,
0x0c); clear the screen ’ while (t) if (message = (struct
IntuiMessage *) GetMsg (w- UserPort))(class = message- Class;
code = message- Code; ReplyMsg (message); if (class ==
MOUSEBUTTONS) if (code == SELECTDOWN) return (O);)
PutStr (WriteMsg, t- line); t = t- next; if(i++ 16) Delay (3);
} read_file (s) char‘s; I FILE *fp; char bui[256]; struct
IntuiText ‘it; if((fp = fopen (s, V)) == NULL)
sprints (&buf[0],"Unable to read %s jT, s); PutStr (WriteMsg,
&buf[0]); Delay (120); return (O);} while ((fgets (&buf[Oj, 256,
fp})!= NULL}(if (buf[0] =='!') buf[(stden (&buf[0]) — 1)] =
* 0'; it (items == MAXITEMS) sprints (&buf[0], "MAXITEMS
exceeded in %s r n”, s); PutStr WriteMsg, &buf[0]);
fdose (fp); Delay (120); return (O);} items++; temp = (struct
X_Menultem *) myaIioc (sizeof (struct X_Menultem}); ‘temp =
X_MenuTemplate; 1emp- ltemFill = (APTR) myailoc (sizeof (struct
IntuiText)); it = (struct IntuiText') temp- ItemFill; ‘it =
ProjectText; it- IText = (UBYTE ’) myalloc (12); first = NULL;
strncpy (it- IText, &buf[1], 11); insert (temp);) else
if (temp) t = (struct Text') myalloc (sizeof (struct Text));
t- line = (char’) myalloc (stden (&buf[0])+1); strepy (t- line,
&buf[0]); t- next = NULL; if (first) first- next = t; else
temp- text = t; first = t;}} fdose (fp); temp = NULL; first
= NULL; ADFO AMIGA DISK FILE ORGANIZER Having trouble finding
that file somewhere in your stack of floppys? Can't find all
the copies of a particular file? ADFO maintains a database of the directories disknames and filenames from your collection of disks. Fast response inquiries return location and last update information. Printer interface. Uses CLI or Workbench. 512K ram and 2 drives recommended $ 59.95 Include S3.50 S&H Mastercard Visa Accepted Sorry, No COD Calif. Residents Add 6V2° d Sales Tax 3386 Floyd Los Angeles, CA 90068 (213) 851-4868 Order phone 1 800 621-0849 Ext. 494} bmid_menu ()
int i, j, headings, items; struct Menu ‘m; struct
IntuiText't; if (Items = MAXHEADINGS) headings = Hems;
items = 1;} else headings = MAXHEADINGS; items =
items (MAXHEADINGS — 1);} m = &MairtMenu; for (i = 0; i
headings; i++) if (head)(m- NextMenu = (struct Menu *)
myalloc (sizeof (struct Menu)); m = m- NextMenu; ”m =
MenuTemplate; m- LeftEdge = PROJECT_BAR + (DATA_BAR ’ i);
m- MenuName = (BYTE *} myalloc (4); m- Firstltem = (struct
Menultem '} head; t = (struct IntuiText *) head- ltemFill;
strncpy (m- MenuName, t- IText, 3); a AMIGA 256K CARD eh
Only $ 99.00 1 YEAR WARRANTY AMJGi GIVES you A CREATIVE
edge. C7C MICHIGAN SOFTWARE [J DISTRIBUTORS INC. 433 S CAAN3 RIVER ‘NOVI, MICHIGAN 44CS0 TELEPHONE (313) 348-1477 EL_ else return (O); if (i == (headings -1)) items = MAXLINES: for (j = 0; j items; j++) head- TopEdge =! TEM_HEIGHT' temp= head; head = head- Nextitem; if (head == NULL) return 0); if (j == (items -1)) temp- Nextltem = NULL;! Insert (p) struct X_Menultem 'p; struct X_Menultem *t1, "t2; struct intuiText *s1, *s2; s1 = (struct IntuiText") p- ltemFiII; if (head) t1 = head; 12 = NULL; while (t1) s2 = (struct IntuiText *) t1 — ltemFill; if ((strcmp (s1- IText, s2- IText)) = 0) p- Nextltem = t1; if (t2 == NULL) head = p; else t2- Nextltem = p; return (O);} t2 =t1; t1 = t1- Nextttem;) t2- Nextitem = p;} else head = p;) PutStr (r, s) struct lOStdReq *r; char ‘s; (r~ io_Command = CMD_WRITE; r- io_Data = (APTR) s; r- io_Length =-1; DolO(r); return (0);} PutCharfr, c) struct lOStdReq *r; char c; r- io__Command = CMD_WRITE; r- io_Data = (APTR) &c; r- io_Length = 1; DolO(r); return (O); myalloc (n) int n; (int i; i = malloc (n); if (i == 0) abort ("lnsufficient Memory" return (i);) — AC-every Amiga needs a good club. Amiga Talk BBS Club
Founder of Arizona's FIRST Totaly Amiga Oriented BBS 24 hour
300 1200 Baud 1-602- 935-6469 MAKE IT BECAUSE YOU’RE GOING TO
BUY ONLY ONE DISK BACKUP UTILITY FOR YOUR JmsmL JmmWi IS
EVERYTHING YOU EXPECT Marauder works on any standard Amiga with
256K of memory and one disk drive, Marauder backs up most
copy-protected software tities. Marauder's user interface is clear-cut, easy to understand, and easy to use. Marauder's manual is written in plain English without confusing technical terms. Marauder insures that your valuable software investment will be protected against theft, loss and accidental erasure. AmWEL IS EVERYTHING YOU NEED Marauder takes idvanlage of Amiga's optional external disk drive and extra RAM if you have them. Maurauder. Itself, is not copy protected in any way Marauder uses Amiga's advanced graphics and processing power to its fullest advantage. Marauder automatically formats your backup disk while copying. Many complicated protection schemes are easily handled by Marauder's parameter-entry mode two numbers is all it takes. Current parameters for all titles will be available FREE ro registered users at any time. BEST OF ALL is AVAILABLE NOW!!! You can get Marauder at the SPECIAL INTRODUCTORY PRICE OF m ONLY $ 39.95 os call now (215) 546-1533 (Dealer Inquiries Welcome) (SDISCOVERY SOFTWARE 262 South 15th Street • Suite 300 ¦ Philadelphia. PA 19102-3601 few PRESENTS INFO BASE Nowaviiltbla for the Amiga! INFO BASE Is a powerful, yel easy to use Data Base program, designed lor tho Amiga to store and retrieve Information in an organized manner. Each record can contain up to 200 Folds of information. You create, design, and edit custom print forms. Each print lorm. You design, can create a different type of printout such as mailing labels, multi column reports. Invoices, lists, etc.... In addrtion, text can be Incorporated into the design of print lorms. Allowing both text and field information to be printed on the same line. INFO BASE FEATURES • DESIGN DATA BASES, ALLOWING UP TO 200 FIELDS OF INFORMATION FOR
EACH RECORD • SORT RECORDS BY ANY FIELD ¦SELECT STARTING AND ENDING SORT
INFORMATION • PRINT OUTPUT TO PRINTER OR SCREEN ¦PRINT MULTIPLE COPIES • CREATE, DESIGN, AND EDIT CUSTOM PRINT FORMS ‘COMBINE TEXT INTO
THE DESIGN OF PRINT FORMS • ADD RECORDS AND DELETE RECORDS ¦BROWSETHROUGH RECORDS • SEARCH FOR SPECIFIC RECORDS INFO BASE Is available NOWI J45.00
(US) Endose Check. Money Order, or Cashiers Chock. Phono orders wil be shipped C.O.D. and must add S3.00 S 1 H. Please aikiw 10-14 days lor dolwory. HstvssiII Box, 725 Kenmore, NY 14217 (71G) 877-3510 Dealer Inquiries Welcome INFO BASE requires an Amiga with 512K RAW and at least one disk drrvB. Amazing Computing™ Index of Advertisers Adept Software 44 Advanced System Design Group 47 Amiga Project 60 Amiga Talk BBS Club 62 Anakin Research Inc. 13 Byte by Byte CIV Cardinal Software 45 Comspec Communications Inc. 10 Digitek 40 Discovery Software 2,63 Eastern Telecom Inc. 64 Felsina Software 51 Futureware™Fonts 41 Gander Software, Ltd. 12 Golden Hawk Technology 32 Harvsoft 64 Interactive Analytic Node 26,27 Jen Day Software 59 Lakewood Associates 52 Lattice, Inc 5 Lifestream 7 The Memory Location 14 Metadigm, Inc. 2 Michigan Software Distributors 62 Micro Cybernetics Corporation 57 Microillusions 48 MicroLimits, Inc. 25 Micro-Systems Software, Inc. 34 Mimetics Corporation cm Nikol & Company 24 PiM Publications Inc.
CII. 2 Proffesional Network Services Corp. 55 The Quality Cottage
35 Ronald Peterson 54 SoftWood Company 42 TDI Software 56
Tigress 30 Westcom Industries 61 Zoxso 55 It’s Finally
Here!! A Database Management System for the AMIGA with all
the EXTRAS: • EXTRA Easy to use. No new' language to learn, just look at the
pictures. • EXTRA Flexibility, with pull down menus, automatic filing and
field sizing. • EXTRA On line help. Just press for command information. • EXTRA LOW introductory price... JUST $ 49.99!!! Eastern Telecom Inc. 9514 Brimton Drive Orlando, FL 32817 We’ve got ALL the EXTRAS for you. Order NOW! (305) 657-4355 L. ¦ Power t Play for 'the AMIGA. Sound Digitizer * y * MIDI Interface Available From Your AMIGA Dealer. SoundScape Pro MIDI Studio AMIGA MIDI Interface The most powerful performance and recording software on any computer. The recording studio-like environment provides complete facilities for routing, recording, editing, transposition and playback of any musical performance. As new modules are introduced, you can "install1 them at any time. Music can be performed by the internal sampled sound synthesizer, or with any external MIDI equipment. Record from the QWERTY keyboard or any external MIDI source, including keyboards, guitar and pitch followers. Synchronize with, or provide MIDI clock information, including MIDI Song Pointers. The complete flexibility of the system makes your imagination the only limit to its power. Number of notes and tracks determined by available memory MIDI patch panel links program modules Install new modules at any time Up to 16 internal instruments at one time Complete sample system with editing, looping, ADSR envelopes, velocity sensitivity, and pitchbend. • Up to 160 sampled sounds al one time • Save and load IFF note and sample files • Quantize to any multiple of MIDI clock beats • "Match" mode eases learning of a song • Complete MIDI sequence and song editing • Route merge, split, or bounce any track to any other. Completely compatible with the standard Amiga MIDI interface MIDI In. Out, and Thru connectors Plugs into the serial port High quality Highest possible fidelity from the Amiga Stereo Or mono Variable sample rates Mike and line inputs Digitally controlled volume on each channel IFF Sample File compatible Software included for sampling, editing, and MIDI performance functions With the SoundScape Sound Digitizer, any sound may be sampled and modified by the Amiga, including voice. IFF File compatibility enables these samples to be used as musical instruments, sound effects, or speech with any IFF compatible music or animation system. $ 149.00 $ 49.00 SoundScape Audio Digitizer $ 99,00 Amiga is a trade mark of Commodore Business Machines Prices and availability subject to change without notice...the professional software source!! P. O. Box 60238 Sta. A, Palo Alto, CA 94306 (408) 741-0117 _Tj
UNLEASH THE AWESOME POWER OF THE AMIGA! Llic PAI is j turnkey expansion chassis that provides (he mol powerful ami cost effective hardware growth path for your AMIGA Feature• High speed direct Amiga DMA controller and hard disk • Five DMA expansion slots ¦ 12 Meg Ram with Clock'Galendar ¦
Room tor multiple storage retrieval devices • Fils conveniently on top of your Amiga ¦ 100% compatible with
current and future Amigas • 1 to 8 megabyte rant card options • Optional pa s through bus connector for further expansion • Optional prototyping card • Future pn ducts current's under development CALL TODAY AND
NLEASII I I (H FT'RY OF Y()l K AMIGA THE ELECTRONIC LIBRARY AT
YOUR FINGERTIPS III'INFOMINDER INFOMINDER is an intelligent
information resource that provides the user with instantaneous
access to reference information stored within the Amiga
personal computer. • Fully supports multitasking • Fast access hv menu or outline ¦ Text canabiliiies include;
Ju-tilictUion. Vi rd Wrap. Multiple character fonts sty1es ¦
information content completely user definable ¦ Supports
comhinarion of TEXT and IFF GRAPHICS • Programmatic interface for contest sensitive help • Narration and printing of information • Expand and shrink topics INFOMINDER will revolutionize the way
we access textual and graphical information Stop searching and
START using the information around you Get INFOMINDER today
from BYTE by BYTE. THE WORD PROCESSOR AND FORM LETTER GENERATOR WRITE HAND is a general word processor and form letter generator that gives you the most features (i r v. lurdollars. Developed to meet the special needs of small business. WRITE HAND Ls easy to learn and easy u i use WRITE 1LANI) challenges you to compare the ft tllowing feat tires dollar-for-dollar, feature-for-feature to those of other word processors on the market today. * Extensive on-line HELP service • Reviews and merges files while
you edit * Fot nt letter generator 1 Moves blocks of text and figures of
any size • Powerful editing capabilities • provides word wrap, bolding and
underlining • Formats documents while you edit Make WRITE HAND the tool that
moves v mr business mu the productive world of electronic
word pr,e-mg sugge-ted Retail Price: $ 50.00 e 3736 Bee Cave
Road. Suite 3 Austin, TX 78746 ¦ (512) 328-2985 BYTE 60 BYTE 1
Ai count-Receivable FINANCL-U. PLUS is adaptable. You t
ustomizeeach company according it1 as size and bookkeeping
needs.. An easy to-read, easy-to learn users guide provides comprehensive instruct ions for setting up yi tut own box As. Plait: — English menus art' the system "roadmaps" for bt itutl it nov ice and ter the more experienced. Because FIN. ANCLAI. PI.I 'S isa totally integrated accounting system, no longer must you purchase individual packages, store entries on separate diskettes, or run confusing transfer programs to obtain complete integration, suggested Retail Price: $ 295,110

Click image to download PDF

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


Thanks for you help to extend Amigaland.com !
frdanlenfideelhuitjanoplptroruessvtr

Connexion

Pub+

52.8% 
11.6% 
4.3% 
3.5% 
3.2% 
2.3% 
2% 
1.6% 
1% 
0.9% 

Today: 66
Yesterday: 75
This Week: 510
Last Week: 602
This Month: 2287
Last Month: 2920
Total: 71897

Information cookies

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

There are several types of cookies:

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

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

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

Visitors

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