ISSUE -3 NOVEMBER 1975 $1.50 (12 bits) the small systems journal A $20 Microprocessor ? Burn Your Own ROMs Computer Hams ? Ins and Outs of Volatile Memories Computers Are Ridiculously Simple I Is This Next ? Computers - The World's Greatest Toy! SuilHBSOO The Computer System You Hove Been Waiting For A BENCHMARK SYSTEM— Using the MOTOROLA M6800 benchmark microprocessor family. Wl/llllliii,,.. . • «**•»#<•• COMPUTER gjiilii B800 Svstem Southwest Technical Products is proud to introduce the M6800 computer system. This system is based upon the Motorola MC6800 microprocessor unit (MPU) and it's matching family of support devices. The 6800 system was chosen for our computer because this set of parts is currently in our opinion the "Benchmark Family" for microprocessor systems. It makes it possible for us to provide you with a computer system having outstanding versitility and ease of use. In addition to the outstanding hardware system, the Motorola 6800 has without question the most complete set of documentation yet made available for a microprocessor system. The 714 page Applications Manual for example con- tains material on programming techniques, system organization, input/output techniques, and more. Also available is the Programmers Manual which details the various types of software available for the system and provides instructions for the programming and use of the unique interface system that is part of the 6800 design. The M6800 system minimizes the number of required components and support parts, provides extremely simple interfacing to external devices and has outstanding documentation. Our kit combines the MC6800 processor with the MIKBUG® read-only memory (ROM). This ROM contains the pro- gram necessary to automatically place not only a loader, but also a mini-operating system into the computers memory. This makes the computer very convenient to use because it is ready for you to enter data from the terminal keyboard the minute power is turned "ON". Our kit also provides a serial control interface to connect a terminal to the system. This is not an extra cost option as in some inexpensive computers. The system is controlled from any ASCII coded terminal that you may wish to use. Our CT-1024 video terminal is a good choice. The control interface will also work with any 20 Ma. Teletype using ASCI I code, such as the ASR-33, or KSR-33. The main memory in our basic kit con- sists of 2,048 words (BYTES) of static memory. This eliminates the need for refresh interrupts and allows the system to operate at full speed at all times. Our basic kit is supplied with processor system, which includes the MIKBUG ROM, a 128 word static scratch pad RAM, and clock oscillator bit rate divider; main memory board with 2,048 words, a serial control interface, power supply, cabinet with cover and complete assembly and operation instructions which include test programs and the Motorola Programmers Manual. If you have a Motorola 6800 chip set, we will sell you boards, or any major part of this system as a separ- ate item. If you would like a full description and our price list, circle the reader service number or send the coupon today. Prices for a com- plete basic kit begin at only S450.00. MAIL THIS COUPON TODAY □ Enclosed is $450.00 □ or Master C. # Bank #. □ or BAC # Ex Date For My SWTPC Computer KitQ NAME I | Send data package ADDRESS CITY Southwest Technical Products Corp., Box 32040, San Antonio, Texas 78284 The MODULAR MICROS from MARTIN RESEARCH Here's why the new MIKE 2 and MIKE 3 are the best values in microcomputers to- day! 8008 OR 8080 Martin Research has solved the problem bothering many potential micro users .... whether to go with the economical 8008 microprocessor, or step up to the powerful 8080. Our carefully designed bus structure allows either processor to be used in the same system! The MIKE 3 comes with an 8080 CPU board, complete with crystal-controlled system timing. The MIKE 2 is based on the 8008. To upgrade from an 8008 to an 8080, the user unplugs the 8008 CPU board and plugs in the 8080 CPU. Then he unplugs the 8008 MONITOR PROM, and plugs in the 8080 MONITOR PROM, so that the system recognizes the 8080 instruction set. That's about it! If the user has invested in slow memory chips, compatible with the 8008 but too slow for the 8080 running at full speed, he will have to make the 8080 wait for memory access— an optional feature on our boards. Better still, a 4K RAM board can be purchased from Martin Research with fast RAM chips, capable of 8080 speeds, at a cost no more that you might expect to pay for much slower devices. In short, the MIKE 2 user can feel confi- dent in developing his 8008 system with expanded memory and other features, knowing that his MIKE 2 can be up- graded to a MIKE 3— an 8080 system— in the future. EASE OF PROGRAMMING Instructions and data are entered simply by punching the 20-pad keyboard. Infor- mation, in convenient octal format, ap- pears automatically on the seven- segment display. This is a pleasant con- trast to the cumbersome microcom- puters which require the user to handle all information bit-by-bit, with a confus- ing array of twenty-odd toggle switches and over thirty red lights! A powerful MONITOR program is in- cluded with each microcomputer, stored permanently in PROM memory. The MONITOR continuously scans the key- board, programming the computer as keys are depressed. Say the user wishes to enter the number 135 (octal for an 8008 OUTPUT 16 in- struction). He types 1, and the right- hand three digits read 001. Then he presses 3, and the digits say 013. Finally he punches the 5, and the display reads 135. Notice how the MONITOR program (Continued in column 3.) Family & £. SL ' 7 1 4 8 5 9 6 1 1 2 3 Lc • Introducing the family of modular micros from Martin Research! Choose either the economical 8008 proces- sor, or the powerful 8080. Either CPU is compatible with our advanced bus structure! Plus, a convenient monitor program, in PROM memory, allows you to enter instruc- tions with the ease of a handheld calcul- ator. Six large digits display data in octal format. Modularity makes for easy expansion. First quality parts throughout. Professionally made PC boards with plated holes, solder- mask protection. 8080 CPU board features versatile interrupt structure, multiprocessing capability. Easy interfacing to input and output ports. MIKE 303A: CPU board with 8080, key board/display board, PROM/RAM board monitor PROM (256 bytes of RAM), breadboard, hardware, and instructions: $395.00 kit, $495.00 assembled and tested. MIKE 203A: CPU board with 8008, key- board/display, PROM/RAM, breadboard, hardware, and instructions: $270.00 kit, $345.00 A&T. MIKE 3-5 or 2-5: 4K RAM board with 450 ns static RAM: $165.00 kit, $190.00 A&T. FREE CATALOG! Kits: US & Canada only. Master Charge accepted. OEMs: write for quantity prices. MARTIN RESEARCH Microcomputer Design 1825 S. Halsted St. Chicago. IL 60608 (312) 829-6932 shifts each digit left automatically as a new digit is entered! The value on the display is also entered into an internal CPU register, ready for the next opera- tion. Simply by pressing the write key, for example, the user loads 135 into memory. The MONITOR program also allows the user to step through memory, one loca- tion at a time (starting anywhere), to check his programming. Plus, the Swap Register Option allows use of the inter- rupt capabilities of the microprocessor: the MONITOR saves internal register status upon receipt of an interrupt re- quest; when the interrupt routine ends, the main program continues right where it left off. We invite the reader to compare the pro- grammability of the MIKE family of microcomputers to others on the mar- ket. Notice that some are sold, as basic units, without any memory capacity at all. This means they simply cannot be programmed, until you purchase a mem- ory board as an "accessory." Even then, adding RAM falls far short of a conve- nient, permanent MONITOR program stored in PROM. Instead, you have to enter your frequently-used subroutines by hand, each and every time you turn the power on. EASY I/O INTERFACE The MIKE family bus structure has been designed to permit easy addition of in- put and output ports. A hardware inter- face to the system generally needs only two chips— one strobe decoder, and one latching device (for output ports) or three-state driving device (for inputs). A new I/O board can be plugged in any- where on the bus; in fact, all the boards in the micro could be swapped around in any position, without affecting opera- tion. I/O addresses are easy to modify by reconnecting the leads to the strobe de- coder (full instructions are provided); this is in marked contrast to the clumsy input multiplexer approach sometimes used. POWER & HOUSING The micros described to the left are com- plete except for a cabinet of your own design, and a power supply. The basic micros require +5 V, 1.4 A, and — 9 V, 100 MA. The 4K RAM board requires 5 V, 1 A. A supply providing these volt- ages, and ±12 V also, will be ready soon. OPTIONS A number of useful micro accessories are scheduled for announcement. In addi- tion, the MIKE 3 and MIKE 2 may be purchased in configurations ranging from unpopulated cards to complete systems. For details, phone, write, or check the reader service card. RlGS ELECTROIUflCS] DISCOUNTS: 10% OFF ORDERS OVER $25.00; 20% OFF ORDERS OVER $250.00. SPECIAL 1-8008 S50 8-2102 ANOTHER POWER SUPPLY . . . PS 25—1 to 25v 1a lab type power supply with adjustable current limiting; remote sensing & remote programming for voltage & current. Insturctions included. All parts except chassis, meter(s), p.c. board. Kit of parts with schematics. S14.95 P.C. boards available, No. 007 S3. 00 ea. 2K RAM BOARD KIT. ALL PARTS INCL. SOCKETS $84.50 ICs 8008 MICROCOMP. CHIP$30.95 2102 1 K STATIC RAM 3.00 5203 256x8 PROM 15.00 5204 512x8 PROM 25.00 INFO ON ABOVE CHIPS IF ASKED FOR. ORDERS OF $50 OR MORE GET FREE BYTE SUBSCRIPTION IF ASKED FOR (CONTINENTAL U.S. ONL Y). 008A MICROCOMPUTER KIT 8008 CPU, 1024 x 8 memory; memory is expand- able. Kit includes manual with schematic, program- ming instructions and suggestions; all ICs and parts supplied except cabinet, fuses & hardware. Includes p. c. boards. $375.00 MANUAL ONLY, $25.00 (no discount on manual) 008A-K ASCII keyboard input kit. $135.00 008A-C Audio cassette adapter kit. $100.00 Details on computer, peripheral kits in our flyer. RGS ELECTRONICS 3650 Charles St., Suite K ■ Santa Clara, CA 95050 ■ (408) 247-0158 We sell many ICs and components not listed in this ad. Send a stamp for our free flyer. TERMS OF SALE: All orders prepaid; we pay postage. SI. 00 handling charge on orders under S10.00. California residents please include sales tax. Please include name, address and zip code on all orders and flyer requests. Prices subject to change without notice. In the Queue Foreground INS AND OUTS OF VOLATILE MEMORIES 12 Hardware — Lancaster COMPUTERS ARE RIDICULOUSLY SIMPLE 20 Principles of Operation — Wadsworth COMPUTERS AND AMATEUR RADIO 42 Applications — Gipe SON OF MOTOROLA (OR, THE $20 CPU CHIP) 56 Chip Designs — Fylstra Background HEXPAWN - PROJECT IN ARTIFICIAL INTELLIGENCE . . .36 Software — Wier NOTES ON PARALLEL OUTPUT INTERFACES 52 Hardware — Carl Helmers MONITOR 8 1 / 2 - YOUR OWN PSEUDO INSTRUCTIONS 64 Software — Nico VERSATILE READ ONLY MEMORY PROGRAMMER 66 Hardware — Peter Helmers Nucleus BYTE magazine is published monthly by Green Publishing, Inc., Peterborough, New Hampshire 03458. Subscription rates are $12 for one year worldwide. Two years, $22. Three years, $30. Second class postage application pending at Peterborough, New Hampshire 03458 and at additional mailing offices. Phone: 603-924-3873. Entire contents copyright 1975 by Green Publishing, Inc., Peterborough, NH 03458. In case you were wondering, last month's cover had pictures of several MITS and SWTCP computer kit boards. From the Publisher 5, 82 Speaking of Computers 6, 90 Book Reviews 11 Byter's Digest 46, 72, 79 Clubs and Newsletters 77 Diagnostics 78 Letters 84 BOMB 88 Reader's Service 96 Contract: The subscriber or purchaser of this magazine agrees to the following software conditions . . . not to resell this magazine for less than 50% of the cover price . . . not to give the magazine away at any time in the future ... or to lend it . . . or rent it or in arty other way permit anyone to become privy to the material published within these pages. Purchaser agrees to display this copy of BYTE to as many computer addictees as possible, but to limit their perusal to the cover and table of contents pages. This agreement holds not only for casual acquaintances, but also for personal friends, blood relatives, and even wives. WII # 3 NOVEMBER 1975 i II I I I P. 6 p. 12 p. 36 p. 42 i h 0I ■ — |i2'8PROMSJ 02 ^"^"N _j2M»4PfK*B| 0i) *^~—y PROM SOCKETS , OjTPU T 2 @ (3 (3 ,t C'j ~& £7 "O" p. 66 COVER: See page 5. Part Model Row Dim. Number Price TC-8 .3 IN. 923695 $7.35 TC-14 .3 IN. 923698 4.50 TC-16 3IN. 923700 4.75 TC-16 LSI .5/. 6 IN. 923702 8.95 TC-18 .3IN. 923703 10.00 TC-20 3IN. 923704 11.55 TC-22 .4 IN. 923705 11.55 TC-24 .5/ .6 IN. 923714 13.85 TC-28 .5/. 6 IN. 923718 15.25 TC-36 .5/6 IN. 923720 19.95 TC-40 .5/. 6 IN. 923722 21.00 for fast, non-shorting access to all leads on dual-in-line IC packages No more shorting across DIP leads... just quickly clip on an IC TEST CLIP to bring DIP leads out for safe attachment of scope probes and other leads. Ideal for signal input, trac- ing, troubleshooting, etc. Patented precision, "con- tact comb" design guar- antees no shorting be- tween DIP leads. Probes can hang "no-hands" free on Test Clip terminals in card racks (unique — see photo). Engineered Me- chanical clamping plus gold-plated phosphor bronze terminals provide superior electrical con- tact. Also unequaled as a DIP removal tool. We honor M.C. and B.A.C. charges. Add sales tax on OH and CA orders. (F.O.B. Painesville on company P.O.'s.) Dealer inquiries in vited Add — »• fees from this chart. SHIPPING/HANDLING Up to $10.00 S1.00 $10.01 IQ $25.00 1.50 25.01 to 50.00 2.00 All products guaranteed to meet or exceed published specifications AP PRODUCTS INCORPORATED Box 110-G • Painesville. OH 44077 • 216/354-2101 ^^^ solderless plug-in tie-points fastest, most reliable method known. ..to build, test and modify experimental circuits 8 bus distribution system plus universal .1" by .1" matrix of solderless, plug-in tie points all in one integral device. Accepts all DIP's and discretes with leads up to .032" dia. Interconnect with any solid wire up to No.20A.W.G. ORDER BY PART NUMBER 923252 [nickel-silver terminals) $17.00 923748 l s oM-plaled terminals) $18.90 High-performance A P Super- Strip component matrices consist of 128 terminals of 5 tie points each. The 8 buses of 5 connect- ed 5-tie-point terminals are for voltage, ground, reset and clock lines, shift command, etc. New, non-shorting, insjant-mount backing and quick-removal screws are supplied... use several Super-Strips to create large-scale breadboards on panels up to 1/8" thick. We honor M.C. and B.A.C. charges. Add sales tax on OH and CA orders. (F.O.B. Painesville on company P.O.'s.) Dealer inquiries invited Add — •- fees from this chart. SHIPPING/HANDLING Up to $10.00 51.00 $10.01 to $25.00 1.50 25.01 to 50.00 2.00 All products guaranteed to meet or exceed published specifications AP PRODUCTS INCORPORATED Box 110-G* Painesville, OH 44077 • 216/354-2101 try **?&** Super-Versatile 7 building blocks for experimental circuits Universal .10" matrices of solderless, plug-in tie points For all DIP's and discretes with leads to .032" dia. Interconnect with any solid wire up to No. 20 A.W.G. Nickel-silver terminals ORDER BY PART NUMBER 923277 distribution strip . . . $2.50 923261 terminal strip $12.50 Create custom breadboards in minutes with these new instant-mount strips. DISTRIBUTION STRIP (top) contains 2 continuous buses of 12 connected 4- tie-point terminals. Size: 6.5" by .35". TERMINAL STRIP contains 128 5-tie- point terminals, holds up to nine 14-pin DIP's. Size: 6.5" by 1.36". Integral, non-shorting, instant-mounting back- ing permits quick build-up of special breadboards using any mix of strips. Other models available. We honor M.C. and B.A.C. charges. Add sales tax on OH and CA orders. (F.O.B. Painesville on company P.O.'s.) Dealer inquiries in vited Add — »- fees from this chart. SHIPPING/HANDLING Up to $10.00 $1.00 $10.01 to $25.00 1.50 25.01 to 50.00 2.00 All products guaranteed to meet or exceed published specifications AP PRODUCTS INCORPORATED Box 110-G* Painesville, OH 44077 • 216/354-2101 hurrt * erfo"* 1 * circuit O tor2n trV models for fast building and] testing of . circuits . photo ACE 227 On all models... simply plug in your /* components and inter- connect with 22-ga. solid wire. All models accept all DIP's, TO-5's and discretes with leads up to .032" diameter. Multiple buses can easily be linked for power and ground distribution, reset and clock lines, shift command, etc. Bases: gold-anodized alumi- num. Terminals: non-corrosive nickel-silver. Four rubber feet included. obsoletes * ordinary breadboards Order No. 923333 923332 923334 923331 923326 923325 923324 ACE Model No. 200-K Ikitl 208 lassBm.l 201 -K Ikitl 212 (assem.) 218 (assem.) 227 lassem.) 236 (assem.) Tie DIP No. No. Points Capacity Busee Roots 728 8 116-s] 2 2 872 8(16's) 8 2 1032 12(14's) 2 2 1224 12(14'sl 8 2 1760 18(14's) 10 2 2712 27 114's) 28 4 3648 36 114's) 36 4 Board Size (inches) 4-9/16x5-9/16 4-9/16 x 5-9/16 4-9/16 X 7 4-9/16x7 6-1/2 X7-1/8 8x9-1/4 10-1/4x9-1/4 Price Each We honor M.C. and B.A.C. charges. Add sales tax on OH and CA orders. (F.O.B. Painesville on company P.O.'s.) Dealer inquiries in vited Add *- fees from this chart. SHIPPING/HANDLING Upto$10.00 $1.00 S10.01 to $25.00 1.50 25.01 to 50.00 2.00 818.95 28.95 24.95 34.95 46.95 59.95 79.95 COD. All products guaranteed to meet or exceed published specifications AP PRODUCTS INCORPORATED Box 110-G* Painesville, OH 44077 • 216/354-2101 from the Publisher . Aggravated shock. How else can I describe my state of mind after innocently turning my newly acquired Altaic 8800 around, looking for places to plug in Teletypes and television typewriters. After forty years of turning around electronic equipment to plug things in, this time there was nothing there except the line cord. Nothing! Not even a lousy phone jack. High fidelity amplifiers have the controls and switches on the front panel and the terminals and jacks on the back like any decent piece of equipment ought. As a matter of fact, some of the amplifiers these days have just about gone berserk with jacks and terminals. I had no problem plugging in my stereo phono and the tape recorder, but I haven't located any source of auxes as yet for that line. It's in stereo too. Know anyone with a good stereo aux for sale — cheap? Ham transmitters and transceivers have lots of places to plug things in all over the back panel. I notice, upon checking, that some of them have a place for my aux, if I manage to get one. It'll get a lot of use. Maybe the jacks are inside, I thought. So I unscrewed the lid and slid it back - still no terminals, no jacks, no plugs, no connectors, nothing! In desperation I grabbed the instruction book. It was a thick one so I moved to a comfortable chair, adjusted the light, and started reading about gates, truth tables, and I fell asleep. You wouldn't believe the crook in my neck that chair gave me when I tried to get out of it the next morning. Now, after having read as far as I could in the instruction book and after talking with a number of experts and even visiting the MITS factory, I am beginning to suspect that I am going to have to do a good deal more than just plug in a Teletype machine to hook into my Altair. Interface is the buzz word. It means not only plugging it in, but doing so in a way that will enable it to work. My Teletype machines have distributors built-in, which means that the Beau's Dots come out one after the other rather than all at once Continued on page 96 The wave of the future? This is a shop in a mall in Dallas. EITI staff EDITOR Carl T. Helmers Jr. PUBLISHER Wayne Green MANAGING EDITOR Judith Havey ASSOCIATE EDITORS Dan Fylstra Chris Ryland CONTRIBUTING EDITORS Hal Chamberlin Don Lancaster ASSISTANT EDITORS John C. Burnett Susan G. Philbrick PRODUCTION MANAGER Lynn Panciera-Fraser ART DEPARTMENT Nancy Estle Neal Kandel Peri Mahoney Bob Sawyer PRINTING Biff Mahoney PHOTOGRAPHY Bill Heydolph Ed Crabtree TYPESETTING Barbara J. Latti Marge McCarthy ADVERTISING Bill Edwards Nancy Cluff CIRCULATION Susan Chandler Dorothy Gibson Pearl Lahey Lorraine Morton Judy Waterman INVENTORY CONTROL Marshall Raymond DRAFTING Bill Morello COMPTROLLER Knud E. M. Keller Carl Helmers The State of The Art If there is one facet of the small computer field which is its most exciting, that is probably its rapid change and evolution unfolding before all us users of the technology. The fact that a magazine such as BYTE can even exist (let alone get its enthusiastic reception) is evidence of the considerable changes which have occurred in the home computer field over the past year or two. Any attempt such as this to characterize the current "state of the art" is doomed to rapid obsolescence. Be that as it may, I won't let that deter me from characterizing the field as I see it now. Just what is this "art" that I'm talking about? When I talk about art in this sense, I mean the body of technological know-how available for personal computing plus the attitudes and abilities of the people who use this know-how. An analogy or two: The state of the art in a form such as painting reflects both the latest developments in the pigmentation materials field and the creative talents and attitudes of the people who use this technology for Any attempt to specify the state of the art in this field is doomed to practically instant obsolescence . . . expressive purposes. The state of the art in music is a combination of the technology of music production — traditional to electronic/digital — plus the aesthetic and creative tastes of the musicians and composers who use the technology. So it is as well with computing. There is the technological state of the art as it exists — a transient thing at present — together with the creative uses to which people such as you or I put these wonderful technological devices. A Recent State of the Art . . . A few years ago, the state of the art in hardware was pretty primitive — in othcr words, one had to be a really persevering person to get something in computing which worked and cost less than $1000. To give you an example, I got a call from Dick Snyder of Chelmsford, Mass., shortly after BYTE #1 came out. (See Dick's letter in the letters column of this issue.) As a result of our conversation, I stopped at Dick's house on the way back from Peterborough one weekend in August and took a look at his pre- microcomputer home brew computer, a really beautiful piece of work. He had completely designed and built - in 1972 and 1973 - a miniature 4-bit computer with 256 nybbles of memory using the Data General NOVA minicomputer as his inspiration. He built the machine using painstakingly accurate soldering with a miniature iron, sockets for over 170 integrated circuits, and a very compact housing. The most unusual feature of all was the use of water cooling to keep his 16 7489 memory chips cool (said water cooling consisting of plastic bag baby bottles filled with water and sealed with rubber bands). Yet it works! And — he has built up quite an impressive array of software for his one-of-a-kind machine, including a very appealing simulation of a priority-driven real time operating system with three tasks in the queue. The entire program for this simulation is done in 256 nybbles (half-bytes) of memory with the 16 instructions of his design. The result is an impressive changing display of marker patterns in his front panel lights as the various tasks swap in and out of execution. Dick Snyder's machine is the state of the art, circa 1972-1973, to a large extent — micro- computers were not yet widely available to the general populace of personal computing hackers. Dick tells me that he spent about $600 on the parts of his computer at 1972 prices for SSI and MSI TTL integrated circuits. But now, in 1 975 after the first wave of 8008 computer kit products and the rising tide of the "first generation" personal computer systems, that same $600 can buy a lot more function. In 1975 we saw the introduction of the MITS ALTAI R - which turns out to be a very good computer after initial slow deliveries due to unanticipated demand — and a host of new machines such as Bill Godbout's PACE, the SWTPC 6800 kit, the MITS 6800 kit and several other systems. The Benchmark of a Small Computer System In the engineering and software professions, it is often common to dream up "benchmarks" to help in the evaluation of systems. This term, benchmark, was adopted by systems engineers from its original use in the field of geodetic surveying. A geodetic survey benchmark is a permanent marker set "out in the field" (literally) at known locations during the course of the survey. If you clamber to the top of Mt. Chocorua in New Hampshire, as I sometimes do, when you get to the top you will find a little metal plate giving elevation, longitude and latitude information. This is the benchmark for the mountain's peak. Well, the benchmarks used for computer systems are a little bit less concrete than a metal plate on a mountaintop, but serve the same purpose: They provide a reference point for comparison. A common benchmark which has been used in the past to evaluate computer systems (and compilers) is the "standard set of programs". In this method of benchmarking a system, the potential user of the system picks a set of "typical" applications programs and has them implemented and measured in operation on several different systems. This is a fairly quantitative and seemingly accurate method which is widely practiced in the information systems industries. The measurements made for comparison include "through-put" (processing per unit time), high level language efficiency, memory requirements, etc. But this sort of a measure is perhaps a bit too complicated for the home computer context. For one thing, the applications are known only generally. Second, this is the type of study which takes a large amount of time and access to various competitive systems. And, if you read the trade journals, the results are often controversial anyway, since each manufacturer will claim that the benchmarks he provides will prove his machine better than all the rest. Picking the "ideal" small computer system still requires a benchmark, but I suggest it is not a particular program, but a capability. Capability — the Benchmark of a Small System We all know that in broad terms, the benchmark computer system, as any computer system, must include several major components: a processor, memory, a mass storage medium, an interactive operator's terminal and systems software. I pick this list in part to illustrate a typical computer configuration and in part to allow programming of a benchmark capability: A small computer system which meets the benchmark standard will be able to interactively edit a mass storage file of input data with operator commands, producing a second mass storage file as output. This will be achieved in a system costing at most $1000 initially. The system diagram of the benchmark computer is shown in Fig. 1, as it is implemented in the current state of the art. The 4k to 8k RAM 2-CHAN CASSETTE INTERFACE EXPANSION KEYBOARD & DISPLAY APPLICATIONS SOFTWARE AND DATA RECORDER RECORDER SYSTEMS SOFTWARE OFF LINE CASSETTE LIBRARY Fig. 1. The Complete Low Cost Computer System (circa September 1975). This diagram shows the major components of a typical low cost computer system — which should total up under $1000 depending upon manufacturer and details of design. At the time this editorial is written, several kit manufacturers meet this functional benchmark at prices well under $1000. As time goes on the improvements of mass production should drop the average price of such systems. components of the system are chosen with the editing function in mind, since accomplishing such an edit capability means the machine can be programmed for almost any other personal computing use. Peripherals that enhance the function are of course desirable and will help to personalize your system, but these functions represent the bare minimum without added cost of special purpose peripherals. The CPU: Which One? In Hal Chamberlin's article in BYTE #1, the relative merits of three computer designs were covered. In BYTE #3, Dan Fylstra covers a comparison of two additional designs. There is a large variety in the types of CPUs available to home brewers and kit builders — ranging from the 8008, 8080, 6800 and 6501 8-bit micros, to the 16-bit IMP and PACE micros, to commercial 16-bitters such as the LSI -11 and NAKED Milli products - and on into the never-never-land of custom designed microcoded MSI computers implemented by individuals (and also soon to be announced in product form by one manufacturer of kits). There is a large element of personal taste involved in the preference of particular instruction sets, and there is also the matter of efficiency for particular classes of programs. Whatever the CPU you use, it is a definite requirement of the system. I guarantee you that any one of the 8-bit or 1 6-bit microprocessors currently being packaged and sold as kits will be adequate to pass this benchmark test, although you may have to write the Editor program yourself. RAM Memory — How Much? The CPUs of the conventional microprocessors — kit or home brew implementations — create an output called a "data bus" Picking your ideal computer system requires a benchmark — which I suggest is not a particular program but a capability. which is used for exchanging information with everything else in the system. The data bus is the "spinal cord" of the computer's nervous system. This bus concept typically includes 16 bits of buffered address lines and several bus control information lines as well as the 8 or 16 bi-directional buffered data lines. The address space of the typical contemporary micro- computer's architecture is usually 16 bits worth or 65,536 possible memory locations. In the usual system most of these locations will Continued on page 88 You'll get more than a core. < We make the difference count. We'd like to be modest, but we've worked hard to bring about the lowest-cost computer systems on the market today; and it was no accident either. The Sphere team introduced really innovative micro-circuit design which brought big computer capabilities down to micro- processer size. You can sit down to a Sphere System and it will do the job you want to get done for personal or business use — from games to building security system or even to maintaining accounts receivable, accounts pay- able, and printing out checks, mailing lists and invoices. This is possible because your SPHERE system is totally We make the difference count. SPHERE CORPORATION 791 South 500 We*l # 1 Itoiintilul. UulilUlHIl IIUIIIJ'JS- 1 168 DearSPHERE: Yes, I want more than a core. Tell me every- thing; send your detailed information. Print Name: Address: City and State: Zip Code: Phone: expandable louse an extendedBASICcompilerand/or the many high-quality, low-cost peripherals on the market today (also available from SPHERE). We provide manuals for maintenance and kit assembly, and even program- ming concepts for the first-time computer user. Note our special offers on the following pages and send the coupon with your order or request for more informa- tion on our parts and kits, along with a complete line of cost-efficient peripherals. We will deliver in 60 days. At SPHERE CORPORATION you'll get a lot more than just a core., intelligent systems. SPHERE SPHERE CORPORATION 791 South 500 West # I Bounlilul, Utah K4010 (BOD 295-1368 4K Computer! Still, our price goes down a lot easier. Now's your chance to bite into a complete computer system. We at SPHERE CORPORATION have used the latest micro-processing technology along with some real innovations in mini-circuit design to develop the lowest- cost complete computer systems available. Every system comes complete with TV CRT display, ROM monitor, a real time clock, and typewriter, cursor editing, and numeric keyboards. Every SPHERE SYSTEM has ample memory to run YOUR particular program, whether it's a complicated inventory control system, or keeping de- tailed track of finances, or monitoring and protecting your home or office . . . use your imagination! And SPHERE offers manuals with plenty of information for the We make the difference count. SPHERE CORPORATION 791 South 500 West # > Bountiful, Utah 84010 Dear SPHERE: (001) 295-136fl The tacts I read here convinced me! □ Enclosed is my check or money order tor $860.00. Please rush me a SPHERE I System. □ Please rush me more details on your low-cost computer system and peripherals. (Specific questions, if any, are attached.) Print Name: Address: City: first-time computer users. In addition, every SPHERE SYS- TEM is expandable as desired. It will run an extended BASIC compiler and/or a most complete line of peripher- als. All systems come with complete usage, program- ming, and application manuals, as well as software sup- ports to make its functions almost limitless. We wanted to make something a lot better; and we did! The mail orderoffer you see here is limited. Take advan- tage of it! If you like, also inquire about our full color graphics CRT display, andSPHERE's most complete line of low-cost peripherals on the market today. Use the coupon below right away! State, Zip: SPHERE SPHERE CORPORATION 791 South 500 West # j Bountiful, Utah 84TJ10 (801)295-1368 K's your game. 9 hbhn mm real-time clock 16 digital I/O lines 4k RAM 512 times 8 PROM serial teletype interface hardwired ROM monitor (console emulator) (Complete with usage, programming, and application manuals.) Still, our price goes down a lot easier. Take the SPHERE CPU board and you can name a game, play it, and invent your own.lt is a totally programmable computer base for fun or serious use. Only real design innovation by the TEAM at SPHERE CORPORATION could make the advances in micro-processing technology that could increastMhe capabilities and bring the price down. There have been no compromises and no short cuts . . . look at the features! You might even be interested in the complete 4K computer system kit for $860.00! In fact, we We make the difference count. SPHERE CORPORATION 791 South 500 West #3 Bounliful, Utah 64010 DearSPHERE: (601)295-1368 The (acts I read here convinced me! a Enclosed is my check or money order tor $860.00. Please rush me a SPHERE I System. □ Ptease rush me more details on your low-cost computer system and peripherals. (Specific questions, if any, are attached.) Print Name: Address: City: Stale, Zip: at SPHERE have a whole line of fine micro-processing parts, kits, peripherials and even full-blown systems. Take advantage of the special mail order offer on our CPU board, and gel one board at the OEM's 100-quantity price complete with the 1 manuals as listed. Use the coupon and have it delivered right away. It's your game and we at SPHERE CORPORATION make the difference count! 5|" I lit.' Special OEM 100-tjuantily-price is extended lo the hobby user for .1 single CPU l»o.i rd through mail order only. Otter ends without notice. SPHERE SPHERE CORPORATION 791 South 500 West # 3 Bountiful, Utah 8*10 (801)295-1368 10 REVIEW What To Do After You Hit Return, or PCC's First Book of Computer Games. Available from People's Computer Company, PO Box 310, Men/o Park CA 94025 ($6.95 plus 504 postage and handling), or from the Hewlett-Packard Corporation, Mail Order Dept, PO Drawer #20, Mountain View CA 94043 ($6.95 plus $1.50 postage and handling). If you've managed to get BASIC up and running on your Altair or other home brew computer system, why not try it out with a few computer games implemented as BASIC programs? Or if you .ind your minicomputer or time-sharing service have some time to spare . . . What To Do After You Hit Return is a book of computer games published by the People's Computer Company with the collaboration of Hewlett-Packard Corporation. All of the game programs are written in HP 2000F BASIC, and should be fairly easy to adapt to other imple- mentations of the BASIC language. The book includes listings of most of the programs, as well as information on how to order machine-readable copies of the programs (on paper tape or magnetic tape) at reasonable prices. The book is nicely organized into 10 chapters, each dealing with a certain "kind" of game, such as a word game or a hide-and-seek game. The programs range from very elementary number-guessing games to sophisticated business and social science simulations (listings of the larger programs are not included in the book). I was somewhat disappointed to find that a listing of the very popular "Star Trek" game was omitted, although an elaborate "Star Trader" game is included. The first few pages of the book present, among other things, a rationale for the existence of computer games. While this is probably an effective way to counteract the rigid, efficiency-minded attitudes of some computer professionals, it's really sufficient to say the obvious, "Games are fun". My only reason for hesitation in recommending this book is that I have known some people whose work and play revolve entirely around computers. Therefore I would also like to recommend at the same time: sex, sunshine, salt water, snow, speed (cars, motorcycles, glide rs, skydiving, whatever you like), yoga and music. The list could be extended indefinitely, of course, and the point is simply to use the whole of your mind and body. Those of us who work and play with computers know that, for exercising one's reason and imagination, we have the greatest tools and toys ever invented. So, having fulfilled my duty to remind you that one can have too much of a good thing, I am pleased to recommend this book, one of several heartening developments that promise to show people what computers are really all about. -d.h.f. Microcomputer Design, by Donald P. Martin, Martin Research Ltd., 1825 S. Ha Is ted St., Chicago IL 60608, 1-312-829-6932. $50. This book is terrific, especially for the following people: a) Anyone doing original circuit design with microcomputers. b) Anyone using the 8008 beyond simple applications. The book is virtually an encyclopedia on the 8008. It also mentions 8080 differences, where relevant. There are over 300 well-written pages filled with pertinent technical details. This book is an excellent reference for the hardware microcomputer designer. Software is not the focal point, although numerous subroutines are fully listed. It is obvious the author has designed, debugged and used everything about which he writes. Whew! After reading this book he has my utmost professional respect. Considering the dollar per hour fees paid for consultants, this book is a bargain. Format of the book is: a) description of the basic requirements and minimal circuitry to support an 8008 b) detailed descriptions of special topics, including: I/O port expansions beyond manufacturer's specifications, adding instructions to the 8008, simultaneous input and output with a single instruction, bus structures, RAMs and PROMs, a detailed application of computer controlled programming of the 74S288 which appears adaptable to the popular and low cost 74188A/8223 PROM, a comprehensive solu- tion for priority interrupt hardware, UART interface, keyboard interface, a com- plete A/D interface design with both single and multi- channel, interval timers, digital displays, etc. The last two chapters of the book describe four microcomputer circuits for the 8008: a nine- chip microcomputer, a $20 microcomputer, a seven-chip microcomputer, and a 19-chip microcomputer. Author Martin assumes only that a reader has knowledge of TTL. The book does not repeat information found in Intel manuals. It is well organized and does not try to snow. This book is easily read and well digested, except for the sheer quantity of information. Martin Research Ltd. sells the book directly at $50 and also is manufacturing a new series of microcomputer hobbyist kits. Judging by the quality of the book they should be excellent and without compromise. A comment in the recent Micro -8 Computer User Group Newsletter appears to bear this up: "It's a neat little machine . . ." John Gilchrist PO Box 1087 Glen BurneMD 21067 John Gilchrist is an independent consultant with Microprocessors Unlimited: /./Poo. 11 The Ins And Outs Of Volatile Memories Don Lancaster provides us with this discussion of some of the read/write memory techniques which are available to experimenters using readily available parts. In this background tutorial, Don discusses memory techniques from the simple gate flip flop to the bus-oriented RAM system using static memory circuits. For more detailed looks at the designs of circuits using some of the techniques in this article, readers should turn to Don's book, The TTL Cookbook, available from Howard W. Sams, Indianapolis IN. Tlie material in this article is abstracted from Chapter 3 of Don's forthcoming TV Typewriter Cookbook, also to be published by Sams. Unfortunately, there is no cheap and reasonable memory system available today that will both remember information forever and be able to read and write information rapidly, cheaply, and with reasonable timing signals. This is called the volatility problem. A memory is non-volatile if it remembers forever. A volatile memory loses its contents if you remove supply power or fail to observe any timing restrictions it might have. One older and obvious non-volatile memory system, of course, is magnetic core. The problem with core is that much in the way of support circuitry (including sense amplifiers, write after destructive read circuits, system timing generators, power down interrupts, etc.) makes core highly impractical for small scale TV typewriter and microcomputer systems. Sometimes you can gain non-volatility with a volatile memory by some system level tricks, such as a power down technique that holds a low voltage from a battery applied to the memory when the main supply power goes away. Newer CMOS RAM memories consume almost negligible power in the standby mode and lend themselves well to this. You can also transfer data to some non-volatile outside storage such as a cassette recorder or a magnetic disc. Read-write memory circuits can have their contents changed rapidly at system timing rates. This makes them useful for storing characters, computer programs, update commands, and anything else we want to temporarily store and recover. Most read-write by Don Lancaster Synergetics memory circuits are volatile, holding their information only as long as supply power remains present and so long as any timing restrictions are not ignored. Read-write memories for TVT and microcomputer use can range from single bit control and debouncing circuits up through thousand word character stores to 16k and 32 k microcomputer memory stems. Some of the more important memory types include the set-reset flip flop, the word storage latch, the shift register, the Random Access Memory or static RAM, micropower RAMs, and dynamic RAMs. Let's look at these in turn. Fig. 1 . Set-reset flip flops are the simplest type of read-write memory. 4011 CMOS 4001 CMOS (a) NAND gates (b) NOR gates. |00K 401 I CMOS 4050 CMOS H> I00K -OQ (c) Bounceless push-button. ONE SIXTH OF CIRCUIT SHOWN (d) Hex contact conditioning. 12 4013 CMOS O D Q O O »C O O 4027CMOS O J O o ► c O K O D C I O I 1 J" I TYPE D FLIP FLOP J K C o 5 J NO CHANGE 1 J 1 1 .0 J" 1 1 1 s CHANGES J-K FLIP FLOP Fig. 2. Clocked flip flops only change in response to a control signal called the "clock". Fig. 3. Word storage latches provide a handy way to keep track of multiple bits of data. 4013 CMOS The Set-Reset Flip Flop One of the simplest read-write storage systems is the set-reset flip flop. It can store only one bit of information, and may be built using the NOR gates of Fig. 1(a) or the NAND gates of Fig. 1(b). When set, the Q output goes and stays in the "1" condition. When reset, the Q output goes and stays in the "0" state. A complementary or Q output is also supplied — it's a "1" when Q is a "0" and vice versa. Simple set-reset flip flops have a hangup in that if you simultaneously try to set and reset them, they go into a disallowed state, and the final way they end up depends on the last input to be released. Fig. 1 (c) shows us how to use a set-reset flip flop to eliminate the mechanical noise and bouncing of a SPDT push-button or mechanical contact. The first instant the contact makes, the flip flop jumps to the "1" state and stays there till the first instant after the switch is completely released, eliminating any bounce, noise or chatter. Circuits of this type are absolutely essential anytime you want to enter data from a switch or mechanical contact into any digital system. Fig. 1(d) A major use of set-reset flips flops is to debounce switches. shows us a simple hex contact conditioner using one CMOS non-inverting buffer. The Storage Latch Operation of a set-reset flip flop is nearly instantaneous. If we tried to cascade a bunch of them, we'd get an unchecked wild race, for after changing the first one, the rest may follow domino style. It's much better to have digital circuits change only when you want them to and then do so on a one-stage-at-a-time orderly basis. To do this, we go to a clocked flip flop, such as the type D or JK flip flops of Fig. 2. With these devices, the D input or the JK inputs set up what the flip flop is to do, but the actual change isn't carried out till a certain edge or level of the clock input happens. With a "D" flip flop we can clock in a "1" or clock in a "0", most often on the positive edge of the clock. We can also divide by two with a D flop by cross coupling the Q output to the D input, making the logic block change states every clocking. With the JK flip flop, we have the options of clocking in a "1", a "0", doing absolutely nothing, or changing each and every state as a binary frequency divider. For convenience in use, most JK and D flip flops also have extra direct set and reset inputs; these operate immediately and are useful for clearing or initializing memory states. Word Storage One flip flop can only store one bit at a time. If we use flip flops in groups, we can store a multiple bit word at once. In Fig. 3(a), we use four D flops to store a 4-bit word. Data is entered on the leading (positive) edge of the clock. Figs. 3(b), 3(c) and 3(d) show how we can use larger MSI logic blocks to store words of four, six and eight bits in length. A word storage latch of this type is often handy to "catch" an input signal on the way by and hold it till you can use it. For instance, a microcomputer may output a word for only a microsecond or two, but your TVT circuit may not get around to using the word for milliseconds or even seconds later. In this case, you catch the microcomputer's output word with a storage latch and then keep it till you are certain you have used it. You then release the latch and ask the microcomputer for a new word through a handshaking signal. Another important use for word storage is to resynchronize data and make sure it is valid. As an example, suppose your system changes words every microsecond, but that the One bit of memory is one set- reset flip flop. Dlo— D C D c 5 D30 D c 5 D4<> D c 5 »Q3 0Q4 J" STORE (a) 4-bit word using D-flops. 4042 (CMOS) 4076 (CMOS) 74I74 (TTL) Dl o- D2°- D3o- D4o- D2 02 D3 03 04 04 CL T -OQI -OQ2 -O04 STORE J (b) 4-bit word using MSI. 74175 (TTL) 74CI75 (CMOS) WORD IN Dl 01 D2 02 03 03 D4 04 05 05 06 06 CL o o i > <. 1 WORD OUT STORE s (c) 6-bit word. 4034 (CMOS) 4508 (CMOS) (d) 8-bit word. 13 previous block that's giving you inputs takes 900 nanoseconds or so to get around to giving you a valid output after Its inputs change. This only gives you 100 nanoseconds or so of valid data and may change with temperature or supply voltage. Add a storage latch and you can catch this output and hold it for the entire next microsecond. The output data will always be one microsecond late, but it will always be valid and always be locked to your system timing. A word storage latch of this type may be needed between the memory and the character generator of a TV typewriter if very long line lengths are in use. Shift Registers We can cascade a stack of type D flip flops so that they pass on their contents one stage to the right each clocking. This is called a shift register, and Fig. 4 shows several examples. In Fig. 4(a), we've built a four stage register out of type D flip flops. Each clocking passes data one stage to the right. In Fig. 4(b), we've added some enter-recirculate logic to let us either send the data round and round or else change selected bits at once. We can make the register any length we like by adding extra internal storage flip flops. A shift register is the digital equivalent of a "delay line"- - your bits go in now and come out later. An "electronic disk memory" is an ex- tremely large memory made out of long shift registers - and is programmed by the computer almost exactly like an old-fashioned fixed head magnetic disk. In Fig. 4(c), we use a MSI integrated circuit arranged as an 8-bit parallel-in-serial-out shift register. Shift registers are useful to convert dot matrix dots to serial video in a TVT; they are also handy for converting data from parallel to serial form. Fig. 4(d) is the opposite; this is a serial-in-parallel-out shift register useful to convert serial data into parallel form. Finally, Fig. 4(e) shows us a 1024-bit serial-in-serial-out register, useful for storing bulk data. Use several of these side by side if larger words are to be stored. For instance, to store 1024 ASCI I characters, six of these could be used side by side. They can also be cascaded end to end for 1024, 2048, 4096 and more bits per word. There are lots of long MOS shift registers available. Other popular bit arrangements include the hex 32-bit and hex 40-bit shift registers, the 2518 and 2519. On the surface, shift registers would appear to be ideal for character and program storage in TV typewriter circuits. One of the earliest TVTs (see September 73 Radio Electronics) made extensive use of shift register storage, and similar registers are still used in many premium computer terminals. Today, we usually have a far better approach to data storage in the static random access memories of the next section. While these long shift registers were the first truly low cost semiconductor storage and are still useful for certain applications, they do have problems and the RAM techniques are often better. Many of the early shift registers were dynamic devices in which you had to keep the data moving above some critical rate. Most early clocking circuits required a waveform that had to come from a fast, high current, noisy clock driver, swinging 17 volts or more with very strict pulsewidth and spacing Fig. 4. Some shift register memories. Modern RAM memory devices tend to make shift registers obsolete except for special applications. 40l3(CMOS) D O C 5 D C 5 D O C D O C , DATA 'OUT r*t__Qj r H 1 - Q| r*U_Qj r* 1 Q (a) Four stage using type D flip flops. + 'RECIRCULATE OATAINO- SHIFT REGISTER IN OUT 4011 (CMOS) (b) Recirculate logic. LOAD/SHIFT „_ CONTROL SERIAL INPUT O- 4021 (CMOS) 74I65(TTL) abcdefgh UlUHls (c) Parallel in, serial out, 8-bit PARALLEL PUTS Pt nml |t- RALLEL JTPUTS SERIAL „ INPUT u a b c d e f g IN h CLR CLEAR _ INPUT ° ^r 4Dlb H.MUSJ 74164 (TTL) (d) Serial in, parallel out, 1024-bit. CLOCK O- RECIRCULATED SERIAL INPUTO- 2533 (PMOS) SERIAL OUTPUT __EXTERNAL_JU_MPER (e) Serial in, serial out, 1024-bit. 14 Set-reset flip flops are asynchronous— in systems where outputs affect inputs, use of an SR latch can send you off to the races— an uncontrolled oscillation. restrictions and any pulse overshoot strictly forbidden. Some earlier multiplexed shift registers, particularly the 1402, 1403 and 1404 exhibited selective dropouts called bit pattern sensitivity that would change data if the particular \C didn't happen to like the combination of clocking waveforms, supply voltage, temperature and internal data that it happened to have on hand. Newer static N channel shift registers have eliminated most of these problems, but they still have one key drawback: This is simply that you can't immediately get at the data you want. The memory must be clocked around once and exactly once to get back any bit. All the other bits are usually between you and the bit you are after. With the RAMs of the next section you can selectively pick off any bit at any time, rather than waiting till it comes around. More importantly, you can be extremely sloppy about your timing and addressing between the times you are actually using the data, and the RAM doesn't care. With a shift register, one missed timing pulse is a disaster. Additional limitations of shift registers as bulk storage devices are that they often cost more at system levels than do RAMs and that they are not directly microprocessor compatible. A bit is a bit. A word is "n" bits contemplated simultaneously. Two areas where we can continue to see shift registers as important TVT and microprocessor parts are in First In First Out or FIFO buffer memories such as the Fairchild 3341 (64 x 4) and the 33512 (40 x 9) and similar devices by AMI and Western Digital, and in the newly emerging cha rge coupled device bulk storage systems such as the Fairchild CCD450 (1024 x 9) and CCD460 (128 x 32 x 4) devices. A FIFO gives us a way to interface two systems having different data rates, while the CCD devices promise to eventually provide very low cost and dense bulk storage. Random Access Memory (RAM) A random access memory or RAM differs from a shift register in that we can get to any memory location any time we want. If we like, we can address our RAM shift register style, working with the storage cells in sequential order. But we don't have to — we can get at any cell at any time in any order. To do this, some external binary address lines are routed to internal decoder and selector circuits. When a memory cell is addressed, it is available either for reading as an output or for writing new information into it. Most RAMs tend to be only a single bit wide to save on package pins, but 4- and 8-bit words are sometimes offered. There are lots of RAMs available. Bipolar types using TTL technology are usually fast and expensive. They generally provide less dense storage and fewer bits per package. Two examples are the 7489 arranged as 16 words of four bits each and the 74200 arranged as 256 x 1, or 256 words of one bit per word. Both cycle in under 50 nanoseconds. MOS memories using PMOS, NMOS and CMOS are also widely available. These are often slower and cheaper per bit. They usually offer more bits per package, with up to 4096 bits being common and 16384 just being talked about at this writing. Two early and essentially obsolete examples of MOS memory were the 1101 that was a fully static 256 x 1 device and the 1103 that was a dynamic RAM organized 1024 x 1 that singlehandedly toppled "king core" from the computer world. The early 1101s ran extremely hot with weird supply voltages, while the early 1103s had incredibly complex clocking, refresh, and timing restrictions, besides being bit pattern sensitive. the best all around choice for TVT character storage and most smaller microcomputer memory tasks as well. The 2102 is arranged as 1024 x 1. It is N channel MOS and works on a single +5 volt supply and is fully compatible with TTL and CMOS logic on all pins. It is fully static, needing no clocks, refresh, charge pumps, memory busy interlocks, sense amplifiers, or similar garbage. Economy versions of the 2102 cycle in one microsecond, while premium jobs are available with 200 nanoseconds or less cycle time. Even the slowest 2102s are usually more than adequate for TVT use, although a bit slow for the newer microprocessors. Best of all, at this writing, 2102s cost under $5 in singles and as low as $2 in large quantities. While designed by Intel, sources today include just about everybody — Tl, Intersil, AMD, National, Signetics, Fairchild and Synertek. Fig. 5 shows us the Fig. 5. The 2102 is the ideal RAM for many TVT and microcomputer •5V 2102 (NMOS) I r^ DATA INO- 90- 80- 70- 60- ADDRESS SELECT LINES 50- 40- 3o- 20- WRITE o- ENABLE o- -ODATA OUT LOW WRITES; HIGH READS LOW ACTIVATES 1C After several generations connections to a 2102 of much improved MOS memory. We see a data input memories, a device called the pin, a data output pin, 10 2102 arrived and dropped address lines, a write line, and enough in price to often be an enable line. The data in 15 and data out lines are the same sense, meaning that a "1" input is stored as a "1 " and appears as a "1" at the output. Our 10 address lines select one of the 1 024 storage cells by providing binary addresses ranging from 00000-00000, 00000-00001 ...through 11 111-1 1110 and 11111-11111. We can mix up input address lines any way we want so long as all packages and all input address timing circuits agree on what address combination goes with what storage cell. Jumbling the memory address inputs sometimes helps the circuit layout and makes such things as efficient BCD (Binary Coded Decimal) rather than binary addressing feasible. Our chip enable controls whether the memory will do anything. If the chip enable is high, the data out line assumes a floating, high impedance, tri-state mode, and the write input logic is disabled. If the chip enable is low, the IC operates normally. Chip enable should stay grounded except in very special uses. The memory will read if the write input is high and will write if the write input is low. There is one important timing restriction on the write input — input addresses must be stable when the write input is low. To write into memory, apply input data and an input address. After the inputs are stable, bring the write input low for at least the minimum write time. This time varies from 100 to 700 nanoseconds depending upon the device. Then release the write input, letting it go high before you -o I OUT Even the slowest 2101s are usually more than adequate for TVT use — although a bit slow for the newer microprocessors. 2 IN i 3 IN . 5 IN i 6 IN < -O70UT 8 IN I -o3 0UT O4 0UT ■O5 0UT ONE LOW OF FOUR DECODER aTs^m^ll O I 23456789 IO II ADDRESS WRITE (a) 1 024 memory. x 8 character store (b) 4096 x 8 microcomputer memory. created by repeating the same circuit Fig. 6. Larger 21 02 memories are over and over. change the address inputs or the data inputs. If you try to change addresses during the write process, certain memory locations may get "flashed" by in the address decoding and could lose or alter data. Incidentally this write-only-when-stable rule applies not only to 2102s — it should be observed with practically all RAM circuits. For normal 2102 read operation, make the write input high and the chip enable low. Fig. 6 shows how we build a 1024 x 8 memory good for TVT character storage. Eight 2102s are simply put on the same PC card with their write, address and enable lines in parallel, the latter usually grounded. All inputs and outputs go to separate pins, and this way we can read or write 8-bit words. In Fig. 6(b), we've combined this circuit four times over to get a 4096 x 8 static memory suitable for a microprocessor main memory and big enough to hold a small compiler for an elementary higher level language. Two new address lines are one-of-four decoded and routed to the chip selects of each quarter of the memory. One chip select is made low and the other three remain high, and the tri-state outputs are shorted together as shown. A total of 32 ICs is needed. When building either type of memory card, lots of 0.1 microfarad bypassing capacitors are recommended, along with wide supply and ground runs. PC layout is usually simplest with a double sided board and through-the-pins lead routing. Use plated through boards and keep the through-the-pins routing on the component side if possible. Reorganized 2102s Sometimes shorter words of more bits per word may be desirable. For t hese applications, some manufacturers have reworked the 2102 into different organizations including 128 8-bit words and 256 4-bit words. The Motorola and AMI 6810 are typical 128x8 units in a 24-pin package. The Signetics 2606 is a 256 x 4 version in a 16-pin package. Since there aren't enough pins to go around, the 2606 shares common input and output lines and must be used with a bidirectional data bus system. The Intel 2101 is a 22-pin version of the same thing with separate input and output pins, while the 2111 is an 18-pin memory that needs a bidirectional input/output system. At this writing, costs of these devices are considerably higher than conventional 2102s and are likely to stay that way since they have larger packages and less availability. Nevertheless, they often save you enough packages to be worthwhile in smaller systems. Having only 8 address bits makes the 256 x 4 memories directly compatible with 8-bit microprocessors as well. Micropower Static RAMs We can also build CMOS random access memories similar to the 2102. CMOS has one major advantage — its standby power needed when the memory is not cycling is almost zero. This makes CMOS memories ideal for "non-volatile" storage where a small battery can fill in for extremely long term data holding, as well as safely handling routine power outages. CMOS memory cells tend to be physically larger than NMOS ones and more process steps are often involved. So, CM OS memories will probably remain a more expensive route, but a very attractive one where micropower memory is essential. Obvious applications include electronic checkbooks and remote data acquisition systems. Typical devices are the 64-bit Motorola 4505; 256-bit devices including the RCA 4061, Intersil 6523, and Motorola 4532 (the latter is arranged 64 x 4); 512-bit versions including the Nortec and AMI S2222, and the Intel 5105, arranged as 1024 x 1. 16 Dynamic RAMs A static RAM takes a full memory cell for data storage. We can get by with nothing but a capacitor as a storage device if we are willing to reshuffle, move around, or refresh the stored data more or less continuously. This is the principle behind the dynamic RAM. In exchange for cheap and dense storage, system level restrictions in the way of memory busy times, refresh cycles, clock lines, and clocking restrictions are needed, often combined with analog output sense amplifiers. Traditionally, any particular size RAM starts out as an impossible to use dynamic device, upgrades itself into a very difficult to use "quasi-static" device, and then gets replaced with a static no-hassle IC the third time around. Because of this, dynamic RAMs should be avoided entirely for all TVT and microcomputer usage. While there are a wide variety of yet unstandardized 4096 x 1 dynamic RAMs on the market, including the Electronic Arrays 1504, Intel 2107, Standard Microsystems 4412, Tl 4030, Mostek 4096, and the Motorola 6605, they presently cost much more than the equivalent storage using 2102s and are harder to get and harder to use. They do have the potential advantage of reducing package count 4:1 in very large memory systems where the 4096 x 1 format can be used, and are ideal for larger computer memories. Bus Organization Any memory system has input data lines, output data lines, and address data lines. It's usually simplest to keep these lines completely separate, for this way there are no timing commands needed to separate input, address and output signals, and no times can occur when one would interfere with the Traditionally, any particular size RAM starts out as an impossible to use dynamic device, upgrades itself into a difficult to use "quasi-static" device, and then gets replaced with a static no-hassle IC the third time around. Home brew computer people for the most part have to wait for the third stage or have a talent for wrestling with difficult hardware problems. At this writing, Ik memories are in stage 3, 4k memories are in stage 2, and 16k memories are at the beginning of stage 1 . other. This is called an isolated bus or separate I/O system. Many microcomputers instead use bidirectional data bus arrangements to save on pins and interconnections. The data bus just sits there. If something wants to transmit, its tri-state output is enabled. If something wants to receive, its input is enabled. The signals can go either way on the bus, but system timing has to make certain that only one source is transmitting and only the receivers for that source are responding to the transmitted information. We can convert an isolated bus system into a bidirectional bus system using bus transceiver integrated circuits as shown in Fig. 7. Transceivers are built into the 2606 and 2111 (they don't have enough pins to do otherwise), and may be externally added to regular 2102 type memories. In the case of a TV typewriter, it's usually desirable to keep the display and its memory source (either its own or the memory of a microcomputer) connected together; this eliminates dropouts when the bus is going downstream. Thus, the display electronics is best placed between the memory read outputs and the bus transceiver. Address lines can also share the same data bus as the input and output data lines, but this leads to extremely difficult timing, particularly in 8-bit systems. More often, the address bus will remain separate but will be able to accept address commands from several sources. These sources could include the TV typewriter's live scan timing, a cursor address for update during retrace, and an optional external dominant microcomputer control for rapid and wholesale screen changes. Fig. 7. Connecting a memory subsystem to a bidirectional input output bus is required in most microcomputer applications. ADDRESS I 2 3 4 5 6 7 8 BIDIRECTIONAL I/O BUS QUAD BUS TRANSCEIVERS 3440 , 26SI0.26SII ,8838, ETC. NON-INVERTING TYPES ARE ALSO AVAILABLE, SUCH AS THE 8833, ETC. 17 Ill lilt MMMITM Milt BILL GODBOUT ELECTRONICS BOX 2355, OAKLAND AIRPORT, CA 94614 V « L ■ «'L A ■ V »k * • «.~\ ••••v mi »m.\ _...«\. ••••V • •••K This ad is being prepared in mid-August, so we don't have all the details nailed down yet, However, we've had the system up and running for a couple of months now; it's sitting in Berkeley, executing instructions and waiting for its casing and front panel, Our target price for the kit? UNDER $600— and this includes audio cassette I/O, bit- serial interface for teletype, editor and assembler, IK X 16 INTEGRAL RAM, AS WELL as THE KEYBOARD, READOUTS, PANEL, POWER SUPPLY, AND MORE, FlNAL BIDS ON SHEET METAL WORK AND THE LIKE ARE DUE IN ANY DAY NOW; AND WE'VE JUST ABOUT DECIDED ON A NAME — -SO DON'T SEND IN ANY MORE SUGGESTIONS! THANKS TO ALL OF YOU WHO TOOK THE TIME TO ENTER OUR CONTEST, BY THE TIME THIS AD HITS THE NEWSSTAND, WE'LL HAVE A SYSTEM DATA PACKAGE AVAIL- ABLE AT SOME NOMINAL COST, We'LL KEEP YOU POSTED; THANK YOU FOR YOUR INTEREST AND SUG- GESTIONS, DM8097 DM8131 DM8544 DM8833 DM8837 DS0026 DS3608 8008 5204 $1,20 TRI-STATE HEX BUFFER $2.50 6 BIT UNIFIED BUS COMPARATOR WITH HI Z INPUTS AND HYSTERESIS $0.90 QUAD TRI-STATE SWITCH DEB0UNCER $1.90 QUAD TRI-STATE TRANSCEIVER WITH HYSTERESIS $1.85 HEX UNIFIED BUS RECEIVER WITH HYSTERESIS $3.00 DUAL CLOCK DRIVER $3,00 HEX TRI-STATE M0S TO TTL CONVERTER WITH PROGRAMMABLE INPUT CURRENT $17.95 POPULAR 8 BIT MICROPROCESSOR— IDEAL FOR PERIPHERAL CONTROL AT A BELIEVEABLE PRICE $24.50 SIMILAR TO 5203 (SEE BELOW), BUT 4K BITS WORTH OF ER0M SPECIAL! ORDERS POSTMARKED BEFORE NOVEMBER 30: 5203 2K EROH: ORGANIZE AS A 4X512 or 8X256 BIT MEMORY. FULLY PROGRAMMABLE AND ERASEABLE, COMPLETELY STATIC AND NON-VOLATILE. $9,95! ANOTHER SPECIAL! 8 BIT MICROCOMPUTER CHIP SET: 1-8008, 8-2102s (IK STATIC RAMS) FOR $32.50 • ll»ll«M*ll»ll»ll»ll»H»li»ll»ll«M».l»ll«M»M«ll»M»l>»M«ll»K»H«ll^ oWIREo 17 Conductor, color-coded; wire width interlead capacitance. °/\l6C.° This is a flat, multiconductor wire, available in multiples of 10 conduc- tors up to 100 conductors. Comes in 20 ft. lengths only . Cost is If per conductor foot; for example , a 20 conductor cable 20 ft. long = $4.00 •••••••••••••••• <>60CKET6 (G) Gold plated contacts (T) Bright tin 1 *t pin T. . . 1 1/$1 .95 I* pin G. .10/$1 .95 16 pin G..10/$3.75 24 pin T. . .5/$1 .95 28 pin T.. .5/51.95 **0 pin T...5/$2.9S LOW PROFILE SOCKETS: 16 pin G. . 10/$1 .95; ^O pin G..5/$2.95 USES A SHORT- 5 VOLT, 1 AMP POWER SUPPLY TO-3 REGULATOR FOR A STABLE, PROOF 5 VOLTS. LESS CASE, HARDWARE. $7.95 + 2 LBS. SHIPPING 2" PERMANENT MAGNET SPEAKER - IDEAL FOR ACOUSTIC COUPLERS AND OTHER AP- PLICATIONS. THREE FOR $2.50 + 1 LB. '♦OOO UF, 20V MALLORY CAPACITOR FOR LOGIC POWER SUPPLIES. $0.95 EACH. •••••••••••••••• plus shpg "ELECTRONIC PROJECTS FOR MUSICIANS is a new book, written by my friend Craig Anderton, which I heartily endorse for all electronic and musical types. The first four chapters tell how to identify and obtain parts, select and care for tools, and apply basic construction techniques; in short, an introduction to baste electronics a la Radio Amateur's Handbook. Chapter 5 contains 19 projects for mus leal /audio applications, and the book concludes with sections on troubleshooting and where to find more information. "I believe the book to be of equal interest to the neophyte and to more experienced electronic types. For the neophyte with musical know how the book provides a very understandable, practical, and readable insight into the world of elec- tronics which can do so much to extend his or her capability. For those already versed in electronics this book opens the door to the world of musical and electronic effects. J'm very enthused about the book and have enjoyed reading por- tions of it during Its creation; I believe it's an ideal primer for anyone interested in music/electronics regardless of their age or experience." „.., „ . ---Bill Godbout Includes a bound In Soundsheet recording that demonstrates the sounds of the book's projects. Forward by Joe Walsh. GGT YOUR MITtS OM A GODBOUT 4KX8MMKIT ©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©© © TRI-STATE BUFFERED OUT DRIVES 20 TTL LOADS FOR GOOD & © BUS DRIVE. LOW NOISE SUSCEPTIBILITY. EXTEND FEATURE, JJ © MEMORY PROTECT, ON BOARD VOLTAGE REGULATION. PRESENTS £ © 1 LPTTL LOAD TO ALTAIR AND OTHER BUSSES. PLATED-THRU <5 © INDUSTRIAL QUALITY BOARD, AS WELL AS THE OTHER NICE 9 £> THINGS YOU'VE COME TO EXPECT FROM OUR PRODUCTS. 9 BILL GOD r OUT ELECTRONICS BOX 2355, OAKLAND AIRPORT, CA 94614 4 Add $25 and we'll program. Add $15 and we ' 1 1 program. S(§DAILU ■ ■ i OKSTrWIKS [J&&M Sill § DISCOUNTS: BUY 100, TAKE 20% MICROPROCESSOR POWER SUPPLY Foldback current limiting power up clear signal, nought you might lik to know what's up our sleeves! BUY 1000, TAKE 30% CAVE) THANK YOU VERY MUCH FOR YOUR OVERWHELMING RESPONSE TO OUR SPECIAL! -I2v,2a +I2v. 2a 5v. IOa TARGET DATE: OCT. 1st TERMS: ADD 5 0* TO ORDERS UNDER $10; ADD SHIPPING AS SHOWN. CALIFORNIANS ADD TAX. SORRY, NO COD. TO PLACE YOUR MASTERCHARGE®/ BANKAMERI CARD® ORDERS, CALL OUR 24 HOUR ORDER LINE: (415) 357-7007. Computers Are RIDICULOUSLY SIMPLE! Did you just get hooked? Has the first reaction of bewilderment and perplexity set in as you begin to explore the ins and outs of computing? Nat Wadsworth of SCELBI Computer Consulting - makers of an Intel 8008 based packaged microcomputer system - provides us with this article on fundamentals of computer operation. The article is written with the Intel 8008 in mind as an example of a typical computer, but the principles involved apply to nearly any microcomputer you can find on the market. The material of this article is taken from the first chapter of author Wadsworth's SCELBI-8H/B User's Manual, one of the best documentation support packages among the various kit manufacturers. by Nat Wadsworth SCELBI Computer Consulting Inc. 1322 Rear, Boston Post Road MUford CT 06460 There have been numerous examples put forth over the years to illustrate the basic scheme behind the operation of computers. The scheme is deceptively simple and incredibly powerful. The power comes from the speed with which the machines can perform the simple operations. The fundamental concept of the computer is that it is a machine that is capable of doing two fundamental operations at very high speed: First it is able to obtain a piece of information from a storage area and perform a function as directed by the information it obtains; and secondly, based on its current status, it is able to ascertain where to obtain the next piece of information that will give it further "directions." This fundamental concept is the key to the operation of all digital computers and while it is a simple concept, it can be built upon to arrive at all the complex operations computers of today can perform. How this is done is what this article is about. One of the best analogies for describing a computer's basic operations is to consider a bank of boxes, similar to a bank of Post Office mail boxes. A piece of paper containing "directions" can be placed in each box. A person is directed to go to the bank of boxes, and after starting at a given place, to open each box, withdraw the piece of paper and follow the directions there-on. The boxes are labeled in an orderly fashion, and the person is also told that unless a piece of paper in a box directs otherwise, when the person is finished performing the task directed, they are to replace the paper in the box and proceed to open the next box. Note, however, that a piece of paper may give directions to alter the sequence in which the person is to open boxes. Fig. 1 shows a picture of a set of such boxes. Each box is labeled for identification. To present a view of a computer's operation, assume a person has been told to start at box A1 and to follow the directions contained on the pieces of paper in the boxes until a piece of paper containing the direction "stop" is found in one of the boxes. In this example the person finds the following "instructions": In box A1 is the message: "Take the mathematical value of 1 and write it down on a scratch pad. " Since the "instruction" in box A1 only pertained to some function that the person was to perform, and did not direct the person to go to some specific box, then the person will simply go on to the next box in the row. 20 Box A 2 contains the information: "Add the number 2 to any value already present on your scratch pad." The person will at this point perform an addition and have a total "accumulated" value on the pad of scratch paper. The accumulated value would be 3. Since there are no other directions in box A2, the operator would continue on to open box A3 which has the following message: "Place any accumulated mathematical value you have on your scratch pad into box H8. " Thus the person would tear the current sheet off the "scratch pad" and place it — containing the value "3" — into box H8. Note, though, that while the person was directed to place the accumulated value on the scratch pad into box H8, the person was not directed to alter the sequence in which to obtain new "instructions" so the person would proceed to open box A4 which contains the directive: "Take the mathematical value of 6 and place it on your scratch pad. " Going on to box A5 the person finds: "Add 3 to the present value on your scratch pad. " This is obviously just a "data word." The operator adds the value 6 from the previous box to the number 3, noting the calculation on the scratch pad and proceeds to open box A6: "Place any accumulated value you have on your scratch pad into box H7." The person thus would put the value "9" on a piece of paper (from the scratch pad) into the designated box and proceed to open box A7: "Get the value presently stored in box H8 and save the value on your scratch pad." This is a simple operation and the person proceeds to open up box A8: "Fetch the value in box H7. Subtract the value of your scratch pad from the value found in box H7. Leave the result on your scratch pad. " When the operator has performed this operation, the operator will have finished the "A" row and will then continue obtaining "instructions" by going to the "B" row and opening box Bl where more directions are found: "If the present value on your scratch pad is not zero go to box B3. " At this time if the person checks the scratch pad it will be found that the value on the scratch pad is indeed non-zero as the last calculation performed on the scratch pad was to subtract the value in box H8 from the value in box H7. In this example that would be: 9-3 = 6 Therefore the directions in box Bl for this particular case will tell the operator to "jump over" box B2 and go to box B3. For the sake of completeness, however, box B2 does contain an instruction, for had the value on the scratch pad been zero the operator would not have "jumped over" box B2 and would have found the following message inside box B2: "The values in box H7 and H8 are of equal value. STOP!" However, for the values used in this example, the person would have "jumped" to box B3 where the following directive would be found: "If the present value on your scratch pad is a "negative number" jump to box B5. " Since this is not currently the case the person will not "JUMP" to box B5, but will simply continue to open box B4 which contains: "The value in box H7 is larger than the value in box H8. STOP!" At this point the person has completed the "instruction sequence" for this example. It should be noted, however, that box B5 did contain the message: "The value in box H7 is smaller than the value in box H8. STOP!" This little example of a person opening up boxes and following the directions The basic scheme behind the operation of computers is deceptively simple and incredibly powerful. One of the best analogies for describing a computer's basic operations is to con- sider a bank of boxes, similar to a bank of Post Office mail boxes . . . A1 A2 A3 A4 A5 A6 A7 A8 B1 B2 B3 B4 B5 B6 B7 B8 C1 C2 C3 C4 C5 C6 C7 C8 D1 D2 D3 D4 D5 D6 D7 D8 E1 E2 E3 E4 E5 E6 E7 E8 F1 F2 F3 F4 F5 F6 F7 F8 G1 G2 G3 G4 G5 G6 G7 G8 HI H2 H3 H4 H5 H6 H7 H8 Fig. 1. A set of Post Office pigeon holes containing messages. 21 Fig. 2(a). The computer structure compared to the Post Office pigeon holes. POST OFFICE BOXES A1 A2 A3 M AS A6 A7 A8 B1 B2 B3 B4 BS B6 B7 B8 CI C2 C3 C4 C5 C6 C7 C8 Dl D2 D3 D4 D5 D6 D7 D8 El E2 E3 E4 E5 E6 E7 E8 Fl F2 F3 F4 F5 F6 F7 F8 G1 G2 G3 G4 G5 G6 G7 G8 HI H2 H3 H4 H5 H6 H7 H8 PERSON CENTRAL PROCESSING UNIT PAD & PENCIL A ACCUMULATOR contained in each one is very similar to the concept used by a computer. Note that each "instruction" is very short and specific. Also note that the combination of all the instructions in the example will result in the person being directed to solve the problem: Is 1 + X greater than, less than, or equal to: 6+ Y? For the reader can note, if the "data words" contained in boxes A2 and A5 for the example were changed, the sequence of "instructions" would still result in the person being told to "STOP" at the box that contained the correct answer. The reader can verify this by simply assuming that different numbers than those used in the example are in boxes A2 and A5 and going through the instruction sequence until told to "STOP." The example illustrates how a carefully planned set of directions, arranged such that they are performed in a precise sequence, can be used to solve a problem even though the "variables" (data) in the problem may vary. Such a set of "instructions" is often termed an "algorithm" by those in the computer field. The example solved a mathematical problem using the "algorithm," but the reader will find that "algorithms" can be devised to solve many problems on a computer that are not strictly mathematical! Any person learning a new skill must of necessity learn the vocabulary of the field in order to proceed to any great extent. You might think that it would be easier if everything was written in plain everyday words, but the truth of the matter is that specialized vocabularies do serve several useful functions. For one thing, they can greatly shorten the time that it takes to communicate ideas or concepts. In today's fast-moving world, that is of significance in itself. In addition, the limitations of the English language often result in a given word having a special meaning when it is used in the context of a particular subject. One must know the new meaning when it is used in such a manner. Fortunately, much of the computer vocabulary is very logically named. This is probably due partly to the fact that computers are of necessity extremely dependent on logic, and hence many persons who helped create the field — and by that fact were rather logically oriented themselves — seem to have had the logical sense to have named many of the parts and systems of computers and computer programs, in a logical manner. In the text which follows, two diagrams, Figs. 2(a) and 2(b), are used to demonstrate the analogy between the person taking "instructions" from a group of mail boxes and the basic operation of a real minicomputer. Fig. 2(a) shows the Post Office boxes, a figure representation of a person who is able to "fetch" and return the "instructions" or "data" from and to the boxes, and a "scratch pad" on which the person can make temporary calculations when directed to do so. In Fig. 2(b) are three interconnected boxes which form a "block diagram" of a computer. The uppermost portion of the "block diagram" is labeled the "memory." The middle portion is labeled the "central processor unit" or "CPU" for short. The lower part of the diagram depicts an "accumulator." The correlation between the two pictures is extremely simple. The "Post Office boxes" correspond to the "memory" portion of a real computer. The "memory" is a storage place, a location where instructions and data can be stored for long lengths of time. The "memory" can be "accessed." "Instructions" and/or "data" can be taken out of memory, operated on, and replaced. New "data" can be put into the "memory." A "memory" that can be "read from" as well as "written into" is called a "read and write memory." A "read and write memory" is often referred to as a "RAM" as an abbreviation. Many times it is feasible to have a "memory" that is only "read from." A memory that is never "written into," but is only used to "read from," is termed a "read only memory" and is abbreviated as a "ROM." For the present discussion the term "memory" will refer to a "read and write memory" ("RAM"). The figure of a person in Fig. 2(a) corresponds to the central processor unit in Fig. 2(b). The central processor 22 unit in a computer is the section that "controls" the overall operation of the machine. The "CPU" can receive (fetch) "instructions" or "data" from the memory. It is able to "interpret" the "instructions" it fetches from the memory. It is also able to perform various types of mathematical operations. It can also "return" information to the memory — for instance make deposits of "data" into the memory. The "CPU" also contains control sections that enable it to sequentially "access" the "next" location in memory when it has finished performing an operation, or, if it is directed to do so, to "access" the memory at a specified location, or to "jump" to a new area in memory from which to continue fetching "instructions." The pad of paper and pencil in Fig. 2(a) corresponds to the block titled "accumulator' in Fig. 2(b). The "accumulator" is a temporary "register" or "manipulating area" which is used by the CPU when it is performing operations such as adding two numbers. One number or p iece of information can be temporarily held in it while the central processor unit goes on to obtain additional instructions or data from memory. It is an electronic "scratch pad" for the CPU. The three fundamental units — the memory, central processor unit, and the accumulator — are at the heart of every digital computer system. Of course, there are other parts which will be added in and explained later, but these fundamental portions can be used to explain the basic operation of a digital computer which is the purpose of this article. The reader should learn the names of the basic parts of the computer as they are presented. Note how easy it is to remember the portions that have been shown. The "remembering" element is a "memory." The portion that does the "work" or processing is simply termed the "central processor unit," and the part that is used to accumulate information temporarily is aptly called the "accumulator!" The reader should now have a conceptual view of the concept behind a computer's operation and an understanding of the machine's most basic organization. It is simply a machine that can fetch information from a memory, interpret the information as an instruction or data, perform a very small operation, and continue on to determine the next operation that is to be performed. Each operation it is capable of doing is very tiny by itself, but when the many operations of a typical "program" are performed in sequence, the solutions to very complex problems can be obtained. It is important to remember that the computer can perform each little operation in just a few millionths of a second! Thus a program that might seem very large to a person — say one with many thousands of individual instructions — would only take a digital computer a few thousandths of a second to perform. The speed with which the computer can execute individual instructions is what gives the computer its seemingly fantastic capability. Fig. 2(b). Block diagram of a computer's fundamental components. MEMORY CENTRAL PROCESSOR UNIT (CPU) ACCUMULATOR It is now time to start delving into the actual physical manner in which a computer operates. How can a machine be constructed so that it is able to perform the processes of the central processor unit? While it will require a number of pages of text to explain the procedure, it is not nearly as difficult to understand as many people might suspect. The complexity of a computer when first viewed by a person is caused by the fact that it appears to consist of many hundreds of parts. It becomes much simpler when one understands that the hundreds of parts are really made up from a few dozen similar parts and they are carefully organized into just a few major operating portions. The reader is already familiar with the most fundamental portions. As fantastic as it may sound at first, a digital computer can be thought of as really nothing more than a highly organized collection of "on or off" switches! Yes, computers are constructed from electronic devices that can only assume one of two possible states! The electronic switches can be constructed in a variety of ways. For instance, the switch can be made so that the voltage at a given point is either high or low, or current through a device is either flowing or not flowing, or flowing in one direction, and then the other direction. But, regardless of how the electronic switch is constructed, its status can always be represented as being either "on" or "off." This "on" or "off" status can be mathematically symbolized most suitably by a mathematical system based on "binary" notation. Some people tend to think that computers are very difficult to understand because they have heard of ''strange'' types of mathematics that are often 23 As fantastic as it may sound at first, a digital computer can be thought of as really nothing more than a highly organized collection of "on or off" switches! referred to in conjunction with computers. In actuality much of the mathematics that are dealt with in computer technology are much easier to understand and deal with than the decimal system that the average person is familiar with. In the decimal numbering system a person must learn 10 different symbols, and in order to manipulate those symbols, they must memorize a lot of information. For instance, look at how students are taught to multiply. The learning process actually involves the student having to memorize a rather large number of facts. Because of the way it is typically taught, most students never realize how much work they have to go through just to learn the multiplication tables! The teacher does not stand up and say, "OK, now you are going to memorize about 100 facts." Instead, over a period of a few weeks or so, the student is made to memorize the 100 or so facts — a few at a time. The student must learn the value of each digit multiplied by all the other digits in the decimal numbering system. The decimal numbering system is far more complicated for the beginner than learning the binary numbering system, and the binary numbering system is the one utilized by computers at their most basic functioning level. The reason the computer uses the binary system is because it is the simplest system around and hence the easiest one with which to construct a computing machine! Readers know the word "binary" indicates "two." Computers are built up of electronic switches that can only have two possible states. The switches are binary devices. The status of the switches can be represented mathematically utilizing the "binary" numbering system. The binary numbering system only has two digits in it! They are zero (0) and one (1). A switch can thus be mathematically symbolized, for instance, by a zero when it is "off" and a one when it is "on." The opposite relationship could also be established, a one could be used to represent a switch being "off" and a zero used to represent a switch as "on." It would make no difference mathematically which convention was used as long as one was consistent. For the purposes of the present discussion, the reader can assume that the first convention (switch off = 0, switch on = 1) will be used. It should be immediately apparent that working with a numbering system based on only two integers will be a lot easier than working with one having 10 integer symbols. In fact, most problems for people learning the binary system come about because they tend to forget how simple it is, and they tend to keep going towards a decimal solution out of habit when they are working with the binary system. For instance, when one starts to add binary numbers, as soon as the value "I " is exceeded, a "carry" to the next column must be made. The value of the addition of "1 + 1" in the binary system is: 10. It is not 2! There is no such integer as "2" in the binary numbering system. However, when a person who has worked with the decimal system for years first starts working with the binary system, old decimal habits tend to get in the way. The reader will have to beware! To formally introduce the binary mathematical system one can start by stating that it uses two integers, zero (0) and one (1 ), and no others. A binary number has a value determined by the value of the integers that make up the number, and the position of the digits. In the decimal numbering system, the reader is familiar with the location of a digit having a "weighted" value as follows: A three digit number has a value determined by the unit value of the digit in the right-most column plus the value of the digit to the left of it multiplied by 10, plus the value of the third digit multiplied by one hundred as illustrated in the following example: THE DECIMAL NUMBER 345 IS EQUAL TO: 5 UNITS = 5 PLUS(+) 4TIMES 10 = 40 PLUS(+) 3 TIMES 100 = 300 In other words, after the right-most column (which has the value of the digit), each column to the left is given a weighting factor which increases as a power of the total number of digits utilized by the numbering system. Note that in the above example the 4 representing 40 units is equal to 4 times the number of integer symbols in the decimal system (10) because it is located in the second column from the right. The number 3 representing 300 units is equal to 3 times the number of integer symbols in the decimal system squared because it is located in the third column from the right. This relationship of the weighted value of the digits based on their position can be described in mathematical shorthand as follows: If the number of different integer symbols in the numbering system is U (for the decimal system U=10) and the column whose weighted value is to be determined is column number M (starting with the right- most column and counting to the left) and any digit is represented by the symbol X then the weighted value of a digit in column M is expressed as: X times U raised to the power (M-1) orXU(M-1) The reader can easily verify that the above formula applies to the decimal numbering system. However, the above formula is a general formula that can be used to determine the weighted positional value of any numbering system. It will be used to determine the weighted positional values of numbers in the binary numbering system. In the binary numbering system there are just two different integer symbols (0 24 and 1). Thus U in the above formula is equal to 2. For illustrative purposes assume the following binary number is to be analyzed: 1 01 and it is desired to determine its value in terms of decimal numbers. (Remember its binary value is just 10 1). Using the above formula for the digit in the right-most column: M is equal to 1, thus (M-1) is equal to 0, and with X = 1: Weighted Value = X . u( M - 1 ) = 1 . 2° = 1 (Remember that any number raised to the zero power is equal to 1.) Going on to the next digit it can be seen that the weighted value is simply 0! Finally, the digit in the third column from the right has the weighted value because of its position: Weighted Value = X . u( M " 1 ) = 1.2(3-D = 2 2 = 4 Then, by adding up the sum of the weighted values (similar to that done for the decimal example earlier) one can see that the decimal equivalent of 1 1 binary is 5: THE BINARY NUMBER 101 IS EQUAL TO: 1 UNITS = 1 + TIMES 2 = + 1 TIMES 4 = 4 and thus 1 1 in the binary numbering system is the same as 5 in the decimal numbering system. There will be more to learn about the binary numbering system. However, the brief information given will be enough to continue on with the discussion that this section is primarily concerned with — the basic operation of a computer. Since the reader is now aware that a computer is composed of numerous electronic switches and knows that one can use a mathematical shorthand to represent the status of the switches (whether they are "on" or "off"), and is also aware of the fundamental concept behind a computer's operation, it is now possible to proceed to show how electronic switches can be arranged to build a functional computer. That is, how the electronic switches can be arranged and interconnected in a fashion that will allow a machine to "fetch" a piece of information from a "memory" section, decode the information so as to determine an "instruction," and also determine where to obtain the next instruction or additional "data." To begin this part of the discussion it will be beneficial for the reader to picture a group of cells (similar to the Post Office boxes shown earlier) arranged in orderly rows as shown in Fig. 3. This time, instead of each cell holding a complete instruction, it can be understood that each cell WORD #1 WORD #2 WORD #3 WORD #4 WORD #5 WORD #6 WORD #7 WORD #8 only represents part of an instruction and that it takes a whole row of cells to make up an instruction. Furthermore, each cell may only contain the mathematical symbol for a one (1) or a zero (0) — or, in other words, its contents represent the status of an electronic switch! At this time a few more computer technology definitions will be illustrated. In Fig. 3, each box containing a binary 1 or represents what is called a "bit" of information. While each cell may only contain one piece of information at a time, a cell can actually represent one of two possible states of information. This is because the cell can be in two possible states — it either contains a zero or a one. If one starts assigning positional values to the cells in a row, it can be seen that the total number of possible states in one row will increase rapidly. For instance, two cells in a row can represent up to four states of information. This is because two cells side-by-side, containing either a or 1 in each cell can have one of the following four states at a particular moment in time: 1 The decimal numbering system is far more com- plicated for the beginner than learning the binary numbering system, and the binary numbering system is the one utilized by computers at their most basic functioning level. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Fig. 3. An array of electronic cells, 8 bits per cell. 25 The combination of the eight cells can be filled with zeros and ones in 256 different patterns. 0, 1, 1 1, or 0. Three cells in a row can represent up to eight states of information as the possible states of three cells side-by-side are: 0, 01, 01 0,01 1,1 00,1 01, 1 1 0, 1 1 1. In fact, when each cell can represent a binary number, the total number of states of information that a row of "N" cells can represent is: 2 to the Nth power, 2 n . Thus, a row of eight binary cells can represent 2 to the eighth (256) states of information! That is, the combination of the eight cells can be filled with zeros and ones in 256 different patterns! A group (row) of cells in a computer's memory is often referred to as a "word." A "word" in a computer's memory is a fixed size group of cells that are "accessed" or manipulated during one operational cycle of the central processing unit (CPU). The CPU will effectively handle all the cells in a ''word" in memory simultaneously whenever it processes information in the memory. Digital computers can have varying "word lengths" depending on how they are engineered. Many microcomputers have a memory word size consisting of eight cells. The number of cells in a word, and the number of words in a computer's memory have a lot to do with the machine's overall capability. In the typical microcomputer system, the memory is available in modules — groups of words which can be plugged into a common set of wires in the system. With current LSI technology, a typical module of moderate price has 1024 bytes in an 8-bit computer system. With the 8008 oriented design serving as the basis for this article, one could potentially plug in 1 6 such modules for a total of 16,384 bytes or 131,072 bits. Thus, a large amount of information can be "stored" in the computer's memory at any one time. The astute reader may have already figured out a very special reason for grouping cells into "words" in memory. It was pointed out earlier that a row of eight cells could represent up to 256 different patterns. Now, if each possible pattern could be "decoded" by electronic means so that a particular pattern could specify a precise "instruction" for the central processor unit, then a large group of "instructions" would be available for use by the machine. That is exactly the concept used in a digital computer. Patterns of ones and zeros organized into a computer "word" are stored in memory. The CPU is able to examine a word in memory and decode the pattern contained therein to determine the precise operation that it is to perform. Most micro- computers do not decode every one of the possible 256 patterns that can be held in a row of eight cells as an instruction. They have an "instruction set" of over 100 "instructions" which are represented by different patterns of ones and zeros in an eightcell memory "word." Each pattern that represents an "instruction" can be decoded by the CPU and will cause the CPU to perform a specific function. Details of all the functions a computer can perform are usually found in the manufacturer's documentation. There is another ingredient necessary for making the machine "automatic" in operation. That is that the CPU must "know" where to obtain the next "instruction" in memory after it completes an operation. That function is greatly aided by having the memory cells grouped as "words." The reader should note that in Fig. 3 each group of cells representing a word was labeled as: "word #1," "word #2," etc. There is a special portion of the central processor unit that is used to control where the next word containing an instruction in memory is located. This special part is commonly referred to as the "program counter." One reason it was given the name "program counter" is because most of the time all it does is count! It counts memory words! Each word in memory is considered to have an "address." In Fig. 3 each word was given an "address" by simply designating each word with a number. Word #1 has an "address" of 1. Word #2 has an address of 2, etc. The "program counter" portion of the CPU keeps tabs on where the CPU should obtain the next instruction by maintaining an "address" of the word in memory that is to be processed! About 90% of the time all the program counter does is "increment" the value it has each time the CPU finishes doing an operation. Thus, if the computer were to start executing a simple program that began by its performing the instruction contained in "word #1" in memory — the very process of having the machine start the program at that location in memory would cause the program counter to assume a value of 1. As soon as the CPU had performed the function the "program counter" would increment its value to 2. The CPU would then look at the program counter and see that its next instruction was located in word #2 in memory. When the instruction in word #2 has been processed the "program counter" would increment its value to 3. This process might continue uninterrupted until the CPU found an instruction that told it to "STOP." A sharp reader might be starting to ask, "Why have a program counter if each instruction follows the next?" The answer is simply that the availability of a "program counter" gives the freedom of not having to always take the instruction at the next "address" in memory. This is because the contents of the "program counter" can be changed when the CPU detects an "instruction" that directs it to do so! This enables the computer to be able to "jump" around to different sections in memory, and as will become apparent later, greatly increases the capability of the machine. 26 Fig. 4. The program counter of an 8008 based machine. 13 12 11 10 9 8 7 6 5 4 3 2 1 The "program counter" is actually just a group of cells in the CPU that may contain cither a binary zero or one. The binary value in the row of cells that constitute the program counter determines the "address" of a word in memory. Since the number of words in memory can be very large, and since the program counter must be capable of holding the address of any possible location in memory, the number of cells in a row in the program counter is larger than the number of cells in a word in memory. In an 8008 oriented computer design, for example, the number of cells in the program counter is 14. Since 2 to the 14th power is 16,384, the program counter can present up to 16,384 different patterns. Each pattern can be used to represent the "address" of a word in memory. Fig. 4 illustrates what the contents of the program counter would look like when it contained the address for a specific word in memory. The address the example displays is "address 0" which can be considered the first word in memory. The reader should note that an address of zero can actually represent a word in memory! Earlier it was stated that some "instructions" can actually change the value of the program counter and thus allow a program to "jump" to different sections in memory. However, the reader now knows that a word in memory only contains eight cells, and yet the program counter of an 8008 based computer contains 14 cells. In order to change the entire contents of the program counter (by bringing in words from memory), it is necessary to use more than one memory word! This can be done if the program counter is considered to actually be two groups of cells connected together. One group contains eight cells, and the other six. In order to change the contents of the entire program counter, one whole eight cell word could be read from a memory location and placed in the right-hand group of eight cells of the program counter. Then another eight cell word could be read from memory. Since only six more cells are needed to finish filling the program counter, the information in two of the eight cells from the second word brought in from memory could be "discarded." If the information in the two left most cells of the word in memory were thrown away then the remaining six cells would contain information that could be placed in the six unfilled locations in the program counter. Most of the common 8-bit micro- computers use a similar scheme of breaking an address into two pieces when the program counter is loaded in a jump instruction. In order to make it easier for a person working with the machine to remember "addresses" of words in memory, a concept referred to by computer technologists as "paging" is utilized. "Paging" is the arbitrary assignment of "blocks" of memory words into sections that are referred to figuratively as "pages." The reader should realize that the actual physical memory unit consists of all the words in memory — with each word assigned a numerical address that the machine utilizes. As far as the machine is concerned, the words in memory are assigned consecutive addresses from There is a special portion of the central processor unit (CPU) that is used to control where the next word containing an instruction in memory is located — the "program counter." Most of the time all it does is count! word #0 on up to the highest word # contained in the memory. However, people using computers have found it easier to work with addresses by arbitrarily grouping "blocks" of words into pages. For example in the Intel 8008 "pages" are considered to be "blocks" of 256 memory words. The first memory word address in an 8008 system is at address zero (0). Programmers could refer to this word as word #0 on page #0. The 256th word in memory as far as the computer is concerned has an address of 255. (Note: Since the address of is actually assigned for the first physical word in memory, all succeeding words have an address that is one less than the physical quantity!) A programmer could refer to this word as word #255 on page #0. The 257th word in memory has an absolute address of 256 ("n"th word minus one since location contains a memory word) as far as the machine is concerned, but a programmer could refer to that word location as being on page #1 at location 0! Similarly, the 513th word in memory, when the paging concept is used, becomes word #0 on page #2 for a programmer — but it is just 512 as far as the machine is concerned. Paging at multiples of 256 is a convenient tool when dealing with any 8-bit micro- computer. The reader might have noted a nice coincidence in regards to the assignment of "paging" in 8-bit computers. Each "page" refers to a 27 "block" of memory words that contains 256 locations (0 to 255). The reader will recall that that is exactly the number of different patterns that can be specified by a group of eight binary cells, and there are eight binary cells in a memory "word." The relationship is more than coincidental! Note that now one has devised a convenient way for a person to be able to think of memory addresses and at the same time be able to specify a new address to the program counter that will still result in it containing an "absolute" address that the machine can use. For instance, if it was desired to change the contents of the 1 4 cell program counter from an absolute address of word #0, say to word #511, the following procedure could be used: The programmer would first specify an instruction that the CPU would decode as meaning "change the value in the program counter." (Such an instruction might be a "jump" instruction in the instruction set.) Following that instruction would be a word that held the desired value of the "low order Fig. 5. The program counter with address 511 represented in binary notation. 13 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 address" or word # within a "page." Since a memory word only has eight cells, since eight cells can only represent 256 different patterns, and since one of the patterns is equivalent to a value of zero, then the largest number the eight cells can represent is 255. However, this is the largest word #that is contained on a page. This value can be placed in the right-most eight cells of the program counter. Now it is necessary to complete the address by getting the contents of another word from memory. Thus, immediately following the word that contained the "low address" would be another word that contained the "page #" of the address that the program counter was to contain. In this case the page number would be 1. When this value is placed in the left six cells of the program counter the program counter would contain the pattern in Fig. 5. If desired, the reader can verify by using the formula presented previously for determining the decimal value of a binary number, that the pattern presented in Fig. 5 corresponds to 51 1, and thus, by using the "page #" and "word # on the page," each of which will fit in an eight cell memory word, a method has been demonstrated that will result in the program counter being set to an absolute address for a word in memory. Fig. 6 provides some examples as a summary. By now the reader should have a pretty good understanding of the concepts regarding the organization of memory into electrical cells which can be in one of two possible states, the grouping of these cells into "words" which can hold patterns which the CPU can recognize as specifying particular operations, and the operation of a "program counter" which is able to hold the "address" of a word in memory from which the CPU is to obtain an instruction. It is now time to discuss the operation of the "scratch pad" area for a computer — the accumulator (and some PAGE#o /\ WORD#0 ABSOLUTE ADDRESS IN THE PROGRAM COUNTER 1ST PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: Fig. 6. Examples of addresses in an 8008 based system. PAGE#0 —\ I 1111 WORD £255 1 1 ABSOLUTE ADDRESS IN THE PROGRAM COUNTER PAGE #1 WORD^O 000001 0000000 ABSOLUTE ADDRESS IN THE PROGRAM COUNTER 256th PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: 255 257th PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: 256 PAGE =1 WORD=1 1 I — 1 ABSOLUTE ADDRESS IN THE PROGRAM COUNTER 258th PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: 257 28 additional "manipulating registers" in the typical 8008 based computer). As was pointed out earlier, there is a section of a computer that is used to perform calculations in and which can hold information while the CPU is in the process of "fetching" another instruction from the memory. The portion was termed an "accumulator" because it could ''accumulate'' information obtained from the CPU performing a series of instructions until such time as the CPU was directed to transfer the information elsewhere (or discard it). The accumulator is also considered to be the primary "mathematical" center for computer operations for it is the place where additions, subtractions, and various other mathematically oriented operations (such as Boolean algebra) are generally performed under program control. The concept of an "accumulator" is not difficult to understand and its physical structure can be readily explained. The actual control of an accumulator by the CPU can be quite complex, page #1 but these complex electronic manipulations do not have to be understood by the computer user. It is only necessary to know the "end results" of the various operations that can be performed within an accumulator. The accumulator in an Intel 8008 based machine can be considered as a group of eight "memory cells" similar to a "word" in memory except that the information in the cells can be manipulated in many ways that are not directly possible in a word in memory. Fig. 7 shows a collection of eight binary cells containing ones and zeros to represent an accumulator. The cells are numbered from left to right starting with "B7" down to "B0." The designations refer to "bit positions" within the accumulator. Note that the right-most cell is designated B0 and the eighth cell (left-most cell) is designated B7. The reader should become thoroughly familiar with the concept of assigning the reference of "zero" to the right-most bit position in a row of cells (similar to the WORD#2 - 1 i 10 1 ABSOLUTE ADDRESS IN THE PROGRAM COUNTER PAGE #1 WORD #255 x\ /\ 1 1 1 I 1 1111111 1 1 1 ABSOLUTE ADDRESS IN THE PROGRAM COUNTER PAGE #2 WORD ±0 1 — ^ , , ^ 1 0010000000 ABSOLUTE ADDRESS IN THE PROGRAM COUNTER PAGE =3 Fig. 7. The accumulator, pictured with binary 10101010 (decimal value 1 60) in its 8 bits. B7 B6 B5 B4 B3 B2 B1 B0 1 1 1 1 concept of assigning a reference of zero to the first address of a word on a page in memory) as the convention is frequently used by computer technologists. The convention can be confusing for the beginner who fails to remember that the physical quantity is one more than the reference designation. The convention of labeling the first physical position as zero makes much more sense once the reader learns to think in terms of the binary The accumulator simply holds a number-it adds and subtracts-and "ro- tates" its contents. ABSOLUTE ADDRESS IN THE PROGRAM COUNTER 259th PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: 258 512th PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: 511 513th PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: 512 1024th PHYSICAL WORD IN MEMORY HAS AN ABSOLUTE ADDRESS OF: 1023 numbering system and thoroughly realizes that the "zero" referred to so frequently in computer work when discussing actual operations actually represents a physical state (the status of an electronic switch) and does not necessarily imply the mathematical notion of "nothing." The concept of assigning a bit designation to the positions of the cells within the accumulator will allow the reader to follow explanations of various accumulator operations. One of the most fundamental and most often used operations of an accumulator is for it to simply hold a number while the CPU obtains a second operator. In an 8008 type of machine the accumulator can be "loaded" with a value obtained from a location in memory or one of the "partial accumulators." It can then hold this value until it is time to perform some other operation with the accumulator. (It will become apparent later that the accumulator of an 8008 can also receive information from external devices.) Perhaps the second most often used operation of an accumulator is to have it perform mathematical operations such as addition or subtraction with the value it contains at the time the function is performed and the contents of a memory location or one of the "partial accumulators." Thus if the accumulator contained 29 Fig. 8. Adding the content of a memory word to the accumulator. B7 B6 B5 B4 B3 B2 B1 BO 1 1 1 1 1 ORIGINAL CONTENTS OF THE ACCUMULATOR CONTENTS OF THE SPECIFIED WORD IN MEMORY FINAL RESULTS AFTER THE ADDITION IN THE ACCUMULATOR the binary equivalent of the decimal number 5, and an instruction to add the contents of a specific memory location which contained the binary equivalent of the decimal number 3 was encountered, the accumulator would end up with the value of 8 in binary form as shown in Fig. 8. Perhaps the next most frequently used group of operations for the accumulator is for it to perform ''Boolean" mathematical operations between itself and/or other "partial accumulators" or words in memory. These operations in the typical microcomputer include the logical "and," "or," and "exclusive or" operations. Another important capability of the accumulator is its ability to "rotate" its contents. In an 8008, as in many micros, the contents of the accumulator can be rotated either to the right or left. This capability has many useful functions, and is one method by which mathematical multiplication or division can be performed. Fig. 9 illustrates the concept of "rotating" the contents of the accumulator. The astute reader may notice that the accumulator rotate capability also enables the accumulator to emulate a "shift register" which can be a valuable function in many practical applications of the computer. The accumulator serves another extremely powerful function. When certain operations are performed with the accumulator the computer is capable of examining the results and will then "set" or "clear" a special group of "flags." Other instructions can then test the status of the special "flags'' and perform operations based on the particular setting(s) of the "flags." In this manner the machine is capable of "modifying" its behavior when it performs operations depending on the results it obtains at the time the operation is performed! In an 8008 based computer, there are four special flags which are manipulated by the results of operations with the accumulator (and in several special cases by operations with "partial accumulators"). These four flags are described in detail below. Other micros have similar condition flags. The "carry flag" can be considered as a one bit (cell) extension of the accumulator register. This flag is changed if the contents of the accumulator should ''overflow" during an addition operation (or ''underflow" during a subtraction operation). Also, the "carry bit" can be utilized as an extension of the accumulator for certain types of "rotate" commands. The "sign flag" is set to a logic state of "1" when the most significant bit (MSB) of the accumulator (or partial accumulator) is a "1" after certain types of instructions have been performed. The name of this flag derives from the concept of using two's complement arithmetic in a register where the MSB is used to designate the sign of the number in the remaining bit positions of the register — conventionally, a "1 " in the MSB designates the number as a "negative" number. If the MSB of the accumulator (or partial accumulator) is "0" after certain operations, then the "sign flag" is zero (indicating that the number in the register is a positive number by two's complement convention). The "zero flag" is set to a logic state of "1" if all the bits in the accumulator (or partial accumulator) are set to zero after certain types of operations have been executed. It is set to "0" if any one of the bits is a logic one after these same operations. Thus the "zero flag" can be utilized to determine when the value in a particular register is zero. The "parity flag" is set to a "1" after certain types of operations with the accumulator (or partial accumulators) when the number of bits in the register that are a logic one is an even value (without regard to the positions of the bits). The "parity flag" is set to "0" after these same operations if the number of bits in the register that are a logic one is an odd value (1, 3, 5 or 7). The "parity flag" can be especially valuable when data from external devices is being received by the computer to test for certain types of "transmission errors" on the information being received. In its simplest form, a group of switches can be used as an input de- vice and a group of lamps as an output device! In addition to the full accumulator previously discussed there are six other 8 bit registers in the Intel 8008 computer referred to as "partial accumulators" because they are capable of performing two special functions normally associated with an accumulator (in addition to simply serving as temporary storage registers). The full accumulator will often be abbreviated in this manual as "ACC" or "register A." The six "partial accumulators" will be referred to as "registers B, C, D, E, Hand L" 30 Registers B, C, D, E, H and L of an 8008 are all capable, upon being directed to do so by a specific instruction, of either incrementing or decrementing their contents by one. This capability allows them to be used as "counters" and "pointers" wh ic h are often of tremendous value in computer programs. What makes them especially valuable in 8008 architecture is that when their contents are incremented or decremented the immediate results of that register will affect the status of the "zero," "sign," and "parity" flags discussed above. Thus it is possible for the particular contents of these registers to affect the operation of the computer during the course of a programs operation and they can be used to "guide" or modify a sequence of operations based on conditions found at the actual time a program is executed. It should be noted that registers B, C, D, E, H and L are capable of being incremented and decremented — but the full accumulator — register A — cannot perform those two functions in the same manner. (The full accumulator can be incremented or decremented by any value by simply adding or subtracting the desired value. There is not, however, a simple increment or decrement by one instruction for use with the full accumulator of an 8008!) Two of the partial accumulators, registers H and L, serve an additional purpose Fig. 9. Rotating the content of the accumulator. B7 B6 B5 B4 B3 B2 B1 BO 1 1 1 1 1 ORIGINAL CONTENTS OF THE ACCUMULATOR (EQUAL TO DECIMAL 2) RESULT WHEN THE ACCUMU- LATOR IS ROTATED TO THE LEFT ONE TIME (VALUE NOW EQUAL 4) RESULT WHEN THE ACCUMU- LATOR IS NOW ROTATED TO THE RIGHT TWO TIMES (VALUE NOW EQUAL 1) NOTE THAT IF A ROTATE RIGHT COMMAND IS DONE AGAIN THAT THE "1" IN POSITION B WILL APPEAR ATB7!! AND THAT NOW A ROTATE LEFT COMMAND WOULD RESTORE THE "1" IN POSITION B 7 BACK TO B ! in the 8008 computer CPU. These two registers can be used to directly "point" to a specific word in memory so that the computer may obtain or deposit information in a different part of memory than that in which a program is actually being executed. The reader should recall that a special part of the central processor unit (CPU) termed the program counter is used to tell the computer where to It has been said that the computer is the most versatile machine in existence and that its applications are limited only by man's ability to develop programs that direct the operation of the machine. obtain the next instruction while executing a program. The program counter was effectively a "double word length" register that could hold the value of any possible address in memory. The program counter is always used to tell the machine where to obtain the next instruction. However, it is often desirable to have the machine obtain some information — such as a "data word" — from a location in memory that is not connected with where the next instruction to be performed is located. This can be accomplished by simply loading "register H" with the "high address" (page) portion of an address in memory, then loading "register L" with the "low address" portion of an address in memory, and then utilizing one of a class of commands that will direct the CPU to fetch information from- or deposit information into the location in memory that is specified ("pointed to") by the "H" and "L" register contents. This information flow can be from/to the location specified in memory and any of the CPU registers. At this time it would be beneficial for the reader to study Fig. 10. Fig. 10 is an expanded block diagram of Fig. 2(b) and shows the units of the computer which have been presented in the previous several pages. Until now no mention has 31 The computer's great versatility comes about because the machine is capable of executing a large group of instruc- tions in an essentially limitless series of combinations. been made of how information is put into or received from a computer. Naturally, this is a very vital part of a computer because the machine would be rather useless if people could not put information into the machine upon which calculations or processing could be done, and receive information back from the machine when the operations(s) had been performed! Communications between the computer and external devices — whether those devices be simple switches, or transducers, or teletype machines, or cathode-ray- tube display units, or keyboards, or "mag-tape" and "disk" systems — or whatever, are commonly referred to as input/output operations and are collectively referred to in abbreviated form as "I/O" transfers. In the Intel 8008 computer designs all "I/O" transfers are typically made between external "I/O ports" (which connect to external devices via appropriate electronic connections) and the full accumulator in the Fig. 1 0. The block diagram of Fig. 2(b) filled in with the designations for an Intel 8008 computer. MEMORY 10 10 00000000 1 110 111 1 10 1 111110 11111111 WORD #1 AT PAGE LOC WORD #2 AT PAGE LOCI WORD #3 AT PAGE LOC 2 WORD #X AT PAGE Y LOC Z PROGRAM COUNTER CENTRAL PROCESSOR UNIT FLAGS. "C,""Z,""S," &"P" AN 8008 CPU WITH PROGRAM COUNTER AND REGISTER STATUS FLAGS REGISTER "A" REGISTER "B" REGISTER "C" REGISTER "D" REGISTER "E" REG "H" & MEMORY PAGE POINTER REG "L" & LOW ADDRESS POINTER : FULL ACCUMULATOR ' PARTIAL ACCUMULATOR : PARTIAL ACCUMULATOR ■ PARTIAL ACCUMULATOR ■■ PARTIAL ACCUMULATOR ■ PARTIAL ACCUMULATOR < PARTIAL ACCUMULATOR computer. This 1/0 structure means that a whole group of devices can be simultaneously hooked up to the computer and the computer used to receive information from or transmit information to a variety of devices as directed by a "program." A special set of commands is used to instruct the computer as to which "1/0 port" is to be operated at any particular instant. With appropriate programming it is then possible to have the computer "communicate" with a large variety of devices in an essentially "automatic" mode — for instance receiving information from a digital multimeter at specified times, then possibly performing some averaging calculations, and then outputting results to a teletype machine without human intervention. Or, in other appl ications — information from a human operator can be typed into the machine using a typewriter-like keyboard. In its simplest form, a group of switches can be used as an input device and a group of lamps used as an output device for the computer! However, a more sophisticated system used in many applications would be to use a teletype machine or a combination of a keyboard and a cathode-ray-tube (CRT) display attached to input and output ports to serve as the primary means of 1/0. A person can thus type information on the keyboard which will pass it into the computer, and the computer can display the results of its operations on the CRT display (which can, inci- dentally, be made from an ordinary oscilloscope and a special CRT interface unit such as that described in Jim Hogenson's article in BYTE #2). Perhaps the most wonderful and exciting aspect about a digital computer is its tremendous versatility. It has been said that the computer is the most versatile machine in existence and that its applications are limited only by man's ability to develop programs that direct the operation of the machine. It is undoubtedly one of the best machines for allowing man to exercise and test his creative powers through the development of programs that direct the machine to perform complex operations that can not only control other machines, or perform calculations many times faster than humanly possible, but because it can be used to "simulate" or "model" other systems that it might be impractical to build for purely experimental purposes. Thus man can create a "model" in a computer program and actually "play" with the synthetic model without actually building the physical device! The computer's great versatility comes about because the machine is capable of executing a large group of instructions in an essentially limitless series of combinations — these series of instructions are stored in the memory bank(s) of the computer — and a new series of instructions can be placed in the memory bank(s) whenever desired. In fact, the memory bank(s) can often hold several completely unrelated "programs" in different sections and thus one can have a machine that performs totally unrelated tasks simply by pushing a few buttons and thereby directing the machine to start executing a new program in a different section of memory! The digital computer is capable of providing services to people from all walks of life! A person need only choose (or develop) programs and connect external instruments that will provide the capabilities desired. For instance, a scientist might put a mathematical calculator program into the 32 computer's memory and use the computer as a sophisticated electronic calculator by using a calculator-type keyboard as an input device and a CRT display as an output device on which to receive the answers to complex mathematical calculations which the computer performs. After using the computer as a calculator for a period of time, the scientist might decide to utilize the same computer to automatically record data from instruments during an experiment. By simply putting a different program in the computer's memory and plugging some peripheral measuring instruments into the computer's I/O ports, the scientist could have the computer periodically make measurements while he went out to lunch and save the results in its memory. After lunch the scientist could have the computer tabulate and present the data obtained from the experiment in compact form. Then, by merely putting a different program in the memory, the scientist could have the computer help him set up and arrange a "reference file" all sorted into alphabetical order or any manner that would enable him to use the computer to extract information far faster than a manually operated "paper file card" system. So the computer can be a valuable tool for a scientist; but, the same machine with a different program in its memory (and possibly different peripheral devices) could be used to control a complex manufacturing operation such as a plastic injection molding machine. In such a case I/O units that coupled to transducers on the injection molding machine might be used to relay information to the computer on a variety of parameters such as temperature of the The development of computer programs can be an extremely creative, exciting and personally rewarding pastime and offers essentially limitless ways to exercise one's creative capabilities .... plastic in the feed barrel, amount of feed material in the hopper and injection barrel, available pressure to the mold jaws and feed barrel, vacancy or filled status of the mold and other useful parameters. The computer could be programmed to analyze this information and send back signals to control the operation of heaters, pressure valves, the feed rate of raw materials, when to inject plastic into the mold, when to empty the mold, and other operations to enable the plastic injection system to operate in an essentially automatic mode. Or, a businessman could use the same computer connected to an electric typewriter, with a suitable program in memory, to compose, edit and then type out "personalized form letters" by directing the computer to insert paragraphs from a "bank of standard paragraphs" so as to form a personalized customer answering system that would handle routine inquiries in a fraction of the time (and cost) that it would take a secretary to prepare such letters. Or, the businessman might utilize the computer to help him control his inventory, or speed up his accounting operations. However, a computer that costs as little as the typical micro system does not have to be restricted to a business or scientific environment. The computer that can do all the types of tasks mentioned above can also be used to have fun with, or to perform valuable services, to private individuals. The computer can be used as a sophisticated electronic calculator by almost anyone. It can be used to compose letters (using an editor program) by virtually anyone. Programs that sort data alphabetically or in various other categories can be of valuable service to people in many applications. The computer can be used to monitor and control many household items, serve as a security monitoring system, be connected to devices that will dial telephones, and do thousands of other tasks. The electronic hobbyist can be kept occupied for years with a digital computer. For instance, one can build a little test instrument that plugs into a few I/O ports on the computer, then load programs into memory that will direct the computer to automatically test electronic components (such as complex TTL integrated circuits) in a fraction of a second! (Businesses can do this too!) Or a ham radio operator can put a program into memory that will enable the computer to receive messages typed in from a keyboard, convert the messages to Morse code, and then actuate an oscillator via an output port to send perfectly timed Morse code. In addition, the ham radio operator might use the computer with an appropriate program to serve as a "contest logging aid." The "logging aid" would serve as an instant reference file whereby the operator could enter the calls of stations as they were worked and have the computer verify if the contact was a duplicate. The computer could do other tasks too, such as record the time of the contact by checking an external digital clock (or by utilizing a program that would enable the computer to be used as a clock within itself)! And, the computer can be used to play numerous games with, such as tic-tac-toe, checkers, word games, card games, and a large variety of other types of games that one can program a computer to perform. And perhaps most important — for the student, hobbyist, scientist, businessman, or anyone interested in the exciting possibilities of its applications — the contemporary microcomputer offers unlimited possibilities for the expression of individual creativity. For the development of computer programs can be an extremely creative, exciting and personally rewarding pastime and offers essentially limitless ways to exercise one's creative capabilities in developing "algorithms" that will enable the machine to perform desired tasks! The electronic hobbyist can be kept occupied for years with a digital computer. 33 If I U Unlit In I t li L u I lU in learning about microcomputers and microcomputer programming, Scelbi Computer Consulting, Inc., has some fine publications that can give you a real education. The ScelbiSB User's Manual is a fine introductory publication that starts by assuming that the reader has never used a computer. It explains how a microcomputer is fundamentally organized and it's basic principles of operation. It then provides a comprehensive explanation of the entire instruction set used in the Scelbi-8B microcomputer. Next, there is a highly detailed section that explains how to operate a Scelbi-8B and provides several sample machine language programs. Another section illustrates how easy it is to connect external devices to the computer. Finally, for those interested in the technical aspects, there is a large chapter devoted to technical information — including schematics, assembly drawings and parts lists for the Scelbi-8B. (Some might actually construct a microcomputer from the information available in this manual alone!) Price? Just $14.95. Machine Language Programming For The "8 08" (and similar microcomputers) This manual was written to provide the reader with the detailed knowledge one needs to know in order to successfully develop machine language programs. This information packed publication discusses and provides numerous examples of algorithms and routines that can be immediately applied to practical problems. Coverage includes: * Detailed Presentation of the "8008" instruction set *Debugging Tips *Flow Charting *Organizing Tables *Mapping 'Maximizing Memory Utilization 'Fundamental Programming Techniques: Loops, Counters, Pointers, Masks *l/0 Programming, Real-time Programming 'Multiple-precision arithmetic 'Programming for "PROMS" 'Floating-point package 'Search and Sort Routines 'Editing and Assembling Mathematical Operations ^Creative Programming Concepts Virtually all the techniques and routines illustrated in the manual can also be applied to other similar microcomputers such as "8080" systems (by applicable machine code conversion). The price of this exciting new manual is a low $19.95. (The floating-point arithmetic package presented in the publication is worth that price alone!) Assembler Programs For The "8 8" Discusses a "minimum length" assembler program that can reside in 2k of memory, plus a more sophisticated version for those who have additional memory and desire a more powerful version. Included in this manual is a thorough explanation of the fundamental concepts of an assembler's operation, details on how to format the "source listing," step-by-step analysis and presentation of subroutines, program flow charts, and assembled listings of the programs! Price? A very reasonable $17.95. An "8 8" Editor Program Describes variations of an "Editor" program that can reside in 2k of memory. Additional memory may be used to increase the size of the text buffer. The program enables one to manipulate "text" in order to create "source listings" or perform other kinds of text preparation. Includes discussion of routines, flow charts, and assembled listing. Priced at just $14.95. Prices given are for domestic delivery at book mailing rate. Add $2.50 for each publication if PRIORITY air service desired (U.S.) Overseas — include $6.00 for each publication for airmail service. S P E C I /\ I (Expires Dec. 31, 1975) Order all four publications at once, mention this BYTE ad, and save over 10% $59. OO (Pricing, specifications, availability subject to change without notice.) Order direct from: 1322 REAR BOSTON POST ROAD I CELEI COIHI U¥ EH DEPT BN J^™7.„Y^r "J" MILFORD CONNECTICUT 06460 CONIUIIINO INC. _____^^_ 34 WHAT SINGLE ELECTRONIC MACHINE CAN BE USED TO PERFORM/CONTROL ALL THE FOLLOWING TYPES OF SERVICES? Send morse code Control repeater stations Operate as a calculator Receive/send/buffer data between a wide variety of communication devices Monitor instruments Control machines Sort/compile data Test other devices Play games the SCELBI-8B MINI -COMPUTER CAN ! SCELBI COMPUTER CONSULTING, INC.- The company that pioneered in producing the small computer for the individual user with the popular SCELBI— 8 H, now brings you the new SCELBI— 8B with increased capability! Like the former SCELBI-8H, the SCELBI-8B is built around the amazing '8 8' "CPU-on-a-Chip" which has been revolutionizing the electronics world. However, the NEW SCELBI— 8B offers extended memory capability at reduced cost! It is directly expandable to 16,384 words of RAM/ROM/PROM memory. This increased memory capability now means the user has the potential in a small and compact computer to support compiler type languages, manipulate sizable data bases for business and scientific applications, and support a wide variety of programs including those that take advantage of external mass memory storage devices. The NEW SCELBI— 8B still retains the outstanding features of its predecessor. Decoding logic for 8 Output and 6 Input Ports is built into the basic computer. Plug-in capability for I/O devices is provided on the chassis. A unique, simple to operate console that utilizes just 1 1 switches on the front panel makes the SCELBI— 8B a pleasure to use. The NEW SCELBI— 8B is backed by a line of low cost SCELBI interfaces which currently include: an interface that turns an oscilloscope into an alphanumeric display system, low cost keyboard and TTY interfaces, and an interface that turns a low cost audio tape cassette into a "Mag-Tape" storage and retrieval unit. Last, but certainly not least, SCELBI has a wide selection of software ready to run on the NEW SCELBI— 8B including: Editors, Assemblers, calculating programs, I/O and general utility routines. Additionally, SCELBI produces publications that can show you how to develop your own custom tailored programs. The NEWSCELBI-8B is available NOW. (We have been delivering since June!) It is available in three forms. Ultra-low cost "Unpopulated" card sets with chassis kits starting at $259.00*. Complete parts kits for a 1,024 word mini-computer as low as $499.00*. An assembled and tested 4,096 word computer is just $849.00*. Interfaces, accessories, and software sold separately. (*Domestic prices.) (Prices, specifications and availability subject to change without notice) Literature available for S.A.S.E. I CELEI COM I Hill* CONIIJIXING INC. 1322 REAR BOSTON POST ROAD MILFORD, CONNECTICUT 06460 35 HEXPAWN A Beginning Project in ARTIFICIAL Intelligence What is intelligence? Pushing aside the philosophical and psychological questions for the moment, I can offer an operational definition of intelligence in programs: An "intelligent" program is one which was designed with a range of possible circumstances in mind, rules defining successful and unsuccessful responses to such circumstances, memory of the history of past responses and relevant circumstances, and an algorithm for using such past history information when similar circumstances occur again. Robert Wier has provided an example of a simple game application which illustrates this definition of intelligence in programs. Does it sound too deterministic for you? Hardly - the response is in some sense inherent in the program and its context. But, just as in natural life, the order and degree of the various inputs to the AI program cannot be predicted in advance with any great certainty. Just as each individual person is unique, each individual run of a good A I program will tend to differ - AI programs, like people, are good for lots of surprises. by Robert R. Wier 1208 Mistletoe Drive Fort Worth TX 76110 Artificial intelligence. The very words themselves are at once frightening and fascinating. Hal lip reading; Colossus communicating with Guardian in a real "machine language"; M5 taking over the Enterprise. Yet these are still media creations, and we are cushioned by the comforting buffer of a movie or TV screen. To realize what artificial intelligence (or AI) is really like, you have to create it yourself (ever have an urge to play Franken- stein?). HEXPAWN originally appeared in Scientific American (Vol. 206, No. 3, p. 1 38) in Martin Gardner's "Mathematical Games" column. It is simplicity itself. The game board is identical to that of the standard two-dimensional tic-tac-toe, and two players control three pieces (or Xs or 0s or whatever) each. Each player's objective is to advance his pieces to the opposite side of the board, or eliminate or block the opposition's pieces. Moves of each piece are the same as the pawn in chess (i.e., move 1 forward to a vacant square, take diagonally). HEXPAWN rules are very simple: To win, attempt to move one of your pieces to the opponent's side of the board, or block him from making any move. Moves are those of the pawn in chess. That is, you may move one square forward to an unoccupied square, or you may move one square diagonally in order to "take" an opponent's piece. Only these two moves are allowed. You may not move diagonally without a "take"; you may not move forward with a "take". Fig. 1 illustrates a typical game situation of occupied and unoccupied squares. In this "model" of the layout, the computer(X) can move in two ways which "take" the human pawn in the central square (number 4). The computer can move in one way which will not "take" a human pawn. For a complete explanation, please refer to the original article (every library should carry Scientific American, and if yours doesn't, ask them why). This version of HEXPAWN is a game that learns. You 36 may play it several times beating the computer (which keeps track of the board, as well as acting as one of the players) with ridiculously simple strategies. However, as play progresses, the computer notes its mistakes, and eventually, after 8 to 10 games, you may only tie or lose to the computer. The machine has "learned" how to play the game successfully. The method described here to implement HEXPAWN is strictly brute force, and many techniques may be used to improve both the execution time and storage efficiencies. But in order to fully appreciate the internal workings of HEXPAWN, it is nice to keep it simple. Also, since this is a self-modifying program (a necessity in almost all Al), programmers will recognize that "simple is good," since after the code runs wild a few times and produces strange and wonderful results, it is fortunate to have code which is easy to debug. HEXPAWN was implemented by the author on a 16-bit/word mini with an assembler. In this version it occupies 88E hex bytes, or 2190 decimal bytes, or 4218 octal bytes. It would be possible to reduce the memory requirement by using two or three bits instead of two bytes for the board representation of the playing pieces, but this would require a lot of bit diddling that is tedious unless you are really tight on memory. The minimum representation of the three states requires a two-bit binary number, using three of the four possible states of two bits. This requires only one word of memory. A less compact but easier to program bit level representation is to use three bits, one for each state. Only one bit would be "on" at any given time if the corresponding state is present. But on many computers it's considerably simpler to use two bytes so that pieces may be represented by "X", "0", and " " (space). The storage requirement will also vary considerably with the nature of the peripherals used, due to whatever interface programming is necessary. The original was implemented with a CRT where the cursor was ''locked'' in synchronization with a programmed counter notifying the program of the board location of the square being referenced. Basically, the structure of the implementation is quite simple. In the Scientific American article, all possible board configurations are presented. Note that some are mirror images of others, but these are still required. These board configurations are hereafter referred to as "models". The program attempts to match the current board configuration with the models stored in memory. When a model is found, several courses of action may be available. In some cases, only one move will be possible, thus the computer is limited to that move. In other cases several moves are possible. The computer will select one (whichever is first on the list) and make the move. If a model is not found, this is an error situation; an illegal move has been made on your part, and an error message should be output. Fig. 2 is a "macro" flowchart of this process. Following each model in memory is a string of move index bytes followed by a hex "FF". The "FF" is used as a terminator for that particular model. The bytes between the model and the "F" are index numbers for possible moves — the index references a jump table to produce a correct move by executing a jump. A jump table is a very handy device when you need to reference several different X 1 2 X - I O" O ' I ■ * 6 O' 8 Fig. 1. The game layout for a typical move. ( START \— INITIALIZE MOVE INDICES INITIALIZE OTHER AS REQUIRED SEARCH FOR MODEL MATCHING CURRENT BOARD NULL ADDRESS OF INDEX STORED OF PREVIOUS MOVE EXECUTE MOVE ENDNOTE ADDRES OF MOVE'S INDEX ' GAME CONCEDED HUMAN WIN51 COMPUTER WINS' ( STOP 1 Note that the move indices are initialized only once for each series of games. Initialization for each game will defeat the learning process. Fig. 2. Control flow logic for the HEXPAWN program. 37 Fig. 3. Table of All Possible Moves (Models). BOARD POSITION MODEL COMPUTER'S SQUARE POSSIBLE MOVES 1 2 3 4 5 6 7 8 (see Fig. 4) X X X 3,4,7 X X X 1,4, 5 X X X 1,2 X X X 2,6,8 EXAMPLE OF FIG.? X X X X X 3,7,11 2,6,7 X X 3,4,5 X X X 5, 10, 11 X X X 5,6 X X X 8,9 X X X 2,3 X X 3,4,5 X X 6,7 X X 6,7 X X 7 X X X 8, 11 X 2 X X 8,5 X X 3, 14 X X X 8,11 X X 15 X X 15 X X X 11, 14 X X 6,7,8 X X 3, 11 X X 5, 11 X X X X 2,8 6, 14 X 2 X X X 1,2,6 15 X X X 15 X 6 Key: X = computer piece occupies square = human's piece occupies square blank = square is empty locations in your program using numerically sequential indices. The advantage is that after assembly, debugging is facilitated. If you desire to change all the jump addresses of a particular segment of code, you need only change the jump table, rather than each reference containing the desired jump address. It is also unnecessary to worry about having to make the code referenced in the jump table equal in length. All that is taken care of in the jump table itself in an easy and consistent manner. The jump table is particularly appealing in that you have multiple- level-indirect addressing capability. HEXPAWN learns by removing the index which leads to a defeat for the computer. Thus, if a move to square 8 results in a loss, the index fo Mowing the appropriate model is changed to a null character, which eliminates the losing move. It is easily seen that if a particular move always leads to a loss, it will be completely nulled, thus allowing the computer to "know" several moves ahead that it has lost the game. As each losing move's index is nulled, the learning process effectively progresses toward earlier moves. As noted in the original article, this version only penalizes the losing move. Also of possible consideration is the rewarding of a winning move, but this would complicate our code considerably. For convenience's sake let us number the squares of the playing board 0-8 starting in the upper left corner, working horizontally and down. Let us also establish the convention that the human player always moves first. This does not seem to compel a deterministic game. That is, either player may win regardless of who moves first. Now suppose that there has occurred a particular board configuration (Fig. 2). Note that the "X" pieces belong to the computer, while the "0" pieces are yours. You have just made the preceding move, and now the computer must decide what to do. The computer's possible moves are indicated by the dotted lines. But how does the computer know this? It searches through memory until the following bit pattern is found (in hex): E740E7D6D64040D640020607F The first 9 bytes represent the board. Note that in EBCDIC, E7 is an "X", D6 is an "0", and 40 is an " ". Remember that these are EBCDIC codes (my peripherals use it), but it could just as easily have been ASCII. The next three bytes represent the indices for possible moves as they exist at the beginning of the game. That is, the possible moves are these: 02: "X" in square moves to square 4 taking your "0" "To realize what artificial intelligence is really like, you have to create it yourself ..." 06: "X" in square 2 moves to square 4 taking your "0" 07: "X" in square 2 moves to square 5 Now, either move 02 or move 07 will result in a loss the next move that "0" makes (assuming that you are trying to win) and that index will be nulled so it cannot be selected again in the event of this same board configuration. Move 06 is correct since it removes your piece and also blocks you from obtaining "X's" side of the board. Since the computer simply selects the first move on its list, the first time this board configuration is encountered, the computer will lose (as a result of move 02). However, after this game the computer will select move 06, which is correct, since it is next on the list. The number of the index has no particular significance; it could be anything as long as it denotes the displacement needed in the jump table to direct the flow of control to p the proper code for the move desired. The "F" is a terminator that signals the end of that particular model and move list. We will not present the actual code to accomplish the HEXPAWN algorithm since there are so many machines of a differing nature in hobby use. However, copies of the author's LOCKHEED SUE Minicomputer version are available from him for $3 to cover the most of duplication and postage. A few hints are in order to help you avoid some of the more obvious problems. The 38 EXAMPLE 1 : To illustrate, assume that the following is in memory at the start: Location (hex) Contents (hex) Comments Step 1 . 56 HS'— ■Step 6. 58 06 If loss store move indices after appropriate 5A 07 "00" here. model 5C FF — AO XX beginning of jump table Step 2. . /A2 XX z. -«D2 A6 XX A8 XX AA XX AC E4 Step 4. address of move 06 AE EA address of move 07 D2 XX code for move 02 The "learning" sequence is composed of the following steps: 1 . Search models until match is found. 2. Select first index of possible moves, add to location of beginning of jump table, giving location of address of that move's code - in this case, index 02 x 2 (to get even byte boundary) + A0 - A4. If no possible move (no non-null index) is available, concede game to human player. 3. Note the address of the index used - in this case "56." 4. Jump using indirect addressing to the move's code and execute - in this case, location D2. 5. Evaluate board for win or loss. 6. If loss has occurred, null the location of the last index used - in this case "56", thereby removing this move from the machine's repertoire of responses to this particular board configuration. If a tie or computer win has occurred, do nothing to the index. EXAMPLE 2: Assume that the following is in memory after example I is completed; Location (hex) 56 58 60 62 '.'2*^2x2=4 , 1 6x2=12 — | | 12(C) * AD = AC A2 .A4 A6 A8 AA .AC AE 00 D2- 00 00 00 E4 ■ EA . 1st selected ■ 2nd selected beginning of jump table address of move 1 address of move 2 address of move 3 address of move 4 address of move 5 address of move 6 address ol move 7 code for move 2 lo accomplish: move" ," tu sq. (blank) move "X" to sq. 4 jump to continue code for move 6 to accomplish: move " " to sq. 2 move "X" lo sq. 4 jump lo continue Suppose move index 2 has been selected. The index "2" is multiplied by 2 (shifted left 1 bit) in order lo produce an even word address, and added to the address of the beginning of the jump table - A0 - resulting in an address of - A4 -. At location A4 is the address - D2 - of the code lo accomplish move #02. At location D2, move 2 consists of blanking the computer's "X" in square 0, and inserting an "X" at square 4, taking your "0". Since this is a losing move, the index 02 will be made null (replacement by 00 is good for error checking), and move 06 will be accomplished in the same manner next lime this board configuration occurs. biggest hang-up with this program is to get it running correctly in regard to the jump table. If a wrong index is obtained, the program will run off into the boondocks and never be heard from again. Therefore it is nice to include checks on the validity of the index retrieved and to output an error message in the event of something strange happening. A reasonable board may be printed using dashes and exclamation marks. However, if you do this, you will have to "unpack" the board as represented in memory into a more suitable form for 1/0. If you don't have a CRT with machine programmable cursor, you can use the numbers assigned to the squares to indicate your moves. Of course you'll want the machine to have a variety of responses for being blocked, losing and winning. For debugging it is good to output the number of the index which is nulled after a losing game. In this way you may keep track of the learning process as it advances. Also you should be aware that if the human player makes some illegal moves, no model will be found, and a message should be output indicating this fact. But not all illegal moves Fig. 4. Table of Computer's Moves ("X" Graphic). COMPUTER'S (X's) MOVES In a written communica- tion, Martin Gardner points out that the original Hexa- pawn article is reprinted as Chapter 8, "A Matchbox Game-Learning Machine" in his book The Unexpected Hanging and Other Mathe- matical Diversions (Simon & Schuster, 1969 J. The book version includes updates of the drawings in the original Scientific American article, notes on reader reactions to Hexapawn, and reference to an article on the more general game "Extendapawn. " Our thanks to Martin Gardner for his assistance in supplying a corrected version of Fig. 5 for use in BYTE. will result in an error condition. In this case, should the human player win, the machine will null the last move's index even if it is correct. After this happens a few times, the machine will start making illegal moves, acting illogically, and generally approximating a nervous breakdown! Programming HEXPAWN will painlessly (?) introduce you to a number of worthwhile aspects of the logical arts. You'll see that many segments of code (such as the board evaluation) are similar and are potential MOVE INDEX # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SQUARE TO SQUARE COMMENTS 3 4 1 3 1 4 1 5 2 4 2 5 3 6 3 7 4 6 4 7 4 8 5 7 5 8 computer wins! computer blocked 39 • • • & % i », t < O o 2 <£' § S) • f o 4^ O 4 fi [• • w S> O O 2 A • #^ \»' O 4 • ,• • A ^4- O 4 • f (BT \F O 4 • <#o f Z 6 • • & % V O 4 o « f ft 6 • 1 Off. #(5^ 6 6 6 6 6 6 Fig. 5. The set of possible Hexapawn game situations faced by the HEXPAWN program after 2, 4 and 6 moves. (Reprinted from Chapter 8, "A Matchbox Game-Learning Machine, " in The Unexpected Hanging and Other Mathematical Diversions by Martin Gardner.) A BASIC Version of This Program: For those with systems running the BASIC language, a BASIC version of this program called HEX is found on page 122 of the third printing of 707 Basic Computer Games, available for $7.50 + 50tf postage from Digital Equipment Corp., Software Distribution Center, MaynardMA01754. candidates for subroutines. You'll see that indirect addressing does indeed have some practical uses, if you can ever get the code debugged. You'll see that it is very important to try and anticipate possible sources of error in your code before you run the program, and at least to include a mechanism to warn you when problems occur. (I didn't anticipate any problems with the jump table and consequently spent several hours trying to figure out how the move indices were coming up with such strange values. If I had put in some code to check them first, this process would have been shortened considerably.) You'll see that some programs are complex to such a point that you simply cannot sit down and write them without thinking about the logical design first! You'll see why you should never, ever write programs that are self-modifying in nature (except Al, naturally). Lastly, amaze (antagonize) your friends by sitting down at your computer and winning four or five games, then inviting them to try. When they can't, you can smile smugly and explain how your computer learns from its mistakes, and so should they! 40 COMPUTER EXPERIMENTER SUPPLIES FACTORY FRESH— PRIME QUALITY PERFORMANCE GUARANTEED MICROPROCESSORS AND MEMORY 8008 $ 35.00 8080 135.00 2102 3.50 2102-2 4.50 Commercial Grade — up to 35°C. These units are factory fresh, full spec devices. COMPUTER GRADE REGULATED POWER SUPPLIES All units are short-circuit proof, fold back current limited and with over-voltage crowbar protection. MD-15 ±15 Volt at 200MA Dual Tracking $30.00 MD-5-1 +5 Volt at 1 $24.50 Amp MD-5-3 +5 Volt at 3 Amp $34.50 MD-5-6 +5 Volt at 6 Amp $44.50 MICRO COMPUTER SUPPLY COMBINATIONS For the 8008 MD-08— +5 volt at 6 amp, -12, -9 at 200 ma $75.00 For the 8080 MD-80— +5voltat6amp,±12vat200ma . . .$75.00 FortheFairchild F-8 MD-8— +5voltat6amp, +12vat200ma . . .$65.00 For the M6800 MD-5— +5 voltat6amp $44.50 All units are short circuit proof, fold-back current limited and with over voltage crowbar protection. All Prices Subject to Change Without Notice Minimum Order $10.00 Add $1.00 to Cover Postage and Handling Send Check or Money Order (No C.O.D.) To: N. J. Residents Add 5% Sales Tax TTL INTEGRATED CIRCUITS All devices are factory fresh, full spec units. 7400 23 7404 25 7442 60 7447 95 7448 95 7475 60 7490 60 7493 60 74125 55 74126 55 74192 1.10 74193 1.10 MICRO DIGITAL CORP. BOX 413, EDISON, NJ 08817 • (201) 549-2699 Computers And Amateur Radio Time-sharing by radio? Radio packet switching networks? Program exchange meeting grounds in the high frequency bands? Computer controlled ham radio stations? Read on . . . Mike Gipe provides us with this article on the synthesis of amateur radio and computer hobby activities into a combina- tion which is more fun than the simple sum of parts. While there are no bureaucratic restrictions on home microcomputer systems, there are some federal regulations you must comply with in order to become a ham. For many computer hobbyists, the two-hobby combination would be well worth considering - despite the required ham license exam. Mike provides several references to more detailed information for those individuals who want to check out amateur radio. Computer construction and programming is the newest hobby in the field of electronics; ham radio is undoubtedly the oldest. The fascination of electronics is certainly a good reason why many people are interested in both computers and ham radio, but it is not the only reason. The two hobbies are complementary. The person who spends his leisure time on both will surely find that one benefits the other, making it more fun. Computers handle information — they receive it, deliver it, condense it, modify it, utilize it and sometimes even mangle it. The versatility of the computer is reflected in the wide variety of information that it is called upon to digest. Ham radio is a hobby dedicated to the art of communication — the transfer of information. Without information, there is no need to communicate, and 42 without communications, the generation of information is useless. (What good is a computer without any I/O?) Obviously, computer buffs find ways to communicate without ham radio, and hams have never been speechless because they didn't have computers. However, marrying the two offers the opportunity to communicate information (of all kinds) on a much wider scale. The computer buff who includes radio in his field of interest will certainly find his hobby more challenging and more rewarding. It is no surprise, therefore, that many of BYTE's readers are also amateur radio operators. But it is likely that a number of BYTE's readers are not familiar with amateur radio. This article is an introduction to the hobby for these people. Hopefully, it will also suggest some new ideas for those who already have discovered that ham radio and the computer make an excellent pair. What is Ham Radio? Radio amateurs are authorized to transmit and receive signals with their own radio stations. This makes it possible to experiment with many different means of radio communication and to converse with all kinds of people from all parts of the world. The fact that ordinary people can make important discoveries while pursuing a hobby is demonstrated by a number of amateur accomplishments including: transatlantic communication at high f req uencies, moonbounce communication, the practical use of single sideband transmission (SSB), and the increase of our understanding of radio propagation through the atmosphere. The fact that amateur radio is for personal by Michael A. Gipe WA3GAU/1 J55 Bay State Road Boston MA 02215 use is s t i pulated by international agreement and federal regulations which enjoin any amateur from exploiting amateur radio for monetary purposes. Amateur radio is a fine hobby; it's fun and educational. What's Happening Amateurs have been allotted many segments of the radio spectrum beginning as low as 1.8 MHz. Table I shows the frequency bands available. All types of modulation can be utilized; however, certain types are restricted to selected frequencies for bandwidth and interference reasons. Computer hobbyists will be The typical (?) ham radio station has various pieces of equipment. For low band work in "single sideband" (SSB) voice communications, the minimum equipment is a transmitter, a receiver (or combination), plus some form of antenna outside on your roof. Such a setup might cost $500 in today's markets - although less expensive radio shacks might be set up by buying used equipment with the guidance of experienced hams in your local amateur radio club. The real fun starts when you add a computer. interested to learn that radio teletype is an often used mode. Any person may be authorized to use any frequency and mode available to amateurs or only certain portions, depending on the class of license which he holds. This will be explained later in detail. Hams have put these resources to a variety of uses, some of them quite exciting. By connecting his receiver and transmitter to the telephone line through a "phone patch," a ham can make long distance phone calls which might not be otherwise possible for economic or technical reasons. Thousands of soldiers in Viet Nam were able to talk to their families this way. Amateurs also serve the public by providing communications in emergency situations such as fires and floods. It is possible to put an amateur radio station in a car and operate "mobile". Two recent developments have stirred up a great deal of interest: repeaters and satellites. Amateurs have designed and built seven operational earth orbiting satellites since 1961. Of course, NASA helped put them in orbit. The sixth and seventh of the series of satellites, known as OSCAR for "orbiting satellite carrying amateur radio," are now Band Frequency Designation Range (MHz) (wavelength) 1 60 meters 1.8-2.0 80 meters 3.5-4.0 40 meters 7.0-7.3 20 meters 14.0-14.35 1 5 meters 21.0-21.45 10 meters 28.0-29.7 6 meters 50-54 2 meters 144- 148 220 - 225 420 - 450 1215-1300 2300 - 2450 3300 - 3500 5650 - 5925 1 0000 - 1 0500 21000- 22000 40000 and up Table I. Communications frequencies available to amateur radio operators. 43 Ordinary people have made important discoveries in the radio field as amateurs — and you can expect similar things to happen in the computer field as more and more people experiment with the technology. relaying amateur signals great distances around the globe. Another device used to overcome the line-of-sight distance limitation for VHF and UHF frequencies is the repeater. These receive signals and retransmit them at a different frequency. By installing repeaters at high places like mountaintops and tall buildings, hams can communicate over a wide area with small transmitters. In New England, for example, repeaters have made it possible to talk with people in several states using only a battery-powered walkie-talkie. By installing radio equipment capable of accessing a repeater in his car, a ham can have companionship or emergency aid available at the touch of a button whenever he is driving. A number of frills are also possible with a repeater. Some repeaters have been set up with a telephone line tie-in. This telephone line can be used to make telephone calls from nearly anywhere. Imagine the possibilities — while driving to your girlfriend's apartment you can hit a few buttons on your mobile radio and call your wife on the telephone to tell her that you have to work late! More computer-oriented hams are needed to push for changes in the regulations to facilitate the computer/radio synthesis. On To The Good Part The real fun starts when you add a computer. Your microcomputer (or your mini if you're rich) can be a very useful addition to the ham radio station. It's a great help in calculating orbit data for OSCAR satellite work. The computer could be programmed to figure out when and where the satellite will appear in the sky, ring a bell to warn you, turn on the transmitter and receiver, and point the antenna in the proper direction! A microcomputer can do a very nice job translating and generating Morse code. Along a similar line, teletype code and speed conversions arc easily accomplished by a microcomputer. A few months of thought should give you dozens of ideas for using the computer in the radio station. The combination of repeater and computer can be powerful. One use for the computer is to control the repeater. Regulations require certain controls on repeater operations. These regulations have undergone substantial changes recently and may change again, so the best way to get the details is to contact one of the sources mentioned at the end of this article. The computer can make it possible to add many very advanced, very fancy features to the repeater. Services beyond the telephone tie-in previously mentioned are possible. Another way to use the computer with a repeater is as a shared data processor. A mini or microcomputer could be accessed by radio through the repeater by many people. Any ham with a teletype could have access to a computer. Since the possible benefits are so great, it is inevitable that a repeater -computer combination will soon be in operation. These applications of the computer to ham radio are interesting, but the long distance data communica- tions made possible with ham radio may turn out to be the most valuable result of combining the two hobbies. For the individual computer owner, radio communications means being able to operate the computer remotely from a car, in the next town, nearly anywhere. Moreover, communication between computers is also possible. A large network similar to the ARPA network could be formed, opening the way for sharing programs and ideas. Hobbyists' efforts in this area will supplement current research in radio networking. With computers, nearly anything is possible. Rules & Regulations Radio is, by its very nature, an international concern. Periodically, representatives from most of the countries of the world meet and draw up voluntary agreements concerning the use of one of our valuable resources, the radio spectrum. Amateur radio has its foundation in these agreements. It is defined, governed and allocated frequency space. In the United States, the Federal Communications Commission (FCC) writes the rules and regulations, consistent with international agreement, which govern ham operation here. It may be of interest to point out that hams are regulated by law, but computer hobbyists arc not. The reasons for regulating radio should be fairly obvious. The rules for ham radio are much more liberal than those for other services. Amateur radio is intended to be flexible and to allow experimentation. According to the internati onal agreement, though, hams must be licensed. The FCC issues licenses and also enacts and enforces the regulations which licensees must follow. The FCC determines what modes of transmission can be used at what frequencies and who gets to use them. Full details about the regulations can be found in the publications listed at the end of this article. Obviously, computer buffs find ways to communicate without ham radio, and hams have never been speechless because they didn't have computers. Limitations Although the rules are designed to be flexible and allow experimentation, sometimes they do not keep pace with the activities currently underway. Some regulations may inadvertantly restrict some harmless operations. Computer applications in ham radio are new and there are a few regulations which might concern the computer hobbyist-radio amateur. Although teletype transmission is allowed on nearly every band, the speed and type of transmission is restricted. Currently, only the five bit Baudot code may be used and the maximum rate of transmission is 100 words 44 per minute (75 baud). ASCII code is not permitted. Since most amateur teletype operation previously was with surplus Western Union equipment, this was no problem. Now, however, it conflicts with computer industry standards. Until the rules can be changed, the microcomputer can be used to convert from one code to the other. One other restriction which may be useful information is that full duplex operation is not permitted. Other aspects of the regulations may dictate certain techniques, but in general the computer hobbyist should find that it is possible to do what he wants, somehow. The rules can be changed to make things easier, however. Any petition to the FCC will be considered. More computer-oriented hams are needed to push for these changes. How To Get a License What are the details about licenses? There are actually two licenses issued by the FCC. One, the operator's 'license, permits the holder to operas '•.:., radfe Station. The othei is a permit to set up a Station at a permanent location. If you wish to set up more than one permanent station, a station license must be obtained for each. However, one station license allows you to set up one permanent station and any number of mobile or portable stations. A set of call letters issued with the license serves to identify the station on the air. The two licenses are distinct but are actually printed on one piece of paper. According to the international agreement, a person must demonstrate the ability to send and receive Morse code to get a license. He must also demonstrate some knowledge of elementary radio theory and operating techniques. The FCC conducts examinations for licenses. These are not difficult to pass with a little study, and excellent aids for learning code and theory are available. See the references for some of these. The license structure is further complicated by different classes. As an incentive to increase skill and knowledge, more operating privileges are granted to those who demonstrate greater proficiency. Each class of license represents a specific set of privileges and a correspondingly difficult examination. There arc currently six classes but changes may occur within the next year. The Novice class is the simplest. The exam is to get started. The General class license grants its holder permission to operate in a large portion of all bands and all modes. The Conditional class is the same as the General but allows a different application procedure for special hardships. The Advanced class grants more frequency space reflecting the additional technical proficiency needed to pass the exam. The highest class is the Extra class which awards all amateur privileges. It's a complicated system, but it makes it easy to get started and it rewards those who improve their skills. Actually getting your license is as simple as any bureaucratic operation. You AMATEU .# GENEW AH, Ay . >v ^ s CLASS . _ ^Sltl 4to^. „ •4? License . r_j> guiues IT available for each class of amateur license grade. These were nu2* by the 73 staff and are available from Radio Bookshop, Peterborough gH 03458. Morse code tapes are aho available geared to each license grade. very simple and the privileges are few, but it is an excellent way to get started. The Novice class license requires a 5 word per minute Morse code proficiency. Next is the Technician class. This class is designed for those who wish to do experimental work on VHF or UHF frequencies. Only frequencies above 50 MHz may be used by the Technician. The code test is the same as for the Novice; the theory test is the same as the General class. The Technician class license may be the best way for a computer hobbyist who wants to work with repeaters must fill out an application, pay a small license fee, and take the tests. Most tests are conducted at local FCC field engineering offices. More details can be obtained by calling the nearest office. The number is in the phone book. After passing the exams and waiting the usual bureaucratic waiting period, FCC RULES and REGULATIONS published by 73MAGA2INE1NC P«>rbo-«i^ NH OjaM Part 95 of the FCC Rules and Regu- lations governing amateur radio is available from: 73 Magazine ( 5(W) Although ham radio rules are designed to be flexible and allow experimentation, sometimes they do not keep pace with the activities currently underway . . . you should receive your license. It is good for five years, and may be renewed simply by maiing in an ■^"'ilication and a check. The f un is well worth the effort. H6 De fully, this has stimulated a little thought about informat',9 n anQl communication- w'hsn computers and bam radio are teamed up, the possibilities are limited only by the imagination. Computer hobbyists who are looking for an additional challenge should look at ham radio. Excellent educational aids are available from: American Radio Relay League, Inc. Newington CT 06111 and 73 Magazine Peterborough NH 03458 45 The Digital Feedback Loop Sumner S. Loomis, proprietor of Loomis Laboratories, Route 1, Box 131 A, Prairie Point MS 39353, provides this set of pictures represented in his version of the Hogenson oscilloscope graphics display design printed in BYTE #2. Mr. Loomis built the graphic interface using a preliminary version of the PC board for the scope display, but with one modification: he used CMOS instead of TTL integrated circuits. The following are his comments on the scope display as implemented in CMOS: I found that adjustment of R1 and R2 pots can cause the DACs (IC15 and IC16) to overheat. ( believe that this is why one of my DACs now exhibits a slight overlap in the digital ramp (bit 4 is off value). I would recomrr; enc j that these pots be ^j a t maximum resistance setting, and it. >r> m j tia | setup tne pots sm»uld be advanced while observing the respective output ramp on an oscilloscope. Decrease the resistance setting until the maximum height ramp (without clipping), is obtained. The overheating problem occurs with severe clipping, which happens at the low resistance setting. I found it necessary to change IC17 to an LM318, which has better high frequency response for the fast sweep rate of this ramp. My conversion of the digital ICs to CMOS was also successful, without a hitch. I am very pleased with the low power drain and logic swings from rail-to-rail that result from this change r ne substitution was accomplished as follows: IC1 becomes 74C10 IC2 becomes 74C04 IC3 becomes 74C00 I C4 becomes 74C00 IC5 uses 7408 TTL (no 74C series equivalent) IC6 becomes 74C1 55 IC7-IC10 become 74C193 I am going to have to change the Z-axis op amp in my display unit to accommodate the high frequency drive. The present amplifier is too slow, and causes some smearing of the dots as well as low brightness on lone dots. Everything else checks out OK! BYTER's DIGEST i \ \ \ V ~ +1 ° \ X \ _ ov - , — — > to . X & Y OUTPUTS (STAIR STEP R£MPS) Fig. 1. Staircase ramp wave forms for X and Y drives. , [Tim jfeture illustrates the stepping of the X and Y drive S A £ tfjiputs during several sweeps of t 1 '" djs** 1 - l ?r Fig. 2. A full raster achieved by turning on the scan and disconnecting the Z modulation input from the scope. 46 Fig. 4. A pattern of horizontal dots programmed into the display by hand. Fig. 5. Mr. Loomis used an interesting trick to achieve the printout in this illustration — he changed the main timing capacitor of the 555 osciJiator to 5 microfarads and used the much slower sweep to drive an X-Y plotter. In order to get hard copy printouts (albeit slowly) about aJJ one would have to add is a jury rig "intensity" modulation input to raise and lower the recorder pen under control of the interface. Refinements such as superimposed small amplitude X-Y oscillations could be used to draw small lissajous-patterns (circles or figure eights) at each "on " point of the hard copy. 47 jjpp&'.-krt foirri and $621 Oris a superbly Engineered/ length computer., hi byte i$HrtKMu'\ <>n'v found in the - : computers. ^- ' A800 has oench^ ■■" to lijriDse of much more ive mihWomputers. It has a: cycle ,_|-;ow microsecdnds; it can directly .....,'ess 65000 words of memory and 256' ■'output devices; ajn^pjha& over 2J90 hine instr.uctSU |f\*-5r,, s.wwi&s- jw fiS^lTSiA'sic ' W*WtENDED BASIC language are designed for most computer needs from i to scientific applications, 'ludes an Assembler, T - ,:*:'' ^e. : -A'l.tair $800 has been designed • yvithi : b«ss;orrenratiBft 'Vlif Jbe 'feastfyexpamfetl and easily- ad a pt ed to l ho usands of applications') ard < an ho plugged into any slot .and cards can be added inside the main case (memory and I/O boards). Memory board options include 1024 word, ;>i04JB wqrd and 4096 Word boards: Each rnemory boaitl bas' rherr^ory pr/Otect features. ; Interfa^e'board'options in'tliide a Parallel Interface ;8oard'jind ,3 ,, 'Serial Interface j boards" Tliese .boards allow you Vto connect the Altair to bur growing list of input/output '■■■■■ -JtSk^eS^tU, , . $.-\P.S^V.£aff '"siialie-l over : sof itrfarmatiori' on a flexible isfer rate ot 2.0,000 words/secorHF 4H|^| track to track access time of 10 msec, i advanced data processing pr Other Altair options include the ( Computer ferniinal with built-7 audid-cassette, interface' for inexpensive mass .' s.tqiragdj j\SR-33. Teletypewriters, and the ; Altair- i 1ft; Line Printer which produces 80 , columns of Sxjclo.t matrix.characteri at 1»1 Q characters p>er Second or 65 lines per minute. . PRICES?--; ,\x. ;_:j.-' v ; '•■' •..--. Altair Computer kit : with Complete; : assembly instructions $439 Assembled apd tested Altair .V.\ ... . . . .$621 '•',i ;024 word memory -:'.. .-.',.'■■ £ard .-. . . ...... .$97 kit and $1 39 assembled 2,048 Word rriemory > card . . . . /. . .$1 45 kit and $1 95 assembled 4)096 word memory .-.'' ; : card • • • - • $264 kit and $338 assembled Full Parallel Interface , ■••', card . .- . , . . ; . .$92 kit and $1 1 4 assembled Serial interface card ; - ;• ' ; iRS232 i ) .,;. .$119 kitdnd $138 assembled Serial Interface card (TTLof; . > teletype)';. .. .$124 kit and $146 assembled Expander Card (adds 4 slots - to 8800) .: . . s .$1ekit and $31 assembled SOFTWARE PRICES: Altafr 4K BASIC . ',-. . ... $350 Purchasers of Altair "8800, 4K» of Altair memory, and Altair I/O card ..ONLY $60 Altair 8K BASIC .,. ... . . ., . .",1 . .'. .. , $500 Purchasers of Altair 8800, 8K of Altair memory, and Altair I/O card . . OTSLY $75 J Contact* Factory, for complete Altair- Price' " List;.- -., .■':;•■ .[ \ ■" • ':'."•■ '"■ : \f Altair Documentation Special . . . . .includes Assembly manual; Operators manual. Theory: of Operation' manual, BASIC language manual, catalog and sample Altair Users Croup newspaper .,'...'. -.*.... .'■; -. ... $15 ' (offer expires November \, 1975) Ordering Imtructfibns You Can order the Altair Computer' by simply filling out/lhe coupon in this ad or by > calling us at 505/265;-7553 or 262-1951 . Or I you can ask f Or free technical consultation or for one of our fre^ Altair System Catalogs, Prices, specific aHpns arid delivery subject to chansje Warranty: 10 days on parts (or kits and 90 :;^^)rKpart^.iind : Ubled units,..;. ' M ITS/63: New Mexico 87108,- 3i ALTAIR COUPON □ Enclosed is check for $ □ BankAmericard # □ or Master Charge # □ Credit Card Expiration Date □ Altair 8800 □ Kit Q Assembled □ Options (list on separate sheet) include $8 for postage and handling □ Altair Documentation Special □ Please send free Altair catalog . State & Zip_ MITS/6328 Linn NE, Albuquerque, NM 87108, 505/265-7553 or 262-1952 If Santa had an Altair. . . Santa might be possible! Have you ever wondered how Santa keeps track of all the addresses of all the children in the world? How he knows who gets what? With an Altair 8800, Santa might have a fighting chance. He might be able to keep up with the ever-expanding toy industry. He might be able to remember who's been naughty and nice. With an Altair 8800, Santa might be possible. This Christmas you can do something that's never before been possible. You can put an Altair under your tree or under the tree of a friend. Or you can start with our special Christmas 75 time payment plan!* The Altair 8800 is the NUMBER ONE hobby computer in the whole world. No other computer offers you the power and versa- tility—the proven track record — of the Altair 8800 at a compa- rable price. No other hobby computer offers you the sophistica- tion of Altair BASIC software or the wide variety of Altair modules and peripherals. No other hobby computer offers you the cus- tomer support of an Altair (free membership in the Altair Users Club, free access to the Altair Service Department and the Altair Software Library, and a free subscription to the Altair monthly publication, Computer Notes). Order now and avoid the last minute Christmas rush! * Christmas 75 Time Payment Plan 1K Altair for Just $68.00 a month! The Altair time payment plans allow you to be the owner of an Altair 8800 with 1,024 bytes of memory for just $68.00 a month. Each month (for 8 months) you send in your payment and we send you part of an Altair kit until you have the complete system. The advantages of this plan are NO interest or financing charge, GUARANTEED price based on today's price, and free, immediate membership to the Altair Users Croup including subscription to Computer Notes. Our terms are cash with order, BankAmericard or Master Charge. If you send in an early payment we will make an early shipment. By the same token, a late payment will result in a late shipment. (After 60 days past due, the balance of the deal is cancelled. All payments must be made within 10 months). Total Price: $544 (Retail price: Altair $439, Memory $97, Postage and handling $8 — total $544) HARDWARE PRICES: Altair Computer kit with complete assembly instructions . . $439 Assembled and tested Altair Computer. - . . . . .$621 1,024 Byte Static Memory Card $97 kit and $139 assembled 2,048 Byte Static Memory Card $145 kit and $195 assembled 4,096 Byte Dynamic Memory Card $264 kit and $3311 assembled Full Parallel Interlace Card $92 kit and $114 assembled Serial Interface Card RS232) $119 kit and $138 assembled Serial Interface Card (TTL or Teletype) . $124 kit and $146 assembled Audio Cassette Record Interface $128 kit and $174 assembled COMTER II*. $780 kit and $92(1 assembled "The Cornier II Computer Terminal has a full alpha-numeric keyboard and a highly readable 32-character display. It has its own internal memory of 256 characters and complete cursor control. Also has its own built-in audio cassette interface that allows you to connect the Comter II to any tape recorder for both Storing data from the computer and feeding it into the computer. Requires an RS232 Interface Card. SOFTWARE PRICES: Altair 4K BASIC. . $350 Purchasers of an Altair 8800, 4K of Altair Memory, and Altair Serial I/O or Audio-Cassette I/O ONEY $60 AltairllK BASIC ... $500 Purchasers of an Altair 8800, 8K of Altair Memory, and Altair Serial I/O or Audio-Cassette I/O ONEY $75 Altair EXTENDED BASIC $750 Purchasers of an Altair 8800, 12K of Altair Memory, and Altair Serial I/O or Audio-Cassette I/O ONLY $150 Altair PACKAGE ONE {assembler, text editor, system monitor) Purchasers of an Altair 8800, 8K of Altair Memory, and Altair I/O ONLY $30 NOTE: When ordering software, specify paper tape or cassette tape. Warranty: 90 days on parts for kits and 90 days on parts and labor for assembled units. Prices, specifications, and delivery subject to change. Creative Electronics MITS/(»:J2H Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1*)51 MAIL THIS COUPON TODAY! D Enclosed is check for $ □ [JankAmcricard # □ or Master Charge # □ Altair 8W10 □ Kit □ Assembled D Options Inc lude $8 tor postage & handling (List on separate sheet) □ Altair lime Payment Plan □ Please send free literature NAME- □ Please send my order to different address (List on separate sheet) ADDRESS- CRY .STATE & ZIP_ MITS/6328 Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1951 NOTE: Personal checks take 2-3 weeks for clearance. For immediate processing send money order or use charge card. THE CURVE TRACER THAT WONT COLLECT DUST. The Hickok Model 440 semiconductor curve tracer is all purpose and convenient to use. It's the ideal instrument for testing, evaluating, classifying and matching all types of transistors, FET's and diodes. You'll get stable, full range dynamic displays that you can accurately scale right from the screen. ■ Pull-out card for easy, fast set-up and operation. ■ Set-up marks for rapid set-up of 80% of tests. ■ Unique INSTA-BETA display takes the guesswork out of transistor and FET parameter measurement. ■ In-or-out of circuit testing. ■ A full range professional tracer at a price you can afford - $1fiC00 AT YOUR DISTRIBUTOR ^AOiJ HICKOK the value innovator INSTRUMENTATION & CONTROLS DIVISION THE HICKOK ELECTRICAL INSTRUMENT CO. 10514 Dupont Avenue • Cleveland, Ohio 44108 (216)541-8060 • TWX: 810-421-8286 DIGITAL PERFORMANCE YOU CAN RELY ON The Hickok Model 334 DMM is a rugged, non-temperamental, hardworking tool that's easy to use and easy on your eyes. Hickok has established a unique reputation in digital electronics during the past 10 years. The Model 334 is another example of our engineering expertise — an economical lab quality instrument with exceptional durability and accuracy. ■ Easy reading, green fluorescent display ■ 3 1 /2 digit — auto polarity ■ 26 ranges including 200 mV AC & DC ranges ■ Fast response — 2.5 readings/sec Basic Accuracies (% of reading) DC Volts; ±0.2% (±0.5% on 200V, 1200V ranges) AC Volts; ±0.5% (±2.0% on 200 mV, 2V ranges) OHMS; ±0.5% DC Current; ±1.5% AC Current; ±2.0% AT YOUR DISTRIBUTOR $22900 HICKOK the value innovator INSTRUMENTATION & CONTROLS DIVISION THE HICKOK ELECTRICAL INSTRUMENT CO. 10514 Dupont Avenue • Cleveland, Ohio 44108 (216) 541-8060 • TWX: 810-421-8286 51 notes on parallel output interfaces by Carl Helmers Editor, BYTE One way to connect an extra output port for a teletype or other peripheral to your CPU is to make the interface simulate a memory address during the writing operations. This method is the one which is used for both the input and output functions in computers such as the PDP-11 of DEC, or the Motorola 6800 microcom- puter. The method can even be used to overlap a usable main memory address since the CPU could care less whether or not the addressed port is connected in addition to the proper main memory location! The same method can even be used on computers such as the Altair 8800 which split the CPU bus into two parts and thus complicate the interface picture. All of the microcomputers I have seen to date for the home brew computer market operate with a degree of parallelism at the bit level. Whether the chip is 4-bit, 8-bit or a 16-bitter, the concept of "parallel" data is built in. Data is parallel in nature if each bit has one line assigned to it and transfers of a group of such bits are always made simultaneously. Thus for example, the address lines used to select memory words are usually done in Fig. I. 8-bit bus output latch. BUS RECEIVERS (OPTIONAL) COMPUTER SIDE D2 + D3 + I D4 + D5 + D7^ Al + A2 + A3 + A4 + A5 + A 6 + A 7 + A8 + A 9 + AIO + All + A 12 + A 13 + A 14 + AI5 + RW + WRITE + TO PIN NO. I FIG 3 PULSE IC 7400 TO 0+ FIG 3 BUS BOUNCE 5 LDO + 4 LDI + II LD2 + 10 LD3 + 18 LD4+ / 17 LD5 + 22 LD6 + 21 LD7 + ONE-BYTE LATCHED DATA TO OUTSIDE WORLD POWER PINS +5V GROUND 7400 14 7 7404 14 7 74109 16 8 74100 24 7 52 in memory address space parallel in CPU designs of practical utility. With the bus oriented computer chips likely to be used for homegrown systems, it is possible to grab data from the busses by latching it in a register which listens to the bus continuously but is only written when the proper address is found. This article concerns such latching of output data and suggestions about several applications of the technique. The basic idea of the bus output is illustrated in Fig. 1. Fig. 1 shows a set of data lines (denoted D0+ to D7+ to indicate a positive logic definition) constituting an 8-bit data bus. In a 16-bit computer, this set of lines might be one or the other half of the 1 6-bit data bus, or the logic might be extended to 16 bits. Connected directly to the bus pins of the interface I have noted a set of "bus receivers". This circuit should be put in if necessary to maintain consistency of bus loading with all the other bus interconnects. For instance, with a tri-state 8833 circuit as the bus definer, up to 100 high-impedance PNP-input receivers (input side of 8833) can be connected to the bus. But put a TTL load on, and the fanout will be reduced considerably. (For an Altair 8800, the data bus is split into two components: in and out. The principle of minimizing the loading of the Altair drivers (TTL) would indicate use of a low power (74Lxx) device as the bus receiver. A non-inverting receiver is to be preferred in order to keep the same logical sense of the data to be stored in the latch.) Following the bus receiver, a latch is shown. The latch illustrated with its pinouts is the 8-bit, 24-pin package called a 74100. Alternate circuits for this function include a pair of 7475s, or even four dual master slave flip flop packages, such as 7473s. In general, it will pay to use the larger scale of integration from a power- budget standpoint. Consider the specs for two 7475s (64 mA) versus four 7473s (80 mA). For a sixteen bit output, all that is required is to double the number of bits used for the latch. The latch is used for only one purpose — to hold the data after it is stored, until updated by a later write to the same location. A latch is required to buffer the output logically in many instances of I/O devices. A primary example of such a case is an output which needs stable data for a much longer period than the short CPU-cycle during which data is stable at the output of bus receivers. If you interface your computer bus to one of the Burroughs SELF-SCAN display devices with the memory option, for instance, your data must be stable for a long period of time (about 60 microseconds). This requirement is necessitated by the need to wait for the shift register memory to cycle around to the proper position for entry of new data. If your interface is to a digital to analog converter (DAC) presenting a gain control voltage to a computerized audio mixing panel, then you would want the control signal to stay stable for all time until explicitly altered by the CPU. Fig. 1 is completed by the notation of a big mostly- blank box. Big blank boxes with labels in them are a way of saying "here is a function, but I haven't told you what it is in detail." In this case the function is address decode and control logic for grabbing output data. I have drawn the box with inputs indicated from 1 6 bits of addressing, an "RW+" signal and a "0+" signal. The logic of this box will respond to a specific address in order to generate a negative logic (WRITE-) pulse which is inverted and used to latch the data at the correct time. The definition of the specific address desired and the decoding are both considered a bit later when Fig. 2 is discussed. The "RW+" signal controls the direction of the CPU's data transfer. If it is logic "1" (high level) then the CPU is attempting to read data from the bus and no clock pulse is allowed to reach the latch, even if the address bits A0+ to A1 5+ match the desired address. If "RW+" is low, then the CPU is sending data out and a clock pulse is allowed through the address decode and control logic. The clock pulse is taken from the CPU supplied clock 0+ and is "Big blank boxes with labels in them are a way of saying 'here is a function, but I haven't told you what it is in detail.' " "The method can even be used to overlap a usable main memory address since the CPU could care less ..." 53 cascading input for equality is used to enable the comparison: the AND gate "E" detects a CPU write operation as the simultaneous occurrence of the clock 0+ and a low state of RW+. Fig. 2. Single-address 16-bit decode with 7485. "Xn " (n=Q to 1 5) is logical 1 or defining desire address. RW+- PULSE ONLY IF WRITE CYCLE AO + - A I + - A2+- A3+- A4 + - A5 + - A6+- A7+- ® 74 8 5 INPUT OUT > < F -XO+ -X| + -X2 + -X3 + In H2_ IN ® 7485 INPUT o. P 15 -X4+ -X5 + -X6 + -X7 + zy WRITE PULSE 7420 a positive logic signal indicating that valid data is present. Assuming you actually want to grab some data off the bus at a specific location when it is referenced, how can you implement the address decode and control function? Fig. 2 is a suggestion of one method to accomplish this function for a specific I oca t ion at a co ns i de rable price in hardware: using more than one memory location defined POWER CONNECTIONS + 5V GROUND 7485 16 8 7420 14 7 in this way would rapidly lead to a large parts count for 7485s as decoding logic. The basic idea of Fig. 2 is to use the 7485 comparator circuits to check for equality between the address lines A0+ to A15+ and a set of "desired address" definition lines, X0+ to XI 5+. The comparison is done as four groups of four bits, and a parallel logical product (AND) of the results of all four bit-group comparisons is performed by the 7420. The comparators' A Hardware Memory Contents Monitor A particular application for which single-address decoding might be useful is as a debugging tool based on this circuit, used to monitor the last content written into a specific location. Such a debugging tool can be built by defining the X0+ to XT 5+ address lines as the outputs of a set of four hexadecimal switches or six octal encoded switches, hand set from the panel of the debugging instrument. Then the outputs of the latch circuit might be routed to a set of hex or octal LED drivers so that a display of each number written might be obtained. A more general variation of the same theme would be attainable as a bus monitor device if the gate E of g Fig. 2 is eliminated entirely and the clock 0+ is simply used as the enable condition of the comparators (pins 3 get 0+). Then the "memory contents monitor" always shows the contents of the memory bus at the time it was last used with the desired address. Adding a Longer Clock It is often necessary to obtain a clock signal which is longer than the original latching clock. In such cases the longer clock must also occur during a time when the latched data is stable, i.e., after the CPU is finished with its addressing of the output latch. One way to generate such a delayed longer clock is to use the analog timing elements called "one shots" — such as the 74122 or 74123 circuits. In order to do so, however, you will have to calculate a bunch of resistor 54 Fig. 3. Generating a longer clock digitally. EXTWRITE + 7404 JT^ _TT 7400 FROM FIG I I SET-RESET FLAG s-l WRITE- | |0+ 2 — f — * " L0GIC4- f — CLR PRE J+ Q + K- 0- CLK d 7400__ 6 14 • — 15 II \ / 74109 DIGITAL SYNCHRONOUS ONE-SHOT CLR PRE J+ Q + B K- 0- CLK 12 and capacitor values for the delays, put in your nearest approximations and cross your fingers. A better way to achieve a deterministic system is to use entirely "synchronous" logic concepts and delays implemented with gates and flip flops. Fig. 3 and its corresponding timing diagram Fig. 4 is a detail of one method to cue a long but delayed clock pulse. The basic idea is to set a flag (the SR flip flop formed by the two NAND sections and labelled "flag") when the I/O write occurs. This flag becomes data which will get clocked synchronously into flip flop A, then into flip flop B. The output of flip flop B is used to enable a reset pulse to the flag, which brings the system into a stable quiescent state until the next output WRITE- pulse occurs. The timing diagram of Fig. 4 illustrates how the synchronous operation produces an auxiliary pulse (Q+- of flip flop B) which is 2 clock periods in length. This clock is delayed with respect to setting the flag by the original WRITE- pulse, but the delay is fixed and synchronous due to the fact that the actual clock (or its inverted e derivative) is used to cause all state changes of the flip flops. Fig. 4. Timing: external write vs. buffer write. *2 + WRITE + | j Q+OF FLAG + Q+OF A Q+OF B WRITE+ p> B BUFFER WRITE EXTERNAL WRITE J~L TIME SEPARATION pi ■ .OR. 55 Son of Motorola (or,the$20CPU Chip) Would you believe - another microprocessor? You bet. The calculator firm, MOS Technology of Norristown, Pennsylvania, has just recently announced a new microprocessor which combines plug in compatibility with the Motorola 6800 and a new instruction set to come out with yet another option for microprocessor users - but at a price of $20 in single quantities. Here comes the under $200 processor kit? Not quite yet, but maybe within a year or two. (It's already to the point where the sheet metal and transformer iron of a home computer often cost more than all the silicon products which make it work . . . this new low on CPU prices just compounds the problem.) It may be three to six months before you see one of these new MCS6501 processors designed into a kit, so Dan Fylstra in his article covers quite a few details of the Motorola 6800 by way of comparison with "Son of Motorola. " We thought that the "age of the affordable computer" had arrived when you could buy a microprocessor chip for $150. But the potent combination of new technology and free enterprise has brought about developments beyond our wildest expectations. So now you can buy your microprocessor brand new, in single quantities, for $20. The new offering is from MOS Technology, Inc., and is pin-compat'ible, but software-incompatible with the Motorola 6800 microprocessor. Although it will be a while before the new chip finds its way into rcady-to-build kits for the hobbyist (after all, the first Motorola 6800 kits have just been announced), the news should be of interest to nearly every home brew computer experimenter. So here's a comparison of the Motorola 6800 and the MOS Technology 6500 series, based on the information presently available. If you aren't already familiar with the Motorola microprocessor, don't worry — we'll cover its major features in the course of the comparison. Hardware Comparison Both the Motorola 6800 and the MOS Technology chip are TTL-compatible devices, operating from a single five volt power supply. Like earlier microcomputers, such as the Intel 8008, 8080 and National PACE, these processors make use of a bidirectional data bus, to which both memory and input/output devices may be connected. However there are no special input/output instructions in the instruction repertoire of either the Motorola or MOS Technology microprocessors. Output of a character, for example, is accomplished by storing a value into a certain memory location, which is in reality a special register inside an external I/O interface chip, connected to the data bus just like any other RAM or ROM chip. Motorola supplies a Peripheral Interface Adapter (PIA) chip which connects to the data bus for 8-bit parallel I/O, and an Asynchronous Communications Interface Adapter (ACIA) for bit-serial input/output. (The ACIA is simply a type of UART, as discussed in Don Lancaster's September article on serial interfaces. It may be used to connect a teletype or CRT terminal to the micro- computer system.) MOS Technology plans to supply a similar set of chips. Most of the time, data is being transmitted between the microprocessor and the by Daniel Fylstra Associate Editor, BYTE 25 Hancock St. Somerville MA 02144 memory chips over the data bus. But the processor can also disconnect itself from the bus, enabling, for example, a data transfer to take place directly between an I/O device and memory. Both the Motorola 6800 and the MOS Technology chip have three-state buffers for the eight data lines, enabling them to disconnect from the bus in this fashion. But the Motorola also has three-state buffers on its 16 address lines, whereas the MOS Technology chips do not. This would be used, for example, in a floppy disk controller which is capable of transferring a whole block of many bytes of data in response to a single command from the CPU. The controller would present a series of addresses on the 16 address lines, and data bytes on the data lines, causing the bytes to be stored in a series of locations in some RAM chip on the bus; all this would take place in the intervals when the CPU itself was disconnected from the bus. As a practical matter, however, small systems do not require this kind of direct memory access (DMA) capability, and larger systems with more devices on the bus will require buffers on the 56 Ready or not, here I come: 6800 to 6501. address lines to supply the necessary power — and these buffers may as well have three-state outputs. The other major hardware difference between the Motorola 6800 and the MOS Technology 6500 series is that the MOS Technology chip has an 8080-style Ready line, whereas the Motorola 6800 does not. The Ready line is used to make the microprocessor wait for a variable length of time before going on with the execution of an instruction. This feature makes it easy to use the less expensive memory chips, especially for Programmable or Erasable Read-Only Memory (PROM or EROM) which are not as fast as the CPU itself. It is possible to use such devices with the Motorola 6800, of course, by stretching out one of the clock phases to as long as five microseconds. But the availability of the Ready line on the MOS Technology chip is certainly a convenience, and allows you to use extremely slow memories if you wish. The MCS6501, first in the MOS Technology 6500 series, requires the same type of external clock as the Motorola 6800. But for $25 you can have the MCS6502, which includes an on-the-chip clock, driven by an external single phase clock or an RC or crystal time base input. As the manufacturer suggests, it is probably cheaper in an original design to use the MCS6502 than to provide the external logic to generate the two-phase clock. To sum up, both the Motorola 6800 and the MOS Technology have comparable features with some differences. In terms of hardware differences, the MOS Technology Ready line is probably more valuable than the three-state address line buffers available on the Motorola 6800. A final hardware advantage possessed by the MOS Technology chip is speed. The Motorola 6800 cycle time is one microsecond (1 MHz clock rate), and a typical instruction takes about three clock cycles. While the cycle time of the MOS Technology chip is nominally the same, the company has hinted broadly that the chip can be run at clock rates of 2 or even 3 MHz. Of course, one would have to use faster and more expensive memory chips to take advantage of this increased speed. In addition, certain critical instructions take fewer cycles on the MOS Technology chip. An STA (store accumulator) instruction referencing an Table I. Functionally equivalent instructions for both the Motorola 6800 and MOS Technology MCS6501 microprocessors. The mnemonics are Motorola's. Of course, these instructions operate on the A accumulator only in the MCS6501, but can address either accumulator in the Motorola 6800. The BIT instruction (*) has a different effect on the V and N processor flags in the MCS6501. ADC DEX AND EOR ASL INC ASR INX BCC JMP BCS JSR BEQ LDA BIT* LDX BMI LSR BNE NOP BPL ORA BVC PSH BVS PUL CLC ROL CLI RTI CLV RTS CMP SBC CPX SEC DEC SEI STA STX TSX TXS arbitrary location takes 4 cycles, versus 5 for the Motorola, and a JSR (jump to subroutine) instruction requires 6 cycles, as opposed to 9 on the 6800. Conditional branches take 4 cycles on the Motorola microprocessor, while they take 2 cycles if the condition is false and 3 if it is true on the MOS Technology chip. Because these instructions are so frequently executed in most programs, the 6500 series should enjoy a performance edge over the Motorola 6800 even at the same clock rate. Software Comparison We can treat the instruction set architecture of the two processors in two stages, first considering the facilities for manipulating data and then dealing with the facilities for manipulating addresses. Both features are important to the overall effectiveness of the processor design. Data Manipulation The instructions for manipulating data arc quite similar on the two processors. There are two major differences: First, the Motorola 6800 has two 8-bit accumulators, A and B, while the MOS Technology chip has only one accumulator, A. Second, in addition to conditional branches for unsigned comparisons, the Motorola 6800 has special branch instructions for signed comparisons, but the MOS Technology chip does not. (The signed comparisons treat the two values as positive or negative numbers in two's complement notation, in the range -128 to +127. For example, —1 is represented as 2 8 -1 = 11111111. An unsigned comparison would treat this quantity as the largest possible (8-bit) value, whereas a signed comparison would treat it as smaller than, say, zero.) Table I lists the instructions which are the We thought that the "age of the affordable computer" had arrived when you could buy a microprocessor chip for $150. But the potent combination of new technology and free enterprise has brought about developments beyond our wildest expectations. same for both processors, wh il e Table II lists instructions on the Motorola 6800 which must be replaced by more than one instruction on the 6500 series microprocessors. Some of the instructions omitted on the MOS Technology chip are merely incidental; others are more serious. The lack of signed comparisons represents a real inconvenience in many applications. The lack of a simple ADD instruction means that an operation such as A = B + C on one-byte operands must be coded with a "Clear Carry" (CLC) as in this example: CLC LDA B ADC C STA A on the MOS Technology chip. On the other hand, a computation such as A = B + C — D could be coded as CLC LDA B ADC C SBC D STA A assuming that the inclusion of "carry" in both operations is indeed desired. Less serious but still irritating are the absence of the ROR (rotate right), NEG (negate) and COM 57 Table 11. Motorola 6800 instructions which have no direct equivalent in the MCS650J. The information in this table is taken from MOS Technology documentation on the 6500 series. Motorola 6800 Instruction Equivalent 6500 Series Sequence ABA No B accumulator ADD CLC, ADC BGE loc BMI *+6, BVC loc, BVS *+4, BVS loc BGT loc BMI *+6, BVC *+6, BVS *+6, BVC *+4, BNE loc BHI loc BCS »+4, BNE loc BLEIoc BEQ loc, BMI *+6, BVS loc, BVC *+4, BVC loc BLS loc BCS loc, BEQ loc BLT loc BMI *+6, BVS loc, BVC *+4, BVC loc BRA JMP BSR JSR CBA No B accumulator CLR [loc] LDA #0, [STA loc] COM [loc] [LDA loc] , EOR #$FF, [STA loc] DAA Replaced by SED DES Use PHA INS Use PLA LDS loc LDX loc, TXS NEG [loc] EOR #$FF, ADC #1 [or LDA #0, SBC loc) ROR [loc] [LDA loc] , PHP, LSR, PLP, BCC *+4, ORA #$80, [STA loc] SBA No B accumulator SEV LDA #1, LSR STS loc TSX, STX loc SUB CLC, SBC SWI BRK saves state without transferring control TAB No B accumulator TAP PHA, PLP TBA No B accumulator TPA PHP, PLA TST BIT#0 WAI JMP * op disp, X LDY #disp, op <2>loc, Y [indexed addressing mode] [indirect indexed addressing mode] (complement) instructions, as well as single-byte instructions to increment and decrement the accumulator. Probably the least significant difference is the omission of the B accumulator on the MOS Technology chip. This is more than made up for by the availability of an extra index register (see below). All in all, the Motorola 6800 comes out ahead when considering facilities for manipulating data, the most important point in its favor being the availability of the signed comparisons. Generally speaking, however, the basic instructions available on the two processors are quite similar. Address Manipulation The greatest architectural differences between the two processors lie in their facilities for manipulating addresses, or their "addressing modes" - and here the MOS Technology chip has much more to offer. The two microprocessors are the same in one respect: both have special "short forms" of most instructions for referencing the first 256 bytes of memory. This is called "direct addressing" on the Motorola 6800, and "zero page addressing" on the MOS Technology chip. As an example, the most general LDA (load accumulator) instruction is three bytes long; the second and third bytes form the effective address (0-65535), which can reference any byte in memory. The short form of the LDA instruction, however, is two bytes long; the second byte forms the effective address (0-255) of a byte in the first "page" of memory. The "short form" instructions generally take one fewer clock cycle to execute, since only two rather than three instruction bytes must be fetched from memory. The major differences between the two processors lie in the important area of indexed addressing. The Motorola 6800 has a single 16-bit index register, called X. Essentially all instructions have an indexed addressing form, in which a one-byte displacement (0-255) is added to the address in the index register to form the effective address. The MOS Technology chip, on the other hand, has two 8-bit index registers, called X and Y. All of the computational instructions have indexed addressing forms in which either a one- or two-byte base address is added to the contents of either the X or the Y register to form the effective address. Which approach is the better one? For the purpose of accessing elements of arrays, or tables of many identical elements, the MOS Technology chip comes out way ahead. This is partly due to the lack of certain critical instructions on the Motorola 6800, such as an instruction to add the contents of an accumulator to the index register, or even to transfer the value in the accumulators to the index register. Suppose that we wish to add the Ith element of an array, S|, to another variable, T. In general, the array may be located anywhere in memory, and the subscript I may be the result of some calculation done in the accumulators. Letting S denote the address of the zeroth element (the base address) of the array, and assuming that the value of the subscript I is already in the A accumulator, consider the instructions necessary to accomplish this operation on the two processors. The biggest difference is in the area of addressing modes, an area where the 6500 series devices far outshine the Motorola 6800. 58 On the Motorola 6800, our first try yields the following: SHI EQU S/256*256 CLR B ADD A#S-SHI ADC B #S/256 STA ATEMP+1 Calculate the indexed address STA BTEMP LDX TEMP LDA A 0, X ADD AT STA AT Perform desired computation This instruction sequence requires 19 bytes, counting the two-byte temporary TEMP and assuming that TEMP and T are located in the first 256 bytes of memory. Since the array S could be anywhere in memory, we were unable to use the displacement field of an instruction with indexed addressing for the array base address, and instead we had to add the array base to the index (in double precision), store the result in memory, load it into the index register, and finally reference the array element S|. We can improve on this with the aid of a little lateral thinking. Noticing that the 6800 is actually capable of adding a one-byte quantity to a two-byte address, but only in a storage reference with indexed addressing, we will split up the base address into two parts to arrive at a better solution: SHI EQU S/256*256 STA ATEMP+1 LDX TEMP LDA AS-SHI, X ADD AT STA AT TEMP FDB SHI This instruction sequence requires only 12 bytes, under the same assumptions. Even so, we can't match the simplicity of the solution to the same problem on the MOS Technology chip: TAX LDA S, X ADDT STA T This instruction sequence requires only seven bytes. Only four bytes were needed to reference the element S|, versus eight for the Motorola 6800. How important is this improvement? It is certainly significant, since arrays and tables are used so frequently in programs of any size. On the other hand, in many applications it is only necessary to reference each element of an array in turn; it is not necessary to access elements randomly based on a computed subscript. In this case, we can obtain better code on the Motorola 6800 by first loading the array base address into the index register, and then referencing each element directly (i.e., with a zero indexed address displacement), incrementing the address in the index register using the INX instruction to proceed from element to element. We are therefore using the 6800's index register to hold a pointer or indirect address rather than an index. An even more important difference between the two microprocessors in that the MOS Technology chip possesses two (8-bit) index registers, X and Y, whereas the Motorola 6800 has only one (16-bit) index register X. As we shall see, two index registers are far more valuable than two accumulators. This is because p rograms frequently manipulate two (or more) tables, or other indirectly addressed variables, at the same time. As an example, we will consider perhaps the simplest operation of this type, the problem of moving a string of bytes from one area of storage to another. Assume that 20 bytes, starting at the location denoted by the symbol FROM, are to be moved to the area starting at the location denoted by the symbol TO. On the Motorola 6800, we can write the following routine: LOOP LDX FRPTR1 Fetch LDA A O, X J FROM LDX TOPTR" STA A O, X . INC FRPTR" INC TOPTR DEC COUNT BNE LOOP Test continuatio FRPTR FDB FROM TOPTR FDB TO COUNT FCB 20 This routine requires 24 bytes, including the working storage locations, and executes in 820 clock cycles. This routine can move up to 256 bytes. On the MOS Technology chip we have the following solution: LDX #0 LDY #0 LOOP LDA FROM, X STA TO, Y INX INY DEC COUNT BNE LOOP COUNT FCB 20 Two index registers are far more valuable than two accumulators. This routine requires 17 bytes, and executes in 404 clock cycles. The improvement in speed clearly depends on the number of bytes to be moved; each pass through the loop in the Motorola 6800 routine takes 41 clock cycles, while each pass through the loop in the MOS Technology routine takes 20 cycles. (The MOS Technology routine is also limited to moving at most 256 bytes.) Once again the degree of improvement is substantial, and the improvement is Move TO change pointers 1 l 2 t 3 I 4 I 5 I 6 ! 7 8 9 10 i 1 1 12 13 14 15 16 17 18 19 20 v ss O Reset _J Halt TSC Z3 01 N.C. zn Frq 02 =i VMA DBE m NMI N.C. ZD BA R/W =] v C c DO Z3 AO D1 Z3 A1 D2 =1 A2 D3 ZD A3 D4 =3 A4 D5 =3 A5 D6 m A6 D7 za A7 A15 =i A8 A14 Z] A9 A13 13 A10 A12 _D A11 v S s =1 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Fig. 1. The pin assignments of the Motorola 6800 (and by implication, the MOS Technology MCS6501). V S S > s ground (0 volts) and Vqc is +5 volts. The A lines are address outputs, and the D lines are bidirectional tristate data bus lines. For details see the Motorola and MOS Technology documentation of these parts. 59 7 ACCA 7 ACCB 15 15 PC 15 Accumulator A Accumulator B Index Register Program Counter Stack Pointer Condition Codes Register L Carry (From Bit 7) — Overflow — Zero — Negative — Interrupt — Half Carry (From Bit 3) Fig. 2. The programmer's view of the 6800 CPU. This diagram, excerpted from the Motorola 6800 documentation, shows the various registers of the CPU including the processor's condition code register. Note the similarity to the MCS6501 in Fig. 3. significant because this type of problem arises so frequently in large programs. The MOS Technology chip has some additional addressing modes not possessed by the Motorola 6800. First, there is a "short form" for instructions with simple indexed addressing if the array base address is in the first "page" (256 locations) of memory. This feature is of somewhat limited use except in very small programs, since only a few small arrays can actually be placed in the first 256 locations. Of greater interest is the so-called "indirect indexed" addressing mode. Instructions with this type of addressing are two bytes long; the second byte specifies the address of a two-byte constant in the first page of memory. This two-byte constant then becomes the "array base address," and the contents of the Y register are added to this constant to form the effective address. This addressing mode is very useful: In a program with many references to a particular array or table which is too large to place in the first page of memory, one can trade space for time by placing the array base address in the first page of memory, and then referencing elements of the array using indirect indexed addressing. Each element reference takes less space (two bytes instead of three) but more time (five cycles instead of four) than would be required for ordinary indexed addressing. There are two other addressing modes on the MOS Technology chip which are somewhat less useful. The first is called "indexed indirect" addressing: Here the contents of the X register are added to a one-byte base address to obtain the address of a two-byte constant in the first page of memory. The contents of this two-byte constant then becomes the effective address. Unfortunately this addressing mode is not available for the J MP instruction, where it would be most useful: It could be used to implement a "jump table," or a "computed GO TO" or "CASE statement" in some high-level languages. Finally, two other addressing modes are used with branch instructions: One unfortunate feature of the MOS Technology chip's many addressing modes is that they do not apply consistently to all instructions. 15 r L 15 r L A 15 r L Y 15 r L_ X 15 1 1 PCH PCL 15 I/O REGISTERS ACCUMULATOR INDEX REGISTER Y INDEX REGISTER X PROGRAM COUNTER STACK POINTER PROCESSOR STATUS REGISTER. -CARRY (BIT 71 -ZERO - INTERRUPT DISABLE - DECIMAL MODE - BREAK COMMAND " FORTHCOMING FEATURE -OVERFLOW -NEGATIVE Solid line indicates currently available leatures Dashed line indicates lorihcoming members of lamih Fig. 3. The programmer's view of the MCS6501 CPU. This diagram, excerpted from the MOS Technology 6500 series preliminary documen- tation, shows the various registers of the CPU. Note the similarity to the Motorola 6800 diagram in Fig. 2. 60 Table III. Instructions, addressing modes and execution times for the Motorola 6800 processor. Execution times are in "machine cycles" which for a 1.0 MHz clock take 1.0 microsecond apiece. This table is excerpted from Motorola documentation on their processor. c i O 3 Q X u u < ■o 1 E Q ■o C HJ c E or ■o e o Q X u o < • 1 E Q S c UJ C Q. E ABA • • « • 2 INC 2 6 7 • ADC X 2 3 4 5 INS a • 4 ADD X 2 3 4 S INX • • 4 AND X 2 3 4 5 JMP 3 4 a ASL 6 7 JSR 9 8 a ASH 6 7 LDA x 2 3 4 5 a BCC 4 LDS 3 4 5 6 s BCS 4 LDX 3 4 5 6 • BEA 4 LSR 6 7 a BQE 4 NEQ 6 7 a BGT 4 NOP a • 2 BHI 4 ORA X 4 5 a BIT X • PSH # • 4 BLE 4 PUL a a 4 BLS 4 ROL 6 7 • BIT 4 ROR 6 7 a BMI 4 RTI • • 10 BNE 4 RTS a a 5 BPL 4 SBA • a 2 BRA 4 SBC X 4 5 a BSH 6 SEC a • 2 BVC 4 SEI • a 2 BVS 4 SEV • • 2 CBA 2 STA x 4 5 6 a CLC 2 STS 5 6 7 a CLI 2 STX S 6 7 a CLR 6 7 • SUB X 3 4 5 a CLV • • 2 SWI 12 CMP X 4 S a TAB 2 COM 6 7 a TAP ? CPX 5 6 • TBA 2 DAA • • 2 TPA 2 DEC 6 7 • TST a DES • • 4 TSX 4 DEX • • 4 TSX 4 EOR X 2 3 4 5 • WAI 9 NOTE: Inierrupl tirm is 12 eye es f Om he end of the instruction being ex jcuted. except follow ng a WAI instruction Then it i 4 cycles. Which processor comes out ahead overall? To a great extent it depends on your point of view: Systems programs are better on the MOS Technology machines; applications programs would tend to come out ahead on the Motorola 6800. consistently to all instructions. For example, the binary arithmetic instructions are available with essentially all addressing modes, but the unary arithmetic instructions are missing the Y-register and indirect modes, and the BIT instruction is missing several others as well. This not only makes programming more difficult, since one must constantly check to see which instruction forms are legal, and program around the exceptions; it also makes the design of an assembler or compiler more complicated. A compiler, in particular, would require complex logic to determine when it could and could not take advantage of the addressing modes. In summary, the MOS Technology chip comes out ahead when considering facilities to manipulate addresses, and in many cases the advantage realized due to the availability of the extra addressing modes is substantial. The greatest failing of the 6500 series design is the inconsistent availability of the addressing modes from instruction to instruction. Which processor comes out ahead overall? This is very difficult to judge. It depends partly on whether the programs being executed on the microcomputer are "system" programs, such as compilers, interpreters and I/O controllers, which tend to make heavy use of address "Relative" addressing, available on both the Motorola and the MOS Technology processors, is used with the conditional branch instructions, which are two bytes long. The second byte of such an instruction specifies a positive or negative displacement in two's complement notation (-128 to +127). The destination address of the branch is taken to be the algebraic sum of the address of the byte immediately f ol lowing the branch instruction and this displacement. Of course, this means that it is possible to branch directly to a location within only a certain limited distance from the branch itself; but, more often than not, the range of —128 to +127 bytes is adequate, and a space savings is realized in comparison to processors such as the Intel 8080 which have only three-byte branch instructions. If necessary, a conditional branch can always transfer to a three-byte unconditional JMP instruction, which can jump to any location in memory. On the MOS Technology chip, a JMP instruction can also specify "absolute indirect" addressing: In this case, the second and third bytes of the instruction specify the address of a two-byte constant anywhere in memory, and the contents of this two-byte constant becomes the destination address for the jump. One unfortunate feature of the MOS Technology chip's many addressing modes is that they do not apply Table IV. Instructions, addressing modes and execution times for the MOS Technology MCS6501 processor. Execution times are in "machine cycles" which for a 1.0 MHz clock take 1.0 microsecond apiece. This table is excerpted from MOS Technology documentation on their processor. x > x >- : > - liSggllllllfl <£NNN<<«trrr=. = < ADC 234 44-4" . 65*. JSR AND 2 3 4 4 4-4*. 65* LDA ASL 2.56.67 LDX BCC 2". . . LDY BCS 2". LSR BEO. , 2". . . NOP BIT .3.4 ORA BMI 2". . PHA BNE 2" . PHP BPL 2". . . PLA BRK PLP BVC 2". . . ROL BVS 2". , . RTI CLC . . 2 . . . . RTS CLO 2 SBC CLI 2 SEC CLV 2 ... SED CMP 2 3 4 4 4* 4* . 6 5* SEI CPX 2 3.4 STA CPY 23.4 STX DEC 5 6.67 STY DEX 2 TAX DEY 2 TAY EOR 234. 44*4*. .65 TSX INC .5667. TXA INX 2 , TXS INY 2 . . . . TYA JMP 3 5 Add one cycle il indexing across page boundary ** Add one cycle if branch is taken. Add one additional ■! E -8 S * 3 I i page boundary 61 In favor of the 6500 series are price and speed; in favor of the 6800 are availability and very good Motorola documentation. manipulation facilities; or application programs, which make greater use of data manipulation facilities. One would expect better results in the former case with the MOS Technology chip, and in the latter case with the Motorola 6800. One would also expect the MOS Technology chip to enjoy an advantage on large programs, since larger programs inevitably tend to make use of tables, subroutines with parameters, and other forms of address manipulation. All in all, the Motorola 6800 comes out ahead when considering facilities for manipulating data . . . but nevertheless the two processors are quite similar. Against these factors one must weigh the availability of an excellent applications manual, proven software, and kits for the hobbyist for the Motorola 6800 microprocessor. At the same time, the MOS Technology chip's price can't be beat, and its speed advantage may be important for some purposes. At the time that this article is being written (late August), the MOS Technology chip is just a promise: The chip should be available for purchase at the Western Electronics Conference (Wescon) in San Francisco, September 16-19. By the time you read this, the chip itself should be in the hands of at least a few hobbyists. Let's have some letters to BYTE describing initial experiences with the new microprocessor! Send your comments to the author or to the editor of BYTE. In the meantime, we'll be waiting to see what new surprises the semiconductor houses and kit manufacturers have in store for us. And BYTE will try to keep you up to date on the latest developments in the world's hottest, fastest-moving hobby — home computers! Table V. MCS6501 microprocessor instructions, listed in alphabetical order by mnemonics. The instructions with asterisks are similar to the same mnemonics in the Motorola 6800 processor. •ADC Add with Carry to Accumulator *JSR Jump to New Location Saving Return Address 'AND "AND" to Accumulator •LDA Transfer Memory to Accumulator *ASL Shift Left One Bit (Memory or Accumulator) •LDX LDY Transfer Memory to Index X Transfer Memory to Index Y 'BCC Branch on Carry Clear •LSR Shift One Bit Right (Memory or Accur nulator) •BCS Branch on Carry Set •BEQ Branch on Zero Result NOP Do Nothing - No Operation 'BIT Test Bits in Memory with Accumulator •0RA "OR" Memory with Accumulator "BMI Branch on Result Minus *PHA Push Accumulator on Stack •BNE Branch on Result not Zero PHP Push Processor Status on Stack *BPL Branch on Result Plus •PLA Pull Accumulator from Stack •BRK Force an Interrupt oi Break PLP Pull Processor Status from Stack •BVC Branch on Overflow Clear *R0L Rotate One Bit Left (Memory or Accu mulator) •BVS Branch on Overflow Set •CLC Clear Carry Flag •RTI Return From Interrupt CLD Clear Decimal Mode •RTS Return From Subroutine •CLI Clear Interrupt Disable Bit •SBC Subtract Memory and Carry from Accumulator *CLV Clear Overflow Flag •SEC Set Carry Flag •CMP Compare Memory and Accumulator SED Set Decimal Mode •CPX Compare Memory and Index X *SEI Set Interrupt Disable Status CPY Compare Memory and Index Y •STA Store Accumulator in Memory "DEC Decrement Memory by One *STX Store Index X in Memory •DEX Decrement Index X by One STY Store Index Y in Memory DEY Decrement Index Y by One TAX Transfer Accumulator to Index X *E0R Exclusiveor Memory with Accumulator TAY Transfer Accumulator to Index Y •INC Incremeni Memory by One *TSX Transfer Stack Register to Index X •INX Incremem X by One TXA Transfer Index X to Accumulator INY Increment Y by One *TXS Transfer Index X to Stack Register •JMP Jump to New Location TYA Transler Index Y to Accumulator More information on the 6500 series microprocessors is available from: MOS Technology, Inc. Valley Forge Corporate Center 950 Rittenhouse Rd. Norristown PA 19401 1-215-666-7950 I n formation on the Motorola 6800 micro- processor is available from many local distributors, and from: Motorola Semiconductor Products Inc. Box 20912 Phoenix AZ 85036 GLOSSARY BYTE's Board of Resident Inexperts (BRI) has ruled the following terms to be worthy of further explanation. This list is probably not complete - readers who would like further explanation of terminology are invited to write a letter to the editor identifying terms which need such treatment. 8-Bit Bidirectional Bus — a "data bus" which simultaneously transmits eight separate signals corresponding to one byte's worth of information. The bi- directional aspect means that either tristate, open collector or similar form of output stage is used, so that multiple drivers can be tied in common with only one such driver active at any time. A given board, CPU, output terminal or other logic circuit can then interface to the bus (with some addressing and master timing control intelligence) for both sending and receiving data. Effective Address - whenever the computer's CPU addresses memory, it must send out 16 bits (for Motorola 6800, MCS 6501 or other similar chips). The way in which these 16 bits are derived can often be a fairly elaborate procedure, as well as a simple absolute expression. Whatever the method of derivation, however, the result is a 16-bit value which is used to address memory, called the effective address because it is what actually does go out to memory regardless of the details of the internal codes of the program. Instruction Repertoire - the repertoire of a musician is the set of all pieces he or she can play well in concert. Well, the repertoire of a computer - its instructions - is the list of all the instructions it can perform and their definitions. Subscript - in typical high order languages, a means is provided to specify elements of arrays of data. This is done by subscripts to indicate the "nth" element for subscript "n". Use of such notation presents the problem of calculating the effective address of the actual data being referenced. In the context of evaluating a CPU, attention spent on the problem of calculating effective addresses from subscripts is very fundamental. Time Base - whenever it is necessary to examine the relative timing of different signals, it is necessary to have a reference point and a scale for making the measurement. This is the "time base" of the reference. TTL compatible - one of the largest families of integrated circuits is the line of "transistor-transistor logic" devices, TTL for short. A TTL compatible line of some non-TTL device can "drive" one or more TTL loads if it is an output, or can receive a TTL device's output if it is an input. There are various cautions to be observed - probably worthy of a BYTE article — when different types of logic are interfaced, but the phrase "TTL compatible" usually means that the compatible device can be wired directly to TTL interconnection pins safely in at least one configuration. Unary - this term is derived from the Latin roots of "oneness." A unary operation is an operation which has but one operand, for example the complement opera- tion of a Motorola 6800 CPU. 62 A PRECISION WAVEFORM GENERATOR AT A PRICE YOU CAN AFFORD. The Hickok Model 270 Function Generator gives you a lot more waveform generating capability than you'd expect for its price. ■ Puts stable, calibrated, high quality sine, square and triangle waveforms from 1 Hz to 500 kHz at your fingertips. ■ With external connections you can produce logic pulses, sweeps and ramps, AM and FM outputs, phase and frequency shift keying signals, tone bursts and more. ■ Its an audio generator and much more. AT YOUR DISTRIBUTOR $16600 HICKOK the value innovator INSTRUMENTATION & CONTROLS DIVISION THE HICKOK ELECTRICAL INSTRUMENT CO 10514 Dupont Avenue • Cleveland, Ohio 44108 (216)541-8060 • TWX 810-421-8286 TROUBLED BY TRIGGERED SCOPES? The Hickok Model 512 Dual Trace Oscilloscope eliminates the set-up and precision problems you've had to accept using other triggered scopes. It's easy to set up ■ Simplified color-coded front panel controls. ■ Beam finder quickly locates off-scale traces. ■ Foolproof triggering to 15 MHz. It gives you superior performance ■ 10 MHz response flat within 3dB. Excellent pulse response. ■ 3% accuracy on vertical and hori- zontal ranger. Hickok industrial lab quality and con- struction Glass epoxy PC boards used through- out. Regulated power supply. AT YOUR DISTRIBUTOR ^Q/S complete with probes and accessories HICKOK the value innovator INSTRUMENTATION & CONTROLS DIVISION THE HICKOK ELECTRICAL INSTRUMENT CO. 10514 Dupont Avenue • Cleveland, Ohio 44108 (216) 541-8060 • TWX: 810-421-8286 63 Monitor 8 V: Your Own Pseudo Instructions Monitor 8 is a program which was written by people at the now defunct Microsystems International semiconductor opera- tion. The program was published in the MF8008 Applications Manual, 1974 Edition, Bulletin 80007, by Microsystems International, Ltd., Box 3529 Station C, Ottawa, Canada, Kl Y 4J1. I'm working at the problem of getting permission to reproduce the copyrighted materials in sections C (User's Guide) and D (Software Listing) for the benefit of the 8008 hackers in BYTE's readership. Monitor 8 is a "systems program" designed to make life easier for you by performing various little "utility" functions like editing octal data in memory, loading and dumping to cassette tape, copying data from place to place in memory, translating machine codes to mnemonics, setting and clearing break points, etc. The people who have the applications manual of MI and use Monitor 8 are usually enthusiastic about it . . . witness the following set of comments sent in by Willard I. Nico concerning use and extensions of the program as it was printed in the original manual. I've fallen in love with "Monitor 8". The noble effort by Programmer Tom of Microsystems International has made it easier and more fun to write, edit and manipulate programs. But the Monitor can be even more fun, more enjoyable and more useful if you get inside its little head and stir things up a bit. by Willard I. Nico Delta t 11020 Old Katy Road, Suite 204 Houston TX 77043 Roll Your Own Pseudo Instruction! Say you've got a routine starting at memory location 012000 that turns on the coffee pot at 6:00 am. Before you go to bed you type in XQT 012000 and the program is running. That's great, but if you have a lot of routines, you have to look up the proper starting address if you forget. How about just entering COF and let Monitor 8 find it for you? What you have done is assign a mnemonic to your routine and called it with a pseudo instruction, PI for short. What's a Pseudo Instruction? The 8008 CPU recognizes 48 basic instructions. Counting the variations, there are 228 in all. In mnemonic form, LAB is an instruction recognized by the CPU. But you can LAC, LAD, LAE and so on, so the basic instruction is Lqr2 and the different combinations are variations of that basic instruction, (r-| or r2 can be any one of the mnemonics A, B, C, D, E, L, HorM.) If you come up with a three-letter combination, such as DLP, that is not one of the variations recognized by the CPU, but which will cause something useful to happen, it's called a pseudo instruction. When you are running the Monitor 8 program, DLP will cause the current location pointer to be printed on your output device, and therefore it is a PI. So how about COF? Or TKL (if you have the proper output device), or EAT, SLP, RUN? They can all be Pis if the desired program runs when you type in the mnemonic. The only restriction is that your mnemonic can't be the same as one that is recognized by the CPU. For example, JMP would be a no-no. How Do I Implement my Own Pseudo Instructions? I thought you would never ask! The first thing to do is relocate the Five Byte Table that now lives at 004021 through 0041 55. Since we are going to add our Pis to this table, we have to get some room and it's now hemmed in by the DPS Output routine and the Three Byte Table. I suggest you start it on a fresh page of memory. Once you start adding your own Pis you will get carried away, so leave lots of room at the end of the Table. (The Five Byte Table is the pseudo instruction command table for Monitor 8. This table contains 5-byte groups consisting of three bytes of pseudo instruction name followed by a 2-byte pseudo instruction service routine address. There is one 5-byte group for each pseudo instruction that Monitor 8 understands. There is a psuedo instruction service routine to execute each different pseudo instruction.) Let's assume that you choose 007000 as the starting point for your new Five Byte Table. With the Monitor 8 running, type CPY 004021 004155 007000 handy COPY move the Table and your Routine wil for you. Now that the Table has been moved, we need to change the reference to its 64 location in the main program. That's easy too, thanks to Monitor 8. Type EDT * 003153 000 (space) (space) 007 and your new Table is in use. Because of automatic addressing between the Three Byte Table and Five Byte Table for the HLT, RST, INP, OUT and ??? symbolic dumps, a portion of the Five Byte Table (004127 through 004155) will have to be left at the old location as well as being part of the Table at the new location. The rest of the old addresses (004021 through 004126) can be used to store any new routines you can fit in. Add a Pseudo Instruction Now we are ready to add a new PI to the Monitor 8 repertoire. Let's take the COF program at 012000. We add the mnemonic to the Five Byte Table, followed by the lower and then the higher addresses. I think the easiest way is with the EDT routine. Look up the octal equivalents for the letters C, and F. We will add the PI to the Five Byte Table starting where the ??? is and then replace the ??? at the end of the Table. So type EDT * 007132 103 "C" (ASCII) 117 "O" 106 "F" 000*1 address of COF r routine 012 J 077 "?" 077 "?" 077 "?" Now that we have a new Table entry, we need to extend the number of entries the Five Byte Table search routine will go through before giving up and calling it a "no find". The original Table had 022 (octal) listings, so we simply change it to 023. EDT * 003151 023 will take care of it nicely. Getting Fancy You can implement Pis for routines that need a starting and ending address just as easily. Just remember to add "200" to the high address before recording it in the Table. As an example, suppose you want to add RUN and the routine needs to know where to run from and to. If the RUN program resides at 013000, your new Table entry would be 122 125 116 000 213 When the PI is typed in, the Monitor will respond with a * to ask for a starting and ending address. Your RUN program can then include a call to 001023 for data at the first and each succeeding address and a call to 000362 each time around to increment the current location pointer; compare it to the desired ending address and return to the Monitor when finished. So there you have it. A new dimension for the fine Monitor 8 program. Give it a try and I know you will like it. HPY PGM. Gremlin Chasing the Monitor 8 The hours spent re-coding and punching the Microsystems International "Monitor 8" software into my system have been exceptionally rewarding. To put it mildly: It's great! To Programmer Tom, wherever you are, thanks for an outstanding effort. While using the Monitor, I found a confounding gremlin popping up inexplicably in my otherwise operational programs. Several times I tracked malfunctions down to a code that bore no resemblance to the one I had originally put there. Sound familiar? Take heart! I have tracked the gremlin to his lair and herewith formulate the liberal dose of gremlinocide that will put him belly-up. The problem begins with the Clear Breakpoint (CBP) routine beginning at 001353. This routine is addressed by the CBP pseudo instruction and is also called by the Set Breakpoint (SBP) routine. Memory locations 013365, 013366 and 013367 are used as a stash for the original instruction, low address and high address when a breakpoint is set. Before setting a new one, or when clearing the breakpoint, the instruction is replaced at the address stashed. The Clear Breakpoint routine sets the H and L pointers at the original instruction (013365) stash and retrieves it to the E register. It then increments the L pointer to the location of the high address stash (013367) and calls the "Set H and L" routine, entering at 001027. Theoretically, the high address is 100 to indicate a clear breakpoint. This 100 is tested by loading the D register with 100 at 001365 and exiting at 001370 if a match indicates that the breakpoint is already clear. The problem is that the "Set H and L" routine exits with the current instruction in the A register, not the H address as the programmer anticipated. When the comparison is made with the 100 previously loaded into the D register, there will never be a match (unless the current instruction is JFC) and the current instruction will be replaced with whatever is at 01 3365. You can verify this by noting the LAM instruction at 001034 after the H and L pointers have been set. Since the random codes occurring in the memory elements at the stash location on power-up are usually high numbers, the instruction mostly gets changed in a non-existent location; but not always. That's what made it such a once-in-a-great-while goof. Of the several ways to fix the problem, I found one that does not require any added programming steps and can be implemented nicely. Change 001365 to load the D register with "065". Change 001370 to RFZ. Now when the instruction at the location addressed by the H and L stash is tested, nothing will change unless the instruction is Breakpoint Execute call RST 060 (code 065). Note that instructions 001372 through 001376 can be NOP'd since they are "do nothings." -w.i.n. 65 A Versatile Read Only Memory Programmer Volatile or non-volatile? That is the question. Should your software be set in logical concrete, or should it be input from a mass storage device such as audio tape every time you start up the system? For certain small and frequently used utility software routines, dedicating a portion of your computer's memory address space to PROM is a useful technique. Peter Helmers supplies this article on a means to overcome the most difficult hurdle of the technique - programming the PROMs themselves. The prime candidates for PROM memory are routines to extend your microcomputer's limited instruction set in software, and that fundamental utility program - the bootstrap loader. For example, on the next home brew computer III wrap up, I have in mind a 63-byte ROM loader program which will be blown into two 8223 ROMs using this programmer. Then when I push "load" to restart the system I'll automatically go to a loop which reads in the "real" software off an audio tape cassette, then branches to the entry point of the software on completion of the load. Some of the microcomputer kit manufacturers have begun to deliver system software in ROMs using the larger mask programmable and U V-erasable PROMs. Even if you build a kit rather than a home brew system design, you may find this programmer useful when adding extra subroutines to the existing software to customize your computer. The read only memory, or ROM, is a versatile element in digital electronics. In one case, I've been able to replace over three packages of integrated circuits with a single ROM. In addition to this, circuits designed around ROMs tend to be less cluttered; the ROM virtually forces a cleaner design. ROMs can work wonders. For the amateur, though, ROMs are not always easy to use. Mask programmed ROMs are programmed by the manufacturer and tend to carry high setup charges. Programmable read only memories, or PROMs, are available from electronics distributors such as Hamilton-Avnet or Cramer. These distributors will also program the PROMs that they sell. However, for the small user, the virgin PROMs not only cost more than surplus PROMs, but most distributors will also charge a one time setup charge of from $5 to $25. The current surplus price for PROMs is about one third of the current distributor price (for an 8223 the figures are $3 surplus vs. $8.95 new). Thus the amateur whose resources are limited can save the most money by buying surplus PROMs and then programming them himself. This article describes a circuit for a PROM programming unit for some commonly available surplus PROMs; the PROMs which can be programmed are the 8223 (32 word by 8 bits), the Schottky versions of the 8223: the 82S23 and 82S123, and the 82S26 and 82S29 (256 words by 4 bits). The programmer programs any of these PROMs one bit at a time in strict accordance to Signetics recommended specifications. It is also capable of verifying and/or examining any bit of these PROMs to ensure that they have been programmed properly (or that "surplus" doesn't mean ''pre- programmed" — but then I've received "new" PROMs from distributors that have been preprogrammed . . .). From my experience, it takes about an hour to manually program a PROM, and then verify each bit. However, to avoid by Peter H. Helmers Box 6297, River Station Rochester NY 14611 mistakes, take time and work away from disturbances. Programming Concepts To program a given bit in a PROM, the word address is set up on some address switches, and the bit within the addressed word is selected, using an output selector switch. As shown in Fig. 1, the circuitry involved in addressing is set up in a general manner to allow addressing of either of the two PROM organizations (e.g., either 256 x 4 or 32 x 8). Due to lack of foresight by the PROM designers, there are three sets of programming procedures which are needed for the five types of PROMs which this programmer was designed for. However, conceptually, they all require control of three PROM parameters: the PROM voltage (ROMVcc), fusing current (If) and CE logic level. What varies is the value of these voltages and currents, and the order in which they are applied. The timing can be represented in general as shown in Fig. 2. The effect of each control signal will be discussed separately for each of the programmi ng procedures. 8223 Programming Procedure K1 when active corresponds to grounding (applying a logic "0") the CE 66 For software design, use of an ROM can replace volatile RAM memory for routines you always want to have around. Fig. 1. Addressing and data input configuration for a manually controlled version of the programmer. *To be programmed. input of the 8223. Next, when K2 is active, a fusing current is fed into the selected PROM output. This current is specified by Signetics as the current resulting from 12.5 volts applied through a 390£2 resistor to the PROM output. The final step, when K3 is active, is to raise the PROM's Vcc (pin 16) to 12.5 volts. (The circuits that control these voltages will be discussed later.) 82S23/82S123 Programming Procedure K1 when active raises the 82S23's Vcc to 10 volts. Then, when K2 is active, a fusing current of 65 mA is applied to the selected output of the PROM. Finally, during K3, the PROM's CE input is is grounded. 82S26/82S29 Programming Procedure The procedure for the 82S26 and 82S29 PROMs is identical to that for the 82S23 and 82S123 except that the Vcc is raised to 1 2.5 volts, and the fusing current is 89 mA. Circuit Design Basically, there are three parts to this circuit which are shown in Figs. 1, 3 and 4. Fig. 3 shows the timing sequencer which has the responsibility of developing the proper control signals required for both programming and verifying. The control is accomplished by using an 8223 PROM IC3 in connection with a state counter. (This brings up the Fig. 3. Timing sequencer. This is the logic used to implement the timing diagram of Fig. 4 with the program of Fig. 5. question of "which came first: the programmer or the PROM?") Referring to Fig. 5, the programmer starts out in a verify state upon powering up or after programming a bit. In this state, the 74161 state counter IC2 is cleared to zero and the counter enable Fig. 2. "Kontrol " signals Kl, K2 and K3 — relative timing. Kl K2' K3- flip flop, 7474 IC4, is cleared. Despite the fact that the 555 oscillator is producing a 2 kHz square wave, the counter is inhibited from counting because its load input is low. At this time, as shown in Fig. 5, the PROM's CE input is held low so that the selected output may be examined by means of the "OUTPUT" indicator LED lamp. A programming sequence is initiated by pushing the P/V push-button switch momentarily into the program (P) position. This causes the counter enable flip flop to be clocked high, allowing the state counter to 67 count. The PROM IC3 controls what happens in each state. States 1 through 4 are "do-nothing" states to allow the P/V switch to stop bouncing. These states address words 00001 through 00100 or words 10001 through 10100 of PROM IC3 depending upon the A0 input at pin 10. States 5 through 14 are then used for the programming procedure's execution. What happens during states 5 to 14 depends upon the type of PROM being programmed, as was discussed above. Since the sequence of events is the same for the Fig. 4. Voltage and current sources. 82S23 and 82S26 types of PROMs it can be implemented in common. Thus for these PROMs, the AO input of IC3 is tied low so that the Vcntl, FUSE, and CE control lines will be sequenced as shown in Fig. 5. In other words, the A1 through A4 inputs of IC3 are sequencing through the program in PROM storage at words 00101 through 01110. For the 8223 PROM, the A0 input of IC3 is high so that the control lines are sequenced by the alternate program stored in words 10101 through 11 110 of IC3. However, words 01111 and 11111 of IC3 are the /■ HEATSINK 30VDC)>- 1 C5 33uF IC6 7805A ^V VCNTL>- 1/2 75451 IRS I IK I IC7A ll ■ ROM VCC RIO 220 S3C S26>''S23 9 '23 ^of i 7.5v m m sv m a. Voltage source for ROMVcc. 30VDC>- C6 .33/iF ^ HEATSINK IC8 7805B Irn il lag i >56 \J> > 150 i i y S3B 1 ] + 5V FUSE>- same so that the following action is taken in state 15 (regardless of type of P ROM). In this state, the STOP output of IC3 is low so that the counter enable flip flop is cleared, and the state counter is reset to state on the next clock pulse. Since the load line is held low, the state counter will stay in this state until IC4 is clocked high when another bit is to be programmed. Fig. 4 shows the voltage and current sources that generate the programming signals detailed above. There are two aspects to the control of these sources: type of PROM, and the control signals from the state sequencer. The basic voltage source is shown in Fig. 6. This circuit can be modified by using a transistor switch to selectively short out the zener diode. Thus when the zener is shorted, the output voltage will be 5 volts; when the zener is not shorted, the output will be the sum of the zener voltage and the regulator's normal 5 volt output. Referring to Fig. 4(a), the transistor switch is RI2 >RI3 >RI5 50 R0M VCC=+5V — rrrr STOP— 1 ! VERIFY— ' FUSE = 0=J> if = VCNTL -l=> R0MVCC = frequency is 2 kHz. However, this setting is not critical so that if you don't have any means of measuring frequency, just set the pot near its maximum resistance setting (so that a frequency < 2 kHz is obtained). Operation 1. Turn on: Place the PROM in the proper socket. Plug the programmer into a 110 volt socket (note that capacitors C3 and C4 are used to initialize the programmer + I0V-82S23 FUSE" l=> if = -TS5mA 82S23 + I2.5V- 82S26.8223 to state so that no spurious bits will be programmed). Observe that the POWER LED is lit up. 2. Address Setup: The programmer verifies and/or programs only one bit of a PROM at a time. The word address is set by switches labeled AO through A7 (but only switches AO through A4 are used for the 32x8 PROMs; switches A5 through A7 are not electrically B9mA 82S26 12.5V THRU 390 OHMS FOR 8223 connected to the socket for these PROMs). The bit within the addressed word is selected by the output selector switch. (But outputs Q4 through Q7 are not electrically connected for the 256x4 PROMs). 3. Verify/ Program: By de- fault (of de operator . . .?), the LED labeled OUTPUT indicates the status of the selected output of the ad- dressed word. This LED is on if the bit is a logical "1" (e.g., Fig. 6. Voltage pedestal technique using a 5 V regulator JC. 30VDCO- 5V REG IN IC OUT GND R BIAS=*220H V0UT= 5 + VZ Fig. 7. Current source implemented with a 5 V regulator IC. 30VDCO- 5VREG N IC OUT GND PROTECTS FROM VOLTAGE OVER- SHOOTS 69 Fig. 8. Wire wrap board layout. *Mounted on heatsinks. ROMs are not the "universal" logic elements that some people tend to consider them. Used correctly in logic designs, they can benefit a given design; used improperly they can cause never ending grievances. >~2.4 volts), and is off if the bit is a logical "0" (e.g., <~.8 volts). Since the PROMs for this programmer come (hopefully . . .) with "0"s in every bit, programming involves selective fusing of "1"s in given bits. The fusing process is accomplished by pressing the PROGRAM/ VERIFY switch towards the PROGRAM position, and then releasing the switch. The OUTPUT LED should then be on, to verify that the bit has been programmed. If it doesn't fuse, a second attempt can be made. However PROMs have a reputation of less than perfect fabrication — one brand new PROM that I encountered required a fusing current duration of close to 4 seconds for one output; I Fig. 9. Front panel layout. 7805A* ROM VCC 7805B* FUSE CURRENT 7805C* + 5 VOLTS DISC2 DISCRETE COMPONENTS DISCI DISCRETE COMPONENTS IN DIP HEADER I 7545I I NE555 I I ■d pi DISC 3 DISCRETE COMPONENTS 74I6I ICNI INTERCONNECT PLUG FROM FRONT PANEL F U S E 7474 8223 ICN2 INTERCONNECT PLUG FROM FRONT PANEL now use that PROM to test out new PROM programmer designs. Final Thoughts ROMs are great devices, and now the amateur can easily experiment with them. However my experience has been that ROMs are not the "universal" logic elements that some people tend to consider them. Used correctly in logic designs, they can benefit a given design; used improperly they can cause never ending grievances. As a means to turn software into "firmware" the only problem with an ROM technique is making sure your program is debugged before you blow those irreplaceable fusible links inside the PROM package. •••••••• 256X4PR0MS PROM SOCKETS © POWER ADDRESS <3 (415) 549-0857 75 Thank youl suramin *»»« 1J1Y would like to take this opportunity to say "Thanks" to all our many customers and friends for a very gratifying (and profitable) year. We've offered some outstanding bargains; you've gained the benefit of our Hi-volume purchasing power. We couldn't offer these state-of-the-art products at such low prices if you did not recognize them for the truly outstanding opportunities they are. We'll continue to bring newer and better items to the hobbyist and experimenter market just as long as you continue to respond as you have in the past. We have big plans for our future product line. Included in our planning are kits for all of the interface modules used in CPU to outside world applications (UARTS, Code converters, Keyboard ROMs, PROMs, RAMs, Printer drivers, CRT modems, baudot rate generators, counters, timers, and on and on). Watch for our announcement of new products in BYTE in the coming months. Now, since this is the Holiday Season, with gift lists to fill and projects to plan and get started, here is our gift to you. ITEM 101 — 709 Op Amp in T0-5 pkg. Brand new and unconditionally guaranteed $ .19 ea ITEM 201 — KR2376 Keyboard RAM — Brand new (Not a factory reject or floor sweeping.) Will generate standard ASCII code (up to nine bits) with SPST Switch closure for each alphanumeric. Completely self-contained data sheets with each unit $4.95 ea ITEM 301 - 1N4448 Silicon Diode (or equiv) 100PIV - 10 mA like a 1N914 only better $ .05 ea ITEM 401 - UARTCOM2502/2017 in 40 pin dip pkg. Advertised elsewhere for $14.95. This is an untested HOBBY grade chip for experimentation and use $4.95 ea ITEM 501 - 2N3859 equiv. Silicon NPN general purpose transistor. Used for switching, LED driver, oscillators, amplifiers, etc. Small plastic $ .10 ea All items ppd. Please ADD $1.00 per order to cover handling costs. Orders shipped same day in most cases. $5.00 - minimum order. suramin fimiipiim 6 KING RICHARD DRIVE, LONDONDERRY, N.H. 03053 603-04- 4644 76 Clubs and Newsletters The Evolution of the Homebrew Computer Club BYTE has received the latest issue of the Homebrew Computer Club Newsletter, now edited by Robert Reiling, 193 Thompson Sq., Mountain View CA 94043. This club was started with a meeting on March 5, 1975, assembled by founders Fred Moore and Gordon French. Fred has been pretty much running the show since then via the newsletter activity. However, Fred's personal plans took him to the Washington DC area in the middle of August so he had to pass the ball along to someone else in the Silicon Valley. According to the newsletter dated Aug. 20, 1975, the following persons are now working on the club and newsletter: • Robert Reiling, editor. • John Schulein, technical editor. • Tom Pittman, mailing list. • Lenny Shuster, meeting room. • Ray Boaz, treasurer. The Aug. 20 issue is nicely done in a very professional photo offset format. It includes notes by John Schulein and Tom Pittman on the problem of audio cassette recording standards. (See BYTE's conference announcement elsewhere in this issue for some additional inputs.) The issue also includes comments by Ken McGinnis on TV display timing for the computer hobbyist, and some random data of interest compiled by Robert Reiling. The Homebrew Computer Club meets every two weeks at the Stanford Linear Accelerator Center, usually in the auditorium. Ask a guard for directions when you get there. Extrapolating the every two week algorithm from known dates of Aug. 20 and Sept. 3 gives the following dates in October and November: Oct. 1, 15, 29; Nov. 12, 26. The address for correspondence is temporarily Robert Reiling's site, but arrangements are being made for a club post office box. HP-65 Users Club The HP-65 is probably the one "home computer" in widest circulation by now. This is certainly true if your definition of "home computer" is something which costs under $1000, has p ro gra m m ability, uses microcomputer technology, has off-line storage, and some form of interactive set of user controls and displays. The HP-65 Users Club is an organization founded by Richard J. Nelson (2541 W. Camden PI., Santa Ana CA 92704) and devoted to the use of the HP-65, and other programmable calculators. The club publishes a newsletter, 65 Notes, for a nominal fee. The July 1975 issue (Volume 2 number 6) is typical of the many issues included in a sample packet forwarded by Richard: a feature on the new HP-25, comments on the formation of various local club chapters, several programs, an article on repairs and/or modifications of the HP-65, and an article on how one reader of 65 Notes adapted his HP-65 to a hard copy printer. (Note: 65 Notes and the HP-25 Users Club are in no way affiliated with Hewlett Packard.) Here is where to turn for a wealth of information on programmable hand-held calculators. Beta Iota Tau R i chard A . Petke announces formation of Beta lota Tau, a new fraternity for campus computer freaks, knurds, hackers and assorted hangers on. For a full description see the letters section of this issue. His address: BETA IOTA TAU c/o Richard A. Petke R.H.I.T. Box 520 Terre Haute IN 47803 If you want a definition of the terms "knurd," "hacker" and "computer freak," either look into a mirror or get in touch with Mr. Petke! North Texas No-Name Club The second informal gathering of the North Texas No-name Computer Club took place at the Irving Library on August 18. Bill Fuller gave a short introduction on what the club's general aims could be and a few reasons for forming a group. With this, each of the 16 attendees introduced themselves, and summarized their computer interests and general background. Lannie Walker, the Ft. Worth co-founder, brought his Martin MK-2 to display. Greg Walker demonstrated operation of his TVT-II. Ric Martin provided his TVT-I for comparison. Also available for a "look-see" were a Processor Technology In/Out board, ECS modem, two Suding cassette interfaces, ECS digital display PC board, and the MITS VLCT PC boards. With i n tro duct ions complete, a general open forum discussion took place until we were kicked out of the library at 9 pm. The "meeting" continued at a local coffee shop until 11:30 pm. A quick summary of pertinent data obtained from questionnaires filled out shows: Computer: Five Altairs, one MK-2 and one home brew. TVT: One TVT-I and two TVT-II. Cassette interface: Three Suding, one ECS, one Computer Hobbyist, one MITS. Paper Tape: Three punches, one reader. Teletype: Five of various vintage. Since we are still somewhat unstructured as a formal club, interested "byters" should contact Bill Fuller, 2377 Dalworth 157, Grand Prairie TX 75050, 1-214-264-0111 or Lannie Walker, Route 1, Box 272, A I e d o TX 7 6008, 1-817-244-1013. 77 WORLD'S FIRST COMPUTER STORE IISSS H Fir 1 MITS-MOBILE HITS SE P ^ Altair User's Group In the words of The Agency, MITS' advertising subsidiary, "The Altair User's Group is quite possibly the largest hobbyist organization in the world. It is both a means of communication among Altair users and a method of building a comprehensive library of Altair programs . . . among other benefits, you will receive a subscription to the monthly publication Computer Notes, which contains complete update information on Altair hardware and software developments, programming tips, general computer articles and other useful information." And that's a pretty fair statement, judging from the August 75 issue of Computer Notes. Edited by Dave Bunnell, the head of The Agency, Computer Notes covers most items of interest to Altair users. The August edition is headlined "WORLD'S FIRST COMPUTER STORE," featuring an article on The Computer Store, located in West Los Angeles, which is apparently the first retail store solely for computers and computer supplies (shades of Arthur's Information Parlor). The store sells Altairs over the counter of course, and functions as a general computer hobbyist gathering place and information center. Computer Notes also features a travelogue of the MITS-MOBILE Altair Caravan, which toured the Southeast during August and September. In his editorial, Dave Bunnell leads a good deal of rumors to their proper resting places, covering "off brand peripherals, memory cards, etc.", the false rumors concerning "less than full spec" Intel 8080 chips, software agreement tec hnicalities, M ITS' development of a Motorola 6800 system, and delivery complaints. Dave precedes all this with the explanation, "One point that has gotten us good press in a number of publications is that we try and level with our customers." From Dave's straightforward presentation, I think they deserve another "good press." There are no surprises in the rest of the newsletter, with its "Altair Service Dept.," "Letters to the Editor," "HARDWARE," and "SOFTWARE" sections. In "HARDWARE" Tom Durston and Paul van Baalcn deliver some ACR (Audio Cassette Recording) hardware alignment updates, fixes for 8800 problems, some "Boo Boos," various maintenance techniques and hardware specifications. The "SOFTWARE" section contains "Software Contest Winners Announced" by Bill Gates; "Q & A" on the "Monitor, Editor and Assembler'' by Paul Wasmund, the author of these software components; "General Software" by Paul Allen, the director of MITS' Software Depart.. lent, answers various questions concerning MITS' software performance, policies and future plans; Monte Davidoff, one of the authors of Altair BASIC, illustrates the string handling and recursive subroutine capabilities of BASIC in "Fun with Altair BASIC." Monte does a good job of describing these interesting possibilities of BASIC, even though such applications can be a bit strenuous for both the reader and the BASIC language itself, as witnessed by Monte's closing comment on factorial computation: "If confusion still prevails, do not worry about it." Bill Gates, in his article "Software Hints for 8800," gives just that. Mentioning some of the reasons for the 8080's power, Bill goes on to discuss binary coded decimal (BCD) arithmetic, giving a sample routine for conversion from BCD to binary. After a short lesson on special short branching ("skip") techniques the reader is presented with some neat but fairly general stack usage tips. Bill doesn't waste words in his article; a rank beginner would probably be left far behind by these last concise hints. In a short review, Dave Bunnell gives BYTE an A+ for format and an A— for content ("They have something to work for."). Although it sounds a little like an ad for BYTE, Dave is pleasantly positive in his remarks. I have a couple of complaints. The format of Computer Notes is imaginatively done, but at some points the text is hard to follow — you don't know what to read next. (But then, it is only fair to point out that BYTE may suffer the same malaise in one or two places . . . Carl) Also, a lot is assumed on the part of the reader. I realize that any such newsletter can't function as a tutorial publication (that is a major part of BYTE's job) but the "HARDWARE" and "SOFTWARE" sections would certainly throw any real beginner. But I judge too harshly: Computer Notes is truly a good bulletin for the users of Altair equipment. To paraphrase Dave's closing question in his BYTE review, is the Altair User's Group something no Altair computer hobbyist should be without? At this point in time, I would have to say that he has no choice since membership is automatic for Altair owners. Should the Altair computer hobbyist be thankful for Computer Notes and other benefits of the User's Group? I would have to say yes. . . . Chris Ryland DIAGNOSTICS Debugging is the art of removing bugs. Many times, bugs in programs are only uncovered after the program is executed — and on larger machines "diag- nostics" often tell what BYTE #2, p. 15, fourth column, Kluge Harp. The formula for the well tempered scale ratios was "squashed" a bit, and should read: (ln(137)+ n ln(2)/12) happened. Well, a magazine is like a computer program — large and complex. Here is some centralized documentation of known bugs in BYTE detected in the execution of previous issues. BYTE #2, p. 16, first column, Kluge Harp. The formula for the timer interval is incorrectly printed. It should read: Lc n = time / (oh + dt pc n ) The "#' deleted. symbol should be 78 BYTE #2, p. 36 LIFE Line 2, Fig. 3. The variable DONE is incorrectly described. Correct description: DONE - the variable set by KEYBOARD_INTER- PRETER after a user command to end execution. BYTE #2, p. 38, LIFE Line 2, Fig. 6. The variables NCMAX, NCMIN, NRMAX, and NRMIN are incorrectly classified as local — used only by GENERATION. They should have been classified as shared with the whole program, i.e., global. BYTE #1, p. 54, Fig. 5, Write Your Own Assembler. Dan Fylstra caught a bug in his 8080 example about the day after BYTE #1 went to press — and several readers (including Bill Gates of MITS Altair BASIC fame - see letters) caught it. The mistake is that branch table has 3 bytes per entry and the example multiplies by 2 with a left shift (RLC).The corrected code would be: '•NEXT TOKEN" ROUTINE LXI H,BRTAB H - branch table base LDAX D get translated char from line BYTE #1, p. 16. Author James Hogenson supplies the following correction to information on the RGS-008A computer: The two LEDs not used by the upper memory address are not used to indicate the second and third bytes of a two or three byte instruction. They indicate the control code which varies in a two or three byte instruction. One machine cycle is required for each byte of an instruction. The first byte of an instruction is always an instruction fetch cycle indicated by control code 0. The second and third cycles are for data writing, reading or for an I/O operation. Control code 1 indicates an I/O operation, control code 2 (octal) indicates a memory data read cycle, and control code 3 indicates a memory data write cycle. The power supply produces positive 5 V at 5 Amps, and —12 at 1 Amp. RLC MOV B,A LDAX D ADD B times 2 for branch table index ? almost save "2n" in B fetch "n" again . . . translated character "3n" = "2n + n" . . . rest of NEXT TOKEN One final word — this is an example of a "patch". As programs grow and patches multiply the result can get hairy. There is no pretension that this is the optimal code for the next token algorithm; one of the challenges of programming is to see how close one can actually come to optimal code. BYTER's DIGEST Don't Forget the Pinouts of These Memory Circuits — They're All Very Useful Both in Building More Memory for Kit Products and as Memory Elements of Your Own Designs . . . ADDRESS < FROM D IN ill SYSTEM IK BY 1 RAM eg: 2602 2102 9102 4 9 6 , o-= 7 2 f 1 t 13 16 t 15 , 14 . l2 THREE S D OUT power: + 5V=PIN 10 GND=PIN9 WE WRITE ENABLE 0= WRITE l-READ CE CHIP ENABLE 0» ENABLE I" DISABLE TO SYSTEM INTERFACE Fig. 1. The 2102, alias 9102, alias 2602. This memory circuit is the most generally useful item on the market. You will find it in graded price ranges depending upon speed; for the 8008 and other slow processors, the low speed and inexpensive versions with access times up to 1 microsecond can be used. For the later generation micro- computers such as the 8080, M6800 or MCS6501 or PACE, higher speed versions are recommended in most cases if you want to take advantage of full processor capability. For complete specs, see the manufacturer's specs. Here is a pin diagram of this memory design. To use it, present addresses then Chip Enable should go to logic (ground level), then after the access time delay you can either read the output data lines, or write what you've presented on the input data line. The write operation is performed by a low-going pulse on the WE line, with a minimum duration of from 300 to 750 nanoseconds depending upon the speed rating of the chips you buy. *NOTE: When talking about logic and memory, the notation "K" means 2 10 or 1 024, not 10 s or 1 000. CE CHIP ENABLE 0=ENABLE l=DISABLE ADDRESS { power: + 5V=PINI4 A0- 12 256 BY 4 RAM SIGNETICS 2606 GND-PIN B II • l5 >D0l - IS -DI 10 TO SYSTEM BUS 9 r 1 1 INTERFACE ' (THREE STATE BUS) 7 2 6 5 t l A7 "1 WE 0»V 1 - F WRITE ENABLE YRITE EAD Fig. 2. The Signetics 2606 part is a variation on the static memory concept which uses a parallel 4-bit word orientation. There is a total capacity of 1024 bits in 256 words. For reading out of this memory, you hold the Write Enable (WE) line at logical 1, select an appropriate combination of address inputs, then drop the Chip Enable (CE) to logical to enable the output bus drivers. To write into the memory, you enable the chip as if to read, but drive the data bus from a source such as your CPU while dropping the Write Enable line to the logic (ground) level for a short period (minimum 400 ns). The spec sheet for the 2606 gives an access and cycle time of 750 ns, which means that it is on the hairy edge of working with one of the 1 microsecond cycle second generation microprocessor CPUs. Here is the pinout of the 2606 part. 79 Shipmates WAT If' to joinbaref oot'e i§Wiii?i ■■i And, we'll promise you only one thing. The most adventurous vacation you have ever experienced. Hop aboard our schooner for lOsunfilled days and moonlit nights. A congenial group of shipmates now forming and setting their heading for Saba, Grenada, St. Lucia, Guadaloupe. And, Dutch St. Maarten. And, French Martinique. Explore pink, white and black sand beaches. Scale the cliffs, climb a volcano, prowl old forts and quaint towns. Hoist the sails, take a turn at the wheel or feet on the rail and let us do the work. Then limbo to a steel band and fall asleep under a star spangled Caribbean sky. Share from S250. 1 f you have the spirit . . . come Windjammin'.. . a true life adventure. This coupon will bring you a full color adventure brochure. Send me your color brochure on 10 day 'barefoot' vacations from $250. Name _ Address . City Zip . ©Windjammer Cruises. Post Office Box 1 20, Dept. 00, Miami Beach, Florida 33139. 80 What Are We Getting Into? While many hobbyists tend to think in terms of their own uses for microprocessors (uP) such as games, music, art, index systems, mailing lists and such, we shouldn't forget the enormous business applications for these systems once they are commonly available. We can see uP systems with 1 500 megabyte storage (or larger) which would make very economical packages for lawyers, for example. Entire law libraries could be right at hand with access taking less than a minute to any case. Commonly used legal forms could be filled out via video terminals (VT) and then printed on a line printer. Complete records of all clients would be immediately available, plus billing, phone calls, etc. How about a uP system for doctors? The preliminary diagnostic work could be done by a receptionist during the heel cooling period in the waiting room, and this might even include temperature, heart, blood pressure, and a few other sensors hooked into the uP. The VT would be used with a diagnostic program to ask the questions. No disease, no matter how rare, could evade a really good uP diagnostic system. And the uP would print out the prescription and instructions for the patient. You can work up your own dream of inventory controls for shoe stores, drug stores, and other businesses. Considering the applications on the horizon, one can understand why so many firms are getting that glint in their eye when they think about making hardware for it. It seems likely that there will be more uP systems sold during 1976 than there are computer systems in the country presently in use. While we are thinking in terms of $500 uPs at present, this may go down to $250 and then even $125 for the processors. VTs are presently running about $350 and could get to half that in time. Floppy disk systems are being announced in the $2000 range, hinted at in the $1000 range, and predicted to drop to $500. Bulk memory systems using some new tape cartridges promise to provide enormous data bases with access times of 20 seconds maximum and an average retrieval time of 10 seconds. This might not satisfy Avis or American Airlines, but it is superb for a legal assistant researching cases. If you are plugged into any developments of interest to BYTE readers please consider this an open invitation to pass along the information as soon as possible. BYTE hopes to provide a stabilizing infl uence, encouraging standards, compatability, and harmony in the uP field. —Wayne Green USE OUR HARDWARE ASSEMBLERS^/ SAVE TIME AND FRUSTRATION WITH THESE CONVENIENT PRINTED CIRCUITS Q 4096-BYTE MEMORY MATRIX MACRO CARD Have you ever wanted to construct a memory matrix as part of a system?? The tedious part is the interconnection of all the address and data bus pins! The CDA-1.1 memory matrix is a general purpose memory prototyping card for the 2102/2602/9102 pinout static RAM chips. This PC card is 8"x10" with 70 pin edge connector, gold plated for reliability. The memory matrix occupies about 60% of available area with all lines brought out to pads for wire-wrap pins and has plated-through holes. The other 40% has 24 16-pin socket positions and a general purpose area which can hold 12 16-pin sockets, or 4 24-pin sockets, or 2 40-pin sockets. Add a custom wired controller to interface this board's memory matrix to any computer, or use the prewired matrix as the basis for a dedicated 4K by 8 memory in a custom system. Think of the time you save!! GENERAL PURPOSE PROTOTYPING CARD The CDA-2.1 general purpose 8"x10" prototyping card comes predrilled for use in construction of custom circuits. This board accommodates 1 6-pin sockets plus has a general area for 1 6-pin sockets or 24 or 40 pin sockets. The 70-pin edge connector is gold-plated for reliability and the pins are brought to pads for wire-wrap post insertion. The socket side has a solid ground plane to minimize noise problems; busses on the wiring side allow short jumper connections for power and ground. A whole system may be constructed in modules with these boards. DIGITAL GRAPHIC DISPLAY OSCILLOSCOPE INTERFACE, CDA-3.1 James Hogenson (see the October issue of BYTE magazine) designed a 64x64 bit-matrix graphics display for oscilloscope. This design permits use of your scope as a display for ping-pong, LIFE, or other games with your system. The CDA 3.1 card provides all the printed' wiring needed to assemble the graphics display device down to the TTL Z-axis output as described in October 1975 BYTE. To complete the display you merely add components to this double sided card with plated-through holes. For info: CIRCLE READERS' SERVICE NUMBER - or, send your order using the coupon below: #M YES?! \L Please rush me the boards ordered below: r~~|4096-P' "- "&MORY MATRIX PROTOTYPING FROM: NAME ADDRESS CELDAT DESIGN ASSOCIATES P.O. BOX 752 AMHERST, N.H. 03031 atisfied or your money will be cheerfully refunded. SHARE BYTE The next time a friend wants to borrow your BYTE sit right down and buy him a subscription and get him off your back. You know darned well that he isn't going to give you back your magazine, so be practical about it. Subscriptions are only $12 — cheap enough to spread joy and fun among a few friends — like for Christmas. Tell you what — the second and onward subscriptions will only be $10 — Christmas Special — good until the end of the year. A subscription makes a great Christmas present because it is something where the recipient gets a reminder every month for a year of your thoughtfulness. Be a saint. r !~GIFT Name Address City State . □ BILL ME □ Check for $10 enclosed •~I Cut Tear Name . . Address . City State Zip . □ BILL ME □ Check for $12 enclosed □ Bill BankAmericard or MasterCharge #. Zip. I GIFT Name . . Address . City . . . Shred □ BILL ME DCheck for $10 enclosed State Zip . JAMES ELECTRONICS P 0. BOX 822 BELMONT. CALIFORNIA 94002 (415} 592-8097 DIGITAL VOLTMETER GENERAL DESCRIPTION BQI II l •'•■ft Jrrl git lill dig!. Ajlu pllj-ily mil. iinrtjuljint fnwti mpply Thtur line? mitts Midlli (tut* J"d Hum i $39.95 Per Kit printed circuit board Tin- Logic P'OlH.' 4 J mill which ii (or [he man na'l indmpuiiubte in trouhle shoaling logic lamiliu Ttl. DTL. RTL, CMOS it dtrivel th.- power it needs to operate directly ID mA m,ix. It uses a MAN3 readout to uiciicn.' mv ot the tallowing Jlstw by thaw lymbolS! (HII - 1 (LOW] -o (PULSE)-P. The Pinbi} can dcti.'Ct high frequency pulses to 45 MHz. It can't bo used ai MOS levels or Circuit damage- will MBUll LOGIC PROBE ^ printed circuit board $9.95 Per Kit MINI POWER SUPPLIES These power supplies offet small sire, wiih a wide choice ot voltage outputs. They are all capable of delivering 300mA and have dimensions ot 1" x l"x 3". The voliages available aie+5V, -5V. +6V. -6V, +12V, -12V. All of these uni Is easily assemble in less titan a half an hour, because of the fiberglass primed circttil hoard cniislrucliori. Please specify voltage when ordering. $9.95 per kit LOW COST DIGITAL CLOCK KIT Oilier companies have offered a low cost digital dock kit. hut do not oiler important extras such as, printed circuit beards power supplies cases, etc. We at James are doing just the opposite by oiler ng a complete clock kit. that includes every thing down to the line card. This km uses .25" FNU 70 displays, lor HOURS, MINUTES, and SECONDS, in conjunction with lire MM 53 14 clock chip. The printed circuil board is of high quality fiberglass, which is plated. The case is | C x IM x 1 walnut case with a plexiglass front, and is similar to the one in our TV WALL Digital clock. It is available without the case lor S1C.95. $19.95 per kit. ELECTRONIC ROULETTE Complete kit with all components case and transformer. !"x 1" A 56 page book on the facts of Roulette included. $29.95 Per Kit ELECTRONIC CRAPS * a Complete kit with all components case and transformer. && m A 56 page book on the facts L of Craps included. $19.95 Per Kit Satisfaction Guaranteed. $5.00 Min. Order. U.S. Funds. Add $1.25 for Postage — Write for FREE 1975S Catalog California Residents — Add 6% Sales Tax P/47KSS P.O. BOX 822, BELMONT, CA. 94002 PHONE ORDERS - (415) 592-8097 ALTAIR OWNERS CMR PRESENTS THE MEMORY YOU'VE BEEN WAITING FOR 8K x 8 DYNAMIC RAM ON ONE PL UG-IN CA RD FOR ONLY $599 00* • FACTORY ASSEMBLED AND TESTED • PLUGS INTO 8800 WITH NO MODIFICATIONS • PROTECT-UNPROTECT CIRCUITRY INCLUDED TO MATCH 8800 • TWO 4k BLOCKS OF DYNAMIC R.A.M. • USER OR FACTORY ADDRESS PROGRAMMING (SPECIFY) • EACH CMR-8080-8k is SHIPPED WITH AN EDGE- BOARD CONNECTOR INCLUDED. • EXPANDER BOARDS AVAILABLE (ADDS FOUR SLOTS TO 8800) TEN REASONS TO CHOOSE THE CMR MEMORY CARD 1. 300ns ACCESS TIME 2. TWICE THE MEMORY DENSITY 3. LESS $$ PER K OF MEMORY 4. DESIGNED FOR THE 8800 5. USES THE LATEST T.I. CHIPS 6. G-10EPOXY BOARDS 7. PLATED THROUGH HOLES. 8. GOLD PLATED CONNECTOR CONTACTS. 9. 8192 WORDS OF DYNAMIC RAM 10. 90 DAY WARRANTY ON PARTS AND LABOR *ORDERING NOTE: FOR FACTORY PROGRAMMING. SPECIFY TWO 4k MEMORY ADDRESS LOCATIONS FOR EACH CMR-8080-8k MEMORY CARD ORDERED. MAIL THIS COUPON TODAY □ ENCLOSED IS CHECK OR M.O. FOR .* □C.O.D. s ACCEPTED WITH 30% DEPOSIT. TOTAL AMOUNT $ 30% » VA. RESIDENTS ADD 4% 'PLEASE SEND. .CMR-8080-8k CARD(S)* AS DESCRIBED ABOVE @> 599.00 EA. POSTPAID •PLEASE SEND EXPANDER BOARD(S) (ADDS 4 SLOTS TO 8800) BOARD ONLY 15.00 EA. POSTPAID TO: NAME. ADDRESS. CITY_ .STATE & 2IP_ CMR COMPUTER MANUFACTURING CO. P.O. BOX 167, 1921 DOGWOOD LANE VIENNA, VIRGINIA 22180 83 NEVER YOU MIND OCCUPANT BOX BYTE PETERBOROUGH NH 03458 ABITOFNYBBLING AT BYTES IN A WORD Dear Sir: I was very delighted to receive the first issue of BYTE. I found all the articles, and even the letters interesting, absorbing, and amusing. There are, though, three points about which I would appreciate some information and clarification. First of all, I seem to be a bit confused about your use of the words "word", "byte" and "bit". As I understand their usage, "word" refers to the grouping of "bytes" which are considered to be one memory location, and "byte" is a grouping of bits, three or four depending on whether octal or hexadecimal is used. The article "Which Microprocessor for You?" seems to use the terms "word" and "byte" interchangeably, which confuses me about the processor's location referencing ability. Who is right, me or you? Secondly, I have seen information about 8-bit and 16-bit microprocessors, but no ads about 12-bit microprocessors. Having gotten my programming training on a 12-bit system (PDP-8/L) may have made me unduly partial to 12-bit words, but an 8-bit system would not allow me to cheat and store two ASCII characters in a location, while 16 bits seems too big for my desires. Does anybody put out a 12-bit microprocessor with 4k memory? Finally, I see a large number of keyboards out on the market; I do not see any printers, line or teletype type. Where are they hiding? Thank you for your attention. Stephen Holland Glenview IL Thank you for your letter, Stephen. Precision in description of concepts is one of the most powerful techniques in the human race's evolutionary bag of tricks. The only hitch is communicating what the definitions are when there are many different people involved and each has a unique past experience. Hopefully in written communications we can keep the ambiguities (other than occasional fun) to a minimum. To clarify your very valid complaint about memory terms, the following are some fairly fundamental definitions. When you read certain articles, such as Hal Chamber/in 's, it turns out that two of these definitions are equivalent. For other situations they may not be: *A bit is the fundamental — it is the unit of storage. All other terms are described in terms of bits. One memory cell can hold one bit's value of logical zero or one. *A byte is a grouping of bits in the organization of memory, usually defined a/a IBM as 8 bits. (Nybbles are half-bytes.) *A word is the generic and very general term for "n" bits at once in a computer's memory. The term word is the same as byte when referencing an 8-bit byte-oriented machine, but will certainly differ for a 12-bit PDP-8 or a 16-bit PDP-11 or some old 36-bit Univac clunker or a 60-bit CDC machine. If that's not enough to confuse the issue, some of the early literature on machines such as IBM's old STRETCH computer referenced variable sized bytes extending the definition to "any group of n bits". In general, though, a given machine will have a "memory address space" for direct reference to a particular size of ''word". For the byte-bangers (8080, 6800, 8008, 6501, F8, etc.) each memory address gets you one byte. For a PDP-8 each address in memory gets you one 12-bit word. And so on. As far as 12-bit micros go, there are none which are generally available to amateurs yet. There is the CMOS PDP-8 replacement which Intersil makes, but it is very expensive as yet. There is the FABRI-TEK processor which is an MSI copy of a PDP-8 at about $1000 for the CPU, but again a working system is not inexpensive. The FABRI-TEK machine does come with 4k built in at the price. Concerning printers, you are again getting up in price. A simple receive only Teletype is about $200-300 if you get to the right place at the right time in the surplus market. There is something called a Creed Teletype which I have seen some literature on — an old 5-bit Baudot machine which you could probably hook up fairly easily to Bill Godbout's PACE processor with its ASCII-Baudot software. Where are the printers hiding? In surplus houses which don 't advertise 'em because their stock changes too frequently. . . . Carl Dear Carl, I just finished reading the first issue of BYTE, received today. I found the articles interesting but now realize how little I know about programming terms and functions. I've been in ham radio and radio and television broadcast engineering for well over 15 years. I understand the basics of digital electronics and have designed control circuits and enjoy using digital techniques in other types of electronic circuitry. I can follow the articles until the author starts hitting me with programming terms, then I'm lost. Perhaps you might try to educate such as I with some very basic articles on programming and those hardware functions mostly limited to computers. You might also recommend some up-to-date books on these subjects. I would very much like to learn more about this field. Perhaps I'm not the typical reader you are publishing BYTE for, but I suspect there are other readers out there with the same problems. I'd also like to see you insert a bingo card to make it easier to get further information and catalogs from your advertisers. Kenneth Knecht Chicago IL Thank you for your input, Ken. I am indeed worried about the problem of acquainting the novice readers ofB YTE with the terminology and concepts of home brew computing. I'm working on getting various authors to submit tutorials on the concepts of programming for people such as yourself with a strong hardware background. Then there is the analogous problem from the other side — explaining the mysteries of hardware to software people. For instance, a software- oriented friend of mine 84 pointed out that he got lost on the diode matrix concept in the keyboard article of BYTE #7, a concept which is probably familiar to a number of readers with a hardware background. As long as I am enumerating possible approaches to the art of home brew computing, I shouldn't forget the person who has neither hardware or software background — the complete novice. The way I can find out about what "the typical reader" is thinking is for "the typical reader" to send in comments, as you have. One of the biggest unknowns I had when I first came up with the problem of editing this magazine was figuring out in my mind just what the readership is: Is it a bunch of hackers from the MIT or SRI artificial intelligence labs? Hardly — although I know a few who subscribe. Is it the group of ambitious people who started 8008 projects when they first came out? Yes — but not exclusively, by a long shot. Is it the engineer who always wanted his own hardware — but never heard of software engineering? Yes — some readers fall in that realm. Is it the applications programmer who gets kicks out of programming and always wanted a processor of his own? Of course — there is more than one COBOL programmer in the audience to say nothing of FORTRAN people and PL/ J people. Is it the BASIC fundamentalist who is lost in his applications games and suddenly discovers there is more to computing than GOSUB and LET? Sure - and he has a whole realm of hardware and software to learn about. The problem is a tough one — but constructive input from readers in the form of articles and opinion is an important key to shaping the content of the magazine. Introductory materials and articles to get people acquainted with terminology will be in future issues — as you'll find to be true in this issue as well. . . . Carl WHO IS STEPHEN B. GRAY? Dear Sir, Your description of the Amateur Computer Society (ACS) in the Clubs column of the first issue of BYTE is strangely constructed. Please allow me to supply your readers with further info about the ACS along with some history of the home computer "hobby." Stephen Gray organized the ACS in 1966 to serve everyone who is involved in designing and building his own home computer. The ACS is an informal organization, with no such thing as officers or meetings, since its members are widely separated across the U.S. The main function of ACS has been to initiate the exchange of ideas and equipment among its members. This is done by the ACS Newsletter, which describes the plans and accomplishments and acquisitions of the various members. It also lists the sources of surplus computer parts available for the hobbyist. Back in the late 60's and early 70's there were no kits available to buy, and not too much surplus computer equipment. This meant that most home computer builders had to design their CPUs and I/O interfaces from scratch. The ACS in those years was made up mostly of digital circuit and systems design engineers. It was like the early decades of amateur radio, when not much commercial equipment was available for hams to buy. Today there are several hundred ACS members representing all kinds of careers in the electronics and computer industries. Lots of them have had operating home computers for five to eight years! These people have a really wide variety of home computers, from old vacuum tube ones and all discrete germanium transistor ones to microprogrammable LSI minis and microprocessor based ones. Some of them have reconditioned obsolete models that you can't even buy parts for anymore, with such weird peripherals as drum memories and flexowriters. Others have lots of the latest stuff, like CRT graphics terminals, digital cassettes, and floppy disks. And of course lots of them have designed their own CPU architecture and instruction sets to provide special purpose capabilities that are unmatched by anything in the industry. Then any article published for one of these systems will be quite useful to thousands of people. But as it is now, there is little in the I ine of construction articles and detailed program descriptions (with source code listings) that could be directly used by more than a handful of ACS members. Therefore, Stephen Gray does not publish such articles in the ACS newsletter. Instead he has used this disparity as an opportunity to make it a more personal newsletter, reporting in each issue what various individuals have accomplished, what difficulties or experiences we have written about, who of us have information or equipment to sell, or trade, who needs information about certain equipment, what new items are available commercially, to the home computer market and so on. All in all it's a very helpful "The ACS is an informal organiza- tion, with no such thing as officers or meetings . . . the main function has been to initiate the exchange of ideas and equipment ..." With such a wide variety of approaches, design philosophies and languages existing in the home computer field, each ACS member's computer "lives" in its own special world, having little in common with the next member's computer (which may be several dozen miles away ). Compare that with tomorrow's home computer scene, where there will be thousands of people with systems built around audio cassette mass storage, VDTs and 6800s and 8080s. and informative newsletter. I feel that Mr. Gray has done an excellent job of bringing us home computer builders together, and 1 believe that the ACS and its members have quite a lot to offer to the new generation of home computer enthusiasts that have been spawned by the age of the microprocessor. I think that the recent developments in our field are just great and the near future promises to be absolutely fantastic! It all can't come soon enough for 85 me! Even though science fiction writers predicted it long ago, who knows what the future of computing will bring? I certainly welcome BYTE into our field and wish you the best in this new computer age. Dick Snyder Chelmsford MA Strangely constructed? Indeed! The goal of obtaining more information was accomplished, Dick, although Mr. Gray is too modest to send it to BYTE himself. All I had to go on was one cryptic letter Stephen B. Gray had written to Wayne Green and a file reference supplied to me by Richard Gardner who makes it his business to know what's going on where and by whom. I am firmly of the belief that anyone who has made verifiable contributions to the technological progress of this extremely interesting hobby should be recognized — as you point out in your letter Mr. Gray has made such a contribution by serving as a focal point for a group of the pioneer home computer hackers. To the best of my knowledge he is the earliest person to put together a vehicle for communications amongst home brew computer people, a notable contribution. . . . Carl The comparison of simple subroutines for different microcomputers does not show the relative merits of the machines. WHICH MICROPROCESSOR EVALUATOR FOR YOU? Dear Editor, I am pleased to see a high quality magazine for the computer hobbyist. In this large and fast changing field BYTE will be invaluable as an educational and informational forum. I have spent the last three years programming microcomputers, most recently writing ALTAI R BASIC with Paul Allen and Monte Davidoff, and hope to share some of what I've learned with your readers. I do have some disagreement with statements made in Hal Chamberlin's article "Which Micro- processor for You?" Of the three micros, the IMP-16, the Intel 8080 and the Intel 8008, the 8080 has the best memory efficiency due to the number of things that can be done in a single 8-bit instruction. The IMP-16 is second best, requiring 30% more memory bits; and the 8008 is a distant third, requiring about twice as much memory as the 8080. The IMP-16 is the fastest machine with the 8080 a close second. The 8008 is at least 1 2 times as slow as the 8080. This is because the 8008 not only has a much slower cycle time, but it requires many mo re operations to perform an equivalent function. Software from MITS costs about six times as much if hardware is not purchased from MITS. As long as hardware is purchased from MITS, MITS is willing to just break even on the software. The comparison of simple subroutines for different microcomputers does not show the relative merits of the machines. The best way someone who doesn't know a lot about software can judge the different microcomputer; is by seeing how large and how fast a large program like a BASIC interpreter or FORTRAN compiler written by a professional programmer will run on the machine. William H. Gates President, Micro-Soft Albuquerque NM PS: The program on page 54 of BYTE #1 doesn't work since the dispatch table entries are three bytes long instead of two. The substance of Bill Gates' letter is that the problem of evaluating a computer's performance is a complicated issue. Every machine has its little idiot-sy ncrasies which enable it to outperform its competitor in a specific context. The tests one uses to evaluate the machine in many ways affect one's results: Bill (like myself) would tend to evaluate a machine based upon a complicated "benchmark" application or systems program. This sort of evaluation typically will exercise the full range of the CPU's instruction set in a real-world large program context. Other people would tend to evaluate not upon that benchmark, but on the ease of generation of machine code which is fully optimized by a modern compiler. The compiler writer's benchmark is different from the systems hacker's benchmark. Then there is the small computer world — which is the best computer from the home brew hacker's standpoint? Probably in the current state of the art it is the machine which has the easiest instruction set to deal with given a modicum of support in the form of assemblers from the kit supplier. People have been evaluating computer instruction sets since the first time some disgruntled programmer cu/sed at an IBM 650 (or earlier) product. A nd people will continue to do so. I'd like to see some of BYTE's readers giving personal evaluations of their own experiences programming some of the machines which are now available. This will produce still another form of benchmark. Oh yes, regarding the mistake on page 54 — see the "Diagnostics" heading in the Nucleus of the Queue, in this issue. . . . Carl IT'S GREEK TO ME ... Carl, With all due respect, your dump of computer organizations in the last issue of BYTE was incomplete! (Obviously a hardware bug.) You omitted perhaps the biggest one of them all (at least in potential) — Beta lota Tau (BIT). Yes fans - that's right — it's here now — the first computer science college fraternity. Us knurds got our (expletive deleted) together this time. You say you never heard of us? That's understandable, we're new (and not fully established yet). As of the present only two chapters are emerging from the mass of red tape (7, 9 and Cassette): the founding chapter here at Rose-Hulman Institute of Technology (and software disproving grounds), and the Beta chapter at Michigan State. As the probability of this publication finding its way to college campuses this fall approaches one as a limit, we would like to take this time to rip off some advertising space. Are you interested in starting a chapter of BIT at your college or university? If you are, then ASCII some of your friends. Show them this crazy letter we're writing at this crazy hour. Drop us a 86 line (RS-232 compatible) at the address below. We'll send you more information as we get it ready. If nothing else we'll help synchronize you with the rest of the knurds at your school (provided they write in also). Write to: 000* BETA IOTATAU 001 * c/o Richard A. Petke 002* R.H.I.T. Box 520 003*Terre Haute IN 47803 For BIT, R. Petke High Order Bit B. Cop us Chairman of the Vice L. Passo I/O Processor / suppose it just had to happen some time. I'm glad to hear about BIT, Richard. The very idea of BIT leads to all manner of intricate and exciting possibilities. Why, to start off with, you'll need to recruit a bunch of novices known as "Least Significant Bits'' into which they have been indoctrinated with their Initialization Writes, they can work their way up through the ranks. But you will have to be selective about it — you'll have to watch out for shifty characters. AND In the fall you can schedule (at high priority) some major social events in the BIT house culminating in the Masked Ball around Halloween. OR in the spring you can have another big social affair at which you'll crown the Queen of the PROM (hopefully she'll not get burned). Speaking of such matters, to be fair you had better organize the logical complement of your organization. Find some ladies to form a sorority, or change your parameters and get some grand scale integration into your organization. Keep me posted on progress of BIT. . . . Carl 1 K 475 ns STATIC RAM $4.25 for one $4.00 each for eight SIGNETICS 2602-1 $3.75 each for 32 all orders shipped postpaid and insured. Mass residents add 3% sales tax WHY PAY FOR BEING SMALL? Centi-Byte is a new source of memory components and other necessary items for the computer hardware builder. Our function is to be a voice to the manufacturing companies representing you, the modest volume consumer of special purpose com- ponents. Centi-Byte brings you this special intro- ductory offer of fast memory chips, chips fast enough to run an MC6800 or 8080 at maximum speed. These 2602-1 's are new devices purchased in quantity and fully guaranteed to manufacturer's specifications. Centi-Byte works by concentrating your purchasing power into quantity buys of new components. Let us know what you need in the way of specialized components and subsystems for future offerings. With your purchasing power concentrated through us, together we will lower the cost of home computing. Lenti-t PO BOX 312 BELMONT, MASS. 02178 INTEL 1K2102 RAM Factory prime, tested units. Factory selected for much faster speed than units sold by others. 650 NS. These are static memories that are TTL compatible and operate off + 5 VDC. The real workhorse of solid state memories because they are so easy to use. Perfect for memories because they are so easy to use. Perfect for TV typewriters, mini-computers, etc. With specs. $3.95 ea. or 8 for $30 SIGNETICS 1KP-ROM 82S129. 256 x 4. Bipolar, much faster than MOS devices. 50NS. Tri-state outputs. TTL compatible. Field programmable, and features on chip address decoding. Perfect for microprogramming appli- cations. 1 6 pin DIP. With spec. $2.95 ea. 8T97B By Signetics. Tri-State Hex Buffer MOS and TTL Interface to Tri-State Logic. Special $1.49 DO YOU NEED A LARGE COMMON ANODE READOUT AT A FANTASTIC PRICE? S.D. presents the MAN-64 by Monsanto - 40 inch character. All LED construction - not reflective bar type, fits 14 pin DIP. Brand new and factory prime. Left D.P. $1.59 ea. 6 for $7.50 MOTOROLA POWER DARLINGTON - $1 .99 MJ3001 - NPN - 80 Volts - 10 Amps - HFE 6000 typ. To-3 Case. Ideal for power supplies, etc. We include a free 723 regulator w/schematic for power supply with purchase of the MJ3001. You get the two key parts for a DC supply for only $1.99. Regular catalog price for the MJ3001 is $3.82. LARGE SIZE LED LAMPS Similar to MV5024. Prime factory tested units. We include plastic mounting clips which are very hard to come by. Special 4 for $1 48 HOUR SERVICE You deserve, and will get prompt shipment. On orders not shipped in 48 HRS' a 20% cash refund will be sent. We do not sell junk. Money back guarantee on every item. WE PAY POSTAGE. Orders under $10 add 75^ handling. No C.O.D. Texas Res. add 5% tax. 1 S. D. SALES CO. P. 0. BOX 28810 DALLAS, TEXAS 75228 87 from page 7 be unused. In general, as many of these locations as you can afford should be filled up with random access memory chips, which, experience has shown, people are always able to use up in programs. Sooner or later you will find yourself limited by the constraints of small memory! For the benchmark system, the minimum random access memory should be 4k (4096) 8-bit bytes or 2k 16-bit words. A preferable number is 8k bytes or 4k 16-bit words. ROM Systems Software? How do I get my first programs into memory after turning on power? The answer to this question is the method of "bootstrapping" or "initial program loading" (I PL) which is used by a computer. Early in the minicomputer game, technology of computing was at a state where the principal bootstrapping method was a set of front panel switches which addressed memory locations and allowed the programmer to put in short programs by hand. With the advent of the new high density ROM integrated circuits, it is now possible to provide the convenience of an automatically bootstrapped system through systems software which is cast into the concrete form of an ROM device. Many of the kit suppliers I have talked to are either currently supplying or intending to add this ROM systems software feature. Initially, the programs which Experience has shown that sooner or later you'll feel constrained by any size of memory — the greed of many programmers for more memory is unbounded! are "built-in" tend to be fairly standard "control panel" type routines which use a terminal (Teletype or television typewriter) for a set of simple commands. Later — with inputs from users regarding desirability - you can expect to find prepackaged assemblers and high level language compilers/interpreters occupying major portions of the address space available in typical microcomputers. This will make the systems software feature even more versatile. Keyboard and Displays? But of course. The interactive nature of an editor capability cannot be realized with a mere control panel. The same thing goes for most of the more interesting applications of the small computer. You will need a character-oriented display device and a typewriter style input — whether these be a TV typewriter or an old Baudot coded Teletype clunker is up to you. The typical programs will be controlled by keyboard commands and will produce outputs back to the display. Cassette Tape Interfaces — Mass Storage Without Mass Dollars Mass storage is a definite must item for the small computer system. But traditional industry peripherals tend to be expensive, starting at the low end with digital cassette drives and floppy disks at about $500-$800, and working upwards. The solution is to adopt an audio recording method which uses inexpensive ($50) cassette recorders and appropriate interfaces. This allows you to perform the edi ti ng benchmark function while keeping the total system cost low. I'll have more to say on this subject later in this editorial. A minimum of two such tapes is required for a decent editor, because one must be set to "read" old data, and the second must be set to "write" new edited data resulting from your changes. Three is a more desirable number still if you want to do "sort/merge" applications, but two will suffice for the editing benchmark. Suppose Your Budget is Limited — Can It be Done in Stages? What I have just described is the minimum necessary equipment for a fully functional implementation of the small computer benchmark capability, editing. Modularity rules in the computer world, however, so you can easily start out with less function and work up to the benchmark capability in time. You'll also probably end up exceeding this benchmark of hardware/software capability after a while; modularity docs not stop at this level of function. The basic place to start is with a CPU - it'll not be much more than a blinking light box without peripherals, but that's enough to show that "it works " Then, you can add on the interactive keyboard/display of some sort, along with memory (presumably the ROM software came with the CPU). Finally, you can add on the tape interfaces and additional memory in order to arrive at the full benchmark capability. From then on, you can enhance the system with new peripherals and more memory until you end up with a very capable system which can run full BASIC, a decent systems programming language compiler, and all the games, practical applications and amusements you can dream up for the computer. BYTE's Ongoing Monitor Box (B.O.M.B.) BYTE would like to know how readers evaluate the efforts of the authors whose Wood, sweat, twisted typewriter keys, smoking ICs and esoteric software abstractions are reflected in these pages. BYTE will pay a $50 bonus to the author who receives the most points in this survey each month. The following rules apply: 1 . Articles you like most get 10 points, articles you like least get (or negative) points — with intermediate values according to your personal scale of preferences. 2. Use the numbers to 10 for your ratings, integers only. 3. Be honest. Can all the articles really be "0" or "10"? Try to give a preference scale with different values for each author. 4. No ballot box stuffing: only one entry per reader! Fill out your ratings, and return it as promptly as possible along with your reader service requests and survey answers. Do you like an author's approach to writing in BYTE? Let him know by giving him a crack at the bonus through your vote. LIKED Page No. Article LEAST BEST 12 Lancaster: Ins and Outs . . . 20 Wadsworth: Computers Are . . 36 Wier: Hexpawn . . . 42 Gipe: Computers . . . 52 C. Helmers: Notes . . . 56 Fylstra: Son of Motorola 64 Nico: Monitor 8V4 . . . 66 P. Helmers: Versatile ROM . . 1 23456789 10 1 23456789 10 1 23456789 10 1 23456789 10 1 23456789 10 1 23456789 10 1 23456789 10 1 23456789 10 88 5% OFF ON ORDERS OVER $50.00 10% OFF ON ORDERS OVER $100.00 1 5% OFF ON ORDERS OVER $250.00 TTL 7451 .17 74154 1.25 7400 J .14 7453 .17 74155 1.07 7401 .16 7454 .17 74156 1.07 7402 .15 7460 .17 74157 .99 7403 .16 7464 .35 74158 1.79 7404 .19 7465 .35 74160 1.39 7405 .19 7470 .30 74161 1.25 7406 .35 7472 .30 74162 1.49 7407 .35 7473 .35 74163 1.39 7408 .18 7474 .35 74164 1.59 7409 .19 7475 .57 74165 1.59 7410 .16 7476 .39 74166 1.49 7411 .25 7483 .79 74170 2.30 7413 .55 7485 1.10 74173 1.49 7416 .35 7486 .40 74174 1.62 7417 .35 7489 2.48 74175 1.39 7420 .16 7490 .59 74176 .89 7422 .26 7491 .97 74177 .84 7423 .29 7492 .71 74180 .90 7425 .27 7493 .60 74181 2.98 7426 .26 7494 .94 74182 .79 7427 .29 7495 .79 74184 2.29 7430 .20 7496 .79 74185 2.29 7432 .23 74100 1.30 74187 5.95 7437 .35 74105 .44 74190 1.35 7438 .35 74107 .40 74191 1.35 7440 .17 74121 .42 74192 1.25 7441 .98 74122 .45 74193 1.19 7442 .77 74123 .85 74194 1.25 7443 .87 74125 .54 74195 .89 7444 .87 74126 .63 74196 1.25 7445 .89 74141 1.04 74197 .89 7446 .93 74145 1.04 74198 1.79 7447 .89 74150 .97 74199 1.79 7448 1.04 74151 .79 74200 5.90 7450 .17 74153 .99 LOW POWER TTL 74100 $ .25 74L51 S .29 75L90 $1.49 74L02 .25 74155 .33 74191 1.45 74103 .25 74L71 .25 74L93 1.69 74L04 .25 74L72 .39 74195 1.69 74LK .25 74173 .49 74L98 2.79 74L10 .25 74L74 .49 74L164 2.79 74L20 .33 74178 .79 74L165 2.79 74L30 .33 74185 1.25 74L42 1.49 74L86 .69 HIGH SPEED TTL 74H00 5 .25 74H21 $ .25 74H55 $ .25 74H01 .25 74H22 .25 74H60 .25 74H04 .25 74H30 .25 74H61 .25 74H08 .25 74H40 .25 74H62 .25 74H10 .25 74H50 .25 74H72 .39 74H11 .25 74H52 .25 74H74 .39 74H20 .25 74H53 .25 74H76 .49 8000 SERIES 8091 $ .53 8214 $1.49 8811 $ .59 8092 .53 8220 1.49 8812 .89 8095 1.25 8230 2.19 8822 2.19 8121 .80 8520 1.16 8830 2.19 8123 1.43 8551 1.39 8831 2.19 8130 1.97 8552 2.19 8836 .25 8200 2.33 8554 2.19 8880 1.19 8210 2.79 8810 .69 8263 8267 5.79 2.59 9000 SERIES 9002 $ .35 9309 $ .79 9601 $ .89 9301 1.03 9312 .79 9602 .79 CMOS 4016A .56 4050A .59 4000A t .26 4017A 1.19 4866A .89 4001A .25 4020A 1.49 4068A .44 4002A .25 4021A 1.39 4069A .44 4006A 1.35 4022A 1.10 4071 A .26 4007A .26 4023A .25 4072A .35 4008A 1.79 4024A .89 4073A .39 4009A .57 4025A .25 4075A .39 401 0A .54 4027A .59 4078A .39 401 1A .29 4028A .98 4081 A .26 4012A .25 4030A .44 4082A .35 4013A .45 4035A 1.27 4528A 1.60 4014A 1.49 4042A 1.47 458SA 2.10 4015A 1.49 4049A .59 74COO $ .22 74C74 $1.04 74C162 $2.93 74C02 .26 74C76 1.34 74C163 2.66 74C04 .44 74C107 1.13 74C164 2.66 74C08 .68 74C151 2.61 74C173 2.61 74C10 .35 74C154 3.15 74C195 2.66 74C20 .35 74C157 1.76 80C95 1.35 74C42 1.61 74C160 2.48 80C97 1.13 74C73 1.04 74C161 2.93 NOVEMBER :° C " ET " LCUL *™ KIT 5 function plus constant — amma| m m a addressable memory with brCvlALO individual recall — 8 digit display plus overflow — CALCULATOR CHIPS ofS" '"bte blueries - all 5738 8 digit multiplexed — five function — chain , . . , " ., _ , n .. j • i necessary parts in ready to operation 2 key memory — floating decimal . , , ... . . . ' . . . P ... assemble lorm — instructions — independent constant — interfaces with . , , led with only digit driver — 9 V batt. oper. 24 pin $3.95 CALC KIT (WITH BATTERIES) $1 2.95 5739 9 digit — 4 function — chain operation — 9V BATTERIES ONLY (DISPOSABLE) SET .... $2.00 battery operation — 16 sec turn-off 22 PIN DIP $3.95 9 DIGIT LED DISPLAY FNA 37 CLOCK CHIP /X ? ^ in multiplexed substrate, comm. ca- 5311 6 digit multiplexed — 50-60 Hz — BCD and 7 /wy lhode com P alaole wilh al1 8 digit seg out — fast, slow set 12-24 Hr — 28 PIN DIP /£f/7 calculator chips, 7 segment right hand $3.95 /£j// decimal, red with clear magnifying lens, TIMERS (W .12" character, 1 to 4 MA, 1.8 Vtyp2 J /»"x 555 Multipurpose timer 8 PIN DIP $ .69 ' / '" x ' / "'" hlgh $3.95 556A Dual 555 14 DIP $1.29 TTL (DIP) VOLTAGE REGULATORS MEMORIES 7432 $ .19 7493 $ .49 1103 $ 1.29 7448 .89 74107 .33 f™ cv I" f, *'•"" 5203 12.95 7475 .45 74121 .35 £J™ ™ JJ* 5260 .99 7490 .49 9601 .75 J401 15V IO U0 *"" 5262 3.19 MEMORIES 1101 256 bit RAM MOS $ 1.50 1103 1024 bil RAM MOS 3.95 1702A 2048 bil sialic PROM UV eras. 17.95 2102 1024 bil static RAM 4.25 5203 2048 bil UV eras PROM 17.95 5260 1024 bil RAM 2.49 5261 1024 bil RAM 2.69 5262 2048 bil RAM 5.95 7489 64 bil ROM TTL 2.48 8223 Programmable ROM 3.69 74200 256 bil RAM Iri-slate 5.90 Data sheets on request With order add $.30 for items less than S1.( LINEAR CIRCUITS CALCULATOR & CLOCK CHIPS 5001 12 DIG 4 fund fix dec 5002 Same as 5001 exc btry pwr 5005 12 DIG 4 (unci w/mem MM5725 8 DIG 4 lunct chain & dec MM5736 18 pin 6 DIG 4 fund MM5738 8 DIG 5 fund K & mem MM5739 9 DIG 4 fund (btry sur) MM5311 28 pin BCD 6 dig mux MM5312 24 pin 1 pps BCD 4 dig mux MM5313 28 pin 1 pps BCD 6 dig mux MM5314 24 pin 6 dig mux MM5316 40 pin alarm 4 dig $2.49 2.79 2.99 1.98 4.45 5.35 5.35 4.45 3.95 4.45 4.45 5.39 LED's MV10B Red TO 18 i .22 MV50 Axial lead* .18 MV5020 fumbo Vis. Red (Red Dome) .22 Jumbo Vis. Red (Clear Dome) .22 ME4 Infra red dill, dome .54 MAN. Red 7 seg. .270" 2.19 MAN2 Red alpha num .32" 4.39 MAN4 Red 7 seq. .190" 1.95 MANS Green 7 seg. .270" 3.45 MAN6 .6" high solid seq. 4.25 MAN7 Red 7 seq. .270" 1.19 MAN3 Red 7 seg. .127" straight pins .29 MAN8 Yellow 7 seq. .270" 3.45 MAN66 .6" high spaced seq. 3.75 MCT2 Opto-iso transistor .61 MULTIPLE DISPLAYS NSN33 3 digil .12" red led 12 pin fits IC ski. $1.79 HP5082 5 digil .11 led magn. lens 7405 com. cath 3.49 HP5062 4 digit .11 LED magn. 7414 lens comm. cath. $3.25 FNA37 9 digit 7 seg led RH dec clr. magn. lens 4.95 SP-425-09 9 digil .25" neon direrl inler- lace with MOS/LSI, 180 VDC, 7 segl.79 SHIFT REGISTERS MM5013 MM5016 1024 bil accum. dynamic mDIP $1.75 500/512 bit dynamic mDIP 1.59 DTL 930 932 936 937 .15 949 944 .15 962 946 .15 963 ! ! 300 Pos V Reg (super 723) TO-5 $ .71 301 Hi Perf Op Amp mDIP TO-5 .29 M 302 Volt follower TO-5 .53 At iiu Neg V Reg TO-5 .80 ^ 307 Op AMP (super 741) mDIP TO-5 .26 308 Micro Pwr Op Amp mDIP TO-5 .89 309K 5V 1A regulator TO-3 1.35 310 V Follower Op Amp mDIP 1.07 311 Hi perf V Comp nDIPTO-5 .95 319 Hi Speed Dual Comp DIP 1.13 320 Neg Reg 5.2, 12, 15 TO-3 1.19 322 Precision Timer DIP 1.70 324 Quad Op Amp DIP 1.52 339 Quad Comparator DIP 1.58 340K Pos V reg (5V, 6V, 8V. 12V, 15V, 18V, 24V) TO-3 1.69 1 3401 Pos V reg (5V, 6V, 8V, A 12V. 15V, 18V, 24V) TO-220 1.49 iM AF-IF Strip delector DIP 2.93 J AM/FM/SSB Strip DIP .53 376 Pos V Reg mDIP 2.42 377 2w Stereo amp DIP 1.16 380 2w Audio Amp DIP 1.13 380-8 .6w Audio Amp mDIP 1.52 381 Lo Noise Dual preamp DIP 1.52 3B2 Lo Noise Dual preamp DIP .71 550 Prec V Reg DIP .89 555 Timer mDIP .89 556A Dual 555 Timer DIP 1.49 560 Phase Locked Loop DIP 2.48 562 Phase Locked Loop DIP 2.48 565 Phase Locked Loop DIP TO-5 2.38 566 Function Gen mDIP TO-5 2.25 567 Tone Decoder mDIP 2.66 M 709 Operational AMPL TO-5 or DIP .26 affl 710 Hi Speed Voll Comp DIP .35 711 Dual Difference Compar DIP .26 ^B 723 VReg DIP .62 739 Dual Hi Perl Op Amp DIP 1.07 741 Comp Op AMP mDIP TO-5 .32 747 Dual 741 Op Amp DIP or TO-5 .71 748 Freq Adj 741 mDIP .35 1304 FM Mulpx Stereo Demod DIP 1.07 1307 FM Mutpx Stereo Demod DIP .74 1458 Dual Comp Op Amp mDIP .62 1800 Stereo multiplexer DIP 2.48 LH2111 Dual LM 211 V Comp DIP 1.70 af| 3900 Quad Amplifier DIP .35 V| 7524 Core Mem Sense AMPt DIP .71 ■ 8038 Voltage contr. osc. DIP 4.25 ■ 8864 9 DIG Led Calh Drvr DIP 2.25 M\ 75150 Dual Line Driver DIP 1.75 75451 Dual Perepheral Driver mDIP .35 ^P 75452 Dual Peripheral Driver mDIP .35 75453 (351) Dual Periph Driver mDIP .35 75491 Quad Seq Driver for LED DIP .71 75492 Hex Digit driver DIP .80 Satisfaction guaranteed. Shipment Canada and Mexico within 3 days shipping and handling for orde California residents add sales tax will be made via first class mail in U.S., from receipt of order. Add $.50 to cover rs under $25.00. Minimum order $5.00. INTERNATIONAL ELECTRONICS UNLIMITED P.O. BOX 1708/ MONTEREY, CA. 93940 USA PHONE (408) 659-3171 Carl Helmers Benchmarks, Standards, etc. I just described what I think is a reasonable version of the state of the art in small systems computing at the low end in price. Now, what can you expect out of the supplier of small systems products ^ that you can implement the benchmark capability? Well, for one thing, sooner or later every supplier will want to demonstrate this type of system with an editing capability. Note with care that I did not specify one iota of detail about the actual editor programs themselves which implement the capability. I've hardly limited the software people (or lack of same) at the kit companies to a particular imple- mentation. There will be plenty of room for variations on the basic editor concept from supplier to supplier, in terms of meeting the benchmark requirement. The only supplier of kit computers who comes close to demonstrating the under $1000 benchmark to my satisfaction is Scelbi Computer Consulting in Milford, Conn. Their 8008 oriented system has reasonably priced software listed in their catalog for a tape editor program, and the peripherals/memory products they list look sufficient for this capability. (MITS: I get Standardization is a must for the growth of this industry — both for the users of the equipment and the manufacturers. the impression that from your prices and available printed data, your library of programs is oriented to the larger systems which implement your BASIC interpreter. This puts them out of the class of under $1000 computer systems, although your new 6800 system may be in the small computer benchmark classification of this editorial.) As manufacturers send me evidence (documentation, systems summaries, program listings, etc.) for the small systems benchmark capability, I'll report on them either in the editorials of BYTE or in review articles commissioned for that purpose. Readers can help prod the software departments (or lack of same) at the various kit manufacturers by writing them to urge demonstration of both the benchmark capability and to urge "bundling" of that valuable systems software — the editor — as part of the package of items which comes with the computer. Comments on Kit Documentation: An Open Letter to Manufacturers What should readers expect from a kit manufacturer? BYTE is certainly looking into the various kit products with the reviewers' soldering irons, pens and typewriters in hand, so we can present a critical evaluation of the ease (or lack thereof) of assembly of the products. Just so you won't have it sprung on you without warning, I thought a few comments on assembly manual standards for reviewing kits might help, and it will give our readers an idea of what to look for when they buy these products. For starters, let's concentrate on the first documents the kit builder has to come across — the system's assembly and hardware checkout documentation. Manufacturers, be on your guard here! Microcomputers are complicated pieces of equipment which cannot tolerate mistakes in assembly if the result is to be a functional unit. Further, since there is a finite possibility of bad integrated circuits getting through your quality control procedures (if any), you had best make sure you can count upon your customers to diagnose any problems which might arise. While you can assume an above average intelligence on the part of your customers — the readers of BYTE — you cannot assume a complete familiarity with all the details of your system. The burden of clear and understandable presentation lies upon your shoulders. The days of the two page description of some digital logic circuit being passed off as an assembly manual are over when it comes to microcomputers. Kit computer builders do not need the Heathkit overkill approach to assembly procedures, but they do need more than a skeleton of a manual. There is a balanced middle ground between the extreme of minute detail on one hand, and a bare circuit diagram with parts list on the other. Here are some of my thoughts on what a good assembly and checkout document might contain. System Summary : A description of the overall design of your product, and where the particular unit being assembled fits into that design. Complete Schematics: The need for these goes without saying. Parts Lists: Specify what you think you ship, and stick to it as closely as possible. The user can check it off and pick up errors. Recommended Assembly Sequences: Give a fairly detailed sequence of assembly, more than "stuff PC boards," "solder" then ''checkout.' 1 As a manufacturer you should assemble the kit at least once yourself while taking notes on paper or magnetic tape. In any given mechanical and electrical assembly design, there is bound to be an optimal sequence of steps — being close to it you should be able to give a good approximation of the optimum. The assembly sequence should be specified with sufficient detail — pictures where necessary — so that an intelligent reader can reproduce it. Checkout Sequences And Self-Test: Thought should be given to the sequence of procedures needed to verify the operation of the kit once it is assembled. Do not under any circumstances leave your checkout procedures to a strictly "nominal" course. I can predict that sooner or later some of your customers will find common glitches in assembly. Give a lew side branches in the checkout procedures for commonly occurring problems. "Ah," you protest, "but I don't 90 fSSM 7400N TTL *m SN7400N SN/401N SNM02N SN74U3N SN7404N SN/4G5N SN7406N SN74II7N SN7408N SN 7.1 09N SNM10N SN74IIN SN74I2N SN/413N SN74I4N SN/416N SN7417N SN7-JI8N SN/J20N SN74?1M SN7-1P3N SN7475N SN747(iN SN742/N SN7429N SN7130N SN7132N SN7437N SN7438N SN7433A SN7440N SN 74-11 N SN7442N SN7443N SN7444N SN7445N SN744SN SN7447N SN714SW SN74SDN SN/4! IN SN7453N SN7454N SN7469A SN/4GON SN74 70N SN7472N SN7473N SN7474N 5N74 75N SN747UN SN7480N SNMB2N SN7483N I SN7485N SN7486N ! SN7488N SW74B9N SN7490N SN 7.13 IN 5N75 1 75 LM340rf.fi 1,75 LM340To 17 1 75 LM340Ti> 15 1 7b LM340TO 74 I 75 LM350N 1 00 LM351CN 65 LM370N 1 lb LM3 70H 1 15 U1373N LM377N LM380N LM3B0CN LM3B1N LM3H7N NE501K NE5I0A NE531H NE53GT NE540L NEbbON NE553 1.39 106 GOO 3 00 6.00 6.00 79 7.50 9 GO m.bD NEbbbV NE565H NE5G5N NE56GCN NE567H NE5G7V LM703CN LM7n9H LM709N LM7I0N LM7MN LM723N LM773H LM733N LM739N LM741CH 31 00 LM/4ICN 3'1 00 LM741 14N 39 LM/4 7H 79 LM747N 79 LM748H LM/48N LMI303N LM1304N LM1305N LM1307N 1.25 1.9b 1.50 100 1 29 39 LM13IQN 2.95 LM1351N 1.65 LM1414N 175 LM1458C 65 LM1496N .95 LM155GV 185 LM2111N 1.9b LM2901N 2.95 LM30G5N .69 LM390ON .bb LM3905N 60 LM5556N 1.85 MC5558V 1.00 LM7525N 90 LM7528N 2.20 LU7534N 2.20 LM7535N 1.25 803BB 4 95 LM75450 49 75451CN 39 75457CN 39 75453CN 39 75454CN 39 75491CN .79 7b492CN 89 7b494CN 89 RCA LINEAR CA3013 1.70 CA3023 2. IS CA3035 2 25 CA3039 1.35 CA304I'. LIS CA3059 2.46 C A30GO 2 80 CA30B0 8b C A3 083 1 GO CA3086 .59 CA3089 3 25 CA3091 8.25 CA3123 I 8b CA3G00 1 75 DATA HANDBOOKS 7400 Pin-out S Description ot 5400/7400 ICS S2.95 CMOS Pin-outs Description nl 4000 Series ICS S2.9S LINEAR Pinaul & Functional Description of Linear Circuits S2.95 POWER SUPPLY CORDS ^^^2 CONDUCTORS SPECIAL ^^ ^"™ ^™ " 3/S1.00 THUMBWHEEL SWITCHES JAMES NOVEMBER SPECIALS iNinoi biiv;- 1 i 1N4002 inov t I IN4003 ZQ0V@ 1 IN4Q04 4MV @ I IN414B SwitdMin i Tb SI on 15'Sl.OO 70S! 00 8 Bit LjI TRAWSISTORS 7N73()7APNPSwndim.j G'SI (10 7N2272ANPNSwili:lniiii B'SI 00 7N3904 NPNAmp b si.no 2N3906 PNPAniii G'SI 00 7N918 NPNRF ESI 00 7N5951 NJFet 6.S1 00 CIDGB1 3 fi Amp SCR 7 SI 00 7400 7447 F490 74100 74)54 Oetodei 74137 Couiiler 75 LM301H LMJ41H 4 SI 00 LM324N Qujd 741 1 19 LM303H HV Rul) TO 5 79 LM303K 5U Rug TO 3 .99 DYNAMICSHIFT REGISTERS MM500H MM504H MMS10H 2 FOR MM5D3H MM50HH MM5D1GH SI. 00 CLOCK &CALC. CHIPS S2.95 MM5312N HM53I3N MMS314M MM531CN MMS72SN MM573GN MM6738N G Dngil B Digit G Oii)i Alaim 2.95 3.95 1.98 Dnjil 4 Fui BOiijiiI Fui B Digit 5 Fui 26 Awg RIBBON CABLE 1 Fl.Minimum 19 It. 1 ft. 4 Cmid. 8 Cond. .29 It. .59 11. PARTS SURVEY I read the letter from Robert Briner In the June issue of R-E about his problem of obtaining parts overseas for projects. I now have nine months experience with several firms and received all the parts I ordered. The time it took to receive the parts varied from firm to firm. Here is a list of my experiences with the firms. James Electronics Poly Paks Internationa! Electronics Unlimited Southwest Technical Products Meshna Electronics Delta Electronics Solid State Sales Howard W. Sams& Co. Belmont, CA 7-10 days Lynnfield, MA Monterey, CA 2-3 weeks (getting better) 2-3 weeks San Antonio, TX 3-4 weeks Lynnfield, MA Lynnfield, MA Somerville, MA Indianapolis, IN Dallas, TX 2-3 weeks 3-4 weeks 3-4 weeks 7 weeks I-IVS months All the times are from the day I wrote the letter until I received the parts. H. K. BERKHOUDT Rotterdam (23) Holland Rlprinted From Radio & Electronics September 197b DPST C&K ROCKER SWITCH They are rated at 125 Vac 5A. They are excellent in application such as Microcooipuier Panel Switches Dim: T'xT'x 1 /*" $0.69 HP-5082-7300 fe HP-5II8? 73IM «■■ chi|j Only B luni (BCD in. OP. Larch. hi'mVi:' win $5.95 WxWXFMERS P.C. Mount SPECIAL 1/16 VECTOR BOARD P Pattern O 1" Hole Spacing MCNQKC m|» **" ii ':;§ ;;..,., ■.„. lli9P4.lOI.3f. 1 1 » M 'I' Oil tie 6.3 Hcie'wi \uw con. big m IC capactly In ead tin. nil kn with all ihc qualnv ul OT Snr.kets and tlif Itest ol tlie Proto ■J OT }&S5ocVais; I (IT 3SB Bus Sin 2 b wti linidiif) posti. '1 ruliliet (eet; screws, nuts. Iiolts; dud saiy asseinlily "Special FND70 MAN 1 MAN 2 MAN 3 MAN 4 MAN 7 DL33 DL747 DISPLAY LEDS Com. Cailt. .250 Com. Ano. .270 S 5x7 Matrix .300 Com, Cath. Com. Ano. 1.35 1.50 1.95 1.95 $ DISCRETE LEDS MV 10 MV hO MV WOA MV bUJfl MV 5024 MV 1(174 b SI 00 GS1 00 5 SI (10 4/S1 00 4. 'SI 00 4 SI 00 5 si no \ ICS0LDERTA1L - LOW PROFILE [TIN] SOCKETS 25-49 50 100 1 M S0LDERTAIL STANDARD (G0LDI WIRE WRAP SOCKETS (GOLD) LEVEL =3 41 37 34 pin 510b 3G pm .1(1 pm 50 PCS. RESISTOR ASSORTMENTS $1.75 PER ASST. (70 OHM 56BOHM ii8ll OHM H?(I OHM I bK 3.9K 1 BK .1 IK 2?DK bfiOK I70K 330K 820K ? 2M 1/4 WATT 5 J :, 50 PCS. 1/4 WATT 5% ■ 50 PCS. 1/4 WATT 5*/- = 50 PCS. 1/4 WATT 5'!'.» 50 PCS. 1/4 WATT 5V.= 50 PCS. 1/4 WATT b%= 50 PCS. 1/4 WfiT5% 50 PCS. PRIME INTEGRATED ASST 9 CIRCUIT ASSORTMENTS ASST '° ASST 11 SSIT ;ti!5 4002 SGST 5G7T Satisfaction Guaranteed. $5.00 Min. Order. U.S. Funds. California Residents — Add 6% Sales Tax Write for FREE 1975F Catalog — Data Sheets .25« each P.O. BOX 822, BELMONT, CA. 94002 PHONE ORDERS - (415) 592-8097 MICROPROCESSOR COMPONENTS^ 8008 -$19.95 2102 -$2.95 210? 2107 7010 91 (.02 74200 74LS07O IK Static RAM Din 3.95 .Veclor General Purpose Loijic CARD Board 14.95 ■Very High No.se Immunity ' Holds 12 ea. 14 pm DIPS "44 pin Edge Connection THE KILOBYTE RAM CARD Per Kit $49.95 "ComplfilR I Kx8 Memory " High Noise Immunity Components •Single bv supply *b00NS Access Time SKit includes sockets. ICS 8 FREE Willi each $75 otder of Microprocessor cor S12.00 gel a one year tubseflptiort to BYTE the mat Value computer PHREAKS FREE FREE' pom kits EXAR ics XR22D6KA SPECIAL S17.95 Includes monolithic function generator IC, PC board, and assembly instruction manual. XR2206KB SPECIAL $27.95 Same as XR2206KA above and includes external components fn. PC board TIMERS XR-565CP SPECIAL XR-320P XR-556CP XR-255GCP XR-2240CP SPECIAL 1.55 1.85 3.20 3.25 PHASE LOCKED LOOPS XR-210 5.20 XR215 6.60 XR-567CP 1.95 XR2567CP SPECIAL 2.99 STEREO DECODERS XR 1310P S3.20 XR 13I0EP 3.20 XR-1800P 3.20 WAVEFORM GENERATORS XR-205 8.40 XR-2206CP SPECIAL 4.49 XR-2207CP 3.85 MISCELLANEOOS XR-2211CP XR-2261 6.70 3.79 ^Special Requested Items* RCrtl34 (IC'1195 MSVliack Rrg FS3GH UecuJiM LDMO'IM DVMCIupSe. CA3I30 Supef CMOS Op Amp MCMDBL7 A/0 F334I FIFO PJ8T97 S3 00 J034P 275 2S13 MOO 2518 7.00 3534 3.50 352S 6.00 2537 5.00 ZENERS-DIODES-RECTIFIERS TYPE VOLTS IN 746 3.3 IN75IA 5.1 IN757 5.6 IN7S3 (i? IN754 G.B 1N965B lb INb?32 5.G INb234 G7 IN5235 G.B INS236 7 b IN45G 7b INflb8 IbO IN4SbA IBO IN4001 bOPIV IN400? IU0PIV PRICE 4/100 4/1,00 4/1.00 4/1 00 4/1.00 TYPE VOLTS W IN4003 200 PIV 1 AMP IN4004 400 PIV I AMP IN3E00 b0 200m 1U4148 /5 10ni 1N4164 35 10m IH4734 b6 In IN4735 62 In IN4736 6 8 Kv IN473B 8.2 lw IN4742 IN4744 IN 1183 IN 1 184 IN 1186 50 PIV 35 AMP 100 PIV 35 AMP ?00 PIV 35 AMP 40.0 PIV 35 AMP MPS AH 5 MPS A08 ?N7213A 7N777I JW???7A 7N?^E3 7N?:tli9A FN2415 2N74B4 7N790GA 7fJ7907A 7N7925 2N305:t 2N3055 MJE3055 5 10 s si an 5- SI 0U ZS1.M TRANSISTORS PN35G7 JSII PM3SE8 47S1J PN3SS9 «S1 I 7N37D4 SSI I 7N37D6 E.SII 7N37CIJ 5/SII 7N37Q7 S'St I 7N3711 5'S1I 2N377S S.G5 7U11}b £1 0(1 2N39D3 S/S1.I 7iN33Dfl «*( I 2N39D5 4'SI.I ?N39DG 1.0 A. ct, 8i 6.3 V @ 200 ma. 3 lbs. 70 V. @> 1 .5 A. ct, S 6.3 V § 500 ma. 6 lb. 90 V. 2.0 A. ct, & 6.3 V @ 1.5 A. 8% lb. 50 V.-<°> 1.5 A. ct, & 6.3V @500 ma. 6 lb. 26 V. 1.0 A. ct. &6.3 V. @ 500 ma. 3 lb. 38 V. @ 1.5 A. ct. & 6.0 V.@ 500 ma. 2 lb. 350 V. 35 ma. ct. & 6.3 V. @ 2.7 A 2 lb. 70 V. <9> 1.5 A. ct. & 6.3 V @ 1.5 A. 7Lb. 35 V. <§> 6.0 Ct. & 10 V. @ 10.0 A. 6.0 Lb. 64 or 32 V. 8.0 A. ct. & 18 V. @ 8.0 A ct. 10 B9313 3.50 2/6.00 B9314 6.50 2/12.00 B9315 9.95 2/19.00 B9316 6.50 2/12.00 B9318 3.75 2/7.00 B9319 6.95 2/13.00 B9321 3.50 2/6.00 B9322 6.75 2/13.00 B9906 8.95 ea. lb. B9905 11.95 VOLTAGE REGULATOR BOARDS B5169 is a board containing 3 15 volt high current regulators with 0.1% regulation. 2 of the regulators are rated @ 3 Amps., and the other @ 6.0 amps. The current in each regulator may be doubled with the regulation going to 0.5%.AII 3 regulators are short circuit proof, and 2 have electronic crowbar protect- ion. Brand new, in factory boxes. STOCK NO. B5 169 $11.95 ea. 2/21.00 B9013 is a triple regulator with + 12 volt regulation @ 200 ma. and the third regulator is a tracking regulator, providing regulation from to 5 volta @ .5 A. STOCK NO.B9013 $5.95 ea. 2/10.00 Doth regulators above come withcircuit diagrams. OPERATIONAL AMPLIFIERS (OP -AMPS) TYPE 709 4709 741 747 741 747CT 1458 LM101A DESCRIPTION Hi Performance Dual 709 Hi Performance Dual 741 Hi Performance Dual 741 Dual 741 Gen, Purpose CASE TO-5 DIP DIP DIP Mini TO-5 Mini TO-5 STOCK B4301 B5301 B4316 B4317 DIP B4345 B3111 DIP B3112 B4503 PRICE .50 1.00 .65 1.25 .65 1.25 1.25 .50 5/2.00 6/5.00 5/3.00 5/5.00 5/3.00 5/5.00 5/5.00 5/2.00 SELF SCAN PANEL DISPLAY f*^ Burroughs BURROUGHS SELF SCAN display, des- igned for numeric app- lication, requiring up to ~ MODEL SSD 1000-0010 . 1 . 6 characters of numeric ivi w u u u. information. Display is made up of neon dot matrix. Each character is defined by a positive logic 4 bit code. Display operates in a scanning mode, scanning from left to right, one column at a time. Electronics is in inter ior of bezel, and consists of LSI chip and integrated circuits. Current distributor price is $135. 00. LIMITED QUANTITY STOCK NO. 5180 with data $49.50 2/90.00 Please include sufficient postage. Excess refunded MINIMUM ORDER $5.00 DELTA ELECTRONICS CO. BOX 1, LYNN, MASSACHUSETTS 01903 Phone (617) 388-4705 Send for the latest edition of our catalog. Loaded with electronic and computer bargains. 7-Segment Readout 12-PIN DIP Three digits with right-hand decimal Plugs into DIP sockets Similar to (LITRONIX) DL337 Magnified digit approximately .1" Cathode for each digit Segments are parallel for multiple operation 5-10 HA per segment EACH SI. 75 4 (12 DIGITS) $6.00 RCA Numitron EACH $ 5.00 SPECIAL: 5 FOR $20.00 DR2010 * MOS MEMORY 2102-2 1024 Bit Fully Decoded Static MOS Random Access Memory -fast access 650ns -fully TTL compatible -n channel silicon gate -single 5 volt supply -tri-state output -1024 by 1 bit -chip enable input -no clocks or refreshinq required Brand New Factory P^rls 16 PIN DIP Each $4.00 8 for $27.95 Power Supply SPECIAL! 723 DIP variable regulator chip 1-40V, + or - output? 150 MA 10A with exter- nal pass transistor— with diagrams for many appl ications. EACH $1.00 10 FOR $8.95 5001 Calculator 40-Pin calculator chip will add, sub- tract, multiply, and divide. 12-digit display and calculate. Chain calcula- tions. True credit balance sign out- put. Automatic over-flow indication. Fixed decimal point at 1, 2, 3, or 4. Leading zero suppression. Complete data supplied with chip. CHIP AND DATA ONLY $2.49 DATA ONLY (Refundable)... $1.00 5002 LOW POWER CHIP AND DATA $12.95 High Quality PCB Mounting IC Sockets 8-PIN, 14-Pin, 16-Pin and 24-Pin PCB mounting 0NLY--no wire wrap sockets. 8-Pin $ .22 ^^■A ^fl - : ^m 16-Pin $ .30 V ^W $ .75 40-Pin SI. 25 All IC's iiro new and f ul ly tested. Leads are plated with gold or solder. Orders for $5.00 or more will be shipped prepaid Add 5 . jj for handling and postage for sma 1 ler orders ; residents of California aa.i s,iU's tax . IC orders are shipped within .' workdays--ki ts are shipped with- in 10 days of receipt of order. S10.00 ni.-itmuir. on C.O.D.'s. BRBVLOn ELECTROniCS Mail orders to: TWX » 910-367-3521 Sa?ram°n t :: 7 CA ""one (916) 334-2161 95841 Monev back Guarantee on all goods. Send for free flyer. 1000 MHz Counter 11C05 Fairchild 1GHz Divide By Four -DC to 1000 MHz operation -AC or DC coupled -Voltage compensated -TTL or ECL power supply -50 ohm drive output -Lead compatible with Plessy SP613 -True and complement ECL outputs -14 pin DIP -Data and application notes Each $49.95 Dale Trimmer -12 turn trimpots which plug into a DIP socket -5K and 200K -V x V x V' -4 leads spaced .3" x .2" Each $.65 10 for $4.95 MV50 Red Emitting 10-4 MA ? 2V MV5024 Red T0-18 High Dome cfc: MV10B Visible Red 5-7 MA G> 2V LED's $ .20 10 FOR $1.25 $ .35 10 FOR $2.95 $ .30 10 FOR $2.50 CMOS CD4001 $ .45 CD4O02 .45 CD4011 .45 CD4012 .45 CD4023 $ .45 74C20 .65 74C160 3.25 3- Amp Power Silicon Rectifiers MARKED EPOXY AXIAL PACKAGE PRV 100. 200. 400. 600. PRICE .$.10 . .15 . .18 . .23 PRV 800.. 1000. 1200. 1500. PRICE ..$.30 . . .40 . . .50 . . .65 DiaOE ARRAY 10-1N914 silicon signal diodes in one package. 20 leads spaced. 1"; no common connec- tions. EACH... $ .25 10 FOR $2.25 II 7400 .20 74H51 .25 7 MOO .30 7453 .20 7401 .20 7454 .20 74H01 .25 74L54 .25 7402 .25 74L55 .25 7403 .25 7460 .16 7404 .25 74L71 .25 74H04 .30 7472 .40 7405 .30 74L72 .60 7406 .40 7473 .35 7408 .30 74L73 .75 74H08 .30 7474 .45 7410 .20 74H74 .75 7413 .75 7475 .80 7417 .40 7476 .55 7420 .20 74L78 .70 74L20 .30 7480 .50 74H20 .30 7483 .70 74H22 .30 7489 J. 00 7430 .20 7490 1. 00 74H30 .30 7492 .65 74L30 .30 7493 .00 7440 .20 7495 .65 74H40 .30 74L95 .00 7442 1.00 74107 .35 7447 1.50 74145 .25 7450 .20 74180 .00 74H50 .30 74193 .50 7451 .20 74195 .65 7400 Series DIP 25K Trimmer PRINTED CIRCUIT BOARD TYPE EACH $.20 10 FOR $1.50 Rectifiers VARO FULL-WAVE BRIDGE VS647 2A 600V $1.10 MR810 Rectifier 50V 1A $ .10 Special 811: Hex Inverter TTL DIP Hex Inverter; pin interchangeable with SN 7404. Parts are brand new and branded Signetics and marked "811." EACH $ .16 f!Kf DATA 10 FOR 1.50 | OH sheet 100 FOR 14.00 supplied 1000 FOR 110.00 WWW1 1 AMP RECTIFIER EACH $ .15 SALE 10 for $1.00 1N4007 1KV PRV MAN 4 7-Segment, 0-9 plus letters. Right-hand decimal point. Snaps in 14- pin DIP socket or Molex. IC voltage re- quirements. Ideal for desk or pocket calculators! EACH $1.20 10 OR MORE $1.00 EACH CD-2 Counter Kit This ki t provides a highly sophisticated display section module for clocks, counters, or other nu- merical display needs. The unit is .8" wide and 4 3/8" long. A single 5-volt power source powers both the ICs and the display tube. It can attain typical count rates' of up to 30 MHz and also has a lamp test, causing all 7 segments to light. Kit includes a 2-sided (with plated thru holes) fiber- glass printed circuit board, a 7490, a 7475, a 7447, aDR2010 RCA Numitron display tube, complete instructions, and enough MOLEX pins for the ICs... NOTE: boards can be supplied in a single panel of up to 10 digits (with al 1 interconnects); there- fore , when ordering, please specify whether you want them i n single panels or in one multiple digit board. Not specifying will result in ship- ping delay. COMPLETE KIT ONLY $10.95 FULLY-ASSEMBLED 'it-*: , . , ... UNIT $15.00 ; ^r:^ 311 Z;" 75 -><«. Boards supplied separately @ $2.50 per digit. LI N E A R S NE555 Precision timer 90 NE560 Phase lock loop DIP 2.95 NE561 Phase lock loop DIP 3.00 NE565 Phase lock loop 2.95 NE566 Function generator T0-5 3.50 NE567 Tone decoder TO-5 3.50 709 Popular Op Amp DIP 40 710 Voltage comparator DIP 60 711 Dual comparator DIP 45 723 Precision voltage regulator DIP 1.00 741 Op amp T0-5/MINI DIP 4 5 748 Op Amp TO-5 80 CA3018 2 Isolated transistors and a Darling- ton-connected transistor pair 1.00 CA3045 5 NPN transistor array l.OO LM100 Positive DC regulator TO-5 1.00 LM105 Voltage regulator 1.25 LM302 Op Amp voltage follower TO-5 1.25 LM308 Op Amp TO-5 2.00 LM309H 5V 200 MA power supply TO-5 1.00 LM309K 5V 1A power supply module TO-3 1.00 LM311 Comparator Mini. 1.75 LM370 AGC amplifier 1.7 5 LM380 2-Watt Audio Amp 1.7 5 LM1595 4-Quadrant multiplier 1.70 MC1536T Op Amp 1.3 5 94 DATA PUMPS BY ULTRONICS Manufactured by ULTRONICS (Sylvania) from phased out equipment. Apparent good condition, several models. No data available. #SP-301 121b $35.00 3/$100 SOPHISTICATED LOGIC SUPPLIES By Dressen-Barnes and NJE. Transistorized, finely filtered and regulated. 115 volt input. #61-5S Output 5VDC 21 Amp 27 lb $47.50 #51-5S Output 5VDC 10.5 Amp 161b 35.00 #421-32 Output 32VDC3.3 Amp 12 1b 20.00 #421-90 Output 90VDC 1.2 Amp 12 1b 20.00 #NJE 5VDC34 Amp 35 lb 75.00 MEMORY SYSTEM $125.00 New memory system by Honeywell, small . . . measures only 9x4x1 inches. 1024 core memory, 1024 words with 8,9,10 bits/word. Random access, with all logic, register, timing, control, core select and sense functions in one package. New, booklet of schematics and data. Looks like a good beginning for a mini-computer. Limited supply on hand. Ship wgt 3 lbs. #SP-79 $125.00 ■ ^SBSte SSI 1,000 uF 15 volt $ .35 2,000 mF 35 volt 1.00 2,000 15 .50 19,500 25 $2.50 1,000 25 .70 12,000 40 2.50 3,000 25 1.00 3,900 50 2.00 1,000 35 .80 22,000 75 3.25 COMPUTER CAPS BRAND NEW CORE MEMORY Another brand new memory, ultra small. Measures only 4x4 inches with format on one plane of 32 x 32 x 16 (16,384). Only about 35 units of this on hand. #SP-81 $20.00 SANDERS 720 KEYBOARD $40.00 yffe£nM<2. FREE CATALOG Please add shipping cost on above. MESHNA P0 Bx 62 E. Lynn Mass. 01904 95 BOTE reader !rvi To get further information on the products advertised in this issue of BYTE merely tear, rip, or snip out this advertiser index, fill out the data at the bottom of the page, mark the appropriate boxes, and send the works to BYTE, Peterborough NH 03458. Readers get extra Brownie Points for sending for information since this encourages advertisers to keep using BYTE — which in turn brings you a bigger BYTE. ADVERTISER INDEX □ American Cancer Society 74 D A. P. Products 4 □ Babylon 94 □ Byte Subscriptions 81 □ Celdat 82 □ Centi-Byte 87 □ CMR 83 □ Continental Specialties Clll d Delta 93 a Delta t 71 □ Godbout 18, 19 □ Hickok 51, 63 □ International Elec. Unltd. 89 □ James Electronics 83,91 □ Martin Research 1 □ Meshna 95 □ Micro Digital 41 □ MITS C IV, 48-50 □ Processor Technology 73,75 □ RGS 2 □ Scelbi 34, 35 □ S. D. Sales 87 □ Southwest Technical CM □ Sphere 8, 9, 10 □ Suntronix 76 □ Teleterminal 71 n Visulex 92 Q Windjammer 80 Messages for the editor: Reader's Service BYTE Green Publishing Inc. Peterborough NH 03458 Please print or type. Name NOVEMBER 1975 BYTE acquired via □ Subscription □ Newsstand □Stolen Address City State Zip Coupon expires in 60 days . . . from page 5 at the same time simultaneously so I need to have a serial interface doohinky instead of a parallel doohinky. Luckily MITS has just such a gadget for the Altair, the 88-SIOC, it is called. Once I get this magic board plugged into the Altair I can install a jack to plug in a Teletype. It'll make me feel a lot better. Not that this is any put down of the Altair for I notice that for some odd reason computers have historically been built without terminals all over the back panel. Let me provide some sage advice to computer designers: Put connectors all over the back panel and make your equipment look like other electronic gear. Stop already with the mystique that computers are something holy and different. They are full of busy electrons like anything else and they should look right. NEED FOR STANDARDS The growth of computer systems should be facilitated by some agreement between hobbyists and industry on standards of interface and control. The day may soon arrive when computers are built with standardized connectors in the back for plugging in serial or parallel fed teletype units, television typewriters, cassette recorders, modems, floppy disk drives, etc. If BYTE can help with this, so much the better. BYTE hereby asks all interested parties to submit papers in support of their proposals for interconnection standards for I/O and memory storage devices. Agreement is important on the standards of interconnection and control, as well as the type of connector to be used. Speak now or hold your peace. Classified Ads Available for Individuals and Clubs Readers who have equipment to buy, sell or swap should send in a clearly typed or printed notice to that effect. Insertions shoufd be Jimited to approximately 100 words or Jess. Advertisements for this feature can be accepted from individuals or bona-fide clubs of computer users only. Commercial advertisers should contact Bill Edwards, BYTE advertising manager, for the latest rate card and terms. Individual /club classifieds will be printed on a space-available basis in the earliest possible issue of BYTE. 96 At last! High quality, laboratory-grade test instruments . . . for the professional and hobbyist ... at prices everyone can afford! CIRCUIT DESIGNER Now you can build/test electronic circuits WITHOUT SOLDER . . . using solid #22 AWG wire to interconnect discrete components . . . resistors, transistors, linear/digital ICs in T05 or DIP packages (8-40 pins), and more. Plus, you get 5-15VDC up to 600ma (9 watts) of variable regulated power, with a built-in 0-15V voltmeter to monitor internal power and/or external circuits. Now, that's design flexibility! And look at the low, low price! Add $2.50 shipping/handling SPECIFICATIONS Power Supply: Output: 5-15V @ 600ma Ripple and Noise: less than 20mv @ full load. Load/Line regulation: <1%. Meter: 0-15V DC. Connectors: 1 QT-59S, 2 QT-59B, 2 power supply 5-way binding posts, 2 meter 5-way binding posts. Wght: 3 lbs. Power Needed: 117V, AC @ 60 Hz 12W.' Patent #235,554. FUNCTION GENERATOR Troubleshooting? Design Testing? DM-2 gives you all the signal source capacity you need ... at a very modest price. This 3-wave form Function Generator has: short-proof output, variable signal amplitude and constant output impedance. Completely wired, tested, calibrated, ready to test audio amplifiers, op-amp and educational lab designs ... as well as complex industrial lab projects. Complete with easy-to-read instructions/operations manual, application notes, operation theory and more, DM-2 works hand-in-hand with DM-1 for total versatility. SPECIFICATIONS Frequency Range: 1Hz-100KHz (5 ranges: 1-10Hz, 10-100HZ, 100-1000HZ, 1-10KHz, 10-100KHz). Dial Accuracy: Calibrated @ 10Hz. 100Hz, IKHz. 10KHz, freq. accurate to 5% of dial setting. Wave Forms: Sine <2% THD over freq. range. Triangle wave linearity, < 1% over range. Square wave rise/fall <0.5 microseconds — 600U-20pf termination. Output Amplitude: (all wave forms) variable-0.1V-10V peak to peak into open circuit. Output Impedance: 60011-constant over ampl./freq. ranges. Wght.: 2 lbs. Power Needed: 117V. AC @ 60Hz 5W.* R/C BRIDGE Have you been bugged by color codes or unreadable component markings? Forget it! DM-3, the low cost R/C Bridge, measures true component values ... in seconds ... to better than 5%. And, it's all done with only 2 operating controls and a unique solid-state null detector, to zero-in on exact component selection . . . instantly! Completely wired, calibrated and tested, DM-3 includes an extensive instruction/applications manual, and operational theory too. SPECIFICATIONS Resistance Range: 100-100 megil. (6 Ranges: 10-100U, 100-1000S1, 1K-10KU, 100K-1 megil, 1 megil-10 megil) Capacitance Range: 10pFd-tmFd- (5 Ranges: 10-100 pFd. 100-1000pFd, .001-.01 mFd. .01mFd-.1mFd, .1- 1.mFd.) Null Detector.: 2 hi-intensity LEDs-hi/lo markings. Accuracy: <5% of null dial, range switch setting. Wght. 2 lbs. Power Needed: 1 17V, AC @ 60Hz 3W.* 54 95 Add $2.50 shipping/handling j$^ » Each measures 6.75"L x 7.5"W x 3.25" H.; completely assembled, ready to start testing at once. Order your DESIGN MATES today! '220V @ 50Hz available at slightly higher cost. All DESIGN MATES are made in USA; available off-the-shelf from your local distributor. Direct purchases from CSC can be charged on Bank Americard, Master Charge, American Express. Plus, you get a FREE English/Metric Conversion Slide Rule with each order. Foreign orders please add 10% for shipping/handling. Prices are subject to change. conTinerrmi /pecifiirie/ corporatioti 44 Kendall Street, Box 1942, New Haven, CT 06509 • 203/624-3103 West Coast Office: Box 7809, San Francisco, CA 94119 • 415/421-8872 Canada: Len Finkler Ltd., Ontario © Copyright Continental Specialties Corporation 1975 Tke MITS Altair 8800 (It's showing up in some or the most unusual places.)