SEPTEMBER 1977 VOLUME 2, Number 9 $2.00 in USA the small systems journal )^-« SWTPC announces first dual minifloppy kit under $1 ,000 ^ I'i*^.^:*.-^. I ^.y h .•*■« \'\ i "' pip o o Now SWTPC offers complete best- buy computer system with $995 dual minifloppy, $500 video terminal/ monitor, $395 4K computer. $995 MF-68 Dual Minifloppy You need dual drives to get full benefits from a minifloppy. So we waited to offer a floppy until we could give you a dependa- ble dual system at thie right price. The MF-68 is a complete top-quality minifloppy for your SWTPC Computer The kit has controller, chassis, cover, power supply cables, assembly instructions, two highly reliable Shugart drives, and a diskette with the Floppy Disk Operating System (FDOS) and disk BASIC. (A floppy is no better than its operating system, and the MF-68 has one of the best available.) An optional $850 MF-6X kit expands the system to four drives. $500 Terminal/Monitor The CT-64 terminal kit offers these premium features: 64-character lines, upper/lower case letters, switchable con- trol character printing, word highlighting, full cursor control, 1 10-1200 Baud serial interface, and many others. Separately the CT-64 is $325, the 12 MHz CT-VM monitor $175. Enclosed is: $1,990 for the full system shown above (MF-68 Minifloppy, CT-64 Terminal with CT-VM Monitor). $995 for the Dual Minifloppy $325 for the CT-64 Terminal $175 for the CT-VM Monitor $395 for the 4K 6800 Computer Name- City $250 for the PR-40 Line Printer $79.50 for AC-30 Cassette Interface Additional 4K memory boards at $100 Additional 8K memory boards at $250 Or BAG # Exp. Date_ _ Or MC # Exp. Date_ _ Address - -State _Zip_ $395 4K 6800 Computer The SWTPC 6800 comes complete with 4K memory serial interface, power supply chassis, famous Motorola MIKBUG® mini-operating system in read-only memory (ROM), and the most complete documentation with any computer kit. Our growing software library includes 4K and 8K BASIC (cassettes $4.95 and $9.95; paper tape $10.00 and $20.00). Extra memory, $100/4K or $250/8K. Other SWTPC peripherals include $250 PR-40 Alphanumeric Line Printer (40 characters/line, 5x7 dot matrix, 75 line/minute speed, compatible with our 6800 computer and MITS/IMSAI); $79.50 AC-30 Cassette Interface System (writes/ reads Kansas City standard tapes, controls two recorders, usable with other computers); and other peripherals now and to come. F^^^TT^ Southwest Technical Products Corp. 219 W. Rhapsody San Antonio, Texas 78216 London: Southwest Technical Products Co., Ltd. Tokyo: Southwest Technical Products Corp./Japan The new 16K RAM card that turns your computer into a working giant Available now — store/factory Here's the industry's leading 16K RAM card. It has two outstanding features that make it important to you: (1) It's fast: It operates up to 4 MHz with no wait states. That's im- portant because it lets you run pro- grams on your Cromemco Z-1 and Z-2 computers in about half the time required by other systems. Even if your present computer is not 4 MHz fast, this new Modell6KZ RAM equips you for the time when you'll need anfl want higher computer speed. (2) It has Cromemco's Bank-Select feature. Bank-Select lets you expand memory far beyond 64K bytes. Not just beyond 64K but far beyond — up to 512K bytes if you wish. Again, with Cromemco you get present outstand- ing performance plus obsolescence protection. Bank-Select lets you organize memory into 8 banks of 64K each. The active bank is software-selected. A useful giant Whatever your S-100 bus com- puter— -Cromemco, Altair 8800 or IMSAl 8080 ■ — you can have enor- mous memory with the new Model TT TT ir ir TT s™o ;iy 15KZ. You can run the large programs and files that make computers truly valuable — that take them out of the toy class and make them useful, pro- ducing units. With Bank-Select you can even operate an S-100 bus computer as a time-share computer with up to 8 stations. A given memory bank can be accessed only by one station, so there is full confidentiality. Advanced Cromemco engineering Designing a 16K RAM card to operate at 4 MHz is a significant engi- neering accomplishment. That's why Cromemco with our strong engineer- ing staff is the only manufacturer to offer such a card. And notice that this advanced card is available and ready for delivery — at your store or from the factory. 16K RAM memory kit (Model 16KZ-K) $495. 16K RAM memory assembled, tested, and burned in for 160 hours (Model 16KZ-W) . . $795. Mastercharge and BankAmericard accepted with signed order. Show complete card number and expiration date. California users add 6% or 6'/!% sales tax as applicable. Q Cromemco incorporated Specialists In computers and peripherals 2400 CHARLESTON RD., MOUNTAIN VIEW, CA 94043 • (415) 964-7400 Circle 201 on inquiry card. Meet the most powerful jjlC system available for dedicated work. Yet if s only $595: Here's the muscle you've been telling us you wanted: a powerful Cromemco microcomputer in a style and price range ideal for your dedicated computer jobs — ideal for industrial, business, instrumentation and similar applica- tions. It's the new Cromemco Z-2 Computer System. Here's some of what you get In the Z-2 for only $595: • The industry's fastest /tP board (Cromemco's highly regarded 4 MHz, 250-nanosecond cycle time board). • The power and convenience of the well-known Z-80 /xP. • A power supply you won't believe ( + 8V @ 30A, -M8V and —18V @ 15A — ample power for addi- tional peripherals such as floppy disk drives). • A full-length shielded motherboard with 21 card slots. • Power-on-jump circuitry to begin automatic program execution when power is turned on. • S-100 bus. • Standard rack-mount style construction. • All-metal chassis and dust case. • 110- or 220-volt operation. DEDICATED APPLICATIONS The new Z-2 is specifically designed as a powerful but economical dedicated computer for systems work. Notice that the front panel is entirely free of controls or switches of any kind. That makes the Z-2 vir- tually tamper-proof. No accidental program changes or surprise mem- ory erasures. FASTEST, MOST POWERFUL fiC Cromemco's microcom- puters are the fastest and most powerful available. They use the Z-80 mi- croprocessor which is Shown with optional bench cabinet widely regarded as the standard of the future. So you're in the technical fore with the Z-2. BROAD SOFTWARE/PERIPHERALS SUPPORT Since the Z-2 uses the Z-80, your present 8080 soft- ware can be used with the Z-2. Also, Cromemco offers broad software support including a monitor, assembler, and a BASIC interpreter. The Z-2 uses the S-100 bus which is supported by the peripherals of dozens of manufacturers. Naturally, all Cromemco peripherals such as our 7-channel A/D and D/A converter, our well-known BYTESAVER with its built-in PROM programmer, our color graphics interface, etc., will also plug into the S-100 bus. LOW, LOW PRICE You'll be impressed with the Z-2's low price, technical excellence and quality. So see it right away at your computer store — or order directly from the factory. Z-2 COMPUTER SYSTEM KIT (MODEL Z-2K) (includes 4 MHz /xP card, full-length 21-card-slot motherboard, power supply, one card socket and card-guide set, and front panel; for rack mounting) $595. Z-2 COMPUTER SYSTEM ASSEMBLED (MODEL Z-2W) (includes the above as well as all 21 sockets and card guides and a cooling fan; for rack mounting ) . . . $995. •kit price Cromemco "gpeclaiisls 'ir>" corntsqlers arid partpheyiits 432CHARI ^'■=T>-^^.l nil M.iiihjTniu uiFU; TA 94043 • (415)964-7400 -^ In fche Queue Ei^TE SEPTEMBER 1977 Volume 2 Number 9 12 30 62 84 126 26 44 54 102 112 122 190 4 6 8 25 50 59 97 Foreground SCORTOS: IMPLEMENTATION OF A MUSIC LANGUAGE Software, Music— Taylor CONTROL THE WORLD! (OR AT LEAST A FEW ANALOG POINTS) Peripheral Interfaces— Ciarcia TECHNIQUES FOR COMPUTER PERFORMANCES OF MUSIC Computer Music— Chamberlin TUNE IN WITH SOME CHIPS Applications— Sierad AN APL INTERPRETER FOR MICROCOMPUTERS, Part 2 Interpreter Design— Wimble Background A NEW DRESS FOR KIM Design— Atkins EXPANDING THE TINY ASSEMBLER Software Design— Emmerichs ONE-SIDED VIEW OF WIRE WRAP SOCKETS Hardware— Ramp 11 THE NOVAL 760 System Description— Hauck-Nash NOTES ON INTERFACING PLAYER PIANOS Music Peripherals— Maimers NOTES ON ANATOMY: THE PIANO'S REPRODUCTIVE SYSTEM Software History-Morgan WALSH FUNCTIONS: A DIGITAL FOURIER SERIES Interface Technology— Jacoby Nucleus In this BYTE Reflections on Entry into Our Third Year Letters Alphanumeric Music Review: Heuristics Speech Lab Technical Forum: Personal Computer Network Adding New Transcendentals to Limited BASICs On Finite State Machines and Their Uses Comments on Floating Point Representation Ask BYTE 110,210, 216 What's New? 166, 200 BYTE's Bits 172 BYTE's Bugs 186 Clubs, Newsletters 202 Book Reviews 222 Classified Ads 224 BOMB 224 Reader Service BYTE is published monthly by BYTE Publications Inc, 70 Main St, Peterborough NH 03458. Address ail mail except sub- scriptions to above address; phone (603) 924-7217. Address all editoriai correspondence to the editor at the above address. Unacceptable manuscripts will be returned if accompanied by sufficient first class postage. Not responsible for lost manu- scripts or photos. Opinions expressed by the authors are not necessarily those of BYTE. Address all subscriptions, change of address, Form 3579, and fulfillment complaints to BYTE Subscriptions, PO Box 361, Arlington MA 02174; phone (6171 646-4329. Second class postage paid at Peterborough NH 03458 and at additional mailing offices— USPS Publication No. 102410. Subscriptions are $1 2 for one year, $22 for two years, and $32 for three years in the USA and its possessions. Add $5.50 per year for subscriptions to Canada and Mexico. $25 for a one year subscription by surface mail worldwide. Air deli- very to selected areas at additional rates available upon request. S25 for a one year subscription by air delivery to Europe, or DM 60,— for a one year subscription through our European distributor in Darmstadt, West Germany. Single copy price is 32.00 in the USA and its possessions, S2.40 in Canada and Mexico, and $3.50 in Europe or DM 8,— through our European dis- tributor in Darmstadt, West Germany, and $4.00 elsewhere. Foreign subcriptions and sales should be remitted in United States funds. Printed in United States of America. Entire contents copyright ©1977 by BYTE Publications Inc. All rights reserved. PUBLISHERS Virginia Pcschke (Manfred Pcschkc EDITOR INCHIEF Carl T Hclmcrs Jr PRODUCTION MANAGER Judith Havcy CIRCULATION MANAGER Gregory Spitzfaden ASSISTANT PUBLISHER Debra Boudrieau EDITOR Christopher P Morgan CO-OP EDITOR Scott Morrow PRODUCTION EDITORS Karen Gregory Nancy Sa(mon ADVERTISING Debra Boudrieau, Director Noreen Bardsley Virginia Pcschke EDITORIAL ASSISTANT Ingrid Nyiand PRODUCTION ASSISTANT Cheryl Hurd NEW PRODUCTS EDITOR Elizabeth Alnaugh DEALER SALES Ginnie F Boudrieau CLUBS, PAPERBYTES Peter Travisano TRAFFIC MANAGER EdmoncI C Kelly Jr ART Wai Chiu Li Ellen Shamonsky SPECIAL PRODUCTS Floyd W Rchling Medellin Slcohens David Wozmak EXECUTIVE SECRETARY Patricia Clark RECEPTIONIST Jacqueline Earnshaw DRAFTING Douglas Glen Stephen Kruse Lynn Malo Bill Morcllo Dorothy Shamonsky TYPOGRAPHY Custom Marketing Resources Inc Goodway Graphics PHOTOGRAPHY Ed Crablrce EDITORIAL CONSULTANT Daniel ("ylstra ASSOCIATES Waiter Banks Steve Ciarcia David Fylsira Portia Isaacson FOREIGN DISTRIBUTOR Pan Atlantic Computer Systems GmbH Frankfurter Str 78 D61 Darmstadt Wes! Germany (0 61 51) 29 29 23 ADVERTISING SALES REPRESENTATIVES National: Parker & Short 1 Lakeside Office Park Wakefield MA 01880 (617) 246-2293 Southern California: Buckley/Boris Associates Inc 912 South Barrington Suite 202 Los Angeles CA 90049 (213) 826-4621 Northern California: Jules E Thompson Inc Hearst Building Suite nil San Francisco CA 94103 (415) 362-8547 About the Cover The conceptual target of the cover painting for September was a theme of music and sound. Taking this theme, Robert Tinney implemented this cover, entitled "Breaking the Sound Barrier." It was inspired by the legend of opera star Enrico Caruso breaking a wine glass through sympathetic resonances with his voice. The sound barrier we're referring to, of course, is the physical barrier between a program and the real world, which is crossed by one of a number of musical and audio output devices and software presently on the market or about to come to the marketplace. ^m ^ n U- ^ ^ n P02 K2- T3/4 03 r4 G4 A8. F16 / 04 08. CB B16 02 F4 B4 / D8. E16 F4. GB / F E D C 03 B 02 C / P03 K2- T3/4 03 F2. A/ F4 F2A/ F2 4 / F2.A / F2 4 / In This Experimenting with music on your computer can be very rewarding. If you're looking for a streamlined way to input musical material into your system, look no further. Hal Taylor shows you how in SCORTOS: Imple- mentation of a Music Language. Who knows, with SCORTOS you could have your synthesized concerto for alpenhorn and orchestra up, running and debugged by next week. A naked microcomputer board is unprotected from a harsh environ- ment. In his article this month, R Travis Atkins turns couturier as he fashions external garb in the form of A New Dress for KIM. Steve Ciarcia returns this month with a combination of tutorial ideas and practical details so characteristic of his style. Read Steve's Control the World! (Or at Least a Few Analog Points) to review digital to analog con- version, and learn how BASIC can be used to compute and represent wave- forms through a converter using a scope as a display. A Tiny Assembler need not have tiny features, as Jack Emmerichs ex- plains in his article on Expanding the Tiny Assembler. Jack adds structured programming features and incremen- tal improvements to the Tiny Assem- bler design he described in April and May issues of BYTE this year. By reorganizing the symbol table to add the "begin" pseudo operation, "Tiny" takes on a number of "big" features while preserving practical operation as Version 3.1 in under 4 K bytes of memory. Looking for a very simple way to build a wire wrap board? Ira Rampil has an idea in A One-Sided View of Wire Wrap Sockets. Are you interested in making music with your computer? Hal Chamberlin's A Sampling of Techniques for Com- puter Performance of Music is one of the best ways to get acquainted with this fascinating field. The article will give you complete directions for creating 4 part harmony on your microprocessor for a very modest investment. Get out those 4 voice fugues that have been languishing in your music drawer and bring them to life! Did you ever want your computer to sing you a lullaby? Well, as Ted Sierad points out, it's not too hard to do so if you Tune In With Some Chips, using the circuit and software he de- scribes. The roster of "complete" computer systems for the amateur computing person expanded considerably with the introduction of the Noval 760. Turn to an account by designers Lane T Hauck and James D Nash, System Description: the Noval 760, for details of the philosophy and overall design behind this product. page 12 A double feature written by Carl Helmers and Chris Morgan of BYTE covers key details of an interesting musically oriented peripheral which can be added to the personal com- puter: acoustic pianos with pneumatic player actions. Notes on Anatomy: The Piano's Reproductive System gives global morphology of a Duo-Art upright reproducing piano. Notes on Interfacing Pneumatic Player Pianos covers some details of how to engineer a computer interface for the pneu- matic control lines using valve ele- ments manufactured for the pipe organ industry. With this issue, readers will note the continued progression of information on APL, and several articles intro- ducing the theme of music represen- tation and performance with com- puters. Readers can look forward to further information on these themes in future issues. APL is one of the most interesting high level languages around these days. If you want to continue learning what goes on in an APL interpreter, read part 2 of Mike Wimble's An APL Inter- preter for Microcomputers. Here Mike covers the expression evaluation sec- tions of the interpreter. Many people are familiar with use of orthogonal basis functions such as sines and cosines to compute arbitrary waveforms. But how many readers have heard of Walsh Functions: A Digital Fourier Series which forms arbitrary repetitive waveforms as weighted sums of digital waveforms? Read Benjamin F Jacoby's tutorial to find out a bit about these functions and their generation. Announcing the West Coast's largest Personal Computing Show. April 28, 29, and 30, 1 978 at California's brand new Long Beach Convention Center. This is a selling show with 1 80 booths (each draped, carpeted and with 500 watts of electricity). Three full days of conference sessions. There will be honne brew exhibits, exhibitors lounge, inquiry badge system, computerized registration, a newsroom, and a full blown advertising and promotional campaign to bring you thousands of qualified buyers. PE^SCOMP^TB I wouldn't miss it * for anything. ® Send me the show kit: Name;. .Title: Company: Address:- Zip Code:. . State: . Phone: Call: (714) 973-0880 Or mail this coupon: PERCOMP 78, 1833 E. 17 St., Suite 108, Santa Ana, CA 92701. Sign early, corner booths are limited. Circle 281 on inquiry card. BYTE's 0.02 Centennial Reflections on Entry into Our Third Year Articles Policy BYTL is continually seeking quality manuscripts written by individuals who ore applying personal systems, or who have linowledge which will prove useful to our readers. Manuscripts should have double spaced typewritten texts with wide margins. Numbering sequences should be maintained separately lor figures, tables, photos and listings. Figures and tables should be pro- vided on separate sheets of paper. Photos of technical subjects should be taken with uniform lighting, sharp focus and should be supplied in the form of clear glossy black and white or color prints (if you do not have access to quality photography, items to be photographed can be shipped to us in many cases). Computer listings sliould be supplied using the darkest ribbons possible on new (not recycled) blank white com- puter forms or bond paper. Where possible, we would like authors to supply a short statement about their background and experience. Articles which are accepted are typically acknowledged with a binder check 4 to 8 weeks after receipt. Honorariums for articles are based upon the technical quality and suitability for BYTE's readership and are typically $25 to $50 per typeset maga/.ine page. We recommend that authors record their name and address information redun- dantly on materials submitted, and that a return envelope with postage be supplied in the event the article is not accepted.^ By Carl Helmers The September 1977 BYTE marks the end of the second year of our publication's existence in the public eye, although actual work on the magazine began at the end of May 1975. Since that time, the phenomenon of personal computing has expanded con- siderably as more people become aware of it through mass media publications, radio and television shows, trade fairs such as the First West Coast Computer Faire and the National Computer Conference. Good sense says a peak must be reached in any new and ex- panding marketplace, but to date we have seen no signs of the traditional "shakeout" (intense competition such as that which occurred recently in the calculator and watch marketplaces). For whatever reasons, a few firms have fallen by the wayside, but the general trend still remains one of expan- sion and exploration, to the ultimate benefit of the user of personal computing products who is presented with new options and lower prices for older options. The "appliance" computer, a complete system presented in an assembled and tested package is on the threshold of its ultimate dominance in the general purpose personal computer field: from the high end, moving down in price, we find products like the Apple-ll and the Commodore PET 2001 machines; from the low end, moving up in function at the same price, we find the increasing versatility and capability of pro- grammable calculators such as the newly announced Texas Instruments SR-59 with its optional ROM software modules and expanded printing and magnetic card peri- pheral capabilities. And for the discrimi- Continued on page 95 6 RalediG Great Locations Now Open: 22634 Foothill Blvd. Hayvi/ard, CA 94542 (415] 538-8080 6840 La Cienega Blvd. Inglewood, CA 90302 (213) 776-8080 24001 Vic Fabriconte Mission Viejo, CA 92675 (714) 770-0131 4233 Convoy Street San Diego, CA 92111 (714) 560-9912 104 W. First Street Tustin, CA 92680 (714) 544-0542 50 East Rand Road Arlington Heights, IL 60004 (312) 255-6488 9511 No. Milv^/aukee Ave. Niles, IL 60648 (312) 967-1714 813-B Lyndon Lane Louisville, KY 40222 (502) 425-8308 16065 Frederick Rood Rockville, MD 20855 (301) 948-7676 2 De Hart Street Morristov^/n, NJ 07960 (201) 539-4077 1612 Niagara Falls Blvd. Buffalo, NY 14150 (716) 836-6511 225 Elmira Road Ithaca, NY 14850 (607) 277-4888 6439 Westheimer Road Houston, TX 77057 (713) 977-0909 Opening Soon: Huntsville, AL San Francisco, CA San Jose, CA Thousand Oaks, CA Detroit, Ml Nashua, NH Austin, TX Franchise Opportunities Available— Contact: E. E. Faber, President ComputerLand Corp. 1922 Republic Ave. San Leandro, CA 94577 (415) 895-9363 Circle 202 on inquiry card. Rated The Best Game in Town. Welcome to ComputerLand. An incredible adventure into the world of personal computers. A one-of-a-kind shopping experience. Each ComputerLand store presents everything you ever Vi/anted to knovi/ about computers. And then some. Take our Game Room, for starters. You'll find excitement for the Vi/hole family in our endless variety of challenging computer gomes. You con battle the Kiingons in an out-of-this-world game of StarTrek. Create an elec- tronic work of art with a computer controlled TV. Test your skill in a game of computerized hangman. You can even plot your biorhythm. But we're more than just fun and games Each ComputerLand store offers a knowledgeable and person- able staff of professionals And if your system breaks down, our in-store service department will get you back up and running. Right now! Great Selection. Your first stop at ComputerLand may well be your last stop. ComputerLand offers the finest quality and to serve you. Plus the greatest avail- able selection of micro components. Whether it's a data processing system for your business or a computer controlled sprinkler system for your home, you'll find whatever you need of ComputerLand. Read on. Genuine Service. We want to supply you with the one system that's right. Rather than a com- plete system that isn't. Or a limited system that is. That's why, at Com- puterLand, you deal with real professionals who are also real people. People who speak your language COBOL or FORTRAN. largest selec- tion of all the major brand names. Like Apple Computer, Cromemco, DEC, Diablo, Hazeltine, ICOM,IMSAI, LeorSiegler, National Semiconductor, North Star, Texas nstruments. Vector Graphics and more. Plus a complete inventory of tools, books and accessories. V(/hat's more, at ComputerLand, we deal in product. Not promises. Our inventory is on our own shelves. Rather than the manufacturer's. So you can take delivery on tomorrow's com- ponents today. .,__^^_^^^^^^^^_— ^^— — i^— — . in addition to BASIC, People, in short, who can offer both the novice and the old hand the some expert guidance in selecting the optimum system he or she needs. Yet, assisting in the purchase is only the beginning of ComputerLand's service. If the kit you bought requires a little more do-it-yourself than you yourself can do, we provide assembly assistance, If that complex program proves to be just that, we provide programming assistance. V\/hich means, simply put, that at ComputerLand, you get exactly what you want. Exactly when you wont it. Be Our Guest. Begin with the grand tour of our exhibit areas. "Test- drive" any of our individual systems. Then tell us your needs. We'll sit down and talk about the system that's rightforyou. It'saseasy osthat at ComputerLand. The great computer store. RATED G. Call or write for the address of the ComputerLand store nearest you. Franchise opportunities available. CompulerlciAcP 1922 Republic Avenue, San Leondro, CA 94577 [415] 895-9363 LetlGPS REGARDING INTERFACING THE IBM SELECTRIC KEYBOARD PRINTER My congratulations to Mr Fylstra on a job well done in his June article in BYTE. I spent half a year, back in 1970, on designing the interface for the 735 Selectric to the Microdata 800 Mini- computer, and in the process went through many of the discoveries revealed in the article. As the man who serviced our IBM 10 printers (an ex-IBMer) said to me, that machine is a triumph of development over engineering! One fruit of my work was a 2048 bit ROM which we custom programmed to do the ASCII to "bail code" conver- sion and back, without recourse to a software lookup table. It is still available as the MM5230KP from National Semi- conductor. But note that it handles only the "correspondence" version of the Selectric: our machine needed full upper and lower case graphics. Dan's comments on using the "a" and "b" contacts for figuring ready/busy of the printer are quite valid. One thing we learned was that allowing the clutch to stop between characters does lead to shortened life between adjustments. Back in 1970 we used a TTL voting cir- cuit to read the contacts, because they bounced so much, and accurate timing is essential for "wide open" running. One last point: The contacts are open reed, and must be "wetted" by using a current several times higher than the 5 mA shown, else they get dirty very quickly. Good luck to all ye who pass this way again! Richard Percival National Semiconductor GmbH Industriestrasse 10 808 Furstenfeldbruck GERMANY IS BUS COMPATIBILITY NEEDED? I have recently noticed that many people ascribe a certain importance to a product if it is "Altair (S-100) compat- ible." This should not be unusual; many people own Altair bus based systems and wish to buy only what is useful to them. But I am angered by people who auto- matically downgrade a product that is not S-100, even if they do not own a system themselves. They seem to think that compatibility and board inter- changeability rank high on the list of priorities for a "good" computer system. This is typical of most of the hobby market. I feel that the next few years will bring a change In that viewpoint. As computers become more and more common, processor power and built-in features will take precedence over bus compatibility. This is especially true in the consumer market. Who, in the early days of radio, would buy a separate tuner, amplifier and speaker assemblies if they could buy a complete, assembled unit? Consumers would never consider buying and inserting full size printed circuit boards into a system; they will rarely care whether they have a separate video board of a video section or a single board computer if it works. This is not to say that the Altair (S-100) design will vanish. The large number of systems and boards available makes it a great system for someone who knows what he or she is doing. For all others, a system that is self-enclosed and requires no expansion for basic lO de- vices (tape recorder, TV set) will be more popular. If we are to go anywhere with home computers, as designers we must under- stand what consumers expect them to do; we must not force them to adapt to our insufficiencies; we must learn to provide a useful and well-integrated product. C David Espinosa 21191 Gardens Dr Cupertino CA 95014 The first automobiles were not truiy consumer oriented, either, but as the public became educated in the uses of the product and as manufacturers learned more about the product and its design, the personal transporter became today's ubiquitous mechanism. In the continuing evolution of the personal computer, a similar user orientation is in the works and presently unfolding as innovative technological entrepreneurs gain experience and refine the product concepts. IBM 360/370 EMULATIONS Concerning Tom Koon's letter in the May 1977 BYTE about 360/370 emula- tion: this has already been done in at least one instance that 1 know of. Roger Appel of Interdata recently mentioned that his company took on this project a few years back. Interdata's Boston area phone is (617) 890-0557, and as to the price, don't count on it being cheap. J Howell Mitchell Jr Dynamics Research Corp 60 Concord St Wilmington MA 01887 A PUZZLE: DELETING THE DELIMITER I have comments to make regarding Dave Chapman's problems with deli- miting the delimiter (May 1977 BYTE). There is a similar but even more an- noying problem if you're working with an editor program which has a delete character. The question is, how do you change Thcrc^ an iCOM for Everyone at these Computer Stores... ARIZONA Byte Shop Tempe (602)894-1129 CALIFORNIA Orange Computer CIr. Costa Mesa (714)646-0221 Byte Shop Lawndale (213)371-2421 Byte Shop Ivlt. View (415)969-5464 Computer Mart Orange (714)633-1222 Byte Shop Pasadena (213)684-3311 Byte Shop Santa Barbara (805) 966-2638 Byte Shop Santa Clara (408) 249-4221 Byte Shop San Diego (71 4) 565-8008 Byte Shop San Rafael (415)457-9311 Computer Room San Jose (408) 226-8384 Byte Shop Tarzana (213)343-3919 Tech-Mart Tarzana (213)344-0153 Byte Shop Thousand Oal ? M ' • / Figure 1 : A standard alphanumeric /keyboard modified for tfie SCORTOS language. SCORTOS is a language dedicated solely to the processing of musical information. The keyboard is a stand- ard ASCII unit which has been relabeled with music symbols. The user enters a musical compo- sition by striking the keys which correspond to the symbols in the music score of the composi- tion (see also photo 2). with new forms that he might otherwise hesitate to give to an orchestra. The computer can also be useful to the composer as an originator of musical ideas since it can simulate the process by which the human mind creates music. A music composition consists of a series of musical events chosen from a minimum of about 200 different possibilities (consider, just 12 tones and 1 8 types of notes). Only certain of these combinations are pleasing to the human ear. The composer's job is to discover those combinations which produce aesthetic results. The manner in which he or she does this is personal, intuitive, and cannot by itself form the basis for a workable algorithm. It is possible, however, to infer some of the underlying rules of music by analyzing it. Whether we are composing with our minds or with a computer, we follow a set of rules that determine which pitches will be chosen, in what order they will be arranged, and how long each will last in time. The set of rules describes the style and structure of the music and can be repre- sented in a computer by a statistical model. A process can be programmed into the computer that uses the model to decide which musical events are suitable for use in the composition. The process is one in which random choices are discarded according to a stochastic model. [According to Webster's, stochastic processes are processes based on the behavior of random variables. Random variables, in turn, are functions which are the result of statistical experiments in which each outcome has a fixed probability. For example, the number of spots showing If two dice are thrown Is a random variable . . . CMj In order to produce a musical event, the program generates a random number which it associates with a variable such as pitch or time. The number is then subjected to the constraints of the model. The model is constructed by feeding specimens to an analysis program which are representative of the desired compositional style. The speci- mens are analyzed according to pitch, time and chord structure, and a probability matrix of n dimensions is generated, where n is the degree of order desired and represents the extent to which the analysis was carried out. As n increases, progressively more order is imposed upon the process, since more information is available to describe the Photo 2: The modified ADM-III video terminal. The keytops on the ASCII keyboard have been modi- fied to enable the user to easily encode musical compositions. See figure I . 13 Introducing Apple II. ^ r t « !»'• t ^^^^^■*^^^x^ : ^^^^^^ W.j-ttft*'WUIifJtW*'J««— YouVe just run out of excuses for not owning a personal computer. Clear the kitchen table. Bring in the color TV. Plug in your new Apple Ilf and connect any standard cassette recorder/player. Now you're ready for an evening of discovery in the new world of personal computers. Only Apple II makes it that easy. It's a I complete, ready to use computer, not a kit. At $1298, it includes video gra- phics in 15 colors. It includes 8K bytes ROM and 4K bytes RAM -easily expandable to 48K bytes using 16K RAMs (see box). But you don't even need to know a RAM from a ROM to use and enjoy Apple 11. For example, it's the first personal computer with a fast version of BASIC permanently stored in ROM. That means you can begin writing your own programs the first evening, even if you've had no previous computer experience. The familiar typewriter-style keyboard makes it easy to enter your instructions. And your programs can be stored on— and retrieved from— audio cassettes, using the built-in cassette interface, so you can swap with other Apple II users. You can create dazzling color displays using the unique color gra- phics commands in Apple BASIC. Write simple programs to display beautiful kaleidoscopic designs. Or invent your own games. Games like PONG— using the game paddlea supplied. You can even add the dimen- sion of sound through Apple II's built-in speaker. But Apple II is more than an advanced, infinitely flexible game machine. Use it to teach your children arithmetic, or spelling for instance. Apple II makes learning fun. Apple n can also manage household finances, chart the stock market or index recipes, record collections, even control your home environment. Right now, we're finalizing a peripheral board that will slide into one of the eight available mother- board slots and enable you to compose music elec- tronically. And there will be other peripherals announced soon to allow your Apple II to talk with another Apple 11, or to inter- face to a printer or teletype. Apple n is designed to grow with you as your skill and experience with computers grows. It is the state of the art in personal computing today, and compatible upgrades and peri- pherals will keep Apple II in the fore- front for years to come. Write us today for our detailed brochure and order form. Or call us for the name and address of the Apple n dealer nearest you. (408) 996-1010. Apple Computer Inc., 20863 Stevens Creek Boulevard, Bldg. B3-C, Cupertino, California 95014. Apple II™ is a completely self-contained computer system with BASIC in ROM, color graphics, ASCII keyboard, light- weight, efficient switching power supply and molded case. It is supplied with BASIC in ROM, up to 48K bytes of RAM, and with cassette tape, video and game I/O interfaces built-in. Also in- cluded are two game paddles and a demonstration cassette. SPECIFICATIONS • Microprocessor: 6502 (1 MHz). • Video Display: Memory mapped, 5 modes— all Software-selectable: • Text— 40 characters/line, 24 lines upper case. • Color graphics— 40h x 48v, 15 colors • High-resolution graphics— 280hx 192v; black, white, violet, green (12K RAM minimum required) ■ Both graphics modes can be selected to include 4 lines of text at the bottom of the display area. ■ Completely transparent memory access. All color generation done digitally. • Memory: up to 48K bytes on-board RAM (4K supplied) • Uses either 4K or new 16K dynamic memory chips • Up to 12K ROM (8K supplied) • Software • Fast extended integer BASIC in ROM with color graphics commands • Extensive rrionitor in ROM •I/O ■ 1500 bps cassette interface ■ 8-slot motherboard ■ Apple game I/O connector • ASCII keyboard port^ • Speaker • Composite video output Apple II is also available in board-only form for the do-it-yourself hobbyist. Has all of the features of the Apple II system, but does not include case, keyboard, power supply or game paddles. $598. PONG is a trademark of Atari Inc. *Apple II plugs into any standard TV using an inexpensive modulator (not supplied). ^t^ cippiG computer inc. Circle 208 on inquiry card. COMPUTER 88-RCB HAMMOND D2 ORGAN 88-RCB MOOG SYNTHESIZER 88-RCB ARP STRING ENSEMBLE 88-RCB 88-RCB ARP OMNI POLYPHONIC SYNTHESIZER 88-RCB Figure 2: A medium scale SCORTOS configuration. The 88-RCB units are relay boards which can be driven by the computer to operate organs, synthe- sizers or other similar instruments. Each board consists of two 8 bit data registers which can be loaded from the central processing unit Each of these bits In turn drives a transistor which energizes a relay. One 88-RCB board can control 16 keys, or I 1/4 octaves of a musical keyboard. The system can ad- dress (and therefore control) up to 256 keys. desired composition and less is left up to chance. Zeroth order stochastic control is no control at all. Random choices are used to build the composition without testing them against the model producing unlistenable music in most cases. In first order control, the transitions between pitches and rhythms are governed by the probability distribution of those transitions as they occurred in all the analyzed samples. Music produced in this manner still sounds amorphous, but will have fewer pitches that sound alien. It is not until we impose higher order control that a melody as we know it will take shape with its symmetrical phrases and regular intervals. In second order control, the selection of an event depends upon the event that preceded it; in third order control the previous two notes, and so on. For example, if the previous note chosen was a B-flat and the random number gener- ator has just produced a C, the program refers to that location in the probability matrix which gives the probability of a C following a B-flat. if there is no probability of this happening, the C is rejected. If the probability is 1 .00 then a C always follows a B-flat in this style of music, and the program will reject all random numbers that are not Cs. Of course the source of the information within the model need not be music speci- mens, as in this example, but may originate from mathematical functions, poetry or any one of a hundred other sources. It is this capability which makes the computer so intriguing as a composer's tool. The Score to Sound System The Score to Sound System (SCORTOS) was developed to provide the composer with an inexpensive means of conducting com- puter implemented music research and composition prototype development. The system has the capability to perform conven- tional music scores by allowing music symbols to be entered through a terminal keyboard by an operator. Music of computer generated specifications can be performed through user program calls to a set of subroutines that interface the user program to the SCORTOS system software. Music is produced by the computer driv- ing relays that are wired in parallel to the keyboard switches of electronic music instruments — organs, synthesizers, etc. This allows a simple and inexpensive interface between the composer's studio instruments and the computer. The limitation of this approach is in its inability to provide the computer with access to the timbre controls of the synthesizer, an encumbrance which may be tolerable to experimenters primarily interested in the musical variables of tonality and syntax. Also, there is a rich assortment of preset timbres available in commercial keyboard instruments, among them, the Orchestron which generates actual orchestral and choral sounds from a prerecorded opti- cal disk. The system consists of an Altair 8800 computer with 32 K bytes of memory, an ADM-III video terminal, a mass storage device (either cassette or floppy disk), one or more International Data Systems 88-RCB relay control boards and any electronic key- board instruments the user wishes to con- nect to the 88-RCBs. The ADM-III has a standard ASCII key- 16 \ferhtatim You want to record your message verbatim— word for WO.OJLC Now, Verbatim media. It's a new formulation of ferric word— whether it's bits, bytes or "Dear Folks" trans- ■^yiffcgCjlO'f^ oxides, an advanced macromolecular binder system lated into word processor language. ^ l.I.l.tOOttg,V' ^^ adhere it to the tough polyester film, and a proc- Our objective in manufacturing recording media for IS Q113JJLt\4 ^^^ control system that demands over 200 separate ^1 ' quality checks before the material is cut, packaged, and certified to be 100% error-free. the electronics industry— digital tape cassettes, floppy disks, mag cards, computer cartridges— is to give you the finest, the best, the most dependable, the most cost-effective. That means rugged, long-lived, abrasion-resistant recording media with superior magnetic qualities. If we made tires, they'd be steel- belted radials. We delivered otir first digital grade certified tape cassettes back in the beginning, 1969. We made the first commercial 3740-coni- patible floppy disks that didn't bear IBM's name. And the first Flippy® reversible flexible disks with anyone's name on them. The first mini data cassette is ours. And we've got the newest minia- ture flexible disk, the MD 525. The final quality check? "Make it pretty!" Our production people tell us that magnetic recording media is one of the rare instances in manufacturing where aesthetic appearance translates directly into final product quality. It has to look beautiful to work beautifully. We have the formulas, the machines, the technology to make high quality recording media. But it takes the best people in the indus- try to deliver Verbatim disks, cards, cartridges and cassettes. You'll find them at your favorite retail computer store. Circle 206 on inquiry card Information Terminals Corp. Sunnyvale, California;! Photo 3: A close-up view of the component side of the S8-RCB 16 channel relay interface board which can drive a musical keyboard with signals from the computer. board whose keytops have been relabeled with music symbols (see figure 1 and photo 2). The composer enters the composition into the computer by striking the key corresponding to each musical symbol as it appears in the score. This creates a music text file. The source text is passed to a language processor which maps each musical event represented in the source text into a physical 10 address plus a timing value, and writes this to a binary output file. The result is a list of records each of which defines which key of which instrument will be turned on and for how long. The binary output of the language processor is read by a driver program which uses the 10 addresses and timing values in each record to deter- mine what data is to be loaded into the data registers of the 88-RCBs, and at what time it is to be loaded. The keyboard instrument responds by playing the piece just as if someone were playing on its keyboard. In fact, the system can be thought of as an organist with 16 very flexible fingers, be- cause it is capable of performing 16 separate parts simultaneously. Keyboard Instrument to Computer Interface The 88-RCB is the interface between the computer and the electronic keyboard instruments. It was designed expressly for the SCORTOS system project, but is also useful for other low current switching appli- cations. The board has two 8 bit data registers which are "write only" accessible to the central processing unit (CPU) through two output ports which are individually strappable to any address in the 8080 10 channel. The data register latches the con- tents of the CPU's A register when an OUT instruction has been executed to that regis- ter's output port address. The outputs of each bit of the data registers drive a transis- tor which in turn drives a board mounted DIP relay. The complement outputs of the data register latches are used to drive light emit- ting diodes (LEDs) which can be mounted on the board or on a front panel to monitor the status of each relay. The relays are wired in parallel to the keyboard switches of the electronic music instruments which elec- trically isolate the peripherals from the computer and ensure plug-to-plug compati- bility among most keyboard instruments. Each 88-RCB controls 16 keys, or 1 1/4 octaves of keyboard. To ensure an adequate tonal range, two 88-RCBs may be configured on any instrument (see figure 2). The maximum number of keys the sys- tem can address is 256. In arriving at a figure of maximum connectivity, it was necessary to balance programming considerations against what was thought to be an adequate number of system-controllable sound pro- ducing peripherals. 256 keys are equal to about 20 octaves of keyboard (three full piano keyboards) which may be distributed among ten sound-producing peripherals, giv- ing each instrument a 2 octave range. This maximum configuration seems adequate to provide for the largest studio application. 18 _;:^ //'5 Z//:^ adding a room to your brain! I The System 8813 from PolyMorphic Systems is a complete, powerful problem solver in a single walnut cabinet. This machine allows you to perform complex financial, engineer- ing, and scientific models in the comfort of your office or den. The high speed video display presents your results in text, tables and graphics. The detachable typewriter-like keyboard permits relaxed program entry and operation. Convenient mini-discs store programs and data for compact filing, secure storage, and fast access. Our disc BASIC programming lan- guage is simple enough for the computer newcomer, yet powerful enough to amaze the most advanced users. The whole family can immediately use and enjoy pre- programmed applications and educational packages. Let the System 8813 become your trusted business, profession, and personal tool. The PolyMorphic Disc System is a completely assembled and tested unit with brushed aluminum front panel, walnut cover, detachable keyboard, videomonitor, 16K RAM. Includes system software and fully extended BASIC on disc. Systemwith I disc drive —$3250 System with 2 disc drives — 3840 System with 3 disc drives — 4430 Delivery 60 days ARO. Upgrade packages for POLY 88 owners will also be available. Prices and specifications subject to change without notice. PolyMorphic Systems (805) 967-0468 460 Ward Drive, Santa Barbara, CA 931 1 1 Music Symbol J Description whole note half note quarter note eighth note sixteenth note thirty-second note whole rest half rest SCORTOS Code XI X2 X4 X8 X16 X32 1 2 Music Symbol J f i 3 Music Symbol Description SCORTOS Code C Pitch representations C D D E E F F G G A A B B iK sharp + ii natural N b flat — jJ slur dot A Description quarter rest eighth rest sixteenth rest thirty-second rest left hand repeat right hand repeat bar triplets SCORTOS Code 4 8 16 32 [ ] / 3(XnXnXn) Table 1: The alphanumeric music coding convention used by the SCORTOS system. The X symbol preceding each numeric SCORTOS code symbol Indicates that the numeric symbol must be preceded by a pitch representation before it can be recognized as a note. For example, C2 would be a half note with pitch C. A simple method of representing l{. C ♦ _)<» (Hf J 0) T 5/IGin ( 8cm 1 "f I/I6in (.2 cm ) SURFACE UNDER KIM-1 Figure 2: The mechanical design of the chassis box is shown in this iiius- tratlon. The depths of the two sections are dimensioned to fit the author's briefcase. This can be fabricated out of a piece of aiuminum stocli 1/6 of an inch thici? and measuring 20.5 by 1 5.5 inches (or, in integral metric dimensions, 2 mm thicfi measuring 52 by 39 cm}. The drawings show dimen- sions for the actual KIM-I connector holes with metric dimensions in paren- theses. The housing was cut, milled (the pin edge connector holes) and con- structed at a local machine shop for under $15. 27 |\v|£-j£i&aiii;i4^-ii--*- — A. VDP-80 Computer with 300 Ipm printer. B. PCS-80 with CRT. dual floppy disk & Intelligent Keyboard options. C. Peripherals— (clockwise from left) 45 cps daisy- wheel printer/terminal, 24x80 CRT terminal. 45 cps daisy-wheel printer. Intelligent Breadtaoa 44 col. alphanumeric line printer. 1 mmmmtmrmm ■ 1 » • ■1 ■(pi«.ia '"'^^h^^jB D. Processor, tvlemory & Interface Ijoards— shown MPU-A. 6!3K RAM. and floppy disk, line printer and serial I O'h. Microccanputers: Just Ask IMSAI. If you wonder who leads the way in technoiogv. look into IMSAI's list of industn' firsts— IMSAI 8048. first complete control computer on a board; IMSAI 65K RAM Board, first to offer four times the memory capacity previously available on one board: IMSAI printers, first with high- speed direct memory access. If you wonder why IMSAI products have gained the reputation for the standard of excellence in microcomputer systems, check with any one of the more than 10.000 IMSAI owners. If you wonder who offers the broadest line of hardware, software, and peripherals, visit any one of the more than 275 IMSAI dealers around the world. ll'vou wonder how microcomputing can fit vour specific needs, ask IMSAI. Because when it comes to microcomputers, we have the answers. An IMSAI Product to Answer Every Microcomputing Need: Let's start with our product line. In all. IMSAI offers more than 120 high quality, completely integrated systems, components, peripherals and software. Here's just a sampling; Single Board Central Processors: • MPU-A (8080 based)-Industrv standard. • MPU-B (8085 based )-50'7r faster 8080. • 804S~Programmable control computer. Interfaces: ■ Video 1/0-24x80 CRT. Edit & data entry. • Serial 1/0-2 port I/O. all std. protocols. • Parallel I/0-4& 6 port TTL level I/O. • Multiple I/O— 2 cassette. 2 parallel. 1 serial & 1 control I/O. • DMA— For floppies & line printers. Peripherals: • Printers-40/80/132col. 30cps-300 1pm. • Video displays— Large as,sortment. • Tape Drive-9 track. 800 bpi. 25 ips. • Floppv Disks— Single/double density. Memory Expansion Boards: • 4K RAM— Programmable memory protect. • 16/32/65K RAM-16K paging option for virtual memory addressing. • Intelligent Memory Mngr.— Handles up 10 I megabyte. Self-Contained Systems: • VDP-80— Computer/ terminal /mass storage unit. Assembled & tested. • PCS-80— Integrated component system. Software: • DOS-Enhanced CP/M. • BASIC— Interactive or compiler with scientific and/or commercial features. • FORTRAN IV-Level 2 ANSI compiler. • Self-contained Systems; SCS I & 2/TCOS-A.ssembler/line editor/debugger. 4 & 8K BASlC-Optional cassette support. Compare IMSAI. You'll realize that ours is the most complete product line available. Whatever your needs, you can get ihem from one source. IMSAI. A wide selection of components is only the beginning. IMSAI oilers much more, .lust ask. Answers For Businessmen: Announcing IMS.AI's VDP-80. This totally self-contained unit includes a mega- byte of disk memory via floppy disk. 32K computer memory (expandable to 256K). 12" CRT and 62 pad main keyboard with 10 pad numeric keyboard. Several printer options available. If you want speed and accuracy in high volume work such as word processing, or business data collection and analysis, the VDP-80 is your cost elTectivc answer. Answers For The Personal User & Educators: Introducing IMSAI's new PCS-80 System, the fully integrated microcoinputer component svstem. configurable to your exact needs. The basic system consists of our Intelliaent Keyboard and the PCS-80 which bourses an 8085 based CPU. 16K of RAM. intelligent ROM monitor, serial I/O port. 24x80 CRT. with an extra 7 slots in the chassis for expansion. System component options include single or dual mini and standard floppy disks. The choice is yours, configure the system as you like. IMSAI has answers for the educator, too. Take the basic PCS-80. add 8K of PROM. 4K of RAM and our self-contained 8K BASIC software, and you have a complete operating system your entire department can use to leach anything from elementary programming to advanced computer science. Require a bit less sophistication? Use our Intelligent Breadboard system for learning, designing and building micro- computer assemblies. Rather do it from scratch? Start with our single board MPU-B central processor, the hean of the PCS-80 Svstem. It has a IK ROM monitor. 256 bytes of RAM and serial and parallel I/O. Since the MPU-B is 8085 based, you can run all programs previously developed for the 8080. 507r faster. V/ithout requiring faster memory. Answers For Industry: IMSAI products provide the expandability and flexibility manu- facturers demand for microcomputing applications. We offer rack mountable components for the standard 19" RETMA racks, powerful MPU boards. I/O and memory boards for easy system expansion and configuration, and a broad line of peripherals and subsystems fully integrated and ready to go to work. IMSAI has what you need to make tomorrow's design today's reality. Answers For Current IMSAI Users: There are over 10.000 of you. And. we haven't forgotten. You might say that we thought of you before you even thought of us. That's why every new product is designed to accommodate expansion, rather than outdate equipment. For example, our new PCS-80 retro- fit kit comes complete with MPU-B. replacement front panel photoinask and additional hardware bracketing. So you can enjoy a single cabinet PCS-80 computer, with your choice of integrated component configurations. The Answer For Everyone: Dial (415) 483-2093. Ext. ACT. That's IMSAI's action hotline. Designed to answer the thousands of questions we didn't have a chance to answer in the space of this ad. Call us. We'll assist you in putting together a system, direct you to your nearest IMSAI dealer, and send you our new catalog with all the details. In short, if you have any questions at all regarding microcomputers, put us to the test. .lust ask IMSAI. m The Standard of Excellence in Microcomputer Systems. IMSAI Manufacturing Corporation 14860 Wicks Blvd., Dept. B-9 San Leandro, CA 94577 (415)483-2093 TWX 910-366-7287 Features and spccilicalions siitijecl [u eliaiige vsithoiu notice. Circle 205 on inquiry card. Control the World! Photo 7; The author's prototype for the 4 chan- nel self-refreshing digital to analog converter shown in figure 9. Also contained on the board is a proto- type 4 channel analog to digital converter circuit. Steve Ciarcia POB 582 Glastonbury CT 06033 (Or at Least a Few Analog Points) "Ka-chunk! OK, get the reading quick! Ka-chunk! Pop! Pop! Bang!! Tlie darn tiling crapped out again! We'll never get one of these detectors to pass a life test." The burly mechanic puffed his fat cigar and with a disgusted sigh continued, "The dime store engineers who design these kludges should be the ones who have to test them! That's if you could ever get them out of that puzzle factory upstairs!" That was my cue. I was indeed an engi- neer descended from the puzzle factory and my mission was to discover why we were having so much trouble life test qualifying one of the pressure detectors we intended for future manufacture. Hearing the pre- ceding commentary as I approached the testing lab, I decided that an authoritative professional type would not be very popular at the moment, so I went into my innocent nonmanagerial mode and entered the lab. This lab was not unlike any other small production qualification and testing lab. It had the usual machinery and instrumenta- tion and many artifacts of former test pro- grams lying about. The most prominent 30 rtcHwc rPffMM .14Mt IS YOUR DOLLAR BUYING AS MUCH POWER & FLEXIBILITY AS TDL'S XITAN SYSTEMS PROVIDE? OUR CUSTOMERS SAY THINGS LIKE THIS ABOUT TDL PRODUCTS: "... the besi CPU board I've put logolhcr . . . exii-IU-nl pari* . . . worked right off wilboul trouble tihooting." IRC. Cambridge, Mass. "Great produti." KMM Bella Vista, Ark. "... hiRh quality components, )>ood engineerinf; & complete doi unientation ... up and running without any prtibloms." WP Seattle, Wash. "txcellent." ( ol. OWW Santa Maria, Calif. "Very impre»<>ed with superb quality." SKI Boston, Mass. ^11 k' alpha 1 When wo combined our hi^hly praised ZPU board and our System Monitor Board, we defined (he standard for the industry; we inlef>ralod more power and flexihilily in (wo slols of our motherboard than most other systems can musler using five or more boards. When we pill Ibis setup into our rugged aluminum case we created Ibe first XITAN system, Ibea/pha I. By adding a CRT tc-rminal and/or leleprinler you will have a complete computer system. KIT: $7«9 ASSIMBLFI) «, TESTED: $1039 alpha 2 By adding a /I6 memory module and our PAC KACJI A software to tUv alpha 1 we created a second XITAN system, thv alpha 2. Ibus.a complete and extremely powerful micro-compuler system emerges well worthy of you who are operating at the most sophisticated levels. The XI I AN alpha 2 provides you with IIIK of RAM, '2K of ROM, 2 serial I/O ports, t parallel I () port, our 1201) baud audio cassette interface as well as our extraordinarily powerful software package which includes «K Basic, the text Output Processor, the /apple Text Editor and the Relocating Macro-Assembler. Add your own I/O di-vice and (;0 . . .with the most powerful and flexible microcomputer package ever offered. KM: $i:i6<) ASSIMBEEI) & TESTED: $1749 IF YOU ARE A BEGINNER, YOU WON'T EASILY OUTGROW THE XITAN SYSTEM. IF YOU ARE AN ADVANCED USER, YOU WILL DISCOVER XITAN IS EXACTLY WHAT YOU NEED. Ciicli: 'MO on inquiry <;arfl. I Write for clcs< ri[)livi' l)ro( luirc on ihc XI I AN alpha scries ^^ TECHNICAL dinl system software. When you .isk at your dealer, say "/V-IAN." .^^^Tl DESIGN ORI>ERING INFORMATION: Send check, money order or BankAmericard, Master (barge current numbcrr and expiration date. Shipping is usually made via UPS or UPS Blue laliel. Specify other arrangements if you wish. Prepaid orders are shipped postpaid. M»;j HrSnAHCII PARK 1)1 OG H 1101 SIAU RDAI) I'HINCI ION, Nl W .It RSI Y OHMO (60^1) IC't 0:i?l artifact was the leader of the instrumenta- tion group, Ned. Ned's large frame amply filled the white lab coat though it was barely discernable in the dense cloud of cigar smoke. The combined scent of hydraulic oil, burned resistors, and cigar smoke con- vinced me that today was not going to be my day. "Hi, Ned. What's the problem with the new detector?", I asked. "It's about time one of you guys came down and asked. This has got to be the most fragile pressure detector I have ever tested. 5,000 PSI PRESSURE REGULATOR 10,000 PSIG 5,000 PSIG L I "H" VALVE B ET 10,000 PSIG PUMP ATMOSPHERIC ,^ ^ PRESSURE VALVE_C PSIG I J. RESERVOIR ■^ ACTION OF ON VALVE A OFF ACTION OF ON VALVE B OFF ACTION OF ON VALVE C OFF RESULTANT lOK PRESSURE AT PRESSURE 5K DETECTOR (PSIG) _rL_ n n n n 2SECS-H ■8 SECS- H __r n Figure 1 : Configuration of a conventional Impulse pressure calibration test setup. Note that the pressure detector under test receives what amounts to a square wave input. This type of violent pressure change can shorten the life of the detector and give a false indication of its long term life expectancy. PSIG, or "gauge pressure, " is explained in the text. So far, we have wiped out four engineering prototypes and. haven't gotten to 20,000 pressure cycles, let alone the 50,000 life test," he bellowed. My eyes rolled slightly as he mentioned the failed units. These pressure detectors were not in the least bit fragile; they were ruggedized units with a prospective sale price of $4700 each. The four engineering proto- types were handmade and far more costly. Before it became too apparent that I was coming to a slow burn, I asked the obvious question. "Ned, are you following the en- gineering test specification?" "You guys are really something! I've been in this business for 30 years. ! was testing . . ." "OK, OK, Ned! Just tell me what your test procedure is. Pretend I'm a novice and tell me by the numbers." I was sure that he felt that was the way he had to work with any engineer, so I humored him and just listened. "All right. The pressure detector is rated at 7500 PSIG and we are life testing it," he said with a cigar chomping smile. "The pressure is cycled between pounds per square inch gauge (PSIG) and 10,000 PSIG every ten seconds and remains at 5,000 PSIG between cycles. [PSIG, or gauge pressure, is a differential pressure measurement using the ambient pressure as a reference. Usually, standard sea level pressure (14. 7 pounds per square Inch) is used as the reference . . .CM J At the conclusion of each cycle, the detector reading is compared to an out-of-tolerance spec. Oven temp and other control param- eters are constantly monitored. Every 10,000 cycles, a calibration run is taken and compared to the accuracy specification quoted. We just haven't been able to get one of the bloody things to hang together long enough to finish the test. The pressure diaphragm keeps breaking." So far, what he was relaying was exactly the procedure I had outlined. Nothing sounded wrong, so the next obvious question was a description of the test apparatus. "I decided to automate the testing pro- cedure," he gleamed like a kid describing a new toy. "I made a sequencing circuit with relays to cycle the pressure automatically. All the operator does is record the data and run the calibrations. Here, let me draw you a diagram." It was unbelievable! True, Ned was fol- lowing the spec, but what a way to do it! Pressure transducers are expected to with- stand a certain amount of overpressuring, which was the reason for the test. But over- pressure in combination with a 10,000 PSIG 32 M corporation I i I i I The most cost effective products for your microcomputer. ^'Jmrrn''"^ RM64 64K bytes THE EXTENSYS RM64 MEMORY BOARD provides the most cost effective system memory found in the industry. The RM64 provides this because of our low cost per byte when compared to our competition plus the increased reliability of a single board over multiple boards containing less memory. The board is S-100 bus compatible making it usable in over a dozen different microcomputer systems including ALTAI R and IMSAI. The RM64 is available in three configurations: 32K, 48K or 64K bytes of memory all on ONE board. The board is completely assembled, checked out and burned in for at least 50 hours prior to shipment. This complete testing procedure allows Extensys to provide a one year warranty on parts, labor and materials (assuming no misuse of the board occurs). On board hardware is provided for: - Individual memory bank address selection in 8K byte Increments; - Complete dynamic refresh logic without loss of processing efficiency while programs are running; ■ Board select logic which allows more than one 64K byte board per system; - S-100 bus compatibility including on-board voltage regulator; ■ Memory overlap which allows memory sharing the same address space to coexist in the same system; Write pro- tection in 16K blocks; and Fully socketed for 64K, allowing 32K and 48K versions to be upgraded at a later date. Delivery of the Rl\/I64 is 15 to 30 DAYS upon receipt of order. Prices for the RM64 include shipping and handling prepaid in the continental United States. EXTENSYS Corporation is also announcing several other new highly cost effective products. These include a total floppy disk system based around File I/O board and a multiprocessor operating system. The other product, which interfaces with the RM64 memory board to create a megabyte or more of memory and adds full DIVIA capability to the File I/O board, is a Board Select/DMA board. Both of these products are S-100 compatible. Circle 210 on inquiry card. Contact your local computer store ^ ^^^_ — _^ or order directly from EXTENSYS I ,^_^,.^^_.^ B-3 Please place my order for the following: QTY DESCRIPTION AMOUNT RM64-32K byte board @S 895 ea. . RM64 48K byte board @S1195 Da. . RM64.64K byte board @S1495ea. Subtotal California residents add 6'/;% tax TOTAL Shipping and handling prepaid in continental United Slates esdcnsys ADDRESS- CITY rcorporaflon 592 Weddell Drive Sunnyvale, California 94086 (408) 734-1525 Please check method of payment: Check Enclosed BankAmericard No expiration date Master Charge No. — expiration date . PHONEdNCLUDE AREA CODE). impulse was like a jackhammer. The engi- neering group upstairs would be amazed that the test made it though 20,000 cycles. I wiped my brow, leaned against the concrete wall and asked with a pathetic whimper, "I suppose the failed detectors make good boat anchors." "What?", he asked, not having heard what I had said. "Ned, while I think your intention is fine, your method may be a little too rough on the unit. Why don't we change the square wave pressure being applied to the detector to a sinusoidal waveform." This was the method I had assumed he was going to use initially. "I can't have a guy sitting there cranking a pressure controller knob ten hours a day. It's going to take two weeks to run this test as it is. That's why I automated it!" He seemed to get mad as I challenged his inventiveness. "You don't have to compromise any- thing. Get a DC proportional control valve from the stock room and modulate the pressure sinusoidially. In fact, you can use the minicomputer which you ordinarily use for mathematical calculations over there VOLTAGE CONTROLLED PRESSURE REGULATOR VIN FROM D/A 5 TO +5 VOLTS 10,000 PSIG 10,000 PSIG PUMP PRESSURE DETECTOR UNDER TEST TO 10,000 PSIG i I I 1 RESERVOIR COMPUTER APPLIED RESULTANT PRESSURE (PSIG) ■ B SECS- Figure 2: The same pressure detector as in figure 1 being tested here with a computer controlled system which applies the test pressure sinusoidally. This approach gives a much better indication of the unit's true life ex- pectancy, and incidentally shows one practical application of digital to analog conversion. in the corner to drive it directly, collect the data, and run the calibration automatically." "You guys upstairs must be suffering from thin air. I know about computers; ones and zeros and all that stuff. We're talking about a DC voltage controlled valve. That isn't consistent with computer binary voltage levels. You would have exactly the same on and off situation as my relay con- troller," he stated. It was going to be an uphill fight, but I knew I was going to have to introduce Ned to the world of analog to digital and digital to analog conversion. I first mapped out the life test circuit and diagrammed the wave- forms. Ned was no neophyte. He felt that he knew a lot about computers and in fact was quite familiar with the uses of BASIC and FORTRAN on the lab minicomputer. But Ned had never considered that this num- ber crunching machine has the same logical abilities to control analog devices if properly interfaced. General Considerations While this may have been a lengthy intro- duction to computer analog interfacing, it often takes a real life situation to make one realize the added potential of the computer when it is combined with analog capabilities. Since natural parameters such as dis- placement, temperature, volume and mag- netic field strength are analog, and most practical methods of data acquisition, man- ipulation and visual presentation are digital, conversion between analog and digital qualities is a fundamental operation in computing and control systems. The basic building blocks are the digital to analog converter (DAC), and the analog to digital converter (ADC). Because these converters are essentially interface devices, the basic conversion circuitry must be adapted to properly mate the application to the computer. Such variables include the possible necessity for buffers, registers, clock circuitry and refer- ence voltages, all of which are external sup- ports for the actual conversion device. The exact design requirements can be lengthy and are handled separately by necessity. Digital to analog conversion is the first topic to be discussed. Digital to Analog Conversion The digital to analog converter can be thought of as a digitally controlled program- mable potentiometer which produces an analog output. This output value (Vq) is the product of a digital signal (D) and an 34 Why you should buy a digital tnultiineter from the leader in digital multimeters. If you're shopping for your first multi- meter, or moving up to digital from analog, there are a few things you should know. First, look at more than price. You'll find, for instance, that the new Fluke 8020A DMM offers features you won't find on other DMMs at any price. And it's only $169.* Second, quality pays. Fluke is recog- nized as the leading maker of multi- meters (among other things) with a 30-year heritage of quality, excellence and value that pays off for you in the 8020A. Third, don't under-buy. You may think that a precision 3y2-digit digital multi- meter is too much instrument for you right now. But considering our rapidly changing technology, you're going to need digitsd yesterday. If you*re just beginning, go digital. times better than most analog meters. Also, the 8020A's digital performance means things like 26 ranges and seven functions. And the tougher your hojne projects get, the more you need the 8020A's full-range versatility and ac- curacy. The 8020A has it; analog meters don't. If you*re a pro. You already know Fluke. And you probably own a benchtop-model multi- meter. Now consider the 8020A: smaller in size, but just as big in capability. Like 2000-count resolution and high-low power ohms. Autozero and autopolarity. And the 8020A is MOV-protected to 6000V against hidden transients, and has overload protection to 300V ac. Nanosiemens? W^hat price to pay. Conductance To Resistance Conversion 10 100 1,000 10,000 ==& / / / 0.1 1 10 100 Conductance (nS) nanosiemens Why not analog? Because the 8020A has 0.25% dc accuracy, and that's ten Beginner or pro, you'll find the meter you now have can't measure nanosie- mens. So what? With the 8020A con- ductance function, you can measure the equivalent of 10,000 megohms in nanosiemens. Like capacitor, circuit board and insulation leakage. And, you can check transistor gain with a simple, homemade adapter. Only with the 8020A, a 13-oz. heavyweight that goes where you go, with confidence. $169.* Of course, you can pay more. Or less. In fact, you could pay almost as much for equally compact but more simplistic meters, and get far less versatility. And, the 8020A gives you the 'plus' of custom CMOS LSI chip design, and a minimum number of parts (47 in all). All parts and service available at more than 100 Fluke service centers, worldwide. Guar- anteed, for a full year. Rugged. Reliable. Inexpensive to own and to operate; a simple 9V battery assures continuous use for up to 200 hours. IVheretobuy. CaU (800) 426-0361 toll free. Give us your chargecard number and we'll ship one to you the same day. Or, we'll tell you the location of the closest Fluke office or distributor for a per- sonal hands-on feel for the best DMM value going. *U.S. price only Fluke 8020A DMM for Hcmie Electronics Experts: $169 IFLUKEI Circle 21 1 on inquiry card. BINARY "I "• SWITCH CLOSED BINARY "O"- SWITCH OPEN J )RF Figure 3: A 4 bit weiglited resistor digital to analog converter. A 4 bit word is used to control four single-pole single-throw switches. Each of these switches is in series with a resistor. The resistor values are related as powers of 2, as shown. The other sides of the switches are connected together at the sum- ming point of an operational amplifier. Currents with magnitudes inversely proportional to the resistors are generated when the switches are closed. They are summed by the op amp and converted to a corresponding voltage. analog reference (V^gf) and is related by the following equation: Vo=(D)(Vref) To a large extent, no digital to analog or analog to digital converter can be of much practical use to anyone without specifying the type of code utilized to represent digital magnitude. Converters work with either unipolar or bipolar digital codes. Unipolar includes straight binary and binary coded decimal (BCD). Even floating point converters have been used on occasion: witness the auto ranging digital voltmeter. Offset binary, one's and two's complement and Gray code are usually reserved for bipolar operation. Since the obvious sphere of this article is home computer applications, straight and ^ M^ 2R _VW- ■* ^ 2R ^ 2R -wv- r SW4 2R r- W« Figure 4: A 4 bit "R — 2R" ladder network digital to analog converter. This type of digital to analog converter makes use of a resistor ladder network constructed with resistors of values R and 2R. The topology of this network is such that current flowing into any branch of a 3 branch node will divide itself equally through the two remaining branches. Because of this, the cur- rent will divide itself in half as it passes through each node on Its way to the end of the ladder. The four switches are again related as powers of 2. The position of each switch with respect to its distance from the end of the ladder determines its binary significance. offset binary will be the only digital methods addressed. It is important to remember that the binary quantity presented by the computer is a representation of a fractional value to be multiplied by a reference voltage. In binary fractions, the most significant bit has a value of 1/2 or 2—1, the next most signifi- cant bit is 1/4 or 2-2, and the least signifi- cant bit is 1/2N or 2-N. It can be seen that adding up all the bits approaches a value of 1. (The more bits, the closer the value is to 1). The discrepancy between the binary value approaching 1 and the actual value 1 is the quantization error of the digital sys- tem. I'll discuss this later. Offset binary is nothing more than straight binary except that the binary num- ber zero is set to represent the maximum negative analog quantity. In the easiest terms, the most significant bit is a zero for negative analog values, and a one for positive analog values. The conversion of digital values to pro- portional analog values is done by either of two basic conversion techniques: the weighted resistor digital to analog converter and the R— 2R digital to analog converter. The weighted resistor digital to analog con- verter is by far the simplest and most straightforward. This parallel decoder re- quires only one resistor per bit. In the weighted resistor digital to analog converter, switches are driven directly from the signals that represent the digital number D. Cur- rents with magnitudes of 1/2, 1/4, 1/8, . . .I/2N are generated by connecting resis- tors with magnitudes of R, 2R, 4R, . . .2Nr between a reference voltage, — V|-ef, and the summing point of an operational amplifier by means of a set of switches. The various currents are summed and converted to a voltage by the operational amplifier (see figure 3). While this may appear to be a simple answer to an otherwise complex problem, this method has some potentially hazardous ramifications. The accuracy of this converter is a function of the combined accuracies of the resistors, switches (since all switches have some resistance) and the op amp. In conversion systems of greater than ten bits resolution, the magnitudes of the resistors become exceptionally large and the re- sultant current flow is reduced to such a low value as to be lost in circuit noise. A reasonable-alternative to the weighted resistor digital to analog converter is the R— 2R converter. This is often referred to as a resistor ladder digital to analog converter. The R— 2R digital to analog converter is the most widely used type of digital to analog 36 24 Channel LOGIC ANALYZER, complete with 2 cards and 3 sets of probes (only one set shown). Features — 24 channels with 256 samples each. — Display of disassembled program flow. — Dual mode operation — external mode analyses any external logic system. Internal mode monitors users data and address bus. — Selectable trigger point anywhere in the 256 samples. — 0-16 bit trigger word format or external qualifier. — 10MHz sample rate (50ns min. pulse width) — Synchronous clock sample with coincident or delayed clock mode. — User defined reference memory. — Displays and system control through keyboard entry. — TTL Logic level compatible (15 pf and 15 /ja typical input loading). — Includes annotated source listing. m K y W ul EF.WFI m FUME iEK IUX9 Mt ".EX 'Si SIB IK T m cf: t sir i: «:i ■■« ■> Display of disassembled program flow. Circle 212 on inquiry card. Databyte, Inc P.O. Box 14B 7433 Hubbard Avenue Middleton, Wisconsin 53562 Tel: (608) 831-7666 24 channel Logic Analyzer plugs into your S-100 Bus The DATALYZER The Databyte Logic Analyzer (DATALYZER) is a con- venient, flexible, high quality device. Efficient engineering has allowed a combination of features previously available in only the most expensive units. Designed to plug easily into your S-100 Bus, the DATALYZER is a complete system for only $495. Display of disassembled program flow is a standard feature, not an extra. And the low price Includes 30 logic probes, so you can hook up immediately, without additional expense. The DATALYZER is available in kit form ($495), and as a fully assembled device on two PCB's ($595). Four-week delivery, a substantial warranty, and the Databyte, Inc. commitment to service make the DATALYZER a worthwhile investment. Begin debugging by sending the coupon now. P! ■ SI WEBl K me mm iHsui ■jmvmm-Mivsa m. mm iiiiKiiiHiiiiiiitii!) intai iii)iiiaii«iniiii)st — > — D/A WITH ? INPUT > — REGISTER D/A ANALOC OUT . ANALOG OUT NOI S/H '' ' > — y- NO.l i i " STROBE MULTIPLEX S/H OUT NO. 2 LOGIC N0.2 Figures 7a and 7b: Two methods for providing multiple channel output capability. Figure 7a shows a parallel digital to analog converter method in which the computer routes information to two different digital to analog converters. In figure 7b, two sample and hold circuits are fed by the same digital to analog converter. /Multiplex logic switches the output of the converter between the two sample and hold circuits. The latter do just what their name implies: when strobed, they store the value of the incoming voltage and stay very close to that value until strobed again, at which time they change to the new value. The sample and hold technique of figure 7b is economically more attractive than the multiple digital to analog converter approach. puter through a digital to analog interface. Though only the voltage requirement of the value was mentioned, the pressure detector is situated in an environmental control chamber with the temperature maintained by a setpoint controller. At various times during the testing phase, the temperature is elevated. To adequately automate this test procedure, therefore, two analog output values are required: one for temperature setpoint and the other for pres- sure setpoint. It takes one digital to analog converter for the first voltage and we could add another separate digital to analog con- verter for the second voltage, but this is overly expensive and not necessary. The preferred method is to use multiplexed digital to analog conversion. This technique uses a single converter and switches it back and forth between the two channels doing the respective digital to analog conversion 50% of the time on each channel. To insure that each channel does not go on and off as the converter switches back and forth be- tween them, a circuit called a sample and hold is employed on each channel to main- tain the output at a constant level until the next refresh by the digital to analog con- verter. Figures 7a and 7b illustrate the 39 ACQUISITION TIME EXAGGERATED VOUT WAVEFORM , — DROOP VOLTAGE DIFFERENCE DUE TO CAPACITOR DISCHARG- ING EXPONENTIALLY WITH A LONG PERIOD TIME CONSTANT CAPACITOR CHARGES EXPONENTIALLY WITH SHORT PERIOD TIME CONSTANT SWITCH SWITCH SWITCH OPEN CLOSED OPEN (HOLD) (SAMPLE) (HOLD) Figure 8: A basic sample and liold circuit. Wlien tlie switcli is closed, the ca- pacitor begins to charge up exponentially to the value of the input voltage. Theoretically, the capacitor will maintain this value indefinitely after the switch is opened, but in reality a certain amount of voltage "droop" (ex- ponential decay) will occur over time as the capacitor slowly discharges. separator versus multiplexe(d digital to analog approach, and figure 8 illustrates a basic sample and hold circuit. A sample and hold circuit is simply a charged capacitor analog storage device. Amplifier A1 is an impedance isolating buffer connected to the digital to analog converter or other voltage supply and con- nected to the capacitor through a switch. This switch is normally open in the "hold" state. When the output is to be updated, the switch is closed, the circuit enters the "sample" or acquisition mode, causing the capacitor to charge exponentially toward the new value present at the output of Al . When the switch is reopened and again in the "hold" state, the output of A2 will be equal to the capacitor voltage level. The secret of good sample and hold is to use good high input impedance buffers to minimize the leakage from the capacitor and hold the output for long periods of time. No sample and hold can be designed without some droop during the holding period. The best that the designer can do to minimize this feature is to use precision components (usually more expensive) and refresh the sample and hold frequently enough to over- come decay problems. Is There a Way to Overcome the Necessity to Refresh Sample and Hold Outputs? For the home computer experimenter, sample and hold outputs, which require periodic refreshing, can become a bother. This is especially true during step-by-step checkout of system software. Refreshing a multiplexed digital to analog interface usually requires a separate digital to analog refresh subroutine which must be called at regular intervals while executing the program. Simple, inexpensive sample and holds may require updating tens of times per second, while the better designed circuits available to the hobbyist can do satisfac- torily with a once per second update. The fact remains, though, that the refresh is a requirement. This can limit digital to analog interface applications. Drive the Digital to Analog Converter with BASIC? Many extended BASIC programs such as the Digital Group MaxiBASIC can directly interface with computer input and output ports. This means that analog devices can be driven with a digital to analog converter, analog data processed through an analog to digital converter, and the acquired data mathematically manipulated using BASIC. The implication is a pseudoreal time analog control scheme utilizing BASIC. This is a realistic capability in slow process control applications where control feedback does not have to be activated within micro- seconds of an initiating event. Solar heating, low duty cycle repetitive machine functions, building environmental control systems, and supervisory control of setpoint control- lers are examples of slow processes where slow computer response is of no major consequence. The Final Configuration Utilization of BASIC as a real time operating system does imply some con- straints. If analog control is involved, the time between updates to an analog output interface can be on the order of tens of seconds, especially if the computer is re- quired to do extensive calculations and record outputs to a printer. Of course, a special interrupt driver could be added to the BASIC and the processor interrupted frequently to service the external devices; but why make life difficult? The idea of using BASIC in the first place was to pro- vide a control capability without adding special machine language drivers, a capability which would enable anyone to try his or her hand at closed loop control programming. This approach, though, tends to eliminate the classical sample and hold multichannel digital to analog method from consideration. It would also seem that the only approach left is the separate storage register and 40 Meet the First Famfly in floppies The roots of our floppy family r 1143M controller -LSI technology • IK buff er i Dual head 50 pin LSI interface r ^ U49M Multipurpose Cabinet assembly. Rack or table mounted. k J New 143M disk drive. Two-sided recording. Single/double density. LSI Multifunction. LSI-11 RS-232-C S-100 BUS Our host adaptors CalComp's sol it nil losethor for you. A total I'lopjjy family. Any way you want it. . ..single products or Lhe total package, hi every case you get Iruv niiiltii'unction, LSI technolo^'y, liiKh MTBF and low MTTR reliability, comiialihility and multiple interlaces. And that's not all. Ficlil-prorcii double density — now one or two-sided. Ancl our new 1143M conti'oller alonj^ with three host adaptors. With CalComp it's all there. Choice. Flexibility. Everything you need lor all or part of a total memory subsystem. P/«.s- CalConii)'s worldwide service to sujjport our family. We've delivered 5(),(X)() drives — why not add your ap])lication requirements to oui- growing family. .Just call us or use the coupon. We'd like to tell >'ou more about our family. Circle 213 on inquiry card. California Computer Products, Inc. 2411 West La Palma Avenue Anaheim, California 92801 (714) 821-20U Please .send me your free Floppy Family information l ",--,, -2»" ...„,..o , , , > c Lno: ,,,.«,„„ , , , , X 74LS04 74LS04 74LS30 74170 74170 7400 MCI 4 08- L8 7433 LM301A CD40S1AE MC1458G MC1458G z UUUUUUUUUUUO 1 1 i i 1 1 AA i-A- A -A~^4^—A~A m 3 UJ u fl-p Pt Vi 0- 42 which form an 8 bit random access scratch pad. IC7 performs the actual analog to digital conversion. The remaining portion of the circuit consists of timing generation and an analog multiplexer with sample and hold circuitry. digital to analog converter combination pre- viously illustrated. A more intelligent alternative is a combination of the two methods. The necessary interface is essentially a smart multiplexed digital to analog converter which maintains its analog setpoints in- dependent of the computer timing. The design of this interface is illustrated in figure 9. It is a hybrid system composed of separate digital storage sample and hold circuits for each of four output channels. Internal timing generators sequentially read the storage registers, initiate the digital to analog conversion, and refresh the sample and holds. Photo 1 shows how this card looks when built using a Vector board with 44 pin edge connector. The key feature of this unit is the input storage buffer. Two 74170 4 by 4 bit regis- ters are configured to form a 4 word by 8 bit random access scratch pad. An address de- coding network composed of IC1, IC2, and IC3 decodes the processor's output port address and strobes the computer data bus contents into the appropriate scratch pad location. These four jumper selectable port addresses can be set to be any four con- secutively numbered output ports. The exact selection and jumpering details are outlined in the check out procedure. This particular scratch pad can be written into and read from simultaneously. The interface is completely asynchronous and does not have to be synchronized with the computer in any way. There are four basic sections to the inter- face: the scratch pad and port decoding, digital to analog converter, timing generator and analog multiplexer, and sample and holds. A basic timing diagram of the inter- face is illustrated as part of figure 9. The timing section consists of a 200 kHz clock generator IC6 and address counter IC8. The 7493 counts down the 200 kHz clock and drives the address lines of the scratch pad and multiplexer at a 50 kHz conversion rate. Each channel is accessed, converted and sampled in a similar manner. When the address lines have settled on a particular channel, the output lines of the scratch pad (IC4 and IC5) present the respective stored digital word to the digital to analog converter !C7. The converter immediately starts moving towards the new value. Since its settling time is dependent upon the magnitude of change from one channel to the next, the worst case being minus full scale to plus full scale, the 20 ^us conversion period incorporates a 10 ;us settling time. For the first 10 tis, the analog multiplexer IC10 is inhibited from conducting the signal to the sample and hold. After this settling time has concluded, the inhibit signal is dropped, and for the next 10 /as the sample and hold for that particular channel is in the sample mode. The circuit automatically sequences itself to the next scratch pad address and repeats the process over and over. Anyone capable of a little quick math can realize that if the digital to analog con- version is proceeding at 50,000 conversions a second, each sample and hold is being updated at the fantastic rate of 12,500 times a second. This seems to be in direct disagree- ment with a "tens of times a second" state- ment made earlier. It is important to remem- ber that this is an asynchronous analog interface. When new data is written into the scratch pad, the new value is not available at the sample and hold output until the next regular sampling period, controlled by the timing generator. The high sampling rate is more to increase the response of the inter- face than refresh the outputs. At a 50 kHz conversion frequency, there is a worst case delay of 80 /is between a scratch pad update and an appropriate analog output response. This is of no con- sequence as far as this article is concerned. However, to maintain the ability to use BASIC as a real time operating system and yet not lose the capability to do high speed applications such as voice synthesis, a few simple modifications can be made. The inter- face clock rate can be increased from 200 kHz to 400 kHz. This has been success- fully accomplished on the prototype and will increase the sampling rate on each chan- nel to 25,000 samples per second. Un- fortunately, it is far more demanding of the current to voltage converter IC9. Only one out of three LM301As may work success- fully over the full range of 10 V. Another quick method is to remove the 7493 (IC8). This causes the interface to stay addressed on channel 4, doing 50,000 uninhibited con- versions per second. The converter itself is an 8 bit MC1408L-8 multiplying digital to analog converter. As previously outlined, "mul- tiplying" means that it uses an external variable reference voltage. In this case, a 6.8 V zener diode regulated voltage is passed Continued on page 156 43 Expanding the Tiny Assembler (Increasing Function without Building More Memory) LOCM El B2 R3 0000 0000 >* * 0000 >* EXAViPLE OF AN INLINE PGN BLOCK • 0000 > * * cooo ***** 0100 > OIiR SI 00 01 00 >ROUTIMEA HMP 2 SUPROLniNFS A\JOILAPLE 0102 >H0UTINEB E1B 2 IN FXISIING COFF 0104 >E0UT1MEC r,^B 2 0106 >F.OUIIMEI E1P a 01 OB >E0UT1MEE F.MP 2 01 OA >EOUTI»)FF FMP 2 01 OC >FLAG1 E^E 1 TEST CONl ITIHNS OlOC >FLAG2 HMP 1 AVAILAPLF IN 01 OE >FLAG3 EMB 1 EXISTING COTE 0200 > OHG t200 0200 0200 > * INLINE COTE • 0200 >**«4i***«> 0200 > 0200 >M El BLOCK BGM STAFiT OF INLINE PLOCK 0200 711 01 OC > TST FLAGl 0203 211 00 > PLT CONIl JU^P TO SUBROnTlNF 0205 22 00 > PHI CONTS FEPFNI-ING ON IFSl 0207 71- 01 or > TST FLAG2 CONl ITIONS 020A 23 00 > BLS C0Nt3 020C BV 01 00 > JSE FOUTINEA 020F 20 00 > BRA GO FIRST USE OF SYMBOL 'GO' 0211 BD 01 02 >CO.MM JSE ROUTINFP 020i OC 0211 20 00 > EFA en 0216 HI) 01 o;. >coMrp JSP ROUT INFC 0206 OK 0219 20 00 > ERA GO 021 B BD 01 06 >C0ND3 JSR FOUI INED 020B OF 02 IF BV 01 0« >G0 JSR EOUTINFE SYMBOL 'GO' EESOLVEI 0215 0« 021 A 03 0210 or 0221 > END ENL OF INLINE BLOCK *♦* UNHESOLUFr: .•• SY>COMTr^JUF TST FLAG3 022^ 22 00 > PHI GO FFUSF OF SY1P0L 'GO' 022A DD 01 OA > JSR nOUlINFF 0229 01 >G0 MOP 'GO' RESOLl^El AGAIN 0225 03 022A i****H:«* ***** *********i oe2A > + INLINE COPF CONIINLIFS + 022A >t««**k«t< ***♦**********' *************************** 028A > 022A > EN 11 ENI: OF ASSEMBLY ••* UMHESOLUEn; *** SYMBOLS? Y COME 0221 FLAI OlOC FLA? 0101. FLA3 01 OF Gr) 0229 MEWK 0200 hOUfl 0100 l:OUB 0102 P.OUC OIOA LOUD 0106 Listing 1 : This simple in line BGN block shows the format of the BGN and END pseudooperations of the Version 3.1 Tiny Assembler. Any symbols defined within the block are deleted by the END statement for the block and can be reused without conflict by subsequent code. Thus the symbol GO at location 021 E defined within block NEWBLOCK is not the same location as the later use of GO in the outer level of the hierarchy at location 0229. Note that the new version of Tiny Assembler still condenses symbols into 4 character names in the symbol table by using the first three and the last characters of the symbol as typed. Thus the NEWBLOCK name at loca- tion 200 condenses to NEWK In the symbol table. Jack Emmerichs 8465 N 51 Brown Deer Wl 53223 It is worth noting that the group of people who have been using the Tiny As- sembler since the end of 1976 as listed on page 133 of the March 1977 BYTE ex- cludes the author: ME! Well, I have finally gotten my own computer system up and running and have been able to get some use out of the assembler myself. I soon found that there were a few things here and a few things there that could be changed or added that would make the whole assembly process more convenient. I guess there is just no pleasing some people. The problem is that, as predicted, I have a minimal configuration system. It is a SwTPC 6800 with (at the moment) no extras. The assembler just fits, so there is no place to put patches or additions except at the top of the symbol table. This of course reduces the capacity of the program. It became obvious that the proper approach to further modifications would be to increase the efficiency of the assembler so that additions could be made while maintaining or in- creasing the symbol table capacity. The first modification, therefore, would have to be the ability to delete symbols when no longer needed so that the symbol table space could be reused. This would allow a smaller table to handle a larger number of symbols. As suggested in the article "Implementing the Tiny Assembler" (May 1977 BYTE, page 84), this has been accomplished by developing a "begin" statement (the as- sembler mnemonic is BGN). This statement causes the next available location in the symbol table to be pushed into a table stack and a structural level counter (which starts at 1 and keeps track of the nesting level of the BGN statements) to be incremented. Symbols entered beyond this point in the table belong to this BGN block. A label on the BGN statement itself will not belong to the block being defined, but to the group of 44 symbols already in the table. The END statement must then be changed to pull a symbol table location out of the table stack and perform end of block processing on the symbols from this point to the end of the table. Everything relating to these symbols is then cleared from the assembler's tables. The structural level indicator is decre- mented, and if it becomes 0, end of program is signaled. Using this arrangement, the nesting level of BGN blocks is only limited by the space available for the table stack or the size of the structural level counter (256 in this case). In practice, the BGN block is used to break a program into individual segments that can each be treated as single functions or routines. Labels and variable names with- in such blocks are local to the block and are not known outside the block in the rest of the program. This can be most useful when employing structured programming tech- niques such as those that have appeared from time to time in BYTE articles. A properly structured BGN block should have only one entry point and one exit point. It may be used in either of two different ways. First, a section of in line code that is only used in one place in a program may be defined as a structural block. Such a block is entered by "falling into" the first state- ment, and exited by "falling out of" the last statement as program steps are executed in sequential order. There will usually be no label associated with the BGN statement for such a block. The second possibility is to define a block as a subroutine which can be called from one or more places in the program. Such a block is entered by a jump or branch to subroutine and is exited by a return statement. In this case the entry point (which is usually the BGN statement itself) does require a label. In both cases, once a block has been com- pleted, the internal structure is of no interest to the rest of the program, and any entries in the symbol table and the forward reference table for the current block may be removed when the block is ended. An example of a small in line BGN block is shown in listing I. Once this group of branch and jump instructions has been completed, the symbols defined within it may be reused without conflict. A more complex program structure using BGN blocks as subroutines is shown in figure 1. This is similar to the hierarchy diagrams dis- cussed in the first of these articles (see "Designing the Tiny Assembler," April 1977 BYTE, page 84, for a discussion of hierarchies and networks). The pseudocode to implement this structure is shown in listing 2. Within any block, references can be made to entries in the symbol table for any already active block (ancestors), the entry point of any block at the same level (siblings), the entry point of any block at the next lower level (direct descendants), and the entry point of any block which is at the same level as currently active ancestor blocks (aunts and uncles). References cannot be made to items which are across any level of siblings and then down another branch of the "family tree" (nieces, nephews and cousins), or to items developed within a lower level of the tree. This is a fairly standard structuring scheme. Listing 2: This is a structured pseudocode representation which shows how the hier- archy of figure 1 would be implemented In a normal coding sequence. The assembly starts with an Initial (outer or global Is an equivalent term) level so there is one more END statement than the number of BGN statements. This is required to finally terminate the assembly. In this listing, indentation of the code has been used to highlight the various levels of nesting of the blocks from figure I . BLOCK B BLOCK E BLOCK D BLOCK F START OF PROGRAM (level A) BGN (level Bl BGN (level C) END BGN (level Dl END END BGN (level E) BGN (level F) END BGN (level Gl BGN (level HI END BGN (level II BGN (level J) END BGN (level K) END END END END BGN (level L) END END (end of assembly) BLOCK G BLOCK I Figure I : This hierarchy diagram shows the relationships between the func- tional blocks used In the example of listing 2. Of the 12 blocks In the system of this program, only a maximum of five are ever active and using up space In the symbol table at any one time. Any entry point referenced at the be- ginning of block A during the I pass assembler's operation Is available to any block In the hierarchy even If It is not defined until the end of the assembly. 45 This general arrangement is significantly modified, however, by the 1 pass nature of the Tiny Assembler. In this case, a symbol "belongs to" the first block that references it rather than the block that defines it as a label. Therefore, a symbol that is defined and used at a low level is inaccessible to higher levels as usual, but symbols that are first referenced in a low level block of code and then defined as a label in a later higher level block of code cannot be handled by the assembler. This is because the symbol be- longs to the low level block, and both the forward reference table and the symbol table will be cleared of all references to such a symbol at the end of the low level block. This problem of what level the symbol belongs to can be avoided by requiring such symbols to be first entered into the symbol table by a high level block of code (as a forward reference if need be). In this way the symbol and all references to it will be- long to the high level block and will stay in the tables while low level blocks are created and ended. When the symbol is finally used as a label, all unresolved references to it will be resolved, even those which were made in blocks which have been terminated and no longer exist. In general, a symbol must be entered into the symbol table at a level equal to or higher than every reference that is made to it. It is therefore a good idea to define common subroutines early in the program or to make reference to their entry point names in the highest levels of the structure. To illustrate how these rules are applied, consider what symbols are "known to," or can be referenced by code within block G in the example in figure 1. Any items in A and E that have already been used can be referenced because they are ancestors. Any items within G itself can of course be referenced. This was the scope of the origi- nal versions of the Tiny Assembler. The entry points of H and I can be referenced because they are direct descendants. The entry point of B can be referenced because it is an ancestor's sibling that has already been defined. The entry point of F can be referenced because it is a sibling that has already been defined. Any items first used within H, I, J or K cannot be referenced by G because they belong to a lower level. Any information about C and D that was not originally referenced in A is unavailable be- cause they are cousins. The entry point of L (if not yet used) and any items in A and E that have not yet been used cannot be made a forward reference because they will not be defined until after references to them from G have been removed. When a program is structured as a net- work instead of a simple hierarchy, things become a bit more complex because of rela- tionships that cross between branches of the structural tree. The same rules apply when determining what can be referenced from what, however, so a program's block structure should be planned so that multiple paths within the network can be contained within a single block to reduce or eliminate forward reference problems. For programs with a moderate number of symbols or extremely complex forward references, the whole assembly may be con- sidered a single block. In this case, no BGN statement need be used at all. The first END statement that is encountered ends the pro- gram much as it does in the original versions of the Tiny Assembler. It should be pointed out that the entire table of currently active symbols is searched during symbol processing. Therefore, a block may not redefine a symbol used by an earlier but still active block. If this is tried, a dupli- cate symbol error will occur. This restriction is based on the fact that a 1 pass assembler allowing redefinition of symbols at a local level could not tell the difference between a forward reference to a redefined local symbol and a backward reference to an existing global symbol. Therefore, symbols may only be reused after they have been deleted from the symbol table by an END statement. As it turns out, the hierarchical structuring scheme of the Tiny Assembler is similar to other structural languages such as PL/I, but the restrictions on redefining symbols and the rules determining what level of the structure a symbol belongs to make the structuring of source programs for this assembler unique. While developing the methods used to handle BGN and END statements it became evident that the deletion and possible reuse of symbols would make it very difficult to produce a complete symbol table dump at the end of the program. In fact, there may never be a complete symbol table during an entire assembly (a situation which re- quires a 1 pass design by the way). There- fore, each END statement terminates a structural block as if it were a complete program. All unresolved forward references to symbols first used in the current block are listed and the user is given a chance to abort the END statement. If it is aborted, the user will reenter the block, and may con- tinue with corrections and additions as if the END had not been entered. If the user does not elect to abort the END statement, a sorted symbol table listing is provided for the completed block. In this way, every 46 ORDER FORM KIT ASSEMBLED rn 4KROM [ I 8KSC-Z I I 68KSC I 8KSC I [Write KIT in each box the quantity of each part required] ASSEMBLED KIT AS SEMB LED WWC I I I I B8EXT-L I | 88 EXT I I I I 68WWC | | 68EXT-S I i I I BBUC [in ASSEMBLY AND OPERATING MANUAL $4.00 mam... iiBErU-Siii NAME_ PLEASE PRINT OR TYPE ADDRESS. CITY . STATE . ZIP. SEND CHECK • MONEY ORDER • COD'S ACCEPTED • CREDIT CARDS SEALS ELECTRONICS, INC P.O. BOX 11651 KNOXVILLE, TN 3791 9 MOST ORDERS SHIPPED WITHIN 1 0WORKING DAYS I I II M II I II "■'■^"Vl I II I I I I I I M I I I I I I I M I ■|_L1JJ :;-.'." 3lyill| [READ ONLY MEMORY] ■ ^^^Rpt up to 16 ea. 1702-A or 5203 EProm Providing up to 4096 words of non-volatile mennory for Boot Loads to Complete Programs. ■ Programming Available at Factory for $3.00 per EProm when accom- panied by binary formated tape. ■ Each 1702-A has its own Vgg clocked for Low Power Consumption. ■ Will work with the weakest power supply based S-100 buss computer. ■ Switched Selected Address in 4K Blocks, ■ Switch selected wait states so that even the slowest 1702-A can work in your system. 0-8 wait states. ■ Solder Masked on both sides of PC Board. ■ Component Screened on Component Side of PC Board. Kit Pries: . . $119.00 Assembled Price: . . .$179.00 [STATIC MEMORY CARD FOR SWTPC 6800] ■< 8192 Words of Static Memory Access Time: 500 nsec. (250 nsec on request) Memory Chip 91 L02 APCior 21 02AL-4 I Battery Standby Address Selected 8 Ea, SPST Dip Switch Low Power All Lines Buffered, All IC's with sockets I Solder Masked on both sides of PC Board. Kit Price: $269.00 Assembled Price: .$369.00 [STATIC MEMORY CARD] ALTAIR®IMSAr®and S-100 buss compatible. Access Time: 250 nsec max. Ziloq Speed Compatible up to 4 mhz. Memory Chip: 2102LHPC or 2102AL-2 Battery Standby: >1 .5 to 4 volts< Address Select: 8 ea. Spst, Dip Switch. Wait States: None Current Reg,; Less than 200 ma per 1 K All Address, Control, and Data out lines fully buffered. All IC's supplied with IC Sockets Solder Masked on Both Front and Back of P,C. Board , Circle 214 on inquiry card. Kit Price: $295.00 Assembled Price: . . .$395.00 Item No. 8KSC WWC 88 EXT 68Ext-S 68 Ext-L 68 WWC BBUC OTHER SEALS ELECTRONIC PARTS AVAILABLE Description Kit Price Assembled Price 8K Static Memory Card 500 nsec $269.00 $369,00 Wire Wrap Card $ 37,50 $ 47.50 88 Extender Card $ 29.00 $ 38.00 Extender Card (Small) SWTPC EBoiiciin<»ai.ti»i>>o♦♦♦♦******♦•* •******««** 42 43 45 42 43 4b 42 43 45 32 00 OO >* EXA>1PLFS OF THE EXTF^J^'F^ TI'sJY PSSEMPLFU FtlNHTIONS FCC 5,4FCIE STF.TVn LEMCTH = 5 FCC /APCrE/ STF.r^Jt- rFLUnri-S CA^ PF '^^JY FCC ;«pcie; ^jom mij>if.p.ic uoLin nimHACiFE FCP Fl P •^,VV USE OF AF05TF.0PHF IVJ FTP OM I FaPVAF.r PFFFPFMC"^ IM FCP < FIP EOU 3 ECU SIFFF >CONTIMUE OF.C- 1 1 00 > FTP CONTINUE >«PAGE JFS'I.VF FOUPPr IFFFFFMCF5 TM PPFl/ini'S FCF fl HP MOTE USE OF COMMA Q5 LITEFAL ANT AS A IJFLIMITEP APOUE FULL FUNCTION OPG STATEMENT LOCM Bl B2 E3 0102 0102 0102 0108 0102 0102 B6 00 00 0105 B6 00 00 01 OH 01 OR 0108 Bfi 00 00 > 01 OB B6 00 00 > 01 OE B6 00 00 > 01 1 1 > *•• UMP.ESOLVED: CCCC 01 OF »•• SYMBOLS? Y CCCC 0000 01 II OOFF > 0103 00 FF 0109 00 FF 01 II > »*• UNF.ESOLUEr: EPBP 0106 B8PB OlOC *•• SYMBOLS? On 1 0001 > 0106 00 01 OlOC 00 01 01 1 I > *** UNFESOLVEII *** SYMBOLS? EXAvpLF OF FOl.vAFI FEFFFFNCF HA-OIMMO PON LFAA AAAA LIAA PPPP nxtlfvf:l pp'v] UFA AAAA LfAA PPPF LIAA CCCC 51APT NFU STFl'CTUI AL 91. Or^ FSTAPLISW f-OFVApi PFFFUFNCFS SIAPT AMOTHEF STPUCTUF.PL Pr.nCK PFFFPEMCF ALFFAFY FSTAPMSHFI PPPP ALSO ESTABLISHED FEFEHENCE TO MEU 11 FM END OF NXTLEVELp CCCC IS UMlFFIMEr PFSOLVF SYMPOL AAAA AAAA OOFF BEBB 0001 vJXll, 01 1 I 01 1 1 > EN *** UNEFSOLVEI : ••• SYMBOLS? Y CONE 0100 rlDF 0102 IV EMI FtenPEF APOFT END AND FFFIMF PPPP END FWDtEF APAINJ END OF ASSEMBLY Listing 3: In addition to tlie reorganization of symbol table management and introduction of the BGN pseudooperation, a number of minor incremental Improvements were added to Version 3. 7 of the assembler. These are Illus- trated here, and are described in more detail in the text of the article. likely to be reached. All programs have a root segment and a list of global symbols which exist throughout the entire assembly. As the program increases in size, the root segment usually grows along with it, but at a slower rate. At some point it becomes impractical to try to fit ever larger programs into the Tiny Assembler. The current design provides for 150 symbols when running in a 4 K machine. This is large enough to as- semble simple programs with ease, signifi- cant programs through moderate use of structural blocking, and large complex programs if need be. I don't really know what its practical limit would be now, be- cause as noted earlier, I haven't really used the Tiny Assembler enough. As an additional improvement, the Version 3.1 Tiny Assembler can now expand or contract to the user's requirements. If an 8 K machine were used, the symbol table could be increased to hold over 830 sym- bols. This could be effectively expanded into the thousands through the use of structural blocking. However, the sequential search times required to find symbols in such a table would no doubt start to become noticeable. Remember, this is supposed to be a TINY assembler, not competition for a full-scale standard assembler. Having addressed the capacity problem, I then returned to the minor changes that started this whole modification project in the first place. Several items which did not work as one might expect in the previous version have been changed to process in a more normal manner, and a larger subset of the Motorola 6800 assembly language definition is now supported. The following is a list of some of the major changes which have been made. They are illustrated (where possible) in listing 3. • The FCC pseudooperation will allow the use of character string delimiters as well as the previous string length operand. • The FCB statement will allow the use of literals following an apostrophe, and the FCB and FDB statements may now make forward references. • Delimiters such as the comma (,), space ( ), plus (-I-) and minus ( — ) may be used as literals after an apostrophe. The apostrophe itself may be used as such a literal. • If a label is used with an ORG state- ment, its value (as well as the program counter) is set to the value of the operand. • Execution of the assembler after an assembly has been completed invokes the cold start rather than the warm 48 start entry point so that different programs being assembled at the same time are completely separated. Within a given assembly, however, restarts are still from a warm start entry point. A warm start uses the old symbol table contents, and a cold start clears the entire symbol table before entry. • The Tiny Assembler can now be stored in its entirety in ROM or PROM, and it is more easily relocatable. • The forward reference and symbol tables can be redefined at a location and size determined by the user. • A comment line starting with *P will produce a page break and a new heading (eg: *PAGE). While modifying the assembler, I found the need for a simple, quiet (on a Teletype) loader to try out various program changes. As mentioned in previous articles, there are two types of loaders for the Tiny Assembler. Those handling complex forward references must first zero memory and then add each byte of generated code to the current memory value (a single memory location may have several components added to it). Those handling corrections made by the user when the assembler is used interactively must simply replace whatever is currently in memory with the generated code. Since I tend to have many more errors to correct than complex references to handle, the loader shown in listing 4 was developed to complement the one listed in the Tiny As- sembler User's Guide. If the assembler's stack is relocated from A07F to A042 (which is easy to do: simply change loca- tions 06D3, 06D4 of Version 3.1), the as- sembler and the loader can remain resident in a 4 K machine at the same time. The code: LDAA #$3C STAA $8007 will suppress the echo on input for any program using the standard Motorola MIKBUG input routines. In this case it allows the Teletype to read the Tiny As- sembler load tape without having the print mechanism chattering away. The current version (3.1) of the Tiny Assembler is quite a powerful assembly pro- gram which will operate within very tight memory restrictions. In larger machines this may mean more space can be made available for an input source buffer, moni- tor, editor, assembled object modules or other memory resident programs. In small machines it may mean the difference be- tween being able to assemble anything at all or not. Listing 4: A "quiet" loader is one which demurely purrs as it loads in from the reader of a Teletype, ignoring the noisy printer. This is a loader capable of residing in the IVIotorola MIKBUG program's scratch pad and loading object code from the Tiny Assembler Note that there is no end of tape character, nor facilities for rereading the loader tape for verification, nor error handling outside of that provided by the IVIotorola MIKBUG monitor's routines. LOCM Bl ne B3 0000 >-![*♦** + * *+*+**♦+**+**+*******♦**********♦*** 0000 >« *■ 0000 >* 'QUIF.T * LOflrFf< FOR THE TIMY ASSE^PLFP * 0000 > * * 0000 *i(i,*M*'*********"f ******* ^iHf********** ******** 0000 > E055 J-HEXIN FQU SE055 MIKPUO HEX PYTF !M E0^7 >aiiHrt'^ EQU S,EOi47 MIKPUG AirFESS I -v] El AC >CHAprM FQU SEIAC MIKPUG CHARACTEF IM ElDl >CHAROUT EQU SEin MIKPUG CHARACTER OUT 0001 >STAFT ECU 1 START LOAFING CHAF 0001 >STOP EQU 1 STOP LOAriNG CH-ir 0000 > AO-iiR > ORG iAO^R fiO^R 00 oo > FCB LOAFEl-, LOi^r STAFTiMG arrp. AO-iiA R6 3C > LOADER LI AA »S3C SUPPRFSS ECHO FOR AO-ye AO 'JA AOiC BY HO 07 > STAA SR007 IMPI'T AO'^F R6 3E > LDAa # •> PRIM7 ■RE'^rY ^lAFK- A051 BL Kl ni > JSR CHAFOUT AOb"^ PD Fl AC > SEARCH JSR CHAR IN SEARCH EOF START A057 61 01 > C- PNK SEARCH A05B BL' FO ^7 > jsr. ADRIM GET LOAI IMG APrFFSS A05E Br Fl AC >LO0P JSH CHARIM RFAF NEXT CHARACTEF 006 1 Rl 01 > C^PA fSTOP IF STOP COTE THFM A063 27 FF > PEG SFAHC" SEARCH FOR NXT PLOCK flOf>5 PP EO 5S > JSR HEX IN ELSE REAP HEX PYTF A068 A7 00 > STAA X STORE II A06A 08 > INX INCREMENT AUDRFSS A06P 20 F! > BRA LOOP AND CONTINUE A06D > A06r -> EWD END OF ASSEf^DLY *** UMRESOLVEn *** SYMBOLS? Y ADKN V.Q^il CHAM FIAC CHAT Firi HEXN F055 LOAF AO^A LOOP AOSF SFAH f^O'^H STAT 0001 STOP 0001 I should point out that the development of the Tiny Assembler was not a 1 person project, but rather a collective madness that infected quite a few individuals. Several sections of Version 3.1 reflect the ideas and work of Al Losoff, Chuck Bram and George Kuss. As the assembler evolves, I would like to hear from others who have found new and wonderful ways to improve, modify or adapt the program to different environ- ments and requirements. By the way, I do not have the facilities to answer requests for copies of the Tiny Assembler. Contact BITS, 70 Main St, Peterborough NH 03458, for the PAPERBYTESTM edition of Tiny, or the Milwaukee Computer Store, 6916 W North Av, Milwaukee Wl 53213, for an AC-30 cassette of the object code ($6)." Editor's note: As this article goes to press, Version 3.0 of Tiny Assembler 6800 is available as a 40 page book complete with user's guide, machine readable (bar code) object listing and complete assembly listing. The price of this book is $7 plus 35 cents postage and it may be ordered through BITS. In preparation as this article goes to press is the Version 3. 1 supplement to the original book, which will contain documentation of these extensions, machine readable (bar code) object listing, a reprint of this article, and a complete Tiny Assembler 6800 Version 3.1 source listing. Write BITS at 70 Main St, Peterborough NH 03458. 49 Qescpiption Recognition for Heuristics SpeechLab A new star is born. The Heuristics voice input board for the Altair (S-100) bus is an interesting new option for personal com- puting enthusiasts. Now, for $250 one can add voice input to the computer. The first thing I noticed about the Heuristics SpeechLab was the price, $250 in lility subject to change without notice. SCELBI Books are available in many fine Computer Stores. Circle 218 on inquiry card. Personal Computer Network TeaCinbal Fopum The PCNET (Personal Computer NET- work) Committee has been functioning in the Palo Alto area since the April 1977 West Coast Computer Faire. The committee's goal is the creation of regional (followed by national) personal computer networks for the computer to computer transfer of mes- sages and files. A set of network protocols (sets of conventions defining all levels of intercomputer communication) is almost completely designed. These protocols should be operable in 8 K bytes of machine copy, and are designed to be implemented in string BASIC. The committee believes this should be attractive to personal computer users. Parti- cipation will be voluntary; you can decide to participate (or not) on any given day of network operation. Network functioning will be relatively insensitive to the absence of an appreciable fraction of member com- puters. Our current thinking indicates the fol- lowing tentative equipment required for par- ticipation in the network: • A personal computer with 12 to 16 K of user memory and string BASIC. • An originate/answer MODEM cap- able of 300 bps. A message service: the ability to send a message (generally English text, although almost any file can be sent) is quite val- uable. It doesn't sound very dramatic, but it is surprising how powerful and efficiency improving such a message exchange facility is. What keeps ordinary message services (telephone, telegraph, mail) from working well seems to be a combination of factors: too slow (mail); often hard to catch some- one (phone); difficult or time consuming to use (mail, telegrams); expensive in terms •Hr** M " -I THE SAME 8K STATIC MEMORY KITS YOUVE PURCHASED IN THE PAST, NOW ASSEMBLED AND TESTED 790 HAMPSHIRE RO., A+ B WESTLAKE VILLAGE CA 91361 TEL: (805)497-0733 H GiAn-ic inc. SPECIFICATIONS: Access Time: Power Consumption; Address Unes: Memory Protect; Power Regulators; Address Select; Output Disable: Board: Not affiliated with Vector General, inc. mmr^ "Fast 8" 260 ns, Fairchltd 2102LHPC "8K BABY" 450 ns, FoircNld 2102L1PC No Wait States "Fast8",1.6Aat+5V "8KBABY".l3Aat+5V Schmitt triggers for buf- fering Hardware 8K 4ea.7805 Dip sv\fltch occessobte from top of board. No rieed to remove iDoard to re- locate. Permits use with trans- parent loader Quality G-10 nnaterid with solder mask both sides 59 Circle 204 on inquiry card. THE LATEST IN TAPE SYSTEMS MODEL CC-8 - $175^0 fm; WVHimiin'v 2SIO (R) CONTROLLER MODEL 3M3A - $220.00 $190.00 ($160.00 Kit) 4800 BAUD CASSETTE RECORDER An ASYNCHRONOUS NRZtype Recorder with remote motor start/stop. Error rate 10^ at 4800 BAUD. Can be used from 110 to 4800 BAUD into a UART or "Bit Banger PIA" - no clocl- 3.3K -VA- 2N3638 (OR ALMOST ANY PNP TRANSISTOR) ]^ ANY KIND OF SPEAKER m Figure 2: A speaker driver circuit designed to accept square or rectangular waves and produce audible tones through a loudspeaker. In this particular application the circuit is driven from an output port bit of a KIM-I micro- computer, although the circuit can accept any TTL compatible output port bit. When the input to the circuit is a logical level, the transistor turns on and drives the speaker. When the input is a logical I , the transistor turns off and current to the speaker is interrupted. loop that can be written is 5 ^5, assuming that the inner loop count (frequency argu- ment) is 256 or less and that it is held in a register. The total time spent in the loop is [(5xM)-1]) microseconds, where M is the frequency argument and the -1 is due to the shorter execution time of an un- successful branch. (The observant reader will note that the execution time of some 6502 instructions is altered if they cross a memory "page boundary"; thus, an assumption of no page crossing is made.) But there is still the time required for a pass through the outer loop to output a pulse and decrement the duration counter. This is termed "loop overhead." For an example, let's say that the loop overhead is 25 ^is. As a result, the total outer loop time is [(5xM)-1+25],or [(5xM)+24] microseconds which is the period of the audio waveform output. In order to determine the M re- quired for a particular note, a table of note frequencies (see table 1) is consulted. Then the equation. M= (' iQfi -24^ where F is the desired frequency, is solved for the nearest integer value of M. Lower frequency notes are preferred so that the percentage error incurred due to rounding M is minimized. The duration argument is actually a count of the number of audio tone cycles which are to be generated for the note, and thus its value is dependent on the tone frequency as well as the duration. Its value can be determined from the rela- tion N=DxF, where N is the duration argu- ment, D is the duration in seconds, and F is the note frequency in Hertz. As a complete example, let's assume that an eighth note G# an octave above middle C is to be played, and that the piece is in 4/4 time with a metronome marking of 80 beats per minute. Since an eighth note in this case is one half of a beat, the duration will be 0.5x60 80 or 0.375 seconds. The note table shows that the frequency of G#an octave above middle C is 830.6 Hz, which yields a frequency argument of 236. The duration argument is 311. So if TONE is called with these para- meters, a nice G# eighth note will be pro- duced. Now let's go a step further and look at a practical "music peripheral" and TONE sub- routine. Figure 2 shows a circuit for driving a speaker from any kind of TTL compatible 64 Wave Duty Cycle Fund 2 3 Harmonics 4 5 6 7 8 9 10 1/2 1.00 0.333 0.200 0.143 0.111 1/3 1.00 0.500 0.250 0.200 0.143 0.125 0.100 1/4 1.00 0.707 0.333 0.162 0.236 0.143 0.111 0.141 1/5 1.00 0.841 0.561 0.259 0.173 0.240 0.210 0.116 1/6 1.00 0.867 0.667 0.433 0.200 0.143 0.217 0.222 0.173 Table 2: Harmonic amplitudes of rectangular waves. Note that, unlike square waves, asymme- trical rectangular waves contain even numbered liarmonics. This simple technique of varying the duty cycle of such waves can have an appreciable effect on the timbre of the resulting sound. output port bit, including those found in the 6530 "combo chips" used in the KIM-I. When the output port bit is a logic level, the transistor turns on and drives a current determined by the volume control setting through the speaker. When the bit is a logic 1, the current is interrupted. Larger speakers or even a high fidelity speaker system will give a richer timbre to the lower pitched tones. The AUX input to a sound system may also be used instead of the transistor circuit. Using a patch cord, connect the shield to the common terminal of the power supply and the center conductor to the output port bit through a 10 K to 100 K isolation resistor. Listing 1 shows an assembled listing of a practical timed loop tone generation sub- routine for the 6502 microprocessor. Several refinements beyond the flowcharted example have been made to improve tone quality and flexibility. The inner waiting loop has been split into two loops. The first loop determines the length of time that the output rectangular waveform is to be a logic 1 and the second loop determines the time. If both loops receive the same frequency argument (which they do as written) and the loop time of both loops is the same, then a symmetrical square wave output is produced. However, if one or more "do nothing" instructions is inserted into one of the two loops, the output waveform will become nonsymmetrical. The signifi- cance of this is that the rectangular wave- form's duty cycle affects its harmonic spectrum, and thus its timbre. In particular, there is a large audible difference between a 50%-50% duty cycle (square wave) and a 25%-75% duty cycle. Table 2 lists the harmonic structure of some possible rec- tangular waves. As a result, some control over the timbre can be exercised if a separate TONE subroutine is written for each "voice" desired. Unfortunately, if this is done the frequency arguments will have to be recom- puted since the outer loop time will then be altered. Real music also possesses dynamics, which are the changes in overall volume dur- ing a performance. Furthermore, the ampli- tude envelope of a tone is an important con- tributor to its overall subjective timbre. The latter term refers to rapid changes in volume during a single note. This is the case with a piano note, which builds up rapidly at the beginning and slowly trails off thereafter. Of course the setup described thus far has no control over either of these parameters: the volume level is constant, and the enve- lope of each note is rectangular with sudden onset and termination. 1700 MPORT = X'1700 OOEO DUR = X'EO 0100 A2FF TONE: LDX ffX'FF 0102 8E0017 STX MPORT 0105 AA TAX 0106 CA WHICH: DEX 0107 DOFD BNE WHIGH 0109 FOOO BEQ .+2 OlOB FOOO BEQ .+2 OlOD FOOO BEQ .+2 OlOF FOOO BEQ .+2 0111 FOOO BEQ .+2 0113 A200 LDX 110 0115 8E0017 STX MPORT 0118 AA TAX 0119 CA WLOW: DEX OllA DOFD BNE WLOW one C6E0 DEC DUR OllE D005 BNE TIMWAS 0120 C6E1 DEC DUR+1 0122 DO DC BNE TONE 0121 60 RTS 0125 FOOO TIMWAS: BEQ .+2 0127 FOOO BEQ .+2 0129 D0D5 BNE TONE TONE SUBROUTINE FOR 6502 ENTER WITH FREQUENCY PARAMETER IN ACCUMULATOR DURATION PARAMETER STORED AT LOCATION DUR (LOW PART) AND DUR+1 (HIGH PART) WHICH IS ASSUMED TO BE IN PAGE ZERO ROUTINE USES A, X, AND DESTROYS DUR LOOP TIME = 10«(FREQ PARAMETER)+114 MICROSECONDS ADDRESS OF OUTPUT PORT WITH SPEAKER ARBITRARY PAGE ADDRESS OF DURATION PARM SEND ALL I'S TO THE OUTPUT PORT TRANSFER FREQ PARAMETER TO INDEX X WAIT LOOP FOR WAVEFORM HIGH TIME TIME IN THIS LOOP = 5«FHEQ PARAMETER WAIT 15 STATES TO MATCH TIME USED TO DECREMENT AND CHECK DURATION COUNT AFTER WAVEFORM LOW TIME SEND ALL O'S TO THE OUTPUT PORT TRANSFER FREQ PARAMETER TO INDEX X WAIT LOOP FOR WAVEFORM LOW TIME TIME IN THIS LOOP = 5»FREQ PARAMETER DECREMENT LOW PART OF DURATION COUNT BRANCH IF NOT RUN OUT DECREMENT HIGH PART OF DURATION COUNT GO DO ANOTHER CYCLE OF THE TONE IF NOT RETURN WHEN DURATION COUNT RUNS OUT WASTE 7 CYCLES TO EQUAL TIME THAT WOULD HAVE BEEN SPENT IF HIGH PART OF DUR WAS DECREMENTED AND GO DO ANOTHER CYCLE Listing I : An assembled listing of a practical timed loop tone generation sub- routine for the 6502 microprocessor. This routine is an elaboration of the flowchart shown in figure I which allows the user to generate nonsymmetri- cal rectangular waves. Experimenting with the wave 's duty cycle affects the harmonic content of the resulting tone and creates many interesting aural effects. 65 By graduating to a more sophisticated music periplieral, control of dynamics and amplitude envelopes can be achieved with a timed loop music program. The secret is to use a digital to analog converter connected to all eight bits of the output port. A digital to analog converter (DAC) does just what its name implies: it accepts a binary number from the output port as input and generates a corresponding DC voltage as its output. BIT 7 [^>- (MSB) BIT 6 I ^ ICI 4050 BIT 5 I ^ BIT 4 I ^ BIT 3 I 'y- BIT 2 I ^ BIT I [^>- BIT I ^ (LSB) + 5V IC2 4050 lOOfl — vv^— ^e- 2Z0uF 6V 47K 47K 47K 47K 47K -Vl/V- 47K -AAA— 47K -AAA/- 47K 47K 6 47K 47K 47K 47K 390K 820K _A>AAr- I 6M — ^AA^ ANALOG OUTPUT NOTE: ABOVE RESISTORS MUST BE 5% CARBON FILM TYPES. 47K SHOULD BE FROM THE SAME BATCH Figure 3: An 8 bit digital to analog converter (DAC). This circuit accepts an 8 bit binary number from the output port and generates a corresponding DC voltage as its output. The output voltage from this circuit is equal to ((1/255)- x5) V, where I is the decimal equivalent of the 8 bit input which can take on any value from to 225. The circuit in figure 3, which can be used with any TTL compatible output port, gives an output voltage V= I ^255 1x5 where I is the binary number input between and 255. When working with this kind of DAC, it is convenient to regard the binary number, I, as a fraction between and 1 rather than an integer. The benefit of this will become apparent later when calculations will be performed to arrive at the value of I. The output of the DAC must be used with a sound system or the amplifier circuit in figure 8, not the simple transistor speaker driver circuit in figure 2. As written, the TONE subroutine (see listing 1) alternately sends and 255 to the output port with the music peripheral. With a DAC connected to that port, voltages of and 5 V will be produced for the low and high portions of the rectangular wave. If instead and 127 were output, the DAC would produce only and 2.5 V giving a rectangular wave with about half the amplit- ude. This in turn produces a less loud tone, and so control over dynamics is possible by altering the byte stored at hexadecimal 101. Arbitrary amplitude envelopes are also made possible by continuously exercising control over the amplitude during a note. Simple envelope shapes such as a linear attack and decay can be computed in line while the note is being sounded. A more general method is to build a table in memory describing the shape. Such a table can be quickly referenced during note playing. Great care must be taken, however, to insure that loop timing is kept stable when the additional instructions necessary to implement amplitude envelopes are added. More Complex Techniques Even if all of the improvements men- tioned above were fully implemented, the elementary timed loop approach falls far short of significant musical potential. The primary limitations are a narrow range of tone colors and restriction to monotonic performance. The latter difficulty may be alleviated through the use of a multitrack tape recorder to combine separate parts, but this requires an investment in noncomputer hardware and is certainly not automatic. Also, unpitched percussive sounds such as drum beats are generally not possible. Musi- cians, too, will probably notice a host of other limitations such as lack of vibrato and 66 The complete $655 line printer. It's ready to plug in, has an 80-column format, a remarkable MTBF and is 14 times faster than a teletype! Breaking the hardcopy barrier It's finally happened! The Axiom EX-800 provides full performance hardcopy at a price compatible with today's low cost micros. This little 80-column machine zips along at 160 characters per second (14 times faster than a teletype) — at a breakthrough single quantity price of $655 for a complete printer. Wiien we say complete we mean it The EX-800 is a stand-alone unit with case, power supply, 96 character ASCII generator and interface, paper roll holder, infra-red low paper detec- tor, bell, and multi-line asynchronous input buffer You won't find these standard features on any other printer, regardless of price! Our only option Our printer is so complete, that we offer only one option. A serial inter- face (RS 232C or current loop) good for 16 baud rates from 50 to 19,200 and thoughtfully provided with a switch for either Centronics or Tally compatibility. Might we call it a Tally- whacker? At $85.00 it certainly should be! Built-in LSI microprocessor The heart of the EX-800 1 is a printed circuit card, containing a ' custom LSI chip made by Intel to Axiom specifications, which controls all printer functions. Microprocessor power means flexibility. Such as the built-in self test routine and variable &smm character size. It also means reliability. Several industry surveys have shown LSI to be many times more reliable than equivalent conventional circuitry. the paper is inexpensive and readily available, costing about 10 for an 8^2 X 11" equivalent. Light, small, quiet, reliable, and versatile Our EX-800 weighs in at 12 pounds, is just 91/2 inches wide, 4 inches high, and 11 inches deep, and is delightfully quiet which makes it ideal for office and other low noise environments. The simple print mechanism is virtually maintenance free. In fact, tests show an incredible MTBF, many times greater than impact printers. This versatile printer is the ideal mate for micros, minis, CRTs, instruments and systems. yV i y i c ti i t L iJi :eb LEV | i i^ • ^ i. V _uQii pU i el i L iJ The advantages of electrosensitive printing The EX-800 can print 80, 40, or 20 characters across the five inch wide electrosensitive paper Under software control, single characters or words may be printed larger for emphasis. The permanence of the hardcopy is archival, because once the aluminum coating has been re- moved, there is no way to put it back. It's unaffected by sunlight, moisture or heat. Although the printer doesn't provide multiple copies, excellent quality photocopies can be made from the high contrast printout. Also, Just unbox and plug it in That's all you have to do to the Axiom EX-800 — apart from pay for it, and at $655 that's almost a pleasure. Circle 221 on inquiry card. AXIOM CORPORATION 5932 San Fernando Rd., Glendale, CA 91202 • (213) 245-9244 • TWX 910-497-2283 I I I I I I I I ■ I L Send to: 5932 San Fernando Rd., Glendale, CA 91202 □ Urgent. Please phone me at ext □ Have rep contact me □ I'd like to have a demonstration □ Send lit including sample of printout Name Company _ Depl Address _. City_ Zip- -State - _ Telephone _ 1.0 I.I 1.2 TIME ImS) Figure 4: A sine wave as it would appear at the output from the digital to analog converter shown in figure 3. Each step in the approximation of this wave is called a sample. This parti- cular illustration shows a 1.2 kHz sine wave sampled at a rate of 25,000 samples per second. The resulting waveform is only a very rough approximation of the original, but low pass filter- ing can improve accuracy (see figure 5 and text). other subtle variations. All of these short- comings may be overcome by allowing the computer to compute the entire sound waveform in detail at its own speed. The one fundamental concept that makes direct waveform computation possible is the sampling theorem. Any waveform, no matter how simple or complex, can be recon- structed from a rapid series of discrete, vol- tage values by means of a digital to analog converter such as the one used earlier. As an example, let's try to generate an accurate sine wave using a DAC. If this can be done, it follows from the Fourier (harmonic) theorem that any other waveform may also be synthesized. Figure 4 shows a sine wave as it would appear at the DAC output. Each step on the approximation to the sine wave is termed a sample, and the frequency with which these samples emerge from the DAC is the sample rate. An attempt is being made in the example to generate a 1.2 kHz sine wave at a sample rate of 25 kHz, or one sample every 40 /MS. Obviously this is a very poor sine wave, a fact that can be easily demonstrated with a distortion analyzer. Before giving up, let's look at the fre- quency spectrum of this staircase-like wave on a spectrum analyzer. The spectral plot in figure 5 shows a strong frequency com- ponent at 1.2 kHz which is the sine wave we are trying to synthesize. Also present are the distortion component frequencies due to the sampling process. Since all of the distortion components are much higher in frequency than the desired signal, they may be easily removed with a sharp low pass filter. After filtering, the distortion analyzer will confirm that a smooth, pure sine wave is all that remains. What will happen if the sine wave fre- quency is increased but the sampling fre- quency remains constant? With even fewer samples on each sine wave cycle the wave- form from the DAC will appear even more distorted. The lowest frequency distortion product is the one of concern since it is the most difficult to filter out. Its frequency is FD=(FS-f) Hertz, where FD is the lowest distortion component frequency, FS is the sampling frequency, and f is the sine wave signal frequency. Thus as f increases, FD decreases until they merge at f=FS/2. This frequency is termed the Nyquist frequency and is the highest theoretical frequency that may be synthesized. Any attempt to syn- thesize a higher frequency will result in the desired signal being filtered out and the distortion frequency emerging instead. This situation is termed aliasing because the desired signal frequency has been replaced by a distortion component alias frequency. Operating close to the Nyquist frequency requires a very sharp filter to separate the signal from the distortion. With practical filters, signal frequencies up to 1/4 to 1/3 of the sampling frequency are realizable. 68 „ -5 2 < -15 LOW-PASS FILTER N^ ^RESPONSE \ 5 I 2 20 fZ5\ 30 35 23.8 26.2 FREQUENCY (KHz) 45 / 50 \ 55 60 48 8 51 2 Figure 5: The spectra/ p/ot of the staircase-like sine wave approximation shown In figure 4. This frequency versus amplitude graph indicates a strong frequency component at 1.2 kHz, the fre- quency of the sine wave. Normally, this would be the only frequency component to appear on a plot like this, but the presence of steeply rising steps in this waveform approximation Intro- duces distortion components at higher frequencies, as shown. Since any sound, whether it is a pitched tone or unpitched sound, is actually a combination of sine waves, it follows that any possible sound may be produced by a DAC. The only limitation is the upper fre- quency response, which may be made as high as desired by increasing the sample rate. The low frequency response has no limit, and extends down to DC. There is another form of distortion in DAC generated sounds which cannot be filtered out, since it is spread throughout the frequency spectrum. Quantization noise is due to the fact that a DAC cannot generate voltages that are exact samples on the de- sired waveform. An 8 bit converter, for example, has only 256 possible output vol- tage values. When a particular voltage is needed, the nearest available value will have to be used. The theoretical signal to noise ratio when using a perfect DAC is related to the number of bits by the equation S/N= (6xM)+4 decibels where M is the number of bits. A practical DAC may be as much as 6 db worse, but a cheap 8 bit unit can yield nearly 50 db, which is as good as many tape recorders. When using 12 bits or more, the DAC will outperform even the best profes- sional recorders. Thus it is apparent that computed waveforms can, in theory, be used to generate very high quality music; so high, in fact, that conventional audio equipment is hard pressed to reproduce it. Now that we have the tools, let's see how the limitations of computer music men- tioned earlier can be overcome. For tones of definite pitch, the timbre is determined by the waveshape and the amplitude enve- lope. Concentrating on the waveshape, it should be apparent that a waveform table in memory repeatedly dumped into the DAC will produce an equivalent sound waveform. Each table entry becomes a sample, and the entire table represents one cycle of the wave- form. The frequency of the resulting tone will be FS/N where FS is the sampling fre- quency (rate at which table entries are sent to the DAC) and N is the number of entries in the table. To get other frequencies, either the sample rate or the number of table entries must be changed. There are a number of reasons why the sample rate should remain constant, so the answer is to change the effective table length. If the table dump routine were modified to skip every other entry, the result would be an effective halving of table size and thus doubling of the tone frequency. If the table is fairly long, such as 256 entries, a number of frequencies are possible by skipping an integer number of entries. To get musically accurate frequencies, it is necessary to be able to skip a fractional number of table entries. At this point the concept of a table increment is helpful in dealing with programming such an oper- ation. First, the table is visualized as a circle with the first entry conceptually following the last as in figure 6. A pointer locates a point along the circular table which represents the sample last sent to the DAC. To find what should be sent to the DAC next, the table pointer is moved clockwise a distance equal to the table increment. The frequency of the resulting tone is now FSxl N where FS and N are as before and I is the increment. 69 Figure 6: Diagrammatic representation of tiie circular table used for storing the wave- form "template. " The technique illustrated here is that of storing a large number of samples of one cycle of a musical waveform in memory as a table which wraps around Itself in circular fashion. A pointer is used to point to the next sample to be extracted. In order to create a waveform with a given frequency, the program is designed to skip a fractional number of table entries to get the next sample value. This fractional number is called the table increment value. The process is continued around the table for one revolution to create a complete waveform. The cycle around the table is repeated until the duration counter decre- ments to zero. With integer increments, tiie pointer always points squarely to an entry. VVitli mixed number increments, the pointer also will take on a fractional part. The sensible thing to do is to interpolate between the table entries on either side of the pointer to arrive at an accurate value to give to the DAC. This is indeed necessary to assure high quality; but simply choosing the nearest entry may be acceptable in some cases, parti- cularly if the table is very large. There is one elusive pitfall In this tech- nique. The table may contain the tabulation of any waveform desired, subject to one limitation: a nonzero harmonic component of the waveform must not exceed the Nyquist frequency, FS/2. This can easily happen with the larger table increments (higher frequency tones), the result being aliasing of the upper harmonics. Theoreti- cally this is a severe limitation. Often a small amount of aliasing is not objectionable, but a large amount sounds like gross intermodu- lation distortion. High sample rates reduce the possibility or magnitude of aliasing, but of course require more computation. For the moment, we will ignore this problem and restrict ourselves to relatively smooth wave- forms without a lot of high frequency har- monics. Now that the DAC is used for generating the actual waveshape, how is amplitude con- trol accomplished? If an amplitude para- meter is defined that ranges between and 1.0 (corresponding to amplitudes between zero and maximum), the desired result is obtained by simply multiplying each sample from the table by this amplitude parameter and sending the product to the DAC. Things are nice and consistent if the table entries are also considered as fractions between -1 and -1-1 because then the product has a range between -1 and +1 which is directly com- patible with the DAC. (Note that the DAC in figure 3 is unipolar. It can be considered bipolar if +2.5 V output is the zero reference and the sign bit is inverted.) The last major hurdle is the generation of simultaneous tones. Obviously, two simul- taneous tones may be generated by going through two tables, outputting to two separate DACs, and mixing the results with an audio mixer. This is relatively simple to do if the sample rates of the two tones are the same. Actually, all the audio mixer does is to add the two input voltages together to produce its output, but a very important realization is that the addition can also be done in the computer before the output conversion by the DAC! The two samples are simply added together with an ADD instruction, the sum is divided by two (to constrain it to the range of -1 to +1), and the result sent to a single DAC. This holds true for any number of simultaneous tones! The only requirement is that the composite samples not overflow the -1 to-i-1 range that the DAC can accept. Rather than dividing the sum, it is best to adjust the amplitude factors of the individual "voices" to prevent overflow. So now we have the tools nece- sary to generate an ensemble of tones, each one possibly having its own waveform, amplitude envelope, and loudness relative to the others. Indeed, this is all that is necessary to simulate a typical organ. Up to this point the timbre (waveform) of a tone has been determined by the con- tents of a fixed waveform table. Truly inter- esting musical notes change their timbre during the duration of the note. A reason- able alternative to switching between similar tables for implementing this is to build the tone from harmonic components. Each harmonic component of the tone is simply 70 your/ mem ■ o ■ rv/"mem-(a)re/n, a: the power or process of reproducing or recalling what has been learned and retained esp, through associative mechanisms b: the store of things learned and retained from an organism's activity or experience as evidenced by modification of structure or behavior or by recall and recognition. There cire oaIi| 2 type/ off memori|« your/ onclour/. Our/ i/ the fl f ulli| /totic, /telle of the art RMn fSAA Fully ci//emblecl. #9 V #• burned in oncl le/lecl Addressable in 4K blocks at any sftf % 4K border by dip switch ... as if you had 4 individual 4K static boards Memory write protect and memoiv disoble (phantom] are controitable in 4K blocks by dip switch The state of the art TMS-4044(4K by 1 bit) fully static RAM by Texos Instruments "definition according to Webstets New \Atorld Diclranofy Single -t-8 voltpowerrequirement 4 independent 7805 voltage regulators, one for each 4K block. Typical worst case power dissipation is less than 2 amps Circle 222 on inquiry card. The all popular S100 bus,.. The 16K SPACE BYTE is fully compatible with the VECTOR -1. ALTAIR. SOL-20, IMSAI. POLY-B8, Z-80, COMPAL-80. and AM-100 (DMA DISK] THE SPACE BYTC CORPORATION 1720 Pontius Ave. Suite 201 Los Angeles. CA 90025 (213)468-8080 Listing 2: A program which, in conjunction with tables 3, 4 and 5, generates four simultaneous musical voices, each with a different waveform and volume level. The program is designed for use with the 6502 processor coupled to an 8 bit unsigned digital to analog converter (DAC) lil^e the one shown in figure 3. 1700 1701 1780 1C22 0000 00 0001 0000 0003 00 ooon 0000 0006 00 0007 0000 0009 00 OOOA 0000 oooc 0000 OOOE 0000 0010 0000 0012 0000 OOlll 00 0015 0000 0017 0002 0019 0000 OOIB ocoo OOID 5200 0100 0100 0102 0105 0106 0108 OlOA OlOC OlOE 0110 0112 0111 0116 0118 OllA one OllE 0120 0122 0124 0126 0127 0129 012B 012D 012F 0131 0133 0135 0137 0139 013B 013D 013F 0112 A9FF 8D0117 D8 A517 8515 A518 8516 AOOO A51B 8519 B115 F03C C901 F029 8511 E615 D002 E616 B115 AA B520 9119 E619 B51F 9119 E615 D002 E616 E619 A519 C911 D0E5 205701 1C0E01 0115 C8 0116 B115 0118 18 0119 C8 011A B115 one 8516 011E 68 011F 8515 0151 1C0E01 0151 1e221C DAC DAODIR AUXRAM KIMMON VIPT: V2PT: V3PT: VIPT: V1IN V2IN V3IN VI IN DUR: NOTES SONGA INCPT INCA: TEMPO MUSIC3: THIS PROGRAM PLAYS MUSIC IN 1-PART HARMONY ON THE KIM-1 OR OTHER 6502 BASED SYSTEM USING AN B-BIT UNSIGNED DIGITAL-TO-ANALOG CONVERTER CONNECTED TO AN OUTPUT PORT. TUNED FOR SYSTEMS WITH A 1 MHZ CRYSTAL eLOCK, DOES NOT USE THE ROR INSTRUCTION. SONG TABLE IS AT "SONG" ENTRY POINT IS AT "MUSIC" X'1700 X'1701 X' 1780 X' 1C22 .WORD WAV 1TB .BYTE .WORD WAV2TB .BYTE .WORD WAV3TB .BYTE .WORD WAV1TB .WORD .WORD .WORD .WORD .BYTE .WORD .WORD SONG .WORD .WORD VI IN .WORD 82 ORG AT PAGE LOCATION OUTPUT PORT ADDRESS WITH DAC DATA DRIECTION REGISTER FOR DAC PORT ADDRESS OF EXTRA 128 BYTES OF BAM IN 6530 ENTRY POINT TO KIM KEYBOARD MONITOR VOICE 1 WAVE POINTER, FRACTIONAL PART INTEGER PART AND WAVE TABLE BASE VOICE 2 VOICE 3 VOICE 1 VOICE 1 INCREMENT (FREQUENCY PARAMETER) VOICE 2 VOICE 3 VOICE 1 DURATION COUNTER NOTES POINTER ADDRESS OF SONG POINTER FOR LOADING UP VINT - VINT INITIAL VALUE OF INCPT TEMPO CONTROL VALUE, TYPICAL VALUE FOR 3:1 TIME, 100 BEATS PER MINUTE, DUR=61 DESIGNATES A QUARTER NOTE START PROGRAM CODE AT LOCATION 0100 MAIN MUSIC PLAYING PROGRAM LDA STA OLD LDA STA LDA STA LDY LDA STA LDA BEQ CMP BEQ STA INC BNE INC LDA TAX LDA STA INC LDA STA INC BNE INC INC LDA CMP BNE JSR JMP I NY LDA PHA INY LDA STA PLA STA JMP ffX'FF DACDIR SONGA NOTES SONGA* 1 NOTES+1 #0 INCA INCPT ( NOTES), Y ENDSNG #1 NXTSEG DUR NOTES MUSIC3 NOTES+1 ( NOTES ),Y FRQTAB+1,X (INCPT) ,Y INCPT FRQTAB.X (INCPT), Y NOTES MUSICl NOTES+1 INCPT INCPT //V1IN+2 MIISIC3 PLAY MUSICl ( NOTES ),Y ( NOTES ),Y NOTES+1 NOTES MUSICl SET PERIPHERAL A DATA DIRECTION REGISTER TO OUTPUT INSURE BINARY ARITHMETIC INITIALIZE NOTES POINTER TO BEGINNING OF SONG SET UP TO TRANSLATE 1 NOTE ID NUMBERS INTO FREQUENCY DETERMINING WAVEFORM TABLE INCREMENTS AND STORE IN VI IN - VlIN GET DURATION FIRST BRANCH IF END OF SONG TEST IF END OF SONG TABLE SEGMENT BRANCH IF SO OTHERWOSE SAVE DURATION IN DUR DOUBLE INCREMENT NOTES TO POINT TO THE NOTE ID OF THE FIRST VOICE GET A NOTE ID NUMBER INTO INDEX X GET LOW BYTE OF CORRESPONDING FREQUENCY STORE INTO LOW BYTE OF VOICE INCREMENT INDEX TO HIGH BYTE GET HIGH BYTE OF FREQUENCY STORE INTO HIGH BYTE OF VOICE INCREMENT DOUBLE INCREMENT NOTES TO POINT TO THE NOTE ID OF THE NEXT VOICE INDEX TO NEXT VOICE INCREMENT TEST IF 1 VOICE INCREMENTS DONE LOOP IF NOT PLAY THIS GROUP OF NOTES GO LOAD UP NEXT SET OF NOTES END OF SEGMENT, NEXT TWO BYTES POINT TO BEGINNING OF THE NEXT SEGMENT GET BOTH SEGMENT ADDRESS BYTES THEN STORE IN NOTES POINTER GO START INTERPRETING NEW SEGMENTT ENDSNG: JMP END OF SONG, RETURN TO MONITOR 1 VOICE PLAY SUBROUTINE a sine wave with an amplituiJe (dependent on tlie waveform of tine resulting tone. Giving a (different amplitude envelope to each harmonic is equivalent to smoothly changing the timbre during the note. The aliasing problem mentioned earlier can also be solved by simply omitting any harmonics that become too high in frequency. Dynamic timbre variation can also be accomplished by a digital filter which does the same thing to a sampled waveform that a real inductance-capacitance filter does to a normal waveform. A digital filter is simply a subroutine which accepts a sample value as an argument and gives back a sample value which represents the filtered output. The equations used in the subroutine determine the filter type, and other arguments deter- mine the cutoff frequency, Q, etc. This is a fascinating subject which deserves its own article. What about other, unpitched sounds? They too can be handled with a few simple techniques. Most sounds in this category are based in part on random noise. In sampled form, random white noise with a uniform frequency spectrum is simply a stream of random numbers. For example, a fairly realistic snare drum sound may be generated by simply giving the proper ampli- tude envelope to pure white noise. Other types of drum sounds may be generated by using a digital filter to shape the fre- quency spectrum of the noise. A resonant type of digital filter would be used for tom- toms and similar semipitched drums, for example. A high pass filter is useful for simu- lating brush and cymbal sounds. An infinite number of variations are possible. This is one area where direct computation of sound waveforms really shines. The sampling theorem works both ways also. Any waveform may be converted into digital samples with an analog to digital converter (ADC) with no loss of informa- tion. The only requirement is that the signal being sampled have no frequency com- ponents higher than half of the sampling frequency. This may be accomplished by passing the signal to be digitized through a sharp low pass filter prior to presenting it to the ADC. Once sound is in digitized form, literally anything may be done to it. A simple (in concept) application is intri- cate editing of the sound with a graphic . display, light pen and large capacity disk. The sound may be analyzed into harmonic components and the result or a transfor- mation of it applied to a synthesized sound. Again, this is an area that deserves its own article. 72 Applicotion Software ! t «M BASIC SOFJVVARE LIBRARV You can buy software from anybody - but ours works in your system. We only sell one product, Quality. We have been in business for over nine years building a reputation for providing a quality product at nominal prices — NOT what the traffic will bear. Our software is: • Versatile — as most programs allow for multiple modes of operation. • Tutorial — as each program is self prompting and leads you through the program (most have very detailed instructions contained right in their source code). • Comprehensive — as an example our PSD program not only computes Power Spectral Densities but also includes FFT's, Inverse-transforms, Windowing, Sliding Windows, simul- taneous FFT's variable data sizes, etc. and as a last word our software is: • Readable — as all of our programs are reproduced full size for ease in reading. • Virtually Machine Independent — these programs are written in a subset of Dartmouth Basic but are not oriented for any one particular system. Just in case your Basic might not use one of our functions we have included an appendix in Volume V which gives conversion algorithms for 19 differ- ent Basic's; thats right, just look it up and make the sub- stitution for your particular version. If you would like to convert your favorite program in to Fortran or APL or any other language, the appendix in Volume II will define the statements and their parameters as used in our programs. Over 85% of our programs in the first five volumes will execute in most 8K Basic's with 16K of free user RAM. If you only have 4K Basic, because of its' lack of string functions only about 60% of our programs in Volumes I thru V would be useable, however they should execute in only 8K of user RAM. Future additions: Soon to be releasedl A "fantastic" word processing package set up for lawyers, publishers and writers; and a Medical Billing system which will also allow a patients record to be individually scanned. AND there are f-umors that a 12K chess game, in Basic, will also be releas- ed. Volumes VI and VII available on our Firmware System. Vol. 1 - $24.95 Vol. Ill - $39.95 Bookkeeping Advanced Business Games Billing, Inventory Pictures Investments Payroll Vol. II - $24.95 Vol. IV - $9.95 Math/Engineering General Purpose Plotting/Statistics Basic Statement Vol. V - $9.95 Def. Experimenter's Program ® SCIENTIFIC RESEARCH 1712-B Farmington Court, Crofton, MD 21114 Phone orders call (800) 638-9194 Information and Maryland residents call (301)721-1148 Add $1.50 per volume tiandllng, all domestic stilpments sent U.P.S. except APO and P.O. Box wtilcti go parcel post. Foreign orders add $8.00/volume for air shipment and make payable In U.S. dollars only. AVAILABLE AT MOST COMPUTER STORES Master Charge and Bank Amerlcard accepted. Our Software is copyrighted and may not be reproduced or sold. Listing 2, continued: 0157 AOOO 0159 A61D 015B 015C 015E 0160 0162 01611 0167 0169 016B 016D 016F 0171 0173 0175 0177 0179 017B 017D 017F 0181 0183 0185 0187 0169 018B 018D 018F 0191 0193 0195 0197 0198 019A 019C 019E OlAO 01A2 01 AH 01A6 01A8 OlAA 18 8101 7101 7107 710A 8D0017 fl500 650C 8500 A501 650D 8501 A503 650E 8503 A501 650F 8501 A506 6510 8506 A507 6511 8507 A509 6512 8509 A50A 6513 850A CA D008 C611 FOOC A61D D0B9 DOOO DOOO DOOO D0B1 60 LDY LDX CLC LDA ADC ADC ADC ST A LDA ADC STA LDA ADC STA LDA ADC STA LDA ADC STA LDA ADC STA LDA ADC STA LDA ADC STA LDA ADC STA DEX BNE DEC BEQ LDX BNE BNE BNE BNE BNE RTS #0 TEMPO (V1PT+1),Y (V2PT+1),Y (V3PT*1 ),Y CV1PT-tl),Y X' 1700 VIPT V1IN VIPT V1PT+1 VlINtI V1PT+1 V2PT V2IN V2PT V2PT+1 V2IN+1 V2PT+1 V3PT V3IN V3PT V3PT-fl V31N+1 V3PT+1 VIPT V1IN VIPT V1PT+1 V1IN+1 VIPTtl TIMWAS DUF ENDNOT TEMPO PLAY1 .■f2 .+2 .t2 PLAYl SET Y TO ZERO FOH STHAIGHT INDIRECT SET X TO TEMPO COUNT COMPUTE AND OUIPUT A COMPOSITE SAMPLE CLEAR CARRY ADD UP 1 VOICE SAMPLES USING INDIRECT ADDRESSING THROUGH VOICE POINTERS INTO WAVEFORM TABLES STRAIGHT INDIRECT WHEN i INDEX = SEND SUM TO LIGITAL-10-ANALOG CONVERTER ADD INCREMENTS TO rOINTERS FOR THE 1 VOICES FIRST FRACTIONAL PARI THEN INTEGER PART VOICE 2 VOICE 1 DECREMENT S CHECK TEMPO COUNT BRANCH TO TIME WASTE IF NOT RUN OUT DECREMENT 4 CHECK DURATION COUNTER JUMP OUT IF END OF NOTE RESTORE TEMPO COUNT CONTINUE PLAYING 3 WASTE 12 STATES 3 3 3 CONTINUE PLAYING RETURN TOTAL LOOP TIME = HI SIATES = 8770 HZ DEFINE BEGINNING ADDRESS OF SONG TABLE FOR IHIRD PART Sampled Waveform Example It should be obvious by now that while these sampled waveform techniques are completely general and capable of high quality, there can be a great deal of com- putation required. Even the most powerful computers in existence would be hard pressed to compute samples for a significant piece of music with many voices and all subtleties implemented at a rate fast enough for direct output to a DAC and speaker. Typically the samples are computed at whatever rate the program runs and are saved on a mass storage device. Alter the piece has been "computed," a playback pro- gram retrieves the samples and sends them to the DAC at a uniform high rate. Most microprocessors are fast enough to do a limited amount of sampled waveform computation in real time. The 6502 is one of the best 8 bit machines in this capacity due to its indexed and indirect addressing modes and its overall high speed. The example program shown in listing 2 has the inherent capability to generate four simul- taneous voices, each with a different wave- form and volume level. In order to make the whole thing fit in a basic KIM-1, however, only one waveform table is actually used. This program could probably be con- sidered as a variation of the timed loop tech- nique, since the sample rate is determined by the execution time of a particular loop. The major differences are that all of the instruc- tions in the loop perform an essential func- tion and that the loop time is constant regardless of the notes being played. Using the program as shown on a full speed (1.0 MHz) 6502 gives a sample rate of 8.77 kHz, which results in a useful upper frequency limit of 3 kHz. The low pass filter in figure 7 coupled with the DAC in figure 3 and audio system or amplifier in figure 8 are all the specialized hardware necessary to run the program with full 4 part harmony. The program consists of two major routines: MUSIC and PLAY. MUSIC steps through the list of notes in the song table and sets up DUR and VI IN thru V4IN for the PLAY routine. PLAY simultaneously plays the four notes specified by VI IN thru V4IN for the time period specified by DUR. Another variable, TEMPO, in page zero con- trols the overall tempo of the music inde- pendently of the durations specified in the song table. The waveform tables for the four voices are located at WAV1TB thru WAV4TB and require 256 bytes (one memory page) each. The actual waveform samples stored in the table have already been scaled so that when four of them are added up there is no possibility of overflow. The song table has an entry for each musical "event" in the piece. An entry requires five bytes, the first of which is a duration parameter. By suitable choice of the TEMPO parameter in page 0, "round" (in the binary sense) numbers may be used for duration parameters of common note durations. A duration parameter of signals the end of the song, in which case the pro- gram returns to the monitor. A duration parameter of 1 is used to specify a break in the sequential flow of the song table. In this case the next two bytes point to the con- tinuation of the table elsewhere in memory. This feature was necessary to deal with the fragmented memory of the KIM-1, but has other uses as well. All other possible dura- tion values are taken literally and are fol- lowed by four bytes which identify the notes to be played by each voice. Each note ID points to a location in the note frequency table which in turn contains a 2 byte fre- quency parameter for that note which is placed in VI IN thru V4IN. The PLAY routine is optimized for speed, 74 Det on Quay microcomputers, components, and software^ They're winners. / & cP V^ rTv II I «* » s II gim 1 1 liiiij iiiiiiiimiiij lUlUllllMiii 1 1 «*C3 , ' Def 1 . Quay 80AI.-CPU, monitor I/O. For beginners, Quay 80AI is o sure rining. Ir's q stand alone microcompurer in o kir. Assemble ir. Plug ir into your power supply. Hook on o rerminol. And go. Quay 80AI uses the powerful Z80 microprocessor wirh o 2.5 Mhz clock, ir's also 5100 bus compatible and fast, efficient, expandable arid economical. You can't lose. Det 2. Quay 80SMD. 8K memory. Here's 6K of static RAM memory in o kir. You'll never find a more economical way to added memory. Great for expending the copocit/ of Quay 80AI or any other 5100 microcomputer. Det 3. Quay 80MDPS. Motherboard/power supply. When you're expanding, looking at bigger games; the Quay 80 MDP5 1 2-slot motherboard wirh or without o power supply is best for you. Gives you plenty of room. And when the rime comes, you con put it into a dynamite Quay chossis (Det 4). Det 4. Quay 80C. Chassis. If you've grown -with Quay, component by component, you'll reach the point where you'll wont this fine chassis. It turns a jumble of hardware into a compact, good-looking, function- tionolly-efficient system. It gives your high-quolit/ components the look of class. Det 5. Quay 8000. System. The Quay 8000 is o complete microcomputersystem consisting of the Quoy 80AI (Det I), the Quay 805MD (Det 2), Quoy 80MBP5 (Det 3), Quay 80C (Det 4), and Quay 60 4K Basic (Det 7). If you want a complete package with plenty of power and Basic, this is it. It's the best system you con buy for the dollars (under IK bucks). You're in operation with o complete top-quality system. (It's less expensive to buy the complete system than to buy the individual components.) Def 6. Quay 90MPS. OEM microcomputer. The Quay 90MP5 is a complete OEM microcomputer system on a single board. It's designed for OEM use or for the highly sophisticoted hobbyist. Quoy 90MP5 comes completely assembled and tested. It uses the Z80 microprocessor, has 6K of memory (expandable to 65K), a 2.5 Mhz clock with o 4Mhz clock option. This is the big time. Def 7. Quay 60AI and Quay 90MPS software. Quay has available for its systems the following software in Basic: ■ 2KB on UV Prom for 80AI or 90MPS ■ 4KB on UV Prom for 90 MP5 ■ 4 KB on cassette tope for 80AI or 90MPS ■ 10KB on cassette tope for 90MP5. Det 8. Quay coming events. Available soon: an Assembler Editor package and Business AppI icotions for 1 0K Basic. Get on the Quay moil ing list so when they're ready you'll be among the first to know. 5end for detailed information on all Quay products. Get in on o good thing. Or for fast action coll 201-681-8700. Dealer inquiries invited. Circle 223 on inquiry card. Quail ^porationI P.O. Box 386 D Freehold, N.J. 07728 Q Phone: 201-681-8700. Figure 7: A sharp low pass filter with 3 kHz cutoff. This circuit is used to filter out the high frequency distortion illustrated in figure 5. INPUT o v\A f ^A^^ TO +5V 5K SOURCE IMPEDANCE /77 NOTES: ALL RESISTORS 1/4 WATT 5% ALL CAPACITORS EXCEPT lOO/iF PLASTIC FILM OR NPO CERAMIC PREFERABLY 5% NOTE FREQUENCY TABLE RANGE FROM C2 (SS-tl FOR 8.772 KHZ SAMPLE RATE HZ) TO C6 {1016.5 HZ) ID NOTE FREQ. INCR. OOIF 0000 0021 01E9 0023 0206 0025 0225 0027 02H5 0029 0268 002B 028c 002D 02B3 002F 02DC 0031 0308 0033 0336 0035 0367 0037 039A 0039 03D1 003B MOB 003D 0149 003F MSA 0011 01CF 00^3 0519 0015 0566 0M7 05B8 0019 060F 0D1B 0660 001D 06CD OOIF 0735 0051 07A3 0053 0817 0055 0892 0057 0915 0059 099F 005B 0A31 005D OACC 005F 0B71 0061 OCIF 0063 0CD7 0065 0D9B 0067 0E6A 0069 0F15 006B 102E 006D 1121 006F 1229 0071 133E 0073 1162 0075 1599 0077 16E2 0079 183E 007B 19AF 007D 1B36 007F 1CD1 0081 1E8B 0083 .BYTE 0,0 .BYTE 1,233 .BYTE 2,6 .BYTE 2,37 .BYTE 2,69 .BYTE 2,101 .BYTE 2,110 .BYTE 2,179 .BYTE 2,220 .BYTE 3,8 .BYTE 3,51 .BYTE 3,103 .BYTE 3,151 .BYTE 3,209 .BYTE 1,11 .BYTE 1,73 .BYTE 1,138 .BYTE 1,207 .BYTE 5,25 .BYTE 5,102 .BYTE 5,181 .BYTE 6,15 .BYTE 6,108 .BYTE 6,205 .BYTE 7,53 .BYTE 7,163 .BYTE 8,23 .BYTE 8,116 .BYTE 9,21 .BYTE 9,159 .BYTE 10,19 .BYTE 10,201 .BYTE 11,113 .BYTE 12,31 .BYTE 12,215 .BYTE 13,155 .BYTE 11,106 .BYTE 15,69 .BYTE 16,16 .BYTE 17,36 .BYTE 18,11 .BYTE 19,62 .BYTE 20,98 .BYTE 21,153 .BYTE 22,226 .BYTE 21,62 .BYTE 25,175 .BYTE 27,51 .BYTE 28,212 .BYTE 30,139 SILENCE 2 C2 65.105 1.9089 1 C2« 69.295 2.0221 6 D2 73.115 2. 1127 8 D2# 77.783 2.2701 10 E2 82.108 2.1051 12 F2 87.308 2.5181 11 F2« 92.198 2.6996 16 G2 97.998 2.8601 18 G2J 103.83 3.0302 20 A2 110.00 3.2101 22 A2# 116.51 3.1013 21 B2 123.17 3.6035 26 C3 130.81 3.8178 28 C3» 138.59 1.0118 30 D3 116.83 1.2851 32 D3# 155.57 1.5102 31 E3 161.82 1.8102 36 F3 171.62 5.0962 38 F3# 185.00 5.3992 10 03 196.00 5.7203 12 G3* 207.65 6.0601 11 A3 220.00 6,1208 16 A3* 233.08 6.8026 18 B3 216.91 7.2071 50 Cl 261.62 7.6356 52 CM 277.18 8.0897 51 D1 293.66 8.5707 56 D1« 311.13 9.0801 58 El 329.63 9.6203 60 F1 319.23 10.1921 62 F1« 369.99 10.7981 61 01 391.99 11.1105 66 01# 1 1 5 . 30 12. 1208 68 Al 110.00 12.8116 70 Al# 166.16 13.6052 72 B1 193.88 11.1112 71 C5 523.21 15.2713 76 C5* 551.36 16.1791 78 D5 587.32 17.1111 80 D5* 622.26 18.1607 82 E5 659.26 19.2106 81 F5 698.16 20. 3817 86 F5* 739.98 21 .5969 88 G5 783.98 22.8811 90 G5# 830.60 21.2117 92 A5 880.00 25.6831 91 A5# 932.32 27.2103 96 B5 987.76 28.8283 98 C6 1016.5 30.5126 DEFINE BEGINNING ADDRESS FOR SECOND PART OF SONG TABLE Table 3: Note frequency table used in conjunction with listing 2. This table is for a sample rate of 8. 772 kHz. The range of the notes used Is from 65.41 Hz (for C2) to J 046.5 Hz (for C6). because its loop time determines the sample rate. Essentially, the routine maintains four pointers (VI PT thru V4PT) to the four waveform tables. Each pointer consists of three bytes in order of increasing signi- ficance. The first byte is the "fractional part" of the pointer, and the second byte is the integer part which is also the lower half of an address in the waveform table. The third byte is the upper address which normally remains constant. Waveform table lookup is considerably simplified by using the indirect addressing mode of the 6502 with these pointers. Note that the fractional part of the pointer is ignored when the table lookup takes place, since interpolation is much too slow for a real time routine. During each sample, waveform table entries for each voice are fetched, added up, and sent to the digital to analog converter output port. Then the increment (VxlN) is added (double precision) to each pointer (VxPT). Wraparound from the end of a waveform table to the beginning is auto- matically taken care of due to the fact that the table occupies a full memory page. Finally, the tempo counter is decremented and checked. If the tempo counter is zero, it is restored and the duration counter is decremented and checked. If it is also zero the note is finished and PLAY returns. The net result is that TxD samples are computed and sent out for the event, where T is the tempo parameter and D is the duration para- meter. Note that, unlike the earlier timed loop example, there is no interaction be- tween the duration parameter and the note frequencies being played. 76 m How does it sound? With the waveform table shown and a reasonably good speaker system, the result sounds very much like an electronic organ, such as a Hammond. There is a noticeable background noise level due to compromises such as prescaled waveforms and lack of interpolation in the tables, but it is not objectionable. The pitches are very accurate, but there is some beating on chords due to compromises inherent in the standard equally tempered musical scale. Also there are noticeable clicks between notes due to the time taken by the MUSIC routine to set up the next set of notes. All in all the program makes a good and certainly inexpensive basis for the "family music application" mentioned earlier. Synthesizer Control Techniques So far we have discussed techniques in which the computer itself generates the sound. It is also possible to interface a com- puter to specialized sound generation hard- ware and have it act as ■s.control element. The most obvious kind of equipment to control is the standard, modular, voltage controlled sound synthesizer. Since the interface characteristics of nearly all synthe- sizers and modules are standardized, a com- puter interface to such equipment could be used with nearly any synthesizer in common use. Generally speaking, the function of a voltage controlled module is influenced by one or more DC control voltages. These are usually assumed to be in the range of to +10 volts, although some modules will Figure 8. An inexpensive, wide band low power audio amplifier. This cir- cuit, when coupled with the circuits in figures 3 and 7, is all the experi- menter needs to create music with his or her microprocessor. SONG TABLE EACH MUSICAL EVENT CONSISTS OF 5 BYTES THE FIRST IS THE DURATION OF THE EVENT IN UNITS ACCORDING TO THE VALUE OF "TEMPO", ZERO DENOTES THE END OF THE SONG. THE NEXT H BYTES CONTAIN THE NOTE ID OF THE H VOICES, 1 THROUGH t. INDICATES SILENCE FOR THE VOICE. X'2O0 ; START SONG AT 0200 SONG TABLE FOR THE STAR SPANGLED BANNER BY FRANCIS SCOTT KEY AND J. STAFFORD SMITH DURATION COUNT = 61 FOR QUARTER NOTE 0200 0205 020A 020F 0211) 0219 021E 0223 0228 022D 0232 0237 023C 0211 0216 021B 0250 0255 025A 025F 0261 0269 026E 0273 0278 027D 0282 0287 028c 0291 0296 029B 601A000032 SONG: 101100002C 1010000021 1011000021 101A000022 80511E111E 305C52111C 105800101C 1051003C1E 1011003C1E 1016103028 801A103A32 201A000032 201A000032 605C511121 2058001028 1051003C2C 80521A1032 301E16002E 10521A102E 10511A112C 105100003C 101A000032 101100002C 103C000021 301A000032 101100002C 103C000021 1011000021 101A000022 80511E111E 305C52111C .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE ■ BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 96,71,0,0,50 16,68,0,0,11 61,61,0,0,36 61,68,0,0,36 61,71,0,0,31 128,81,78,68,30 18,92,82,68,28 16,88,0,61,28 61,81,0,60,30 61,68,0,60,30 61,72,61,60,10 128,71,61,58,50 32,71,0,0,50 32,71,0,0,50 96,92,81,68,36 32,88,0,61,10 61,81,0,60,11 128,82,71,61,50 18,78,70,0,16 16,82,71,61,16 61,81,71,68,11 61,81,0,0,60 61,71,0,0,50 61,68,0,0,11 61,60,0,0,36 18,71,0,0,50 16,68,0,0,11 61,60,0,0,36 61,68,0,0,36 61,71,0,0,31 128,81,78,68,30 16,92,82,68,28 3/6 C5 CI 1/16 A1 A3 1/1 G1 F3 1/1 A1 F3 1/1 C5 E3 1/2 F5 D5 A1 D3 3/16 A5 E5 A1 C#3 1/16 G5 01 0*3 1/1 F5 F1 D3 1/1 A1 F1 D3 1/1 B1 Gl F1 G3 1/2 C5 G1 El CI 1/8 C5 CI 1/8 05 CI 3/8 A5 F5 A1 F3 1/6 05 Gl 03 1/1 F5 F1 A3 1/2 E5 C5 01 01 3/16 D5 B§1 853 1/16 E5 C5 01 B§3 1/1 F5 C5 A1 A3 1/1 F5 F1 1/1 05 CI 1/1 A1 A3 1/1 F1 F3 3/16 C5 Cl 1/16 A1 A3 1/1 F1 F3 1/1 A1 F3 1/1 C5 E3 1/2 F5 D5 A1 D3 3/16 A5 E5 A1 c#3 Table 4: This song table is an encoding of "The Star Spangled Banner" in 4 part harmony which is used by the program in listing 2. Each musical event in the table consists of five bytes. The first byte represents the dur- ation of the event in units, according to the value of the "tempo" (0 denotes the end of the song). The next four bytes contain the note identifications of the four voices (0 indicates silence for the voice). 77 have a predictable response to negative voltages as well. In a voltage controlled oscillator, for example, the output fre- quency is determined by a control voltage. For typical tuning, V would correspond to 16 Hz (a very low C), and the frequency would increase one volt per octave for higher voltages. Thus, +4 V would produce middle C, and the maximum input of +10 V Table 4, continued: 02A0 lOSBOOtOlC .BYTE 16,88,0,61,28 1/16 05 CI C//3 02A5 IJOSIOOSCIE .BYTE 61,81,0,60,30 1/1 F5 F1 D3 02AA H01II003C1E .BYTE 61,68,0,60,30 1/1 Al F1 D3 02AF l|01(8l)03C28 .BYTE 61,72,61,60,10 1/1 B1 01 F1 03 02B14 80HAII03A32 .BYTE 128,71,61,58,50 1/2 C5 Gl El 01 02B9 20l)A000032 .BYTE 32,71,0,0,50 1/8 05 01 02BE 20HA000032 .BYTE 32,71,0,0,50 1/8 C5 01 02C3 605C5t')')21 .BYTE 96,92,81,68,36 3/8 A5 F5 Al F3 02CB 2058001028 • BYTE 32,88,0,61,10 1/8 05 01 G3 02CD 2051003020 .BYTE 32,81,0,60,11 1/8 F5 F1 A3 02D2 8052')A1032 .BYTE 128,82,71,61,50 1/2 E5 C5 01 CI 02D7 301E1)6002E .BYTE 18,78,70,0,16 3/16 05 BSI BS3 02DC 10521A'402E .BYTE 16,82,71,61,16 1/16 E5 C5 Gl B§3 02E1 1)0511A112C .BYTE 61,81,71,68,11 1/1 F5 C5 Al A3 02E6 105100003C .BYTE 61,81,0,0,60 1/1 F5 F1 02EB 1401A000032 .BYTE 61,71,0,0,50 1/1 C5 Cl O2F0 101<100002C .BYTE 61,68,0,0,11 1/1 Al A3 02F5 103C00002U .BYTE 61,60,0,0,36 1/1 F1 F3 02FA 01 .BYTE 1 DEFINE END OF THIS SEGMENT 02FB 8300 .WOBD POEND ADDRESS OF BEGINNING OF NEXT SEGMENT 0083 .= POEND ORG AT END OF PAGE CODE O083 305C511128 .BYTE 18,92,81,68,10 3/16 A5 F5 Al 03 0088 105C511128 .BYTE 16,92,81,68,10 1/16 A5 F5 Al 03 008D 1050511121) .BYTE 61,92,81,68,36 1/1 A5 F5 Al F3 0092 105E511628 .BYTE 61,91,81,70,10 1/1 B§5 F5 Bgl 03 0097 1062511A2C .BYTE 61,98,81,71,11 1/1 C6 F5 C5 A3 009C 8062511A2C .BYTE 128,98,81,71,11 1/2 C6 F5 C5 A3 OOAl 205E511628 .BYTE 32,91,81,70,10 1/8 Bg5 F5 B§1 03 00A6 205C51112C .BYTE 32,92,81,68,11 1/8 A5 F5 Al A3 OOAB 1058521032 .BYTE 61,88,82,61,50 1/1 G5 E5 CI 01 OOBO 105C51113C .BYTE 61,92,81,68,60 1/1 A5 F5 Al F1 00B5 105E521610 .BYTE 61,91,82,70,61 1/1 BS5 E5 B§1 01 OOBA 805E58161A .BYTE 128,91,88,70,26 1/2 B§5 G5 B§1 03 OOBF 105E52161A .BYTE 61,91,82,70,26 1/1 B«5 E5 B§1 C3 00C1 605C1A1121 .BYTE 96,92,71,68,36 3/8 A5 C5 Al F3 00C9 205e4A1028 .BYTE 32,88,71,61,10 1/8 05 C5 01 03 OOCE 10511A3C2C .BYTE 61,81,71,60,11 1/1 F5 C5 F1 A3 O0D3 80521A1032 .BYTE 128,82,71,61,50 1/2 E5 C5 01 01 O0D8 201E00362E .BYTE 32,78,0,51,16 1/8 D5 D1 Be 3 OODD 20521A3A2E .BYTE 32,82,71,58,16 1/8 E5 C5 El 8^3 00E2 10511A3C2C .BYTE 61,81,71,60,11 1/1 F5 C5 F1 A3 00E7 10113C0036 .BYTE 61,68,60,0,51 1/1 Al F1 D1 OOEC 01 .BYTE 1 DEFINE END OF THIS SEGMENT OOED ABOl .WORD PI END ADDRESS OF BEGINNING OF NEXT SEGMENT OlAB .= PI END ORG AT END OF PAGE 1 CODE 01AB 1018103C28 .BYTE 61,72,61,60,10 1/1 B1 Gl F1 G3 01B0 801A103A1A .BYTE 128,71,61,58,26 1/2 C5 Gl El 03 01B5 101A000032 .BYTE 61,71,0,0,50 1/1 C5 01 OIBA 10511A1121 .BYTE 61,81,71,68,36 1/1 F5 C5 Al F3 OIBF 1054161028 .BYTE 61,81,70,61,10 1/1 F5 BS1 01 G3 Old 20511A112C .BYTE 32,81,71,68,11 1/8 F5 C5 Al A3 01C9 20521A112C .BYTE 32,82,71,68,11 1/8 E5 " " OICE 101E163C2E .BYTE 61,78,70,60,16 1/1 D5 Bgl F1 Be 3 01D3 101E163C2E .BYTE 61,78,70,60,16 1/1 D5 B§1 F1 Be 3 01D8 101E1A3E2C .BYTE 61,78,71,62,11 1/1 D5 C5 F»1 A3 OIDD 1058161028 .BYTE 61,88,70,61,10 1/1 G5 B§1 Gl 03 01E2 205E160028 .BYTE 32,91,70,0,10 1/8 B§5 B§1 G3 01E7 205C11002C .BYTE 32,92,68,0,11 1/8 A5 Al A3 QlEC 205810002E .BYTE 32,88,61,0,16 1/8 05 Gl 863 OlFl 01 .BYTE 1 DEFINE END OF THIS SEGMENT 01F2 8017 .WORD AUXRAM ADDRESS SEGMENT OF BEGINNING OF (IN 6530 RAM) NEXT 1780 .= AOXRAM ORG AT BEGINNING OF 653C RAM 1780 20513C0030 .BYTE 32,81,60,0,18 1/8 F5 F1 83 1785 10511A1132 .BYTE 61,81,71,68,50 1/1 F5 C5 Al CI 178a 10521A101A .BYTE 61,82,71,61,26 1/1 E5 C5 Gl C3 178F 201A000032 .BYTE 32,71,0,0,50 1/8 05 CI 1791 201A00002E .BYTE 32,71,0,0,16 1/8 05 863 1799 60511A112C .BYTE 96,81,71,68,11 3/8 F5 C5 Al A3 179E 2058001032 .BYTE 32,88,0,61,50 1/8 G5 Gl CI 17A3 205C001110 .BYTE 32,92,0,68,61 1/8 A5 Al 01 17A8 205E001610 .BYTE 32,91,0,70,61 1/8 B§5 B§1 01 17AD 80625C5111 .BYTE 128,98,92,81,68 1/2 06 A5 F5 Al 17B2 20511E1136 .BYTE 32,81,78,68,51 1/8 F5 D5 Al D1 17B7 2058181031 .BYTE 32,88,72,61,52 1/8 05 B1 01 Dei 17BC 605C511A32 .BYTE 96,92,81,71,50 3/8 A5 F5 05 CI 17C1 205E511E32 .BYTE 32,91,81,78,50 1/8 B§5 F5 D5 CI 17C6 1058521632 .BYTE 61,88,82,70,50 1/1 G5 E5 BSI CI 17CB 80511A113C .BYTE 128,81,71,68,60 1/2 F5 C5 Al F1 171X1 00 .BYTE END OF PIECE 23 26 28 30 33 would produce a nearly inaudible 16.4 kHz. A typical oscillator module has two or three control inputs and a number of outputs. The voltages at the inputs are internally summed to form the effective control value (useful for injecting vibrato), and the outputs pro- vide several different waveforms simultane- ously. A voltage controlled amplifier has as a minimum a signal input, a control input, and a signal output. The voltage at the control input determines the gain from the signal input to the signal output. In a typical setting, -t-8 V would correspond to unity (0 db) gain, with lower voltages decreasing the gain by 10 db per volt. Many other voltage controlled devices have been developed during the approxi- mately 12 year history of this field. In order to play music, the modules are first "pat- ched" together with patch cords (like old style telephone switchboards) according to the desired sound characteristics. Manually operated control voltage sources such as potentiometers, joysticks and specialized organ-like keyboards are then manipulated by the player. The music is generally monotonic due to difficulties in the control elements (now being largely overcome). Multitrack tape recorders are universally utilized to produce the results heard on recordings such as Walter Carlos's Switched on Bach. A useful computer interface to a synthe- sizer can be accomplished with nothing more than a handful of digital to analog and optionally analog to digital converters. The DACs would be used to generate control voltages under program control and the ADCs would allow operator input from the keyboard, for example, to be stored. Since control voltages vary slowly compared to the actual sound waveforms, real time control of a number of synthesizer modules is possible with the average microprocessor. Due to the large number of DACs required and the relatively slow speeds necessary, a multiplexing scheme using one DAC and a number of sample and hold amplifiers is appropriate. The home builder should be able to achieve costs as low as $2 per channel for a 32 channel, 1 2 bit unit capable of controlling a fairly large synthesizer. The routing of patch cords can also be computerized. A matrix of reed relays or possibly CMOS bilateral switches interfaced to the computer might be used for this task. The patches used for some contemporary synthesizer sounds resemble the program patch boards of early computers and thus are difficult and time consuming to set up and verify. With computer controlled patching, a particular setup may be recalled 78 and set up in milliseconds, thus enhancing real time performance as well as reducing the need for a large number of different mod- ules. Other musical instruments may be inter- faced as well. One well-published feat is an interface between a PDP-8 computer and a fair sized pipe organ. There are doubtless several interfaces to electronic organs in existence also. Even piano mechanisms can be activated, as noted elsewhere in this issue. Recently, specialized music peripherals have appeared, usually oriented toward the S-100 (Altair) bus. In some cases these are digital equivalents of analog modules of similar function. For example, a variable frequency oscillator may be implemented using a divide-by-N counter driven by a crystal clock. The output frequency is determined by the value of N loaded into a register in the device, much as a control voltage affects a voltage controlled oscil- lator. Such an approach bypasses the fre- quency drift problems and interfacing ex- pense of analog modules. The biggest advan- tage, however, is availability of advanced functions not feasible with analog modules. One of these is a programmable wave- form. A small memory in the peripheral holds the waveform (either as individual sample values or Fourier coefficients), which can be changed by writing in a new wave- form under program control. Another advan- tage is that time multiplexing of the logic is usually possible. This means that one set of logic may simulate the function of several digital oscillators simultaneously, thus re- ducing the per oscillator cost substantially. Actually, such a digital oscillator may be nothing more than a hardware implemen- tation of the PLAY routine mentioned earlier. Digital/analog hybrids are also possible. The speech synthesizer module produced by Computalker Consultants, for example, combines a programmable oscillator, several programmable amplifiers and filters, white noise generator, and programmable switch- ing on one board. Although designed for producing speech, its completely program- mable nature gives it significant musical potential, particularly in vocals. How do these various control techniques compare with the direct waveform compu- tation techniques discussed earlier? A de- finite advantage of course is real time play- ing of the music. Another advantage is simpler programming, since sound genera- tion has already been taken care of. How- ever, the number of voices and complexity of subtle variations is directly related to the quantity of synthesizer modules available. 0300 WAV 1TB 0300 WAV2TB 0300 WAV3TB 0300 WAV1TB 0300 3331353636 0305 373839 0308 393A3A3B3B 030D 3B3C3D 0310 3C3C3C3C3C 0315 3C3C3C 0318 3C3C3C3B3B 031D 3B3B3B 0320 3A3A3A3A3A 0325 3A3939 0328 3939393939 032D 393939 0330 3A3A3A3A3A 0335 3B3B3B 0338 3B3C3C3C3D 033D 3D3D3D 0340 3E3E3E3E3F 03t5 3F3F3F 0318 3F3F3F3F3F 03'4D 3F3F3F 0350 3E3E3E3D3D 0355 3C3C3B 0358 3B3A393838 035D 373635 0360 3133323130 0365 2F2E2D 0368 2C2B2A2928 036D 272625 0370 2123222121 0375 201F1F 0378 lElElDlDlD 037D IDICIC 0380 ICICIDIDID 0385 IDIDIE 0388 1E1F1F2020 038D 212122 0390 2323212125 0395 262627 0398 2828292929 039D 2A2A2B 03A0 2B2B2B2B2B 03A5 2B2B2A 03A8 2A2A292928 03AD 272726 03B0 2524232221 03B5 201F1D 03B8 ICIBI91817 03BD 151I13 03C0 lllOOFODOC 03C5 OBO9O8 03C8 0706050103 03CD 030201 03D0 0100000000 03D5 000000 03D8 0000010101 03DD 020301 03E0 0506070809 03E5 OBOCOD 03E8 0F10121315 03ED 16I8IA 03F0 1B1D1F2022 03F5 232527 03F8 282A2B2C2E 03ED 2F3031 WAVEFORM TABLE EXACTLY ONE PAGE LONG ON A PAGE BOUNDARY MAXIMUM VALUE OF AN ENTRY IS 63 DECIMAL OR 3F HEX TO AVOID OVEBFLOW WHEN 1 VOICES ARE ADDED UP X'300 ; START WAVEFORM TABLE AT 0300 ; VOICE 1 WAVEFORM TABLE = . ; VOICE 2 WAVEFORM TABLE = . ; VOICE 3 WAVEFORM TABLE ; VOICE 1 WAVEFORM TABLE ; NOTE THAT ALL 1 VOICES USE THIS TABLE DUE ; TO LACK OF BAM IN BASIC KIM-1 FUNDAMENTAL AMPLITUDE 1.0 (REFERENCE) SECOND HARMONIC .5, IN PHASE WITH FUNDAMENTAL THIRD HABMONIC .5, 90 DEGBEES LEADING PHASE .BYTE X'33,X'31,X'35,X'36,X'36,X'37,X'38,X'39 .BYTE X'39,X'3A,X'3A,X'3B,X'3B,X'3B,X'3C,X'3C .BYTE X'3C,X'3C,X'3C,X'3C,X'3C,X'3C,X'3C,X'3C .BYTE X'3C,X'3C,X'3C,X'3B,X'3B,X'3B,X'3B,X'3B .BYTE X'3A,X'3A,X'3A,X'3A,X'3A,X'3A,X'39,X'39 .BYTE X'39,X'39,X'39,X'39,X'39,X'39,X'39,X'39 .BYTE X'3A,X'3A,X'3A,X'3A,X'3A,X'3B,X'3B,X'3B .BYTE X'3B,X'3C,X'3C,X'3C,X'3D,X'3D,X'3D,X'3D .BYTE X'3E,X'3E,X'3E,X'3E,X'3F,X'3F,X'3F,X'3F .BYTE X'3F,X'3F,X'3F,X'3F,X'3F,X'3F,X'3F,X'3F • BYTE X'3E,X'3E,X'3E,X'3D,X'3D,X'3C,X'3C,X'3B .BYTE X'3B,X'3A,X'39,X'38,X'38,X'37,X'36,X'35 .BYTE X'31,X'33,X'32,X'31,X'30,X'2F,X'2E,X'2D .BYTE X'2C,X'2B,X'2A,X'29,X'28,X'27,X'26,X'25 .BYTE X'21,X'23,X'22,X'21,X'21,X'20,XMF,XMF .BYTE X'1E,X'1E,X'1D,X'1D,X'1D,X'1D,X'1C,X'1C .BYTE X' 1C,X'1C,X'1D,X'1D,X'1D,X'1D,X'1D,X'1E .BYTE X'1E,XMF,X'1F,X'20,X'20,X'21,X'21,X'22 .BYTE X'23,X'23,X'21,X'21,X'25,X'26,X'26,X'27 .BYTE X'28,X'28,X'29,X'29,X'29,X'2A,X'2A,X'2B .BYTE X'2B,X'2B,X'2B,X'2B,X'2B,X'2B,X'2B,X'2A .BYTE X'2A,X'2A,X'29,X'29,X'28,X'27,X'27,X'26 .BYTE X'25,X'21,X'23,X'22,X'21,X'20,X'1F,X'1D .BYTE X'1C,X'1B,X'19,X'18,X'17,X'15,X'11,X'13 .BYTE X' 11 ,X'10,X'OF,X'OD,X'OC,X'OB,X'09,X'08 .BYTE X'07,X'06,X'05,X'01,X'03,X'03,X'02,X'01 .BYTE X'01,X'00,X'00,X'00,X'00,X'00,X'00,X'00 .BYTE X'00,X'00,X'01,X'01 ,X'01,X'02,X'03,X'01 .BYTE X'05,X'06,X'07,X'08,X'09,X'OB,X'OC,X'OD .BYTE X'0F,X'10,XM2,XM3,X'15,XM6,X'16,X'1A .BYTE X'1B,XMD,XMF,X'20,X'22,X'23,X'25,X'27 .BYTE X'28,X'2A,X'2B,X'2C,X'2E,X'2F,X'30,X'31 Table 5: This table is an encoding of the samples of the waveform used by the program in listing 2. The table is exactly one memory page long on a page boundary. The maximum value of any entry is decimal 63 or hexadecimal 3 F to avoid overflow when all four voices are summed. 79 For example, if more voices are needed, eitiner more modules must be purchased or a multitrack tape recording must be made, which then takes us out of the strict real time domain. On the other hand, a new voice in a direct synthesis system is nothing more than a few bytes added to some tables and a slightly lengthened execution time. Additionally, there may be effects that are simply not possible with currently available analog modules. With a direct synthesis system, one merely codes a new subroutine, assuming that an algorithm to produce the effect is known. A separate problem for the experimenter is that a "critical mass" exists for serious work with a direct synthesis system. To achieve complexity significantly beyond the TOCCATA AND FUGUE IN D-MINOR BACH VOICEl 40,0,0,0,0,30,0,0,0,0,0,0,0,60,0 V0ICE2 37, 0, 0, 0, 0,0, 0,0, 50, 0,0, 0,0, 50, V0ICE3 0,0, 9,0, 38, 0,0, 0,36, 19, 0,0,0, 28,0 TEMPO 1/4=1200 10 30,30 10 60,60 15 100,250 /-/ 002 lA3,l/64; 1A@3, 1/6 lA3,l/8; R,l/32 lG3,l/64 lF3,l/64 1E3, 1/64 lD3,l/64 lC#3,l/3 1D3,1/16 R,l/4 3D2,1/1; 2C#3,1F2 1E3,7/16 1G3,7/16 1B@3,5/1 1C#4,4/1 1E4, 3/16 2A2,l/64 4; 2A@2,l/64 2A2,l/8 7; 2G2,l/64. 2F2, 1/64 2E2,l/64 2D3,l/64 2; 2C#2,l/32 2D2,1/16 R, 1/4 R,l/16 R,l/16 R,l/16 6; R,l/16 6; R,l/16 /-/ 140 lB@4,l/8; lG4,l/8; lE3,l/32 1G3, 1/32 lB@3,l/32 lC#4,l/32 1B?4, 1/8 lB@4,l/8; lG4,l/8; lA4,l/8; lF#4,l/8; TEMPO 1/4=950 1D3, 1/32 TEMPO 1/4=1050 lA3,l/32 TEMPO 1/4=1150 lD4,l/32 TEMPO 1/4=1200 lF#4,l/32 lA4,l/8 lA4,3/8; lF»4,l/8; 141 lD4,l/2; lB@3,l/2; lG4,l/2,- 3B@2,l/4 lE4,l/4; 1C# 4,1/4, ■ lF4,l/4; lD4,2/4; 142 lE4,l/2; 2A3,l/2; lC4,2/4; R,l/4 lD4,4/2; 2F3,l/4; 2B@3,l/4; 2G3,l/4; 143 2A3,3/2; 2F3,3/2; END lE4,l/8; 2E3,l/8,- 3C#3,l/8 lE4,l/8; lC#4,l/8; lD4,l/8; 2F#3,l/8; 2E3,1/B; 3C#3,l/8 3C3, 1/8 lD4,l/8; 2F#3,l/8; 2G3,l/2; 3G2,l/4 2B@3,l/4; 3E2,l/4 2A3,l/4; 3F2,l/4 3A2,l/2; R,l/4 3C3,l/8 3Bg2,l/4 3G2, 1/4 3D3, 3/2; 3D2,3/2 Listing 3: Bacfi 's "Toccata and Fugue in D Minor" as encoded in NOT RAN, a music ianguage deveioped by tine autiior (NOT RAN stands for NOte TRAN- slation). Ttie main function of tfie ianguage is to transcribe organ music, but it wiil worii equaily weli witli other types of music. Program state- ments are used to encode duration, pitch, attacl^ and decay rates, and ioud- ness of each note. 4 voice example program described earlier, a high speed, large capacity mass storage system is needed. This means an IBM type digital tape drive or large hard surface disk drive; usually at least $3000 for a new drive less interface. Used 7 track tapes and 2311 type disks (7.5 megabytes) are often available for $500 and certainly provide a good start if the user can design his own interface. Synthesizer modules or peripheral boards, on the other hand, can be purchased one at a time as needed. Music Languages Ultimately, software for controlling the sound generation process, whether it be direct or real time control, is the real fron- tier. The very generality of computer music synthesis means that many parameters and other information must be specified in order to produce meaningful music. One function of the software package is to con- vert "musical units of measure" into phy- sical sound parameters such as conversion of tempo into time durations. Another part is a language for describing music in suffi- cient detail to realize the control power available from music synthesis without bur- dening the user with too much irrelevant or repetitious detail. With a good language, a good editor for the language, and real time (or nearly so) execution of the language, the music system becomes a powerful composi- tion tool much as a text editing system aids writers in preparing manuscripts. Music languages can take on two forms. One is a descriptive form. Music written in a descriptive language is analogous to a con- ventional score except that it has been coded in machine readable form. All information in the score necessary for proper performance of the piece is transcribed onto the com- puter score in a form that is meaningful to the user yet acceptable to the computer. Additional information is interspersed for control of tone color, tempo, subtle varia- tions, and other parameters available to the computer synthesist. A simple example of such a language is NOTRAN (NOte TRANslation) which was developed by the author several years ago for transcribing organ music. Listing 3 shows a portion of Bach's "Toccata and Fugue in D Minor" coded in NOTRAN. The basic thrust of the language was simplicity of instruction (to both the user and the inter- preter program), rather than minimization of typing effort. Briefly, the language consists of state- ments of one line each which are executed in straight line sequence as the music plays. If the statement starts with a keyword, it is 80 What is a Firmware System ? A Firmware System is the entire package — Software and Hardware tliat work. Our Firmware includes a miniature micro 8080 and Z/80 computer; S-100 Buss, with over 65K of user RAM. No switclies to set, Power-on opera- tion, multiple I/O interfaces, line printer. Video Terminal, over 600K Byte Disk, Disk Extended Basic and applications Software diskettes complete with full documentation (includes General Ledger, Payroll, Word Proc- essing, Medical A/R, A/P, Engineering, Statistics, more) includes "Help" and Tutorial Software. Our "General Ledger Program" is a complete comprehensive business system designed to keep all of your company's records without the need for updating from other programs and there is no need to keep monthly tear sheets to be added together for end of the year reports as our system will provide you with year end account totals for cash, accural, hybrid and chart of accounts systems. This program generates over 30 major reports, including: 941 's, P/L's, Balance Sheets, and year end account totals for filing Federal Income tax Schedule C's and/or 1120's plus a lease pur- chase plan and 24-hour field service in most areas. Hard to believe! For less than $250/month you can lease your very own, nothing else to pur- chase. Foreign packages available last of '77. Business Software Too! includes over $25,000.00 of busi- ness programs free and that's only part of what we're giving away. We built our reputation providing quality software at affordable prices. Now we are going to do the same with Firmware. Firmware System (fully assembled) $8999.00* Additional 600K disi^s optional. Compare at $30,000 for other micros or $70,000 for mini's "Add $60 for UPS shipping and handling • No Purchase Orders — include 50% deposit with all COD orders. O SCIENTIFIC RESEARCH 1712-B Farmington Court Crofton, MD 21114 (301)721-1148 Dealer Inquiries Invited a specification statement; otiierwise, it is a note statement. Specification statements simply set up parameters tliat influence the execution of succeeding note statements and take no time themselves. A VOICE statement assigns the timbre described by its parameters to a voice num- ber which is used in the note statements. In the example score, the first group of para- meters describe the waveform in terms that are implementation dependent, such as harmonic amplitudes. The next, isolated parameter specifies the overall loudness of the voice in relation to other voice:. The last pair of parameters specifies the attack and decay times respectively for notes using this voice. Depending on the particular imple- mentation, other parameters may be added without limit. For example, vibrato might be described by a set of three additional para- meters such as vibrato frequency, amplitude, and a delay from the beginning of a note to the start of vibrato. A TEMPO statement relates note dura- tions in standard fractional terms to real time in milliseconds. The effect of a tempo statement lasts until another is encountered. Although the implementation for which the example was written required a sequence of tempo statements to obtain a retard, there is no reason why an acceleration or a retard set of parameters could not be added. Note statements consist of one or more note specifications and are indented four spaces (the measure numbers are treated as comments). Each note specification begins with a voice number followed by a note name consisting of a letter, optional sharp (#) or flat (@) sign, and an octave number. Thus C#4 is one half step above middle C. Following the comma separator is a duration fraction. Any fraction is acceptable, but conventional musical fractions are normally used. Following the duration are two op- tional modifiers. A period (.) indicates a "dotted" note which by convention extends the note's duration by 50%. An "S" specifies a staccato note which is played as just an attack and decay (as specified by the corres- ponding voice statement) without any steady state. The presence of a semicolon (;) after a note indicates that additional notes which are intended to be part of the same statement are present, possibly extending to succeeding lines. The execution sequence of note state- ments can become a little tricky due to the fact that note durations in the statement may not all be equal. The rule is that all notes in the statement start simultaneously. When the shortest one has ended, the notes in the next statement are initiated, even though some in the previous statement may be still sounding. This could continue to any depth such as the case of a whole note in the bass against a series of sixteenth notes in the melody. The actual implementation, of course, limits the maximum number of simultaneous tones that may be built up. Also available is a rest specification which can be used like a note specification. Its primary function is to provide silent space between note statements, but it may also be used to alter the "shortest note" decision when a note statement is scanned. If the rest is the shortest then the notes in the next statement are started when the rest elapses even though none of the current notes have ended. A use of this property may be seen in the last part of measure 2 where an arpeggio is simulated. As can be seen, NOTRAN is best suited for describing conventional organ music, although it could be extended to cover a wider area as well. One such extension which has been experimented with but not fully implemented is percussion instruments. First a set of implementation dependent para- meters was chosen to define a percussive sound, and then a PRCUS statement similar to the VOICE statement was added to the language. To initiate percussive sounds, specifications such as "P3,1/4" would be interspersed with the note specifications in note statements. The "3" would refer to percussive sound number 3 and the 1/4 would be a "duration" which would be optional. All percussive sounds in the same statement would start simultaneously with the regular notes. A much more general music language is the well-known MUSIC V. It was designed to make maximum use of the flexibility afforded by direct waveform computation without overburdening the user. It is a massive program written in FORTRAN and clearly oriented toward large computers. Much significant computer music work has been done with MUSIC V, and it is indeed powerful. An excellent book is available which describes the language in detail and includes some background material on digital sound generation (see entry 1 in the list of references at the end of this article). A different approach to music languages is a "generative" language which describes the structure of the music rather than the note by note details. In use, the structure is described by "loops," "subroutines," and "conditional branches" much as an algo- rithm is described by a computer language. The structure is "executed" to produce detailed statements in a conventional music language which is then played to produce sound. The intermediate step need not necessarily be visible to the user. One well 82 thought out system is described in reference 2. It was actually developed as a musico- logical analysis tool and so has no provisions for dynamics, timbre, etc. It could, however, be extended to include these factors. One easy way to implement such a language is to write a set of macros using a good mini- computer macroassembler. Conclusion By now it should be apparent that com- puter generated music is a broad, multidisci- plinary field. People with a variety of talents can make significant contributions, even on a personal basis. In particular, clever system designers and language designers or imple- menters have wide open opportunities in this field. Finally, imaginative musicians are needed to realize the potential of the tech- nique. r Short Cut to a Singing KIM. As his article was being finished by our production department, Hal Chamberlin notified us that he has completed the design of a board which accomplishes the digital to analog conversion and filtering functions described in this article. The board contains printed circuitry for an 8 bit digital to ana- log converter, low pass filter and power amplifier. Without components, the board may be purchased for $6; completely assem- bled and tested the price is $35. Orders should be mailed prepaid to Micro Tech- nology Unlimited, 29 Mead St, Manchester NH 03104. In addition, a software package for the KIM-I computer is available on cassette tape (KIM format) for $13 added to the price of the output board. A 7 inch 16 ohm speaker can be ordered for $5 pre- paid, completing the required parts of a KIM 's music system. ■ ^ REFERENCES 1 . Mathews, Max, The Technology of Computer Music, MIT Press, Cambridge MA, 1969. Con- tains a detailed description of MUSIC V, the high level music language. 2. Smoliar, Stephen, "A Parallel Processing Model of Musical Structures," PhD dissertation, Massachusetts Institute of Technology, Sep- tember 1971. 3. Oppenheim, A and Schafer, R, Digital Signal Processing, Prentice-Hall, NJ, 1975. 1^ wire u^rapping center (^ic; ^iC^tl HOBBY WRAP Wt.^ MODEL BW 630 Battery wire wrapping tool 95 COMPLETE WITH Bl andsi.i;kvi; DIP IC INSERTION TOOL WITH PIN STRAIGHTEN ER. MODEL INS1416 "MINIMUM ORDER $25.00. SHIPPING CHARGE $1 .00. N.Y. CITY AND STATE RESIDENTS ADD TAX OK MACHINE AND TOOL CORPORATION 3455 CONNER STREET. BRONX, NEW YORK. N.Y. 10475 U.S.A. PHONE (212) 994-6600 TELEX NO. 125091 83 Circle 224 on inquiry card. Tune in with Some Chips Ted B Sierad 146 Sunset Rd Wlamaroneck NY 10543 Are you fascinated with tiie idea of computerized music, but find tiie mechanics of producing such effects too complex? I've come up with a simple technique which is the subject of this article, and which is well within the capabilities of the novice com- puter experimenter. With less than a dozen inexpensive integrated circuits, a few resis- tors, capacitors and a small prototyping board you can be well on the way to creating interesting music with your Altair, IMSAI or similar computer. My design creates a programmable music tone gener- ator peripheral which has outputs that sound somewhat reminiscent of a clarinet when it is programmed by simple or complex soft- ware used to sequence notes in time. The first attempts I made at music generation required complicated programs and many integrated circuits. But as I gained more familiarity with the problem, the project reduced into a relatively simple solution as illustrated here. The Hardware The diagram of the melody box hardware is illustrated in figure 1. This hardware is the key to generation of tones from the compu- ter. Software to be described later is respon- sible for sequencing the notes in time, thus creating a melody. The basic principle of operation of this melody box peripheral is use of a latched binary code in eight bits to select one of several adjustable resistors which will be switched into an oscillator circuit as the timing resistor. In the parti- cular circuit shown in figure I, I used a pair of 7475 latch circuits to hold the code sent from an 8080's 10 instruction; then I de- coded the 8 bit pattern with a pair of 7441 circuits which I happened to have on hand in my worlcshop. The 7441s separately decode two 4 bit codes into selection of one of ten open collector output lines. These output lines are low if the line is selected, and effectively disconnected if not selected. The software used to drive the 10 port should be set up to select only one active line by giving out a "null code" such as binary 1111 in one half of the 8 bit word, while selecting a given tone in the other half of the 8 bit word. This guarantees that only one line is in the low state out of a possible 20 lines. The line which is in the low logical state will then affect the frequency of the oscillator imple- mented by the 555 timer integrated circuit, IC7 of figure 1. The pitch of the note selected is determined by the tuning of the potentiometer associated with a given binary code by the decoders. The low logic level output of the decoder is similar to a ground or zero voltage. Since all the other lines are effectively floating as open collector outputs, a definite low state on the one line inserts the resistor selected Figure 1 : Schematic of the melody box. This circuit works by changing the timing elements of a 555 osciilator integruted circuit to set llie pitch. One resistor sets the pitch of each note of the scale. To turn off the oscillator, the circuit detects a special case which turns off the power to the oscillator by raising its ground pin to the high logic level. 84 Integrated Circuit Power Wiring Number Type +5 V GND IC1 7475 5 12 IC2 7475 5 12 IC3 7441 5 12 IC4 7441 5 12 IC5 7404 14 7 IC6 7402 14 7 IC7 555 8 5 Resistor Potentiometer Approximate Number Value Setting R3 100 k 40 k R4 100 k 48 k R5 100 k 56 k R6 100 k 64 k R7 100 k 68 k R8 100 k 76 k R9 100 k 80 k RIO 100 k 86 k R11 200 k 90 k R12 100 k 43 k R13 100 k 56 k R14 100 k 67 k R15 100 k 76 k R16 100 k 86 k R17 200 k 95 k RIB 200 k 108 k R19 200 k 135 k R20 200 k 152 k ■C5 -.025 O) TO AMPLIFIER MIIMI-SPEftKER 85 Photo J: The melody box as constructed, using a Ra- dio Shack prototyping board. into the 555's timing circuit. The circuit is tuned by running a scale and adjusting the pitches by ear, or even by using a frequency meter. But what about having no sound at all? Rests are important to music, and there must be some way to turn off the sound. Simply selecting none of the resistors is the first thought which comes to mind, but this does not work very well at all, as you'll find out if you try it. What I did was to put in the NOR gate logic of IC6d to detect when both halves of the 8 bit output word are 0, as indicated by selection of the output line of each decoder. When this happens, the output of the NOR gate is high. Since I use this NOR gate as the power and signal ground of the 555 oscillator, I have effec- tively removed power from the 555 and turned it off when the double state is output to the port. This may not be optimal engineering, but it certainly works. My hardware stopped at the point of generating the tones, but for a full range of musical effects, you would certainly want to add some digital controlled filters and ampli- fiers to this basic pitch generation facility. Some filtration can be accomplished, of course, by manipulation of the tone controls of your high fidelity amplifier. Further Simplifications of Hardware The circuit of figure I is how I built the melody box; but after building it, it oc- curred to me that several further simplifica- tions could be made. For example, the latches and 10 port decoding logic outlined by the dotted lines could easily be replaced by an existing 10 port on a computer, such as those provided by the peripheral interface adapters (PIA) of typical 10 port boards. The 7441 is not the only open collector decoder chip available, and if you want to make 32 or 64 notes, use of two or four 74159 circuits with a 5 or 6 bit binary code would be possible. The only major disadvan- tage I find with this circuit is that it has to be tuned individual note by individual note. Construction The melody box was built on a Radio Shack IC experimental breadboard, #276-154 (Archer), which plugs into their #276-1551 card connector socket. This type of board has a foil pattern on one side. The integrated circuits or sockets are inserted from the nonfoil side and pins are then soldered to pads designed to take the DIP package pins as well as several connecting wires or components. See photo 1 for a look at my version. I used Molex pins to fabricate sockets for the integrated circuits, although solder tail sockets or no sockets at all could be used depending on your prefer- ences and sources of supply. Wiring is done from the nonfoil side, with stripped ends of the wires going through the board to the appropriate pads. I used multiple colors for the wires in order to make tracing of the circuit easy. The space between the solder Continued on page 91 86 4 USERS ON 1 MICRO?! ■!...'«*,* " tp' *"' I!,[„;„ ,l. /:ij'%'" HfBk « ' Ifelj ■-■•Jl *Also be sure to check out the complete line of TSC software, including Text Editors, Word Processing Systems, Assemblers, Utili- ties, Diagnostics. Interpret- ers, Games, and more! > I j Technical Systems Consultants, Inc., P.O. Box 2574, West Lafayette IN 47906 Circle 225 on inquiry card. ii.#Jf'' / \ ' PC '77 offers you the most complete show of its kind ever held. Proven in '76 and acclaimed in '77 by all the major professional publications as the coming event of the year, this show is a 'must'. Make plans now to at- tend. Here are some of the scheduled events: PRE-CONVENTION PROFESSIONAL SEMINARS August 22-26 Technical Design Labs and Trenton State College Z80 Seminars at near- by Trenton State College. Five software and four hardware seminars. August 25, 26, 28 SYBEX Seminars at the Shelburne Hotel. Three intensive seminars: Introduction to Microprocessors, Programming Microprocessors, Microprocessors Applications. August 24, 25, 26 TYCHON INC. Microcomputer Interfacing Workshop at the Shelburne Hotel. August 26, 27 Osborne ^1 o^^^M^^h <«- tv cV' •VS atfc roO^'' tVtfeV* O v\ve Vt o- Otg' Se.*^«^^auptv^Uv^: lOse ^T^aUO-£,^V-^-^^ o V\«f cVva\^^*Vtna^^^^< A^^ Gt* UV at let ea .Ve. ^tct^ tnP^ C\^ FREE! SEMINARS, FORUMS, TECHNICAL TALKS ENI AC by Dr. John Mauchly, the co-inventor of ENIAC PROGRAMMING EPSI AC by Mrs. John Mauchly SAM 76 by Claude Kagan of Western Electric Co., an interactive symbol system manipulations system which grows with the user. TELECOMMUNICATIONS FROM THE TERMINAL USERS VIEWPOINT by David L. Peters of Vadic Corp. INTRODUCING THE HEATHKIT COMPUTER PRODUCTS by Lou Frenzel of Heath Company HOW MICROPROCE.SSORS ARE DESIGNED by Will Mathys of MOS Technology THE FUTURE OF MICROS IN MEDICINE by Dick Moberg. Dept. of Neiu-osurgery, Jef- ferson Medical College, Philadelphia THE HUMAN FACTOR bv Andrew Singer of ROM Magazine SHOULD MICROS BE USED FOR BUSINESS APPLICATIONS? by Frank J. Ponzio, Jr.. of Mini Computer Suppliers. Inc. ROBOTS bv Tod Loofbourrow, author for Interface Age Magazine GETTING INTO THE MICRO COMPLITER BUSINESS by Robert S. Jones, publisher of Interface Age Magazine MUSIC FOR THE HOBBMST. HARDWARE AND SOFTWARE by Malcolm Wright of Solid State Music HAM RADIO APPLICATIONS by Dr. Robert Suding of the Digital Group HANDICAPPED SYMPOSIUM bv Dr. Robert Suding of the Digital Group HOME MANAGEMENT SYSTEMS bv Dr. Robert Suding of the Digital Group FLOPPY DISK by Herbert G. Waite of PerSci Inc. INTERFACING A HOME SELECTRIC by Charles Yates of Amateur Computer Group of New Jersev MOVING UP TO AMATEUR RADIO bv Chod Harris of the American Radio Relav League OPERATING THROUGH AMATEUR SATELLITES OSCAR 6 AND 7 bv Garv Tater W3HUCof AMSAT THE PHASE III MICR0PR(X:ESS0R CONTROLLED AMATEUR SATELLITE bv Tom Clarke WA,?LND and Jan King W3GEY of AMSAT MICROPROCESSOR APPLICATIONS FOR RADIO AMATEURS by Kasser G,3ZCZ of AMSAT WHAT PEOPLE ARE NOT GOING TO DO WITH HOBBY COMPUTERS by Stephen Grav of Creative Computing APPLICATIONS OF MICROCOMPUTERS: THE MYTH AND THE REALITY by David Ahl of Creative Computing INTRODUCTION TO COMPUTERS THROUGH THE BASIC LANGUAGE by Eri Golem- bo of Computer Mart of New Jersev DYNAMIC DEBUGGING SYSTEM FOR THE WW) CODE by Larr> Stein and David Benew of Computer Mart of New Jersev MICROPROCESSORS FOR THE HOBBY MARKET TODA^ AND TOMORROW by Dr. Adam Osborne of Osborne and Associates GETTING STARTED WITH MICROCOMPUTER SOFTX* ARE by Dr. Christopher A. Titus, author of the Bugbooks COMPUTERS AND MUSIC by Carl Helmers of BYTE Magazine ^\^>ij^rvr/; Plug in any one of a iiiimher of Solid State Music moduk's and enhance the power of an Allair (S-100) bus system. In particular enjoy the new SB-1 music synthesizer and the Vli1A video board to be given out as door prizes at PC77. Scientific Research Vol T - V Wliere does one get software? The lucky winners of the Scientific Research BASIC software library will have a good start at answering this question. Interface Age Life Time Subscription Interface Age is an exciting window on this burgeoning new technology. Find out about inicrocomputing for the home and the small businessman using this monthly compendium. ■■v,,r^f, ''It/,, "--to „ ^-../-^^^^tf .".Av-v„. Pi-oL ^'^c soo'y '"oA ^.- '"'^v y.. ^'^'t,, Heathkit This new Heathkit H9 video terminal features data rates ranging from 1 1 to 9600 bps, EIA RS-232 and 20 ma current loop interfaces, a full ASCII keyboard and 12 lines of 80 characters per line. Continued from page 86 NOTE LENGTH (Odd Bytes) 7 6 5 4 3 2 7 6 5 4 3 2 0,00 1 1 1 1 1 1 1 0,00 1 1 1 °,'l 1 Pitch MIDDLE "C" Note Length Dotted QUARTER BEGIN HERE EACH NOTE TAKE A PITCH BYTE FOLLOWED BY LENGTH BYTE TIMING LOOP TO SET THE TEMPO. AT SHORT FOR FAST TEMPO, LONG FOR SLOW TEMPO. COUNT DOWN NOTE'S LENGTH CHECK FOR END OF MUSIC TEXT POINTER: = ADDRESS OF FIRST NOTE IN TABLE OUTPUT: = PITCH (pointer; COUNTER:' LENGTH (POINTER) Hexadecimal Octal Relative Length Length Decimal Code Code Length PITCH (Even Bytes) Hexadecimal Octal Note Code 00 01 02 03 04 05 06 07 08 09 60 70 80 90 FF Musical Symbology Note Musical Code Note 000 ZSilenl 001 Optional 002 C 003 C«o, 004 005 006 007 010 F-orGb Oil G ' — Z!" Afl or Bb 1 020 G-orAh 040 060 100 B 120 C > 140 C#orDb 1 60 D > 200 E > 220 F > ?5 .r Db I D = orEb 1 rr zr rr _^ Sixteeneenth note J. J. -©- oo oooo Music Symbology Dotted eighth note Quarter noTe Dotted quarter note Dotted half note Two whole notes Four whole notes 377 Restart code Figure 2: Programming modei for the melody box. Tfie note pitch and length codes listed are interpreted by the program shown as a flowchart here. Each note is completely specified by a pitch code and a length code contained In two bytes of memory as shown by the example. 91 ^S,lJJ ^ ^'^ ^l-M r r .r SJ St* r. r I . r-r J ii J Figure 3: The melody box notes are tuned by running this chromatic scale text through the program of figure 2. While listening to the scale, adjust each note's potentiometer until the sound is a correct musical interval. A Set of Chromatic Scale Data for Tuning the Melody Box Octal Relative Note and Address Length Code 000 001 002 002 002 002 004 003 002 006 004 002 010 005 002 012 006 002 014 007 002 016 010 002 020 Oil 002 022 020 002 024 040 002 026 060 002 030 100 002 032 120 002 034 140 002 036 160 002 040 200 002 042 220 002 044 000 040 046 377 XXX Hexadecimal Relative Note and Address Length Code 00 01 02 02 02 02 04 03 02 06 04 02 08 05 02 OA 06 02 OC 07 02 OE 08 02 10 09 02 12 10 02 14 20 02 16 30 02 18 40 02 1A 50 02 1C 60 02 IE 70 02 20 80 02 22 90 02 24 00 40 26 FF XX repeat code rJF ^= 1 — 1 ■' — \ ■' — ■' -^ 4f J . °^^ ^ .-. ^ o o ^J- J I.H =a TABLE LOCATIONS- OCTAL HEXADECIMAL 000 002 00 02 004 04 006 06 010 08 012 - Ofl- 014 00 016 OE 020 022 024- 10 12 14 - 026 030 032 16 IS lA 034 036 IC IE 040- 20- 042 044 046 050 - 22 24 26 30- Figure 4: A test string, shown in machine code form and in traditional musical representation, sans time signature, using note lengths as defined in figure 2. A Familiar Tune Octal Hexadecimal Relative Address 000 002 004 006 010 012 014 016 020 022 024 026 030 032 034 036 040 042 044 046 050 052 054 056 Note and Length Code 002 004 002 004 006 004 Oil 004 120 014 040 024 040 004 007 004 01 1 004 040 004 01 1 040 002 004 002 004 006 004 01 1 004 Oil 014 004 024 006 004 007 004 006 004 004 004 002 030 000 001 377 XXX Relative Address 00 02 04 06 08 OA OC OE 10 12 14 16 18 1A IC IE 20 22 24 26 28 2A 2C 2E Note and Length Code 02 04 02 04 06 04 09 04 50 OC 20 14 20 04 07 04 09 04 20 04 09 20 02 04 02 04 06 04 09 04 09 OC 04 14 06 04 07 04 06 04 04 04 02 18 00 01 FF XX stop 92 PUT A MACRO IN YOUR MICROI Inlroducing the AM- 100''"^ by Alpha Microsystems A 16-bit microprocessor CPU {2-card set) that replaces the 8080 microprocessor in your S-100 bus type computer. • Eight 16-bit registers • Multi-level DMA and vectored interrupt system • Real-lime clock on the CPU board ■ Hardware supported totally relocatable object code • Multi-user multi-tasking timeshared operating system • Multi-user structured file system with passwords • Multiple pass macro level assembler and linking loader • Floppy disk file management system and utilities • Up to 10 times the throughput of an 8080 system • Fully supports most S-100 peripherals without modification • ALPHA BASICTM extended compiler and run sys- tem (not an interpreter) • Free-form text editor and letter-writing text formatter • System generation program to create custom oper- ating system monitors • Completely device independent with logical file I/O calls TIMESHftRtNQ FOR A MICRO Imagine playing Startrek to kill time while you wait for your computer to print out a complicated listing— but using the same computer. Hardware limitations of the 8080 have made micro- computer timesharing impractical for the personal com- puter enthusiast. The AM-KX)"^ 16-bit microproces- sor set puts at your command a system which easily accepts multi-tasking froiTi a multiple user structure. Ill addition the AM-lOOf^ system lets you control priorities and allocate memory requirements for each job activated. There is even a security system to pre- vent unauthorized access to the data files (a Macro Computer?) . • Teachers— have each student at a terminal at the same time running a learning program. Monitor the progress on your master terminal. • Computer Stores/Amusement Parks— set up a game bank with one computer and eight terminals. Have different games on each screen. • Businessmen—put a terminal on the desk of your bookkeeper, stock clerk and design engineer. Per- form the daily accounting, inventory control and design problems at the same time. Hook a terminal in the shop and audit production schedules with the processor's real-time clock. WESTERN DIGITAL MICROPROCESSOR The AM- 100 is based on Western Digital's advanced WD-16 microprocessor chip set. It has been re- microprogrammed to give a more flexible macro in- struction set while still maintaining the general archi- techire and source code format on the popular PDP-11 series. S-100 BUS COMPATIBILITY The 16-bil processor system interfaces to the 8-bit S-100 bus by multiplexing through 70-plus TTL logic chips. This multiplexing is totally transparent to the programmer. See unit on display at our BVTE SHDP^®*^" stores: ALPHA BASIC COMPILER The BASIC language processor implemented is a com- piler as opposed to the more popular inlerpreters. It reads the source code statements and generates a compacted and fully resolved object code program. The object code program is then executed by a special runtime package which is reentrant and may be shared by several users at once. The source code need not be present during this execution thereby reducing memory requirements. FOR THE SYSTEM USER Conversion starts as low as $1495 including full software MicroAge will provide you with the best support hardware in memories, terminals and I/O systems Complete multi-user/nriulti- tasking systems avail- able configured to your specification and needs Look to MicroAge to provide you with a full con- sulting service for small business, scientific and educational computer systems User implementation is provided anywhere in the United States along with maintenance and service programs Circle 226 on inquiry card. Write or call us for further information and details; ■ TM £!£^AGE 803 N. Scottsdale Rd. Tempe, Arizona 85281 Phone:(602)894-1193 8 1 3 N. Scottsdale Rd. Tempe, Arizona 85281 (602)8941129 126S4N.28thDr. Phoenix, Arizona 85029 (602) 942-7300 2612 E. Broadway Tucson, Arizona 85716 (602) 327-4579 Photo 2: Installation of the melody box inside an Altair 8800 is accom- plished by wiring various wires from the backplane of the computer. The power switch and volume control were mounted on the back panel of the com- puter, so that the melody box could be turned off. pads and bus lines of the card is relatively small, so care must be used to prevent solder bridges from forming. I recommend a low wattage iron with a pencil tip. 25 to 30 W will work well. The 20 variable resistors used can typical- ly be found at prices from $.20 to $.49 depending on how good you are at shopping around. I mounted the actual melody box inside my Altair 8800, as shown in photo 2. The circuit connections to the Altair bus were made as shown in figure 1. When mounting the circuit inside the computer cabinet, care should be taken to prevent damage to existing boards of the computer. I found that covering the boards with a layer of paper was a good precautionary measure to prevent any splatter of solder. In order to make the Altair connections, you must remove the mainframe backplane board (the one with all the edge connectors) so that you can solder to the underside. Software for the Melody Box The melody box requires instructions to tell it what to do. In an organ, piano or other instrument, a special purpose key- board gives instructions about what note to play and for how long. Making the melody box play a tune consists of writing a program to generate a time sequence of instructions. A programming model for the melody box is summarized in figure 2. The data required for each note is the pitch of the note, and the length of the note. In the program I wrote for my Altair, I used one 8 bit byte to represent the pitch, followed by a second 8 bit byte with an integer count giving the length. A table of the pitch codes, referenced to a music stave, and a table of length codes with equivalent note symbols are shown as part of figure 2. The flowchart in figure 2 shows an algorithm which is easy to implement on any small computer. In my own system, I enter these codes with the front panel toggle switches and the "depo- sit" function. Once you have coded up the details of a program which will execute the flowchart of figure 2, the first step is to tune the melody box. In figure 3 I've shown the musical representation of an ascending chromatic scale, as well as the corresponding table of byte values (in octal and hexadecimal) for the 2 byte note pitch and length codes required to play this scale. An arbitrarily long rest follows the end of data before the repeat. Tuning is accomplished by ear (as- suming you know what a scale sounds like) while playing this chromatic scale with the program. The potentiometers of the circuit in figure 1 should be adjusted until the scale sounds "right." As a second example, figure 4 shows a familiar tune, both in music notation and as a table of values for the music program to utilize. In the music notation, the table locations are written below in hexadecimal and octal to show how the two representa- tions correspond. The limits on what tunes you can play are only dependent upon how much imagination you have and how big your Altair's memory is." 94 Continued from page 6 Rating or experienced user, tlie wealth of options available in the many varieties and permutations of 8080, Z-80, 6502, 6800 and 9900 systems at reasonable prices make it less and less likely that our readers vv'ill continue to be frustrated and annoyed by such devices of torture as job control, account numbers, contention for the use of a system, and the host of limitations encountered when commercial and indus- trial systems are twisted to personal purposes in "off" hours. During the coming year, our third as a magazine born out of and devoted entirely to personal computing, we expect to see continued evolution in the field. The last half of 1977 represents the entry of several relatively large concerns into the market- place, in the form of Heathkit this summer and Commodore soon to follow. Rumors have it that companies ranging from Atari and Bally Manufacturing (arcade games) to Radio Shack and Texas Instruments are in the process of developing general purpose systems appropriate for personal computing uses. This sort of "confirmation" of the marketplace's existence is bound to keep all firms on their competitive toes and ulti- mately benefit the user who is presented with more options and ways of achieving the personal computing function. (We even see the same phenomenon in our own sub- branch of the industry, the publications devoted to personal computing.) Like all industries, we can expect to see ups and downs in the trend, but for the moment we certainly relish and enjoy the heady expansion and growth evident all around us. Once again, technology in its applica- tion to human affairs is having its effect, and our lives as individuals are being im- proved as a result, despite the pessimists, gainsayers and prophets of doom chattering on about their usual maudlin spectres. We have yet to see large and useful personal data banks, practical automatons and similar challenges which have been projected by the writers of "hard" science fiction. But even if such are seen in our lifetimes, one thing is certain: the challenge of technology and invention which so marks the human race will continue with new horizons, just as today's computer technology could scarcely have been envisioned 20 years ago." COMPLETE FLOPPY DISK SYSTEM FOR YOUR ALTAIR/IMSAI $699 That's right, complete. The North Star MICRO-DISK SYSTEMTM uses the Shugart minifloppy^'^ disk drive. The controller is an S-100 com- patible PC board w^ith on-board PROM for bootstrap load. It can control up to three drives, either with or without interrupts. No DMA is required. No system is complete without software: we provide the PROM bootstrap, a file-oriented disk operating system (2k bytes), and our powerful extended BASIC with sequential and random disk file accessing (10k bytes). Each 5" diameter diskette has 90k data byte capacity. BASIC loads in less than 2 seconds. The drive itself can be mounted inside your computer, and use your existing power supply (.9 amp at 5V and 1.6 amp at 12V max). Or, if you prefer, we offer a power supply ($39) and enclosure ($39). Sound unbelievable? See the North Star MICRO-DISK SYSTEM at your local computer store. For a high-performance BASIC computing system, all you need is an 8080 or Z80 computer, 16k of memory, a terminal, and the North Star MICRO-DISK SYSTEM. For additional performance, obtain up to a factor of ten increase in BASIC execution speed by also ordering the North Star hardware Floating Point Board (FPB-A). Use of the FPB-A also saves about 1 k of memory by eliminating software arithmetic routines. Included: North Star controller kit (highest quality PC board and components, sockets for all IC's, and power regula- tion for one drive), SA-400 drive (assembled and tested), cabling and connectors, 2 diskettes (one containing file DOS and BASIC), complete hardware and software documentation, and U.S. shipping. MICRO-DISK SYSTEM ... $699 To place order, send (ASSEMBLED) $799 check, money order or ADDITIONAL DRIVES. . . $425 ea. ba or MC card # with exp. rf-/i en date and signature. Uncer- DlbKL I 1 bb $4.50 ea. tjfjed checks require 6 FPB-A $359 weeks processing. CaMf. (ASSEMBLED) $499 residents add sales tax. NORTH STAR COMPUTERS, INC. 2465 Fourth Street Berkeley, CA 94710 95 Circle 227 on inquiry card. Problems for Computer Solution by Steve Rogowski, Teacher Edition. A collec- tion of mathematical problems designed to stimulate thought and encourage research by students towards the goal of a final solution. The subjects range from arithmetic through calculus and on to problems that have yet to be resolved. An analysis of each problem provides ideas on logical approa- ches to a solution, and a sample program demonstrates one possible final solution. $9.95. Chemistry with a Computer by Paul A Cauchon. People are always looking for details of applications for the computer. It is one thing to say "gee whiz wouldn't it be nice if. . ." but such thoughts are but the stimulus to action. One result of a "gee whiz" idea is a series of educational and tutorial BASIC programs for use by teachers of chemistry, invented by Paul A Cauchon and published by Educomp Corporation. This book contains a collection of tutorial, simulation and problem generation pro- grams which can be employed to advantage by teachers in high schools or colleges wherever a BASIC facility is available. If you're a chemistry professor or teacher by trade, or just a hobbyist interested in chemistry, this book will prove to be an invaluable tutorial aid. $9.95. Take a Byte of APL APL— An Interactive Approach Second Edition, Revised, by Oilman and Rose. Here's an excellent way to introduce your- self to the APL language. APL is rapidly becoming one of the most popular high level languages in the computer field because of its clarity and conciseness. Oilman and Rose have extensively updated their popular book to include the latest information about the language and the various forms of it which are now in use. Since the examples are all carefully spelled out, APL— An Inter- active Approach is particularly recommen- ded for those who do not have access to an APL terminal. Answers to all problems are included. $11.95. APL The Underground Buying Guide, by Dennis A King. Here at last is a source book for all those hard to find suppliers! It's designed especially for computer hobbyists, experimenters, hams and CB'ers, and can tell you where to buy items like con- nectors, discrete components, electronic music supplies, instrumentation, analog to digital and digital to analog converters, and synthesizers. The list goes on to include Teletypes, speakers, microcomputer soft- ware, cassette units, floppy disks and many other items. It will be an invaluable addition to your reference library. $5.95. SS«(roind BMi,in( Guide For llamj, CBeis, Experiiqenteri and Computer rlabbi|i>ts. 3 PCC S i REFFRENCt BOOK PCC'S Reference Book of Personal and Home Computing. Ever try to find the addresses of some manufacturers of, say, tape cassette or floppy disk interfaces for micros? Frustrating, isn't it? Well PCC has done something about it. This book lists hundreds of companies and stores selling hardware, software, and services. Survey articles on software, hardware, kits, appli- cations and the future for the experienced and the not-so-experienced user of micros. Also included in this edition are biblio- graphies for further reference, book reviews, and an index of the articles from the major hobbyist magazines. $4.95. 1 1 Check Payment method: | ■ Send to: mm My check is enclosed ■ Pill my Mi^ Mo Fvp HatP i Bits, Inc. 70 Main Street ^^^^ Rill my PAf^ M^ Fvp HatP | Peterborough NH 03458 g^™ Name Address Tntal fnr all hnnks rhfrkpH $ I PostRgp PiO rents ppr hook for boi^ks $ . ■ Citv State Zip Code Signature All orders must be prepaid. 1 You may photocopy this page if you wish to leave you BYTE ir itact. In unusual cases, processing may exceed 30 days. J A NEW CHESS SPECIAL INTEREST GROUP Recently three computer chess pro- grams have become available to the computer hobbyist, and two dedicated chess playing machines have been an- nounced. The newspapers carry news of the US and international computer chess tournaments. With this growing interest, one would expect that there'd be some medium of communication among devotees of com- puter chess. But the only articles appear in obscure professional publications which the average reader never heard of. So, having tried to get someone else to do it, I decided to try to start a Computer Chess Newsletter, with the contents furnished by the readers, based upon a model provided by Hal Singer's pioneering Micro-8 Newsletter for com- puter users. Now the problem is to get contributions. Anyone with any interest in computer chess playing or program- ming, please write. So far no price, size, or frequency of publication has been determined. We need letters and articles about experiences with specific programs, either on hobby machines or the larger programs available on some campus com- puters and some timesharing systems. In fact, we need a list of known programs. How do they compare, for strength, for speed of response, for the way the moves are reported, the way the board is displayed? Lots of hobbyists would like to try their hand at writing a chess program but don't know how to get started. Any ad- vice or experience in this would be most appreciated. Also, descriptions of chess programs and their philosophies would be most welcome. There is not exactly a surplus of material to read on things like this. Anyone interested in receiving the first issue should send a letter enclosing a couple of 13^ stamps to defray costs for the first try. I hope that a great deal of interest shows up in the form of con- tributions of material for the newsletter. Doug Penrod 1445LaCimaRd Santa Barbara C A 93101 For an interesting news item on the. subject of computer chess, readers should consult the June 1977 Scientific American, the "Science and the Citizen" column, page 56. This report covers the first computer program to answer chess master David Levy's 1968 challenge (which is up in 1978). The program was Chess 4.5, a product of Lawrence R Atliin and David j Slate of the com- putation center at Northwestern Univer- sity. In ordinary tournament play, the chess program lost; in "blitz" high speed play, the program won handily. The Ask BYTE details and play-by-play account of the game are in the Scientific American piece. ■ INTERACTIVE COMMENTARY - APL ROMs CONTINUED I have thoroughly enjoyed your maga- zine for some time now; even though I can't really be termed a "home hacker" (I run on a PDP-n/45 under RSTS or UNIX), it is still interesting and very informative. Keep up the good work! I would like to comment on a few letters from recent issues. First, on the APL character set ROMs: I would love to see this developed, and made available soon and relatively inexpensively. APL is a wonderful language, but is not widely enough available to be well known. I have worked on an APL interpreter for our 11, which is compatible with APL/360; however, we don't have enough APL terminals, so I thought of getting some ROMs burned for DEC- writers, but it turned out to be too WE PAY POSTAGE! ELECTRONICS TERMS: ORDERS UNDER $15 ADD $.75. NO C.O.D. WE AC- CEPT VISA AND MASTER CHARGE CARDS. MONEY BACK GUARANTEE ON ALL ITEMS. TEXAS RESIDENTS ADD 5% SALES TAX. P. 0. Box 401247. Garland, Texas 75040 (214) 271-2461 16K E-PROM CARD S-100(1MSA1/ALTAIR) BUSS COMPATIBLE $69.95 (KIT) IMAGINE HAVING 16K OF SOFTWARE ON LINE AT ALL TIME! KIT FEATURES: 1 . Double sided PC Board with solder mask and silk screen and Gold plated contact fingers. 2. Selectable wait states. X USES 3. All address lines and data lines buffered! 4. All sockets included. 5. On card regulators. DEALER INQUIRES INVITED KIT INCLUDES ALL PARTS AND SOCKETS! (EXCEPT 2708's) SPECIAL OFFER: Our 2708's (650 NS) are $12.95 when purchased with above kit. 2708 1KX8 EPROMS 2708 Prime new units from a major U.S. mfg. 650 N. S. access time. Equivalent to four 1702A's in one package! GOING INTO BUSINESS SALE! $15.75 each 8K LOW POWER RAM KIT (S-lOO BUSS COMPATIBLE) $149.00 (Kit of All Parts and Sockets) The last word in RAM Kits. Uses 21L02-] RAM's. All address and data lines fully buffered. PC Board is solder masked and silk screened and has gold plated contacts. Four regulators with heatsinks included. 97 Circle 315 on inquiry card. expensive. If some other people want to get together and get them done, count me in! Also, If anyone out there is working on a "tiny APL" for an 8080 or another microprocessor, contact me; I'd like to hear what you're doing. I've given it some thought myself, but don't have a microprocessor handy to play with. Second, to P M Lashley in February 1977 BYTE, I must say that while FORTRAN may be a "virtual ptero- dactyl," It does have its merits, the biggest one being portability. I program in "C" mainly, a beautiful language, impeccably cleanly structured; but how many of you out there have heard of it, much less know where you could run it? This Is the one point in which FOR- TRAN outweighs its competitors; how- ever, much better they may be. If this Is of no concern, be my guest and scrap FORTRAN! (I'll help!!) Thanks for a fine mag. I'm sure I won't be disappointed in the years to come. Christopher A Kent 935 Burney Ln Cincinnati OH 45230 Having recently conversed with a representative of a firm planning an APL "black box" computer, we found that according to the gentleman in question a full APL interpreter does not have to be an emulation of a 360 with several hundred thousands bytes (as is the case in I Bill's 5100 APL). This caller claimed it was possible to Implement APL for an 8080 or Z-80 in under 12 K bytes with clever programming. See Mike Wimble's articles for the algorithms.' MORE BASIC QUESTIONS In your March 1977 BYTE, you listed a Space War game in BASIC written by David Price (page 106). In his game he uses the instruction MAT. I have just purchased an SwTPC 6800 12 K byte computer with SwTPC's 8 K BASIC. SwTPC's BASIC does not have a MAT instruction. My question is: What can I use to substitute in place of the MAT instruction? Steve Wright 13900 SB Highway 212, SP#74 Clackamas OR 97015 777e MAT refers to "matrix" opera- tions. In David Price's program, the concept of a matrix (often a two-dimen- sional one) is used to represent a two- dimensional array of values. For exam- ple, line 520: MA T K=IER (3,3) The "MA T" at llie beginning of a line is your cue that an array or "matrix" Is Involved. In the statement above, this would be equivalent to writing: DIM K (3,3) FOR 1=1 TO 3 FOR 1=1 TO 3 K (1,1 )=0 NEXT I NEXT t (The DIM is only needed once In a program, at or near its beginning.) In David's program, the MAT statements are essentially used only to allocate storage for matrix data type arrays, followed by Initialization similar to the example shown. There are other opera- tions applicable to matrix data, but most uses of the matrices in David's programs refer to components, once values have been Initialized. If you do not have a two-dimensional array facility, a much more difficult simulation of two-dimen- sions is also possible. ■ SOME BASIC VARIATIONS I put the March 1977 BYTE "Star Trek" program (page 106) on disk in an IBM VM 370 operating system with a timeshared terminal. I encountered sev- eral problems due to the differences between VM 370 BASIC and the version used by David Price in his program. Most were solvable with the help of a guide at the end of the article, but a few still have me stumped. Continued on page 209 No bells or whistles... just performance, a warranty and a low price. ills. iiii III! I. h^.. — ™-,^., I iiiiiiiiwy.n ■'oi* " Mfl^T. ^M i^sm tiSsoi I * " ' Miai HMI^ #ai^ Mititlisi^ XiSia M^sa M^ ^INltaf^ HFtftMCiJ) ifel^l I ^ * ' ^i I I i i I I For $107.00 take your choice; the 4K RAM board or the alpha video board. For $137.00 the video graphic board can't be matched. (8K RAM and much more on the way.) These are not kits, but completely assembled, burned-ln, tested boards with a 1 year warranty. No soldering, no messing, no chance of mis-connections . . . just plug 'em in and you're ready to go. The 4K RAM has the same features and speed as what you're used to (500 nsec, no wait states) but with a couple of extras you might not expect. Like a mechanical write protect switch that gives you positive memory protection. And Visaddress'', an easily accessible switch on top of the board for easy to read address selection. The alpha video board offers Visaddress address selec- tion and displays 128 ASCII characters: both upper and lower case. A standard 16 line by 32 character format with character selectable video reverse and socketed ROM are standard features. (Character generator ROM available with standard graphics characters. Optional Greek or ASCII control characters available.) And our video graphic board gives you an exceptionally easy approach to computer animated dynamic displays. Our matrix approach allows direct addressing of each dot in an 128 by 96 array, simplifying dynamic movement. And unlike DMA displays, our on-board RAM allows your CPU card to do other work during display time and with no dynamic RAM problems. And like our other boards, it has Visaddress address selection. Quality, assembled boards at less than kit prices. But what else would you expect from a company whose prime product is electronic test instrumentation and microproc- essing components? Order direct, by check, BankAmericard or Master Charge (Add $1.50 shipping, credit customers give us all the card numbers, please and Ohio residents add 414% sales tax) or contact us for more information. Kent-Moore Instrument Company, P.O. Box 507, Industrial Ave., Pioneer, Ohio 43554. (419) 737-2352. Circle 229 on inquiry card. 98 \rd! DO IT BETTER With the Umguage that is best suited For your apphcation: Business programming in COBOL, Scientific and Engineering in FORTRAN IV, Educational in BASIC, and Systems Implementation in our MACRO ASSEMBLER. With hardware that will grow with your application, and protect your software in- vestment. ^ DO IT FASTER With extensive sujDport and utility programs to speed development of your applica- tions software. These include a Diskette Operating System, Relocatable Linking Loader, Load Module Library Editor, Symbolic Debugger, and Text Editors. With a 16 bit processor that includes hardware multiply and divide, real-time clock, and peripherals like single or dual diskette subsystems with integral DMA con- troller. DO IT WITH A MIcroNOVA ^iU ^ - If you are serious about computing, call or write today. BPl Inc., 2205 East Broadway, Suite 6, Tucson, Arizona 85719 (602) 326-6975 ® NOVA is a registered trademark of Data General Corporalion, Southboro, Massachusett Circle 230 on inquiry card. SYNCHRO-SOUND Enterprises Your Small Computer Department Store One-stop shopping for Hardware and Software MEI^I LEARSIEGLER ADM-3A TERMINAL Full addressable cursor. Character Generation— 5x7 dot matrix. Display Format— Standard: 1920 characters, displayed in 24 lines of 80 characters per line. Character Set— Standard: 64 ASCII characters, displayed as uppercase, plus punctuation and control. Communications Rates— 75 to 19,200 baud (switch selectable). Computer Interfaces— EIA standard RS232C and 20mA current-loop (switch selectable). Data Entry— New data enters on bottom line of screen; line feed causes upward scrolling of entire display with top-of- page overflow. Automatic new line switch selectable, end-of-line audible tone. ADM-3A Kit 795.00 ADM-3A Assembled . . 895.00 Lower Case Option . . . 89.00 Compare our PRICES, PRODUCTS, QUALITY, DELIVERY, SERVICE ... we carry everything you need in small computers, terminals, printers, monitors, keyboards, accessories. We'll meet or beat competitive prices on everything we sell! IMSAI 8080 MICROCOMPUTER IMSAI 8080 i^ESTlBiiP^?' iipii^" Powerful • Easy to use • Low cost With 22 Slot Mother Board. . .$619.95 With Z-80 CPU 849.95 OKIDATA Model 110 Line Printer • 110 CPS dot mat Friction Feed $1099.00 Tractor Feed 1229.00 RS 232C Serial Interface. . .250.00 SPECIAL BUYS HAZELTINE Modular One Video Terminal $1639.00 SORAC IQ120 Video Terminal Kit 959.00 DEC LA180 Printer 2769.00 COMPUCOLOR8001 Color Graphics Computer 2595.00 ICOM Microfloppy Disc & Controller. . . 989.00 NORTH STAR Microfloppy Disc & Controller 599.00 OKIDATA Model 22 Printer 2095.00 OMNITEC 401 C 300 Baud Modem 300.00 2708 EPROMS 29.95 OAE Papertape Reader 69.95 SOL 20 In Stock For Immediate Delivery MEW COMMERCIAL QUALITY KEYBOARD The Model SS-1 Communications Terminal is a non-contact capacitive keyboard with a guaranteed life of over 100,000,000 opera- tions. • MOS/LSI Encoder with high reliability low power consumption. • Key Roll Over which eliminates operator error and increases thruput. • Hysteresis for tease proof operation. • Solid State performance at mechanical switch prices. • Tactile Feedback at the operate point. • ASR-33 Array with four mode encoding. Keyboard Kit $99.95 Enclosure (with numeric cutout) 49.95 Numeric Pad 34.95 Complete Kit (witin pad)1 79.95 Assembled Unit (with pad) 229.95 DECwrlter II SOFTWARE Attention ALTAIR DISK Owners Now available— an Accounts Receivable System for the small user. This system is ex- pressly designed to be run on an 8080 based microcomputer using an Altair floppy disk with Altair Basic, Video Terminal and Printer Many features normallyfoundonlyon large scale com- puters are included. Provided are such functions as: Adding New Customer Accounts, Deleting Dormant Accounts. Transaction Processing, and Report Generation. The Monthly Statements include both current and aged balances. Other reports generated are the Aged-Accounts Receivable and Delinquency Notices. This easily usable system requires very little operator training. All communication is in an in- teractive mode with the program constantly prompting the appropriate responses. Operator errors are easily corrected and accidental data base deletions are prevented by requiring addi- tional confirmation. This Accounts Receivable System, although supplied ready for use, may readily be modified to include special installation-dependent func- tions. All major programs are written in high level language making program additions and alterations a simple task. This program module is designed to serve as the basis for a complete accounting package. Provisions are included for linking Billing Inventory Control and General Ledger modules which will be available in the near future. We carry a full line of the following: TDL, OAE, Processor Tech., Hayden, Tarbell, IMSAI, Cromemco, Compucolor, Icom, Lear Siegler, Okidata, DEC, Javelin, Teletype, North Star, Heuristics, Peripheral Vision, TRW. Same day delivery and shipping on most items. Full, modern repair facilities on premises for com- plete servicing of everything we sell. Circle 231 on inquiry card. SYNCHRO-SOUND Enterprises The Connputer People 193-25 Jamaica Avenue, Jamaica, New York 1 1423 • 212/468-7067 Hours 9-4 daily Visit our new showroom . and Saturday working units on display Dept. B BankAmericard • Master Charge • 132 column printing • 30 CPS • Full keyboard • Tractor Feed $1769.95 ! i Please send me furth er information on (list items) Price List n Namp City Statfi Zip_ — System Description: The Noval 760 Here is the designer's eye view of a new product wliicli represents one of the most complete ready to run computer packages seen to date. Introduced with a 4 page advertisement in June 1977 BYTE, this manufacturer's product description provides some more detailed information for readers' inspection and evaluation. Lane T Hauck, Director of Research and Development James D Nash, Senior Systems Programmer Noval Inc 8401 Aero Dr San Diego CA 92123 The first wave of personal computing hysteria seems to have subsided. A casual stroll through the West Coast Computer Faire last spring served as a pretty clear indication that the small computer user has grown up in a big hurry. We now hear these alleged "kids" rapping about relocatability, graphics generation and memory design, a far cry from the "dumb" user concept. The Noval 760 computer was designed to fill the needs of the advanced hobbyist, who has a serious interest in learning about writing and using software. The system emphasis at Noval has been placed on provision of a unified hardware and software package which facilitates program develop- ment. The Noval 760 system does /70f allow the user to pick up a 4 year degree in computer science within two weeks by following the manual, but it does simplify some of the "dog" work required to design, write and debug programs written for amuse- ment or more serious business. The most startling aspect of the 760 is its package. The computer system is housed in an attractive desk, which in its "folded" position is a piece of contemporary furni- ture. It is, in fact, fully functional as a desk, complete with drawer space. However, lift- ing the rear half of the desk top (photo I) reveals a computer console with video dis- play and cassette mass storage. The center drawer pulls out to reveal a full alpha- numeric keyboard. The design philosophy of the 760 system is to provide a fully assembled and tested computer, with everything needed to de- velop and run programs. This philosophy is carried through all aspects of the hardware and software, and especially in the way the hardware and software work together. Hardware The Noval 760 computer is based on an 8080A microprocessor. The standard hard- ware includes: • 16 K bytes of user program memory. • 3 K bytes of PROM systems software. • 1 2 inch (30 cm) solid state monitor. • Full alphanumeric keyboard. • 32 column printer. • Digital cassette tape unit with full electronic control. • Eight built-in 10 ports (three user available). • Heavy-duty power supply. • Graphics system, including 1 K bytes of user programmable refresh memory, 2 K bytes of user programmable char- 102 acter generator memory, and bytes of scratch pad memory. 1 K Dynamic memories witii invisible refresh are used for all programmable memory. No memory wait states are generated, and full refresh is maintained when the system is halted. An optional second memory board expands the system to 32 K, and PROM expansion to 16 K is optional. The standard software PROM occupies 3 K bytes, with sockets for an additional 1 K bytes of user supplied PROM. The system uses a direct video monitor for a clear, crisp display. The wide bandwidth attained using the direct drive approach is especially impor- tant in the high resolution graphics mode. The drawer mounted keyboard has all the standard ASCII keys, plus special control keys for video games, such as up and down arrows. The keyboard is scanned and en- coded using software, so that key codes may be arbitrarily assigned, if desired. The printer is a dot matrix impact printer, manufacturered by LRC Products Inc. Rather than employing a standard ROM for character generation, the software cre- ates the images to be printed. This allows user defined symbols to be created along with standard ASCII characters, a graphics mode which enhances the usefulness of the printer as a plotting device. The tape mass storage unit is a PhiDeck, with Noval designed electronics, capable of reading and writing at 2500 bits per second. This allows a 4 K byte program to be loaded or saved in about 20 seconds. The 10 system is implemented using a distributed logic technique. One corner of the main printed circuit board is devoted to eight parallel connected Molex connectors of 20 pins each. All signals from the processor which are necessary to implement the first eight ports (ports to 7) are bussed to these Photo 1: The Noval 760 is shown in this picture as it appears in its natural set- ting for use: unfolded in a living room, office or den. The console with display and cassette drive folds into the desk and the drawer with its keyboard closes, so that when not in use the Noval 760 blends into the decor as a desk- like wood tone piece of furniture. 103 connectors. The cable for any peripheral is terminated by a snnall printed circuit board which contains four integrated circuits which actually implement the 10 port. The graphics system is one of the nicest aspects of the Noval hardware. The display system contains its own 4 K byte volatile memory which is dedicated to image genera- tion and display. Control of the screen is done using a memory mapped approach, so that every screen location has a unique memory address. This allows fast access to any screen location using any of the 8080A memory referencing instructions. The graphics system is character oriented with user defined character graphics. 1 K bytes of the video memory are devoted to holding the character codes for the screen which are accessed every time the beam scans the CRT. The screen is organized as 28 rows of 32 characters each. The character codes span a full 8 bit range which gives the capability for defining 256 different charac- ters. The characters are formatted as an 8 by 8 array of "dots." The definition of these dot patterns is contained in a second 2 K byte image memory, also user program- mable. (A little figuring shows that to represent 256 different images of 64 dots each requires 2 K bytes of memory.) Since, like the refresh memory, the image memory is treated like any other 8080A system memory, it can be directly accessed using conventional memory reference instructions. "Loading" the character generator is simply a matter of writing bit patterns (which will be displayed as dot pattern on the CRT) into consecutive memory locations. What about color? This feature is built into the system, but an external color monitor is required to use it. The system allows the user to define four different color "schemes" for use with such a monitor, where each scheme consists of eight pairs of image and background colors. Although the color schemes themselves require burning a 32 by 8 PROM, selection of one of the four is done in software. 1 K bytes of memory physically located in the video system are available for general purpose use. In all Noval system software, the 8080A "overhead" variables such as the stack data and system flags are stored here, so that the user has maximum use of the 16 K byte (or 32 K with expansion) memory elsewhere in the system. The development of hardware for the Noval system was closely paralleled by in- tensive software development. It is the "co- operation" between these two disciplines which we feel has produced a successful integrated package. Software Noval software is organized around a number of utility and supervisory routines which are collectively referred to as the system "monitor." In the minimum system configuration, a 3 K byte PROM resident segment of the monitor contains a command processor, a few utility routines and the software required to communicate with the front panel, keyboard, CRT and cassette tape. The primary function of this 3 K program is to load other monitor and system routines from cassette (unless a PROM option has preloaded this data). Standard software includes an editor, assembler, debugger, and a graphics charac- ter generation package. As an option, all of the above software can also be installed in PROM. A BASIC interpreter is also available. Editor, Assembler and Debugger The Noval editor, assembler and debugger for 8080A code have many unique features. Before examining this system, however, let's quickly outline what these development tools are traditionally designed to do. An editor allows you to enter, format and modify ASCII text. Input to the editor is either old text which is to be modified or new lines of text which are typed in. Text output from the editor is used as input to the assembler. The assembler input is called a source program. The assembler translates the "source" into binary codes which are intelligible to your processor. Traditionally on large machines and many minicomputers editors and assemblers are independent pro- grams; text created by the editor must be saved somewhere while the assembler is being loaded. When the assembler has been loaded, the edited source program can be reloaded and assembled. When assembly is complete, the assembler produces a listing of the source program and the associated binary codes. The binary codes are called the object program. The assembler output also includes a list of errors found in the source program. Perhaps you typed MOB A,B instead of MOV A,B, or maybe you forgot to define label "LOOP." So back you go to the editor. Load, reedit, save, load, reassemble, . . . The Noval system uses an interactive approach to editor and assembler design. The Noval editor can be used in a mode which checks each line of proposed assembly language code for syntax errors as it is entered. Thus when you type "MOB A,B" and attempt to insert it into the text, the editor does not allow the line to be inserted. Instead, an error message is issued and the 104 Visibly increase your computing power. Want results you can see? Take a close look at the Soroc IQ 120 CRT terminal. It can augment the computing power of your sys- tem and provide you with more flexibiLty than before. Yet, it's priced low. If you think the SMART TERMINAL is going to cost you an arm and a leg, for a few more features - THINK AGAIN! For a suggested retail price of $995.00 only, the IQ 120 gives you upline, tab, home, and absolute cursor addressing in addition to the usual forespace, backspace, down- line, new line, and return. And, besides full or half duplex conversation mode, the IQ 120 provides block mode so you can transmit a line or a page at a time. What's more, it offers field protection, auto repeat, and a numeric pad. Plus 1 5 switch-selectable baud rates, 80 x 24 standard format, and a standard RS-232 interface. Contact us for more information today. We think you'll like seeing things our way. SOROC Technology, Inc., 165 Freedom Avenue, Anaheim, Califomia 92801. Call (714) 922-2860. For those calling outside of Califomia, call toll free (800) 854-0147, or one of our authorized distributors. G Circle 232 on inquiry card. TECHNOUOGY, IMC. See us at 77 Consumer Trade Fair, Booth #306 in Computermania, Booth #519. line must be retyped. The method used involves the editor and assembler working together; the assembler is called by the editor to check the syntax of each proposed instruction. The editor cannot check for every possible assembly error condition, but errors that are caught constitute a large percentage of typical assembly errors. The editor's interactive assembly mechanisms can, of course, be disabled to allow input of arbitrary text as well. The mechanics of using the editor and assembler have been kept as simple as possible. A 2 letter keyboard command (ED) calls the editor from the monitor's command processor. The first 24 lines of text (if any) are displayed immediately. Each line of text has been automatically assigned a line num- ber. One letter keyboard commands allow you to insert (I), erase (E) or change (C) lines. Up arrow (t) and down arrow (I) allow viewing of previous or upcoming pages of text. Any specific section of text can be displayed by simply typing the line number. A search command (S) allows capability to search for any ASCII string. All editor com- mands immediately display the results of command execution. An inserted line, for example, is immediately displayed along with its neighboring lines. The "ESC" key causes exit from the editor and returns control to the monitor command processor. All assembler com- mands work directly on prescanned text created by the editor, with no need to save intermediate results. Assembler options include capabilities to assemble and list errors, assemble and print assembly listing on the printer, assemble and display a listing on the CRT, and execute the object program after assembly. When assembly errors are noted (most are undefined labels since syn- tax is checked during editing), the editor can be immediately recalled and the source program modified. The Noval editor and assembler interaction helps minimize the time spent in the program development cycle, a concern which is just as important to the amateur as it is to the professional programmer. The monitor save text command allows saving any number of lines on the cassette tape. Special assembly commands allow seg- ments of the large source program to be read into memory, assembled and linked to pre- viously assembled segments. Very large pro- grams can be assembled in this manner. The ultimate size limitation essentially depends only on the amount of available memory. When the source program has assembled properly, typing OD transfers control to the Noval ODT (On-line Debug Technique) com- mand processor. From here insertion of software breakpoints and use of the ODT jump command allow the user to execute any segment of object program. Before the jump all 8080A registers can be preset. Upon hitting a breakpoint (a dedicated restart instruction, "RST2"), the breakpoint ad- dress is displayed along with all register values, the stack pointer address and pre- vious elements on the stack. When the entire development procedure is complete, the debugged source and object programs can easily be saved on cassette tape. Leave the Driving to Us Communication between the central processor and peripheral equipment in this (or any) system is accomplished with soft- ware "drivers." Drivers deal with the de- tailed workings of system input or output, and, at best, are organized to make such communication an easy task. Drivers for all peripherals in the Noval system are included in the standard PROM monitor. Also in- cluded is extensive documentation on how to use each of them. Furthermore, the monitor includes a large number of utility routines which can be used for special purpose programming applications. Ex- amples include a routine to print ASCII text on the screen; routines to create and display graphics characters; a routine to find a keyboard key "push" and return the ASCII code for the key. In total, the user of the Noval system has access to over 75 systems routines which can be used in a variety of applications. An Eye Toward Revision One problem with accessing drivers using subroutine calls is that absolute address of the subroutine must be known. As sub- routine revisions are made, absolute ad- dresses change and all references to sub- routines must be modified. Typically, a reassembly of a large amount of user applica- tions software is required each time system subroutines are modified. [Perish the thought.] Noval monitor utility routines can be called without knowing the absolute address of the routine. To call one of these routines, the programmer inserts an "RST7" instruction followed by a 1 byte constant which identifies the desired routine. As an example, RST7 (Restart 007) DB17 (Define Byte 01 7) calls utility routine number 17, which erases the display screen. The restart 7 data (the "DB 17" above) is used by the monitor to 106 Talk to your computer for *299 with SpeechLaB. Use SpeechLab to directly control any S-100 Bus Com- puter such as Sol, IMS AI, Altair and so on. SpeechLab can teach you almost as much as the Bell Laboratories know about voice recognition, voice control and computer input. SpeechLab digitizes and extracts data from speech wave form and applies pattern matching techniques to recog- nize the vocal input. Response is real time. The system features 64 bytes of storage per spoken word and can handle up to a 64 word vocabulary. And recognition after very little practice is 95 percent or better. $299" assembled and tested When we talk price every- body's skeptical. And why not? We give you a complete hardware/software system, a 275 page laboratory manual, 95 page hardware manual and high fidelity microphone. The lab manual includes 35 graded experiments with over 100 tables and graphs. In -o fact, it's the only introductory S volume on speech recognition 3 currently available. .? Software includes § SpeechBasic Basic program- " ming language in source and ^ u •Available in kit form for slightly less. Q paper tape, assembly language speech recognition program in source and paper tape, hard- ware self-test program in source and paper tape. SpeechBasic plot, correlation, recognition and advanced recognition programs are offered in source. Hard to believe, you bet. True? A Los Angeles customer says, "I love your kit!!! I have 40 boards and 2 IMSAI's and your kit was the best documented of them all. I love the way you integrated the software and hardware to- gether. I love your lab manual'.' We loved those comments. They tell the story better than we ever could. The LA cus- tomer did ask who the founders of the firm were so he could relate better. They're a couple of r" gifted young engineers who got tired of the big firm, big tech- nology trip and decided to take a chance with a better idea. You can't get better quality You can't get more performance Sure, more complex, higher price equipment is avail- able for about 50 times more money. It won't do much more than you can do with Speech- Lab. And the quality and state-of-the-art engineering can't be any better. We use CMOS design for low power and ultimate reliability. See SpeechLab at your nearby computer store Selected computer stores have SpeechLab on display. Visit your nearest. If he doesn't have it, ask him to contact us or simply write us directly. Heuristics, Inc., Box B, 900 N. San Antonio Road Los Altos, CA 94022, Phone (415 ) 948-2542 n Send me SpeechLab. I enclose $299. California residents add sales tax. n Send me more information. Name- Street- index into a "call" or "jump" table. Entries in the table contain the absolute addresses of the utility routines, thereby freeing the programmer from having to deal with ab- solute addresses. This technique assures that programs which call the monitor system routines will execute properly with all (in- cluding future) versions of monitor software. RST 6 has been reserved for the user to construct a similar call table for his or her own use. Two dedicated locations in scratch pad memory are used to specify the starting address of the call table. And an Eye to Graphics Another 2 letter monitor command (GR) transfers control to the graphics character generator command processor. Simple key- board commands allow the user to place any of 256 current character definitions at any screen line and column; create or modify character graphics by defining individual dots within an 8 by 8 matrix; erase the screen; select a graphics color scheme; or save a created set of characters on cassette tape. The characters created in this manner can be used by routines created by the editor and assembler. Nova! BASIC Noval BASIC is available as a minimal cost option. However, a prerequisite for running this version of BASIC is that the entire system monitor (including the editor, assembler, etc) be installed on PROM. The reason for this requirement is that some of the extended features of Noval BASIC re- quire use of editor and assembler sub- routines. Noval BASIC itself occupies 6 K bytes of memory, and is available in both volatile memory and PROM versions. If the PROM version of BASIC is installed, a total of 16 K bytes of systems software resides in a Noval 760. Consistent with the overall Noval design philosophy, BASIC has been enhanced to take full advantage of system flexibility. Some of the features are graphics character generation and display capabilities; color selection capability; saving and loading pro- grams from cassette tape; listing programs on the printer; fast BCD floating point package; full control of display screen presentations, including cursor positioning; single and double dimensioned arrays; and the ability to call monitor and user assembly language subroutines. Although the Noval BASIC interpreter is designed to be consistent with the 1974 ANSI I standard (which presents a "standard BASIC"), the extra features of this system require some differences. Some of the most useful "extras" of this version concern the use of monitor subroutines and the develop- ment of user assembly language subroutines. Noval BASIC allows the user to preset all 8080A registers before a call to an assembly language routine whether it is in the moni- tor, or user created. Similarly, all registers can be read after the call has been com- pleted. The statement SYS (n) calls system routine number "n." The USER statement provides a similar facility for user defined routines. Interpreting Specs The effective resolution in each 8 by 8 spot character cell is equivalent to 256 spots horizontally, 224 spots vertically. Keeping one character definition for the "null" (all spots off) condition, and using 255 character definitions for active (nonnull) graphic in- formation, any picture which requires use of less than about 28% of the full screen area for active video information (restricted to the 28 by 32 character cell grid) can be represented. If the picture has repeating subelements which can be programmed into the matrix of character cells, then more of the screen can be covered with meaningful Information. Animation graphics can be smoothly represented on this grid by devot- ing small groups of programmable character cell definitions to picture elements which evolve with time . . . CH About the Manufacturer Noval was formed about a year ago as a sister company to Gremlin Industries, an established manufacturer of electronic arcade games. The goal of Noval is to provide the personal computing user with the microprocessor technology which Gremlin has developed in-house and refined over a 3 year period. This explains the heavy emphasis in the Noval system on assembly language, graphics and game-oriented fea- tures. Additionally, Noval is involved in a continuing research project with the San Diego school system, called Telemath, in which tutorial games are designed around mathematical learning objectives for grade levels 2 thru 6. Out of this effort has evolved a mathematical game library of over 50 programs to date. All Telemath programs are available to Noval system users, as are selected Gremlin Industries arcade games, which until now were rarely seen in homes and offices." 108 XimEDiA P^E^En» The SOROC 10120 CURSOR CONTROL. Forespace, back- space, up, down, new line, return, home, tab, PLUS ABSOLUTE CURSOR AD- DRESSING. TRANSMISSION MODES. Conversation (half and full Duplex) PLUS BLOCK MODE — transmit a page at a time. FIELD PROTECTION. Any part of the display can be "protected" to prevent overtyping. Protected fields are displayed at reduced intensity. EDITING. Clear screen, typeover, abso- lute cursor addressing, erase to end of page, erase to end of line, erase to end of field. DISPLAY FORMAT. 24 lines by 80 char- acters (1 ,920 characters). CHARACTER SET. 96 characters total. Upper and lower case ASC 1 1 . KEYBOARD. 73 keys including numeric key pad. REPEAT KEY. 1 5 cps repeat action. DATA RATES. Thumbwheel selectable from 75 to 19,200 baud. SCREEN. 12 inch rectangular CRT - P4 phosphor. SPECIAL INTRODUCTORY PRICING Kit $ 995.00 Assembled $ 1 ,295.00 {Price includes blocl< mode, lower case and 24 line options.) Specials of the Month North Star Micro Disk with power supply and cabinet Kit — $699 Assembled -$799 IMSAI 1-8080 with TDL ZPU Kit - $825 Assembled - $975 Digital Systems FDS Disk Drive with CP/M Software (assembled only) . Single - $1,750 Dual -$2,350 Mountain Hardware PROROM Kit - $145 Assembled -$210 Vector Graphic 8K RAM Kit - $235 Assembled - $285 XIMEDIA OFFERS A FULL RANGE OF PRODUCTS FOR THE PERSONAL COMPUTER ENTHUSIAST AND THE SMALL SYSTEM DESIGNER. LET US QUOTE ON ALL YOUR HARDWARE AND SOFTWARE NEEDS. OUR RETAIL STORE - THE COMPUTER IST^"^ - IS NOW OPEN IN SAN FRANCISCO. CALL US FOR DIRECTIONS. NOW WE'RE TOLL FREE 800-227-4440 in California, Hawaii, and Alaska, call collect: 415/566-7472) Circle 228 on inquiry card. XililEDiA 1290 24th Avenue, San Francisco, CA 94122 (415)566-7472 COD orders freight collect. Orders with payment shipped prepaid. Californij residents add 6% sales tax. Please allow 3 weeks for delivery. Whafs New? Microsoft Announces 8080 FORTRAN IV Compiler Microsoft has announced a FOR- TRAN IV compiler for the 8080 micro- computer. Called FORTRAN-80, the compiler is a full implementation of ANSI Standard FORTRAN with the exception of the double precision and complex data types. FORTRAN-80 provides three data types including: logical (1 byte), integer (2 byte), and real (4 byte floating point). An extended version of FORTRAN-80 with double precision and complex data types is forthcoming. The compiler generates pure, relo- catable code which may be placed in ROM. The run time package may also be placed in ROM. This 1 pass compiler requires less than ] 2 K bytes of memory. the run time system less than 6 K bytes. A relocating linking loader is included with the FORTRAN package so that subprograms may be compiled separately and linked at load time. This also means that only the specific subprograms re- quired are loaded (including system subprograms). Another part of the package is a relocating assembler and an assembly language debugging program. The as- sembler may be used to produce FOR- TRAN compatible subprograms. The debugging system may be used with the load map produced by the loader to debug FORTRAN and/or assembly lan- guage programs. Additional features of Microsoft FORTRAN-80 include: • Multistatement code optimization. • Mixed mode expressions. • All standard FORTRAN library functions for reals and integers. Individual copies of FORTRAN-80 may be purchased for $500 including documentation. The manual is $15; OEM (original equipment manufacturing) licenses are available. Contact Microsoft, 819 Two Park Central Tower, Albu- querque NM 87108.- Circle 644 on inqiurv card. A New Catalog from E & L Instruments The Complete Bugworks Catalog is the name of E & L instruments' new publication describing such items as solderless breadboards, op amp designer modules and socket boards. The Bug- books series, which teaches electronics and microcomputer theory, is also offered. Copies of the catalog may be obtained by writing to E & L Instru- ments Inc, 61 First St, Derby CT 06418." Circle 651 on inquiry card. How to Sell Your Product The Handbook on Marketing for Electrical Engineers is a 127 page soft- cover manual available from Schoon- maker Associates, PO Drawer, Coram NY 11727, lor $25.50. The book dis- cusses the marketing of technical prod- ucts and covers such topics as product planning, pricing, sales forecasting, publicity and tactics for the small com- pany. Additional titles on related sub- jects are also available." Circle 652 on inquiry card. Prototype Cards for SWTPC 6800 Bus Two prototyping boards for either wire wrap or soldertail and wiring pencil are now available from Personal Com- puting Company, Dallas TX. These boards are either 10 size or memory size. Since they use Molex connectors at the bus interface, they are com- patible with the SwTPC bus structure and mother board. In addition, other connectors are provided to allow off board and 10 functions. The cards are arranged in rows of holes with the holes on 0.1 inch (0.25 cm) centers and the rows on 0.3 inch (0.76 cm) centers; no pads are dedicated to either power or ground; however, power and ground buses are provided throughout the card. Bypass capacitor locations are provided to eliminate power line noise. Two regu- lators can be installed in special loca- tions on the memory size card. The 10 size card has provision for one regulator. The memory size card is $19.95, and the 10 size card is $9.95. Contact Personal Computing Company at 3321 Towerwood, Dallas TX 75234." Circle 650 on inquiry card. Computer Warehouse Store Catalog The Computer Warehouse Store, 584 Commonwealth Av, Boston MA 02215, is perhaps the largest new and used computer equipment store in the world. Their new catalog (of similar proportions) lists a wide range of brand name kit and assembled computer prod- ucts. In addition, there is much tutorial information along with microprocessor comparison charts and a multitude of onetime bargains. This is a true computer hacker's "wishbook" of useful equip- ment and accessories. The catalog is available free from the above address." Circle 656 on inquiry card. New... a breadboard for your Altair/lmsai. HTC88P kit $138 write today for specs Homestead Technologies Corp. 891 Briarcliff Rd. NE Suite 8-1 1 Atlanta, Georgia 30306 dealers please inquire COMPUTER Telefile makes computers work better and faster. Our company, a leader in the unlimited world of computer enchance- ment, has the rare opportunity for •Diagnostic programmer with a minimum of 2 years experience in communications and assembly level programing. •Technician hardware checkout, P. C. Board and documentation experience re- quired. •Draftsperson at least 3 years P. C. Board, layout/tape-up, logic diagram or assembly background necessary. Telefile is the right company at the right time and the right place for the exceptional applicant. If the challenge of success is your goal, send your resume in complete confidence *° D. E. White V P o1 Engineering Telefile Computer Corp 17131 Daimler Street, Irvine, CA 92714 We are an equal opportunity employer. CONVERT ANY TV TO A HIGH QUALITY MONITOR . Hot Chassis or Transformer sets . 64-80 characters per line • By-passes tuner & I.F. • Normal viewing unaffected • Safe— Easy installation ACVM Hi-Resolution $24.95 ppd RFVM Ch2-6 Modulator $9.95 ppd vampTnc: Box'ZgSIB Los Angeles, Calif. 90029 Calif. Residents add 6% Sales Tax Circle 234 on inquiry card. Circle 235 on inquiry card. 110 Circle 236 on inquiry card. FUP OVER OUR FIOPPY Only $750 from Peripheral Vision. Peripheral Vision is a brand-new company that's dedi- cated to selling reasonably priced peripherals for various manufacturers' CPU's. We think you'll flip over our first product. It's a full-size floppy disk for the Altair-lmsai plug-in compatible S-100 BUS. And it's available for as low as $750. Here are the features: • 1 interface card supports 4 drives • Stores over 300,000 bytes per floppy • Bootstrap EPROM included — no more toggling or paper tape • Completely S-100 plug-in compatible • Interface cabling Included • Drive is from Innovex (the originator of the floppy concept) — assembled and tested • Interface card design is licensed from Dr. Kenneth Welles and the Digital Group • Disk operating system with file management system included on floppy • Cabinet and power supply optional Now, a little more about our company. Peripheral Vision may be brand-new, but we have some old-fashioned ideas about how to run our business. We know there are serious incompatibilities among the different manufacturers' peripherals and CPU's. We want to get them together. And, we want to bring significant new products to market — products consisting of everything from adaptation instructions/kits for hardware and software to major new products. It's a tall order, but we feel we're up to the task. Peripheral Vision has already obtained a license from The Digital Group to adapt versions of some of their prod- ucts to the S-100 BUS. And we're working on getting more from other companies. Most important to our customers. Peripheral Vision is committed to helping you get along with your computer. We'll do all we can to make it easy Write us now for all the information on our company our philosophy and our exciting line of products. And be prepared to flip over all of it. Prices: Interface card kit and assembled and tested drive Power supply — -I-24V at 2A Cabinet — Optima, blue Circle 237 on inquiry card. Kit $750 45 Assm. $850 65 85 RO Box 6267 /Denver, Colorado 80206/(303) 733-1678 Send me the works, and I just might flip over It! Name Address_ City/State/Zip_ Photo 1 : The object of the design exercise documented in this article is an interface between the computer in the basement and the Steinway baby grand player piano shown at the left in this picture. Using the interface of figure 1, and the solenoid valves of photo 2, electronic control of the restored piano will be completed by adding a motor driven bellows unit of later vintage than this 1910 piano. In the picture, various subassemblies have been placed at skewed angles atop the keyboard (spool box and 3 phase wind motor) and underneath (foot operated bellows and pedals). In the restoration of this piano, all the original mech- anisms will be preserved, with the electronics interface consisting of an addition to the basic design. Notes on Interfacing Pneumatic Player Pianos Carl Helmers Everyone is familiar with tine concept Editor of the player piano, a complex mechanical monstrosity which had its heyday in the early part of this century as the prime home entertainment device before the invention of electronic media which now dominate the home entertainment scene. But player pianos are far from dead. Just as there is an active subculture of computer aficionados, there is a whole cult of player piano and mechani- cal music freaks. Thanks largely to these people a working player piano is not an uncommon sight in the parlors, dens and living rooms of contemporary suburbia. Many of the owners of player pianos may not recognize that these instruments can be a most interesting output device for a personal computer, an output device whose interface can be achieved with very little woodworking and mechanical skill as well as the usual hardware and software skills of the experienced computer hacker. I have long had an interest in electronic music as generated and controlled by com- puters. It is this interest which started me on the road to learning electronics hard- 112 ANY NUMBER OF FILES MAY BE OPEN (IN USE) AT ONE TIME THE NUMBER OF FILES AND SIZE OF FILES IS LIMITED ONLY BY THE SIZE OF THE DISC MERGING FILES REQUIRES NO EXTRA DISC SPACE NO WAITING FOR THE DISC TO RE-PACK LONGER DISC LIFE -MORE EVEN DISC WEAR Our Basic Floppy Disc System (BFD-68) must, in all mod- esty be called superb. It comes completely assembled with a disc controller that is plug compatible with the SWTPC 6800. In fact all our products use the 6800 standard SS-50 (Smoke Signal 50) bus used by SWTPC. The cabinet and power supply are capable of handling up to 3 Shugart Mini-Floppy Drives. One drive is included in the price of the BFD-68 and others may be added easily at any time. Or you may save money by ordering the dual-drive BFD-68-2 or triple drive BFD-68-3 (pic- tured). Price: BFD-68 $795, BFD-68-2 $1139, BFD-68-3 $1479, SA-400 Drive $360. The BFD-68 includes our Disc Operating System Software. Our software provides for a soft-sectored disc format consist- ing of 128 bytes per sector, 18 sectors per track and 35 tracks per disc. The software provides direct commands to name and rename files, transfer memory to disc and disc to memory and to automatically jump to the starting location of any program loaded from disc to memory. The direct command names are: RUN, GET, GETHEX, CLOSE, SAVE, DELETE, APPEND, RE- NAME, COPY, LIST, FIND, LINK and PRINT. In addition, the Disc File Management subroutines are available to create files under your program control. A bootstrap PROM is included on the controller board to ini- tiate the Disc Operating System which loads into a 4K memory board located at 7000 or optionally at DOOO. Thus, you can be up and running from a cold start in just a few seconds. SUPER SOFTWARE Free patches are provided for SWTPC BASIC version 2.0 and Co-Resident Editor/ Assembler. These patches allow the SAVE and LOAD commands to work with the disc or the cassette at your option. SUPER EDITOR: Smoke Signal Broadcasting now has its own editor. It is a content oriented editor with string search and block move capability. Changes may be made by referring either to line number or string content or a combination of references. Naturally, it is designed for file transfers to and from the BFD-68. Price: SE-1 $29 on diskette or cassette. ALLOUR PRODUCTS EXCEPT THE PS-1 ARE COMPLETELY ASSEMBLED. SUPER ASSEMBLER: Inputs source code from file on the BFD-68 disc system and outputs object code to disc file. As- sembly listings include alphabetized and tabulated symbol table. Price: SA-1 $29 on diskette or cassette. Complete source listing included for both editor and assem- bler. Order both for $53 and save $5. SMARTBUG-A CURE FOR MIKBUGITIS: A super smart Motorola-Mikbug replacement that preserves almost all Mik- bug entry locations so your present programs will run without modification. Uses ACIA instead of PIA and includes many additional features including a software single-step trace com- mand. A SMARTBUG listing is included and object code is provided on a 2708 free with each P-38 series board pur- chased. Source listing available separately for $19.50. NEED A FULL SIZE FLOPPY? Our P-38-FF is a plug-in inter- face card to the ICOM Frugal FloppyTM. It includes all the fea- tures of the P-38-1 plus one 2708 EPROM containing the ICOM bootstrap software. Just plug the P-38-FF into your SWTPC 6800 and your ICOM into the P-38-FF and you're ready to use the Frugal Floppy and ICOM's 6800 software package. Price $299. Our P-38 is an 8K EPROM board containing room for 8 2708's. Or, you may use it to hold up to 7 2708's plus your Motorola Mikbug or Minibug II ROM. The P-38 addressing is switch selectable to any 8K location. Price $179. The P-38-1 contains all the features of the P-38 plus an inter- face to the Oliver Paper Tape Reader and our EPROM Pro- grammer. Price $229. The PS-1 Power Supply Kit provides plus and minus 16 volts required for the P-38 series boards. Also, it allows a wiring modification to be made to the 8 volt supply that will increase its output by one volt. Price $24.95. Our M-16-A is a 16K single power supply STATIC RAM mem- ory system. The M-16-A is fully buffered and requires only half the power of a similar size system using low-power 2102's. With the M-16-A, you can expand your system to 48K and still have room left for one of our EPROM boards. The M-16-A is switch selectable to any 4K starting address and hardware write protect is included. Quick delivery. Price $529. BANKAMERICARD, VISA AND MASTER CHARGE WELCOME. P.O. Box 2017, Hollywood, CA 90028* (213) 462-5652 Circle 238 on inquiry card. SPOOL BOX MECHANISM AIR FLOW WHEN HOLE PRESENT NORMAL PAPER MOTION LE RUBBER M LINE TO PNEUMATICS OF PLAYER PIANO ACTION Figure 1: The norma/ arrangement of a player piano's vacuum control system is illustrated here. A player piano roll moving past a "tracker bar, " analogous to a magnetic tape recorder's read head, turns on and turns off a flow of air into the evacuated control line which goes to one of the pneumatic controls of the piano. For the key mechanisms, the leading edge of loss of vacuum cues the striking of a key, which is held down until vacuum is restored. This occurs when the roll passes to a point which closes off the particular line. For control of a full 88 notes, there are 88 separate "channels" in the tracker bars of the more sophisticated players, not counting additional chan- nels to control dynamics, pedals and other special effects. ware skills needed to build computers for music control. I also knew that player pianos existed, and would eventually make an interesting experiment for use with electronic music in programmed performances of concerto style works with orchestral background for the solo instrument provided by elec- tronics. But I had never turned my atten- tion to the details of the piano interface problem until one day in October of 1976 when I went to an estate auction in nearby IVlilford NH at which a 1910 Steinway- DuoArt baby grand player piano (in un- playable condition) was put on the block. After outbidding a mechanical music box museum owner from Maine, I had the poten- tial for the ultimate piano. When the piano is eventually restored, it will provide my personal and computer music systems with a piano output device which, incidentally, can be used for normal piano rolls, normal practice under direct manual control of the keys, and under computer control using an interface to be described in this article. The piano, which is shown in photo 1, gave me the impetus needed to e>^amine in more detail the problem of controlling a pneumatic vacuum line with the output of a computer. Figure 1 shows a schematic illustration of the essence of the typical player piano's control mechanism. The player piano roll passes over what is called the "tracker bar" in the jargon of that technology. This tracker bar has one hole for each active key of the piano as well as auxiliary holes for various other types of information which may be encoded on the rolls. When a hole in the roll passes the hole in the tracker bar, the vacuum line associ- ated with the hole is opened to outside air. This release of the vacuum in the line triggers one of the "pneumatics" in a bank under the piano, which is basically a vacuum operated buffer amplifier with enough output power to toggle a key or actuate some other mechanism. The operation of the "pneu- matic" is of no great concern at this point, since all we need to know is that if the vacuum line is opened, the key will be struck, and that if the vacuum line is closed, the key will be released and the device will charge up with vacuum, waiting for the next time that key is to be actuated. The conversion to electronic control is simplest if we just adapt the existing mechanism by plugging up the tracker bar holes (tem- porarily during electronic performance) and adding a "T" junction to each control line so that an electronic control valve can simulate the opening of the vacuum line. Figure 2 shows this adaptation of the usual vacuum line arrangement for electronic control. Figure 2 also shows schematically the physical arrangement of a flap valve. As I began looking into the problem of control- ling air flow, I quickly learned about the existence of electrically controlled pneu- matic devices used in pipe organ and piano technology. It turns out that there is a company called Reisner Inc, which among other items makes a specialty of manufactur- ing and selling control valves for player pianos and pipe organs. Photo 2 shows the model for the schematic rendition in figure 2, a Reisner No 601-90 magnet with 5/8 inch valve mounted for the purpose of testing on a scrap of pine board, with a metal standoff used as the junction fitting to connect to the vacuum line. The Reisner subassembly consists of everything you see attached to the metal frame which is screwed to the top of the wood block: the magnet, the upper valve seal with cushions for sound dampening, and the return spring. In adapting this unit to a player piano's purposes, a bank of these valves is required, with a number depending upon the details of the particular piano. (For more complete 114 ^m- CP/M LOW-COST MICROCOIVH>UTER SOFTWARi^ r CP/M is a low-cost control program for microcomputers which brings together recent advances In computer and peripheral technology. CP/M is an advanced disk operating system designed for use with IBM-compatible disl; "unbundled" software pactcage which can be easily adapted to any 8080 or Z-80 '\ computer system with at least 16K of main memory and one or two IBN|^<^i; compatible disk drives. The field-modification manual provided with CP/M ^^^(. been used successfully by many CP/M users in customizing CP/M for their oWffv hardware configurations. fli DiEiTflL HESEflHCH Please send me the following; n CP/M Documentation (Complete set of 6 manuals) for $25.00. n CP/M Documentation and CP/M System Diskette for $70.00. D Free CP/M brochure and price list. n Infomiation concerning tiigh level languages and optional packages. NOTE: IMS Associates and Digital Systems distribute CP/M with their hardware systems. n Bank /Vnerlcard No. Exp. date D Master Charge No. _ Exp. date D Check or M.O. enclosed. California residents add 6% sales tax. Amount enclosed Name Address City Dl DJGiTai. HEBE^HCH State Zip Post Office Box 579 • Pacific Grove, California 93950 Circle 239 on inquiry card. ARBITRARY ROLL POSITIONED TO BLOCK ALL OPENINGS (OR MASKING TAPE) PAPER MOTION SUPPRESSED Photo 2: A test jig used to try out the magnetic con- trol valve concept. The Reisner No. 601-90 mag- net with 5/8 inch valve is mounted on a wood block using wood screws. In a final installation as part of a multiple valve attach- ment to a player piano's penumatics, one such valve would be assigned to each control tube of the piano. information on thiese valves, contact Reisner Inc, 240 N Prospect St, POB 71, Hagerstown MD 21740.) The physical mounting of the valve magnets, tubing, etc, depends upon the particular piano being converted. In the case of my baby grand player, an equipment chest will probably be attached under the sounding board in back of the presently installed pneumatics chest. Some woodworking ability and some mechanical handiwork are required in the fabrication of a bank of valves and in making the interconnections to the vacuum lines. Electrical Drive and Interface The era of integrated circuits simplifies the basic problem of controlling the sole- RETURN SPRING* -►-FLAPPER ARM FELT CUSHIONS CHAMOIS VALVE SEALS WOOD BLOCK MOUNT JUNCTION FITTING (SEALS WOOD, PROVIDES MOUNT FOR VACUUM LINE) PNEUMATICS Figure 2: Adapting the player piano mechanisms for computer control is accomplished using Reisner magnets and flapper valves. Each lube from the tracker bar is modified with a "T" junction which allows an alternate control point on the vacuum line. When the piano is run in computer control mode, all the holes in the tracker bar are sealed and the solenoid controlled valves simulate the effects of the roll's passage over the bar. The sealing of the bar can be accomplished by pasting a run of masking tape over the bar or by disabling the spool box 's drive motor and positioning a roll's leader over the tracker bar to close all the holes. For details of the valve, see photo 2. A basic interface drive circuit for the solenoid is shown in figure 3. 116 Building a better computer wasn't easy. But we did it. Introducing the MSI 6800 Computer System When we set out to build the new MSI 6800 Com- puter System, we knew we had our work cut out for us. It had to be at least as good as the now famous MSI FD-8 Floppy Disk Memory System which is also pictured below. So, the first thing we did was analyze all the problems and drawbacks we had encountered with other 6800 systems, and then put our engineers to work on solutions. The objective: Build a better computer. We started with power supply. We had big ideas, so we used a hefty 18 amp pow- er supply. You can run full memory and several peripher- als without the worry of run- ning out of juice. We also put it in the front of the cabinet so it's out of the way. The next step was the CPU Board. A separate baud rate generator with strap- pable clock outputs allows any combination of baud rates up to 9600. A separate strappable system clock is available and allows CPU speeds of up to 2 MHz. The new MSI monitor is MIK- BUG software compatible, so you will never have a prob- lem with programs. Addi- tional PROM sockets are available for your own spe- cial routines and to expand the monitor. The CPU also contains a single step capa- bility for debugging software. To complete the system, we used an MSI 8K Memory Board which employs low power 2102 RAM memory chips and is configured to allow battery back-up power capability. A DIP switch unit allows quick selection of a starting address of the board at any 8K increment of memory. If you're one of those people who understands the technical stuff, by now you'll agree the MSI 6800 is a better computer. If you're one who does not un- derstand it yet, you'll be more interested in what the system can do . . . play games, con- duct research and educa- tional projects, control lab instruments, business appli- cations, or just about any- thing else you might dream up that a microcomputer can do. The point is . . . the MSI 6800 will do it better. The MSI 6800 Computer System is available in either kit form or wired and tested. Either way, you get a cabinet, power supply, CPU board, Mother board. Interface board. Memory board, docu- mentation, instructions, sche- matics, and a programming manual. Everything you need. There is more to say about the MSI 6800 than space permits. We suggest you send for more informa- tion which includes our free catalog of microcomputer products. When we got to the Mother Board, we really made progress. It has 14 slots to give you plenty of room to expand your system to full memory capabil- ity, and is compatible with SS-50 bus architecture. Heavy duty bus lines are low impedance, low noise, and provide trouble-free operation. With all this power and potential, the interface had to be something special. So instead of an inter- face address in the middle of memory, we put it at the top . . . which gives you a full 56K of continuous memory. Interfaces are strappable so they may be placed at any address. An interface adapter board is compatible with all existing SS-50 circuit boards and interface cards. All MSI interface cards communicate with the rear panel via a short ribbon cable which ter- minates with a DB-25 connector. All baud rate selec- tion and other strappable options are brought to the connector so they may be automatically selected by whatever plug is inserted into the appropriate inter- face connector. Straps may also be installed on the circuit board. Building a better computer was not easy. Becom- ing the number one seller will be. See the MSI 6800 Computer System at Persona! Computing '77 - Atlantic City. 220 West Cedar • Olathe, Kansas 66061 913/764-3273 • TWX 910 749 6403 (MSI OLAT) nnnnnnnnnDannnnnaDDDDnna n D n □ NAME . D D D a n Circle 240 on inquiry card. Midwest Scientific Instruments 220 W. Cedar, Olathe, Kansas 66061 ADDRESS CITY STATE -ZIP- 0010977 g INHIBIT LINE {NORMALLY I) SHARED o CONTROL SIGNAL 0=OFF I =0N BACK emF PROTECTION ^ DIODE ^ (EG :IN9I4 SN75452 8 PIN DIP 6(1) POWER +5V = PIN I GROUND = PIN 4 REISNER 601-90 MAGNET WITH 5/8 in. VALVE 90n COIL PIN NUMBERS X(Y) X= ONE SECTION OF DUAL PACKAGE Y= OTHER section's PINOUTS Figure 3: The basic magnet drive circuit used for the pneumatic player piano interface. The driver circuit shown here is a Texas Instruments SN75452, a dual peripheral driver which comes in a miniature 8 pin dual Inline package. Each driver has a maximum capability of sinl^lng 300 mA In the low level output state (logical I Input which "turns on" the magnet). With the nominal 90 ohm coil and a low level output of 0.25 V the coil will have II .75 V across it. The current through the coil is thus 130 mA, more than enough to actuate the valve based on experiments with the unit shown in photo I which was tested against a vacuum applied to valve through the rubber hose. noids of the Reisner magnet valves. The solenoi(j coil has a resistance of nominally 90 ohms, and from the specification sheet (confirmed by tests in my laboratory) the valves can be actuated under load with a current higher than about 100 mA (about 9 V across the magnet). Using the Texas Instruments Linear and Interface Circuits Data Booi< as the source of information, it soon became apparent that the 75452 pe- ripheral driver circuit (or its cousin, the 75451) would prove quite adequate for the job since it can sink 300 mA and has a maximum voltage rating well above the voltage required for the actuation of the magnets. The basic circuit for driving a solenoid with the 75452 integrated circuit is shown in figure 3. In this illustration, I have shown one of the two gate inputs as an inhibit signal (normally at logic level 1) and the other input pin as the control signal defined so that if it is low (logic 0) the magnet is off (valve closed) and if it is high (logic 1) the magnet is on (valve open). The diode mounted on the solenoid coil is an absolute requirement. These magnets have a considerable inductance, and as a result when the current is removed will generate a substantial back EIVIF which can damage the 75452 output transistor if it is not shorted out by the diode. (The inductance is suffi- cient to cause an impulse which can be felt by the observer if fingers are held across the coil while the voltage is removed. This suggests a minimum of 50 to lOOV of inductive "kick.") Logic of a Practical Interface The brute force technique of interfacing the piano would be to simply put one wire from a latched output bit to each driver of the piano magnets, resulting in roughly 80 to 100 twisted pair interface data paths in a monstrously thick cable. This is an unwieldy mess. The problem is shared by pipe organ aficionados, as I found out from Jeff Raskin's lecture at the First West Coast Computer Faire's session on computers and music in April of this year. At that time he suggested the use of a serial technique to define the state of a bank of control valves. Basically, the technique consists of using serial synchronous transmission from the computer to cut down on the immense number of lines which would otherwise be required. Figure 4 shows a detailed sketch of 118 (VaAN-TROAffCfi %0^ COMPUTER PRODUCTS ^^%^ READY FOR IMMEDIATE DELIVERY IMSAI COMPUTER MODEL 8080 MICROPROCESSOR SYSTEM $875 ASSEMBLED AND TESTED INCLUDES CPU, MAINFRAME WITH 22 CARD SLOTS, FRONT PANEL, AND POWER SUPPLY. COMES ASSEMBLED AND READY TO PLUG IN AND ENJOY! 8K RAM BOARD $225 250 nS ACCESS LOW POWER NOT A KIT ASSEMBLED AND TESTED • S100 BUS: PLUGS RIGHT INTO ALTAIR/IMSAI, OR ANY COMPUTER USING THE "ALTAIR" BUS. • CONVENIENT DIP SWITCH SELECTION OF ADDR ESS ASSIGNMENT AND WAIT CYCLES • MEMORY PROTECTION DIP SWITCH SELECTABLE IN INCREMENTS OF 256, 512 IK, 2K, 4K, or 8K BYTES • FULLY BUFFERED ADDRESS LINES ALLOW USE IN LARGE COMPUTER SYSTEMS 16K 2708 EPROM BOARD INCLUDES ALL SUPPORT CIRCUITRY AND SOCKETS READY TO PLUG-IN 16 2708 IC'S $99 2708'SNOT INCLUDED • ALLOWS CONVENIENT STORAGE AND ALTERATION OF YOUR OWN CUSTOMIZED COMPUTER PROGRAMS • S100 BUS: PLUGS RIGHT INTO ALTAIR/IMSAI, OR ANY COMPUTER USING THE "ALTAIR" BUS • DIP SWITCH SELECTION OF MEMORY ADDRESS ASSIGNMENT • DIP SWITCH SELECTION OF MEMORY WAIT CYCLES • ASSEMBLED AND TESTED, NOT A KIT 8K 2708 EPROM PROGRAMMER BOARD $145 COMPLETE SYSTEM FOR "BURNING IN" PROGRAMS INTO THE ELECTRICALLY ALTERABLE 2708 MEMORY 2708'S NOT INCLUDED • S100BUS ALTAIR/IMSAI COMPATIBLE • COMPLETE 2708 PROGRAMMING SYSTEM • DOUBLES AS 8K NON VOLATILE PROGRAM STORAGE • ASSEMBLED AND TESTED, NOT A KIT 2708EPROMS $19^'' 21L02 250 nS $1""' TOP QUALITY PARTS - NOT SECONDS 74 SERIES IC'S 74LS SERIES IC's LINEARS COMPLETE LISTINGS IN OUR CATALOG ORDER BY PHONE: (213) 888-5079 OR BY MAIL QUAN TRONICS P.O. BOX 264 CHATSWORTH, CA 91311 Many other parts available — Just call or write for free catalog IN THE L.A. AREA PRODUCTS AVAILABLE AT: TECH MART 19590 VENTURA BOULEVARD TARZANA, CALIFORNIA 91356 (213) 344-0153 NEW PRODUCTS COMING - WATCH FOR OUR ADS - INFORMATION AVAILABLE WE WELCOME INQUIRIES Cirde 241 on inquiry card TO ADDITIONAL STAGES SERIAL DATA TO NEXT STAGE P0WE.F1 W1HIN6 TASLE CONTROL LOGIC IWIREO ONCE) ICI ICZ 1C3 J4LSI4 ■ 74LS01 7«LSO0 RELAY DRIVE LOGIC (FOR X < I TO n/-l) IC IC4 X IC5.X 1C6.X IC7.X TypE 74LS95 74LS75 754526 75452B SERIAL DATA FROM- PREVIOUS STAGE SCHMITT TRIGGER LINE RECEIVERS SYSTEM RESET (TWISTED PAIR) SHIFT CLOCK (TWISTED PAIR! SERIAL DATA (TWISTED PAIR) TRANSFER CLOCK (TWISTED PAIR) O pu^\/\/1 '-^p^ [P^ ~\r P JV/X/-UO ^| >>oi-^]>>^ ~ir -y~ IC4 X 74LS95 OR 74L95 RIGHT SHIFT CLOCK SHIFT REGISTER OB O |X>^ ^ [>>o^ ^j>>oi O rv>"w-vy-j — 4x^*°^ 13^^*°^ "U~ IC5.X 71LS75 _ru ONE OF FOUR (TYPICAL) VALVE 4 MAGNETS (MOUNT DIODE ON MAGNET ) DRIVERS AS IN FIGURE 3 PARALLEL. IDENTICAL DRIVES TO KEEP FANOUT TYPICAL STAGE REPEATED ■ FOR EACH GROUP OF 4 CONTROL VALVES TOLERABLE 16 18 |I0 112 Z!=\ ZA Za Za'"'"" + 12V 4A POWER SUPPLY WITH SHORT CIRCUIT PROTECTION (ALLOWS 3l MAGNETS ACTIVE BEFORE SHUTDOWN) SYSTEM RESET DISABLES ALL DRIVERS; FIRST TRANSFER CLOCK ENABLES DRIVERS PROGRAMMED TIMING 31A6RAM - n>NUMBER OF SOLENOIDS SERIAL DATA J ' 1 ~kr ~kr SHIFT CLOCK LiJ ■ LnJ TRANSFER CLOCK VALVE n ON VALVE n-l OFF VALVE n-Z OFF VALVE n-3 ON "■^ALVe VALVE VALVE 4 3 2 ... OFF ON ON VALVE I 1 1 OFF Figure 4: Solving the problem of heavy interconnection cables. This diagram shows a synchronous serial transmission scheme which requires four twisted pair wires to connect a parallel output port with the piano for programmed serial transfers. One twisted pair cable Is dedicated to the system reset line so that the local electronics In the piano will turn off all drivers when the system is reset. The other three lines are connected to three output bits. One bit Is programmed with the successive bits of data for the various valves when an output transfer is done. After each data bit is defined, the shift clock line is toggled to push its value down the 88-100 or so shift register stages assigned to control the 88 to 100 valves used in the piano. Then, when all the bits have been defined in successive operations, the transfer clock line is toggled to parallel load all the control latches and define the state of the solenoids. With a programmed transfer loop on a typical microprocessor, no more than 50 ps per bit should be required, or an update time of 5 ms per 100 solenoid data transfer under program control. This gives the processor a limiting resolution of 7 /200th of a second, well within the timing accuracy needed for music. Using specialized transmission hardware to automatically serialize the data from 8 bit bytes would speed up the typical data rates if needed. the logic I cJesigneid which will enable this metho(J of interfacing to be employed with three signal lines from a parallel output port of the control computer. In this scheme, each group of four valves is assigne • t c SI ts I < t * I s Photo 5: The roll in this case is outputting level ten to the accor- dion pneumatics. Photo 3b indicates the resulting mechanical position output of the pneumatics. 124 coming volume change. When the roll triggers either or both of these holes, control of the respective sides of the keyboard is transferred for that instant to the theme control. Details of this theme control system are essential to the design of soft- ware drivers for Duo-Art players converted to computer control. Numerous other fascinating features abound on this instrument. Take for ex- ample the automatic roll-centering negative feedback system. The curved vertical "finger" shown in photo 5 is one of two which are positioned to just touch the edges of the roll. If the roll wanders off to the right or left, the fingers tilt back, uncovering air tubes which are under vacuum. This sends a signal to a set of opposing bellows with a high damping ratio, which push the roll spool back until the air tube is covered again. The design is simple, yet effective. Long before Norbert Wiener made it ex- plicit, servomechanisms as control systems were in practical daily use. Just how good does the Duo-Art sound? Well, it has some obvious limitations (limited dynamic range, for one), but on the whole it sounds remarkably good. The sound quality is several orders of magnitude better than the "new fangled" phonograph which eventually supplanted it commercially. In its heyday, the Duo-Art Company could afford to hire some of the most famous pianists of the age to record for them: Paderewski (see photo 6), Wanda Landowska, Vladimir Horowitz (when he was in his twenties), Igor Stravinsky (I), George Gershwin (playing his own four-hand arrangement of "Rhapsody in Blue" by overdubbing), and on and on. The rolls were beautifully decorated, too (see photo 6). Readers wishing to find out more about the fascinating hobby of reproducing pianos should write to the Vestal Press, POB 97, Vestal NY 13850, and ask for their catalog. The Vestal Press specializes in books about player pianos and other musical automata. The Player Piano Company in Wichita KS is an excellent source of supplies for the do-it- yourself restorer. The current bible in the field is Rebuilding tlie Player Piano, by Larry Givens, published by Vestal. In it you'll find valuable material about the Duo- Art and about the other brands of com- peting reproducers like the Ampico and Wurlitzer models. But that's another story." Photo 6: A Duo-Art roll of Chopin 's "Polonaise, Opus 40, Number I," as played by Paderewski, in position over the tracker bar. Note the extensive ornamentation, both visu- ally and verbally, In the form of the performer's authorization of the work. This roll is approximately 55 years old. Paderewski was a link in a liszt of salon pianists which began in America with Louis IVIoreau Gottschalk, and which continues to this day with certain candela- bra wielding virtuosos. g '' .*'?;g ' rTw:!pi^>uew» ' i»' ' ;*-w« »! »» '' ««>» » « ■MMiM ^ ' Wj^gg 125 A note on the organization of this article: Because of the large number of figures in this article, the procedure used in part I last month is continued this month, ie: the text has been incorporated into the figure and table captions. We hope Ihis will eliminate unnecessary page turning. The figure and table numbering sequence used in this in- stallment continues the sequence begun in the first part. The final part ol this 3 part Mike Wimble 6026 Underwood Av SW Cedar Rapids lA 52404 An APL Interpreter for Microcomputers The Great APL Interpreter Contest As an incentive to those experimenters wfio would lifie to try writing tfieir own APL interpreters based on tliis series of articles, BYTE announces the Great APL Interpre- ter Contest. We will award prizes for APL interpreters (suitable for publication with royalties to authors) based on Mike 's flow- charts (or independent of them if you prefer). Contestants are free to write their inter- preters for any microprocessor they choose. Entries will, however, be judged on their suitability for use on small systems with a minimum of 16 K bytes of memory, as well as on programming elegance and efficient use of space. All of these factors should therefore be kept in mind. Entries should be addressed to BYTE, attn: The Great APL Interpreter Contest, 70 IVlain St, Peterborough NH 03458 and must be postmarked no later than midnight, February 28 1978. Entries must be in the form of a publication quality manuscript which describes the implementation of the interpreter and which includes a listing of source code and object code. Contestants should also submit machine readable source and object code in the form of paper tape or cassette. The winners (if any) will receive $1000 plus normal author payments, should the entry be chosen for publication in book form or as an article in BYTE. We reserve the right to choose more than one winner under the same terms. judging will be done by the editors of this magazine. Those seriously interested in entering this contest should call Carl Helmers or Chris l^organ at BYTE, 603- 924-7217. May the midnight oil burn prosperously for all. Part 2: Evaluation Expression Backus-Naur Form (BNF) BNF is a notation used quite often in the description of computer language grammar and semantic information. Many of the figures in this series of articles contain a short BNF description of the formal ele- ments of APL treated by the flowchart in question. A BNF statement looks like: :- || In BNF, brackets (" < " and "> ") are used to enclose tokens or "terminal elements," and the symbol ": :=" means "may be com- posed of." The symbol " | " is the notation of a logical "or." This notation was first developed for the description of the ALGOL language, and has since been used widely in numerous books and papers on language design and compiler writing. The example statement above can be translated into words as follows: "An A token is composed of either a single B token, or a single C token, or an A token followed by ("concate- nated with") a B token." There is no restriction against possible re- cursion in BNF syntax descriptions, a fea- ture which allows very simple language con- structs to form very complicated statements which can be correctly parsed by the inter- preter or compiler. 126 C IPINIT j SFP-.-0 SV-^0 PI-«— P2-^0 ASSIGN-*- FALSE NL-^-0 Figure 11 : The logic of the statement Interpreter. A t this level the interpreter recognizes the two valid forms of a statement: either an expression, or a right arrow followed by an expression. When interpretation begins, variable I points to the rightmost byte in table SP of the immediate statement to be executed. Subroutine E Is invoked to recognize and interpret an expression, setting B to true if a valid expression is found, and setting B false otherwise. If an expression is found, a test is made for a right arrow occurring at the beginning of the statement. If found, subroutine BRANCH is invoked to interpret the program branch. Otherwise, subroutine SUCCESSOR is invoked to interpret an advance to the next statement. <5tatement>; = | ~^ CALL BRANCH CALL SUCCESSOR Table 8: A table of tables built and used by the statement Interpreter. Whenever a sub- routine is invoked, SEP is incremented by 7 and table SE is modified. SEP then indicates the current level of nesting or of recursion. If SEP is 0, the interpreter is presently exe- cuting a syllable in the immediate mode statement Pointers to the value of operands for the various operators are stacked in table SVAL much as in any stack-oriented expres- sion evaluator. Tables SDl and SD2 are used to hold pointers to the right and left argu- ments of a function call. Table Indexed By Element Description SF SFP Holds information for subroutine calls. SI Points to FTAB entry of subroutine invoked. S2 Value of 1 (last interpreted syllable pointer) for calling subroutine. S3 Statement number of calling subroutine at time of subroutine call. SVAL SV Holds stacked pointers to value of operands. SDl PI Holds stacked pointer of left actual para- meter. SD2 P2 Holds stacked pointer of right actual para- meter. 127 ( BRANCH ) AUX-*-SVflL(SV) J D(AUX) = 3 " " i_^_°l.*H.^:li'l^?j YES EMPTY VECTOR NL*-D(AUX + 2+D(AUX+l)) AUXV-^VFUNC(FTAB(SF(SFP).SI).F7 I-^VFUNC(AUXV+NL) SV-*-SV-l SUCCESSOR CALL SUCCESSOR f RETURN J -f ERROR 12 j STATEMENT NUMBER TO BRANCH TO IS NOT AN INTEGER /' \ RETUR ( IP ) STATEI V y SCANN RN TO MENT ER RETURN-SUBR CALL RETURN_SUBR IMPLIED RETURN FROM SUBROUTINE -/ RETURN j Figure 72: The logic for interpretation of a program branc/i, ie: a right arrow followed by an expression. A pointer to the result of that expression is in the top of stack SVAL. The result must be an Integer equal to the statement number of the desired statement to be executed in the current subroutine. If the result is an empty vector, then the branch is simply to the next statement. A non Integer result is an error. An attempt to branch while not In a subroutine is ig- nored and control is returned to the state- ment scanner. Finally, a branch to a state- ment number not in the current subroutine results In a return from the subroutine. Figure 13. The method for advancing to the next statement function. If there Is no next statement while in a subroutine an automatic return from subroutine occurs. A t completion of interpreta- tion for the immediate mode statement control is returned to the state- ment scanner. Otherwise variable I is set to point to the rightmost syllable of the next statement to be interpreted. r successor) YES SM-- AUXV-«-VFUNC(FTAB(SF(SFP).SI).F7) RETURN TO STATEMENT SCANNER Continued on page 145 128 Jmt^oduCi m^ IMMMiliiMIKiCi MI A new value standard in personal computing systems featuring two powerful computers with better software, full documentation and service support from the Heath Company. Heath Company has been interested and involved with personal computing since we first marketed an analog computer system all the way back in 1957. This continuing interest, along with the re- cent technological advances that have brought personal computing to the forefront of the elec- tronics marketplace, has given us the opportunity to think through the recent developments, and develop two "total design" computer systems that give the computer hobbyist, whether begin- ner or advanced, everything needed for REAL power, performance and reliability — at prices that give you MORE value and performance for your computer dollar! Total system design. The Heathkit computer line, both hardware and software, has been designed from the ground up to be a total computing sys- tem that meets all the needs of the computer hobbyist. The two mainframes are based on per- formance-proven well-documented MP modules, the 8080A and LSl-11. Using these CPU's was a conscious design decision, because of their prov- en performance, reliability and efficiency, and the tremendous amount of existing applications programs, documentation and source materials that are available. The Heath-designed CRT ter- minal, paper tape reader/punch, serial and paral- lel interfaces make total system setup easy and fast, and the Heath-designed software provided assures immediate usefulness and versatility. Superior documentation. Heath Company is world-famous for the accuracy and clarity of its instruction manuals. The Heath computer line continues this well-deserved reputation. Assem- bly and operations manuals are written with easy- to-understand step-by-step instructions that leave nothing to chance. Simply follow the easy- to-understand instructions in the manual and you'll be up and running fast. As in all Heathkit products, easy self-service and troubleshooting is a definite benefit that can result in substantial cost-savings over the life of a product. These considerations, along with nationwide service and technical assistance at Heathkit Electronic Centers or the Heathkit factory, mean that you have the most reliable protection for your com- puter investment available anywhere. System versatility. Both Heathkit computers offer full expansion potential to provide outstanding flexibility and adaptability to meet any applica- tion. Mass storage capability is available in both audio cassette and paper tape format on the H8 and in paper tape format on the H11 for added convenience. Additional memory expansion boards can be added to either unit, along with an expanding number of I/O devices. Continuing Development. Heath will continue to design and develop new compatible products for their computer systems. Coming in the future will be — floppy disk storage, line printer, ad- ditional applications programs, and self- instructional courses in programming and assembly languages. All Heathkit computer users are eligible to join HUG (the Heath User's Group) and H11 cus- tomers are eligible to join DECUS,the Digital Equipment Computer User's Society. We're confident you'll find the Heathkit computer line one of the most intelligent, sensibly developed and complete product lines available today. It offers you total versatility and expansion capability to go wherever your imagina- tion and computing prowess take you. And, in the Heathkit tradition, it offers the best price/performance and relia- bility combination you'll find anywhere. i THE HEATHKIT LTU COMPUTER A unique, value-packed computer featuring an "intelligent" front panel with built-in extended ROM monitor, octal entry keypad and digital readout, exclusive Heath bus, a pre-wired and tested 8080A-based CPU, and complete systems software at no extra cost! eharg-a-kit Heathkit 2 HEATHKIT S-BIT DIGITAL COMPUTER A low-cost digital computer that's easier to build and to use! Features an intelligent front panel with keyboard en- try and 9-digit display, a heavy-duty power supply with enough extra capacity for memory and I/O expansion and a 50-line fully buffered bus capable of addressing 65K bytes and a mother board with positions for up to 10 plug- in circuit boards. Includes BASIC, assembler, editor and debug software at no extra cost! The Heathkit H8 computer jg an 8-bit machine based on tlie popular 8080A chip. It is one of the lowest-cost general-purpose computers on the market, and thanks to Heath's exclusive de- sign, one of the most versatile. The interrupt controlled "intelligent" front panel gives you far more power and control than is found on conventional units with bit switches and indicators. The 16-digit keyboard allows octal data entry and control that's far faster and less error prone than binary switches. The 9-digit octal readout provides you with more information than conventional models too. The octal keyboard and display emulate a true hardware front panel with complete access to memory, all registers and func- tions. The 9-digit seven-segment octal display has three readout modes: 6 digits of address and 3 digits data; 6 digits register data and 2 digits register identification; and three digits data with three digits port address. The front panel functions are de- fined by a panel monitor control program (PAM-8) stored in a 1Kx8 ROM on the CPU board. The complete access to 8080 internal circuits and functions makes the H8 an ideal trainer and learning tool. Complete front panel functions include: display and alter of memory locations; display and alter of registers; dynamic moni- toring of registers or memory during program execution; pro- gram execution control including break-point capability and single instruction step; automatic tape load and store through a built-in routine that allows programs to be loaded with a single button; and write or read any I/O port. The front panel of the H8 is so versatile it's like having a mini I/O terminal built right in! Grv ':::::::; of the H8 front panel include status lights for power-on, run, monitor and interrupt enable; a built-in speaker for audible feedback on keyboard entry. The speaker also can be programmed for variable tones, permitting a variety of spe- cial effects to be generated. The CPU board is fully wired and tested. It features the 8080A, clock, systems controller, ROM monitor and full bus buffering. Seven vectored interrupts are available on the bus for quick response to your I/O requests. A built-in clock lets you design and run in real time. The H8 uses an exclusive, Heath-designed bus which incor- porates many practical improvements over existing busses. The bus is fully buffered to reduce noise and crosstalk and is "glitch" free to eliminate timing problems. Three-state line drivers and receivers are used on all bus lines to eliminate loading prob- lems. The 50 lines include address, data, control, clock and interrupt lines, plus all signals needed to support the 8080 MRU' and virtually any I/O or memory accessory, The bus is imple- mented on a heavy-duty printed circuit mother board with wide, heavy copper foils for greater physical strength plus reduced crosstalk and noise. The board has 10 positions for installing Com p rehensive Heathkit assembly and operations manuals give you the superior docu- mentation you NEED for a thor- ough understand- ing of your H8. Systems software is supplied in audio cassette format. connectors that accept the front panel, CPU, memory, I/O and accessory cards. All I/O bus connectors are included with the mother board for fast and easy expansion when you want it. The HB's built-in power supply js convection cooled for ade- quate ventilation without the use of noisy fans. Separate IC regulators provide distributed regulation with a heat sink on each circuit board for excellent heat dissipation. Power supplies of -f- 8, —18 and -1-18 volts are provided to handle up to 32k memory plus three I/O interfaces. Switch-selectable 120 V, 60 Hz or 240 V, 50 Hz AC increases versatility. The H8 Includes all system software in 1200 baud audio cassette form at no extra charge. The Benton Harbor BASIC™ is an en- hanced version of standard Dartmouth BASIC with unique state- ments and commands to extend usefulness. The efficient com- pression techniques of the Benton Harbor BASIC permit you to put more program in less space. All H8 systems soft- ware is supplied in audio cassette form. Also available in paper tape (H8- 15, page 5) at extra cost. HASL-8 The Heathkit Assembly language is a 2-pass absolute assembler that lets you program with easily understood mnemonics and generates efficient machine language code. A minimum of 8K memory is required. The TED-8 software is a line-oriented text editor used for gen- erating source programs for the assembler or general word processing. Requires a minimum of 8K memory. The BUG-8 a powerful terminal console debug program, is an enhanced and extended version of the front panel monitor pro- gram to allow entry and debugging of user machine language programs via an external terminal. Requires 3K memory plus user program. The H8 is housed in a rugged, heavy-duty cabinet, ^6VA" W x 61/2" H x 17" D. Requires at least one H8-1 Memory. Kit H8, Shpg. wt. 30 lbs 375.00 Suggested applications for the H8 computer: As a trainer— learn microprocessor operation, interfacing and programming. The powerful front panel lets you get at and use all parts of the unit. As an entertainment center— use game and other applications programs for entertainment the whole family can enjoy. As a hobby computer— the H8 can be used to process any infor- mation you program into it — it's perfect for hobby experimenta- tion and design. A variety of peripherals and interfaces let you use it with other equipment — run your Ham radio station, con- trol your model railroad systems, etc. As an educational system— the H8 is ideal for schools, commu- nity colleges, libraries, etc. Full H8 software permits teaching BASIC plus machine and assembly language programming. As a home management center— use the H8 to keep telephone numbers, monitor your budget, keep your checkbook balanced, do your income taxes, inventory your personal belongings. There are hundreds of ways the H8 can make your life more convenient. Heathkit 3 7 6 9 + a n cc 4 5 6 - [» rj air "l "2 "3 ^^^ ■ » / Its unique front panel key- board makes the H8 the most powerful and sophisti- cated low-cost general-pur- pose computer available. Just take a look at these features! • Direct-access to registers and memory even while pro- gram is running • One button load and dump for fast, uncompli- cated system startup • Single instruction key lets you "step"througli programs for easy debugging, program evaluation and learning • Input/output keys let you communicate directly with any port The unique Heath-designed 50-pin bus is implemented on a heavy- duty printed circuit board with heavy copper-foil bus lines. The 10-position mother board is com- plete with all connectors. The bus lines are fully buffered to eliminate noise and crosstalk, and "glitch- free" to prevent timing problems. Memorv Disolav Modular circuit boards slide into the H8 mainframe for easy memory and I/O expansion, easy access for servicing. The boards are in a semi-vertical position with uncon- fined heat sinks to enhance con- vection cooling and improve heat dissipation. High Order Address Location Low Order Address Location Data al Location 040 100 Register Display Heavy-duty power supply, rugged steel chassis and securely mount- ed and braced circuit boards make the H8 a truly reliable and long- life machine. Register Identification I/O Port Display 1^1 I i_l LI I U Data Port Number Unique Heathkit Software. The Heathkit software supplied with the H8 computer has a num- ber of features that make it easier to use and more practical than conventional systems. Automatic "command completion" sim- plifies typing; dynamic syntax checking instantly alerts you to errors and a special user configuration lets you really person- alize your system. H8 software pushes the state-of-the-art a gen- eration ahead — it's memory efficient to give you more comput- ing power for your memory dollar, modular design for easy ex- pansion, and thoroughly documented for easy programming and maximum effectiveness. Heathkit 4 H8 "Intelligent" Front Panel The H8 front panel digital readout is the most informative display available on any personal computer to date. All displays are con- tinuously updated even while your program is executing, giving you instant access to registers and memory for direct monitoring of program activity. MEMORY DISPLAY— Shows memory location and contents us- ing 6 digits for address and 3 digits for data. REGISTER DISPLAY _ shows CPU-register contents using 6 dig- its for data and 2 digits for register identification. I/O PORT DISPLAY- Shows I/O port data and location using 3 digits for data and 3 digits for port address. HS ACCESSORIES, SQFT\A/ARE AIMD MANUAL SET The H8 CPU is fully wired and tested to insure quick and trouble-free system startup. It contains the performance proven 8080A microprocessor chip, a 1Kx8 ROM with monitor program for con- trolling the front panel and input-output (load-dump) routines. Other features of the CPU include: 7 vectored interrupts, DMA capability, crystal-controlled clock and fully buffered bus with three state drivers. Use of the 8080A, which has the largest software library of any micro- processor, along with Heath software and documentation, makes the H8 one of the most practical and immediately use- ful computers you can own. H8-1 Memory Board. 8Kx8 memory card supplied with 4K memory, plugs directly into H8 bus. Features maximum storage capacity of 8192 8-bit words. Uses mod- ern 4Kx1 static memory IC chips for easy assembly and service. Access time, less than 450 nS. With on-board regulators, heat sinks and full buffering. Expandable to SK memory with H8-3 chip set below. Kit H8-1, Shpg. wt. 2 lbs 140.00 H8-3 Chip Set. Kit of eight 4K static mem- ory IC's. Expands H8-1 to fuli 8K storage. Witli sockets. Kit H8-3, Shpg. wt. 1 lb 95.00 H8-2 Parallel Interface. Connects H8 to any parallel device such as a paper tape reader/punch (required for H10) or line printer. Has three independent parallel ports, each with 8 bits input and 8 bits output and universal handshaking capa- bility. Compatible with all Heath soft- ware. 390 IJ.S maximum transfer time. With diode-clamped inputs, buffered out- puts and full interrupt capability. Kit H8-2, Shpg. wt. 3 lbs 150.00 H8-5 Serial I/O and Cassette Interface. Connects the H8 to serial devices such as the H9 video terminal (page 10) or the H36 DEC Writer II (page 12). Features jumper selectable data rate from 110 to 9600 baud, plus common input/output interfaces including 20 mA current loop and EIA RS-232C compatible levels. The cassette recorder interface permits the use of standard cassette recorders (Heathkit ECP-3801, page 12). Uses the popular Byte/Manchester or "Kansas City" standard recording format with a 300 or 1200 baud read/ record rate. Con- trol lines for remote start and stop of two cassette units allow separate record and playback for easy program or file edit- ing. Also has full interrupt capability. LED test circuit for easy board setup and overall system servicing. Fully compati- ble with all Heath software. Kit H8-5, Shpg. wt. 3 lbs 110.00 NOTE: Proper operation of the H8-5 is assured only if you use the Heath ECP- 3801 cassette player/ recorder and Heath- recommended recording tape (ECP-3802, page 12). Heath is not responsible for improper operation associated with other cassette units. Extended Benton Harbor BASIC Extended Benton Harbor BASIC is an enhanced and more powerful version of the BASIC supplied with the H8. it pro- vides even faster operation and includes character strings, additional convenience commands and math functions, dynamic storage allocation, access to real time clock, keyboard interrupt processing, ex- panded error messages and recovery ability, LED display control and key pad support. A minimum of 12K memory is required to run this BASIC, 16K is pre- ferred if full use is to be made of its capabilities. H8-13 (1200 baud audio cassette) Shpg. wt. 1 lb 10.00 H8-14 (fan fold paper tape) Shpg. wt. 1 lb 10.00 Paper Tape Systems Software A paper tape version of the systems soft- ware supplied with the H8 computer. It consists of four fan fold paper tapes, one each for Benton Harbor BASIC, HASL-8 assembler, TED-8 editor, and BUG-8 de- bug. For use with the H10 paper tape reader/punch or other paper tape I/O equipment. H8-15, Shpg. wt. 1 lb 20.00 H8 Manual Set Find out about the H8 before you buy! This manual set includes the complete asserhbly and operations manuals for the H8 Digital Computer, H8-1 memory card, H8-2 parallel interface, H8-3 4K memory expansion chip set, H8-5 serial and I/O cassette interface, H9 video ter- minal and H10 paper tape reader/punch. H8 software documentation covering monitor, editor, assembler, debug and BASIC is also included. In handsome 3- ring binder. HM-800 Manual Set. Shpg. wt. 11 lbs 25.00 The purchase price of the HM-800 man- ual set will be refunded when you buy the H8. Simply include HM-800 saleslip with your order. Heath User's Group You can get even more excitement and practical use from your H8 by joining HUG, the Heathkit User's Group. It will put you In contact with other Heathkit computer users, pro- vide a program library and an in- formative newsletter to keep you up to date. A HUG application Is en- closed with each Heathkit computer product. See page 12 for further details. Heathkit 5 THE HEATHKIT KIDD IDIGITAL COMPUTER Two of the finest names in modern electronics, Heath and Digital Equipment Corporation (DEC) combine to bring you the world's first 16-bit computer priced within reach of the general public! siSSSoo Heathkit 6 m if'' ffsr- chorg-a-KIt The H11 and all its accessories will be available November 10t*i, 1977. HEATHKIT7DIGITAL EQUIPMENT CORPORATION^ H11 DIGITAL COMPUTER Heath and DEC join forces to bring you mini-computer performance at a microcomputer price! Tlie H11 features a fully wired and tested DEC KD11F board that contains the 16-bit LSI-11 CPU, 4096 x 16 read/write MOS semi- conductor memory, DMA operation; and includes the power- ful PDP-11 /40 instruction set, PLUS Heath/DEC PDP-11 software. Equivalent commercial versions of the H11 would cost $1,000's of dollars morel The new Heath/DEC H11 personal computer is one of the most powerful and sophisticated units available today! It combines the advanced, performance-proven hardvi^are and software of the LSI-11 with Heath's expertise in kit design and documentation to bring you a personal computer of almost incredible power and flexibility. Equivalent commercial versions of the H11 would cost over twice as much, and you still wouldn't get the superior documentation and support of the H1 1! The LSI-11 bus is a mechanically and electrically superior bus with 38 high-speed lines containing data, address, control and synchronization lines. Sixteen lines are used for time multiplex- ing of data and addresses. All data and control lines are bidirec- tional, asynchronous, open-collector lines capable of providing a maximum parallel data transfer rate of 833K words per second under direct memory access operation. The 16-blt CPU functions are contained on four MOS LSI inte- grated circuit chips. These chips provide all instructions, decod- ing, bus control, and ALU functions of the processor. The CPU has eight general registers which serve as accumulators, index, autoincrement/autodecrement registers or stack pointer. The KD11F memory is a 4096-by-16 MOS semiconductor mem- ory composed of LSI 4K dynamic RAM chips. These chips re- quire little power, provide fast access time, and are refreshed automatically by the processor's microcode. Additional memory cards can be added to expand memory capacity up to 20K in the H11 cabinet (32K words total). The backplane/card guide assembly holds the microcomputer and up to six I/O and memory modules. All LSI-11 bus data, con- trol, and power connections are routed on the printed circuit backplane to each module location. The backplane/card guides are fully compatible with all standard DEC LSI-1 1 accessories. An efficient, well-designed switching power supply provides the required DC voltage for the LSI-1 1 as well as all accessory mod- ules. The supply features overvoltage and overcurrent/short- circuit protection, power fail/automatic restart and a built-in fan for quiet cooling. The dual primary power configuration can be connected for 115 V, 60 Hz or 230 V, 50 Hz input power. Has single-level, vectored, automatic priority interrupt, real-time clock input signal line, ODT/ASCII console routine/bootstrap resident in microcode for automatic entry into debugging mode, replacement of panel lights and switches with any terminal de- vice generating standard ASCII code, and the ability to automat- ically commence operation through resident bootstrap routines. The H11 is supplied with versatile PDP-11 software including editor, relocatable assembler, linker, absolute loader, debug pro- gram, I/O executive program, dump routines, BASIC and FOCAL (See details below). The software requires a minimum of 8K memory, with 12K to 16K total memory recommended for maxi- mum capability. Rugged metal cabinet measures 6V2" H x 19" W X 17" D. For 110/220 VAC, 50/60 Hz. Kit H11, Shpg. wt. 34 lbs 1295.00 NOTE: See DEC software license form on page 15. ED-11. Assists you in the creation and modification of ASCII source tapes, also used to write assembly language programs and for general text editing or word processing functions. PAL-11S. Relocatable assembler converts ASCII source tapes into relocatable binary modules. This lets you create programs in small, modular segments for easier coding and debugging. These binary modules serve as inputs to LINK-11S. LINK-11S. Link editor which links the modules created by the PAL-11S into a load module ready for execution on the H-11. The module is loaded into the H-11 via the Absolute Loader. The H11 is complete with superior Heathkit documentation and ver- satile system software. Absolute Loader. Loads absolute binary tapes into the H11 memory for execution. 0DT-11X. Lets you debug the programs which you have created. Permits modifying and controlling program execution "on the fly" for quick, efficient debugging. .0;r. I/O executive program permits I/O programming without developing device-driving programs. Links to your programs us- ing the LINK-11S. For use with high speed paper tape reader/ punch and line printer. DUMP-AB and DUMP-R. Lets you dump absolute binary con- tents of memory into the paper tape punch. BASIC. DEC'S powerful version of standard Dartmouth BASIC interpreter uses english-type statements and mathematical sym- bols to perform operations. Immediately translates, stores and executes the program. Includes string capability. FOCAL \ DEC'S own interpretive computer language which com- bines simplicity with computing power. Ideal for most scientific, en- gineering and math applications. FOCAL'" programs can be writ- ten and executed easily. Both 4K and 8K versions are included. POWERFUL HEATH /DEC PDP-11 SOFTWARE AT NO EXTRA COST! The H11 includes a sophisticated software system that lets you get your computer up and running with practical programming capabilities. This paper tape based software would cost over $1200 if purchased separately. A minimum of 8K memory is re- quired to run the software. The programs include: NOTE: H11 owners are eligible for membership in the Digital Equipment Computer User's Society (DECUS). This organization provides useful symposia, newsletters, program library and other useful information to help you get the most from your LSI-11 computer. Heathkit 7 FULLY \A/IF1ED AND TESTED KD11F BOARD The "heart" of the H11 computer is the standard DEC LSI-11 microcomputer board. The 16-bit CPU functions are contained in four silicon gate N-channel MOS LSI integrated circuit chips for high reliability and superior performance. The 4096-by-16 read/write MOS semiconductor memory is composed of LSI 4K dynamic RAM chips that provide fast access time and re- quire little operating power. The CPU executes the powerful PDP-1 1/40 instruction set with over 400 instructions. There are no separate memory I/O or accumulator instructions, so you can manipulate data in peripheral device registers as easily and flexibly as in memory registers. The LSI-11 board is sup- plied fully wired and tested to facilitate kit assembly and pro- vide greater reliability and less chance of error. Rugged steel chassis and extra-thick backplane with heavy, solid connectors for added strength and years of superior performance. Compact, efficient switching power sup- ply uses less power to operate and gen- erates less heat than conventional sup- plies. Overvoltage and overcurrent/short circuit protection, along with automatic power-up and power-down sequencing, provide high reliability and long life op- eration. Built-in quiet-running fan provides effi- cient cooling and prevents heat buildup. Card cage with backplane accommo- dates up to six accessory cards in ad- dition to LSI-11. The card cage swings up for easy access and service even while the H11 is operating. Accessory boards slide directly into card guides with all connectors supplied. Front panel controls include DC power switch and run/halt switch. Status lights indicate processor activity. Styled and sized to match Heathkit peri- pherals for total system continuity. The H11 and all its accessories will be available November 10'^, 1977. Heathl0 h- ^ , FTAB(SF(SFP).SI).F2=Z h-_ ? YES ^NO P2-^P2-1 —I P YES \N0 ? pi-^pi -1 1 ■ ( RETURN j Figure 14: The procedure used to return from a sub- routine. If the subroutine had an explicit result, an indirect pointer to the result must be stacked in table SVAL. Information stacked in table SF by the call to the subroutine must be unstacked. Finally, before continuing the interpretation at the pro- per syllable, any actual parameter pointers stacked in tables SDI and SD2 must be unstacked. Statement branching and subroutine linkage is a relatively simple process compared with expression evaluation. The next few figures return us to our discussion of the inter- preter itself by detailing the expression evaluation process. THE 8700 COMPUTER/ CONTROLLER An exceptional price on an applications oriented 6503 based micro-processor system featuring: ► IK bylos RAM locations (512 byLcs supplied ► IK bytes ROM(25G byte monitor included) ► 2 - S bit input ports ► 2 - S bit output ports (Hatched, 1 buffered) ► 24 key touch operated keypad (used by monitor to allow entry S.- execution of user programs also user definable. ) ► 2 - latched seven segment displays (used by monitor to display mcmorj' location & contents easily user programmed) ► Optional cassette interface (S22. 50) fits entirely on the processor board. THE IDEAL. LOW COST SOLUTION TO IMPLEMENTING ALL THOSE WILD COMPUTER BASED CONTROL SYSTEMS YOU VE BEEN DREAMING OF! PAIA software currently available or mider tlevelopmenl includes: Music s^aithesizer intei'l'ace: Home applications package including: multi-zone fire/burglar alarm, real time clock, energy saving hoat/air conditioning control, computer generated "door-bell": Model roalroad conti'oUer and more SB**" ELECTRONICS • DEPT. 7-B • 8700 COMPUTER CONTROLLER KIT 5149.95 (requires 5v. i" 1. 2A. : 12v. ("' 150 ma, ) Shipped direct from PAIA (add $3. 00 postage) 1020 W.Wilshire Blvd. ii^,:t*iiuu Oklahoma City, OK 73116 145 Also available at FULL-LINE Computer stores. Circle 244 on inquiry card. RECURSIVE ENTRY ALLOWED ( = ) ' P_SUBR CALL P_SU8R(B) Q^ FC CALL FC(B) TRUE CALL AS(B) MOP CALL MOP(B) L-^FALSE -/ RETURN J I^ -0 TRUE DOP P_SUBR DYADIC CALL DYADIC FALSE FALSE MONADIC_S.USR CALL MONADIC_SUBR ■o ( RETURN J -/ ERROR 13 ) DYADIC OPERATOR NOT PRECEDED BY PRIMARY : : = | | | | Call E(L) L set true if valid expression found and interpreted. L set false otherwise. Figure 15: Subroutine E. Tliis routine is called in figure II to recognize and interpret an expression. Five primary subroutines are invoked by E to interpret a valid expression. First E-SUBR is called to test for a valid primary which must be the rightmost token in any valid expression. After a primary is found, subroutine FC is called to test for and interpret a valid function call. If found, subroutine E starts again; otherwise, AS is called to look for a valid assignment. Subroutines MOP and DOP may also be called to look for monadic and dyadic operators, respectively (see figure 17). The total result is that a valid expression will be inter- preted and argument L will be set true. In the case of an invalid or a nonexistent expression, argument L will be set false. 146 RECURSIVE ENTRY ALLOWED f P-SUBR J L-^TRUE vec CALL VEC(B) TRUE /' N — = 1 RETURN 1 V-SUBR CALL V_SUBR (B) T'^^E (^ RETURN ^ RIGHTPAR CALL RIGHTPAR (B) : : =| <-fn> I I () CALL E.SUBR(L) L set true if a valid primary found and interpreted. L set false otherwise. CALL E (B) CALL FN(B) -/ ERROR 14 ) VALID EXPRESSION NOT FOUND WITHIN PAREN- THESIS LEFT PAR CALL LEFTPAR (B) N ( RETURN ) ERROR 15 J V y /^ CALL-SUBR < ' J \. TRUE CALL CALL-SUBR ' y FALSE L-«- FALSE |. RIGHT PARENTHESIS NOT BALANCED BY A LEFT PARENTHESIS ( RETURN j Figure 16: Subroutine ILSUBR. A primary can be formed from a vector, a function caii, a variable or an expression enclosed in paren- thesis. The subroutines VEC, FN, \LSUBR and E are invoked to test for these tokens. Note the recursive call to subroutine E: subroutines which must handle recursive calls are so labelled on their flowcharts. ACT IV Slaiulaixl features: l\ill screen clisplas' ol' ^4 lines In 80 chaiaclers. Prolessional. hit^hly reliable i^e>i)oard with 2 key rollo\'cr. Auto repeating cursor ke\s. space and 'period. i'ull ASCII display of uppei" and true lower case characters .plus a unique set for the display of control characters. Console selectable 'Page' mode with true editinj>: Insertion and deletion of characters or lines with automatic ilisplay rearrangement. Data rates to U)2()() bautl. .'\bsokitc cursor positioning, report of cuisor position, fi.xed labs, home up, bell, erase to end of line and erase to enil of file are all standard. A smart' page transmit ignores trailing spaces and blank lines. The ACT-IV comes in two configurations; In a conipact cabinet without monitor for $550 (ACT-IVA) or complete with 12" data monitor and numeric ke\pad for $800 (ACT-IVB). All units are fully assembled and tested. More detailcti information concerning the ACT-IV can be obtained from any discriminating computer store Micro-Term Inc. P*^ Box 9387 St. Louis, MO 63117 (314) 645-3656 II^^TZ^^I^^IZ ( RARROW ) f RETURN J ( LARROW j B-«-TRUE B-- FALSE -/ RETURN J (33 I Return j ( RIGHTPAR ) B-*-TRUE B-^FALSE -/ RETURN j f LEFTPAR j YES I-^ I-l B-^ TRUE B-«— FALSE -/ RETURN j f MOP j CODE-^SP(I).P I -^ I - I B-- TRUE B-«— FALSE -T RETURN j ( LBRACKET j / RETURN j f RBRACKET j CED 1--1 -I B-«-TRUE B-«— FALSE -f RETURN J DYADIC MIXED TRUE; OPERATOR FALSE: DYADIC SCALAR OPERATOR INNER OR TRUE; OUTER PRODUCT FOUND ( RETURN j INNER PRODUCT TRUE; EXPECTED OUTER FALSE; PRODUCT SP(I).7=7 a I TRUE (ERROR 26 ) CODE-^IO*CODE I-^I-I B-^TRUE INVALID OUTER PRODUCT EXPRESSION a D INVALID INNER PRODUCT EXPRESSION C0DE-^C0DE + IO0*(SP(I).P) I-^I-I B-^TRUE C RETURN j r RETURN j Figure 17: A collection of miscellaneous token recognition routines called by various routines in this APL interpreter All subroutines in this figure have a single argument B which is set true if the particular token is found. B is set false otherwise. 148 GED B ♦ FALSE S V-*SV+I SVAL(SV)*SP(1). P 1*1-1 B ♦ TRUE CALLVEC(B) ^'^"''^ ^^' l"t^>'P''etction B is set true if a °f '^ ^^'=^0'' O'' constant. If constant or vector is the current Syllable indi- recognized; the recog- cates a constant Or a Vec- ^ ^ nized constant/vector j-q^^ ^/,g pointer to the (return ^ being stacked. B is associatecJ Value Is stored V y set false otherwise. In table SVAL. HP\l-—0 STAK CALL STAK L-«— TRUE ' { RETURN j f V.SU8R j L-^FALSE NPV-»-0 CALL 10 (B ) CALL INPUT RBPACKET CALL RBRACKET (B) ^^MD CALL 10 (B) CALL OUTPUT L-«— TRUE ( RETURN J CALL IND (B) : : = I [] I CALL V_SUBR(L) L is set true if a variable was found and interpreted. L is set false otherwise. * ( ERROR 36 J INVALID INDEX EXPRESSION CALL LBRACKET(B) B X . FAL ''^^ » * f ERROR 39 j INVALID INDEX EXPRESSION TRUE FALSE '*- SV_ SUBR CALL SV-SUBR (8 Figure 19: Interpretation of a variable. This process is more complicated than the interpretation of a constant. A variable can be formed from a variable, a simple variable followed by an index expression, or a quad operator. Further, variables occurring to the left of an assignment oper- ator are handled differently from those on the right. Subroutines STAK and LINK (figures 25 and 26) handle the stacking of operand pointers and the linking of results to a symbol table entry. 149 RECURSIVE ENTRY FiQure 20: Interpretation ALLOWED / , ^. ,, of a function call. CD L ■• FALSE CALL FN(B) YES f RETURN J : : =<£xpression> | <6xpression^ CALL FC(L) L is set true if a valid function call is found and interpreted. L is set false otherwise. CD) B-»FALSE CALL FN{B) B set true if a valid call of func- tion is found and interpreted. B is set false otherwise. /error 17 j TRUE LEFT ARGUMENT OF DYADIC FUNCTION CALL IS NOT A PRI- MARY CALL_SUBR CALL CALI SUBR -/ RETURN J SFP*SFP+I SF(SFP).SI ■• Z SF(SFP).SZ-» I SF(SFP).S3* NL B*TRUE 1*1-1 -/ RETURN j Figure 21 : Recognition of a call of a function. This subroutine is invoked to recognize a function name and to build an entry (if necessary) in table SF. If a function is found, the token to the left of the function name must be either a statement end or primary. ^ I6K OR 32K ROM RESISTOR I I NETWORK '—J CUSTOM ROM CONTROLLER nnnnnnnnnn Drawing is 2/3 Scale t Invented by Forrest Mozer Introducing— New, Low-cost, Fixed Vocabulary Speech Synthesizers for Computer Hobbyists or OEM use FEATURES • Two 64-worcl vocabularies available; — FliII spoken numerics plus a variety of measurement words —ASCI I characters: numerics, alphabet, special symbols • Clear, highly intelligible male voice • All MOS-LSI circuitry • 6-bit parallel strobed input ^^^^^^kOO" • No external clocks required ^ I m ^^ • Inputs are TTI compatible | m %^ • Analog Speech output signal .p.^^ ^^^^^ ^^.^^ ^^^^^ where applicable TELESEIMSORY SYSTEMS, IIMC. 3408 Hillview Avenue, Palo Alto, California 94304 Telephone (415) 493-2626, Attention: Paul Obester Circle 246 on inquiry card. 150 TcALL-SUBRJ YES.NILADIC Figure 22: Call of function semantics. This routine is invoked to perform the linkages and table updates required in interpreting a function call. The last step is to set I to point to the rightmost syllable of the first statement in the called function. NO, MONADIC OR DYADIC LOOKUP (FTAB(Z).F6, VTAB.VI.T)* *NOTE: ACCEPT MATCH ONLY IF VTAB(T). V2 OF MATCH = Z YES /error 32 J PROGRAM LOGIC ERROR, VARIABLE NAME OF FUNCTION ARGUMENT NOT FOUND IN SYMBOL TABLE P2-»-P2 + l VTAB(T). V3-«— P2 YES, DYADIC LOOKUP (FTAB(Z).F5, VTAB.VI.T)* NO, MONADIC SD2{P2)-«— SVAL(SV) SV-«— SV-I I*— VFUNC(FTAB(Z).F7)+I NL-" — I YES -Terror 33 ) SAME AS error 32 PI-« — PI + I VTAB(T).V3-« — PI SDKPI)-" SVAL(SV) SD2(P2)-« SVAL(SV-I) SV-« — SV-2 ( RETURN ) MULTIPLE DATA RATE INTERFACING FOR YOUR CASSETTE AND RS-232 TERMINAL the CI-812 The Only S-100 Interface You May Ever Need On one card, you get dependable "KC- standard "/biphase encoded cassette inter- facing at 30, 60, 1 20, or 240 bytes per second, and full-duplex RS-232 data ex- change at 300- to 9600-baud. Kit, includ- ing instruction manual, only $89.95*. PERQOM PERCOM DATA COMPANY, INC. 4021 WINDSOR • GARLAND, TEXAS 75042 (214) 276-1968 *Assembled and tested, $119.95. Add 5% for shipping. Texas resi- dents add 5% sales tax. BAC/MC available. PerCom 'periptierais for personal computing' 151 r- 1 L ■» FALSE LARROW CALL LARROW (B) CALLAS{L) L set true if valid assignment found and interpreted. L set false otherwise. ASSIGN* TRUE CALL VSUBR(B) ASSIGN* FALSE TRUE -f ERROR 8 j RESULT OF AN ASSIGNMENT NOT A VALID VARIABLE •/ RETURN J Figure 23: Interpretation of an assignment. This routine searc/ies for a valid assignment which must be of the form "variable <- ex- pression. " Again, subroutines LARROW and V—SUBR are called to interpret the appro- priate tokens. V—SUBR is also called by R—SUBR (see figure 19), but it functions differently for the two calls, since one is looking for a variable to the right of an assignment symbol, and the other is looking for a variable to the left of an assignment symbol. Variable ASSIGN is used to signify which mode to use. f IND(L) ) L* FALSE (. E CALL E(B) ; ;=|; CALL IND (L) L set true if valid set of indices found. L set false otherwise. { RETURN j ^' \ FALSE -n„. y TRUE NPV * NPV + I ( RETURN j FALSE -/error 38 ) INVALID INDEX EXPRESSION Figure 24: Recognition of a list of indices. This routine, which is called when an index expression (an expression enclosed within square brackets) is encountered, calls sub- routine E recursively to evaluate the expression for each index and to stack a pointer to the result in stack SVAL. Upon com- pletion, variable NPV indi- cates the number of index expressions encountered. Similarly, the top NPV entries in stack SVAL point to the values of these indices. DAJEN Electronics 7214 Springleaf Ct. Citrus Heights, Ca. 95610 (916) 723-1050 HIGH-SPEED CASSETTE INTERFACES (The Stringy Disk) CRI-B fiiiiiiiiiiiiminwiniiiiiiiiiiiiifiir 600 to 12,000 baud status controls, IK monitor with cassette routines provided on tape. Biphase, Kansas-City, Altaic- Kit $120, Assembled $165 Manual $3.50 All I Need!!! Universal I/O Interface High-speed cassette, two relays for con- trol of two recorders; space for three 2708's, one provided, with monitor soft- ware, 2708 programmer; reset-jump; ram for stack; RS-232, 20 ma, 60 ma, serial; 3 parallel ports; speeds from 20 to 19,200 baud. Kit $285. Assembled, tested $345. Mastercharge, BankAmericard, Visa UCRI i I • J s 1 1 if Relay control of two re- corders, latched input port for keyboard, tape reader, etc. File-search capabilities. IMSAI, Poly, Tarbell compatible Kit $135, Assembled $175 Manual $4.50 Circle 247 on inquiry card. 152 t uy e w r^ -0 ^ / \ CD 7^ m -) c t en < > \ i- \ < t 3 y -z < ■ r \ J n en n \ / > < C/T < ■ ■D \ H / \ t / \ < / Cl \ \ ^ / / ,"" CD -' m < OJ -n > |- m Tl -D t O ro < < H ' \ '"^ c > > CD m 7^ m \ ?; — ■ < < OJ c>< ^^ o "D + + o ■o r\ + + -H C t •z. K^ to < [- cn < Z -D < + " Figure 25: Linkage for assignment. Tiiis sub- routine (LINK) is called by subroutine V SUBR to link results to a sym- bol table entry (see figure 19). 153 Figure 26: Subroutine STAK. Tliis subroutine is called by subroutine V,SUBR to stack operand pointers (see figure 19). ^r\£ Ifi + ^ + a. iJ O Q /^l^ \ M a OlM CM - CO + \ ^ t/lM rsl + , 1= 1 ife + i Vio V rO Q- L-V-l / ' * ^ n. o X It X + X QX r^ r~\ rs~i <°- - 1 Svil + '---'/ + > ^ 7 loi -1 Z) / N. 3*3 Si \ <-^ ^^ >- li 154 ^SV.SUBR(L)) GLOBAL OR DUMMY RECEIVER GORD-^TRUE K-*-SP[l).P I-^I-I L-^TRUE ( RETURN j FTAB(VTAB(SP(I). P),V2).F5 ■VTABISP(I)-P),VI -^ (^ RIGHT TRUE ARGUMENT RD-^TRUE ' K--SP(I).P .H^-Treturn ^ (FORMAL ARGUMENT) FALSE LEFT ARGUMENT ( RETURN j ( RETUR D CALLSV_SUBR(L) L set true if a simple variable scanned. L set false otherwise. Figure 27: Linkage for a variable. This routine is called to recognize a simple variable. After it has been executed, variable GORD is set true if either a global or a dummy receiver is found. If the receiver is a formal argument, then RD is set true if the variable Is the right argument of the function call, and set false if the variable is the left argument. For a simple variable to the left of an assignment, K is set to point to the associated VTAB entry; and for variables to the right of an assignment, PT is set to point to the D entry or value of the variable. ( INPUT j N * AUX -» DA+3 -J' D(AUX) -» A AUX-» AUX + I N ♦ N +1 Figure 28: A subroutine used to input a constant vector A value is read from the input device, an appropriate entry is made in table D, and a pointer to the D entry is stacked in table S VA L. D(DA) ■» N + 3 D(DA+I ) ■» I DlDA+2) ♦ N SV ■» SV + I SVAL(SV) -» DA DA ■» AUX C RETURN j Note; No f I owe In art is shown for a quad denoting output, since the process is more or less implemen- tation dependent (al- though simple). The ele- ment in the top of stack SVAL points to the table D entry to be listed. That concludes part 2 of this 3 part series of articles describing an APL interpreter. Al- though the flowcharts may look awesome, the actual amount of code to be written is not overly great. My PL/I version of this in- terpreter is less than 1600 statements long. Next month's concluding article describes the mathematical processing section of the statement interpreter, and describes the four arithmetic processing subroutines MOP, MONADIC, DOP and DYADIC. Since they define the number and use of the primitive operators, most of the tailoring of the inter- preter will be done in these subroutines." 155 Continued from page 43 through a resistor that sets the current flow- ing into pin 14 to approximately 2 mA. An additional resistor, Ri (also in this current leg), allows the current to be varied by a snnall percentage and provides the ability to adjust the full scale range of the digital to analog converter. The output of the converter is a current which is equivalent to the product of this reference current and the binary data on the control lines. The current is converted to a voltage through IC9 and can be zero offset through the use of the offset adjustment pot, R2. The digital code stored in the scratch pad and presented to the digital to analog con- verter is in ol'fset binary. A binary value of 00 000 000 produces an output of -5 V from the converter while 11 111 111 is equivalent to -i-5 V. In offset binary, if the most significant bit is a zero, the output is negative and if the most significant bit is a one, the output is positive. Since the con- verter has a range of 1 V, and is an 8 bit de- vice, the resolution of the converter is 1/256 of 10 V, or approximately 40 mV. This means that the smallest output increments will be in 40 mV steps. To change this to finer increments requires that the range be shorter, such as -1-2.56 V to -2.56 V. By adjusting the span and zero pots, any reason- able range may be chosen, but the resolution will always be equal to the least significant bit or 1/256 of the range, and accuracy is estimated to be ±1 /2 least significant bit. INTERFACE ASSEMBLY AND CALIBRATION 1. Be sure to build the circuit with good quality sockets for all integrated circuits. With all components except integrated circuits wired in place, and presuming that there are no shorts, apply power to the interface. It should be noted that while the interface is shown with Altair (S-100) bus notation, there is no require- ment that it be an S-100 configuration. The digital to analog conversion will work with any computer capable of providing an 8 bit data bus, 8 bit 10 address bus, and an output enable strobe. Computer cycle time and architecture are irrelevant. For use with a Digital Group 8080 system, the address and data buses are connected to the equivalent DGS pin numbers, S-100 pin 77 on the interface board is grounded, and the DGS pin 17 10 write signal is used on pin 45 of the interface board in place ofSout. 2. Using a meter, check to see that the right supply voltages are on the appropriate inte- grated circuit pins and that V^gf on the digital to analog converter is approximately 6.2 V. If substituting parts, take care not to exceed 15 V between Vcc and Vee on the CMOS 4051. 3. Disconnect the power and attach the port decoding jumpers for the desired port ad- dresses. Each of the six address lines, A7 thru A2, can be, by the appropriate placement of the jumpers, decoded as an inverted or non- inverted signal. In building the circuit from scratch, an appropriate technique is to use a DIP socket with each pin, used as a jumper terminal. Selective wiring between the pins can then be done with wire wrap or Vector Slit-I\l- Wrap. The inverted choice is designated as a zero code, and the noninverted as a one. If all jumpers were set to the one position, channel 1's port address would be decoded as binary 11 111 IOO2, or octal 374. Channel 4 would be 377 octal. If all jumpers were set to zeros, channel 1 would start at port address and channel 4 would be port address 3 octal. Pick the binaiv code for whatever port assignment desired and wire the jumpers. 4. Insert integrated circuits IC1, 2, 3, 4, 5, 7 and 9. Apply the power, and with a short pro- gram which just outputs a value from the ac- cumulator to an output port, output a binary 10 000 000 to the port address corresponding to channel 4 on the interface board. Using a meter to monitor the output of the LIV1301A, adjust the zero pot R2 until the output is V. With the same programming technique, load a binary 11 111 111 (octal 377) to channel 4 port address and adjust the span pot RI for a meter reading of -H5.12 V. A binary setting of 00 000 000 should output -5.12 V. If you are unsuccessful at this point, with power off, re- move the MC1408L-8 and the LIVI301A, and verify that the binary output of the scratch pad is correct. With the Integrated circuits presently installed, the scratch pad is latched at an address of channel 4. Nine times of of ten, problems like this can be attributed to choosing an incorrect port code. Turn off the power. 5. Insert the clock generator IC6, reapply power, and using a scope or frequency counter, verify an approximate 200 kHz clock rate. Turn off the power. 6. Next, insert IC8, the CMOS multiplexer IC10, and the sample and hold op amps IC11 and 12. Be very careful in handling the CMOS integrated circuit. It is very easily damaged by static charges. Turn on the power and then using the same simple program, output a binary value to one of the channel addresses and note with a meter that it is in fact the correct voltage. Using the program, vary the output of each channel separately across the range and note that no other channel outputs should change. Sympathetic tracking usually indicates a bad multiplexer integrated circuit. A few cautions: Don't use op amps with a frequency response less than the LM301A and use only the L8 version of the MC1408-L8 (not MC1408-L7 or MC1408-L6) if you want a guaranteed eight bits of precision. 156 80 REM THIS PROGRAM CALCULATES THE VALUES FOR A SINE WAVE AND 82 REM PUTS THEM IN PAGE 100 (OCTAL) OF MEMORY 90 PRINT "SINE WAVE POINT CALCULATOR" 100 LET A=3. 14/180*360/256 110 FOR B=0 TO 255 120 LETW=INT(127.5+(127.5*SIN(A*B)) 130 FILL 16384+B,W 160 NEXT B Now How Do I Use It? Once you have conquered the hardware and constructed an interface (see notes in the box) you should be ready to exercise it under program control. There are some interesting applications using the digital to analog interface alone, none the least of which is Ned's problem. You will remember that my solution to the impulse response problem in Ned's test setup was to vary the pressure sinusoidally using a computer generated voltage to con- trol a pressure regulator. Adding a computer sounds a bit unnecessary, but remember that an analog to digital interface will be attached for data acquisition. With this particular digital to analog inter- face, programming an analog control voltage utilizing an extended BASIC such as the Digital Group's MaxiBASIC, is quite easy. To operate a real time sine wave that varies the pressure between and 10,000 PSIG requires a control regulator with a control voltage range of -5 V to +5 V and the following very simple BASIC program: 90 REM THIS PROGRAM CALCULATES AND OUTPUTS A SINE WAVE. 100 LET A = 3.14/180*360/256 110FORB = 0to255 120 LET W = INT(127.5+127.5*SIN(A*B)) 130OUT252,W 140 NEXT B 150 END This program calculates 256 values of a sine wave with an amplitude of —5 to +5 V. When run in real time, the period of the waveform is about two seconds. The period is basically set by the time it takes to com- pute the expression on line 120 some 256 times. An alternative method is to calculate the points once, load the values in memory and call a subroutine which scans the table when directed to do so by the program. The first time that the points are com- puted, it will take two seconds as before. Then they are available in a look up table. A program which constructs such a memory resident table is illustrated in listing 1. Photo 2 shows an oscilloscope trace of the synthesized sine wave created by the digital to analog converter in figure 9 using the table created by listing 1 . Listing J: An extended BASIC program to compute and load a table in memory with 256 sample points of a sinusoidal waveform. Digital Group MaxiBASIC interpreter. Split Octal Address Octal Code Operation 012/000 041 000 100 LXIH&L 012/003 176 MOV A 012/004 323 375 OUT 012/006 054 INRL 012/007 302 003 012 JMP COND 012/012 311 RET Photo 2: An oscilloscope display of a sinusoidal waveform synthesized by using the BASIC program in listing 7 in conjunction with the digital to analog converter shown in figure 9. Commentary Set the program counter to page 100; Move addressed memory to accumulator ; Output accumulator to port 375; Increment L register; Jump to 012/003 if L # 0; Return to BASIC program; Listing 2: A machine language program which is used to drive the digital to analog converter in figure 9. This program is called by the extended BASIC program in listing 3. 300 PRINT "THIS PROGRAM WHICH DRIVES AN 8 BIT D/A PRODUCES " 310 PRINT "ANY WAVEFORM FROM A BINARY TABLE" 400 REM THIS PROGRAM CALLS A SUBROUTINE AT 012/000 (OCTAL) 410 REM WHICH OUTPUTS THE 256 WAVEFORM VALUES TO 420 REM D/A ON OUTPUT PORT 375(OCTAL) 430 REMOCTAL AT 012/000 440 REM 041 000 100 176 323 375 054 302 003 012 311 450 REM MAX SPEED FOR ADSR IS 4 MSEC. 470 REM BINARY TABLE IS ON PAGE 100 (OCTAL) 502 PRINT "GENERATE THE WAVEFORM HOW MANY TIMES ?":INPUT E 505 FORX=l TOE 510 LET A=CALL(2560,0) 515 NEXTX 1000 END Listing 3: An extended BASIC program which calculates 256 points of a given waveform which is to be synthesized and then calls the machine lan- guage routine in listing 2 to actually drive the digital to analog converter in figure 9. The call to the subroutine in listing 2 occurs at line 510 of this program. Digital Group MaxiBASIC interpreter. 157 Photo 3: An oscilloscope display of a musical envelope waveform called an ADSR waveform. "A DSR" stands for Attack, Decay, Sustain and Release, a popular way of characterizing an amplitude envelope which is typical for many musical Instrument waveforms. This waveform was synthesized by means of the program in listing 4 which was used to drive the digital to analog converter in figure 9. Also see figure 10. 80 PRINT "ADSR MEMORY LOADER" 90 REM THIS PROGRAM COMPUTES DECIMAL VALUES FOR A PIECE-WISE 91 REM LINEAR ADSR WAVEFORM AND ILLUSTRATES THE METHOD 92 REM THE VALUES ARE THEN LOADED INTO PAGE lOO(OCTAL) OF MEMORY 93 REM THEY ARE THEN AVAILABLE FOR MACHINE SUBROUTINES 100 FOR X=0 TO 60 105 110 120 125 130 135 137 REM THIS IS THE "A" SECTION LET Y=INT((255/60)*X) FILL 16384+X,Y NEXTX LETW=61 FOR Z=0 TO 39 REM THIS IS THE "D" SECTION 140 LET Y=INT((-75/40)*Z+255) 150 FILL 16384+W,Y 152 LETW=W+1 155 NEXTZ 160 FOR X=101 TO 220 170 LET Y=180 172 REM THIS IS THE "S" SECTION 175 FILL 16384-l-X,Y 180 NEXTX 185 LETN=221 190 FOR X=0 TO 34 192 REM THIS IS THE "R" SECTION 200 LET Y=INT((-180/35)*X-H80) 210 FILL 16384+N,Y 212 LETN=N-I-1 220 NEXTX 1000 END LINE EQUATIONS /> FROM TO 60 Y- 255/60X D FROM 61 TO 100 Y- 75/40X + 255 5 FROM 101 TO 220 Y-180 /? FROM 221 TO 255 Y" I80/35X + 180 Listing 4: An extended BASIC program which generates a table of sample points of the A DSR wave- form whose graph appears in figure 10. Digital Group Max I BASIC interpreter. i ( 255 1 \ s 1 \ t 180 ^ Yt / 1 1 \ o TO 60 Tl 100 T2 220 255 T3 T4 A simple program which scans the table and drives the digital to analog converter is assembled into the memory of my particu- lar system at split octal address 012/000 (hexadecimal OAOO) as shown in listing 2. This program can be called at any time with the BASIC command CALL (2560,0), and when driven at faster than 100 ms periods can be easily displayed on an oscilloscope. [Note that 2560 is decimal for split octal address value 012/000 or hexadecimal OAOO. J The program in listing 3 incorpo- rates the routine in listing 2 as a called sub- routine and can be used to display any waveform defined by the table located at address 100/000 in split octal notation (hexadecimal 4000). On to Bigger and Better Applications An obvious application of this program- ming technique is to mathematically com- pute and generate complex waveforms which would otherwise require extensive dedicated hardware to duplicate. Music application is an area which is being heavily infiltrated with computer technology. A composer in- terested in electronic music effects can de- sign discrete waveforms, display and review them before committing them to a per- formance design. An alternative approach is to use BASIC to generate all the tables defining envelope or waveform aspects of desired instruments and then let BASIC sit idle while a machine language program selects and calls the tables to produce a musical score. It's often easier to illustrate one example rather than discuss volumes of theory. One of the least complicated musical envelope waveforms is the ADSR envelope. ADSR stands for Attack, Decay, Sustain and Release. Various combinations of these four variables produce unique sounds similar to such instruments as the piano or trumpet. In an electronic music application the composer would combine the necessary fundamentals and harmonics characteristic of a particular instrument and control the output amplitude with an ADSR waveform feeding a voltage controlled amplifier, or VCA. Both the envelope and harmonic con- tent are separate elements of musical compo- Figure 10: A simple AS OR (A ttack, Sustain, Decay and Release) envelope waveform along with the line equations necessary for digital to analog wave- form synthesis (see photo 3 and listing 4). 158 16384 BYTES for $485.00 assembled (with sockets) : tested - bumed-in - guaranteed A new high in SI 00 bus memory cost effectiveness. Fully assembled (with sockets), tested, burned-in and guaranteed. 4Kxl dynamic memoi-y chips (the same ones used by the ton in IBM compat- ible memory systems) combined with self contained control logic, yield a memory system with these features: • Low power consumption, total board 5 watts. • Transparent refresh, which means the memory looks static to the outside world. • No waiting. In fact, XRDY is not even con- nected to the memory. • Full DMA capability. • Reliable, low level clock and control signals. • Three full days testing at 70° C (185° F). SPECIFICATIONS Capacity: Addressing: Bus structure: 16384 bytes 16K boundaries .l'"!! "' ' '(■• > " SI 00 - Plug compatible with IMSAI 8080, POLY 88, ALTAIR 8800, BYTE-8, SOL Address and Data Buffering: <200 uA, special high impedance btiffers - less than one low power Schottky load Access time: 350 nSec Memory chips: MM 5271 (National Semiconductor and others) 4K dynamic Dynaby te Inc. 4020 Fabian Way, Palo Alto Ca. 94303 for more information call or write to: [(^fj^S, MARKETING DEALER INQUIRES IN VITED 2233 El Camino Real B of A & Mastercharge accepted Palo Alto, California 94306 (415) 321-6639 Dynabyte ® brings to the SI 00 Bus a state of the art, industrial quality memory system. 16K on a single board for $485.00, Guaranteed for 1 year. Circle 248 on inquiry card. 90 PRINT "WAVEFORM BEING CALCULATED" 92 REM THIS PROGRAM CALCULATES THE COORDINATES OF A COMPLEX WAVEFORM 93 REM THE POINTS ARE IN PAGE 100 (OCTAL) 100 LET 8=3.14/180*360/256 110 FOR A=0TO 255 120 LET E=-((255/3.14)*SIN(A*B)) 125 LET F=-{(255/(2*3.14))*SIN(2*A*B)) 130 LET G=-((255/(3*3.14))*SIN(3*A*B)) 150 LET Y=INT(127.5+E+F+G) 160 PRINT A,Y 170 FILL 16384+A,Y 180 NEXT A 500 END Listing 5: An extended BASiC program wliicti cal- cuiates s am pie points of ttie Fourier series ilius- trated in figure 7 / and stores tliem in a tabie. Digital Group IVIaxiBASIC interpreter. Pfioto 4: An osciiioscope display of the waveform resulting from the syn- thesis of a typical complex waveform using the program in listing 5 and the digital to analog converter in figure 9. The waveform is the result of summing three terms of a Fourier series (see figure II). RESULTANT COMPLEX WAVEFORM 27r COMPONENT PARTS OF FOURIER SERIES EQUATION; f( + )>A-B/7r SIN WT-B/2ir SIN2WT- WHERE W- ir/180 DEGREES B/3Tr SIN 3WT Figure II : A typical complex waveform which is the sum of three terms of a Fourier series. These equations were used by the program in listing 5 to generate the oscilloscope trace of photo 4. sition. Here they are synthesized separately to illustrate the technique, but mathe- matically they could be combined into one table. This would impose a far greater limita- tion on usage than would separate wave- forms, but it is not the purpose of this article to investigate electronic music. The simplest ADSR waveform is com- posed of four separate linear time dependent functions. Time T = to Ti is the attack, T] to T2 is the decay, T2 to T3 is the sus- tain, and T3 to T4 is the release. Each sec- tion is defined by a separate equation and is illustrated by the graph in figure 10. Any waveform which is to be synthesized can be graphed in a similar way. The four lines in the graph are defined by four equations. These equations, and the be- ginning and end point limits, can be com- bined into a BASIC program which creates a table of points. The table is stored in page 100 octal and the display routine is the same as was illustrated in listing 3 (see listing 4 and photo 3). Real satisfaction comes from mathemati- cally recreating complex waveforms. Syn- thesis is the combining of parts to form a whole. In Fourier analysis it is the recom- bination of the terms of the trigonometric series, usually the first four or five, to pro- duce the original wave. Often it is only after synthesizing a wave that the student is convinced that the Fourier series does in fact express the periodic wave for which it was obtained. This technique of mathematically solving the line equations, loading a point table, and either outputting directly to a plotter or calling a subroutine for an oscilloscope display can prove to be an invaluable educa- tion tool to a student involved in advanced math or music courses. Using the digital to analog interface as a Fourier waveform syn- Note From the Author This article is an attempt to introduce the computer experimenter to more thought- provoking applications for his or her computer so that the question of its usefulness in the non- industrial environment will seldom if ever be questioned. I'm shortly to begin a regular feature in BYTE on applications systems (hard- ware and software), and invite correspondence from you, the reader, on possible topics, ideas you would like to see implemented. IVly address is given at the beginning of this article. 160 Circle 249 on inquiry card. thesizer involves the same point plotting methods as previously outlined, with the exception that the equations become more involved. Consider the trigonometic series for the complex waveform with a peak amplitude of B=l 27.5 as illustrated in figure 1 1 . The Fourier series approximating a tri- angular waveform can be plugged into an extended BASIC program which calculates the points, while the program in listing 3 can be used to display the tabulation. Photo 4 shows the resulting oscilloscope display. Conclusions What started out to be just a simple inter- face for an analog output can be incorpo- rated into control, music and educational applications. The extent and direction of an experimenter's system expansion is of necessity governed by price performance. This is an inexpensive interface which con- nects an otherwise isolated digital computer to the analog world. When coupled with a high level language such as extended BASIC, its potential is limited only by the program- mer. To think that the home computer is an expensive toy useful only to bide time be- tween monopoly games is equivalent to thinking that a building is only used to hold the sidewalk down." REFERENCES 1. Digital to Analog Converter Handbook, Hybrid Systems Corporation, Crosby Dr, Bedford IVIA. 2. Graeme, Jerald G, Applications of Operational Amplifiers — Third Generation Techniques, iVlcGraw Hill Bool< Company, NY, 1973, 3. Sheingold, Daniel H (ed), Analog-Digital Con- version Handbook, Analog Devices Inc. Norwood MA. 4. Stout, David F, and Kaufman, Milton, Hand- book of Operational Amplifier Circuit Design, McGraw Hill Book Company, NY, 1976. 5. Tobey, et al. Operational Amplifiers — Designs and Applications, McGraw Hill Bool< Company, NY, 1971. 6. Wylie Jr, C R, Advanced Engineering Mathe- matics, McGraw Hill Book Company, NY, The 4 channel self-refreshing dig tal to ana- log converter pictured in figure 9 is available in the following forms from Pinnacle Products, POB 3155,Talcottvil!e CT 06066; Blank PC board . . $34 Postpaid in the Continental US Complete kit . . $69 Assembled and Tested . . $99 THE BETTER BUG TRAP AND Altalr/IMSAI compatible board catches program bugs and provides timing for real-time applications. Four hardware breakpoint addresses. Software breakpoints only possible at instructions in RAM, Better Bug Trap breakpoints can be in ROM or RAM, and at data or instructions in memory, input/output channels, or stack locations. Board can stop CPU or interrupt CPU at a breakpoint. Real-time functions: watchdog tinier, real-time clock (for time of day clock), interval timer. Sophisticated timesharing made possible! Unique interrupt structure: generates a CALL instruction to your subroutine anywhere in memory, not a RST! Addressed as memory. All parameters set easily by software. All this and more for about the price of a real-time clock board, but nothing else does the job of the Better Bug Trap, $160, assembled and tested. 2 manuals plus software. 90 day warranty. Shipped UPS. Delivery from stock. |||icrnntc0 inc. BOX 3514, 123 WEST 3RD ST., SUITE 8 GREENVILLE, NC 27834 c (919)758-7757 161 Circle 250 on inquiry card. Personal Computing Expo will come to New York! PCRPERSONAL COMPUTING EXPO NEW YORK COLISEUM, OCTOBER 28, 2», 50, 1977 It's a brand new show (in the world's biggest economic center) specifically for manufacturers, buyers and those providing services to the personal computing enthusiast. For the first time, this booming field will have a New York Coliseum showcase. It is planned as the largest public show of its type and will attract at- tendance from the huge population areas of Boston, Washington, Philadelphia and Baltimore. New York's is the world's communications focal point, the one place that will put personal computing in a significant spotlight. New York is surrounded in depth by people who work in the computer field, by com- puter learning centers, universities, personal com- puting clubs and thousands of others whose lives are affected by computers. More than 100,000 paid subscribers of BYTE magazine will be urged to view the exciting exhibits and to at- tend the BYTE-sponsored lectures. Circle the dotes: October 28, 29, 30 — and make your plans now to be there when Personal Computing Expo comes to New York! #/ Personal Computing; An idea whose time has come! ""* Tutorials by the IEEE Computer Society, Mid -Eastern Area Personal Computing Expo is also joined by the In- stitute of Electrical and Electronics Engineers Com- puter Society, Mid-Eastern Area Committee, whose experienced staff is presenting six day-long tutorials at a modest charge. If inconvenient for you to attend a tutorial during the show, simply sign up for follow-up tutorials on weekends after the show. Whereas the lectures will provide you with in- formation, the tutorials will teach important skills enabling you to use your own computer at home or at work. TUITION: The tuition fee for the tutorial program in- cludes a one-day admission to the Personal Computing Expo. Students (with ID) IEEE Members Non-Members One Two Three Tutorial Tutorials Tutorials $30 $50 $75 $40 $70 $100 $50 $90 $125 Tuition includes hand-out material, in- cluding text and/or hand-out materials. Participants will also receive a certificate of participation. REGISTRATION: In order to provide on interactive, learning environ- ment between the participants and the lecturers, the number of registrants is limited. Registration is accepted on a first-come, first served basis. Early registration is therefore suggested. Cancellations received before September 15, 1977 will receive a full refund. To register, make your check payable to the IEEE COMPUTER SOCIETY, and mall to: Daniel R. McGlynn, Ph.D. Tutorial Program Chairman IEEE Computer Society 329 - 84th Street Brooklyn, N.Y. 11209 FOR FURTHER INFORMATION: on the technical content of the tutorials, technical background suggested to derive maximum benefit from the program, or information on the IEEE Com- puter Society, call Cary Ringel Chapter Chairman IEEE Computer Society (212) 460-4600 TIME AND LOCATION: The tutorials will be held from 9 AM to 4 PM each day in the New York Coliseum, at a location to be announced and posted. Participation in the tutorials also includes a one-day admission to the exhibition area and other lecture programs. EXPO TICKETS: Will be sent to tutorial registrants about three or four weeks prior to the show. BIJTK: daily TUTORIALS AND ^XiS- SPONSORED LECTURES r BtJTE Exciting lectures sponsored by Personal Computing Expo is endorsed by BYTE magazine, whose staff has contacted prominent speakers for on exciting series of lectures. Visitors will be able to attend these meetings free of chargo. The lectures will not conflict with each other eliminating the worrysome choice among several equally important topics. In addition, they will be repeated on the next day to give you a second chance if you missed a topic. Lectures are typically 30 minutes, often with demonstrations and an adcJitionol 15 minutes for questions. Portia Isaacson Ph.D. . . . Saturday 11 AM and Sunday 12 Noon Co-owner of the Micro Store, a personal computer store, in Richardson Texas actively engaged for 12 years in the computing field in industry and at universities. Member of the ACM and IEEE, and chairman of the 1977 National Computer Conference. Author of many articles in professional journals and magazines. Received a Ph.D. in Computer Science from the Southern Methodist University. Personal Computing: An Idea Whose Time Has Come A review of what has happened so far in the personal computing field, and an outlook into future developments, including those in the computer assisted home. Slide demonstration. Sol Libes . . . Friday 6 PM and Saturday 10 AM President of the Amateur Computer Group of New Jersey Teacher of electronics and computer programming at a community college Author of 10 books (working on the 1 1th) and several hundred magazine articles in electronics and com- puting Received an award for "The Outstanding Amateur Computer Hobbyist of 1976" in Atlantic City by Personal Computing 1976 show, and BYTE. How to Get Started A discussion of typical home computer systems and their essential hardware and software components. John H. Dillcs III . . . Saturday 1 PM and Sunday 2 PM President of Personal Computing Inc. and tradefair director of the Personal Computing shows in Atlantic City in 1976 and 1977. Experience with various computer systems since 1962. Employed by Western Electric Co. Inc., division of the Bell System. Member of the Amateur Computer Group of New Jersey and of the Philadelphia Area Computer Society. Teaches microcomputer courses in an adult evening program at a vocational school. Innovative and Unusual Computer Applications for the Home. Discussion of "far-out" applications of microcomputers and electronic technology for home use, such as a child locator and warning device, a home security system, etc. Slide demonstration. Robert S. Jones . . . Friday 7 PM and Saturday 2 PM Publisher of Interface Age Magazine Prior experience in sales and marketing for the semiconductor industry, including Intel, National Semiconductor and Analog Devices Inc. Personal Computing for the Business Man Evaluating business applications for micro computers, including slides showing selected applications. Louis E. Frenzel . . . Saturday 3 PM and Sunday 3 PM Director of Computer Products at Heath Company, involved in the planning of new computer products. Prior to Heath, with McGraw Hill in product planning and design of educational electronic kits. Prior experience including computer engineering for eight years Author of severol books, home study courses and numerous magazine articles in electronics and com- puters. Received a BS in electronics from the University of Houston and a MEd from the University of Maryland How to Build Personal Computer Kits Tips for successful kit construction. Benefits of kit products for the personal computer user. Including slides showing selected computer kits. Carl Helmers . . . Saturday 4 PM and Sunday 4 PM Editor-in-Chief and co-founder of BYTE magazine. Obtained computing experience as a personal way to accomplish artistic and technological goals in music. Graduated in 1970 with a BS In Physics from the University of Rochester, NY. Worked for several years at Intermetrics, Inc. in Cambridge, Massachusetts on the NASA Space Shuttle Project. Prior to working with BYTE, publication of a small computer newsletter on a part-time basis. r Computers and Music How to create music with computers. Problems of performing electronic music, music under computer program control and computer music in conjunction with traditional instruments. Illustrations and ex- amples from personal experience. Jack L. Davies . . . Friday 8 PM and Saturday 5 PM President of Pan Atlantic Computer Systems GmbH, a distributor of various micro computer systems in Europe. Extensive experience in using minicomputers and microcomputers In the US Military Schools in Europe. Designed and developed numerous games and educational programs for students in these schools. Microcomputers in Education Discussion of the many possibilities of using microcomputer systems in schools. Effect of personal com- puters on students. David Fylstra . . . Saturday 6 PM and Sunday 5 PM Member of the research staff of the Telecommunications Sciences Center at Stanford Research Institute for more than two years. Specialized in microcomputer software and computer simulation of speech pro- cessing systems. Graduated in 1974 with a BA in English and Psychology, Stanford University, Phi Beta Kappa. Active in the research on communication systems and devices for the deaf. Speech Analysis and Synthesis for the Amateur Using the personal computer as a device to analyze the acoustical foundations of speech and to formulate rules for the control of the speech synthesizer. Max Mathews Ph.D. . . . Friday 9 PM and Saturday 7 PM Director of Acoustical and Behavioral Research, Bell Lobs Author of The Technology of Computer Music, and numerous articles. Scientific Advisor to the Institute for Research and Coordination of Acoustics and Music (IRCAM) Dr. Mathews is often regarded as the "Father of Computer Music" Pure Digital and Real Time Music Synthesis The use of the digital computer as a musical instrument with which composers and performers create and play music. Slide and tape demonstration. Carl L. Holder . . . Saturday 8 AM and Sunday 6 PM Director of Product Management, Planning and Communications at Information Terminals Corp. for five years. Prior experience, including Memorex Corp., in the area of magnetic media development and testing. Present and Future Storage Devices Survey and discussion of current devices and media, including latest technological developments like the charge coupled devices and magnetic bubble memories. Costs, advantages and disadvantages of these devices for the personal computer user. Accompanied by slides. DAILY TUTORIALS There will be two tutorials offered each day, one aimed at those participants who have little or no experience with microprocessors, and the other for those already experienced ■with microprocessor systems. BASIC COURSES 1. Development of Microcomputer Systems for Business Use %'iRQ^nGr, Citibank. N.A. — system design concepts — economic efficacy of microcomputers versus large centralized computer systems — distributed processing definitions — advantages and problem areas — network design and architecture — data communications aspects — case study: design of a stand-alone workstation for data en- try and retrieval 2. Development of Microcomputer Systems for Home Use Cory Ringel. Con Ed/son — survey of simple microcomputer control systems for home use — selection of hardware: tC's, boards, kits, development systems — programming and software aids — interfacing: A/D and D/A conversion — examples: design of o home control system; microcomputers for a music synthesizer; computer TV gomes. — cose study: use of the Motorola 6800 in design of a microcom- puter system 3. Survey and Comparison of Microprocessors Dona/d Lewis, Standard Microsystems inc and other speakers — definitions and distinctions between ALU-chips, controllers, microprocessors, microcomputers — current applications — microprocessor architectures (bit-slice. 4-bit. 8-bit 16-bit, minicomputer- type) — vendor survey — performance evaluation and criteria for selection INTERMEDIATE/ADVANCED COURSES 4. Microprocessor Interfacing Dono/d Lewis, Standard Microsystems inc. — interface components {peripheral interface chips, DARTS, etc.) — interface standards (IEEE 488, RE 232C, S-100, etc.) — - interfacing to keyboards — interfacing to cosette and floppy disk drives — interfacing to display devices — case study: how to design a CRT terminal 5. Microprocessor Programming and Software Donald Lewis, Standard Microsystems inc. software design: flow-charting, setting breakpoints, documentation, etc. — assembly language for the Intel 8080, 8085, Z-80, Motorola 6800 — instruction types and addressing techniques — use of the stock — interrupt handling and direct memory access (DMA) — software development aids — high level languages for microcomputers 6. Technology Analysis and Forecast of Future Microprocessor Structures Daniel R. McGfynn, U.S. Philips Corp. and V/ill Mathys, MOS Technology inc. — emergence of specialized computational elements (SCE) ■ - architectural evolution (stack processors, reconfiguroble ar- chitectures, multi-level logic) — resource management techniques — software evolution (nano-progromming, extensible instruc- tion sets, structured programming modules, very-high-level languages) - evolution of semiconductor technology of microprocessors — microprocessor architecture at the chip level — cose studies; design of MOS Technology's new 8-bit and 1 6- bit processors Personal Computing Expo to be produced by H.A. Bruno & Associates H.A. Bruno & Associates, Inc., has been prominent in the exposition and promotion fields since 1923. Highly skilled in the production and promotion of consumer and trade shows, the company currently promotes the American Energy Expo, the National Boot Show, Auto Expo/New York. Promotion assistance also is current- ly rendered to the National Computer Conference and the Triennial IFIPS Congress in Toronto. The show producer has promoted successful shows in the New York Coliseum every year since the building opened in 1957. Staff personnel are thoroughly familiar with the building, its services, management and labor. Interesting, educational exhibits of Personal Micro Computers The lectures and tutorials are not just theory I You will be able to see a multitude of micro computers. Try out various demonstrations: fascinating games, even in color; small business applications; computer produced speech; music; color graphics; and many more. Micro computers are not only small and portable, also you will need only a "micro budget" to be able to take them home. Show Hours and Admission Personal Computing Expo hours are as follows: Friday, Oct. 28 — Noon to 10 p.m. Sat. Oct. 29 — 10 a.m. to 10 p.m. Sunday, Oct. 30 — Noon to 7 p.m. General Admission: $5.00 (includes free BYTE lec- tures) per day. Two-day Tickets: $9.00 (advance sale only) Three-day tickets: $13.00 (advance sale only) General Information You may find it advantageous to purchase two or three-day admission tickets in advance. These are available by mail only, no later than October 10, 1 977. Use coupon below. Group rates (10 or more persons) qualify for $1.00 off regular prices. Arrangements must be made by mail prior to October 10, 1977. Special arrangements hove been made if you desire to stay overnight. Our headquarters hotel, the Barbizon-Plaza, is located on Central Park South, two blocks from Columbus Circle. Single rooms available at $34.00 per night; $40.00 double, plus tax. There's a weekend plan: $22.95 daily, plus tax per person, double occupancy . . . includes breakfast (brunch on Sunday) and meal gratuities. Children under 14 in same room with parents, free. For hotel reservations and information, call toll free (800) 223-5493. From New York State call (800) 223-5963. For those traveling to New York by air, American Airlines offers a convenient service through ar- rangement with Personal Computing Expo. For in- formation, call toll free (800) 433-1790. In Texas the number is (800) 792-1150. From the West Coast, round trip fare via American is only $227.00. 20,000 persons ore expected to attend and view the more than 200 exhibits by personal computer manufacturers and retailers. Personal Computing Expo will occupy the 4th floor of the New York Coliseum. It is located on 59th Street and Columbus Circle — the geographical center of New York City. Garage parking in the building is available. For answers to any questions pertaining to your at- tendance at Personal Computing Expo, contact the Show Manager, Ralph lanuzzi, at Area Code 212/753-4920. Advance sale of tickets available . . . Three days '13 Two days '9 . . . General Admission *5 MAIL THIS CONVENIENT ORDER FORM NOW! Personal Computing Expo admission is $5.00 per day. Advance reservation eliminates I waiting in line. Order advance tickets with this coupon. Admission ticket includes access ■ .State. .Zip. I to exhibits, lectures and tutorials Please send me advance registration tickets for three days, Oc _ tober 28-29-30. Total cost $13.00 per person. I Please send me advance tickets for two days, October and I October Cost is $9.00 per person. ■ Please send me advance tickets for one day, October . Cost ■ is $5.00 per person. | Make all checks payable to PERSONAL COMPUTING EXPO, and mall to: | Personal Computing Expo, 78 East 56th Street, New York, N.Y. 10022. ■ Name Amount enclosed $ Address City. I I BYTE's Bits International Symposium on Minicomputers, Personal and Home Computers MIMI-77 is the title of a symposium sponsored by the ICORD, lEEh Region 7, and the International Society for Mini and Microcomputers. The dates are November 16, 17 and 18 1977, and the location is Montreal CANADA. The program is divided into two sections. One section covers mini and micro- computer technology and its application; the second section covers personal and home computers. The document we received describing this event was a "call for papers." Persons interested in sub- mission of an abstract for a paper at the Dr Iverson's "Thought Experiment" Answered Last month we published an article by Dr Kenneth Iverson entitled "Under- standing APL" (August 1977, page 36), in which readers were challenged to solve the following APL expressions; (2=+/«)0=(tff)°. I iN)/iN The answer, which only becomes appar- ent for N = 7 or greater, is the set of prime numbers from 1 through Nl To show how this unexpected result comes conference, or in being placed upon its mailing list, should contact: Prof J L Houle, MIMI-77 Ecole Polytechnique, Case postale 6079, Succursalc A Montreal, Quebec CANADA H3C 3A7 Phone: (514) 344-4753" $699 Now or never Price increases ^100 on Oct. 15,1977. Equinox lOO™ is The Front- runner in S-lOO personal computers . . . because it gives you full front panel access to all CPU registers and register pairs, l/Os and memory locations via octal 12-key keyboard and digi- tal LED readout . . . single- step and programmable Slow-StepTi^ . . . no-crasti 26- amp constant voltage pow- er supply . . . 20-slot shield- ed and actively terminated busboard . . . and more! Order your Equinox lOO^" kit at your local personal Circle 251 on inquiry card. computer store, by direct mail or by phone. But you must order before Oct. 15, 1977 to save SI OO. For S699, it's now or never. ORDER: At your computer store WRITE: P.O. Box 6314, Albany, CA 94706 CALL: BAC/MC orders to 800-648-5311 FQUINOXJOO The Frontrunner from Parasitic Engineering See us at ttie Atlantic City sliow! 166 about, let us evaluate the expression for N = 7. Since expressions are eval- uated from right to left in APL, the first step is to evaluate l/V : iff 12 3 4 5 6 7 Next we evaluate everything to the left of the compression operator ( / ). Ex- pressions in parentheses are evaluated first, so we start with (i/V) ° . \ iN ), which becomes 12345670. I 1234567 lor N = 7. Performing the residue oper- ation ( I ), we get: Before we can transpose this array, we must first perform the "0=" operation: This gives: 111 10 1 10 1 111 10 10 10 10 1 Next, we transpose this array using the transpose operator (Sj ). The result is: 10 110 10 10 110 10 10 10 1110 10 10 1 Performing the +/ operation on this array gives: 12 2 3 2 4 2 The expression has thus been reduced to (2=1 2 2 3 2 4 2)/l 2 3 4 5 6 7 and this reduces to 2 3 5 7 This vector is indeed the set of prime numbers between 1 and 7, inclusive. The algorithm works for all integer values of N. (Note that the algorithm excludes 1. If you happen to take the position that 1 is a prime number, try writing an APL statement which includes it!) For readers totally unfamiliar with APL, any of Dr Iverson's many writings on the subject should help. See the refer- ences listed in last month's BYTE." TSC's Software Catalog. . . We've received a 1977 catalog from Technical Systems Consultants, Box 2574, W Lafayette IN 47906. While a lot of people have been iust talking about Personal Computing Expo Sets Inaugural NY Show for October 28 thru 30 A major trade and public show, featuring the latest developments and equipment in the fast growing field of personal computing, is scheduled to be held at the New York Coliseum, October 28 thru 30 1977. The show is called Personal Com- puting Expo. It will feature an ex- pected 250 exhibitors who will be show- casing their products for the first time in New York City. There will be speeches arranged by BYTE magazine and the IEEE to fill the seminar agenda, which includes topics for everyone interested in personal com- puters, from novice to advanced levels. Leading manufacturers have been invited to display and explain their microcom- puter systems along with other experts who will conduct forums on algorithms, software, language compilers and assemblers. Personal design of computers for the more experienced, kit building for the novice, microcomputer applications for business, industry and homes as well as computerized games, vocal output and music are among other topics to be included in the lorum. Persons interested in exhibiting at Personal Computing Expo should con- tact Ralph lanuzzi, show manager, H A Bruno & Associates, Inc, 78 E S6th St, NY 10022, (212) 753-4920.- Computer Shack is Reborn (as "Computerland") We received the following informa- lion from Computer Sliack: Computer Shack Inc, 1922 Re- public Av, San Leandro CA 94577, has announced that it plans to change its name to Computerland Corporation. Computer Shack president E E Faber said this action will "strengthen the im- pact and recognition of the trade name among the consumer public." According to management, franchisees and staff have expressed a strong preference for the "Computerland" name claiming that it better communicates the special nature of this retail computer business. "It avoids the long-range dilution of image that could result from associating high technology quality products and modern store designs with the public's perception of the name Computer Shack," Faber adds. Computerland Corporation is now operating franchised retail stores in three regional markets: Northern and Southern California and the Atlantic Seaboard." the concept, the people at TSC have gone out and done what a growing num- ber of entrepreneurs are doing: pub- lishing and selling software at reasonable prices. The TSC Software Catalog, which has a nominal price of 25 cents to cover postage, is available from the company. Most items are sold as completely com- mented, assembled machine code source listings for the 6800, 8080 or 6502 pro- cessor of your system. The prices for typical items from the catalog? • A BCD floating point package for the 6800 processor is $6.50 for the documentation, plus $3 for a MIKBUG format paper tape. • A scientific functions exten- sion of the above package runs $10 plus $4 for a paper tape. This gets you transcendentals, and other goodies. • And of course, the firm will give you a high level language for the 6800 in the form of "Micro Basic Plus" which runs $15.95 for the documenta- tion, plus a paper tape at $6 or cassette tape at $6.95. The catalog is packed full of numerous items, with most programs written for the 6800 so far (but don't ignore the availability of several 6502 and 8080 packages). The following quotation from the catalog regarding copyrights and pricing is well worth considering as a philosophy for personal use software marketing: TSC software is among the lowest priced software available to the hobbyist. All prices essentially re- flect the cost of documentation and packaging. Why does TSC sell software for so little? The answer Is simple: All TSC software is copyrighted, which means It is Illegal to make copies of any form. The low pricing is to en- courage the hobbyist to buy from us instead of paying close to the same amount for a copy at the local copying machine. We heartily agree with this approach, since the world of the personal use com- puter cannot support the concept of unit sales of custom written hand crafted programming of extremely expensive software. The automobile was a success because of mass production and distribu- tion. Marketing software to lots of people with personal computers requires high volume production at low margin as with any mass market, an enterprise which TSC is proving quite realistic." The Midwest's Most Complete Computer Store THE GENERAL COMPUTER STORE WE STOCK Compucolor Continental specialities D.E.C. Hitachi lasis Imsai Intelligent systems Lear Siegler Microterm National Multiplex North Star Polymorphics Processor Tech. Sanyo SWTP Tarbell TDL Texas Instruments Vector Graphics Vector Electronics Ven Tel Xybek Books and Magazines Sams - Haydens - Osborne Tab - etc. and many others. ASK FOR OUR Z-80 SPECIAL SEND $2 FOR OUR COMPLETE CATALOG OF PRODUCTS & PRICES. 'Refundable with purchase of $25 or more. TheGenerol Computer Company *A computer company of professionals." 2011 LIVERNOIS ■ TROY, MICHIGAN 48084 • PHONE 13131 362 0022 1310 MICHIGAN AVENUE « EAST LANSING, MICHIGAN 48823 • PHONE: (517) 351 3260 167 Circle 252 on inquiry card. Circle 253 on inquiry card. FIRE That's right, if we don't sell a bunch of our BASIC SOFTWARE VOLUME 1 albums quick, we'll get fired! Included are lots 'n' lots of your favorite Basic programs such as LUNAR LANDER and BLASTOFF!, plus new ones lil:;~-^ 1 ■"^iit-S '*I-B1- 00 00 . nonsbre de *pibns lodtb. 11 A A *i i STO , ot 3 '"^,^3 8 "PPt mi/ ■*<)«. */ STO o isyt-iro it 11 '^Cftlanise cense -1 06 6 C IBU u 4-i "rtn B 07 7 Dhofl iCfecie' 080 Si *rtn E t(») JC>0 & lBj i « STO 1 '"'«o 3 16 "A' OO «•« "LBL 87 * 1 - 1 "fS 'PROB 5TO 15 *D' ♦♦0' B.^(Kl~-0 ""*«■, °5 i '3 ol 1 CtteLeo sTOCr .08 98 % o or *prt 085 55- -i- ■= * o it .mPXt .85 OO -1- ♦ lbl «-i STO RpTim.t.Hea.iiu. VJ r" 00 ufciUsipe^r l'ihi«fo "iet Sransfi oj 3 0? 8 4-(> surt o8 8 |o1 , 1 OO OO Ol ti \ 18 "'■'w o o S5 •^ "a«.iitlfr lOi "t I "wtttmt ^ 7.T - "JecimbI I ;*rtn "LBL -c' RCL o IK »L»V. u.j> (;,»,.■ \5 E e u IWV 1 ~—^r — ilo SI EE 'Utilise 53 ( 3 • 172 Blackjack Bug Master Steve Viterwyk of 4402 Meadow Wood Way, Tampa FL 33624, told us at the National Computer Con- ference show In Dallas TX about his discovery of a small bug on page 150, "SR-52 Card BLACKJACK," line 036, of the June 1977 BYTE. The precent sign should be a division sign. Thanks, Steve." A Sour Note in "Sweet Auto Line" I loved that "Sweet Auto Line" article in your February 1977 BYTE, page 12. Mr Nico is to be congratulated on a job well done. I am anxiously looking for- ward to future "goodies" comparable to this article. While working with the information presented in "Sweet Auto Line," I believe I have discovered a slight bug. At the tags ONOFF: AND UNAUTO; ref- erence is made to NEXT-1 ; I had to use NEXT-2 instead of NEXT-1. NEXT-1 plopped me back in mainline in the middle of an instruction. If no one else has discovered this bug maybe you can advise everyone in general through an editorial comment. Walter R Norwood, manager Computer Hobbies Unlimited 9601 Kendrick Rd Richmond VA 23235 We've had several other verba/ com- ments by readers, but yours was the first written comment.* SR-52 CODING FORM - KODEFORM - FEUILLE DE PROGRiVMMATION TITLE / TITEL / TITHE^ J C U 15E-. ^ J[ H. PAGE /SEITC / PAGE,,_._if-_ PdOGRAMMEn / PROGRAMMIEHER / PROGRAMMEUR , A\Q -^*^ CHANJCC OF / VON / DE. DATE /DATUM /DATE Itii_ao0t.l57'< Loc. Atfr. Adr. Code Kode Code Key Comment* Tasle ^Bemerkungen Touche iCommentairss Loc Code Adr Kode Adr iCode 1 Kev T.1SIP Toiichc Commentt Bemerkungen Commentaires Loc. Adr. Adr Cod« Kode Code Key Ta»te Touche Comments Bemerkungan Commentaires Labali LibEl Labels lit u.% STO ^ 'so • Si {\1 0( 6 A Libels 7S - , Oi I 09 9 B otilisJttut 93 • "**,... t& *c' ol 1 c OS' 5 If •a' 00 On.h»«aU' 1 J4 ' ) \l6 «-LBL 1V2 <^3 •PROO E i "*,. SI •rtn 157 77 "«■ ^h oi < A' USIJC 3f Si Zl INV 08 8 « it 1% Si *Jsz Si *isi •^calculi tria l¥i •LBL ' 77^<- * 83 •3 D- ■ \l c . c (3 *t>' I97i TJ RCL E- **„. 1 1 ' A , * e' o< f Oi-i) ti.'.i rip., lie- •'■■ - ^s CLR •a' 10 •■if iro »!> 9 "■ i»x t( 163 77 "W Co *lfflj '■'finite \ U • c' n "D' ol I "r»nj«el «.«|*L8L n IMV 303 "l I " etc. "■,„iB8'*Z 'I l^k SUH ot 2 -' 1- - H * D' 0( 6 o\ \ 05 T i kit\ SUM **,67 08 8 ol 1 "' (eh b«e o« 1 « 08 8 00 1 <»2 STO " aeoO »9» 3C7 o< i Ofl ■"„,! 58 'in o7 7 "bih,ec9 gt *l S40. 5^ ( If •A' "= \i • A' ♦ 3 ' »3 (^^ STO U WLBL " r»n]e'et t« 7f 78 *S >»s 83 *3 0£ »7 312 Z2 INV '' etc 06 i 58 *JS2 " it 7 78 • s 08 8 """i,- 35 = 13 • D' '°(en b»s« t (0 • e' .« lUV 90 "^IfZfc ' dix) , 90>ifiro

160H X 100V resolution bit mapping graphics ir On-board ROM (Monitor/Editor) option * 40 characters by 20 lines, character ROM generated (hardware) ■k Keyboard interface (with power) it Programmable modes and display format ir Serial I/O port A Low power . . . only 600ma at +BN « Extremely fast (uses DMA) ir Comprehensive User Manual . . . 200ps i, American 60HZ or European 50 HZ operation. Designed-ln expandability means maxi- mum versltility at minimum cost. Add-on options now available (in kit form) Include: