DECEMBER 1975 $1.50 nAfl, the small systems journal What is a Character? Assembling an Altair Logic Testers Galore A New 6800 Kit K h m< h 0- ffl l Wi«l|.lilllt| ,mM'"*! m " ■r.'Mi i a" Using ROMs <§t. r .A m Introducing . . .the world's lowest cost computer system All kits are delivered with a complete instruction manual and packaged for easy visual identifica- tion of parts to aid you in assembly. JOLT® is the new, fully-tested microcomputer with the exclusive on-board DEMON® debug monitor. You can build it, plug it in and talk to it in three hours or less ... for a price of just $249! The basic JOLT® card includes an 8-bit MOS Technology Model 6502 CPU, which requires no clock, can directly address 65k of memory, has two index registers, 58 instructions with 11 addressing modes, two interrupts and includes both single step and address halt capability. And that's only a part of it. JOLT's s CPU card is available IMMEDIATELY* in either kit form or as- sembled ($249 for the kit in single quantity and $348 assembled). Either way, the JOLT® CPU is completely tested prior to delivery. It comes complete with a termi- nal interface (TTY or EIA) and a unique software DEbugger/MONitor called DEMON®, for which full documentation is provided. It is very easy to program, and any JOLT® delivery includes an easy-to- follow assembly instruction manual, show- ing you exactly how to put everything together . . . correctly. Complete assem- bly should take you no more than three hours if you choose the CPU in kit form. Besides the JOLT® CPU — the 6502 from MOS Technology —the basic JOLT*' card has a fully static memory accom- modating 512 bytes of the user RAM. The JOLT® CPU memory also has 64 bytes of interrupt vector RAM. ROM Program memory on the basic card consists of 1k bytes of monitor/debugger with an au- tomatic Power-On bootstrap program — so you can start talking to JOLT® and it to you as soon as you plug it in to your terminal. On-board Input/Output devices on the JOLT® CPU card include TTY 20 milliamp current loop and an EIA inter- face, both full duplex. The card has high speed reader interface lines and 16 fully programmable user I/O lines with lull TTL drive. Nobody, but nobody, except MAI can offer you an on-board debugger/monitor like DEMON®. It's fully documented, too. The exclusive DEMON® Debug Monitor really makes JOLT® one of the most out- standing computer systems offered at any time, at any price. Even without DEMON® and its superior software features, JOLT® is the lowest cost computer system in exis- tence. And DEMON- is a bonus you'll have to use to believe. First, it self-adapts to any terminal speed from 10-30 CPS. With it. you can display and alter your CPU register and memory locations, plus you can read, write and punch Hex formatted data . . . with Write/Punch BNPF format data for PROM programmers. It has unli- mited breakpoint capability along with separate non-maskable interrupt entry and identification. External device inter- rupts can be directed to any location you choose, or they can be defaulted to DEMON® recognition. DEMON® also gives you (1) a completely protected ROM resident debug/monitor; (2) the capability to begin execution at any location in mem- ory; (3) the capability to bypass DEMON® entirely to permit full control by you over your system; (4) a high-speed 8-bit parallel input option; and (5) it includes user calla- ble DEMON® I/O subroutines. MOST IM- PORTANT, DEMON™ IS INCLUDED AS STANDARD WITH ANY JOLT® CPU KIT OR ASSEMBLED BOARD! Obviously, the JOLT® basic card is a computer in and of itself. But you can add significantly to its capacity and versatil- ity by adding 4k RAM JOLT® memories — in one card or a whole bunch. A RAM card kit is only $265 ($320 assembled). NOW. 4096 Bit RAM 4K BYTE The JOLT® memory card is a fully static 4,096-bit Random Access Memory (RAM) with 1 microsecond access time and on- board decoding. It is also available now.* And the quantity of one price is what you might expect to pay in quantities of 100 .. . very inexpensive! There's also a JOLT® 1/0 card for you, our Peripheral Interface Adapter. You can't beat the price — single kit 96 bucks — or the function. Pictured above is the assembled JOLV" CPU card with DEMON"", just plug it in and you're ready to go. The JOLT® PIA (Peripheral Interface Adapter) I/O card includes two PIA LSI chips, 32 input/output lines, two interrupt lines, on-board decoding and standard TTL drive. It is also fully programmable and available IMMEDIATELY* in either kit or assembled form ... at a very attractive single unit price ($140 assembled). Considering the function and capacity of the JOLT® Power Supply Card, you probably think the quantity of one price — $145 — is a misprint. It isn't. The JOLT- family also includes a power supply card, which operates at any of three voltages — +5, +12 and -10. The power supply supports the basic JOLT® CPU card, plus 4,096 bytes of RAM and I/O. The only two words for the price are "dirt cheap." It is available for delivery immediately with a single unit kit price of $145 ($190 assembled). The assembled power supply card shown above powers the JOLT& CPU, 110, and RAM Memory cards. You can also choose a blank JOLT® uni- versal card. Or several. The JOLT® Universal card is completely nude. It's a blank you can use any way you wish, for control panels, T.V. inter- faces, keyboards, LED's, or any other in- terface logic, because the card's holes are drilled to accept 14, 16, 24, or 40 pin sockets and has the same form factor as the other JOLT® cards. The single unit price is just $25. If you think you need extra cables, wires and the like, choose a Super Value JOLT® Accessory Bag. A $55 Value for just $40. The JOLT® Accessory Bag includes 25 separate parts, enough hardware to con- nect one JOLT® card to another. Order an Accessory Bag for each additional JOLT® card. The Bag contains such necessary items as flat cable, connectors, cord spacers, hardware, wire, etc. THE JOLT PLAIN ENGLISH WARRANTY All components in the JOLT® family are new and fully tested prior to shipment. Kil components are fully warranted during the first 60 days of ownership. Assembled parts are fully warranted during the first 6 months of ownership. If your properly as- sembled kit does not work, just ship your order back to Microcomputer Associates Inc. and we'll repair, replace, or refund your money. 20% BONUS NOW! Special ONE TIME BONUS DISCOUNT. Order one CPU before November 10, 1975 and deduct 20% off of all additional cards and ac- cessories. (Note: Discount does not apply to CPU cards, assembled or unassembled.) We told you JOLT® was the world's lowest priced computer system. These prices prove it. JOLT KITS (ALL PAYMENTS MUST BE IN U.S. DOLLARS) QUANTITY PRICING 1-4 5-19 20-49 50-99 100 up JOLT® CPU JOLT® RAM JOLT® I/O JOLT® POWER SUPPLY JOLT® UNIVERSAL CARD JOLT® ACCESSORY BAG $249 $235 $230 $225 265 96 145 25 40 255 90 135 20 36 250 88 130 18 34 245 82 128 16 32 $215 235 75 115 14 30 ALL JOLT® KITS ARE DELIVERED COMPLETE WITH A DETAILED AND ILLUSTRATED ASSEMBLY MANUAL * Order will be shipped within 15 days. JOLT® ASSEMBLED PRICES (ALL PAYMENTS MUST BE IN U.S. DOLLARS) QUANTITY PRICING 1-4 5-19 20-49 50-99 100 uc JOLT® CPU JOLT® RAM JOLT® I/O JOLT® POWER SUPPLY $348 $325 $320 $315 $305 320 305 300 295 280 140 125 120 115 105 190 175 170 165 150 THE NEW JOLT® FROM MAI IS AVAILABLE ONLY ON A DIRECT BASIS. USE THIS COUPON TODAY TO ORDER FROM Microcomputer Associates Inc. 111 Main St., Department G Los Altos, Calif. 94022 Phone (415) 941-1977 3 1975 Pehaco Corporation I This coupon will bring you a JOLT®! Complete and return it. Here is my check, money order or credit card payment for the following JOLT® products. If a U.S. or Canadian order, please add $4.86 for shipping, handling and insurance. (Orders to ail other countries are priced F.O.B. Los Altos and will be shipped FREIGHT COLLECT.) Send me immediately: QUANTITY PRODUCT PRICE . JOLT® CPU KIT . JOLT®RAM MEMORY KIT . JOLT® I/O KIT . JOLT® POWER SUPPLY KIT . JOLT® UNIVERSAL CARD _ JOLT® ACCESSORY BAG _ JOLT® CPU ASSEMBLED _ JOLT® RAM MEMORY ASSEMBLED .JOLT® I/O ASSEMBLED _ JOLT® POWER SUPPLY ASSEMBLED TOTAL + U.S./CANADA SHIPPING/HANDLING/INSURANCE 4.86 NOTE: CALIFORNIA RESIDENTS, +6% SALES TAX TOTAL REMITTANCE (U.S. DOLLARS ONLY) $ I MAIL YOUR ORDER TO: Pehaco Corporation, JOLT® Sales Agents Microcomputer Associates Inc. Dept. G 111 Main St., Los Altos, Ca 94022 All orders subject to the prior approval of the manufacturer 20% BONUS NOW! Special ONE TIME BONUS DISCOUNT. Order one CPU before November 10, 1975 and deduct 20% off of all additional cards and ac- cessories. (Note: Discount does not apply to CPU cards, assembled or unassembled.) 20% BONUS PLEASE CHARGE THE TOTAL TO MY CREDIT CARD: BANKAMERICARD # MASTER CHARGE # My credit card expires on SIGNATURE (include 4-digit #) All credit card orders must be signed!) I UNDERSTAND THAT ALL U.S. ORDERS WILL BE SHIPPED VIA U.P.S. AND ALL INTERNATIONAL ORDERS WILL BE SHIPPED BY AIR. SEND MY ORDER TO: ORGANIZATION CITY STATE _ PHONE ZIP (Include Area Code) Make your check payable to: Microcomputer Associates Inc. International Orders: Payment should be cabled to Account #0041 7-06355 Bank of America, 215 So. Murphy Avenue, Sunnyvale, California, USA, 94086 i |w non-shorting ac 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 .3 IN. 923703 10.00 TC-20 .3 IN. 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 fast, 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 invited Add — »- fees from this chart. SHIPPING/HANDLING Up to $10.00 $1.00 $10.01 10 $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 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 Inickel-siLver teiminils) $17.00 923748 Igold-platsd 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, instant-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 $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 itiv e I rfo^er's ma if pistr'^ps solderless plug-in tie-points Super-Versatile™ 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. SHIPPING/HANDLING We honor M.C. and B.A.C. charges. Add( Add sales tax on OH and CA orders. f PP q'f n m Uptosio.oo st.oo (F.O.B. Painesville on company P.O.'s.) ,hj s cn °rt S' 001 ,oS250 ° ' - 60 Dealer inquiries invited 25.01 to 50.00 2.00 .70 .80 .90 All products guaranteed to meet or exceed published specifications AP PRODUCTS INCORPORATED Box 110-G* Painesville, OH 44077 • 216/354-2101 in • trV 11 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, T0-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 ACE Tie DIP No. No. Board Size Price No. Model No. Points Capacity Buses Posts (inches) Each 923333 200-K {kit) 72B 8(16's) 2 2 4-9/16x5-9/16 $18.95 923332 200 [assent.) 872 BUS'S) 8 2 4-9/16x5-9/16 28.95 923334 201-K (kit) 1032 12(14's) 2 2 4-9/16x7 24.95 923331 212 (assem.) 1224 12 114-s) 8 2 4-9/16 X 7 34.95 923326 218 (Bssem.) 1760 18(14's) 10 2 6-1/2x7-1/8 46.95 923325 227 (assem.) 2712 27 114's) 28 4 8x9-1/4 59.95 923324 236 (assem.) 3648 36(14's) 36 4 10-1/4x9-1/4 79.95 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 UptoSlO.OO $1.00 $10.01to $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 In the Queue Foreground POWERLESS IC TEST CLIP 26 Test Equipment — Baker — Errico LIFE Line 3 48 Applications — He liners BUILD A 6800 SYSTEM WITH THIS KIT 72 Hardware Review — Kay CAN YOUR COMPUTER TELL TIME? 82 Applications — Hogenson PHOTOGRAPHIC NOTES ON PROTOTYPE CONSTRUCTION . . .94 Hardware — Helmers Background THE SOFTWARE VACUUM 12 Opinion — Ryland LOGIC PROBES - HARDWARE BUG CHASERS 20 Tools — Burr WHAT IS A CHARACTER? 30 Fundamentals — Peshka FLIP FLOPS EXPOSED 58 Hardware — Browning READ ONLY MEMORY TECHNOLOGY 64 Hardware — Lancaster THE HP-65: WORLD'S SMALLEST COMPUTER 70 Systems — Nelson ASSEMBLING AN ALTAIR 8800 78 Hardware — Zarrella 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. Address editorial correspondence to Editor, BYTE, Peterborough NH 03458. In This BYTE 4 What This Country Needs 5 BOMB 9 Diagnostics 10 BYTE's Bits 17, 88, 98 Word Hunt 18 Clubs, Newsletters 100 Letters 102 Book Reviews 108 The BYTE Questionnaire 112 Reader's Service 112 EITI #4 DECEMBER 1975 p. 20 p. 26 p. 72 p. 78 p. 94 In This BITE In the Christmas BYTE you'll find the following morsels: To quote an ancient philospher, "nature abhors a vacuum." Chris Ryland's Opinion: The Software Vacuum describes a void in the personal use computer marketplace. Will nature in the form of profit motive come in and fill the software vacuum? Only time will tell . . . Strange things sometimes occur in the electronic pathways of a computer. Putting on your detective hat may occasionally be required — in which case Alex. F. Burr's review Logic Probes — Hardware Bug Chasers will give you valuable information on several commercial products which can help debug your designs. On the same theme but in the foreground this time, Robert Baker and John Errico have provided an article on a fairly sophisticated Powerless IC Test Clip which you can construct for $20 or so in parts. For the do-it-yourselfer, this design results in 16 little binary voltmeters which can be clamped onto an integrated circuit to examine the logic levels at each pin. What is a Character? You can find out by reading Manfred Peshka's tutorial on some of the basic concepts of program- ming and information systems work. Old hands at the programming arts will find this to be an interesting review, and readers new to programming will find it necessary background material. After an interruption, the LIFE Line series continues this month with the third installment. In LIFE Line 3 you'll find the beginning of information on the interactive commands which are decoded by the program. The Flip Flop is an important element in designs used with computer chips and peripherals. William E. Browning has provided this article to introduce the less experienced readers to this fundamental building block. Read Only Memory Technology can be used in situations ranging from clever logic and interface design to storage of systems programs in a computer. In his article on the subject in this issue, Don Lancaster gives some background informa- tion about ROM applications and several suggestions con- cerning their use as design elements. What is The World's Smallest Computer System? Well, at this time it looks like the HP-65 pocket-size programmable calculator might qualify for the title. Find out why by turning to Richard Nelson's article on the subject. The last BYTE featured a comparison of the Motorola 6800 CPU chip with a new contender from MOS Technology. In this issue, Gary Kay of Southwest Technical Products Corporation presents some information on the Motorola 6800 package his firm is supplying. What SWTPC has done is to take the standard parts, combine them with an attractive case, power supply and PC boards — and put the result into a package as a kit for readers to build. What is it like to build an Altair computer kit? In his First Person Report: Assembling an Altair, John Zarrella describes his experience with the MITS product, from his decision to purchase, through assembly and hardware debugging. Computers are fundamentally synchronous machines — they beat to the tune of a periodic clock. With program timing loops, a computer can be made to count the beats of its clock. You can find out how to do this by reading Jim Hogenson's article Can Your Computer Tell Time? When assembling complicated logic systems, one of the best methods for new and experimental work is use of solderless wire wrap interconnection. Some pointers on prototype assembly are found in Photographic Notes on Prototype Construction. And on the cover, artist Robert Tinney illustrates the impact of these new toys upon traditional relationships. What This Country Needs Is a Good 8- Bit High Level Language Have you ever tried to talk to a person who speaks a language other than your own? You know that the person must think as a rational, sentient being or you wouldn't make the attempt to communicate. As a human being your conversational partner's basic thought patterns are of necessity similar. Yet you can't understand him and he can't understand you. There are ways around this problem, given a sincere interest in communications by both parties. An analogous problem exists in the field of personal computing as it is practiced by the readers of BYTE. If you translate the words referencing human beings into words referencing computers and reread the preceding paragraph, the result will be a corresponding statement about the computer communication problem: In the home brew computer world, there are a number of different computer architectures, all speaking different machine languages. There are even dialects of machine languages since each home brew designer or manufacturer Editorial by Carl Heimers makes specific choices about address space allocations and input/output port assignments used with the standard computer chip designs. Yet all of these machines are potentially programmable to do similar functions. Like two human beings facing each other but speaking different languages, computers can talk to each other on compatible channels. But making sense — that is to say, executing the same programs — is another matter. It is possible to connect an Altair up to a Scelbi 8H product using an RS-232 interface. The link can be made and every bit of every byte sent (for example) from the Altair will be received and digested by the Scelbi. But unless the machines have common referents and means of translation, the information sent will be no better than "noise" — just as a foreign language perceived by a person conveys no more meaning than an arbitrary sound until the language is learned. Having a working communications channel does not guarantee that the communications sent will mean anything. Levels of Intelligence Given two or more different computers and compatible electrical interfaces between them, the simplest and easiest form of common understanding is at the level of raw data to be processed by the different computers. A binary number is a binary num ber independent of the machine for which it was generated. The fact that the bit string 11000111 means "load accumulator from memory" in the machine language of an 8008 and means "You fool — that's an unimplemented op code" for the Motorola 6800 is an accident of hardware design at two different companies. In either case, as data, the binary number 11000111 means an integer value of 199. Similarly, an ASCII character is an ASCII character independent of the place and time of its creation. Given the decision to use ASCII for communications — or binary numbers, for that matter — both parties to the communication can talk characters or numbers. These simple data formats provide an easily implemented link between computers which BITE staff EDITOR Carl T. Heimers Jr. PUBLISHER Wayne Green MANAGING EDITOR Judith Havey ASSOCIATE EDITORS Dan Fylstra Chris Ryland CONTRIBUTING EDITORS Hal Chamberlin Don Lancaster ASSISTANT EDITOR Beth Alpaugh 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 Latti Marge McCarthy ADVERTISING Bill Edwards Nancy Cluff CIRCULATION Pat Geilenberg Dorothy Gibson Pearl Lahey Charlene Lawler Judy Waterman INVENTORY CONTROL Marshall Raymond Kim Johansson DRAFTING Bill Morello COMPTROLLER Knud E. M. Keller JF?\U- GOWOUT CLCCJttONfcS^B Wish tAVi _9raf AS©* k ^0 «fl c/QYQUS HOLIDAY s ^ AND HOPE THAT 76 WILL BE YQUR -B BEST YEAR EVER S* OS y®iB ®f?@ aim's® , S®S5 ? SmIl samfetsfpSmg ®s ■^'©flfl sis ikgfw;^ @®im5pm'G(ss > sfimSS ° ^®m onagM QS&© 8® (§&(§(§& ©tEGo BIGGER DIGITS. . . give your eyes a break wi th our 3/10" displays BRIGHTER DIGITS. . . segment and driver transistors included WE HAVE A SUCCESSOR TO OUR VERY VOPULAR "CHEAP CLOCK KIT"! »oo MORE RELIABLE DIGITS. .. sockets included for I C and for readouts THE RIGHT NUMBER OF DIGITS.. . 6 digits for hours, minutes, and seconds. Use as 12 or 2k hour clock, 50/60 Hz AND NOT JUST THE DIGITS. We include all parts you need to make a working clock, in- cluding the PC board, trans- former, all components. You supply the case and hardware. "Electronic Projects for Musicians" BY CRAIG ANDERTON $6,95 sh + Pg they ^ii^j^ijiC also $M 5 v^ egrcat ^ & AN IDEAL BOOK FOR PEOPLE INTO MUSICAL ELECTRONICS... contains 4 chapters for be- ginners on practical electronics, so that even complete novices can create working devices. The book then describes 19 projects suitable for any level of experience, such as a ring modulator, preamp, mixer, battery el iminator, miniamp, bass fuzz, compressor, 5 12 more. Also has sections on troubleshooting, finding more informa- tion, a forward by guitarist Joe Walsh, and a recording that demonstrates the sound of the proj ects . for any other electronics enthusiast you know. Scope our FLYER for more toys ! wm HOARD §PI«l ©FFi^ By special arrangement with a software house (meaning we pay them royalties), we've got 4K by 8 EROM boards pre-programmed with 8080 assembler, editor, and executive routines. It's still the same price as one of our stock 4K X 8 EROM board kits; we save enough on the programming (by doing lots of EROMs at a time) to absorb the software royalty so that you don't have to. And since these boards are EROM rather than mask, you can easily make changes in the program if desired. Speaking of changes: although these routines work out really well, we recognize the possibility that some bugs could pop up, or we may discover improvements as time goes on. That is why we're including 2 updates (at no extra cost) to purchasers of our board, should corrections or patches develop. Any changes you desire beyond that are available at a very nominal charge. We use our 8K x 8 EROM board as the basis so it's expandable! ¥®iyj/ 1 * I ft€TT€R * T@iyj/ » PACE 16 bit 0«® c < \<@0 LL ET N! . chip let %19§ ^ MB ©//IT (gpy ^•pg^d®© l1«0MMMl1(d)^ « (WITH ©IF H@1MID 0»P&©1 ©M^ ^(gC^ET THIS CHIP SET GETS YOU INTO PACE THE EASY WAY INCLUDES ALL INTERFACE CHIPS FOR PACE TO SPEAK TTL, AS WE AS RANDOM ACCESS MEMORY AND IK BYTE OF EROM, AT A MONEY-SAVING PRICE. IF YOU DON'T NEED MEMORY, YOU CAN G PACE 6 INTERFACE ICS FOR $125. IN EITHER CASE, WE GIVE YOU A PACE DATA PACKET SO YOU CAN START RIGHT I PACE DATA PACKET $ 2.50 Since we started advertising and shipping PACE microprocessors, we've had a lot of responses and questions. In fact, we've gotten so many questions that if we spent all our time answering them on a one-to-one basis, we wouldn't have any time left to take care of business, So, WE generated a complete PACE data packet MORE THAN 80 PAGES OF DETAILED AND SPECIFIC INFORMATION ON THE CHIP ITSELF, SOFTWARE, SYSTEM ORGANIZATION, and more. Also includes an 11 by 17 inch foldout logic print of how to make the PACE into a CPU board that speaks TTL. The cost is $2.50, refundable with a PACE order, to cover the cost of printing and shipping. 4K X 8 RAM Kn*o*o*S1 09,22 Note the lower price; we didn't think you'd mind. THIS KIT IS DIRECTLY PLUG-IN COMPATIBLE WITH THE ALTAIR 8800: NO JUMPERS, NO RASSLE. Also electrically compatible with other 8 bit machines. With this kit you get sockets for all ICs , industrial-quality plated-through board, lots of bypassing, five voltage regulators to share the power load (less thermal problems, more reliability), typical 500 ns access time @ 25°C, and buffered addresses and outputs (no input presents more than 1 low power TTL load; output can drive 20 standard TTL loads). Requires 5V @ 1A at 25°C. Comes with assembly hints and logic print of the RAM board. Like Bill says, "it's the whole ball of wax". 6KX6 $352 4K X 6 *200 2KX6 $125 (INTRODUCTORY PRICE) ADD $48 AND WE'LL PROGRAM IT FOR YOU ADD $25 AND WE'LL PROGRAM IT FOR YOU ADD $15 AND WE'LL PROGRAM IT FOR YOU NOW YOU CAN STUFF UP TO 8K WORTH OF YOUR FAVORITE SOFTWARE ON A BOARD; OR, HAVE US DO THE PROGRAMMING FOR YOU. LIKE THE RAM KIT MENTIONED ABOVE, THIS BOARD IS DIRECTLY PLUG-IN ALTAIR 8800 COMPATIBLE. INCLUDES: SOCKETS, BYPASSING, INDUSTRIAL-QUALITY PLATED-THROUGH BOARD, BUFFERED ADDRESSES AND OUTPUTS, ON BOARD REG- ULATION. LOW POWER CONSUMPTION; FULL 8K REQUIRES ONE-HALF AMP 3 5V AND 150 MA 3 -12V. FILE PROTECT FEA- TURE INCLUDES LINE RECEIVER WITH REAL HYSTERESIS TO PREVENT FALSE TRIGGERS DUE TO NOISE. EXPANDABLE IF YOU BUY OUR 2K BOARD AND WANT TO MOVE ON TO BIGGER AND BETTER THINGS (LIKE OUR 8K BY 8), ALL YOU NEED ARE SOME MORE SOCKETS AND ER0MS . YOUR BOARD DOESN'T BECOME OBSOLETE AS YOUR SYSTEM EXPANDS. THERE'S MORE... WE HAVE READOUTS, LEDS, TRANSISTORS, FETS, LINEAR ICS, TTL, CMOS, MEMORIES, HARD-TO-FIND INTERFACE CHIPS, RESISTORS, CAPACITORS CELECTROLYTIC — MYLAR — POLYSTYRENE--D I SC ) , THE HOBBYWRAP TOOL, THE VECTOR WIRE PENCIL, VECTORBOARD AND PC BOARD, DIODES, INDUCTORS, A WHOLE BATCH OF POWER SUPPLY KITS, A COUPLE CLOCK KITS, OUR 12 VOLT 8 AMP HEAVYWEIGHT BENCH SUPPLY, MUS I C I AN/ AUD I O KITS, DIP SWITCHES, RIBBON CABLE, SPECTRA-STRIP, ROM PROGRAMMING SERVICE, ALL DIFFERENT KINDS OF SOCKETS ... SEND FOR OUR NEW WINTER FLYER AND GET THE FULL BTORY. V0U MAY PLACE MASTERCHARGE® OR BANKAMERICARD® ORDERS BY CALLING, 24 HOURS A VAV, (415) 357-7007 TERMS: AW 50t TO ORDERS UNDER $10. AW SHIPPING WHERE INDICATED; OTHERWISE, ITEMS SHIPPED POSTPAID. CAL RES AW TAX. NO COD— IT'S TOO UUCH PAPERWORK/ BILL GODBOUT ELECTRONICS BOX 2355, OAKLAND AIRPORT, CA 94614 does not require a large amount of software intelligence on the part of receiving and sending computers. It does not matter whether such a link is in the form of tape cassettes sent in the mail or a direct RS-232 connection when all the neighborhood hackers get together for a multiprocessor powwow and computerized crap game. ASCII and binary numbers can be shuffled back and forth with the assurance that, at this data level of coding, the information will be understood by both parties. The communication represented by binary numbers or ASCII encoded data is not at all what might be called true understanding between the two computers involved. Sending data is a first step, but it is by no means the ultimate. The significance of the communication at this level must be determined by the human beings who manipulate the data being sent. There is no direct way of affecting the understanding — the programming — of the computer which is dutifully receiving the ASCII or binary data in this simple fashion. Simple transmission of data across a parallel-serial- parallel or parallel-parallel interface enables the users of the computers to talk to one another, but the computers which carry out the exchange "couldn't care less." The computer in this type of an exchange is simply serving as a "dumb" transmission channel. YOU FOOL - THAT'S AN UNIMPLEMENTED OPCODE! BASIC is an adequate language — but it has its drawbacks. Borrowing again from the analogy to human beings, this data level communication between computers might be compared to the non-verbal emotional forms of interpersonal exchange. Common languages and verbal understanding are not required for humans to exchange emotional states, using music, facial gestures and other body motions which are inherent in the nature of the beast. But to exchange knowledge and practical data humans must speak a common language; it is not an accident that verbal activity and the tools of language are so much a part of the dominant species on this planet. If merely sending data represents a low level of communications intelligence between computers, what does it mean to transmit a higher level of intelligence? Program Level Intelligence To transmit data between computers is the first step toward a higher level of communications among diverse types of computers. Every computer on the market can handle 7-bit ASCII and other forms of information encoded into 8-bit bytes. (Of course, it may be easier to program ASCII data manipulations on some machines than on others.) Having a computer which can easily be programmed (possibly with no human intervention) as a result of an ASCII exchange with a computer of a different internal architecture is the essence of this next level of intelligence in intercomputer communica- tions. In such program level exchanges the computers are speaking to each other in the form of abstract program representations which can be automatically translated into specific machine language representations for execution. In the previous analogy, this is like human beings exchanging information and thought in a commonly understood language — for example, English. Each person who understands the language has incorporated within his mind a "translator" which creates an internal understanding based upon what was heard. The result of this translation — which must be consciously performed — is an understanding of the message which can be used as a basis for further thoughts. Emotional data is a much more directly perceived input (although it may of course be colored by thoughts). But verbal inputs require cogitation and analysis before they can be used and integrated. The Goal: Exchange of Programs The goal of program level interchange between computers is thus the ability to communicate understandable and potentially executable programs between computers of different design. When this goal is achieved it will be possible for a reader in one corner of the technological world — for instance an 8080 user — to develop a neat little utility program which can be sent to a friend in another corner of the technological world who has just completed a different processor such as a PACE machine. Since the program is recorded and communicated using the program level techniques, the recipient need only read the ASCII representation from the communications channel and process this data with a suitable "translator" in order to obtain a new executable program for a different machine design. This program level of exchange is a well known technique which has been developed very thoroughly over the past 1 5 years after computer science left its formative years of the 1 950's. It is the technique of high level languages and compilers. The language is the machine independent notation for the programs which are to be exchanged. The compiler is the computer program which carries out the translation. (Variations on this technique of course exist; for instance some languages like BASIC and FOCAL rarely have compilers, but typically use "interpreters" instead to compile, then execute statements one by one.) In the computer world at large, of course, there is no unanimity about choices of languages — and there no doubt will be considerable variation in program representation philosophies in this personal microcomputer field. Be that as it may, exchanges at the program level are needed and computer languages/com- pilers are the technique for accomplishing such exchanges with minimum machine dependence. So that's the story behind the need for a good 8-bit high order language. The home brew computing field is much more extensive than the confines of just one computer architecture, and the technological problem of passing 8-bit bytes all over the place is not at all impossible. The need is there, but can it be satisfied? What Exists Now? What currently exists in the way of high level languages for the field of home brew computers is limited. Currently available is only one language — BASIC — which to a certain extent satisfies the need for a good language. BASIC now exists for the MITS Altair, and will soon be offered by several other manufacturers. As such it is the only high level language which both exists and will (hopefully) run the same programs on any one of these small computer systems. As a high level language, BASIC is adequate but it has a few drawbacks: — Descriptive names of variables are impossible with single character identifiers. — Only a primitive GOSUB/RETURN facility exists for subroutine linkage, and parameter passing is not built into the language. — The language BASIC is intcrpretatively executed, which means that each statement is "compiled on the fly" and executed whenever it is encountered. (Pre-scanning of programs and reduction of the source text is sometimes done, however.) An interpreter is necessarily slower than an equivalent compiler's object code. — BASIC is missing the more advanced software tools such as the IF-THEN-ELSE construct, and statement grouping constructs, like the PL/1 DO . . . END block. — Only line numbers may be used to label places in the program. Now don't make the mistake of concluding from this criticism that BASIC is useless. Far from it. Any high level language which works as well as BASIC is better than none at all in the majority of programming circumstances. This is because for most problems the minute details of execution arc unimportant, provided that certain functional building blocks of software (provided by the higher order language) are available to use. The BASIC language has been used as a tool for initially teaching computer programming concepts, and has done so from its inception in the early 1960's at Dartmouth. There are also innumerable tutorial books about BASIC, due to its widespread use in the educational field. It is certainly the case that in most implementations BASIC is a quick and conversational way to write simple programs at a terminal. The criticisms have to do with features in contemporary computer language technology which are not present in BASIC, but which are extremely useful when writing programs. An Alternative to BASIC Criticism without giving an alternative is an empty activity. The purpose of criticism is to find a way to a better approach. So what language exists, can be dreamed up, or adapted to the small systems context — and provides a better alternative to BASIC? At present there is one language which was expressly designed for systems programming and applications programming for microprocessors. This language is called PL/M, which is a registered trademark of the Intel Corporation. The origins of PL/M can be traced back to a book published in 1970 by three compiler specialists, W. M. McKeeman, J.J. Horning and D. B. Wortman called A Compiler Generator (Prentice-Hall, Englewood Cliffs NJ). XPL is a subset of the IBM language PL/1. The XPL subset is designed to eliminate many extraneous bells and whistles from PL/1, retaining only those features most needed for writing compiler programs: Simple character string and binary data, manipulations of such In most programming circumstances, any high level language is better than no high level language at all. data, and a block structured procedure oriented language. Another design criterion of XPL is that it had to be a simple language so that its compilers could easily generate efficient object programs without burning up incredible amounts of computer time. The authors of the language and the book describing it succeeded well, producing a powerful language design system which has been used in a number of large projects. Now, as it turns out, the features which are in XPL are in many respects the features BOMB: byte 's Ongoing Monitor Box BYTE would like to know how readers evaluate the efforts of the authors whose blood, 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 or 10? Try to give a preference scale with different values for each author. 4. No ballot box stuffing: Only one entry per reader. 1 FiJJ 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. Page LIKED No. Article LEAST BEST 12 Ryland: Software Vacuum 01 23456789 10 20 Burr: Logic Probes 01 23456789 10 26 Baker-Errico: Test Clip 0123456789 10 30 Peshka: Characters 01 23456789 10 48 Helmers: LIFE Line 3 0123456789 10 58 Browning: Flip Flops 0123456789 10 64 Lancaster: ROM Technology 01 23456789 10 70 Nelson: HP-65 0123456789 10 72 Kay: Build a 6800 0123456789 10 78 Zarrella: Altair 8800 01 23456789 10 82 Hogenson: Tell Time 0123456789 10 94 Helmers: Photo Notes 01 23456789 10 PL/M is becoming an industry standard language: The computer language equivalent of a "black box" integrated circuit.. BYTE would like to see a PL/M compiler adapted to the home brew computer context. which are desirable for a programming language used with microcomputers for both applications and systems programming. XPL is not too far removed from assembly language and becomes very handy as a way to generate large programs without getting bogged down in details. This fact makes XPL a language of far more utility than a mere compiler writing tool. When the time came for Intel to commission a high order language for programming of their microcomputers, the XPL language and compiler had been proven in several years of practical use by several compiler writing organizations. Its practicality as a systems programming tool no doubt resulted in the use of XPL as a model for the new PL/M language. PL/M is effectively an adaptation of XPL to the context of a microcomputer with 8-bit data quanta and 16-bit addressing. The result is a language which looks very much like XPL — with a few keyword substitutions and additional features. This resemblance is sufficiently close that at least one version of PL/M has been implemented simply by modifying a working XPL compiler, although Intel's original was implemented in FORTRAN. PL/M as a language possesses many desirable attributes which are not found in BASIC. These attributes include the PL/1 -like statements and statement groups, long descriptive names for variables and labels, block structure, and subroutine linkages with parameters. As DIAGNOSTICS: Documentation of bugs in previous BYTEs. BYTE #2, p. 54, Fig. 3. An inverter (e.g., 1/6 7404, or 1/4 7400) should be inserted between the CE inputs of the 7489 circuits and the 7400 which drives them in the original drawing. Thanks to Martin E. Haling, Edison NJ and several other readers for pointing this out. Dan Clarke (105 Fir Court, Fredericton NB, Canada E3A 2E9) notes that the originate modem transmit frequency definitions (Fig. 14 and text of "Serial Inter- face"), page 35, BYTE #1, are incorrect. Using the Motorola M6800 Micro- processor Applications Manual page 3-32 as a source of data, the following table should correct the matter: Mode Data Transmit Freq. Receive Freq Originate Mark 1270 Hz 2225 Hz Originate Space 1070 Hz 2025 Hz Answer Mark 2225 Hz 1270 Hz Answer Space 2025 Hz 1070 Hz a systems programming language for microcomputers, the PL/M language adopts some of the features of an absolute assembler — there are location counters for program code and data which can be set during a compilation. To top it all off, the PL/M language is a relatively simple one which can potentially be self-compiled upon a small (but not minimal) home brew system. At the time of this writing, PL/M is fast on its way to becoming an industry standard. It is definitely a language which has the potential for adaptation to the software requirements of the more advanced programmers in BYTE's readership — yet at the same time it is simple enough for the novice to understand. At the present time, however, only cross compilers — large programs running on big machines — are available for PL/M. There are PL/M versions currently in the works or producing code for the 8080, the 6800 and PACE microcomputers — but all are cross compilers. These cross compiler versions are widely used via time sharing networks by a variety of industrial and commercial users of microprocessors. This acceptance indicates that PL/M is a language which is likely to be around for some time. A Call For Compilers So PL/M is the tool which the industrial and commercial world uses for efficient code generation with a high level language for microprocessors. Will this technology be made available in the home brew computer markets? Yes. One reason for writing this editorial is to point out the existence of PL/M and direct a few BYTE readers to appropriate sources of information. In future issues, BYTE will be getting into Information Sources PL/M: 8008 and 8080 PL/M Programming Manual, MCS-451 -0275-1 OK Intel Corporation 3065 Bowers Ave., Santa Clara CA 95051 This describes 8008/8080 PL/M as originated by Intel. PL/M6800: PL/M 6800 Programmers Reference and PL/M 6800 Language Specification Intermetrics, Inc. 701 Concord Ave. Cambridge MA 02138 These manuals describe the version of PL/M being marketed for the 6800 pro- cessor. As this issue goes to press, National Semiconductor has announced a version of PL/M called "PL/M+" for the PACE system. Further details will be provided by BYTE as they become available. more of the details of PL/M as a language. Until then, the accompanying list of information sources will have to suffice. A second reason for this editorial is to serve as a call for compilers. What is needed is a compiler for PL/M or a similar language which will run on a typical 16K (RAM) 8-bit microcomputer using as many as three serial I/O devices for multiple passes through the data of a source program. Ultimately there should be one such self-compiler program for each of the major microcomputer chip architectures. The compilers should be written with system design flexibility in mind (in other words, modularity throughout and isolation of hardware- dependent portions to specific modules). Who will be the first person, club or firm to provide such a self-compiler? ■ 10 One -Card Computer. • 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. Now's your chance to bite into a complete computer system. We at Sphere have used the latest microprocessing technology along with some real innovations in mini-circuit design to develop the lowest-cost complete computer systems available. We've found that most people find our CPU module hard to believe. This CPU can monitor functions on a real-time basis, analyze, and quickly arrive at answers in a desired format. It's expandable; and SPHERE offers a complete line of the lowest-cost peripherals on the market today. KIT* ASM' ONE-CARD COMPUTER: Includes Motorola 6800 microprocessor, 4K RAM, 512 bytes EPROM, (containing a Program Development $350 $520 System), a REAL-TIME CLOCK, 16 LINES OF DIGITAL I/O, serial type interlace and hard wired ROM monitor. 'This is the OEM 100-quantity price, extended to the hobbyist, for a limited time, in quantities of one. SPHERE CORPORATION Dept. 1212 791 South 500 West* Dear SPHERE: Bountiful, Ulah 84010 Yes! The facts I've read have convinced me! D Enclosed is a check for the exact amount. Please send my ONE-CARD COMPUTER, for 60 day delivery. □ Please rush me more details on your low-cost computer system and peripherals. (Specific questions, if any, are attached.) Print Name: Address: City and State: Zip Code Phone: SPHERE CORPORATION 791 South 500 West Dept. 1212 Bountiful, UtahB4010 (801)292-8466 11 Opinion: The Software Vacuum ... I'd like to browse through several software catalogs . . . picking out the best package for my needs. by Chris Ryland 25 Follen St. Cambridge MA 02138 There is a software vacuum. That fact has become increasingly clear in the past few months. Take a look at the situation. At the time this is written there's only one company (MITS) offering a proprietary software product (BASIC) aimed directly at the microcomputer hobbyists. It's true that the People's Computer Company (PCC), the MITS Altair User's Group, and a handful of other user groups offer access to growing libraries of applications programs. Some microsystem manufacturers also supply "bare bones" system software with their machines, but the user is lucky if these bones consist of as much as a rather bare monitor, editor and assembler. Such software is just as important to a serious hobbyist's system as the hardware. So when I say there is a software vacuum, I mean there is an absence of commercially developed and marketed larger scale software products. But why should this matter to me, as a hobbyist? What do I mean by larger-scale, and why should the hobbyist market be invaded by commercial software vendors? In answer, let me give a concrete example. Suppose I want to write a "desk calculator" program for my system. I'd like it to include all the scientific functions of a powerful calculator, such as sine, cosine, tangent, arcsine, the hyperbolic functions, etc. I would feel competent to design and write the user interface (e.g., keyboard input) sections of the calculator, but when it comes to even the floating-point arithmetic (let alone the scientific) functions, I'm totally lost. What do I do? Give up? Scour the different user groups software offerings, piecing together little routines from here and there? Take a course in applied numerical analysis and learn enough theory to do all the programming myself? No. Ideally, I'd browse through several software catalogs from commercial vendors, picking out the best math package for my needs. It would be relatively inexpensive, because of competition among the various vendors. And since the time I save by buying the package commercially is substantial, I'd consider it to be a larger -scale product (physically small though it may be). Finally, and most important, is the assurance of quality that I get — the programs that I buy should be backed up by a guarantee; if they don't work correctly, I can have the problem fixed by someone who's an expert at that sort of thing. In fact, any problems discovered by other customers of the supplier will be automatically corrected and reported to me. I'm not pointing out anything surprising, though. What is surprising is that this lack of software is no one's fault. Why? The reasons will become clear as we examine the basis and effects of the vacuum more carefully. The most obvious explanation for the software vacuum is the newness of our field. It's very easy to draw a parallel to the very early days of "real" computers, when every manufacturer was scrambling to produce hardware. The importance of software wasn't recognized, and it was simply left behind in the dust. Since then, however, software has become the major component, in cost, size, and complexity, of any large computer system, since nothing can be done without it. The parallel is completed by noting that, now, the big ''scramble" in micro- computers is to get out the hardware. People do sometimes learn from history, though. Microsystem suppliers have realized that naked machines are close to useless, and many are offering at least the bare bones system software mentioned earlier. The problem here is that many of us want to use our home or business system for something (e.g., as a powerful desk calculator) and don't necessarily want to do all the programming ourselves. This situation is eased, for example, by the availability of a BASIC system from one major supplier. Unfortunate- ly, for the "from scratch" hobbyist, the difficulty still remains, since software like BASIC is much more expensive as a stand-alone product (and is usually out of the price range of most of us). Again, since the average hobbyist would be lost when faced with the task of constructing his own BASIC system, he's thereby automatically cut out of the 12 You 9 1 1 go nuts over our computers! *L*i* And the Sphere Computer System costs less than anyone else's terminal. Completely intelligent micro-systems . . . that's what we offer. Just look at the features, and the prices. No compromising, with no short cuts! Recently at WESCON, SPHERE also demonstrated its new, full-color and B/W graphics terminal — and we have other new products, to be just as revolutionary as the SPHERE 1 SYSTEM was when we released it last June. SPHERE 'R & D' will keep ahead of your demands, no matter the state of the art. Take one look at our catalogue, then call or write us today. KIT ASM S860 $1400* SPHERE 1: This system includes the Motorola WJ00 microprocessor, 4K RAM, 1K EPROM (containing an EDITOR, ASSEMBLER, DEBUG- GER, COMMAND LANGUAGE, CASSETTE LOADER, DUMPER, UTILITIES), a REAL-TIME CLOCK, plus 512 character video interface, with full ASCII keyboard and numeric/cursor keypad, power supply, chassis, manuals, and associated parts. SPHERE 2: Includes all fealures of SPHERE 1, plus serial communica- tions, and audio cassette or MODEM interface. SPHERE 3: Inlcudes all the features of SPHERE 2, plus memory 2250" totaling 20K which is sufficient to run full extended BASIC Language. KIT ASM $6100 $7995* SPHERE 4: Includes all of Ihe features of SPHERE 3, except the cassette has been replaced by an IBM-compatable Dual Floppy Disk System. This system includes a Disk-operating system and BASIC Language and a 65 LPM line printer. OTHER SPHERE PRODUCTS: Light pen option; full color and B/W video graphics system; low cost Dual Floppy Disk System; and full line of low cost peripherals. *This ASSEMBLED SPHERE Syslem includes the complete chassis, and video monitor as pictured below. The Whole System: SPHERE CORPORATION 791 South 500 Wesl Depl. 1211 Bountiful, Utah 84010 (801)292-8466 13 Suppose you could make working Xerox copies of CPU chips, how long would chip manufacturers be around? Hobbyists can help generate commercial interest in producing software. legacy of widely-available BASIC programs. Now why can't we throw the blame on the CPU chip manufacturers? Because, clearly, their proper market is the OEMs (Original Equipment Manufacturers), and thus their main concern regarding software is to provide their OEM customers with developmental systems of hard and software, leaving the hobbyist nearly completely, if not intentionally, out of the picture. What about the other potential suppliers of software? Look at the situation of a typical software house, or vendor. They must ask, "What kind of hobbyist market exists? How big is it, and how can it be reached? What kind of return on investment can be expected from a venture in this area?" These are tough questions for a company whose existence depends on successful marketing of software products, even though the answers might seem obvious to us. But keep in mind that the existence of BYTE is among the first indicators of a widespread hobbyist interest in computing, and we're only a few months old. Furthermore, there's the problem of proprietary programs, a problem hard to appreciate from the hobbyist's point of view. It stems from the softness of software: Hardware can only be physically in one place at one time, but software, because its copying cost is (relatively) so low, can virtually be in many places at once. For example, an institutional computer installation signs a proprietary contract when it buys a program product. Such contracts typically restrict use of the software to one computer system or customer site. This is one of the major reasons the institution is not likely to lend or sell such a product to other installations. But a hobbyist, even though he might sign a similar contract, is much more likely to help out a friend by swapping a program for others, or by lending a copy to someone else. And this is deadly poison for any sort of commercial market. To take a concrete, if absurd, illustration, suppose you could make working Xerox copies of CPU chips — how long would the chip manufacturers be around? Another simple fact of proprietary-program life is that such programs cost a lot to develop and market. Unless the market is large, this means high prices, which a big computer installation can usually justify, but which an individual just can't afford. It's true that there's a difference in scale between large and micro system software, but both, in their own spheres, are costly to commercially develop and maintain. So, the software vendors may simply not have been able, even if willing, to enter the microcomputer software market. Continuing with our search for potential software suppliers, we arrive at the grass roots level: The home experimenter who's developed a good product with long hours and minimal tools. Why can't he go it alone? Well, he's usually operating on a small budget and thus can't mount any sort of larger marketing, packaging, or shipping effort. True, you might say, but couldn't he sell his product locally, at a neighborhood level? Yes, he could, but then he's not reaching the majority of people who are interested in his product, namely, us. Besides, how can he commercially support any product on even a medium scale, when such support might involve, aside from all the developmental and promotional work and expense, handling dozens of trouble reports in a single week? He'd no longer be a hobbyist, but a full time one-man software house, and that puts him out of the grass roots class. So, with our search ended, and no culprit in sight, what can be done about the software vacuum? First of all, those of us in the personal computing field who have professional contacts can urge existing and potential software vendors to look hard at the hobbyist markets. When the number of potential users of a package is multiplied by the profit margins to be expected, such software vendors should be economically viable. Whenever there is a demand for a product, a free market will tend to fill that demand. It will be interesting to see what the market produces in system software for small computers. Second, hobbyists can help generate commercial interest in this vital area in several ways. One is to make the software vacuum a topic for discussion at local computer club meetings. Another is to organize software trading posts in the newsletters which are very much a part of the hobby. Still another is to write manufacturers urging advanced software products to match the extremely high level of today's hardware technology. If you feel eloquent, write a letter to the editor of BYTE on the subject. The first step in filling a need is identifying that the need exists. Hopefully these thoughts will start some BYTE readers off in a direction which will lead to commercially marketed mass produced software which can be plugged into one of the several microprocessor architectures which are on the market. ■ 14 +£& ks «jl^ i Join now Since 1947, ACM has served as the educational and scientific society for computing professionals— 30,000 strong and growing. Write today For regular and student membership information send the attached coupon to ACM headquarters. With Special Interest Groups covering every major computing discipline and local Chapters in most metropolitan areas, ACM is probably the organization you're looking for. Association for Computing Machinery 1 1 33 Avenue of the Americas, New York, N. Y. 1 0036 I would like to consider joining ACM. Please send more information. Address City Zip 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 /, 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.) 16 QUICK.... what number is this? o o#o o If you have to read your microcomputer like this— bit by bit, from rows of lights— the computer's making you do its work. And if you have to use rows of toggle switches to program it, you might wonder why they call the computer a labor-saving device! Contrast the layout of a typical pocket calculator. A key for each number and function; six easy-to-read digits. Why not design microcomputers like that? Here they are! The modular micros from Martin Research. The keyboard programs the computer, and the bright, fully- decoded digits display data and memory addresses. A Monitor program in a PROM makes program entry easy. And, even the smallest system comes with enough RAM memory to get started! Both the MIKE 2 system, with the popular 8008 processor, and the 8080-based MIKE 3 rely on the same universal bus structure. This means that accessories— like our 450 ns 4K RAM— are compatible with these and other 8-bit CPUs. And, systems start at under $300! For details, write for your... FREE CATALOG! MIKE 2 MANUAL... This looseleaf book includes full information on the MIKE 2 system, with schematics. Price for orders received by November 15, 1975... Includes a certificate worth a modular micro system, good 90 days. (Offer valid, USA only.) After H/15: $25. $19 S10 towards ^ modular micros ^ martin research ;T Martin Research / 3336 Commercial Ave. Northbrook, IL 60062 / (312) 498-5060 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 735 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. The Secret of Unraveling Wire Wrap Boards A lot of home brew computer people are obtaining surplus printed circuit cards and back planes that have been wire wrapped. I n o rder to use the components from such boards the wires must be carefully pulled off the wrapping posts. Without a special tool it is difficult to remove wire while preserving the integrity of the delicate wrapping posts. Since many BYTE readers do not have the commercial dewrapping tools, removal of wire is for them a nasty and time consuming job at best. I have devised a simple tool which makes this task much easier, made from items normally found around a well equipped workshop. The tool, shown in Fig. 1, is constructed from a paper clip and a drapery hook. Simply follow the instructions. 1. Obtain a standard paper clip, an Exacto knife holder, and a thin sharp pick of sorts, such as a drapery hook. 2. Bend the paper clip and drapery hook as shown. 3. Place the paper clip in the Exacto blade holder. Now you are ready to dewrap. 4. Using the pick, flick the wire from the post at least an eighth of an inch. ■1/8 5. Place the paper clip bit onto the wire wrap post and slip it down until the end of the paper clip is just past the wire. 6. Rotate the blade holder in the direction which unravels the wire until the entire wire is loose. Fig. 1. A homebuilt tool to loosen and remove wire wrapped connections. by Richard J. Lerseth 8245 Mediterranean Way Sacramento CA 95826 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! TheCDA-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 16-pin sockets plus has a general area for 16-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: YES? q Please rush me the boards ordered below: ^]4096-BVTE MEMORY MATRIX PROTOTYPING CARD at $39.95 '^GENERAL PURPOSE PROTOTYPING CARD AT $29.95 Q DIGITAL OSCILLOSCOPE GRAPHIC DISPLAY CARD AT $29.95 LJ I've enclosed a check or money order for $ Foreign orders (except Canada) please FROM: NAME ADDRESS add $2 postage per card. Please allow four weeks for delivery CELDAT DESIGN ASSOCIATES P.O. BOX 752 AMHERST, N.H. 03031 you must be fully satisfied or your money will be cheerfully refunded. 17 HI-SPEED STATIC RAM 2602-1 475 ns Manufactured by Signetics, 2102 pinout $4.25 for 1/$4.00 each for 8/$3.75 each for 32 WHY PAY FOR BEING SMALL? Centi-Byte is a new source of memory components and other necessary items for the computer hardware builder. Centi-Byte's function is to be a voice to the manufacturing companies representing you, the modest volume consumer of special purpose components. Centi- Byte brings you this special introductory offer of fast memory chips, chips fast enough to run an MC6800, MCS6501 or 8080 computer 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 me know what you need in the way of specialized com- ponents and subsystems for future offerings. With your purchasing power concentrated through Centi-Byte we'll help lower the cost of home computing. All orders are shipped postpaid and insured. Massachusetts residents add 3% sales tax. Carl M. Mikkelsen, Proprietor, P.O. Box 312, Belmont MA 02178 Hidden in the matrix are 96 words and abbreviations associated with computers in one way or another. Find a word, circle it or color it in, and cross it off the list. Words may be forward, backwards, up, down, or diagonal, and are always in a straight line, never skipping letters. However, some letters are used more than once. After circling all the words on the list, the unused letters (14 total) will spell out a secret message. Beware: Some buzzwords occur in the matrix, but are not on the list! Good luck and good hunting ... it may take a while! WORD HUNT 5 L I N K E T Y B E T E C A F R E T N I M S B A U D C F R T R A N Y R M E M N S E R I W E I R A I A E R P R I R I T Y R S u R C E L N X P D L I T E R A L E N D R L E D E T U C E X E I B U F F E R R T D E V I C E N Y H T R A N S M I T T E R A A D E S T I N A T I N C H K E T R A U X L A C F L A G E M E G A R T S I D P S R E T N U C T A L G L B A L I S C T U 6 A D D R R A M T A B L E L B A N B T A R C P E G H I C R P R D C E S S R A T B M U U E A I S L B P F D T L Y I L E U E R S U T A T S P A I A S C A N T u U J U P K S I S Z S R B S H L T I R C C T M Q R C N F Y H E I I C S A N E H u I U T E T N I M S M N C N C T E C H R R N c H T T L D E B U G A L E A K M P T E c D N E N A A U L A R R F S L E I N S D A A I A P T H s C I D Y B L G N R N P L C A S E D C R C I M E U I I A L P H A N U M E R I C C V Y A L P s I ACCUMULATOR CHIP FOCAL MATRICES SOURCE ADD (not in address) CLOCK FORMAT MEMORY STACK ADDRESS COBOL FORTRAN MHZ STATUS ALPHANUMERIC COUNTER GATE MICROCODE STORAGE AND DATA GLOBAL MICROPROCESSOR SUBROUTINE APL DEBUG HALT MNEMONIC SUBSYSTEM ASCII DESTINATION INPUT MOS SYNTAX ASSEMBLER DEVICE INSTRUCTION OCTAL TABLE ASYNCHRONOUS DIAGNOSTIC INTERFACE PCB TRANSMITTER BASIC DIODE INTERRUPT PERIPHERAL TRAP BATCH DISK JUMP PLOT TTL BAUD DISPLAY LED POINTER VCC BCD DTL LINK PRIORITY VECTOR BET ECL LIST PROGRAM VERIFY BINARY EXECUTE LITERAL PROM WIRE BOOLEAN EXIT LOAD QUEUE WORD BRANCH FALSE LOCATION RAM (not in program) BUFFER FETCH LOG READ BYTE FILE LOOP RECORD CHECKSUM FLAG LSI ROL 18 subscribe to COMPUTER.. COMPUTER COMPlffER automatically . . . with a membership in the IEEE Computer Society. Special offer to BYTE readers You can join the Computer Society now . . . and receive a free copy of Microprocessor Architecture and Applications — in addition to your automatic subscription to COMPUTER. Write to us at the address below (be sure to refer to this announcement), and we'll tell you about one of the wisest investments you'll ever make in your professional career. Microprocessor Architecture & Applications The Computer July and August 74 issues focussed on microprocessor architecture and applications. The feature articles have been reprinted and bound into a single volume, covering such topics as present and future microprocessors, a home-school micro- processor system, the use of microprocessors as automobile on-board controllers, and a microprocessor -con trolled electronic distance meter. Regular price: S3. 50 5855 Naples Plaza • Suite 301 • Long Beach, California 90803 • Telephone (213) 438-9951 Logic Probes- Hardware Bug Chasers by Alex. F. Burr Physics Dept. Box 3D New Mexico State University Las Cruces NM 88003 While an oscilloscope or voltmeter can be used with digital circuits, a logic probe is much less expensive if built from an appropriate kit. Digital logic, whether used in an 8080 microprocessor or as the TTL chips that can be used to make a processor, is, at least in theory, clean and simple because only two states are possible. Any point in even the most complicated circuit is either HIGH or LOW. However this very simplicity encourages the design of large and complicated circuits. While the chance of anything going wrong at any one point is small, the accumulated chances of many points means that sooner or later the experimenter is going to have to hunt for sources of trouble. In the case of analog circuits, when trouble develops, you get out the oscilloscope or voltmeter and start looking for places which have waveforms or voltages not meeting the specifications. These instruments can be used to troubleshoot digital circuits too. The oscilloscope is particularly useful if you have timing problems, but usually they give you too much information and may just confuse the issue. The voltmeter may tell you that the voltage on pin 8 is 3.9 but, because most IC failures show up as a node stuck either HIGH or LOW, really all you need to know is that on pin 8 there is a HIGH. That single bit (literally) of information can be obtained with an instrument a lot smaller and less complicated than a voltmeter. That instrument is the logic probe. In its simplest form it is just a state indicator with a sharp point. When the point is placed on any pin of an IC, the probe will indicate whether a LOW or a HIGH is present at that point. And with digital logic that is usually all the information you need. Logic probes can detect a surprising number of different defective conditions. Fig. 1 illustrates some of the uses to which a probe can be put. Of course, just as voltmeters come with a variety of capabilities and prices, so do logic probes. SEE PULSE STREAMS SEE OPEN CIRCUITS „.OPEN BOND SEE LOW REP RATE HISHS AND LOWS SEE SINGLE-SHOT RESPONSES Fig. 1. Some of the uses of logic probes and the malfunctions which they can detect. 20 Commercial Logic Probes One of the first developed was the Hewlett Packard 10525T logic probe. It is a marvel of compactness and versatility, all carefully human-engineered. Basically it consists of a white light which goes out when the probe is placed on a LOW and comes on when the probe is placed on a HIGH. Simple — yes indeed; but it docs much more. What if the point tested is open circuited, or the level is just plain bad, neither HIGH or LOW? Then the light glows at half intensity. What if a pulse comes along that is too short to excite the indicator light? Then a pulse stretcher takes over. Pulses with a width of between 10 ms and 0.05 seconds are stretched to 0.05 seconds in length. What if the pulses come so fast that the eye cannot distinguish one from the next? All pulse streams with a repetition rate between 10 Hz and 50 MHz cause the lamp to blink at a 10 Hz rate. All this capability is enclosed in a probe about six inches long and one-half inch in diameter. The light is placed near the tip in such a way that it can be seen no matter how the probe is rotated. Thus you can easily see both the point of the probe and the indicator at the The E & L Instruments logic probe is compact, with the two indicator LEDs visible toward the left in this photo. same time. Power is supplied to the probe by a well protected single cord which is attached to a source of 5 V dc at 60 mA. The input impedance is greater than 25k Ohms in both the HIGH and LOW state (less than one low power TTL load). The input is well protected against operator error. The probe will stand ±70 volts continuously and ±200 volts intermittently as well as 120 V ac for 30 seconds. The power input is internally protected from +7 to —1 5 V dc as well as power lead reversal. The only catch is the price, which even with a recent reduction is $65. There are, however, other less expensive probes. Two of these arc distributed by E and L Laboratories. Their model 340 is a logic probe and pulser combined into one instrument. The model 320 is a logic probe only, designed to give maximum information about the state of the node being tested. Both probes are well constructed, a little over 6 1/2 inches in length and half an inch in diameter. Both come with two different probe tips and handy carrying cases. The model 340 has two LED indicator lights. In operation the two leads from the probe are connected to the 5 V dc supply and the probe tip applied to the IC lead to be tested. If that node is HIGH, the red LED lights The Hewlett Packard 10525T logic probe and 10526T pulser. up brightly. If that node is LOW, neither LED is lit. The green LED is used to detect pulses which do not last long enough to give a useful indication on the red LED. It lights for 0.1 seconds (just long enough to see) whenever a single pulse wider than 50 nanoseconds is applied to the probe tip. In the probe tested for this article, when a voltage increasing from zero was applied to the tip, the red LED lit when the voltage was greater than 1.5 V; just what the specifications called for. The model 320 is a little more versatile as an indicating instrument, but it lacks the ability to generate pulses that the model 340 has. It too has two LED indicators, one red and one green. In operation, the two power leads are connected to the 5 V dc power supply and the tip to the node under test. The specifications say that if the voltage at the node is less than 0.7 volts the green LED will be lit. If the voltage is greater than 2.4 volts, the red LED will be lit. In practice the specifications are closely followed. The LEDs may glow dimly at voltages just a few tenths higher or lower than the specified voltages. But the dividing line between lit and not lit states is remarkably sharp. A special feature of this probe is the pulse storage 21 "Nodes" are places in a circuit — such as the pin of an IC — where you might want to test the logic level using the probe. capability brought into play by a small switch near the tip. When the pulse storage feature is on, a short pulse (either HIGH or LOW) is stretched so that it turns on the appropriate LED to full brightness even if it is as short as 50 nanoseconds. Square and sine waves appearing at a tested node will cause both LEDs to have equal brightness. The main difficulty noted with this probe is with the green LED. It is somewhat dimmer than the red LED and the lens diffuses the spot of light generated less well so that in bright room light it is sometimes hard to tell whether or not the green LED is lit. This fact would make the determination of the duty cycle of a chain of pulses by a brightness comparison between the LEDs much more difficult than the instruction booklet suggests. Even the E and L Laboratories probes are expensive ($35 and $25); although they are more convenient than, and certainly in the same price 7 1 H-2. 1 1 /_/ DIS-I 10 I ■ IM 1 Dl R3 3 VuV TO GROUND CLIPO i 7 6 fi 14 151a 1 ICI | — 4 '8 '9 'l D 'll ' 12 '13 1 JR2 TO PROBE TIPC TO GROUND CLIP Fig. 2. Circuit diagram for the James logic probe kit. range as, a good voltmeter. Nothing, however, can beat the cost effectiveness of two probe kits which have been fairly widely advertised. Logic Probe Kits One of these kits is manufactured by Chesapeake Digital Devices. This kit allows one to easily construct a probe which uses red, green and yellow LEDs to signal the presence of logic levels in digital circuits. The kit goes together in a very short time with the aid of very complete assembly instructions. The whole probe fits into a well constructed case, a little over six inches long and slightly less than one inch in diameter. There are only three resistors, three LEDs, one transistor, and a 74S00 integrated circuit to solder onto the clearly marked printed circuit board. In operation the green LED is brightly lit on a LOW, the red LED is brightly lit on a logic HIGH, while the yellow LED lights on an open circuit or a level between a true HIGH or LOW. A slow pulsing condition will be indicated by alternate flashing of the red and green LEDs. A fast pulsing condition will be indicated by the simultaneous activation of the red and green LEDs. The dividing line between these last two conditions is about 20 Hz, depending on the eye of the user. The biggest difficulty with the kit was the circuit board. The copper leads had not been tinned and were oxidized, making them a bit difficult to solder; especially if the builder was concerned that he not use so much heat for so long as to damage the components. The clear plastic tube into which the circuit board with its LEDs slide did crack on assembly and the green LED was open but these difficulties were easily remedied and the result was a handy logic probe at a price significantly less than any assembled probe. A Unique Probe A particularly inexpensive kit is the one sold by James Electronics for $9.95 including postage and case. It is unique in that it uses a MAN 3 seven segment readout which gives a 1 for a HIGH a for a LOW and a P for a pulse train — all this in a compact package measuring five inches long and one inch in diameter. The circuit diagram for this intriguing probe is given in Fig. 2. The 2N2222 input transistor drives the chip, IC1, which in turn causes the appropriate segments of the MAN 3 to light. T he chip was custom made for l ames Electronics by National Semiconductor and contains a proprietary circuit which was laid down by a $500 master mask. The kit comes in a very impressive package which was carefully designed to protect the contents from rough handling by the U.S. Postal Service. The parts, which include the case and a custom glass epoxy printed circuit board, are of high quality and are not your usual cheap imports. Because most of the parts are in the 14-pin chip which is the heart of the probe, the kit goes together quickly and easily for the experienced builder (about one hour to solder all the parts to the board). There are no explicit devices for overload or reverse voltage protection. The probe draws 65 mA from any convenient 5 V point on the circuit under test. The inexperienced builder is going to have trouble because the complete assembly instructions say, "Assemble the Logic Probe according to the schematic diagram and board layout shown below." The end. One has to have pretty sharp eyes 22 A logic clip is like 16 binary voltmeters in a neat little package. A kit logic probe shown in action testing a printed circuit board. to orientate the IC, transistor and readout correctly. Even then you might miss the two jumpers that go on the circuit board. The circuit board also could have been laid out more efficiently so that the drastic bending of the MAN 3 leads would have been avoided. There is one serious defect. It is more serious from the theoretical than the practical point of view. That defect concerns the input level at which the indicator switches from to 1. That level is 0.65 volts; but the specifications for TTL logic say that the maximum voltage that the logic is guaranteed to interpret as LOW is 0.8 volts. Thus the probe would indicate a HIGH on a node which the logic would interpret as a LOW. This defect is of lesser practical importance because it is the unusual LOW which will have a voltage greater than 0.6 V. Indeed the usual gate input is only a very few tenths of a volt above ground at the most when it is LOW. Nevertheless it is a bit disconcerting to have the probe give a wrong reading even if it docs so only under unusual circumstances. After all, it is under unusual circumstances that the probe is most often used. Logic Clips? The probes which have been discussed so far all investigate one pin of the IC at a time. There are some instruments which will do much more. These are called logic clips and are not really probes but will give you the same type of information. They are extremely handy service and design tools. They clip onto TTL DIP ICs and instantly display the logic states of all 14 or 16 pins. Each of the clip's 16 LEDs independently follows level changes at its associated pin: A lighted diode corresponds to a HIGH. The logic clip's real value is in its ease of use. It has no controls to set, needs no power connections, and requires practically no explanation as to how it is used. The clip has its own gating logic for locating the ground and +5 volts Vcc pins and the buffered inputs reduce circuit loading. Simply attaching the clip to a TTL dual inline package makes all A detail of the Chesapeake Digital Devices logic probe board. The three LEDs are at the right in this picture, with the 74S00 IC in the center. 23 the logic states visible at a glance. The clip is, in effect, 16 binary voltmeters. When used with some means of pulsing a complicated circuit slowly, sequential logic states like shift registers come alive — each state change is immediately visible. The most popular clips are made by Hewlett Packard and Circuit Specialties. Unfortunately they have one big drawback — price. They cost from $75 to $85 each and will not be discussed further here. Summary Table 1 summarizes all the information that has been given here and presents some new facts about each of the logic probes discussed. By scanning this table you ought to be able to determine which probes have the features you need and the ones you can afford. The following comments are based on personal experience with each of these probes, but that experience has been rather limited. The Hewlett Packard probe is obviously the best. It should be; it certainly costs significantly more. It will work under a wide range of conditions and it is carefully made. For the extra money you get wide frequency range, tight specifications, and vastly superior handling of pulse trains. The construction is first class and includes such extras as a compact BNC plug on the power cable (which, of course, is not so good if your breadboarding system does not have a BNC jack to supply that power). The E and L probes (340 and 320) are imported from Japan. They are very well constructed and have the little extras like plastic carrying cases and different probe tips that the better Japanese manufacturers like to include with their products. The 320 is a better logic probe than the 340. It is less expensive and it handles pulse trains and logic levels in a better and more revealing way. Of course, it does not have the pulse generating capabilities of the 340. The professional logic designer will want to get one of these three probes. They may be a bit expensive for the serious hobbyist. In that case one of the two kits would be satisfactory. Both kits went together easily and rapidly. The CDD kit is much more revealing about the state of the logic under test and has superior assembly instructions. The James kit has better quality parts and is cheaper. In any case the serious worker in digital logic and computers, whether a professional or a serious hobbyist, will find one of these probes a valued addition to his collection of test equipment. ■ Table 1. Characteristics of logic probes. 1 Probe HP 10525T 1 340 2 320 2 CDD 3 James Operating 5 ± 1 0% V 5 ± 1 0% V 5 ± 1 0% V 5 ± 1 0% V 5 V Voltage Current 60 mA 100 mA 80 mA 40 mA 65 mA Frequency 50 MHz 5 12MHz 12MHz Response Input Impedance >25 k£2 BOkfll 1 00-600 kS2 Min. pulse width 10 ms 6 50 ms 50 ms See 11 Levels OPEN half intensity no lights no lights yellow 10 HIGH on >2±0.2 V red>1.5 V red > 2.4 V red >2.5 V 1>0.7 V LOW ^ +0.2 off <0.8 ' " V -0.4 no lights green <0.7 V green 2 ■ h « 5 * V « '8 1 ( 9 « \~\ ' 12 ^ c 2 O- 3 O- 4 O- 8 i ? < »" -i GND 12 i' -V i 3 7 1 i k 1 I 1 < 1 > k" 7 I 7 < \ 7i • "" v cc ALL RESISTORS = 1/8 WATT : CONNECT ALL V cc PINS 1 TOGETHER 8 ALL GND PINS TOGETHER Fig. 1. Powerless IC Test Clip. 1 TIDI25 DIODE ARRAY 27 HARDWARE ! Wb have Altair compatible plug-in peripherals! BUILD A SMART TERMINAL INTO YOUR ALTAIR! Your Altair already has Ihe intelligence, we provide the display module. This module is not a limitied "TV Typewriter" but an ultra-high speed computer terminal built into your computer. The VDM-1 generates sixteen 64 charac- ter lines from data stored in the IK byte on-card memory. Alphnumeric data is shown in a 7x9 dot matrix format with a full 128 upper and lower case ASCII character set. The VDM-1 features EIA video output for any standard video monitor, multiple programmable cursors, automatic text scrolling and powerful test editing software included FREE! Available now. !! MASS STORAGE !! We have always wanted a low cost, reliable, fast access storage device using standard Phillips cassettes (we bet you have too), so we got to work and designed one here it is! With the CDS-VIII Cassette Data System you have computer controlled access to I 28K bytes of data within 20 seconds when using C-30 cassettes. We provide read/write electronics and transport controller, Altair interface, a case and power supply, and one or two multiple motor cassette transports plus FREE driving software! Yes, up to two cassette drives! Two drives provide much more powerful file handling and copying capabilities as well as, of course, twice the storage capacity. Data can be written and/or read asynchronous- ly at any transfer rate up to 150 bytes/sec: at this rale 8K BASIC can be loaded in about 50 seconds! We have also included provision for use of any read/write electronic plug-in section so that tapes using HIT, Computer Hobbyist or Digital Group formats may be read at lower data rates. Available in November 1975. 4KRA Static Read/Write Memory This 4096 word STATIC memory provides faster, more reliable and less expensive operation than any currently available dynamic memory system. The 4KRA permits Altair 8800 operation at absolute top speed continuously. All RAM's (Random Access Memories) used in the 4KRA are 91L02A's by Advanced Micro Devices, the best commercial memory 10 on the market today. 91L02A's require typically 1/3 the power of standard 2102 or 8101 type RAM's and each one is manufactured to military specification MIL STD-883 for extremely high reliability. These memories can be operated from a battery backup supply in case of power failure with very low standby power consumption. (Ask for our technical bulletin TB-101 on power down operation.) In short we have done everything we could to make the best 4K memory module in the computer field, and because we buy in large quantity, we can make it for a very reasonable price. Available now. 2KRO Erasable Reprogrammable Read Only Memory Module With this module the Altair 8800 can use 1702A or 5203 type Erasable Reprogrammable ROM's. The7KR0 accepts up to eight of these IC's for a capacity of 2048 eight bit words. Once programmed this module will hold its data indefinitely whether or not power is on. This feature is extremely useful when developing software. All necessary bus interfacing logic and regulated supplies are provided but NOT the EPROM IC's. Both 1702A and 5203 PROM's are available from other advertisers in this magazine for well under $25. Available now. 3P+S Input/Output Module Just one 3P+S card will fulfill the Input/Output needs of most 8800 users. There are two 8-bit parallel input and output ports with full handshaking logic. There is also a serial I/O using a UART with both teletype current loop and EIA RS-232 standard interfaces provided. The serial data rate can be set under software control between 35 and 9600 Baud. You can use your old model 19 TTY! This module gives you all the electronics you need to interface most peripheral devices with the Altair 8800, it's really Ihe most useful and versatile I/O we've seen for any computer. Available now. MB-1 Mother Board Don't worry any more about wiring hundreds of wires in your Altair to expand the mainframe. Our single piece 1/8-inch thick, rugged mother board can be installed as one single replacement for either three or four 88EC Expander cards, so you don't have to replace your already installed 88EC card if you don't want to. The MB-1 has very heavy power and ground busses and comes with a piece of flat ribbon cable for connection to the front panel board of the 8800, a built-in bus termi- nator, and card guide cage for sixteen plug-in slots. Available now. Item PRICE LIST effective Oct. 1, 1975 Kit Assembled Delivery 2KRO EPROM module 3P+S I/O module 4KRA-2 RAM module w/ 2048 8-bit words 4KRA-4 RAM module w/ 4096 8-bit words RAM only, AMD91L02A 500 nsec, LOW POWER CDS-VIII-1 Cassette Data System w/one transport CDS-VIII-2 w/two trans- ports MB-1 Mother board, bus terminator, card cage VDM-1 Video Display module $ 50. S 75. 3 weeks max. 125. 165. 3 weeks max. WRITE FOR DETAILS WRITE FOR DETAILS 8/S40. - 3 weeks max. WRITE FOR DETAILS WRITE FOR DETAILS 70. — 3 weeks max. 160. 225. 3 weeks max. TERMS: All items postpaid if full payment accompanies order. COD orders must include 25% deposit. MaslerCharge gladly accepted, but please send us an order with your signature on it. DISCOUNTS: Orders over $375 may subtract 5%; orders over $600 may subtract 10%. E Processor Technology 2465 Fourth Street Berkeley,Ca.947K> (415) 549-0857 :♦:<•• SOFTWARE ! WE HAVE ALTAIR COMPATIBLE 8080 SOFTWARE AND FIRMWARE MODULES! If you haven't used our Assembly Language Operating System you have been missing a wonderful experience. We have found the ALOS Resident Editor and Assembler to be an extremely useful and powerful program development tool. We are so sure you will be turned on with our Software Package No. 1 that we are practically giving a listing away for a mere S3.00US. Yes, this is a source listing as well as a hexidecimal printout. The Assembly Language Operating System gives you the ability to write programs in 8080 Assembly Language with labels, expressions and comments. The programs can then be edited by line number, a powerful feature that makes corrections and additions very easy. The program can be named as a file and stored at a user selected memory location while another file is being worked on. Files can be listed by line number using the LIST command before being assembled. The Assembler converts the Assembly Language mnemonic codes and labels to hexidecimal op-codes at any address selected by the user to run at any address (the run address may be different from the location in memory where the program is placed). Assembly can be performed with or without error messages being printed. After assembly the program can be run using the EXECUTE command or dumped onto cassette or paper tape using the DUMP command. Paper tapes or cassettes of the program listing will not be available to individuals but we have already sent paper tapes to several computer clubs around the country. We suggest you contact one of the clubs if you want a copy of the tape or need assistance. We will be happy to send tape copies to any bona fide "amateur" computer club or society, so if you are a member of such a group, please let us know of your group's existence by sending us a copy of its latest newsletter. In addition we have a manual describing the use of the ALO System from the ground up. This will include a complete description with examples of every command, instruc- tions on the use of all internal routines by other programs and an overview of efficient file generation and handling. An even more wonderful version of the ALOS is available in firmware as part of an 8K PROM module. The expanded version allows dynamic Input/Output allocation, file area management by the executive, octal and/or hex data entry, loaders for both 8800 BASIC and Intel Ilex Format tapes, and many other capabilities not included in the original Package No. 1. The basic Resident Executive-Editor-Assembler occupies about 4K of the 8K maximum capacity. So why the 8K?? Because we are leaving space for future expansion. The first expansion is a powerful Simulator that adds-on to the basic ALOS package. SIMULATOR'.'? Yes, an Interpretive Simulator which runs 8080 programs on the same 8080 that contains the Simulator! Not just traps and breakpoints but simulated I/O, registers, flags, program counter and stack pointer. Any of these can be modified at all times; plus a single step mode that displays all the registers, pointers, flags, etc., after execution of each instruction. This Simulator is the most powerful debugging tool for the 8080 that we know of. Just think, you will hardly ever again have to touch the front panel switches. Both versions of our ALOS require 2K bytes of RAM for system internal storage and symbol tables. In addition at least 4K more is needed to hold user files, although greater capabilities are achieved with 8K or 12K of user space. PTCOS! What is PTCOS you may ask?? It stands for Processor Technology Cassette Operating System and it means a real Operating System program based around our CDS-VIII dual Cassette Data transport System. When operating under this program you have true file handling power to create, delete, edit, relocate, and copy all kinds of files (e.g. BASIC and programs written in BASIC). PTCOS can handle multiple I/O devices using a special type of file and suitable small driving routines. At last an integrated system concept for the 8800 is a reality! PTCOS is devilishly similar in its basic operation to an FDOS and is upward compatible with future software developments from Processor Technology. PRICE LIST effecitve OCT. 1, 1975 KIT ASSEMBLED DELIVERY Assembly Language 1 24o5 FOUfth Street Software package No. 1 Assembly Language Operating System $3.00 3 weeks max. PTCOS: Processor Technology Cassette Operating System WRITE December '75 ALS-8 PROM Firm- ware module expanded version of SP No. 1 $275. $325. 3 weeks SIM-1 PROM Firm- ware add-on to ALS-8: Simulator section $95. $110. 3 weeks E Processor Technology 2465 Fourth Street Berkeley,Ca.94710 (415) 549-0857 What is a Character ? by Manfred Peshka Peterborough NH 03458 A character is a unit of information used in a com- munication between a sender and a receiver. Senders and receivers may be either people or machines, or a mix of the two. A character may be represented in different forms: People use mostly graphics, such as the letters of the alphabet, the digits or occasionally the Roman numerals, and the punctua- tion and special symbols which are So familiar to us. Machines process a set of electric pulses in a period of time which normally repre- sents a character. This time period differs in length for different devices; it is longer for slow devices (terminals, card readers, printers) than for fast devices (tape and disk drives), and is generally the shortest for the computer arithmetic and logical unit. Parenthetically it should be noted that some machines can recognize graphics, draw- ings, and even objects (units providing information) in a landscape. The discussion of these machines, however, is reserved to a future article, and their cost is far beyond that of the amateur and hobbyist at the present time. Symbolic Representation of Alternatives What is the minimum number of information ele- ments, characters, or basic symbols needed to express an alternative? Probably the most common symbol is the indicator light which tells us that a system is in a specific state as opposed to its "usual" state. Let's consider for a moment the sign "Fire Trucks Entering on Blinking Red Light." This sign indi- cates the possibility of two specific states: The "usual" state prevails when fire trucks are either on a call or waiting in the garage; in this situation the light is off. The alterna- tive consists of an emergency when the light is blinking to inform people that trucks are about to enter the street, or just have entered and are rushing to the fire. Thereafter the light is again turned off. The light is pulsing for a period of time which nor- mally represents this particular situation or "unit of information," say, about 20 seconds. The indicator light actually represents the simplest character or basic symbol providing a unit of information. It is binary telling you that a given situa- tion either prevails or not. Similarly, the door bell, the telephone bell, the oil pressure light on your car, etc., are binary symbols. Binary means nothing else but a characteristic, property, or condition of a system in which there are but two alter- natives. Besides indicator lights, bells, etc., binary symbols can take on graphic forms such as yes or no, true or false, 1 or 0, to name a few only. For a machine, the form is either the absence or presence of a certain elec- trical energy level at a period of time of specific duration. While the duration of signaling or "marking" in the case of the oil indicator light may be variable depending on engine rotation, pressure, temperature, etc., it is constant for computing machines. It may be a 1/1 10th or 1 /300th of a second for a slow terminal, or a billionth of a second foi* a computer central processing unit. 30 Binary and Ternary Symbol Sets We have seen that one binary character suffices to indicate two distinct states. On the other hand, an elevator is in one of three states: It is idle, or it is going up, or it is going down. Naturally one binary symbol is not enough to represent three states. Two lights may be used as follows: The left light may signal upward motion when illuminated, and the right light may signal downward motion. No upward or downward motion is indicated when the corresponding light is turned off. Let's represent the two possible states of the indicator lights by the graphics 1 of on and for off. The following three characters then express the three possible states: 00 [ 00 ] idle 01 [ o*. ] down 10 [ *o ] up Note that a character, that is, the unit of information, is represented by two bits or binary digits. We now have used a two-bit character code to symbolically represent the states of the system consisting of the elevator and its two lights. An entirely different way to represent three distinct states symbolically is accomplished by increasing the number of basic symbols from two to three. Let's use the graphic 2 to indicate upward movement. Instead of the left and right indicator lights, such conditions may be indicated by a panel displaying the terms idle, down, or up as follows: This time we used a code consisting of ternary digits to symbolically represent the three states of the elevator and its indicator panel. Ternary means that a characteristic, property, or condition of a system can prevail in one of three alternatives. Note that the unit of information, or in other words, the character, has been coded in the first case by two binary digits, and in the second instance by one ternary digit. One can conceptualize a character as a distinguishing mark indicating a specific state of a system. Characters are "marks of distinction" which may be represented in different graphic forms which have equivalent value: Binary Ternary Implementation 00 [ oo ] [ IDLE ] 01 1 [ 0*1 j | DOWN] 10 2 [ -fco ] [ UP | The two bit code permits a fourth alternative, namely 11. In actuality, this situation represents a contradiction since the elevator cannot move up and down at the same time. However, this character may be used to signal a defect, such as the elevator being stuck between two floors, or it may simply be out of operation. The ternary code cannot signal this condition unless an additional basic symbol is being used; let's assume that an additional panel indicates a defect when illuminated, and the code representing this situation consists of a binary digit concatenated with a ternary digit as follows: In this situation, the character or information unit is represented by one binary and one ternary digit. It is a mixed code, principally similar to those found on license plates consisting of letters and decimal digits. In this situation, two of the six possible characters remain unused, namely 11 and 1 2. At least, let's hope that they remain unused because 11 would mean that a defective elevator is in downward motion. Enumerating Alternatives The number of alternatives which need to be considered in a given system determines the coding requirements. The more alternatives need to be communicated, the more "marks of distinction" are required. We have seen the two basic ways to accomplish this: Increase the number of distinguishing graphics in the character set, or concatenate graphics from the same or from different sets of basic symbols to form strings. Obviously there is some upper limit to the number of distinguishing marks available to people. Humans have a limit of what they can comfortably memorize in terms of numbers of basic symbols when there is no specific meaning attached to them. Consequently there comes a point when graphics are being concatenated to form symbol strings which represent words. The string 3-D stands for the word which we pronounce 'thre-'de and which obviously means "the three-dimensional form or a picture produced in it" (Webster's Seventh New Collegiate Dictionary 1965: page 920). We use the decimal digits 0, 1, 2, . . ., 9 to represent numbers, the letters a, b, c, . . ., z, A, B, 1 IDLE ] neither down 10 nor up 00 1 |DOWN ] down 01 2 1 UP ] up 02 [ DEFECT IDLE IDLE DOWN UP 31 . . ., Z to represent the alphabet for words; special symbols and punctuation marks are concatenated with digits and letters to form even longer strings to represent expressions which inform people about one specific alternative out of, say, a million possibilities. We form mathematical expressions (x 2 +x— 3, etc.) and word expressions (i.e., sentences) and a combination of the two: "Yesterday it rained in Peterborough for two hours." The basic unit of information is the basic graphic symbol or character: The space on the paper, the special marks (+ — <,; etc.), the letters, and the decimal digits, and, which is not immediately obvious, certain functions like the bell on the typewriter which signals the approach of the right margin, the backspace, the margin release, the carrier return, the line feed adjustment, etc. The latter group is called functions or control characters. In the computer and communications field many more functions are encountered than there are on the typewriter. These will be discussed in detail further on. The number of graphics available for marking one out of many possible states of a system is referred to by the name base. Digits are used to represent numbers; since people generally use ten distinct digits, the number system is called a decimal system. The base of this system is 10. In the previous section the binary number system and the ternary system were used. Their bases are two and three, respectively. Using any one of these systems, it is possible to mark any number of alternatives. If the number of alternatives exceeds the base (i.e., the number of distinct graphics in the set) one or more additional graphics are used. TabJe J. Equivalence of Selected Graphics. Binary 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 b= 2 g= 4 a= 16 Ternary 1 2 10 11 12 20 21 22 100 101 102 110 111 112 120 3 3 27 Octal 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 8 2 64 As an example, let's assume that we desired to mark any one of sixteen alternatives. If we used the letters to mark these possibilities, as is often found in term papers and legal documents to mark paragraphs and sections, one graphic for each alternative would suffice. As a matter of fact, out of the 52 available letters only sixteen would be used. Thirty-six graphics would not be used. Two decimal graphics are required to express sixteen options, leaving 84 pairs unused. Three ternary graphics encompass these sixteen possibilities leaving eleven triplets unused. A quadruplet of binary graphics generates exactly sixteen possibilities. In general, by using 'g' graphics of a set with base 'b', the maximum number of alternatives 'a' is determined by multiplying 'b' with itself for 'g' times, or in other words, a=b§. Table 1 summarizes this rule by enumerating all possible arrangements of binary, ternary, octal (base 8), decimal, and hexadecimal (base 16) graphics for the first sixteen values or alternatives. To illustrate the rule to calculate the maximum number of alternatives, the hexadecimal system requires Decimal 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 2 100 Hexadecimal 1 2 3 4 5 6 7 8 9 A B C D E F 16 1 16 only one graphic (g=1) for a maximum of sixteen alternatives (a=16) because its base equals sixteen (b=16). Note, however, that the largest value or number equals fifteen which is represented by the graphic F because enumeration began with the magnitude zero. The maximum value is always one less than the number 'a' because these systems start counting with zero. Assuming two hexadecimal graphics (g=2), 256 distinct alternatives can be identified (a=16 2 ). The largest value, however, is equal to 255 (a— 1) because the first value is zero. The hexadecimal string FF identifies the same magnitude as the decimal string 255 or the bit string 11111111. It is easy to change from one coding system to another, especially from binary to hexadecimal and back, by means of Table 1. The choice of the hexadecimal graphics A to F was arbitrary and is of great help to people. Machines represent all characters as binary pulses within a given time period. Bit strings, therefore, can become very large and difficult to remember. Imagine the bit string 10001111011100. How much easier it is to 32 remember the hexadecimal string 23DC instead (you may wish to verify the translation starting with the right four bits). Any other distinct graphics instead of A to F could have been used; for example ! @ # < % >. However, try to remember these in this order, and try to pronounce 23<# instead of the above 23DC. How to Identify Character Sets Given the possibility of switching from one representation to another, the question of code identification must be dealt with. Assume the graphic representation 3-D. Is it a word of the English language? Or is it an arithmetic expression? If it is an arithmetic expression, which number system has been employed? Assume another representation such as 11. Which number system has been employed and what magnitude is represented? You may wish to consult Table 1 and calculate the magnitude for each number system. In order to avoid confusion, graphics other than decimal digits, letters, and the special symbols are identified explicitly. The string 1 1 therefore means eleven in the decimal number system, and 3-D is part of the English language. If a ternary string was meant, one needs to say so in some unambiguous manner. This can be accomplished through a textual declaration such as "All following digits are ternary digits" or, "The ternary number 11 has a value of 4" where according to our convention the graphic 4 is understood to be a decimal digit. A different way to identify strings is by appending to the string the base. In the mathematical and computing literature different methods have been employed. In the mathematical literature, this is accomplished by a separate graphic which is appended to the digit string: 112 is a binary number with a value of three, while 1 1 8 is an octal number representing nine, and 1 1 16 is a hexadecimal number representing 17. The subscripted graphic represents the base, and it is omitted whenever the base is ten. This convention also avoids the confusion about 3-D. This string is an expression of the English language, whereas 3-Di6 equals 3-13 or — Ai6 which is a numeric expression resulting in a number. In the computing literature, different ways have been found to identify bit or hexadecimal strings. These ways depend on the manufacturer and on the computing language employed. In American National Standard (ANS) Fortran, a predominately mathematical language (which is to be distinguished from Basic Fortran), digit strings are recognized as decimal numbers. Bit strings are not allowed, and non-digit strings as used for headlines, table headings, etc., are preceded by one or more digits and the capital letter H; for example, 4H3.14 means the four characters 3.14 which differ in their internal representation from the magnitude 3.14. The constant 4 prior to the H indicates the length of the string; it is four symbols long. In ALGOL 60 which is an internationally standardized mathematical language, digit strings are recognized as decimal numbers, and character strings for table headings, etc., are enclosed in so-called string brackets as shown in the example: '. . . The wife stated that her husband told her 'our daughter complained 'the teacher is giving me trouble'". Note that it is possible to have strings within strings, each of which is enclosed by the single quotes pair. In Programming Language One (PL/I), as devised by IBM, digit strings are recognized as decimal numbers unless they are appended by the letter B. 11B equals 11 2 and has a value of 3. Since the internal representation of binary numbers differs from codes, this language also permits explicit bit and character strings such as '11'B which does not necessarily have a value of 3 but could mean, for example, that the elevator is out of order. Alphanumeric character strings are also permitted and recognized whenever they are enclosed in single quotes: 'THIS IS A "STRING", ISN'T IT?'. Similar distinctions exist also in ALGOL 60 and will be discussed in a future article. You might have noted that the character constants in Fortran were preceded by the length indicator and an identifying character H. In the systems using quotes or string brackets, the length is determined by the number of positions occupied between the brackets. Many assembler languages combine these two methods. The string is enclosed in quotes, and it is preceded by a single letter indicating the base. B'1V is equal to 11B or '11'B and has a value of 3 when it is used as a number in integer arithmetic. X'1 V equals 11 16 or 17 and is a hexadecimal string. The distinction between binary numbers and bit strings is a rather fine one and will be discussed in a future article. The computer represents all information as strings of bits and manipulates these strings according to their type in certain groupings of bits. The basic group is called a machine word and consists of one or more bits. These bit groups have an equivalent code value which can be represented graphically in several different ways. 33 Function Abbreviations We have discussed earlier various functions of the typewriter. Computer terminals and communica- tions equipment use many more function characters than the common typewriter does. In the various codes, these functions correspond to certain bit strings. The functions are indicated in the code tables on the following pages by abbreviations. Therefore, in Table 2 a dictionary of these abbreviations is presented. The more frequently encountered terminal function codes (as opposed to transmission functions) are marked with an asterisk. The Baudot Five-Bit Telegraphy Code An operator depressing the telegraph key causes current to flow through a wire. The current actuates an electromagnet at the receiving end which produces a "click". The timing between the clicks represents either a dot or a dash, and telegraphers yesterday, and hams today, are skilled in Fig. J. The word BYTE in Baudot Code. "MARKING" SPACING LETS — I — I— I — i- I START ST OP I W-ONE CHARACTER— H — H I I- 5 -t I.5 I OR TIME UNITS 1. 42 Table 2. Function Abbreviations. ACK Affirmative Acknowledgement BEL, BELL Bell or other audible signal BS Backspace BYP By Pass CAN Cancel CC Cursor Control CR Carriage Return CU1 Customer Use 1 CU2 Customer Use 2 CU3 Customer Use 3 DC0 Device Control 0. DC 1 Device Control 1 DC 2 Device Control 2 DC 3 Device Control 3 DC 4 Device Control 4 (stop) DEL Delete DLE Data Link Escape DS Digit Select EM End of Medium ENQ Enquiry EOA End of Address EOB End of Block EOM End of Message EOT End of Transmission ERR Error ESC Escape ETB End of Transmission Block ETX End of Text FE Format Effector FF Form Feed FIGS* Figures Shift FS Information File Separator GS Information Group Separator HT Horizontal Tabulation IDLE Null IFS Interchange File Separator IGS Interchange Group Separator IL Idle translating these "dots" and "dashes" into graphics. Transmission speed was mostly dependent on the telegraphers' skills. The term "baud rate" means the frequency at which the dots recurred in a second, with every dash counting twice as long as a dot. In the automatic teletypewriter the key was replaced by a distributor which sends a fixed number of pulses for each character entered on a keyboard. Latches at the other end actuated a printing device. The term "marking" was used to indicate the flow of current, and the line was "spacing" when the current was off. Marking and spacing can be related to binary digits. In Table 3, a mark is indicated by the bit 1, and a space by the bit 0. In addition to the five bits of the code, a space occurred prior to transmission, and a longer mark (1.5 or 1.42 times the usual mark time) terminated the code. Fig. 1 shows the timing of marks and spaces of the string BYTE: IRS ITB I US LC LETS LF NAK NL NUL PF Pl\l PRE RES RS RU RVI s -s 7 SI SK SM SMM SO SOH SOM SOS SP STX SUB SYN TM TTD UC US VT VTAB WACK WRU Interchange Record Separator Intermediate Text Block Interchange Unit Separator Lower Case Letters Shift Line Feed Negative Acknowledgement New Line Null, or all zeros Punch Off Punch On Prefix Restore Record Separator (Reader Stop) Are you . . . ? Reverse Interrupt Separator Information Shift In Skip (punched card) Set Mode Start of Manual Message Shift Off or Shift Out Start of Heading Start of Message Start of Significance Space Start of Text Start of Special Sequence Synchronous Idle Tape Mark Temporary Text Delay Upper Case Information Unit Separator Vertical Tabulation Vertical Tabulation Wait Before Transmitting Positive Acknowledgement Who are you? 34 Prior to transmission of the letter B, the code LETS must be sent in order to set the receiving equipment into letter shift mode. The reason for this convention is to make it possible to transmit more than 32 symbols with five bits (g=5, b=2, a=32). After all, there are already 26 uppercase letters and ten digits; then there is need for punctuation and special symbols, and function characters to control the printer. Once the operator intends to send a numeric character, the FIGS code is sent prior to the numeric string. In addition to the numeric characters, several other characters were sent in figures shift mode. Depending on the equipment used, various different graphics were assigned to the same bit strings. Table 3 indicates the assignments for four different keyboards; the first column shows the International Telegraph Alphabet No. 2 of the Comite Consultatif I nternational Telegraphique etTelephonique (CCITT); the second column shows the commercial teletype keyboard as used in the United States, the third column presents the fractions keyboard of the American Telephone and Telegraph Company (ATT); the fourth column shows the weather bureau keyboard. All four different keyboards are shown here because used equipment from different sources may be available to you which you might want to modify so that all keycaps correspond to the commercial keyboard. Binary Coded Decimal (BCD) Transmission Code The term "binary coded decimal" derives from the method of coding decimal digits. The bit string with value 9 is 1001, and the value 10 is expressed by adding an additional four bits, namely, 00010000. The bit string Table 3. Five-level Baudot Code for Four Selected Keyboards. Upper Case BIT CODE 1 Lower E Case u ID E E o o < SI CO u 1 1 A -- - - t 1 1 1 B ? ? 5/8 e 1 1 1 c 1/8 o 1 1 D Who are you? $ $ / 1 E 3 3 3 3 1 1 1 F ! 1/4 — 1 1 1 G & & X 1 1 H # I 1 1 I 8 8 8 8 1 1 1 J Bell Bell • / 1 1 1 1 K ( ( 1/2 — 1 1 L ) ) 3/4 \ 1 1 1 M 1 1 N , , 7/8 at 1 1 O 9 9 9 9 1 1 1 P 1 1 1 Q 1 1 1 1 1 1 R 4 4 4 4 1 1 S , , Bell Bell 1 T 5 5 5 5 1 1 1 U 7 7 7 7 1 1 1 1 V = ; 3/8 0> 1 1 1 w 2 2 2 2 1 1 1 1 X / / / / 1 1 1 Y 6 6 6 6 1 1 z + " " + Blank ' - 1 1 1 1 1 Letters shift I 1 1 1 1 Figures shift t 1 Space ■ 1 Carriage return < 1 Line feed s 35 Table 4. Seven-bit American Standard Code for Information Interchange. Bits 4 3 2 Bits 7, 1 6, 5 000 001 010 011 100 101 110 111 "^~\^Hex Hex 1~~^^^ 1 2 3 4 5 6 7 NUL DLE SP 9 P ' P 1 1 SOH DC1 It! 1 A Q a q 1 2 STX DC2 2 B R b r 1 1 3 ETX DC3 ft 3 C S c s 1 4 EOT DC4 $ 4 D T d t 1 1 5 EIMQ NAK % 5 E U e u 1 1 6 ACK SYN & 6 F V f V 1 1 1 7 BEL ETB ■ 7 G w g w 1 8 BS CAN ( 8 H X h X 1 1 9 HT EM ) 9 I Y i V 1 1 A LF SUB * J z j z 1 1 1 B VT ESC + K [ k i 1 1 C FF FS , < L \ I i i 1 1 1 D CR GS - = M ] m \ 1 1 1 E SO RS > N -l t A n ~ 1 1 1 1 F SI US / ? DEL tFor IBM 370, the left of the two symbols is generally displayed. See Table 2 for explanation of function abbreviations. TaWe 5. Six-bit Binary Coded Decimal Transmission Code. Bits Bits 3, 4 -«^^ 1,2 00 01 10 11 0000 SOH & - 0001 A J / 1 0010 B K S 2 0011 C L T 3 0100 D M U 4 0101 E N V 5 0110 F O w 6 0111 G P X 7 1000 H Q Y 8 1001 I R z 9 1010 STX SPACE ESC SYN 1011 $ ) 1100 < * % 9 1101 BEL US ENQ NAK 1110 SUB EOT ETX EM 1111 ETB DLE HT DEL 36 01011001 therefore has a value of 59, and 99 is expressed as 10011001. This method differs from the bit coding shown in Table 1 . The binary coded decimal (BCD) transmission code has been widely used by IBM and other manufacturers to transmit uppercase letters, digits, and special symbols in a six-bit code. It is a subset of the USASCII code; however, it is not a national standard. The bit strings are shown in Table 5. The American Standard Code for Information Interchange (ASCII) Throughout the decades, many different data transmission codes were developed, and designers today often find good reasons to develop their own codes. The need for standardized transmission codes, however, has increased tremendously because more and more machines dial-up other machines via the public networks. The American Standards Association has standardized a seven bit code for communications. It contains upper and lower-case letters, and a large number of device and transmission control characters. An eighth bit may be added for parity. The term parity implies that the number of bits should add up to an even number (for even parity) or to an odd number for odd parity. The purpose is to check to some degree for a loss of bits during transmission. Assume that a device transmits in even parity; uppercase B consists of two marks and five spaces, therefore, no eighth bit is transmitted; uppercase T consists of three marks and four spaces, and an eighth mark is sent to make the number of marks even. Fig. 2 shows the string BYTE in even parity transmission. The code is shown in Table 4. Bit 1 is transmitted first. You may also want to refer to Table 2 in order to understand the meaning of the abbreviations. Extended Binary Coded Decimal Interchange Code (EBCDIC) The Extended Binary Coded Decimal Interchange Code is essentially the previously mentioned Binary Coded Decimal code extended by two bits to form an eight-bit code. A total of 256 codes are possible (b=2, g=8, a=256) and because of its length of eight bits, it is often more easily expressed in hexadecimal notation by means of a string of two hexadecimal digits. Table 6 shows both notations, the bit pattern and the hexadecimal notation. The digit 9, for example, is expressed as the bit string 11 11 1001, or as the hexadecimal string F9. The code is often used to transmit the eight-bit bytes of computers. It originated about a decade ago when IBM introduced the System 360. The terms "EBCDIC", "byte", and "hexadecimal digits 0, . . ., F" were developed at that time. Today these terms are widely accepted and used by many computer manufacturers. The code is also widely accepted; however, it is not a national standard. Conclusions A character is a unit of information which can be represented in various forms, such as in graphic form, or as a bit string. Since bit strings can be rather lengthy and therefore difficult to remember, we discussed the abbreviated representation of the string by means of the hexadecimal graphics. The relationship between the bit string representations of characters and the hexadecimal graphics is independent of the code since it is based on an intrinsic numerical order, namely that of counting from zero by one to infinity. On the other hand, bit strings may be represented by graphics in an entirely different manner depending on the code used. For that purpose we looked at the predominant five-, six-, seven- and eight-bit codes presently in use. We did not discuss various other but less important codes because of space limitations. Depending on the code utilized, the same graphic represents entirely different bit strings as shown in Table 7. The first character in the Baudot code is the letters shift. Note the similarity between the last three codes which holds only for uppercase letters and digits. Fig. 2. The word BYTE in Even-parity USASCII. MARKING "SPACING" ^_^~^^^^^^^^^ > ? To conclude this tutorial, let me say this in EBCDIC (without start, stop and parity bits): D5 85 A7 A3 6B 40 A6 85 7D 93 93 40 84 89 A2 83 A4 A2 A2 40 95 A4 94 82 85 99 A2 4B A B C D E F G H I J K L M N O P Q R S T U V w X Y z r Special Graphic Characters 1 i < Cent Sign Period, Decimal Point Less-than Sign Left Parenthesis Plus Sign Logical OR Ampersand Exclamation Point Dollar Sign Asterisk Right Parenthesis Semicolon Logical NOT Minus Sign, Hyphen Slash Comma Percent Underscore, Break Character > ? L_ Greater-than Sign Question Mark Colon Number Sign At Sign Prime, Apostrophe Equal Sign Quotation Mark See Table 2 for explanation of function abbreviations. # @ J Table 7. Transmission of the String BYTE in selected codes (excluding start, stop) and parity bits). 11111 10011 10101 00001 10000 000010 101000 100011 000101 0100001 1001101 0010101 1010001 11000010 11101000 11100011 11000101 Baudot BCD Transmission Code USASCII (see Note 1) EBCDIC Note 1. In memory, the sequence of bits on the IBM 360 and 370 is reversed. The left bit shown becomes the right bit, etc., as shown: 1000010 1011001 1010100 1000101 38 featuring MITS Altair Computers FULL SERVICE COMPUTER STORE Byte'Tronics is the hobbyist's dream come true. A full service computer store featuring the full line of Altair Computer products backed by the most complete technical seivice available. The prices at Byte'Tronics are MITS factory prices and most items are available on an off-the-shelf basis. Byte'Tronics sponsors the local Altair Users Group of East Tennessee and Byte'Tronics is interested in communicating with computer hobbyists throughout the world. If you have a question about Altair hardware (whether or not you are a Byte'Tronics customer), we will put you directly in touch with our Technical Director, Hugh Huddelston. Hugh is an expert troubleshooter who has a thorough knowledge of each portion of each Altair board. And he can answer all your questions about custom interfacing. If you have questions about software or if you want some custom programming, our Software Director, Johnny Reed, is the expert who can take cere of your needs. Johnny has had years of programming experience, and he is familiar with Altair BASIC, assembler and machine language programming. If you have questions about the availability of a MITS product or its price or specifications, we will let you talk to Bruce Seals, our Director of Marketing. At Byte'Tronics we want you to understand your Altair and we are willing to give you all the technical support you need. Byte'Tronics sells computers. Byte'Tronics sells service. For more information, visit our store in Knoxville— or write or call us. We want to hear from you. 5604 Kingston Pike, Knoxville, Tennessee 37919 Phone 615-588-8971 Office hours: 10 a.m. to 10 p.m. Monday-Friday and 9 a.m. to 10 p.m. Saturday. MITS-MAS Christmas Catalog Lowest Price in the World! In January of 1975. MITS stunned the computer world with the announcement of the Altair 8800 Computer that sells for $439 in kit form. Today MITS is announcing the Altair 680. The Altair 680. built around the revolutionary new 6800 microprocessor chip, is the lowest priced complete computer on the market. Until December 31, 1975, this computer will be sold in kit form for the amazing introductory price of $293! (A savings of $52!) The Altair 680 comes with power supply, front panel control board, and CPU board inclosed in an 11" wide x 1 1" deep x 4 1 1/16" case. In addition to the 6800 processor, the CPU board contains the following 1. 1024 words of memory (RAM 2102 type 1024 x 1-bit chips). 2. Built-in Interface that can be configured for RS232or20mA Teletype loop or 60 mA Teletype. 3. Provisions for 1024 words of ROM or PROM. The Altair 680 can be programmed from the front panel switches or it can be connected to a computer terminal (RS232) or a Teletype such as an ASR-33 or surplus five-level Baudott Teletype (under $100). The Altair 680 can be utilized for many home, commercial or industrial applications or it can be used as a development system for Altair 680 CPU boards. With a cycle time of 4 microseconds, 16-bit addressing, and the capability of directly addressing 65,000 words of memory and a virtually unlimited number of I/O devices, the Altair 680 is a very versatile computer! Altair 680 Software Software for the Altair 680 includes a monitor on PROM, assembler, debug, and editor. This software is available to Altair 680 owners at a nominal cost. Future software development will be influenced by customer demand and may include BASIC on ROM. MITS will sponsor lucrative software contests to encourage the rapid growth of the Altair 680 software library. Programs in this library will be made available to all Altair 680 owners at the cost of printing and mailing. Contact factory for updated information and prices. Altair Users Group All Altair 680 purchasers will receive a free one year membership to the Altair Users Group. This group is the largest of its kind in the world and includes thousands of Altair 8800 and 680 users. Members of the Altair Users Group are kept abreast of Altair developments through the monthly publication, Computer Notes. Altair 680 Documentation The Altair 680 kit comes with complete documentation including assembly manual, assembly hints manual, operation manual, and theory manual. Assembled units come with operation and theory manuals. Turnkey model and CPU boards also include documentation. NOTE: Altair 680 manuals can be purchased separately. See backpage of this catalog for prices. Delivery Personal checks take 2-3 weeks to process while money orders and credit card purchases can be processed in 1-3 days. Delivery should be 30-60 days but this can vary according to order backlog. All orders are handled on a first come, first served basis. Altair 680 Prices Altair 680 complete computer kit .... $293 ($345 after December 31, 1975) Altair 680 assembled and tested $420 Altair 680T turnkey model (complete Altair 680 except front panel control board) Kit Only $240 ($280 after December 31, 1975) Altair 680 CPU board (including pc board, 6800 micro- processor chip, 1024 word memory, 3 way interface and all remaining components except power supply) $180 ($195 after December 31, 1975) Altair 680 CPU board assembled and tested $275 Option I/O socket kit (required when interfacing 680 to external devices) $ 29 Option cooling fan (required when expanding 680 internally) $16 ($22 after December 31, 1975) Option cooling fan installed $ 26 PROM kit (256 x 8-bit ultraviolet, erasable 1702 devices) $42 \mw\} "Creative Electronics Prices, delivery and specifications subject lo change. "PROJECT BREAKTHROUGH! World's First Minicomputer Kit To Rival Commercial Models . . 'Altair 8800' " The Altair 8800 from MITS is now one of the most successful computers ever delivered. Thousands of Altair 8800s have been sold and are in the field where they are being used for an infinite variety of industrial, business, science and home applications. The Altair 8800 is extensively supported by ongoing hardware and software development. Altair 8800 interface and memory modules and Altair peripherals are inexpensively priced, yet among the highest quality in the business. Byte for byte, Altair 8800 BASIC language software is the most powerful BASIC ever written. Thanks to the success of the Altair 8800, building and programming computers has become one of the World's most exciting and fastest growing hobbies. Local Altair 8800 Users Clubs have been formed across the United States and in such far away places as England and Japan. Thanks to clean, efficient design and accurate, easy to understand assembly instructions, the Altair 8800 is an easy kit to assemble. As an Altair 8800 kit builder, you will have the satisfaction of successfully building your own computer and you will learn about the internal structure of digital computers. As the owner of an Altair 8800, you will be backed by the technical expertise of the MITS Customer Service Department. You will receive the latest update information, programming hints, technical advice and general computer information on a monthly basis through a free subscription to Computer Notes. You will be in contact with other Altair 8800 owners through the Altair Users Group and you will have access to the extensive Altair 8800 Software Library. No other computer on today's market can offer you as much support as the Altair 8800. Christmas Special For a limited time only, you can be the owner of an Altair 8800 with a 1,024 word memory module for just $68 a month! See back page of this catalog for all the details. headline on cover of Popular Electronics, January, 1975 Altair 8800 Features Built around the most successful (and many say the most powerful) microprocessor chip ever [the Intel 8080] , the Altair 8800 is a variable word length computer with an 8-bit processor, 16-bit addressing and a maximum word size of 24-bits. It has 78 basic machine instructions with variances over 200 instructions. The Altair 8800 can directly address 256 input and 256 output devices and up to 65,000 words of memory. Up to 300 peripherals can be interfaced to the Altair 8800 without any additional buffering. The custom designer can interface almost any number of imaginable devices simultaneously. All Altair peripherals are supplied with software handlers to make interfacing easy. The Altair 8800 includes the CPU board, front panel control board, power supply (enough to power any additional cards), and expander board (with room for 3 extra interface or memory modules) all inclosed in a handsome, aluminum case complete with sub-panel and dress panel. Up to 16 cards can be added inside the main case. Altair 8800 Prices Altair 8800 Computer kit (includes assembly hints, assembly, operator's, and theory manuals) $439 Altair 8800 assembled $621 Expander board (adds 4 slots) $ 16 kit assembled, $ 31 Cooling fan $ 16 kit assembled, $ 20 Altair Modules — Custom Design Your Computer System to Meet Your Application (and stay within your budget!) ■ssf 1. Three 8800 memory modules. Three memory modules are now available for the Altair 8800 and more are in the works. These modules include a IK (1,024) word static card, a 2K (2,048) word static card, and a 4K (4,096) word dynamic card. Each of these modules is constructed with the finest components available and each contains memory protect features (prevents the computer from accidently writing over programs you want to save). The maximum access time of the static cards is 850 nanoseconds while access time for the dynamic card is 300 nanoseconds. 2. Four 8800 Interface Modules. Interface modules now available for the Altair 8800 in- clude three serial and one parallell I/O cards. The SlOA serial card is used to connect the Altair 8800 to CRT's and other computer ter- minals that have industry standard RS232 asynchronous interconnect lines. It has divider logic to allow for presettable baud rates up to 19.200 baud (5-8 data bits). The SIOB is the same as the SIOA except that all signals are TTL levels. This card is a general purpose serial interface that can be used to custom interface the Altair 8800 to a wide varie- ty of devices. The SIOC is also the same as the other serial cards except it is used to interface the Altair 8800to conventional Teletypes and other asyn- chronous 20 mA current loop terminals. The SIOC is required to interface the Altair with ASR-33 Teletypes available from MITS. The PIO parallel interface card is used for bidirectional transmission of bytes at speeds up to 25,000 bytes/second! It is a full TTL compati- ble input/output card with necessary hand- shake flags for conventional parallel interface. Both input and output data have their own 8-bit latch for buffering. Includes necessary logic to allow an adjacent channel to be a control channel. Most commonly used to interface the Altair 8800 to SWTPC-TVTs or equivalent, custom A/D-D/ A interfacing, computer to com- puter interfacing, and control applications. 3. Audio-Cassette Interface. This best- selling A/tairmodule allows you to connect your Altair 8800 to any tape recorder (medium quali- ty cassette is adequate) for inexpensive mass storage. It works by modulating (changing) digital signals from the computer to audio signals for recording data and by demodulating the audio signal for playback. Consists of a special Altair modem board "piggy-backed" on an SIOB board. Requires one slot in the 8800. 4. 8800 PROM module. This PROM memory card is designed to hold up to 2K of PROM. Contact factory for price and other in- formation. Altair 8800 PROM Programmer to be announced soon. 5. 680 CPU board. The Altair 6S0CPU board is a complete computer on a board (less power supply). In addition to the 6800 CPU available from Motorola and AMI, the Altair 680 CPU board comes with IK of RAM memory (2102 type, 1024 x 1-bit chips), built-in I/O that can be configured for RS232 or 20 mA current loop or 60 mA current loop, and provisions for IK of ROM or PROM. It measures 8 V x 10%". 6. 8800 CPU board. The heart of the Altair 8800 is its CPU board. This double-sided board was designed around the powerful byte oriented, variable word length 8080 pro- cessor — a complete central processing unit on a single LSI chip using n-channel, silicon gate MOS technology. The CPU board also contains the Altair system clock — a standard TTL os- cillator with a 2.000 MHz crystal as the feedback element. Altair Module Prices: IK static memory $97 kit and $139 assembled 2K static memory $145 kil and $195 assembled 4K dynamic memory $195 kit and $275 assembled SIOA interface $1 19 kit and $138 assembled SIOB and SIOC interface $124 kit and $146 assembled PlOinterface $92kit and $114 assembled Audio-cassette interface $128 kit and $174 assembled 680 CPU board kit $180kit [$195 after December 31, 1975] 680 CPU board, assembled $275 8800 CPU board $310kit and $360 assembled NOTE: Watch our advertisements for announcement of new Altair 8800 modules and Altair 680 modules. BASIC language was chosen for the Altair 8800 because it is the easiest language to learn and because it can be used for an infinite number of applications. Literally hundreds of thousands of BASIC programs have been written and are in the public domain. These programs include ac- counting programs, business programs, scientific programs, educational programs, game programs, engineering programs, and much more. Altair BASIC is an interactiue language. This means that you get im- mediate answers and you can use your Altair as a super programmable calculator as well as for writing complicated programs. 8K BASIC Features Altair 8K BASIC leaves approximately 2K bytes in an 8K Altair for programming which can also be increased by deleting the math functions. This BASIC is the same as the 4K BASIC only with 4 additional statements [ON GOTO, ON . . . GOSUB, OUT. DEF], 1 ad- ditional command [CONT] and 8 additional functions [COS, LOG, EXP, TAN, ATN, INP, FRE, POS]. Other additional features include multi- dimensioned arrays for both strings and numbers, AND. OR. NOT hh I've seen and used other BASICs, but byte-for-byte, Altair is the most powerful BASIC I've seen. I'm particularly im- pressed with the n-dimensional arrays (and for strings too!), machine level I/O, and machine language Junction features. The level of your documentation is, for me, though the high point. Sections for those who know nothing and sections for those who know a lot, plus sec- tions that 'normal' people can read and understand. ^ J. Scott Williams Bellingham, Washington Altair BASIC was written as efficiently as possible to allow for the max- imum number of features in the minimum amount of memory. You can order one of three Altair BASICs: 4K BASIC-designed to run in an Altair 8800 with as little as 4K of memory, 8K BASIC, or EXTENDED BASIC (12K). Each of these BASICs allows you to have multiple statements per line (a memory saving feature), and each of them is capable of executing 700 floating point additions per second! The 8K BASIC and EXTENDED BASIC have multi-dimensioned arrays lor both strings and numbers. This is particularly useful for applications requiring lists of names or numbers such as accounting programs, inventory programs, mailing lists, etc. The 8K BASIC and EXTENDED BASIC also have an OUT and cor- responding INP statement that allows you to use your Altair 8800 control low speed deuices such as drill presses, lathes, stepping motors, model trains, model airplanes, alarms, heating systems, home entertainment systems, etc. Altair BASIC comes with complete documentation including a copy of "My Computer Likes Me When I Speak in BASIC" by Bob Albrecht, a beginner's BASIC text. Never before has such a powerful BASIC language been marketed at such low prices! 4K BASIC Features Altair 4K BASIC leaves apporimxately 750 bytes in a 4K Altair for programming which can be increased by deleting the math functions. This powerful BASIC has 16 statements [IF THEN, GOTO, GOSUB, RETURN, FOR, NEXT, READ, INPUT, END, DATA, LET, DIM, REM, RESTOR, PRINT, and STOP] in addition to 4 commands [LIST, RUN, CLEAR. SCRATCH] and 6 functions [RND, SQR, SIN, ABS, INT and SGN]. Other features include: direct execution of any statement except INPUT; an'V' symbol that deletes a whole line and a "-<- "that deletes the last character; two- character error code and line number printed when error occurs; Control C which is used to interrupt a program: maximum line number of 65.535: and all results calculated to at least six decimal digits of precision. operators that can be used in IF statements or forumlas, strings with a maximum length of 255 characters, string concatenation (A$ = B$) and the following string functions: LEN, ASC CHAR$. RIGHT$. LEFT$, M1D$. STR$. and VAL. EXTENDED BASIC Altair EXTENDED BASIC is the same as 8K BASIC with the addition of double precision arithmetic. PRINT USING and disk file I/O. A minimum of 12K memory is required to support EXTENDED BASIC. Other Altair 8800 software includes a Disk Operating System, assembler, text editor, and system monitor. Altair users also have access to the Altair Library, which contains a large number of useful programs. SOFTWARE PRICES: AItair4K BASIC $150 Purchasers of an Altair 8800, 4K of Altair memory, and an Altair I/O board $ 60 Altair 8K BASIC $200 Purchasers of an Altair 8800, 8K of Altair memory, and an Altair I/O board $ 75 Altair Extended BASIC $350 Purchasers of an Altair 8800, 12K of Altair memory, and an Altair I/O Board $150 Altair PACKAGE ONE (assembler, text editor, system monitor) $ 175 Purchasers of an Altair 8800, 8K of Altair memory, and an Altair I/O board $ 30 Altair Disk Operating System $500 Purchasers of an Altair 8800, 12K of Altair memory, Altair I/O and Altair Floppy Disk $150 Note: When ordering software, specify paper tape or cassette tape. Inexpensive, Sophisticated Mass Storage converts serial data to 8-bit parallel words and vice versa for rapid transfer. The disk drive consists of a Pertec FD400 drive mounted in an Altair case including power supply, a buff/multiplexer board, and cooling fan. Its rotational speed is 360 rpm, track to track access time is 10 msec, average time to read or write is 400 msec, and disk life is over 1 million passes per track. The floppy disk is hard sectored for 32 sectors per track (128 words per sector). There are 77 tracks on each disk. Extra floppy disks are available for $15 from MITS. A Disk Operating System (software) with complete file struc- ture and utilities for copying, deleting and sorting files is also available. PRICES: 88-DCDD Altair Disk (includes The Altair Disk can store over 300,000 words of information disk controller, disk drive, one floppy disk on a floppy disk! It offers the advantage of nonvolatile memory and software driver) $1,480 kit (doesn't "forget" when power is turned off) and fast access to assembled, $1,980 data ( 94 seconds— worst case ) . The data transfer rate of the Altair 88-DISK Altair Disk Drive only $ 1 , 180 kit Disk to and from the computer is a whopping 250,000 bits per assembled, $1,600 second. Floppy disk $ 15 The Altair Disk includes the disk controller, disk drive, one Disk Operating System floppy disk and a software driver. The disk controller, which con- (if purchased separately) $ 500 sists of two cards requiring two slots in the 8800. is capable of Purchasers of an Altair 8800, 12Kof controlling up to 16 disk drives. It controls all mechanical func- Altair memory, Altair I/O and tions of the disk, presents the disk status to the computer, and Altair Disk (88-DCDD) $ 150 Build Your Own Advanced Terminal! The Comter 11 is easily the most advanced computer terminal kit on the market. It has its own internal memory of 256 characters which combines with a highly-readable, soft orange 32 character display to provide ease of operation and information retrieval. Complete cursor control allows you to move data in and out of the display and operate the Comter II with the versatility of a CRT terminal. Built-in audio-cassette interface allows you to store unlimited data from the computer and feed that information back into the computer. Other features include auto transmit which allows line-by-line transmission of data or program information to the computer from the Comter's memory. The Comter II has a complete ASCII encoded keyboard with TTY-33 format plus the addition of special function keys. Its total weight is just 15 lbs. Flexible power requirements allow you to operate the com- puter at either 95-125V or 190-250V. The Comter II can be inter- faced to any computer with an RS232 serial interface. Requires an SIOA board to be connected to the Altair 8800. No interface required to connect to the Altair 680. PRICES: Comter II kit with built-in audio cassette I/O $780 Comter II assembled $920 High Speed Printing at Low Cost! The Altair 110 Line Printer is a desktop line printer that produces 80 columns of 5 x 7 dot matrix characters at 100 characters per second x 70 lines per minute. The impact head prints bidirectionally on a 8V2" roll paper* using a conventional teletype ribbon. The Altair Line Printerwill print up to four copies of any item. Maximum reliability is provided by a mechanism which con- tains no brakes, clutches, dampers or stepper motors. All control electronics including one-line buffer and self-test circuitry are contained on a single 5" x 15" printed circuit card. The Model 110 was expressly designed for the simplicity, reliability and ex- tremely low cost required by current small-scale data handling systems and terminals. Vibration and wear are minimized because the print head moves uniformly in both directions and pauses only at the end of each line. Opto-electronic sensing is used to accurately position each dot and permit characters to be printed on the fly. The Altair 110 Line Printer comes with complete control elec- tronics including a printer control card. Requires one slot in the Altair 8800. * Pin-fed Optional. PRICES: Altair Line Printer with controller card $1,750 kit assembled, $1,975 Very Low Cost Terminal Teletype — Most Versatile The Altair VLCTis ideal for machine language programming. It converts a three digit octal code directly into an 8 digit binary code for transmission to the computer and then displays the binary output from the computer in a 3 digital octal format. This allows you to program in octal which is much easier than programming in binary. In addition, the VLCT is much more con- venient to work with than using the front panel switches of the Altair 8800. PRICES: VLCT $129 kit assembled, $169 NOTE: PIO interface module is required to connect VLCT to Altair 8800. With a built-in paper tape reader and punch and hard copy output, this ASR-33 Teletype is perhaps the most versatile of all low cost input/output devices. The ASR-33 Teletype prints 10 characters per second. It is a completely checked-out machine with standard 120 day warran- ty. PRICE: ASR-33 Teletype $1,500 NOTE: SIOC interface module is required to connect Teletype to Altair 8800. Christmas Time Payment Plan Altair Manuals IK Altair for Just $68 a Month! Jff «£? ? perat ° rs $ 7 - 50 ^ Altair 8800 Assembly $ 9.00 You can be the owner of an Altair 8800 with a 1.024 Altair 8800 Theory, Schematics $10.00 word memory module for just $68 a month. Eacli month Altair 680 Operators $ 7.50 it o ii \ j • 1 1 Altair 680 Assembly $ 7 50 tor a months you send in your payment and we send A1 _ . ,„„ T , c . . * , A u . 1 ., \., , , Altair 68 <> Theory, Schematics $10.00 you part of an Altair kit until you have the complete BASIC Language Documentation $10.00 system. The advantages of the plan are NO interest or Assembler. Monitor, Editor $ 7.50 financing charge, GUARANTEED price based on today's 88 00 4K Memory (includes Assembly.Theory & Schematics) . $ 5.00 price, and free, immediate membership to the Altair Users 88()0 2K Memor y $ 5.00 Group including subscription to Computer Notes. 5?™ I™emory f 5t)0 00OO blOA $ 5.00 Our terms are cash with order, BankAmericard, or Master 8800 SIOB $ 5.00 Charge. If you send in an early payment, we will make 8800 SIOC $ 5.00 an early shipment. By the same token, a late payment 880() P1 ° $ 5 - 00 will result in a late shipment. (After 60 days past due, mmra „'„ * *!'?? .. , 1 1 ., , . 11 . a 11 _ COM rhR " Operators $ 6.50 the balance ot the deal is cancelled. All payments must COMTER II Assembly $10 00 be made within 10 months). COMTER II Theory, Schematics $10.00 Total $544.00 (Retail price: Altair 8800 $439.00, Memory VLCT (Assembly, Operators, Theory) $ 5.00 $97.00. Postage and Handling $8.00- Alu,ir Line Printer Interface $ 5.00 total $544.00) Documentation Special One Altair USerS GrOUp Special Altair 8800 Operators. Assembly and Theory manuals plus BASIC Each month the Altair Users Group sponsors a software contest and Language manual (regularly $36.50). Now just $15.00. each month MITS gives away $130 in credit to the winners of this contest. At the end of the year, the author of the overall best program DoCllIllCFltcltioil S|> CC_ciI TwO will receive $1000 in credit. ,. . , ,„. „ . , . . _. , _ , , .__. Altair oho Operators. Assembly and Iheory manuals. Regularly $25. Membership to the Altair Users Group (the largest of its kind in the Now jusl $14 50 world) is free to Altair 8800 owners. However, even if you don't own an Altair. you can be an associate member for one year 'at the special ,ow Documentation Special Three pnee of $10 (regularly $30). * As a member of the Altair Users Group, you will be kept informed of BASIC Language manual. Package I (Assembler. Monitor. Editor), and Altair developments, software contests, and general computer news BASIC, language beginners text (My Computer Likes Me When I Speak through the monthly publication. Computer Notes. You will have access BASIC by Bob Albrecht). Regularly $l c ).50. Now just $12.50. to the Altair Software Library and you can communicate to other Altair users throughout the world. MITS/6328 Linn NE/ Albuquerque, NM 87108 Note: These specials expire on January 30. 1976. 505-265-7553 or 262-1951 Mail this special Altair Coupon Today! □ Enclosed is check for $ □ BankAmericard # □ or Master Charge # □ Altair 8800 □ Kit □ Assembled □ Fan □ Christmas Time Plan □ Expander Board □ Altair 680 □ Kit □ Assembled □ Fan □ I/O Sockets D Teletype □ Line Printer □ Comter II □ VLCT □ Disk □ Disk Drive Only □ Disk Controller Only □ Memory Module □ I/O Module list »n sepvmm- sHeet) Postage & Handling: Add $8 for Altair 8800 or Altair freight. Warranty: 90 days on parts for kits and 90 680 and $3 for any cards or peripherals if ordered days on parts and labor for assembled units. Prices, separately. Teletype and Line Printer shipped by collect specifications, and delivery subject to change. □ Documentation Special One □ Documentation Special Two □ Documentation Special Three □ Altair Users Group plus Computer Notes □ Please put me on your mailing list SHIP TO: BILLTO: MA*,* NAME : NAME : ADDRESS ADDRESS CITY CITY STATE & ZIP ; STATE & ZIP _ □ Please send Christmas Card to above address COMPANY (IF APPLICABLE) announcing gift and anticipated delivery. MITS/6328 Linn NE/Albuquerque, NM 87108 505-265-7553 or 262-1951 LIFE Line 3 by Carl Helmers Editor, BYTE Program design is a process which can be approached in a haphazard manner - or by a systematic exploration of what is needed to achieve the desired end. LIFE Line 2 in BYTE #2 began the systematic exploration of the Tree of LIFE by presenting information on the overall program design of LIFE, as well as the details of the GENERATION algorithm used to carry one generation of LIFE into the next. LIFE Line 3 continues the development of LIFE by a discussion of the KEYBOARD INTERPRETER procedure. This procedure monitors the "user inputs" of a keyboard, and uses the command keystrokes detected to dictate what LIFE will do. As in the exploration of the GENERATION algorithm, the presentation starts at the top and works downward. Fig. 1. Data concepts for LIFE program and graphics control. The variables XCOL, YROW, N and ENTRY are 8-bit "software registers" maintained as variables in the LIFE program. DISPLAY SCREEN IMAGE INCREMENT/ DECREMENT INPUTS FROM MOVECURS ROUTINE DEFAULT N= AT START OF KEYBOARD INTERPRETER Y CURSOR POSITION -Y" COMMAND GENERATION COUNT — N"COMMAND NCREMENT/DECREMENT X INPUTS FROM MOVECURS ROUTINE X"COMMAND ENTRY REGISTER DEFAULT ROUTINE ASCII NUMERIC- DATA DEFINES ENTRY SPECIAL LIFE CONTROL PANEL AND ASCII KEYBOARD Much of the challenge and fun of the LIFE application is the fact that it is best implemented with some form of interactive graphics. In the partition of the application presented in LIFE Line 2, one of the major pieces of the program is the KEYBOARD .INTERPRETER with its interactive graphics concepts. A good place to start the discussion of the KE YBOA RD.INTER- PRETER is the software block diagram of the interactive graphics system of LIFE. A Software Block Diagram? Yes! Strange as it may sound to hardware types, the ebb and flow of data in a program can be depicted in block diagrams. While Fig. 1 looks very much like an ordinary hardware block diagram of some system, it is descriptive of the plan of data flow in a program rather than actual wires. Fig. 1 is the programming equivalent in every respect of the hardware block diagram of some dedicated interactive graphics system. By retaining the system in software, LIFE is inherently more flexible than any hard-wired system could be. This block diagram illustrates the potential flow of data in LIFE as controlled through the KEYBOARD. INTERPRETER and its 48 Fig. 2. An overall view of the KEYBOARD_INTERPRETER. This is a flow chart of the control algorithm for the LIFE application's KEYBOARD_INTERPRETER routine. Fig. 3 shows the same informa- tion in the form of a procedure-oriented language. (KEYBOARD A INTERPRETER J subroutines. Data flows and changes in response to the several input commands defined for the program. As was pointed out in LIFE Line 1 , the fundamental tool of an interactive graphics application is a cursor which illustrates where the program thinks attention should be placed. This cursor is flashed on and off on the screen, and can be moved through appropriate commands of the user sent via a keyboard. The cursor concept is implemented in the LIFE program application by means of two "global" variables called XCOL and YROW. These are both 8-bit bytes of data. But since the maximum dimension value in either the X or Y directions of the display is 63 (i.e., 6 bits) only the low order 6 bits have significance for cursor control. At any point in time during the execution of LIFE, the variables YROW and XCOL retain the location of the cursor for KEYBOARD_INTER- PRETER'suse. Fig. 1 also shows arrows directed from XCOL and YROW to intersecting dotted lines in the LIFEBITS array. These two numbers together have 12 bits of significance. This is sufficient to uniquely specify one of the 4096 bits in the array using the utility subroutines LGET and LPUT to reference and change LIFEBITS, respectively. These routines are left to a later LIFE Line for their details. A "ghost copy" of LIFEBITS is also shown in back of the main copy in the drawing to emphasize the following point: Each bit of the internal LIFEBITS array maps directly into a corresponding bit in the refresh memory of the CRT display subsystem. This is an example of a common theme throughout the use and abuse of computer systems: Software systems map into corresponding hardware — and vice versa. This mapping is of course one to one, and is carried out by the DISPLAY subroutine whenever the internal data is changed. As with LGET and LPUT, DISPLAY is left to a future LIFE Line for its details. What Does it Take to Move the Cursor? Since the cursor position is maintained by the values of XCOL and YROW, the movement of the cursor is simplicity at its essence: To move the cursor, all you have to do is change the value of XCOL, YROW or both! The interactive graphics portion of KEYBOARD_INTER- PRETER has as its primary concern the various ways of OLDKEY - NULL GO= FALSE 5. DO UNTIL 6. DO WHILE **- OLDKEY -NULL TIMEOUT = LONGTIMEWAIT READ KEYBOARD CALL DECODE CALL REPEATWAIT (TIMEOUT) )--' CALL CURBLINK I Loop actively blinks the cursor while waiting 3r non-null key code . . . This branch is not taken n case of repeated key.) YES TIMEOUT = :Y ^S~ SHORTIMEWAIT NO Time out between repeated operations starts ttfl equal to LONGTIMEWAIT. set to SHORTIMEWAIT after the second time delay . 49 The simultaneous advantage and disadvantage of the multiple conditional test method of decoding: It is a plodding (but straight- forward) approach which squanders memory resources. changing the values of these two crucial variables — while possibly leaving a trail of changed data points in LIFEBITS. Fig. 1 illustrates several of these changes — — To move the cursor up, YROW is incremented. — To move the cursor down, YROW is decremented. — To move the cursor left, XCOL is decremented. — To move the cursor right, XCOL is incremented. — To completely redefine the column of the cursor, the ENTRY register is transferred to XCOL. — To completely redefine the row of the cursor, the ENTRY register is transferred to YROW. KEYBOARD_INTER- PRETER performs these actions at the whim of the user via commands entered at the keyboards of the system - with the flashing cursor mark on the screen showing the results. The ENTRY Register In order to provide a means of entering 8-bit integers into the program for control purposes, the software of KEYBOARD„ INTERPRETER maintains a numeric input area called ENTRY. Whenever an ASCII character is sent to the program which cannot be decoded by DECODE's COMMAND table, the last resort is to call DEFAULT. In DEFAULT, the recover assumption is to interpret the unknown command as a numeric digit (0 to 9) and push it into ENTRY. A routine in DEFAULT performs a BCD to binary conversion of the ASCII character after it has been trimmed to the range to 9. Later, when the user wants to define XCOL, YROW or N, the commands X, Y and N respectively are used to transfer ENTRY to one of the other registers, after which ENTRY is set to in preparation for re-use. It is important to emphasize that ENTRY is a binary number. When decimal digits are entered by the user, the input routines convert the digits into the appropriate binary number and decimally shift the significance of the previous value. The N Register In LIFE Line 2, the LIFE program given in Fig. 3 references a variable called N. This N is used to control the number of times GENERATION is called. N, like XCOL and YROW, is a "software register" in the LIFE program which may be set by a user command. The "N" command is what is used to transfer the ENTRY value to N for use in controlling the Fig. 3. The KEYBOARDJN TERPRETER routine's overall flow, expressed in a procedure-oriented language. Note that the interpreta- tion of the "DO WHILE" differs from a "DO UNTIL" - the former has its test prior to execution of the loop statements, and the latter has its test at the end of the loop. Nesting of the DO groups is indicated by the indentation of lines. 1 2 3 4 5 6 7 8 9 10 11 12 13 11 15 16 17 18 KEYBOARD. INTERPRETER: PROCEDURE; OLDKEY - NULL. GO - FALSE; DO UNTIL GO = TRUE: I' LOOP UNTIL DONE WITH INPUTS ' DO WHILE NOTREADY(KEYBOARD) ' TRUE; CALL CURBLINK; OLDKEY ■ NULL, TIMEOUT LONGWAIT; END; KEY = INPUT(KEYBOARD); CALL DECODE; CALL REPEATWAITITIMEOUTI; IF KEY - OLDKEY THEN TIMEOUT SHORTIMEWAIT; OLDKEY = KEY; END; CLOSE KEYBOARD INTERPRETER; /• THIS LITTLE LOOP WAITS '/ /• FOR A KEYSTROKE AND BLINKS ■ /■ THE CURSOR ALL THE WHILE '/ /• WHEN READY, READ KEYBOARD /■ EXECUTE COMMAND V /■ DON'T LOOK TOO SOON '/ /• SHORT DELAY AFTER FIRST V /' TWO OPERATIONS DONE •/ Subroutines Referenced by KEYBOARD INTERPRETER: NOTREADY = a function subroutine (also referenced by INPUT) which is used to control an idle loop. It returns FALSE as its value if the selected device (in this ease, KEYBOARD) is ready for input, and it returns TRUE as its value otherwise. CURBLINK = a subroutine which "blinks" the cursor on for a fixed period of time, followed by a fixed period of "off" time. Since it must be called each time a single blink is required, this implements the "active control" feature mentioned in LIFE Line 1. INPUT = a function subroutine which returns the current input data value for the selected device (in this case, KEYBOARD). INPUT has its own wait loop referencing NOTREADY - which for KEYBOARD_ INTERPRETER is redundant, but is not redundant in general. DECODE = the major subroutine of KEYBOARD INTERPRETER. This routine analyzes KEY based upon tables and the previous inputs to the program from the operator. Using this analysis it will select the appropriate subroutine to execute. These "command subroutines" will in turn affect LIFE program data and the course of the LIFE program's execution. REPEATWAIT = a subroutine designed to call CURBLINK a number of times specified by TIMEOUT. This implements a delay between multiple responses to the same key held down continuously. Data (8-bit bytes) used locally by KEYBOARD, INTER- PRETER: OLDKEY = 8-bit value of the last previous keystroke. NULL = 8-bit value of a null key pattern as read from the keyboard. TIMEOUT = 8-bit value of the current repeat key time delay. SHORTIMEWAIT = the timeout parameter used after the first delay in a multiple input of the same key. This specifies the rate of rapid motion of the cursor under manual control. LONGTIME WAIT = the value of the timeout parameter used for the first delay following a key entry. A longer wait is required at first to avoid false duplication of keystrokes for heavy-handed players of the game. Data (8-bit bytes) used by KEYBOARD _INTERPRETER and shared with the whole program. See Table II for explanations. GO, DONE, TRUE, FALSE, KEYBOARD, COMMAND, KEY 50 extent of the next run. Since this application uses 8-bit data, the limit is 255 generations of LIFE at present. Figuring Out What the User Said The K E YBOARD_ INTERPRETER routine serves the function of controlling the input of information to these software register and to the LIFEBITS grid. The routine itself is a loop which executes over and over until the user is ready to run the GENERATION algorithm for one or more generations. The KEYBOARD. INTERPRETER terminates for one cycle of LIFE when the user inputs a "G" control command which is interpreted semantically as "GO generate N generations". The flow chart of the KE YBOARD_l NTER- PRETER logic is illustrated in Fig. 2, with the equivalent procedure-oriented language version shown in Fig. 3 as a detailed reference. In Fig. 2, line numbers are provided for comparison to Fig. 3. Execution of the KEYBOARD_INTER- PRETER begins with some initialization statements. The values of GO and OLDKEY are set at the start of execution (lines 3 and 4). These values will be changed during execution of the KE YBOA RD_INTER- PRETER based upon input data. OLDKEY is used to detect duplications of keyboard input which occur when a key is held down for continuous operations. After a given KEY is held down continuously for two operations, the repetition goes into a high speed mode with SHORTIMEWAIT controlling the delay between operations. GO is the control variable which is used to govern whether or not the loop is to continue — it is initialized to FALSE and will be changed to TRUE when the "G" user command is decoded. Programs Are the Willing Servants of the Noble User? Interaction of programmed computers with human beings is often a waiting game. This waiting game is aptly illustrated in the loop which checks for user input keystrokes at lines 6 to 10 of the KEYBOARD .INTERPRETER routine. The function NOTREADY (KEYBOARD) is a notational convention used to indicate a test for the keyboard ready condition. Like a ready and willing servant, the computer program keeps marking time in this loop until the user — you or I - has given it a character to digest. Two statements are included in this loop for the purpose of coordinating multiple keystroke conditions: Setting OLDKEY = NULL is used to re-establish a null history if the program ever has to wait (it never waits when keys are Table I. ASCII Command encoding for the LIFE application. This is an initial specification of the command codes used to control the KEYBOARDINTERPRETER routine's effect. The command table locations go up by three as in Fig. 4. No addresses for the command subroutines are given yet — these will be filled in when the program is compiled for your computer. Command table locations and command characters are given as hexadecimal numbers. Command Table Command Location Character 00 xx 03 47 ASCII Command Key Subroutine ??? DEFAULT G RUN Meaning of the Command (its 'semantics") The first table position is the "default" routine position, which is called when no other matching key is found in the table search. The "run" command which sets a flag called GO in order to end the KEYBOARD_ll\ITERPRETER and have LIFE call the GENERATION routine. 06 09 0C OF 12 15 18 IB 49 53 52 58 59 4E 43 45 I INITIALIZE SAVELIFE RESTORELIFE SETXLOC SETYLOC N SETNGEN CLEARS LIFEDONE The "initialize" command to set up the screen with predetermined patterns selected by additional keystrokes. The "save" command to dump the current screen content onto a waiting audio cassette or other mass storage device. The "restore" command to recover a screen pattern previously saved by "S". The "set X" command to explicitly set the horizontal cursor location, XCOL. The "set Y" command to explicitly set the vertical cursor location, YROW. The "set N" command to explicitly set the generation count for subsequent execution with the "G" command. The "clear screen" command to wipe out all data and place the cursor at the center. CLEARS requires confirmation with a second S key stroke to avoid accidental clears. The "done" command is an E followed by an L (for End Life.) The second character confirmation is checked by LIFEDONE. Note that the ASCII characters to 9 are used to define the "current input" maintained by software in ENTRY. ENTRY may then be transferred to N, XCOL, or YROW by the N, X and Y commands respectively. 51 held down continuously). TIMEOUT = LONGTIME- WAIT re-establishes a longish debounce period between key interpretations following a series of continuous inputs. The program of course thinks that if a key is not ready upon restarting the main loop at line 6 it could not possibly be a repeat. While idling and waiting for your interactive whims, the computer program is not completely devoid of useful work. It calls CURBLINK once each time around the wait loop in order to flash the cursor actively on the screen. Finally, after some time of unspecified duration, you make up your mind to input a key. This has one major effect upon the program: The next time around the loop at the test of the WHILE condition, a result of FALSE ends the loop. Execution then flows from the DO WHILE (line 6) to line 11 where the KEY is read from the waiting keyboard device by a subroutine called INPUT. With KEY defined, DECODE is the next item on the agenda. DECODE is one of the major subroutines of KE YBOARD_INTE.R- PRETER, a routine which takes KEY and compares it to a COMMAND table. The result of the COMMAND table search is execution of a "command subroutine" if a match is made, or execution of a DEFAULT routine if no match to KEY is found. Upon return to KEYBOARD_INTER- PRETER (all subroutines by nature return to the caller except in very rare cases), the flow of control reaches the REPEATWAIT call using the current value of TIMEOUT. During normal execution of single isolated commands, the TIMEOUT value is LONGTIMEWAIT - which might be chosen to be from 0.1 to 0.5 seconds. This TIMEOUT sets the minimum time between the first 3 keystrokes of a repeated sequence. But, after two long delays have been executed, the match of OLDKEY = KEY is detected at line 14 and TIMEOUT is changed to SHORTIMEWAIT allowing a speedy repeated motion case. SHORTIMEWAIT might be chosen in the 0.05 to 0.1 second range for rapid motion. The values of these two motion control constants are left unchosen for now, and can be figured out as binary integers to be used in REPEATWAIT when details of the CPU and REPEATWAIT routine are filled in. Note that if fast operation is desired immediately after the second operation of a repeated sequence, then line 1 3 of Fig. 3 should be moved to a location between lines 1 5 and 16. In order to control the repeat logic, the statement OLDKEY=KEY is executed at line 16 so that the last input will be retained for comparison purposes the next time around. The KEYBOARD. INTERPRETER routine finishes up with the CLOSE statement of LIFE line 18, which stands for the end of the routine and return to its caller. There is one and only one caller of this routine, the LIFE program itself, illustrated in Fig. 3 of LIFE Line #2. It's All in DECODE of the LIFE Program When giving the details of the KEYBOARD_INTER- PRETER logic, the principle While idling and waiting for your interactive whims, the computer is not com- pletely devoid of useful work. It calls CURBLINK once each time around the wait loop in order to seductively flash its cursor on the screen. Fig. 4. Decoding by multiple conditional tests. This method of decoding keystrokes and activating routines in software is most efficient when a small number of possible commands is involved. 52 Fig. 5. Typical code for a single conditional test in the scheme of Fig. 4. The example here is using Motorola 6800 system mnemonics. This example assumes accumulator A is set up with the character being decoded. of keeping the program design locally simple results in a CALL DECODE at line 12. Whenever some subroutine is left unspecified except for its inputs (KEY for DECODE) and its outputs (a command subroutine's execution), sooner or later the details must be filled in. In designing a DECODE algorithm to fill in this set of details, there are numerous alternatives. For high order language aficionados, something called a "computed GO TO" (FORTRAN) or "DO CASE" (PL/1 family languages such as XPL or PL/M) would suffice following a table search. However, for this particular application, a slightly lower level approach is justified to conserve memory. Two major alternatives come to mind as possible ways to map an input KEY value into the execution of a selected subroutine. The simplest (least elaborate) "straightforward" approach is the method of multiple conditional tests. This is illustrated schematically in Fig. 4's flow chart, and in a concrete form in Fig. 5's example of a segment of the typical conditional test. In this approach, each possible command code is tested in turn by the routine. Eventually, all the explicit possibilities will have been exhausted if no match is found. Then, if "none of the above" match the KEY input, a DEFAULT routine is called. The main advantage of this approach is also its disadvantage: It is a plodding and straightforward approach which squanders memory. While the code's intent is obvious, it requires — in the example of Fig. 5 — a total of 8 bytes per test. There should be a better way — comparisons and branches are repeated in this method. The segment of generated code and its corresponding procedure- oriented language version in Fig. 5 shows four instructions which are repeated over and over but with varying data (the character being compared and the address of the subroutine). Why not put the instructions in only once and tabulate the variable data? There might be a saving of memory if this table driven approach is used instead. Fig. 6 illustrates the concept of an alternative structure, the "command table," which will result in a lower memory requirement once the number of commands to be tested exceeds some break even point. In this concept, the changing data for each test is stored in the table, and the program to go along with it uses a looping technique to scan that table. The changing data for tests comprises: — The command character. This is the keyboard code which is matched against the actual KEY input. — The command subroutine. This is the address of the subroutine which will be called if KEY matches the corresponding command character. The table is organized in 3-byte groups consisting of a command character followed by its subroutine address. Note that on first inspection, this form of DECODE requires only 3 bytes of storage per test versus the 8 bytes in the example of Fig. Byl es Mnemonic Comment 2 CMPA # 'G Compare A to literal 2 BNE *+4 Branch around JSR and RTS 3 JSR GROUTINE Call the G subroutine 1 RTS Return from decoder rather than continue the testing 8 = Total number of bytes per test. This is the "generated code" procedure-oriented language of the following statements in the used for LIFE Line examples: IF KEY = 'G' THEN DO; /* HAVE MADE A MATCH */ CALL GROUTINE; RETURN; /* FROM DECODE COMPLETELY */ END; Relative Address 3(n+1l Default Address Address of "G" Command Subroutine Address of "H" Command Subroutine Fig. 6. The Command Table Concept. By storing the character (keystroke) being decoded, followed by the address of its routine, only three bytes need be used for each routine which could be decoded. Allowing for the overhead of a longer decode algorithm (specified once), the command table method will prove more compact when the number of commands get larger than four or five. 53 Fig. 7. The Command Table DECODE routine specified in a procedure oriented language. 1 DECODE: 2 PROCEDURE; /• TO FIGURE OUTWHAT USER SAID »/ 3 /• COME HERE WITH THE KEY TO THE COMMAND '/ 4 DO FOR I = 3 TO LENGTH(COMMAND) BY 3; /* SCAN TABLE '/ 5 IF KEY = COMMAND(I) THEN 6 DO. /' WOW!! I GOT A MATCH I GOT A MATCH! V 7 I = 1 + 1;/* POINT TO ADDRESS ENTRY */ 8 CALL CALLXICOMMAND(II); 9 /- NOTATION FOR CALL OF SUBROUTINE. INDEXED •/ 10 RETURN; 11 /* THIS FORCES EXIT FROM DECODE '/ 12 END; 13 /' ONLY GET HERE IF NO MATCH IN TABLE »/ 14 CALLCALLX(COMMANDd));/ - CALL DEFAULT FROM TABLE »/ 15 END; 16 CLOSE DECODE; Data (8-bit bytes) used locally by DECODE: I = temporary used for loop control and indexing. Data (8-bit bytes) used by DECODE but shared with the whole program. For details see Table II . COMMAND, KEY Subroutines referenced by DECODE: DECODE does not use any "real" subroutines, but does use the following two notational conventions which look like subroutines. LENGTH(COMMAND) stands for the length (in bytes) of the COMMAND table. When you know what it is, you put in the value. CALLX(X) is used to denote using the two bytes starting at the address X as the address of a subroutine to be called. This is an indexed subroutine call effectively. For a Motorola 6800 CPU, this would be performed by an LDX instruction indexed off the COMMAND table position, followed by a JSR instruction with the indexed addressing mode. 5. For a 10 command table, this would be a 50 byte saving at first inspection. However, the 50-byte figure does not take into account the longer looping routine required to scan the table and indirectly jump when a match is found. But for 10 commands (the number found in Table I) this 50 byte saving potential goes a long way. I expect the actual DECODE routine of the table driven variety to be considerably less than 50 bytes in length when it is generated for the 6800 system instruction set used as the straw-man in Fig, 5. I'll leave the final conclusion on that to a later LIFE Line. There is an additional advantage to be obtained from the table driven method. This is an advantage which concerns some of the finer points of programming: The table driven method results in "pure code" in which potentially variable data is completely segregated off in the table. This achieves an often desirable end of separating data from instructions. In the multiple conditional test version, the data of the DECODE is embedded right in the instruction stream, both as the literal value of the character being tested and as the address of the routine being selected. If I want to modify the multiple conditional test version, I must certainly recompile or reassemble the whole routine (a pain in small systems work). In contrast, to modify the table driven version, I only have to alter the table itself, and the variable which specifies the table's length. But this is a minor point in addition to the major memory conservation argument for the table driven approach. The actual algorithm for DECODE is shown in a procedure-oriented language in Fig. 7. The scan of the table is a DO FOR loop with Notes on Notation: Concerning Indentation: The listings of procedures for the LIFE program make use of an indentation convention to help show the structure of the routines. The significance of the indentation is that it shows the opening and closing of various local software constructions and in so doing helps convey the meaning of the program to human readers. Note how the statements from line 7 to line 11 of DECODE in Fig. 7 are indented one level compared to the DO (line 6) and END (line 12) statements. This indentation shows that lines 7 to 11 are part of the DO . . . END construction which is executed if the test on line 5 gives a true result. The notation "/*" followed by arbitary remarks and then a "*/" is the "comments" convention used in these examples. This convention is stolen from the PL/1 family of languages. Concerning names of variables: With each procedure specified in LIFE Line, data is separated into two categories: Local data is used only within the procedure question. Local data may have a name which duplicates names used in other procedures, but is always qualified by its local nature. Thus "I" in GENERATION (Fig. 6, LIFE Line 2) is a different data location in memory than the -I" in DECODE (Fig. 7, LIFE Line 3). Data shared with the rest of the program, which is often called global data in programming terminology, is in contrast defined universally for LIFE. Global data is summarized for LIFE in Table II. Thus whenever KEY is referenced (as in KEYBOARD_INTERPRETER or in MOVECURS) the same data is intended, since these have been classified as shared or global in the notes accompanying the program listings. 54 the index, I, running from 3 (the first entry is reserved for the default) to the length of the table by 3. When a match is found, the 1 6-bit address in the table is used for an indirect subroutine call (lines 7 and 8). For a Motorola 6800 system, this would be accomplished by an indexed JSR instruction after loading the index register from the table. When the selected command subroutine returns to DECODE (as would any well structured subroutine in the same circumstance), the RETURN statement is executed causing an exit from DECODE and resumption of the KEYBOARD^ INTERPRETER at the calling point. If no match is found, the loop eventually runs out and line 14 of Fig. 7 is reached, where the DEFAULT routine is called. This is shown notationally in a general purpose form with reference to the command table, but in generating the code for the statement of line 1 4, a simple call to DEFAULT might be substituted. (If the generality of the DECODE routine is to be preserved for possible use with other command tables, this optimization would not be possible.) What about data for the COMMAND table? Table I provides a preliminary answer to this question by giving a list of command table entries including relative location, the corresponding character code, the ASCII key which invokes the command, the name of the subroutine and a verbal description of the subroutine. This table will be used as the basis for creating a detailed data table when the actual programs of LIFE are generated for a particular computer in a future LIFE Line. For now, Table I serves to list the areas which remain to be covered in the discussion of the KEYBOARD_INTER- PRETER and all its subroutines. LIFE Line 4 will continue the presentation of the KEYBOARD^INTER- PRETER portion of the LIFE program. To fill out the remaining portion of the Tree of LIFE, the next installment includes the integration of graphics control commands into the KEYBOARD. INTERPRETER and the first hardware details of LIFE — a simple circuit which combines an ASCII keyboard input with the special purpose controls for an interactive cursor. ■ Does Anyone Know What Happened to Robert T. Wainwright? This series of articles inadvertantly duplicated the name of Robert T. Wainwright's LIFELINE newsletter, published through 1973. Thanks to Bob Albrecht of People's Computer Co. for sending us his copy of LIFELINE'S last issue. Does anyone know where Mr. Wainwright is now (he's no longer at the address given by Charles A. Dunning Jr. in the Letters column), and is LIFELINE still being published? Table II. Global Data. Data which is shared by an entire program or application is often called "global". The word global is used to indicate the widespread effects of such data in the program's execution. Many procedures will alter and change such data. This table summarizes the global data variables of the LIFE application as used in procedures given in LIFE Lines #2 and Jf3. COMMAND = the table of commands interpreted by DECODE, containing the ASCII codes of command keys and the addresses of the appropriate command subroutine. The format of this table is illustrated in Fig. 6. The information content, in preliminary form, is found in Table I. DONE = the variable used to control continued execution of the main LIFE routine (see LIFE Line #2, Fig. 3). ENTRY = the entry register used to receive numeric ASCII digits, after weighting the previous value in a BCD fashion. While the entry to ENTRY of new digits is done in a BCD manner (multiplying by 1 then adding the digit's value) the content of ENTRY is a binary number of 8-bit precision with values to 255 and is thus not itself BCD. (BCD = "binary coded decimal.") FALSE = the value "0" (00 hex, 000 octal, 00000000 binary). This name is used to indicate the software equivalent of a hardware gate input wired to logical zero. GO = the Hag (value is TRUE or FALSE) which controls continued execution of KEYBOARD_INTERPRETER. KEY = the 8-bit data area which receives keyboard inputs. KEYBOARD = the logical unit number of the keyboard I/O device. This is a bit pattern which specifies the device one is talking to. LIFEBITS = the object of the whole exercise - an array of 64 by 64 bits stored as 64 by 8 bytes. N = the variable used to control the number of generations to be evolved by LIFE before returning to KEYBOARDINTERPRETER graphics control. NCMIN = current minimum column index of live cells. NCOLMAX = maximum column index of live cells for active area optimization. NCOLMIN = minimum column index of live cells for active area optimization. NROWMAX = maximum row index of live cells for active area optimization. NROWMIN = minimum row index of live cells for active area optimization. NRMAX = current maximum row index of live cells. NRMIN = current minimum row index of live cells. TEMP = 2 by 8 array of bytes containing two 64-bit rows of cells. THAT = previous line copy index to TEMP used in GENERATION (see LIFE Line #2, Fig. 6). THAT should always have a value of 1 or 0, opposite of TFI1S. THIS = current line copy index to TEMP used in GENERATION (see LIFE Line -#2, Fig. 6). THIS should always have a value of or 1. TRUE = the value "255" (FF hex, 377 octal, 11111111 binary). This name is used to indicate the software equivalent of a hardware gate input wired to logical one. XCOL = the current cursor position in the horizontal (column) direction. NCMAX = current maximum column index of live cells. YROW = the current cursor position in the vertical (row) direction. Microcomputer A new six-volume programmed learning course from lasis tells you EVERYTHING about what microcomputers are and how you can design and implement a microprocessor-based system. VOL V _,, ASSEMBLERS AND PROTOTYPING SYSTEMS fe^K asc ■web*!*** MOX-W Since the transistor was invented, no single electronics innovation has made such an impact as the micro- computer. Powered by tiny semiconductor chips containing computing elements with the same powers and functions previously found only in large scale digital computers, these dedicated microcomputer systems are now being applied to literally thousands of applications. Microcomputers are automating assembly lines, providing the heart of sophis- ticated electronic games, making "intelligent" "~~ " r •^ " i computer peripherals even smarter, and are going so far as streamlining the operations of the fastest food chains. This revolution is occuring because micro- computers are very inexpensive— costing as little as $30 in production volume— easy to implement into a system, and significantly reduce the time and cost of product development. But there has been one serious drawback to this exploding industry: Training materials and courses in the basics of microcomputer technology have been virtually non-existent, and the various published manuals and texts have been undecipherable to those not already intimately familiar with ultra-sophisticated logic design. Once a designer has the hang of it, microcomputer design is a snap. But without the fundamentals— never before available in such a readable, understandable and simplified format — microcomputer design has been unbelievably difficult. The comprehensive, step-by-step six- volume Programmed Learning Course on Microcomputers from lasis makes the unbelievably difficult almost ridiculously simple. The authors of these texts have been involved on a professional level in the micro- computer industry since it became an industry. Their direct, first-hand experience in the whys, hows, wherefores and potentials of microcomputers THE % 4-BlT M ' CR °COM^ I V *% ^ "'^A„ •■*!» ^ lasis Texts: 1. Binary Arithmetic 2. Microcomputer Architecture 3. The 4-Bit Microcomputer 4. The 8-Bit Microcomputer 5. Assemblers and Prototyping Systems 6. 8-Bit Assemblers and Compilers Finally, you can get a comprehensive training course on microcomputers that puts all the hard-to-get information at your fingertips in an easy-to-read, easy-to-understand and even easier-to-implement manner. You can get it here . . . now. ■■ m m m bi design is a snap, have made this six-volume collection the most valuable and meaningful series ever published on microcomputer design. The books combine the most effective methods of programmed instruction with the entire gamut of essential information vital to the designer of a micro-based system. You begin with the ABC's of microcomputers and go through a virtual post-doctoral course . . . and the unique, self-testing programmed learning lasis course enables you to understand and absorb every bit of the information every step of the way through the six volumes. .**<: The lasis course gives you more than 700 pages of detailed, illustrated microcomputer information— including more than 1,700 self-tests you use to evaluate your progress- plus programming and design aids that make the design of practical systems very, very easy for you. So OB *rv I I ■' ■ "... 89 90 !>.<>.<; I'm t'v.i ,., , - '" ' ■■: . I : ■r ;;,„ ««>™ Specific details are provided on four of the indus- try's most versatile microcomputers— the 4004, 4040, 8008 and 8080 from Intel Corporation — but the basic design information will apply to any and all micro- processors. The six volumes you receive with the course are: 1) BINARY ARITHMETIC; 2) MICROCOMPUTER ARCHITECTURE; 3) THE 4-BIT MICROCOMPUTER; 4) THE 8-BIT MICROCOMPUTER; 5) ASSEMBLERS AND PROTOTYPING SYSTEMS; and 6) 8-BIT ASSEMBLERS AND COM- PILERS. Plus, this detailed course provides you with two programming , . j- j pads and two simplified design aids so you may quickly and easily / ; develop both 4-bit and 8-bit microcomputer systems. Use the coupon below to order your course from lasis, Inc., 110 First St., Suite b Los Altos, California 94022 Special introductory price on this remarkable new course is just $99.50 . . . and if it isn't everything we say it is or even more, return it within 15 days for a full refund! iasis inc. "iff* Order before Nov. 30, and you'll save a full $25 on the Programmed Learning Course ^t^ on Microcomputers! In addition, all introductory orders will include a bonus seventh ^ volume, the Microcomputer Applications Handbook! (After Nov. 30, 1 975 price for the complete lasis course will be $1 24.50, plus $2.50 for postage and handling.) You can use your BankAmericard or Master Charge, too! □ CHARGE MY ORDER TO THE CREDIT CARD NO. BELOW: BankAmericard No. Master Charge No. Here's my check or money order (no cash, please). RUSH my 6-volume Programmed Learning Course on Microcomputers, including the bonus Applications Handbook and programming aids, to the address below. HURRY! □ Send one complete course for $99.50 in U. S. funds. My payment is attached. (California residents, please add $5.97 State sales tax.) □ Send me information by return mail on quantity discounts. ALLOW 15 DAYS FOR DELIVERY IN THE U. S. AND 6 WEEKS FOR DELIVERY OUTSIDE THE UNITED STATES. Mail today to: lasis, 110 First St. Suite b Los Altos, California 94022 iasis inc. For Master Charge, add 4-digit number imme- diately above your name on the card. It is HERE'S MY SIGNATURE. Crnd it card expiration date_ NAME (Sign here if credit card charge) ADDRESS . ORGANIZATION . CITY/STATE/ZIP- Flip Flops Exposed by William E. Browning 5J6 N. 95th E. Ave. Tulsa OK 74155 One of the important building blocks in working with transistor-transistor logic is the flip flop. It is important to understand this building block if you desire to use it in projects of your own. The two most common types of flip flops are known as the JK flip flop and the D flip flop. JK Flip Flop The JK flip flop has four or five inputs and one or two outputs. The input pins are labeled J, K, CLOCK, CLEAR and PRESET, and the output pins are labeled Q and Q which is often pronounced as "Q bar" or "not Q". A typical block diagram of a JK flip flop is shown in Fig. 1 . The outputs (Q and Q) can be in one of two states: High (logic 1) or low (logic 0). In general, if the Q output is high then the Q output is low, and vice-versa, if the Q output is low then the Q output is high. We will often refer to the Q output only since we know that Q will be the opposite. So if we say that the output is high it means that Q is high and Q is low. However, this is not always so; on some flip flops you may find a Q output only, and, as you will see further below, both outputs may be high or low under specific conditions. Asynchronous Inputs Now that we know about the output states, let's discuss the inputs to give us the desired outputs. The PRESET and CLEAR pins are known as asynchronous inputs. Asynchronous means that these inputs do not depend upon the timing derived from the clock pulses. With almost all flip flops a low PRESET will take Q to high, and a low CLEAR will take the Q to high. With both PRESET and_ CLEAR low both Q and Q will be high. This is the only time when Q and Q are not opposite from each other. If both PRESET and CLEAR are high, then the control of the output is given to the J, K and CLOCK inputs. The relationship between the asynchronous inputs and the output is shown in the truth table of Fig. 2. (INPUTS) 6 CLEAR J Q (OUTPUTS) CLOCK K Q PRESET f Fig. 1. The JK flip flop block diagram. 58 PRESET CLEAR Q Q L L H H L H H L H L L H H H NO CHANGE Fig. 2. Truth table of a JK flip flop responding to preset and clear. Synchronous Inputs The J and K inputs are synchronous inputs. Synchronous means that they depend on the CLOCK for operation. For most JK flip flops a simple set of rules apply to the synchronous inputs, but not all flip flops are standard. There are several variations on the timing when the chip accepts inputs and when the output changes. The most c ommon input-output relation is known as the rising-edge triggered flip flop. The rising-edge triggered flip flop derives its name from the fact that it changes its output states only when the CLOCK level rises from low to high. Of course, the output states depend on the configuration of the J and K inputs. Fig. 3 illustrates the changes of the Q pin depending on the levels on the J and K pins: When both J and K are low, Q does not change; when both are high, Q changes into its opposite state; with J being low, and K being high, Q assumes a low level, and when J is high, but K is low, Q will take on a high level. Remember, though, that this change can happen only if the CLOCK input rises from low to high, and, as was shown in conjunction with Fig. 2, when both PRESET and CLEAR are high. The less frequent type of input-output relation is known as the falling-edge triggered flip flop. This flip flop resembles the first, except that the output changes to the condition selected by the J and K inputs when the CLOCK level falls from high to low. Everything else remains the same. It is easy to change the operation of a falling-edge triggered flip flop to that of a rising-edge triggered flip flop. All that needs to be done is to invert the input to the CLOCK. The inverter shown in Fig. 4 changes a high level to a low level, and vice versa; a rising-edge triggered flip flop can be changed to a Fig. 4. Inverting the clock input converts rising edge-triggered operation into negative edge- triggered operation and vice versa. I OUTPUT rOUTPUT ["OUTPUT CHANGES CHANGES CHANGES CLOCK PULSE ^J V \ \ INPUT NEW INPUT NEW INPUT ACCEPTED ACCEPTED ACCEPTED Fig. 5. Timing of a negative clock pulse master/slave flip flop. INPUT NEW INPUT ACCEPTED ACCEPTED V ^ NEW INPUT ACCEPTED CLOCK PULSE J~L J~L OUTPUT CHANGES Fig. 6. Timing of a positive clock pulse master/slave flip flop. Loiitpiit V. -OUTPUT CHANGES OUTPUT CHANGES »n t„ + 1 J K Q L L L H L H L H H H Fig. 3. Truth table of a JK flip flop for synchronous (clocked) operation. falling-edge triggered flip flop, and vice versa, by means of the inverter. A third type of input is known as the negative clock pulse master/slave flip flop. With this flip flop the inputs are applied to the J and K pins when CLOCK goes low and change their outputs after the rising edge of the clock pulse (see Fig. 5). The clock pulses should be made as short as possible and the time between clock pulses as long as possible. This will i n c re ase immunity to alternating current noise and accommodate all ripple delay between clock pulses. A fourth type of input is the positive clock pulse master/slave flip flop. This flip flop accepts inputs when CLOCK goes high and changes output when CLOCK goes low (see Fig. 6). The pulses should be made as short as possible for the above mentioned reasons. 59 + 5 PRESET CLOCK Ik 13 12 ill 10 9 8 rt > P K Q CLOCK J Q C L, > V T 2 3 4 5 6 7 GND Fig. 7. Pinout of the 7472 IC, a positive clock pulse master/slave flip flop. (Top view ) + 5 V PRESET CLOCK K2 Kl K# 1,4 13 12 II 10 9 8 t 1 ) oN ) P K Q CLOCK J Q c j\ v N / V J \ > T 2 3 4 5 6 7 N.C. CLEAR J I J2 J* GND Fig. 8. Pinout of the 7470 IC, a positive edge triggered flip flop. (Top view) l A 14 Q A 13 C A 12 GND In K B 10 2 B 9 C B 8 r -o O K3 3 "3 O i£ o lo o 3 * O -3 <-> > 1 1 ^ T 1 2 3 |4 5 6 7 CL0CK A CLEAR A K A V cc CLOCKg CLEARg J B + 5V Fig. 9. Pinout of the 7473 IC, a dual positive clock pulse master/slave flip flop. (Top view ) Variations on the Four Flip Flops One of the confusing aspects with flip flops is that they differ in the logic controlling the J and l< inputs. Some have AND/OR logic circuits accepting several distinct inputs, and others have an inverter before the J or K inputs. If wc look at some diagrams of flip flop ICs, their operation will be easier to understand. The 7472 in Fig. 7 is a single JK flip flop of the positive pulse master/slave type. The 7472 uses gates on the J and K inputs. In order to get a high level on the J input of the flip flop a high on all three J inputs of the IC (pins 3, 4 and 5) and the clock (pin 12) is required. In a similar manner, a high on the K input of the flip flop is obtained with a high on all three K pins (pins 9, 10 and 11) and the clock of the IC. If you have only one J input, connect all three J pins together, or connect two of the J inputs to high, and use the remaining input for the data input. The same holds true for the K inputs. The 7470, shown in Fig. 8, is a single JK flip flop of the positive-edge triggered type. The 7470 has identical gates and inverters on the J and K inputs. For example, to get a high level on the J input of the flip flop a high on J1 and J2 (pins 3 and 4) and a low on J* (pin 5) must be received. A low level on pin 5 is inverted to a high on the input to the gate. If you do not need J* or K*, connect them to ground. If you do not need J1, J 2, K1 or K2 connect them to high. The 7473 IC is a dual JK flip flop of the positive pulse master/slave type. Fig. 9 shows that this IC does not use gating on the J and K inputs. The two flip flops operate separately from each other having only the +5 volt Vcc and ground in common with each other. You may also have noticed that Vcc is on pin 4 and ground on pin 11. This is not the same as on most 7400 ICs which have Vcc on pin 14 and ground on pin 7. So check your connections before you apply power. There are no PRESET inputs to the chip, in order to allow a 14 pin package. If you do need the PRESET on a dual JK flip flop, use the 7476 available in a 16 pin package. It is shown in Fig. 10. It has independent CLEAR and PRESET pins, whereas in the 74H78 of Fig. 11 the CLOCK and PRESET pins, respectively, are connected. The 74H78 comes in a 14 pin package. In many circuits the same clock operates many flip flops and several flip flops are cleared at the same time. The 74H78 is well suited for these needs because it saves on the number of external connections, saves on the size of the IC package, and the number of pins. D Flip Flop Let's make one small modification to the JK flip flop: An inverter connects the K input to the J input as shown in Fig. 12. If J is high then K will be low, and if J is low, K will be high. Since there is only one synchronous input instead of the two, let's call it the data input or D input. Some flip flops have this modification built into an IC and are referred to as D flip flops. A typical block diagram of a D flip flop is shown in Fig. 1 3. The truth table of the D flip flop is shown in Fig. 14. Remember that the PRESET and CLEAR must be high, as discussed in connection with Fig. 2. The truth table for asynchronous inputs applies also to the D flip flop. 60 CLOCK A PRESET A CLEAR ft J A V CC + 5 Several ICs employ the D flip flop. One of these is the 7474 dual D flip flop. Since only one pin is needed for data entry to each flip flop both preset and clear capability can be provided in a 1 4 pin package. The diagram of the 7474 is shown in Fig. 15. The 7475 IC uses a D flip flop which is called a latch because the CLEAR and PRESET pins are absent. The clock b preset b clear b reduction in pins has been carried one step further by combining two CLOCK pins each. Therefore it is possible to put four latches on one 16 pin IC; the 7475 quad latch is shown in Fig. 1 6. This short introduction to flip flops, latches and integrated circuits should help your understanding of this building block. With a thorough understanding of these circuits, you will be well on your way to designing your own equipment. ■ Fig. 10. Pinout of the 7476 IC, a dual flip flop similar to the 7473 but having both PRESET and CLEAR. (Top view ) + 5 V„„ PRESET CLEAR A ABB CLOCK K A8B B CLEAR Fig. Ji. And still another combination - the pinout of the 74H78 has 14 pins with common CLEAR and CLOCK, and separate PRESET pins. Fig. 15. The pinout of the 7474 dual D flip flop. (Top view ) CLEAR D Q CLOCK Q PRESET Fig. 12. Making a "D" flip flop Fig. 13. The block diagram of a D out of a "JK" with an inverter. flip flop. (Top view ) »n »n+l D Q Q L L H H H L — CLOCK Q A 16 Q B 15 C B 14 A8B GND 13 ||2 Q c 1 C »C 10 o D 3 - ~l Q Q 9 D CLOCK Ol CLOCK Ol o o Q Q d ; 1 - 1 2 3 4 | 5 6 7 3 D D CLOCK V r , + 5V Fig. 14. Truth table of a D flip flop. Fig. 16. Pinout of the 7475 latch (or register) circuits. (Top view ) 61 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— 8H, now brings you the new SCELBI— 8B with increased capability! Like the former SCELBI-8H, the SCELBI revolutionizing the electronics world. -8B is built around the amazing '8 8' "CPU-on-a-Chip" which has been 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 NEW SCELBI— 8B is availableNOW. (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. ICELBI COIMI UIIR CONIUIXING INC. 1322 REAR BOSTON POST ROAD MIL FORD, CONNECTICUT 06460 62 IT TUUHIlL UllLIILulEU 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-83 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 8" (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 "I/O 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 $1 7.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. SPECI f\ L_ (Expires Dec. 31,1 9 75) Order all four publications at once, mention this BYTE ad, and save over 10% s5S.OO (Pricing, specifications, availability subject to change without notice.) Order direct from: 1322 REAR BOSTON POST ROAD VfFI Rl fAMDIITFD deptdn ■""■ „Y™ *" MILFORD CONNECTICUT 06460 CONIUlIINti INC. 63 Read Only Memory Technology Kead Only Memories are a useful element of the hardware of microcomputer systems. This month, Don Lancaster pro- vides information on Read Only Memories - a tutorial article taken from Chapter 3 of his forthcoming book, TV Typewriter Cookbook, to be published by Howard W. Sams, Indianapolis, Indiana. by Don Lancaster Synergetics Low cost and compact memory components are the key to simple and reasonable TV typewriter and rriicrocomputer systems. Today there are many ICs available that will cram thousands or more bits of storage in a single package at costs of a fraction of a cent per bit. The problem is to pick the memory components that are the cheapest, the easiest to use, and the ones with the fewest unpleasant surprises. What does memory do for us? Well, it remembers. If it remembers extremely well it can be used as a fixed logic element or to store an often-used software routine. An important example of this is the character generator memory that converts our ASCII code into a group of dot patterns suitable for video use. The same type of memory might be used to change the keyboard switch closures and shift combinations into selected ASCII codes. We also use permanent memory for code conversions such as going from ASCII to SELECTRIC, and permanent memory is usually used to store the program and control commands for an external microprocessor or minicomputer system. This particular type of memory is called a read only memory, or ROM. Once taught, it does the same thing forever, even if supply power is repeatedly applied and removed. There are several ways this memory type can be taught. One is to use a factory programmed mask at the time of manufacture. Another is to use some field programming technique such as melting internal silicon or metallic fuses. This is handy whenever you are doing a special, low volume code or program, or whenever you Fig. 1. Read Only Memories (ROMs) are non-volatile and used typically for programming of "firm" microcomputer software, for fixed lookup tables, or for code conversions. INPUT WORD SELECT ROM . ' ' * OUTPUT WORD OUTPUT ENABLE 64 aren't sure what you arc doing is really what you want to end up with. Such pro- grammable read only memories (PROMs) allow customizing for special pur- poses. Some of the more expensive programmable read only memories can be bulk- erased through exposure to ultraviolet light or X-rays; these erasable read only memories (EROMs) can be rc-programmed in the event of an error. Most read only memories can also be called code converters or table lookup devices, and are usually organized as shown in Fig. 1. Each ROM is a fixed logic block that has several inputs and several outputs. For each and every possible input address combination of ones and zeros, some unique combination of output ones and zeros will result. There doesn't have to be any rational relationship between these two code words. Either you or the manufacturer decides what these combinations are going to be at the time the ROM is programmed. A ROM is completely universal; it's inherently set up to provide all possible combinations of input /output word arrangements. When you program your ROM, you limit these all possible combinations to a single specific word exchange that you want. One popular smaller ROM arrangement is called a 32 x 8 ROM. This means you can program 32 eight bit words. Since 32 words can be represented with binary combinations on five lines, this particular ROM has five input lines and eight output lines. This type of ROM has 256 possible memory locations. At each and every location, we have the option of permanently or semi-permanently placing a one or a zero. This leaves us with 2^56 possible programs we can teach our ROM, an incredibly large number. The only thing that changes with a particular program is where you put the ones and zeros. All the rest of the circuit stays the same. ROMs work by decoding each and every possible input state into a onc-of-n code and then recombining certain selected combinations of decodings into output words using OR circuits. Which combinations you use picks what the output word is going to be. There are several ways to program a ROM. It can be done at the factory where metal jumpers are provided or omitted to the tune of holes or no holes in a mask. Factory programming is cheap but must be done with a high volume product that has one internal code that lots of users can agree to use. Dot matrix character generators, some keyboard encoders, trig lookup tables for calculators and so on are typical factory programmed ROMs. Field programmable ROMs are programmed by the user, or by a distributor or someone else who is set up to do programming. A programmable ROM arrives from the factory either all ones or all zeros, depending on the type. You then do something to change the bits you want to suit your code. In one type of ROM, fusable links are melted. These links are made of a metal such as nichromc, or of a semiconductor such as silicon. These techniques are most commonly used on bipolar or TTL-like ROMs. These ROMs are usually fast and relatively small. Another type of programming injects large voltage pulses that avalanche charge storage areas, electret style. This type of programming is used on MOS read only memories. They are usually slower but have more bits available per package. Some premium ROMs are reprogrammable. In one type, you take off an opaque lid and bulk erase the chip with strong ultraviolet light. A second type can have ones or zeros selectively and more or less permanently written into it. Reprogrammable ROMs cost more but can be used over. More important, if you make a programming mistake, you can reuse the same chip, correcting the error later on. We can also classify ROMs as general purpose devices and dedicated ones. A general purpose ROM can be made into whatever you like and used for just about anything, such as for code conversion, or to store programs for a microcomputer or microprocessor. Dedicated ROMs are usually part of a larger integrated circuit and have very specific uses. Typical examples are in a dot matrix character generator, the word converter in a premium keyboard encoder, and the program storage in many calculator integrated circuits. Let's see how ROMs work and what devices are available by looking at two important Fig. 2. Removing redundant information from the 7-segment calculator display code. "If you do a PROM design and end up with a ridiculous number of bits, you can almost always go through a rethinking and reduction process that will minimize things a bunch." (a) Segment callouts. (b) Numerals with segments "c" and "d" missing are still identifiable. m f b H e c LJ DUE i i DD i i i i 65 "Even with bulk erasable PROMs, a mistake on bit #1874 of a 2k PROM can be enough to ruin your whole day." Fig. 3. ROM-organized logic to convert 7segment calculator code to Fig. 4. Single IC 7 segment code converter uses 32 x 8 read only BCD or ASCII code. memory. (a) Circuit using 32 x 8 ROM. 7- SEGMENT INPUTS 4 LINE TO 1/16 DECODERS 4514 (CMOS) a o- b o- CO(NC) d O(NC) e o f o- I l go- in li'i LL_L /JTJ 64 • 7 7 V 7 -W IOOK TYP MO) • (3) J(2) so) 50) (4) -•(6) 1(8) 32 16 6 4 ASCII OR BCD OUTPUTS uses for ROMs — a seven bar to ASCII converter that can be used to tie a calculator into a TV typewriter or microcomputer; and an ASCII to SELECTRIC code converter that lets us drive a Selcctric typewriter. Seven Segment Converter Many calculator chips output only a seven segment code that is not directly compatible with microcomputer software unless it is changed to a Binary Coded Decimal (BCD) or ASCII coding. While several conversion ICs exist, at this writing, they are neither cheap nor readily available. Can we do the job with a read only memory? At first glance, it would seem that we'd need a ROM with seven inputs or 2 7 - 1 28 words minimum. But, with practically every ROM application, a little bit of rethinking can usually drastically cut down the size and cost of the ROM we'll need. For instance, Fig. 2 shows how we can simply ignore the bottom and bottom right segments ("c" and "d") of the segment code and still have ten distinct and identifiable characters. This cuts us down to 32 words, getting us by with five inputs, and one fourth the size of the ROM we started with. Fig. 3 shows us how we might build our own "pseudo-ROM" using some CMOS gates and decoders. While you would rarely want to go this route, it's useful to look at since it shows us how the real ROMs work inside. You might occasionally use a circuit like this to verify programs and truth tables 8256 ROM I 2 4 8 16 7 SEGMENT . INPUT ~~° * OUTPUT d — NC — NC — NC l_(j VALID KP a 1 (b) Programming. INPUT NUMERAL g f e b a — 1 - 1 1 1 1 7 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 1 - 1 1 1 3 1 1 _ 1 1 1 - 1 1 1 - 1 1 1 1 2 1 1 _ 1 1 1 5 1 1 1 4 1 1 1 1 9 1 1 1 — 1 1 1 1 6 1 1 1 1 - 1 1 1 1 1 8 OUTPUT kp 8 4 2 1 10 1 10 111 10 10 11 10 10 10 10 1 10 10 110 1 10 110 110 66 since it is easy to change. Our five input lines (ignoring the redundant c and d segments) are decoded to a one-high-out-of-32 code. For each and every possible input combination, one and only one of the horizontal rails goes to a "1"; the rest stay low. The OR gates on the output re-encode this into a 1-2-4-8 Binary Coded Decimal code. We decide what our OR gates do by where we put the dot connections between the horizontal and vertical rails. To get from BCD to ASCII, we can simply tack a hard wired 01 1 in front of the BCD word. While we could dream up a possibly simpler "logical minimum" circuit to do the same job, this particular circuit has a unique advantage - if our OR gates are "wide" enough, it will convert ANY five bit input word into ANY four bit output word, with no change in hardware. All that changes is the positions of the dots. This is the beauty of the read only memory — only a single integrated circuit is needed to do an incredible variety of specialized jobs, depending only on how you program it. Fig. 4 shows how we take a stock 32 x 8, 256 bit Programmable Read Only Memory, or PROM, and do the whole job with one integrated circuit. Since we have extra outputs left over, we can use one for a "valid keypressed" output that can tell the difference between a zero code and no key pressed. The remaining three outputs can be used for detecting a "9" output or for other housekeeping that's handy when you demultiplex the scanning digit outputs of the calculator IC. To program the ROM, the truth table of Fig. 4(b) is entered into the integrated circuit, selectively putting ones and zeros as needed. MANUFACTURER PART HITS ORG. TYPE ERASABLE? AMERICAN MICRO DEVICES 27S08, 09 256 32x8 BIPOLAR NO 27S10, 11 1024 256x4 BIPOLAR NO 1702 2048 256x8 MOS YES HARRIS SEMICONDUCTOR 1256 256 256x1 BIPOLAR NO 8256 256 32x8 BIPOLAR NO 0512 512 64x8 BIPOLAR NO 1024 1024 256x4 BIPOLAR NO 2048 2048 512x4 BIPOLAR NO FAIRCHILD 93421 256 32x8 BIPOLAR NO 93416,26 1024 256x4 BIPOLAR NO 93436,46 2048 512x4 BIPOLAR NO INTEL 3601 1024 256x4 BIPOLAR NO 3602,22 2048 512x4 BIPOLAR NO 1702 2048 256x8 MOS YES 3604.24 4096 512x8 BIPOLAR NO 2704 4096 512x8 MOS YES 2708 8192 1024x8 MOS YES INTERSIL 5600,10 256 32x8 BIPOLAR NO 5603,23 1024 256x4 BIPOLAR NO 5604,24 2048 256x8 BIPOLAR NO MONOLITHIC MEMORIES 6330,31 256 32x8 BIPOLAR NO 6300,01 1024 256x4 BIPOLAR NO 6305,06 2048 512x4 BIPOLAR NO 6340,41 4096 512x8 BIPOLAR NO NATIONAL 8573,74 1024 256x4 BIPOLAR NO 5202,03 2048 256x8 MOS YES 5204 4096 512x8 MOS YES NITRON 7002 1024 512x2 MOS YES 7002 1024 1024x1 MOS YES SIGNETICS 8223 256 32x8 BIPOLAR NO 82126,29 1024 256x4 BIPOLAR NO 82130,31 2048 256x8 BIPOLAR NO 82115 4096 512x8 BIPOLAR NO TEXAS INSTRUMENTS 74188 256 32x8 BIPOLAR NO 74186 512 64x8 BIPOLAR NO 74287 1024 256x4 BIPOLAR NO Fig. 5. Some commercially available programmable ROMs. Working With PROMs Fig. 5 is a listing of some currently available PROMs. Where two numbers are shown, one is usually an open collector output, the other tri-state. At this writing, PROMs cost from $5 upwards, with surplus versions (unused) starting at $3. Bipolar PROMs are based on a TTL technology, usually work off a single +5 volt supply, and are rather fast, typically 50 to 70 nanoseconds access time. MOS PROMs often take two power supplies (+5 and —12 usually) and are slower, typically having a one microsecond access time. MOS PROMs are often cheaper per bit and many MOS types are bulk erasable by exposure to strong ultra- violet light. A few ultra-fast ECL PROMs also exist, but are reserved for special uses and are expensive. Two good choices for home brew computing are the 32 x 8 bipolar PROM such as the Intersil 5600 or the Signetics 8223; and the 256 x 8 erasable MOS PROM, including the Intel 1702 and its second sources. While you can program your own PROM with nothing but a power supply and a meter, the "zero defects" nature of this work and its "up the wall" aspects turn the job into quite a hassle. Even with bulk erasable PROMs, a mistake on bit #1874 of a 2k PROM can be enough to ruin your whole day. Instead of this, you can buy programming services at very low cost from many electronic distributors, as well as from surplus and computer hobby supply houses. Programming machines that simplify the job a bunch are available for several hundred dollars. [Once you have a microcomputer system up and running, it is quite possible to construct an ROM programming peripheral for the purpose of permanently burning in your software. Local computer clubs might consider building the ROM burner peripheral and related software as an attraction of membership . . .cth] A quarter's worth of gating can cut the size of a ROM in half. When you design your own PROM circuit, be absolutely sure your truth table is correct before you order any programming. The program service will only guarantee that what you sent in is what you get back, and nothing more. They have no way of second guessing what you really wanted. If you do a PROM design and end up with a ridiculous number of bits, you can almost always go through a rethinking and reduction process that will minimize things a bunch. Leaving off the two redundant segments of a seven bar code is one obvious example. Other possibilities are to put simple logic outside the PROM, for 67 Fig. 6. ASCII to SELECTR1C interface using PROM. ASCII INPUTS al a2 O O ROTATE I "T— O ROTATE 2 O ROTATE 2A BALL O ROTATE 5 ) OUTPUTS — O TILT 2 HIFT 1 O SHI D- -tO KP TO SPACE KP TO RETURN NOR l_i ^ _o KP TO PRINT SOLENOID BALL SOLENOIDS often a gate or two can significantly reduce the PROM size. Bypassing control commands around a PROM is one way to do this. Sometimes symmetry and mirror techniques can be used, particularly when working with trig waveforms, music waveshapes, and other data tables that have some sort of symmetry. In PROM microcomputer programs, sneaky programming tricks can often drastically cut the number of steps needed; extensive use of subroutines is one route to this end. In code converter and table lookup applications you usually address your PROM in a random fashion and you have no way of knowing what is going to be needed next. There are other ways to address ROMs that open up other types of applications. For instance, if you sequentially clock the PROM, changing the address one bit at a time at a constant rate, you can generate an output sinewave or a musical timbre waveform. The clocking rate will select the output frequency, and you can get a symmetrical output by using an up down counter driving the address inputs. Another possibility is to let the PROM's output set the next input address to the PROM, or at least influence it. Some outside latch or storage is needed to prevent an unchecked wild race, but this is easily added. This particular technique is called microprogramming, and is, of course, the key to calculator and micro- computer operation. Even without a CPU, a PROM plus additional logic can be used as a programmable controller. Loops and branches are easily added by external gating and using extra PROM inputs. Several additional details on PROM and ROM design appeared in the February, 1974, Radio Electronics. A ROM or PROM can be used to change ASCII coded signals into SELECTRIC outputs suitable for the hard copy techniques output if you have a converted Selectric typewriter. While a few ICs are commercially available to do this job (such as the Fairchild 3512 and the National 4230), at this writing, it's much cheaper and simpler to program your own PROM. You can also add custom features of your own, such as converting the ASCII ^ command into a capital "E" and so on. Fig. 6 shows us a circuit that only needs 512 bits worth of ROM and a few gates to do the one-way conversion for us. The PROM basically works with the ASCII 6 bit code of upper case alphabets, numbers and punctuation. It converts these ASCII commands into the seven Selectric shift, rotate Fig. 7. Listing of ASCII inputs (octal) and Selectric outputs for the PROMs in Fig. 6. ASCII SELECTRIC ASCII SELECTRIC INPUT CHARACTER OUTPUT INPUT CHARACTER OUTPUT 100 ca 166 040 SPACE 200 101 A 134 041 I 177 102 a 140 042 125 103 c 154 043 # 176 104 D 155 044 S 171 105 E 145 045 % 135 106 F 116 046 & 175 107 G 117 047 025 110 111 112 113 114 H I J K L 141 124 107 144 151 050 051 052 053 054 ( ) 160 161 174 106 115 116 117 M N 137 146 131 055 056 057 / 000 026 011 120 P 105 060 061 121 Q 104 061 1 077 122 R 135 062 2 066 123 S 121 063 3 076 124 T 147 064 4 071 125 U 156 065 5 065 126 V 136 066 6 064 127 W 120 067 7 075 130 X 157 070 8 074 131 Y 101 071 9 060 132 Z 167 072 115 133 I 111 073 015 134 \ 1S4 074 < 027 135 I 111 075 = 006 136 A 145 076 > 127 137 ASCII 100 077 SELECTRIC ? 111 READING 6 5 4 3 2 1 SPSH T2T1 R5 R2A R2 Rl BITS OCTAL 0_ 1 0, 1 \ U 1 ,1 1, 1 BINARY 2 5 U 1 5 6 OCTAL 68 and tilt ball commands. The program appears in Fig. 7. We've shown it in octal coding to make it more compact. Most of the characters are directly converted from ASCII to their SELECTRIC equivalents. ASCII < and > become the Selectric 1/2 and 1/4 respectively, the ASCII \ becomes the Selectric i, and opening and closing brackets are disallowed and produce question marks. ASCII { becomes a capital "E" to indicate exponentiation, particularly when using the BASIC language on a microcomputer output display. The eighth output of our PROM is used to detect an ASCII space and break it out of the code, for a Selectric space is a machine command, and an ASCII space is a printing character. If a space is detected, the keypressed output is diverted to the space solenoid and the ball moving solenoids are disabled. If a lower case alphabet is provided, the input logic on bits a6 and a7 detects lower case and converts it to its equivalent upper case ASCII six bit input code and at the same time forces the shift output line to the lower case low state. This is a good example of how a quarter's worth of gating can cut the size of a ROM in half. Another Selectric machine command we need is a return command to move the ball back to the beginning of a line. This command can be detected with the lower left NOR gate (Fig. 6) and used to divert the keypressed output to the carriage return solenoid, at the same time disabling the ball-moving solenoids. If there should be any other control commands which are to be ignored by the typewriter, carriage return detection logic (OPTIONAL CR GATING in Fig. 6) can be added to distinguish carriage returns Fig. 8. Full function ASCII to SELECTRIC code converter uses larger PROM. ASCII INPUT O ROTATE I O ROTATE 2 O ROTATE 2A O ROTATE 5 O TILT I TILT 2 SHIFT j SPACE RETURN INDEX TAB BACKSPACE BELL SPARE BALL ) OUTPUTS \ MACHINE ' OUTPUTS GOES TO "I" ON PRINTABLE CHARACTER; - "0" ON MACHINE COMMAND KP TO PRINT SOLENOID KP TO MACHINE SOLENOIDS BALL SOLENOIDS ENABLE from the added control commands. You can build this ASCII to Selectric interface using a single 64 x 8 PROM or a pair of 32 x 8 PROMs with parallel outputs selected by the chip enable inputs. Using two ICs is sometimes less expensive than one larger PROM because the smaller PROMs are more widely available as surplus. Fig. 5 lists several typical PROM parts. All Selectric functions including bell, tab, backspace and index are accommodated in the circuit of Fig. 8. It takes a PROM of four times the size, provides more functions, and is a simpler circuit than the one shown in Fig. 6. The eighth PROM output is used to decide whether the ASCII code is a printed character or a machine command (which might be ignored). This eighth output line feeds back to the PROM's eighth input line via the resistor-capacitor time delay circuit. When bits 1 to 7 of the PROM input represent a printable character, the eighth bit output line switches to a high level which enables printing. The ball output codes are the same as in the simpler circuit, but their solenoids must be disabled when the machine command codes are received. When a character is to be printed, the keypressed pulse (KP in Fig. 8) is routed by the upper AND gate (enabled by the logical one output of the PROM's eighth bit) to the print solenoids; the ball solenoid enable is also taken from the eighth PROM bit. The result is movement of the ball combined with a print stroke. If, however, a machine command is presented to the PROM at the ASCII inputs, the eighth bit of the PROM output goes low and disables both the ball solenoids and the gate which would route KP to the print solenoid. This bit is inverted by the inverter to present a logical one level to the lower AND gate in the figure. This enables the keypressed pulse (KP) to go to the machine solenoids. Any legitimate command code will result in selection of one of the machine outputs in Fig. 8 . The selected machine output line will enable the corresponding machine control solenoid's driver — resulting in one of the machine control actions such as a tab. As an example, suppose a horizontal tab function (HT in ASCII) is presented to the PROM: The PROM decodes a machine command, inhibits ball solenoids and the print solenoid, presents a decoded logical one level to the tab solenoid driver, enabling it, and routes the keypressed signal (KP) to the other tab solenoid driver input — resulting in a tab action. Since the PROM is to be set up for only six (or seven) legitimate machine commands, any unwanted ASCII machine control codes will be ignored. In this article, we've seen some background information on ROM technology and several of the many uses to which ROMs can be put in microcomputer and logic systems. These are by no means the only uses of ROMs. The uses of ROM technology are for the most part limited only by your own imagination. ■ ' THE HP 65: WORLD'S SMALLEST COMPUTER SYSTEM by Richard Nelson HP-65 Users Club 2541 W. Camden PI. Santa Ana CA 92704 On Jan. 17, 1974, Hewlett-Packard announced their fourth model in a continuing series of sophisticated pocket calculators. This model, the HP-65, was unique in that it was programmable and used magnetic cards to read and write user-written programs. One of the first questions asked about the new machine was, "Is it a calculator or a computer?" There is no question that the HP-65 is the most powerful computational tool in existence for its size and weight, but in terms of an Altair 8800, Mark I or Sphere microcomputer, how does the HP-65 stack up? Computer vs. Calculator In the classical definition of a computer, as described by Babbage, the HP-65 is indeed a computer. The HP-65 has conditional and unconditional branching, data storage, and a memory which can be used to store a program. By today's standards a machine is often called a computer or a calculator by the task for which it is best suited. A calculator is best suited for numerical calculations, and a computer is best suited for 70 binary or alphabetic data manipulations involving a large data base. In this sense, the HP-65 is - as it is called — a calculator. If you are interested in computers and programming, should you consider the HP-65? Most definitely! The only negative aspect of the HP-65, compared to atypical microcomputer kit, is its cost (i.e., $795 versus about $500). If, however, you consider the microcomputer complete with an operating system and an input/output device — but built into a pocket-size package, then the HP-65 is a very competitively priced unit. There is no doubt that the HP-65 "computer" is the easiest to get up and running. If your interests are primarily of a problem-solving nature, and a personal, portable computational and educational tool will meet your needs, the HP-65 is for you. If your interests tend toward programming, the HP-65 is an excellent machine to learn programming upon. If you master memory limited (every computer is memory limited sooner or later) programming on the HP-65, you will have an excellent background to move up to a larger machine if you desire. There will be no problem selling a used HP-65. Just try buying one! How Powerful is the HP-65? The HP-65 has 100 memory steps, and 14 data registers (four in the stack) directly accessible to the user. Programs may be linked from card to card if efficient programming won't allow placing all steps on one card. Card read time is about the same as the dial "0" time on an older model telephone. Four logical comparison operations, two flags, decrement counter, convenient editing, five user-defined keys and merged codes which allow two keystrokes to occupy only one step of memory all combine to make the HP-65 so powerful that it was used to backup the on-board computer on later Apollo missions. Programs have been written for the HP-65 to perform some amazing calculations — and other tasks as well. Hewlett-Packard has nearly 4,000 programs in their library, all available to HP-65 users. A catalog details and classifies each program. Hewlett-Packard also offers collections of programs in the form of PACs containing 40 pre-recorded cards. To date, 14 PACs are available, covering the fields of finance, mathematics, electrical, chemical and mechanical engineering, medicine, surveying, aviation and navigation. The HP-65 can be programmed to: a) Play Tic-tac-toe, N1M, Bagels, Craps, Ping-pong, Slot Machine, Football or Hexapawn. Some games are cybernetic — one card — and will actually learn to play a perfect game. b) Generate 10,000 digits to test a random number routine, sort and tally the digits 0-9 to check the routine's uniformity. c) Play word games such as Word Squares or Hangman. d) Generate a table of prime numbers. e) Solve up to seven simultaneous equations in seven unknowns. f) Design a transistor amplifier circuit with all calculated values converted to El A standard values. g) Teach students arithmetic using teaching programs that adjust to the learning rate of the student. h) Compute double precision products such as: 9, 753, 124, 680 x9, 375, 168,024 = 91,437,182,634, 021,232,320 (64-bit arithmetic is not enough precision for this number-crunching application.) The latter is an example of the type of problems in which the calculator is outstanding and the microcomputer is marginal. Try an alphabetic sort of the names of the members of your car pool and the situation is reversed. Like all e lectronic ''computers," someone always applies their machine in unusual ways in an attempt to solve a problem. For blind users a program has been written for the HP-65 which will produce a tone on a radio in the form of coded beeps to "spell out" the display. One user has applied a program to generate points to plot a modern art figure. In the search of trying to get 200 steps into a 1 00-step memory, users have even found logic that wasn't intended to be included in the instruction set. Many HP-65 users get the most from their machine by sharing their experiences through an organization established for that purpose. Most computers have users groups — for the HP-65 it is the HP-65 Users Club. ■ 71 Build A 6S00 System With This Kit by Gary Kay Southwest Technical Products Corp. 21 9 W. Rhapsody San Antonio TX 78216 If you are one of the many people getting ready to purchase one of the reasonably priced microprocessor system kits on the market today, you might ask yourself whether or not you will be able to start entering programs once you get it all put together. Of course you can always load programs and data through the front panel programmer's console, but most individuals aware of the front panel's slow speed and difficult readability prefer to use a Teletype or low cost video terminal such as the TV Typewriter II (February 1975, Radio Electronics) for data and program input/output. This is all well and good except that in order to attach a terminal, you'll have to purchase an interface for your computer if it is not supplied with the basic system. In fact you will generally need a separate interface for each I/O (input/output) device connected to your computer. This can run your system investment up considerably since such interfaces typically cost between $75 and $150 each, and there are more surprises yet to come. So now you've got your computer, with interface, attached to your terminal; you're ready to sit down, power up and start typing in your program, right? Well, not quite. You see, in order to be able to use the terminal for either entering programs or getting data in and out of the computer you must have a program resident or loaded Fig. J. Block diagram of the SWTPC 6800 system. The address allocations of the elements of the system are noted inside the blocks. into memory telling the processor how and what to do. Without this software (program), you can pound on the keyboard all you want and the computer won't do anything. Computers are no smarter than their programming lets them be and without programming they're not very smart at all. How do you get this software into memory? Well, you could load it in from paper or cassette tape, that is if you have a paper tape reader or cassette tape interface (another sizable investment) or you could enter it directly from the programmer's console. The problem here is two fold. Software to give the terminal reasonable system control will probably be around 500 words in length. This is far too long to enter from the programmer's console especially when you consider it has to be re-entered every time the system is powered up or after a wayward program overwrites any of its allocated area of memory. The second problem is that few if any of the manufacturers supply a listing, paper tape or cassette tape of such a program to begin with. Their terminal control routines are contained within editor/assembler and higher 72 MEMORY BOARD CONTROL INTERFACE CPU BOARD — i MOTHERBOARD MCM6810L1 128X8 RAM POWER SUPPLY MCM6830L "MIKBUG" ROM MC6800 PROCESSOR Details of the SWTPC 6800 System. This photo illustrates what you see when you remove the cover of a typical SWTPC computer system. This is an assembly of the parts which come in the MP-68 kit. level language packages which not only must be loaded from some kind of tape reader, but require from 4,096 to 8,192 words of memory to operate. And you thought the interfaces were expensive, just check the prices on 8,1 92 words of memory. Many of the systems now on the market are supplied with an amount of memory with the basic unit which is considerably less than what might actually be needed for useful programming. So what's the alternative? Well, the system presented in this article has been designed to eliminate the afore- mentioned problems and allow the user to have a powerful and fully functional system at a minimum cost (see Fig. 1). The entire system is built around the Motorola MC6800 microprocessor and its family of support devices. The computer itself is being made available in kit form including the chassis, cover, power supply and all circuit boards, parts and hardware necessary to build a Motorola 6800 based microprocessor including a 1,024 word ROM (read only memory) stored operating system with 1 2 8- word scratch pad memory, serial interface baud rate generator, serial interface, and 2,048 words of memory for $450. This article gives a description of the microprocessor and mother board. A future article will describe the power supply, memory and interface boards. The Microprocessor/System Board (MP-A) The Microprocessor/ System Board (coded MP-A) is the primary logic board for the system. It is a 5 1 /2" x 9" double sided plated-through hole circuit board containing the 6800 microprocessor chip, the 6830 ROM which stores the mini-operating system and the 6810, 1 28-word scratch pad random access memory (RAM) needed by the ROM. There is a crystal controlled processor clock driver and baud rate generator providing serial interface baud rates of 110, 150, 300, 600 and 1200 baud for all but the terminal control interface which is operable at 110 or 300 baud. Also provided is a power up/manual reset circuit which restarts the ROM stored mini-operating system whenever activated. Full I/O buffering is provided for the 16 address lines and eight bidirectional data lines with these and other connections made to the rest of the system through the mother board via a 50-pin connector. Power for the board is derived from a +5 volt regulator fed from the system's unregulated 7 volt, 10 Amp power supply. Average current consumption for the board is 0.8 Amps. The mini-operating system stored in the 6830 ROM on this board has got to be one of the most outstanding features of this system. It is through this Motorola written software package called "MIKBUG" that the user can 1) enter program or data into memory from either the terminal's keyboard or tape (where applicable), 2) jump to and execute a program loaded in memory, 3) list programs or data stored in memory, on the terminal or tape (where applicable), 4) examine and/or change the contents of the internal CPU registers, 5) examine and/or change the contents of specified memory locations. These operations are performed using a 20 mA current loop Teletype or an RS-232C compatible serial ASCII terminal. This ROM mini-operating system does not have to be loaded from tape and it cannot be overwritten. It is always there at your fingertips — just pressing the RESET button or simply powering the system up automatically restarts this firmware (ROM stored software). When activated, this system responds with a 73 r i ffff MINIBUG/ TEST PATTERN (NOT USED) MIKBUG ROM MIKBUG RAM I/O PORT N0.7 I/O PORT NO. 6 I/O PORT NO.5 I/O PORT NO. 4 I/O PORT NO. 3 I/O PORT NO. 2 I/O PORT NO.I CONTRL. INTERFACE I/O PORT NO.O 4K MEMORY NO. 7 4K MEMORY NO. 6 4K MEMORY NO.5 4K MEMORY NO. 4 4K MEMORY NO. 3 4K MEMORY NO. 2 4K MEMORY NO. I 4K MEMORY NO. EIFF EOOO A07F AOOO 80IF 801 C 80IB 8018 8017 8014 8013 8010 800F 800C 800B 8008 8007 8004 8003 8000 7FFF 7000 6FFF 6000 5FFF 5000 4FFF 4000 3FFF 3000 2FFF 2000 IFFF 1000 OFFF 0000 Fig . 2 . SWTPC 68 00 Microprocessor System memory map. The 64K address space of a 6800 CPU is divided up into the segments shown here. The first 32K locations are available for user read-write memory. The second 32K is devoted to I/O port assignments and the requirements of the MIKBUG program supplied by Motorola. carriage return, line feed and then prints a * on the terminal at which time you may enter various single character control commands such as M for memory examine/change, L for load from tape, P for punch or list, R for examine registers or G for go to and execute a loaded program. A program debug routine can also be implemented by using the software interrupt (SWI) instruction as a "breakpoint" which forces a jump from your program to the operating system to allow you to examine the contents of memory and/or the CPU registers. All data entered or displayed through the terminal is in convenient hexadecimal (base 16) notation. This means you can type in a command to load address location AOOO16 with 9E-|5 instead of setting 24 console switches to an address of 1010 0000 0000 0000 with data of 1001 1110 as must be done with the conventional programmer's console. Since the operating system is stored in ROM, it consumes no user RAM memory, in fact, it actually gives the user a little extra. There is a 128-word scratch pad memory utilized by the operating system for storing various addresses and data, but there are more than 54 locations within this 6810 RAM memory which are totally unassigned plus a 46-word deep push-down stack. All of this memory is in addition to the 2,048 words (expandable to 4,096 words) contained on the standard memory board. Since the terminal and mini-operating system provide the user with complete system control, there is no need for the conventional programmer's console. Take note also that once system control is turned over to your program, the control terminal is totally available for your program input/output. In fact, since the character input/output subroutines are already stored within the operating system ROM, they can be used by your programs simply by loading or storing the characters to be handled in the proper register and executing a jump to subroutine (JSR). The Motorola MC6800 microprocessor chip is the element around which this entire system is built. It is an 8-bit parallel processor with eight bidirectional data lines and 16 address lines giving it an addressing capability of up to 65,536 words. There is no distinction between memory and I/O addressing on this system, therefore, all input/output data transfers are handled just as are the memory transfers. This means the I/O interfaces must have their own allocated memory addresses where neither ROM or RAM memory may be located. This may at first seem to be a disadvantage until you realize that all memory handling instructions are usable for the interface data handling as well, thus eliminating the need for special data I/O instructions. The memory assignments for this system have to be made as shown in Fig. 2. User RAM may be located anywhere in the lower 32K (0000] 6 to 8000-] 5) addresses with the upper 32K addresses reserved for the operating system ROM, RAM and interface boards. There are six registers internal to the MC6800 microprocessor element which consist of the program counter, stack pointer, index register, accumulator A, accumulator B and condition code register. The stack pointer is a 16-bit register used to store the address of the push-down stack which is located in RAM memory external to the MC6800 microprocessor element. The push-down stack itself is used to store the program counter and/or processor data during branch to subroutine (BSR), jump to subroutine ()SR), push (PHS) or interrupt routines. The index register is a 16-bit register generally used as an address pointer for many processor instructions. There are 72 basic instructions for the 6800 microprocessor system (Fig. 3) with most of the 72 utilizing several of the seven possible addressing modes: Accumulator, implied, relative, direct, immediate, extended and indexed. • Accumulator — In accumulator addressing, either accumulator A or accumulator B must be specified. • Implied — In implied addressing the instruction code itself specifies the operand (stack pointer, index register, etc.). • Relative — Relative addressing is used for the branch instructions and indicates the value contained in the word of memory immediately following the instruction code added to the program counter +2 with the result then loaded back into the program counter. Positive data (bit 7 = 0) generates forward jumps up to 129 words from the branch instruction while negative data (bit 7 = 1) generates backward jumps up to 125 words from the branch instruction. • Direct — In direct addressing, the value contained in the word of memory immediately following instruction code is an actual memory address within the first 256 words of memory (0000-] 6 to OOFF) which contains the operand of the instruction. This mode typically saves one CPU cycle of execution when compared to extended addressing. • I m m ediate — In immediate addressing, the 74 value contained in the word, or in some cases two words of memory, immediately following the instruction code is the operand of the instruction. • Extended — In extended addressing, the two words of memory immediately following the instruction code contain the address of the memory location which contains the operand of the instruction. • Indexed — In indexed addressing, the value contained in the word of memory, immediately following the instruction code, is temporarily added to the contents of the index register generating a new address where the operand of the instruction is located. The jump is positive only, going from to 255 words and the actual contents of the index register are not changed. Also provided on the main processor board is an MCI 4411 baud rate generator which uses an external 1.8432 MHz crystal and internal oscillator and divide chain to generate serial interface clocks for baud rates of 110, 150, 300, 600 and 1200 baud. Also derived from this circuit is the 921.6 kHz clock used by the MC6800 microprocessor clement. It is first, however, fed into a gating circuit generating two non- overlapping, 50% duty cycle, complementary clock signals §] and §2- Mother Board (MP-B) The Mother Board (coded MP-B) is a 9" x 14" double sided, plated-through hole circuit board onto which all of the various processor boards are plugged. Provisions have been made for one Mi crop rocessor/ System Board, up to four 4,096 word random access memory boards plus two unused slots. This allows the system to be expanded to 16,384 words of memory. For those demanding even more memory, the 50-line system information bus may be paralleled onto another mother board with separate power supply expanding the system to a maximum of 32,768 words of random access memory. The Mother Board also provides the line buffering and address decoding for up to eight interface boards. Although one of the eight must be the serial terminal, control interface, the other seven may be any combination of parallel or serial interfaces the user may choose to have. For those demanding even more interfacing capability, the 50-line system information bus may be paralleled onto another mother Txiard with separate power supply expanding the interfacing capability to one terminal, control interface plus any combination of up to 15 serial or parallel interfaces. The following is a brief description of each of the 50 lines on the system information bus: The A0 - A15 lines carry address bits through 15 respectively, forming a 16-bit address which is used to define either a memory location or interface address. The BUS AVAILABLE line goes high ac- knowledging a processor halt, meaning the processor has stopped and that the system information bus is available for external control. The DO — D7 lines carry inverted data bits through 7 respectively, forming 8-bit data words which are exchanged between the various boards within the system. The GND line is the system's common power supply ground point. Fig. 3. The 6800 microprocessor 's instruction set. This is a list of the mnemonics available. A more complete explanation of the basic operations of the processor is found in Motorola's programming manual for the 6800 which is part of the SWTPC documentation package. ABA Add Accumulators ADC Add with Carry ADD Add AND Logical And ASL Arithmetic Shift Left ASR Arithmetic Shift Right BCC Branch if Carry Clear BCS Branch if Carry Set BEQ Branch if Equal to Zero BGE Branch if Greater or Equal Zero BGT Branch if Greater than Zero BHI Branch if Higher BIT Bit Test BLE Branch if Less or Equal BLS Branch if Lower or Same BLT Branch if less than Zero BMI Branch if Minus BNE Branch if Not Equal to Zero BPL Branch if Plus BRA Branch Always BSR Branch to Subroutine BVC Branch if Overflow Clear BVS Branch if Overflow Set CBA Compare Accumulators CLC Clear Carry CLI Clear Interrupt Mask CLR Clear CLV Clear Overflow CMP Compare COM Complement CPX Compare Index Register DAA Decimal Adjust DEC Decrement DES Decrement Stack Pointer DEX Decrement Index Register EOR Exclusive OR INC Increment INS Increment Stack Pointer INX Increment Index Register JMP Jump JSR Jump to Subroutine LDA Load Accumulator LDS Load Stack Pointer LDX Load Index Register lsr Logical Shift Right NEG Negate NOP No Operation 0RA Inclusive OR Accumulator PSH Push Data PUL Pull Data R0L Rotate Left R0R Rotate Right RTI Return from Interrupt RTS Return from Subroutine SBA Subtract Accumulators SBC Subtract with Carry SEC Set Carry SEI Set Interrupt Mask SEV Set Overflow STA Store Accumulator STS Store Stack Register STX Store Index Register SUB Subtract SWI Software Interrupt TAB Transfer Accumulators TAP Transfer Accumulators to Condition Code Reg. TBA Transfer Accumulators TPA Transfer Condition Code Reg. to Accumulator TST Test TSX Transfer Stack Pointer to Index Register TXS Transfer Index Register to Stack Pointer WAI Wait for Interrupt 75 The normally high HALT line when brought low halts the processor and frees the system information bus for external control. The INDEX line is an unused one and is provided so the pin on each of the male connectors may be cut with the corresponding female connector pins plugged, preventing the circuit boards from being plugged on incorrrectly. The IRQ is the maskable, single level interrupt request line feeding the processor board. If not inhibited by software it will when momentarily given a TTL zero level signal, force the processor into a push-down stack store routine followed by a program jump to a user selected address stored in the operating system RAM. The M. RESET line, when momentarily grounded manually, indirectly resets the registers internal to the processor and interfaces, and loads the ROM stored mini-operating system. This line is normally grounded by depressing the RESET button on the system's front panel. interrupt line feeding the processor board. When momentarily given a TTL zero level it forces the processor into a push-down stack store routine, followed by a program jump to a user selected address stored in the o perat ing system RAM. The NMI is not maskable thus cannot be inhibited by the programmer through software. §2 is one °f the two complementary system clock outputs and is used to signal that valid _data is _on the data lines DO - D7 when low. (|>1 is the non-overlapping clock complement of (j)2- and is low for a write to memory or interface. The NMI is the non-maskable, single level The RESET line when low resets the registers internal to the processor and interfaces, and loads the ROM stored mini-operating system. This line is activated by one shot on the M icroprocessor/System board when the system is first powered up or when M. RESET line is momentarily grounded. The R/W line establishes the direction of data flow on the eight data lines, DO — D7. It is high for a read from memory or interface VMA is the valid memory address line which goes low to confirm that valid memory address data is being presented on the 16 address lines, AO - A1 5. The UD1 and UD2 are user defined lines and have not been assigned a function. The —12 and +12 points are lines to which an isolated ground -12 @ 200 mA and +12 @ 200 mA power supply should be connected. The voltages are necessary for generating the currents required by 20 mA current loop Teletype equipment on the serial interfaces. The 7 - 8 VDC UNREG point is the line to which a +7 to 8 volt dc @ 10 Amp unregulated power supply should be attached. This voltage is then regulated down to +5 V dc by independent regulators on the various boards within the system. The five 110b, 150b, 300b, 600b, 1200b lines carry 1758.8, 2400, 4800, 9600 and 19200 Hz clocks required by the serial interfaces for 110, 150, 300, 600 and 1200 baud communication. Also attached to the 50-line system information bus are the interface decode and driver circuits. A considerable cost savings is made here by providing the address decoding and information bus buffering for all of the interfaces right on the mother board instead of providing it on each of the interface boards individually. Since each of the parallel interfaces require four address locations and the serial two, four addresses are provided for each of the interface positions. They are assigned as shown in the memory map, Fig. 2. Interface position 1 (8004 — 8007) is reserved for the terminal control interface. The signals carried on the interface information bus are almost identical to those on the system bus. UD3 and UD4 are here again User Defined data lines and RS0 and RS1 are Register select lines which are identical to address lines A0 and A1 respectively. Power for the address decode and buffer circuits on the mother board is provided by a separate on board regulator with a current consumption of typically 0.4 Amp. ■ (More SWTPC 6800 data is coming in BYTE.) Once youVe assembled and checked out the operation of your MP-68 kit, the result will be a product which looks like this. Note the complete absence of most of the usual control panel functions you might expect. This is achieved by using a serial communica- tions device such as a Teletype or an RS-232C compatible terminal as the "front panel." 76 COMPUTER EXPERIMENTER SUPPLIES FACTORY FRESH— PRIME QUALITY PERFORMANCE GUARANTEED MICROPROCESSORS AND MEMORY Commercial Grade — up to 35°C. 8008 $ 35.00 8080 135.00 2102 3.50 2102-2 4.50 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— +5 volt at 6 amp, +12 vat 200 ma . . .$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 First Person Report: Assembling an Altair 8800 by John Zarrella 90-9 Wakelee Rd. Waterbury CT 06705 I decided I would have to opt for a kit . . . this would enable me to get on line quickly. My adventure with microprocessors began rather late in the hobby game, at the end of 1974. It was about this time, or so it seemed to me, that micros became the topic of conversation in anything related to computers and automation. With the IMP-16, the 8080, 8008, 4004, etc., it became clear that this was what the computer market was waiting for. However, it was the article on the MITS Altair in the January 1975 issue of Popular Electronics which finally did it. Although inaccurate and vague, it certainly decided me — I was definitely going to own a micro. The next few months saw hurried mailings of information requests to any company which produced a product even remotely connected with a microprocessor. I immediately got out my checkbook, and mailed all my hard earned dollars to every newsletter that was published, in my frantic search for the "right" processor. The results were both rewarding and disappointing. I found that there were some Fig. 1. The schematic diagram of power supply circuitry, showing additional protection diodes. + 8V v (UNREG)> rr iA7805 ^■pCII I 35^F "* 16V R46 33ft + I6V 2W (UNREG)/* ""*- ICTE5 f J[ I J^ (REG) I CI2 I SCI _[_SC20 35/iF 16V I.5KEI5 R45 220ft -I6V . 2W (UNREG)/ vvv — J *'^ V X 16V Jj* (REG) TCIO 35/iF 16V rh i I C7 16V ICTE5 n D2 5.1V •C9 35/iF rh 16V rh 16V -5V "* (REG) •C8 •lj*F fantastic processors, but since my hardware background is not all that hot, I decided that I would have to opt for a kit with one of the most powerful micros I could find. I figured that this would enable me to get on line quickly, learn enough hardware to keep up with the state-of-the-art, and permit me to evaluate new micros as they came out, so I could build my "dream machine" when the right parts became available. I decided to build the Altair 8800. Although the instruction set looked rather impressive, what convinced me was seeing a process control system which used the 8080; I was truly impressed with its capability. The Order After calling in my order to MITS, I waited nearly seven weeks for delivery. MITS did make it within the advertised 60-day delivery time. All was not roses for those seven weeks, however; it seems that either MITS or Ban kAmericard got their signals crossed and couldn't get a credit authorization (they both eventually declined to accept responsibility). You can imagine what it was like getting a call during dinner, explaining that my unit was 78 ready to ship, but unfortunately . . . Luckily they agreed to ship it COD, and I quickly ran down to my bank to get a certified check. Every morning I left my wife with the admonition not to miss the delivery, and every day at lunch I called to determine whether or not my "computer" had arrived. (Did you ever try to ask your insurance agent whether you needed extra renter's insurance — "You keep a computer at home??!! What for?") Assembly Within a week of that call, I had the Altair in my hot little hands. "Are those little plastic parts all you get for $500.00?", my wife exclaimed, peering over my shoulder. Undaunted, I shooed her out and locked myself in the back room all weekend soldering PC boards. It took three weekends to complete the assembly (was it my fault I came down with pneumonia in the middle?). Ah yes, assembly. In general, I found that the MITS assembly instructions were well written. However, their additions were sometimes in the manuals in the wrong place (e.g., page 68A after 69). In at least one case (front panel control board) I had already tightened the panel in place (bolts on numerous switches), when I read that the nut on the little screw holding the voltage regulator to the board (accessible only with the panel out) had to be removed to add a grounding strap. Therefore it pays to check the manual pages carefully, and look two or three pages ahead to see if there are any little tricks sneaking up on you. As for the parts, only one resistor was missing; however, out of all the screws and bolts supplied with the kit, I could never find the right one to fit. Maybe it was my own stupidity, but it seemed that Of all the assembly, the worst (and easiest to mess up) part was correctly connecting the 60 bus wires between the display /control board and the chassis motherboard. the last bolt of any given size was always supposed to be used in at least 10 more places. I found that it pays to have a good assortment of screws and bolts (number 6, various lengths !4" to %") to permit f r u st rationless assembly. All soldering and component placement was easily accomplished — positions were clearly marked on the boards and in the manual. This is high praise since I hadn't built many kits before; and of these, none were this large. Of all the assembly, the worst (and easiest to mess up) part was correctly connecting the 60 bus wires between the display/control board and the chassis motherboard. I used an Ohmmeter to assure that each connection was correct and that there were no solder bridges to the other bus lines. There's got to be a better way. I hear Processor Technology, Inc., is currently marketing a 16-slot motherboard (on the Altair you have to jumper four of the four slot boards together, only one of which comes with the kit), and an improved connector for the display/control board. These will definitely be my first additions. I made only one modification to the circuit during assembly. That modification was to add three protection zeners to the CPU board. Fig. 1 shows the electrical connections for this change. These were inserted to protect the 8080 chip (still pretty expensive in singles) from power supply failure. These zeners should ground out overvoltagcs at currents up to 100 Amps. ICTE5s were used for the +5 V and -5 V lines to the 8080 and a 1.5KE15 for the +12 V. The zeners on the CPU board arc illustrated in Fig. 2. I also added sockets for the 8101 RAMs, cleaned all boards with trichloroethylene solvent, and inspected the finished boards with a magnifying glass. I would highly recommend these procedures as they helped me find more than one solder splash and cold solder joint. The Big Test On the fourth weekend I got up the courage to mount the 8080 and 8101s. Then came turning on the power and checking voltages. Everything looked good, with very little ripple from the Fig. 2. Detail of the additional protective diodes mounted on the Altair CPU board. Did you ever try to ask your insurance agent whether you need extra renter's insurance for a computer? Additional zener diodes for overvoltage protection. 8080 Central Processor 79 Fig. 3. Adding a parallel capacitance of .0047 uF to C8 of the Altair CPU board schematic lengthens the data out enable line time so that memory write does not extend longer than the data out time. EXM NXT DEP DEP NXT EXM NXT SS 1/2 71123 K TO MWRITE LINE •5V N JD- DEP SS 1/2 74123 DEP NXT SS 5 Rll C9 on-card voltage regulators. Finally the big test: Run a program. This is where the only problem finally showed up. I stopped and reset the CPU, set the switches for my spectacular program (J MP 0) and would you believe it, "deposit" wouldn't work. An hour later I had determined that all other panel switches worked correctly (including deposit next), and that the deposit switch itself was in good order. In order to initially get around the problem I had to examine location 177777 (all address bits 1), then use deposit next to get to location 0. A study of the schematics showed that deposit and deposit next use the same circuitry, except that deposit next first does an examine next. You can verify this visually by loading all ones into the first 10 locations of memory. Then, if you use deposit next to change all the locations to zero, by carefully watching the data LEDs, you will notice that they all flash on as the switch is activated (examine next) and immediately go off again as the deposit is performed. I concluded that the problem had to be in the liming, since the circuits were ■GND C7 R9 I/2 74I23 F I) l-»-W\r cio RI2 ■GND TO DATA OUT ENABLE ' (SWITCHES SA0-SA7) I/2 74123 G C8 .01 /iF '►Al-o-vw ■ GND ► 5V RIO -)M MODIFICATION C = .0047/iF otherwise identical. Sure enough, when I looked at the signals on a scope, lo and behold, when a deposit was performed, the memory write line was enabled for approximately 20 ns more than the data out line. There are two oneshots in the deposit circuit; the first enables the memory write line, and the second enables the data out line. The memory write problem was cured by increasing the capacitance on the second deposit oneshot. An increase of .0047 uF (which increases the data out enable time by at least 30 ns) proved sufficient. This was obtained by adding the .0047 uF capacitor as shown in Fig. 3. When building the Altair, this means that C8 (front panel control board) should be approximately .0147 uF; if the b o a r d is already assembled into the case, a .0047 uF capacitor can easily be soldered onto the back of the board without removing any components from the case. (Be sure to unplug the computer before making the change, however.) Fig. 4 shows placement of the new capacitor and the change to the Altair schematic diagram. I feel that the kit is reasonably well made and a good buy — at least at the current 8080 single lot prices, though the add-on options may cost somewhat more than elsewhere. My plans for my unit currently involve addition of vectored interrupts (a 9318 or 74148 8-bit to 3-bit priority decoder is about all that's needed to translate the eight vectored interrupt lines on the bus into an RST instruction), a real-time clock, monitor clock and some type of I/O (teletype, CRT, etc.). ■ Fig. 4. The additional .0047 uF capacitor is mounted on the rear of the control panel board. £ •■ i'~ i Solder the additional capacitor to the rear of the control panel board. Modify this section of your schematic. 80 At last! High quality, laboratory-grade test instruments . . . for the professional and hobbyist ... at prices everyone can afford! i 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-1 5V voltmeter to monitor internal power and/or external circuits. Now, that's design flexibility! And look at the low, low price! 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-IOOOHz, MOKHz, 10-100KHz). Dial Accuracy: Calibrated @ 10Hz, 100Hz, 1KHz, 10KHz, freq. accurate to 5% of dial setting. Wave Forms: Sine <2% THD over (req. range. Triangle wave linearity, <1% over range. Square wave rise/fall <0.5 microseconds — 600I)-20pt termination. Output Amplitude: (all wave forms) variable-0.1 V-10V peak to peak into open circuit. Output Impedance: 600n-constant over ampl./freq. ranges. Wght.: 2 lbs. Power Needed: 117V, AC @ 60Hz5W.* 3 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: 10(1-100 megH. (6 Ranges: 10-ioon, ioo-iooon, iK-ioKn, iook-1 megn, 1 megn-10 megO) Capacitance Range: 10pFd-1 60Hz 3W.* 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. corrrinerrmi /peciniTie; coRPORRTion 44 Kendall Street, Box 1942, New Haven, CT 06509 • 203/624-3103 West Coast Office: Box 7809, San Francisco, CA94119 • 415/421-8872 Canada: Len Finkler Ltd., Ontario © Copyright Continental Specialties Corporation 1975 Can YOUR Computer Tell Time? by James Hogenson Box 295 Halstad MN 56548 FROM MAIN PROGRAM SET VALUE OF REGISTER DECREMENT REGISTER Fig. J. The idea of a timing loop, or how to make a CPU waste time productively. RETURN TO MAIN PROGRAM Loops are the basic time delay elements. Then there are loops within loops, loops within loops within loops and so on ad infinitum. Can your computer tell time? O.K. Now take away the LSI clock chip, pocket watch, grandfather clock, or whatever else you managed to interface together. Can your computer still tell time? You bet it can! It is a readily accepted fact that almost any type of hardware logic device can be imitated or simulated by computer software. That can also include timing devices if you wish. We will examine a few methods and considerations for software timing, then apply what we've learned in making a novel "software only" clock which will keep time as well as any conventional clock. The most efficient method (efficient referring to memory space used) to produce a time delay is the use of a loop. This loop is basically very simple, as shown by Fig. 1. By including NOPs or other non-functional time wasters in the loop, the loop can be significantly stretched. An 8008 is being used in the examples in this article, but the principles hold for any computer. Only the numerical values will change. The loop represented by Fig. 1 for an 8008 would be a simple three instructions (six bytes) long. LBI ~] „ x „ LOAD DEL AY /*• DCB DECREMENT "X" ' JFZ vT L JUMP BACK |_ H UNLESS X = The value of "x" loaded into the B register will be the main factor in varying the time delay provided by this loop. Calculating the exact time period is done by tabulation of instruction execution times. These examples will be based on the 8008 instruction execution times with the clock running at exactly 500 kHz. To calculate the time for this loop, assume the value of "x" to be 1 so no part of the loop is repeated. Add up the number of microseconds required by each instruction. LBI = 32 US DCB = 20 US JFZ = 36 US 88 US Now go back to determine how many microseconds each repetition of the loop will produce. The LBI instruction is not repeated. Do not count any unrepeated instructions in this second tabulation. DCB JFZ 20 US 44 US Note the different execution times for the JFZ instruction. For the 8008, the execution time of conditional instructions depends upon the condition. If the condition results in a true branch, the instruction takes the longer of the two execution times. The false branch is the shorter time. The time formula for this loop is 64X + 24 = N "x" being the value loaded into B and "n" being the total execution time in microseconds. The unreduced formula is (X - 1 ) 64 + 88 = N Since 64 us are added for each repetition, we must multiply 64 by one less than the value of "x." 255 is the largest possible value of "x" since we are limited to an 8-bit word. Therefore, the maximum time delay that can be provided by this loop is 16344 us. This loop can be stretched by placing a NOP instruction (op code 300) before the DCB, and re-routing the jump. LBI SET VALUE OF "X "x" NOP ABSORB EXTRA 20 US DCB DECREMENT "x 1 JFZ JUMP BACK TO NOP L UNLESS X = O H If desired, more than one NOP may be inserted. Each NOP will add another 20x microsedonds. The maximum time with one NOP is 21444 us, the NOP adding 5100 us. If a timing loop is to be used a number of times at 82 various points in a program, it may be desirable to rewrite the loop as a called subroutine. The basic flowchart remains unchanged; only the method of implementing it changes. (MAIN PROGRAM ) CAL CALL L TIME H LOOP SET VALUE OF "x" DECREMENT "x" RETURN IF "X" = JUMP BACK TO DCB Tabulation will show that the basic loop is good for 1 16 us with each repetition adding 76 us. The reduced formula is 76X + 40 = N This loop is a little more complex. Although the CAL instruction which calls the loop is not a part of the loop itself, the execution time of the CAL instruction is a part of the time period produced. We, therefore, must add 44 us for the CAL. As done before, we assume the value of "x" to be 1 for the first tabulation. The RTZ will be a true branch, so we stop adding there. An RTZ true branch will take 20 us, while an RTZ false branch will take 12 us. Each repetition will add 12 us for the RTZ, 44 us for the J MP, and 20 us for the DCB instruction. The unreduced formula is (X - 1)76 + 116 = N NOPs placed before the DCB instruction will have the same effect as in the first loop, an additional 20x us per NOP. The maximum time period produced by this second loop with one NOP is 24520 us. The minimum time period without any NOPs is 116 us. Anything under 116 us can be more efficiently implemented with straight NOPs than with a loop, should such a need arise. If a time period much longer than 24000 us is needed, modify the time loop to make a double loop as shown in Fig. 2. Make an identical loop, but rather than using a NOP for more time, insert an entire loop. (BEGIN ^ LOOP J SET VALUE OF Y SET VALUE OF SET VALUE OF DECREMENT X JUMP BACK TO IF "x" * DECREMENT "Y RETURN IF "Y JUMP TO LBI DCB " = Time calculations for multiple loops become somewhat more complex, but again the same principle is used. The inside loop used here is the same loop first calculated at the beginning of this article. When calculating the main loop, the inside loop is treated as one combined unit of value. The tabulation will look like this: MAIN LOOP: CAL LCI INSIDE LOOP = DCC RTZ 44 US 32 US { 64X + 24 ) US 20 US 20 US (64X + 140) US EACH REPETITION OR TRUE BRANCH WILL ADD: RTZ = 12 US JMP = 44 US INSIDE LOOP = ( 64X + 24 ) US DCC = 20 US ( 64X + 100 ) US The formula, unreduced, would be 64X + 140 + ( Y-l ) ( 64X + 100) = N Reducing the formula gives us 64XY + 100X + 40 = N ( RETURN J Fig. 2. Getting fancy. By nesting one timing loop within an outer loop, much longer delays can be obtained. Two parameters "x" and "y" are re- quired to completely specify this loop. In a 16-bit machine, of course, the same result (here intended for an 8-bit 8008) can be obtained without nested loops since the 16-bitter can count much higher. The maximum time delay provided by this loop would be 4187140 us. A NOP inserted at location "a" will add 20y us. A NOP at "b" will add 20xy us. The use of both NOPs will boost our maximum time to 5492740 us, or over 5 seconds. The purpose of developing formulas is to determine the values of the registers needed to obtain a specified time period. For purposes of illustrating an example, let us assume we want exactly 5000 us to pass between point A and point B of a program. We would place a CAL instruction between point A and point B which would call the time loop. The shorter loop will be sufficient for this application, so the equation will now be 76X + 40 = 5000 Working the equation will give a value of 65.23615 . . . for "x." A fractional value will not fit in any single register of the CPU. To find out what to do now, multiply 65 by 76, add 40, and subtract the result from 5000. We find the difference 83 is 20 us. This is very simple to take care of. Insert a NOP instruction at any point in the routine where it will not be repeated. Before the LBI instruction would do fine. Now, with 65 (decimal notation) loaded into the B register, exactly 5000 us will pass between points A and B of our main program. Finding an exact time period using the longer loop involves a certain amount of trial and error. To find an approximate value of "x" (using no NOPs) use this formula: ( N-40 -\ * -(-W)- l ' 5 Assign an arbitrary value to "y," replace "n" with the required time period. Now, assume a time period of exactly 505904 us is needed. (This time period will be used later.) There is one stipulation in this case which will be explained in greater detail later. The value of "x" must be 255. Solving the formula equation for "y" ( 64 ) ( 255 )Y + 100Y + 40 = 505904 gives "y" a value of 30.8078. 30 must be used for "y." The total time of the loop is then 492640 us, 13264 us short of the required time. In most cases, you would re-assign values and try again, but in this case, the value of "x" cannot be changed. The alternative is to use the shorter loop to clean up the leftovers. After calling one loop, call the other loop. Then go on with the main program. Solving the short loop equation comes out at a nice even 174. 76X + 40 = 13264 What looked like a real oddball turned out to be perfect! The formulas and all such may seem like a lot of monkey business just to waste time. Speed is the purpose of computers, but there are times when they must be slowed down. The primary application of time loops is in I/O interface. If a computer is to monitor a data input which is to be read once every 10 ms, there are two alternatives for timing. The hardware of the device being monitored may include a timing device and a flag to indicate when the device is ready. The computer enters a loop which monitors the flag until the device is ready, then reads the data. The other alternative is to use the software time loop, and omit the extra hardware. An interesting application along this line is a completely software "fabricated" keyboard debounce system. This method will not work in an interrupt type of input system, but for many small scale systems, this method is ideal. Rather than connecting the key pressed line of the keyboard to some debounce, timer and latch circuitry, connect it to the eighth bit of the parallel data input on the computer. The loop used will test the eighth bit for the keypressed state. When a keypressed is sensed, a time loop of 1 6344 us is executed, then the data input is accepted. The loop then branches back to the main program to take care of the new data. When the program comes back to the input loop, the keypressed line is first tested to be sure no keys are being pressed. After all keys have been released, the loop will wait for the next keypressed state. This procedure will prevent more than one data entry from each keystroke. When I first tried this keyboard debounce method over five months ago, I was so pleased with it that I'm still Fig. 3. Software can be used to debounce a keyboard — simply loop around for a long enough time to ensure that keys have stabilized. The loop is started as soon as the "any key pressed" (keypressed) line indicates any non-null bit pattern. TEST INPUT FOR KEYPRESSED. WAIT UNTIL CONDITION IS SATI SFIED TEST INPUT FOR KEYPRESSED, WAIT UNTIL CONDITION IS SATI SFIED EXECUTE TIME DELAY ACCEPT INPUT OF DATA JUMP TO MAIN PROGRAM (MAY BE REPLACED WITH A RETURN INSTRUCTION.) INCREMENT TIME COUNT I UPDATE DISPLAY ' INITIATE TIME CYCLE Fig. 4. The digital clock program looks simple at this level: Incre- ment the time count, update the display, then initiate a time cycle such that the entire loop takes exactly one second! using the method for all data entry to my microcomputer. Not once has it missed some data, or given me false or duplicated data. And it was so easy to implement! Time loops may also be used in output applications. I have an SWTPC TV typewriter, but I am not using the special computer interface board. I found that a simple time loop does the job well enough and fast enough. Since we've done our homework, now we can play. An interesting and novel application of time loops is a completely software "fabricated" clock. The clock program presented here will have three major functions (see Fig. 4). The clock will display hours, minutes and seconds. The "increment time count" segment of the program is responsible for computing the next time reading in sequence. It must consist of more than a straight counting sequence since time is not expressed in straight decimal format. The "update display" segment is responsible for producing the newly computed time at an output device. After the first two segments have been executed, 84 Fig. 5. Ah, but the simplicity of Fig. 4 - as this figure reveals - hides a tot of low level detail. Here is the flow chart of the clock's operations. E> r 1-1-3 5 3 < oia: <3 — WOO Wo)l_ LuncD < Q. Ld ■ \- L I I>S SPACE = a a a a a a B = a?%s:Za ! aWa C = a~! !Ra " aGaGa D = a? ! !^a H = aJ?J?Ja b = a?%s ! a s = aRj;?)Pa F = a?EEAa % = aSK42a G = a^! ) : Ha & = a^-^ [ s H = a?DD?a t = aGa 1 = a ! ? ! a ( = a "> ! a J = aP ?a ) = a ! "a K = a?LR!a * = aRL?LRa L = a? a = - aLLLa M = a?BDB?a - = aDODa N = a?BDH?a a = a\" - . Pa U = a? ! ! ?a 1 = a? ! a P = a?I IFa \ = aADH a = a A ! i>a + = ai . sa R = a?IY&a = a rt >a S = aV+ )Za /\ = asB?Bsa 1' = aAA?AAa 1 = a ! ?3 U = a? ?a < = aLR ! a V = aOP POa > = a!RLa w = a?PHP?a = axes X = a ! RLR ! a = aXXa Y = aAB0 AT YOUR DISTRIBUTOR *J.U*J 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 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% = I PLEASE SEND. RESIDENTS ADD 4% 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: ADDRESS. .STATE & ZIP. CMR COMPUTER MANUFACTURING CO. P.O. BOX 167, 1921 DOGWOOD LANE VIENNA, VIRGINIA 22180 97 What You Can Do With an Oscilloscope Graphics Display Sumner Loomis, Route 1, Box 131, Prairie Point MS 39353, supplies us with some additional illustrations of what can be done with the oscilloscope graphics display unit he built based upon the design of Jim Hogenson in BYTE #2. The barking poodle is self-explanatory. The second picture is a histogram of some experimental data which is being displayed by the graphics output device. 16K MS MOM KIT LESS THAN 5.5 C! WORD 16,384 8-BIT WORDS ON ON ONE CARD WITH PIGGY-BACK ONLY $895.00 • PLUG DIRECTLY INTO 8800 • LOW POWER: + 8 TO +10V, LESS THAN 600 mA +15TO+18V, LESS THAN 100 mA -15 TO-18V, LESS THAN 30 mA • TOP 4K WITH PROTECT-UNPROTECT • USES LOW POWER SCHOTTKY TTL • MEMORY CHIPS SOCKET MOUNTED • 50/50 GOLD-PLATED EDGE CONTACTS • EPOXY BOARDS WITH PLATED THRU HOLES • JUMPER PROGRAM 16K ADDRESS SLOT • 8080 HOME BREW COMPATIBLE • 420nS ACCESS DYNAMIC RAM • NOT A FLAKE INTRODUCTORY SPECIAL ON ORDERS RECEIVED BEFORE 1/1/76 • • Take $50 Discount •• Take Free 50/50 Edge Connector • • Pay No Shipping Charges WRITE TO DA VE (K6LKL) at DUTRONICS P.O. Box 9160, Stockton CA 95208 ♦SPECIFY KIT 16KMDY *CALIF. RES. ADD SALES TAX •MASTER CHARGE - OK ♦BANKAMERICARD - OK Course in Virginia A course entitled "Digital Electronics for Automation and Instrumentation" will be given at Virginia Polytechnic Institute and State University, Blacksburg VA, on Dec. 7-12, 1975. Instructors are David G. Larsen, Dr. Peter R. Rony, Jonathan A. Titus and Dr. Frank A. Settle Jr. The course uses Bugbooks I, II and /// as text (see review of Bugbook III on page 108). The course is an "in-depth laboratory/lecture course [which] provides hands-on experience with the wiring of digital circuits of modest complexity involving popular and inexpensive TTL integrated circuit chips . . ." Enrollment is limited to 24 persons, $325 to members of the American Chemical Society, $360 to non-members. To register or obtain additional information, contact Harold Walsh at the Education Dept., American Chemical Society, 1155 16th St., N.W., Washington DC 20036 (phone 1-202-872-4600). Technical questions about the course can be answered by calling Mr. Larsen at 1-703-951-6478 or Dr. Rony at 1-703-951-6756. Out of Context . . . A. M. Biguity provides BYTE with the following note which he found in the Fairchild Semiconductor 34000 Isoplanar CMOS Data Book, page 2-8: "Individuals and tools should be grounded before coming in contact with 34000 devices . . ." "The trend is to stay upwards compatible with all previous bugs." Prof. Niklaus Wirth in a 1972 compiler construction course at Stanford University. 98 JAMES ELECTRONICS P.O. BOX 822 BELMONT. CALIFORNIA 94002 (415) 592 8097 WALL or T.V. DIGITAL CLOCK 12 or 24 Hour, 25' VIEWING DISTANCE, Walnut Case-6"x3"xV Hr. & Min.-6" High, Seconds-3" High Kit-All Comp. & Case - $34.95 Wired & Assembled - S39.95 POCKET CALCULATOR KIT 5 function plus constant-addressable memory with individual recall— 8 digit display plus overflow- battery saver-uses standard or rechargeable batteries- all necessary parts in ready to assembly form- instructions included. 3"x SV»" SPECIAL S12.95 each OPTIONS- 115 VAC Transformer 4.95 each 6 each "N" Alkaline Batteries .... 1.95 lot ^ 11 Hies a MAN3 rudotlt to if the following states by then 1 (LOW)-o (PULSE)-P The tact high frequency ' ,ulses '° an'l be used .1! MOS levels at LOGIC PROBE ,^> printed circuit board $9.95 Per Kit MINI POWER SUPPLIES These power supplies offer small size, with a wide choice ot voltage outputs. They ate all capable of delivering 300mA ami have dimensions ol 1" x 1" x 3". The voltages available are +5V, -5V, +6V, -6V, -H2V, -12V. All ol ihess units easily assemble in less than a half an hour, because of the fiberglass printer! circuit hoard construction. Picnic specify voltage when ordering. $9.95 per kit LOW COST DIGITAL CLOCK KIT Other companies have altered a low cost digiial clock kit. but da no: alter mportam extras such as, primed circuit boards, power supplies cases, etc. We at James arc doing just Ihe opposite by offering a complete clock kit, that includes everything down to the line cord. This kil uses .25" END 70 displays, for HOURS, MINUTES, and SECONDS, in conjunction with the MM53H clock chip. The printed circuit board is of high quality fiberglass, which is plated. The case is a 6 x IV; x 1 walnut case with a plexiglass Iron t, and is similar to the one in Dur TV WALL Digital clock. K is available wilbnut the case for S1B.95. $19.95 per kit. ELECTRONIC ROULETTE Complete kit with all components case and transformer. 8" x 8" x 1" A 56 page book on the facts of Roulette included. $29.95 Per Kit ELECTRONIC CRAPS & m Complete kit with all components case and transformer. oe- A 56 page book on the facts ' of Craps included. $19.95 Per Kit Satisfaction Guaranteed. $5.00 Min. Order. U.S. Funds. Add $1.25 for Postage — Write for FREE 1976 Catalog California Residents — Add 6% Sales Tax P.O. BOX 822, BELMONT, CA. 94002 PHONE ORDERS - (415) 592-8097 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 99 Clubs and Newsletters San Diego Club Activities The San Diego Computing Society (for lack of a more permanent name) sent BYTE a copy of an August 1975 newsletter. The newsletter included information on club activities as well as a lengthy and wide-ranging comparison of various alternatives for microprocessor users, written by member Dr. Michael Hayes. The article covered possible choices from existing uP evaluation kits to the LSI-11. News of club activities in eluded a scheduled meeting with speakers from Processor Technology Inc. to demonstrate their products which included the new TV-Dazzler color television graphics display device. For information on the San Diego Computing Society, write: Gary Mitchell Box 35 Chula Vista CA 9201 2 Membership dues (which bring the newsletter to your mailbox) are $2.50. Southern Florida Club? Roberto R. Denis (1 1080 N.W. 39 St., Coral Springs FL 33065) inquires about club activity in southern Florida. He's interested in contacting persons and starting a club. Denver Amateur Computer Society George Mensik, proprietor of Gateway Electronics in Denver, called BYTE as #4 goes to press. He reports a large and active Denver Ama- teur Computer Society exists (over 100 members) with interest in computer activities. The DACS meetings include talks by industry people as well as tutorial sessions and special interest gatherings. George's store also serves as a general meeting ground for the Denver area. You can find out about the DACS by contacting George at Gateway Elec- tronics, 2839 W. 44th Ave., Denver CO 80211 (phone 1-303-458-5444). News from the Southern California Computer Society The September 1975 issue of Interface, the SCCS's lively newsletter, arrived as BYTE #4 was being assembled in late September. The SCCS people have put together an excellent and informative club letter — running 15 pages in the Vol. 1 No. 1 issue, just for September. In addition to reports on club business matters, the major portion of the letter concerns information and background data of general interest. The newsletter is sent to members. To become a member, send $10 annual dues plus your complete name, address, zip and telephone information to: Southern California Computer Society PO Box 987 South Pasadena CA 91030 In phone conversation with Hal Lashlee of SCCS (I -21 3-682-31 08) BYTE learned a few details of the group purchase of Digital Equipment Corporation LSI-1 I computer equipment. The basic deal is that the SCCS will pool individual orders for the DEC equipment to obtain quantity discounts at the 50-, 100- and possibly 200-level price breaks. Orders will be made initially on the assumption of 50-quantity purchases, at the following prices for equipment: LSI-11 CPU (4K x 16 memory, PDP-11/40 instruction set), $653. LA-36 DECWriter (30 CPS terminal), $1480. The SCCS is in the process of securing a fidelity bond for the offer, and, according to Hal, has made arrangements for MasterCharge and BankAmericard payment for orders. A fee for the service — intended as a contribution to the club's activities — is set at a minimum 2% of the order value. Larger contributions are of course solicited to help pay for the club's operation. It also looks as if the SCCS will be starting the first active LSI-11 computer users group as a result of this purchase activity. If you're interested, Hal says that inquiries accompanied by a large self addressed stamped envelope should be sent to the Southern California Computer Society at the address above. New England Computer Club An organizational meeting of the New England Computer Club has been scheduled for Nov. 5, 1975. A tentative meeting place, arranged by Ted Poulos of Brookline MA, is at the Jarrell-Ashe plant, Waltham MA. Boston and southern New Hampshire area computer hackers who want to be on the mailing list for future meetings should send their name and address information on an index card or IBM card to: New England Computer Club c/o BYTE Magazine Peterborough NH 03458 Chicago uP Users Group The Chicago Area Microcomputer Users Group met for the first time in September, with about 30 attending. For latest information, contact Bill Precht, 1102 S. Edson, Lombard I L 60148. 100 MC 14412 UNIVERSAL MODEM CHIP MC14412 contains a complete FSK modu- lator and de-modulator compatible with foreign and USA communications. (0 — 600 BPS) FEATURES: • On chip crystal oscillator • Echo suppressor disable tone generator • Originate and answer modes • Simplex, half-duplex, and full duplex operation • On chip Sine Wave • Modem self test mode • Selectable data rates: - 200 0-300 0-600 • Single supply VDD = 4.75 to 15 V DC -FL suffix VDD=4.75to6 V DC -VL suffix TYPICAL APPLICATIONS: • Stand alone — low speed modems • Built-in low speed modems • Remote terminals, accoustical couplers MC 14412 FL 28.99 MC 14412 VL 21.74 6 pages of data 60 LED Mounting Hardware (Specify bezel color) 1750-04 (4 readout) $ 7.00 1 750-06 (6 readout) $ 9.00 1 750-08 (8 readout) $1 1 .00 Screen available in red, amber or neutral color 2102-1 MEMORY 1K fully encoded fast (500ns) MOS RAM. New factory prime parts . . .$4.15, 10/$39.00 MC14411 Bit Rate Generator. Single chip for generating selectable frequencies for equip- ment in data communications such as TTY, printers, CRT's or microprocessors. Generates 14 different standard bit rates which are multiplied under external control to 1X, 8X, 16X or 64X initial value. Built-in crystal oscillator circuit. Operates from single +5V supply. MC14411P with specs $22.40 Output Ratal (Hz) X64 X16 X8 X1 614.4 k 153.6 k 76.8 k 9600 460.B k 115.2k 57.6 k 7200 307.2 k 76.8 k 38.4 k 4800 230.4 k 57.6 k 28.8 k 3600 153.6 k 38.4 k 19.2 k 2400 115.2 k 28.8 k 14.4 k 1800 76.8 k 19.2 k 9600 1200 38.4 k 9600 4800 600 19.2 k 4800 2400 300 12.8 k 3200 1600 200 9600 2400 1200 150 8613.2 2153.3 1076.6 134.5 70355 1758.8 879.4 109.9 4800 1200 600 75 921.6 k 921.6 k 921.6 k 921.6k 1.843M 1.843M 1.843M 1.843M Clock Chip. The MM5318 is an excellent choice for TOD clock all by itself. The display interface has externally selectable character. This allows for outputting one digit at a time to the BCD or 7 seg busses under external control. Useful for computer real time clocks, TV display, serial character transmission. With specs. MM531 8 Clock Chip $7.40 RECEIVER TRANSMITTER UART-1013A is an ideal device for driving computer peripherals such as teletypes & video terminals. NEW, factory fresh parts. Made by General Instruments. Full specs. New low price! URT-1 01 3 A $1 0.95, 2/$1 9.95 ASCII KEYBOARD ENCODER National MM5740AAE. Complete keyboard interface system capable of encoding 90 single pole single throw switch closures into 9-bit ASCII code. Silicon gate technology and is TTL input compatible. Has N Key rollover, one character data storage, repeate function, capacitor key bounce masking, with spec sheet. MM5740AAEN $19.95 INTERSIL 8038CC Precision Waveform Generator/Voltage Con- trolled Oscillator. Wide Frequency Range of Operation 0:001 Hz to 1.5 MHz Variable Duty Cycle 1% to 99% #IIC8038 . . . with specs $3.95 7 SEGMENT DECODE/DRIVER/LATCH Fairchild 9374 TTL/MSI is a 7 segment decoder driver incorporating input latches and output circuits to directly drive common anode LED displays. Constant current 15 mA sink eliminates need for matching resistors. Automatic zero blanking. Transparent latches. Pin compatible with SN7447. FDL-9374 $2.99 TV CLOCK CHIP SET. Display time of day directly on your TV screen. MM5318 and MM5841 ICs form the basis for video display clock. 5318 keeps time of day (4 or 6 digit) and 5841 provides display video signals with sync derived directly from your set. Makes most interesting way to tell time of day during TV hours. MM5841/MM5318 Set with specs . . . $20.80 I C SOCKETS. PC Mount . . . Solder Skt-0802 ... 8 pin . . Skt-1402. . . 14 pin. Skt-1602. . . 16 pin . Skt-1802. . . 18 pin . Skt-2202 ... 22 pin . Skt-2402 ... 24 pin . Skt-4002 ... 40 pin . Wire Wrap Tails Skt-1400. . . 14 pin . Skt-1600. . . 16 pin . HIGHEST QUALITY! Tail 254, 10/$2.25 . 264, 1 0/$2.40 . 304, 10/$2.70 .454, 10/$4.25 .604, 10/$5.50 . 654, 10/$6.00 .$1.25, 10/$11.00 . 494, 10/$4.50 . 554, 10/$5.00 EXAR! XR-320 Precision timer $1.55 XR-2240 Prog. Counter/timer 4.80 XR-210 FSK Demodulator PLL 5.20 XR-205 Waveform Generator 8.40 XR-2206 Function Generator 5.50 XR-2207VCO 3.85 EXAR XR-2206KA Function Gen Kit. Includes monolithic function generator IC, PC board, parts list and assembly instruction manual $1 9.95 PRECISION LAB QUALITY REGULATOR MC1466L chip can be used to build a high quality voltage and current adjustable power supply. Available output current limited only by the supply and the number of pass transistors. Floating type regulator allows voltage variation from to 250V! .01% line and load regulation. MC1466L w/specs $8.55 DUAL ± 15V TRACKING REGULATOR MC1468L 14 pin DIP Package. FEATURES: Output current to 100 mA > •Line and load reg. .06% •External adj 8 to 20V •Remote sensing MC1 468 L w/specs $4.95 T0-92 VOLTAGE REGULATORS If your project needs only 100 mA or less, use these tiny plastic regulators right on your PC board. Same size as a plastic transistor. Save space and $. Last 2 digits denote voltage (positive). LM78L05, LM78L12, LM78L15. 854 1/2A Regulator. Fairchild 78MGT2C positive and 79MGT2C negative regulators are adjust- able from 5V to 30V with only 2 external resistors. Only 1 resistor for +5V (±.2V) from the 78 MGT2C. Comes in 8 pin minidip package format with heat tabs for attaching to PC board or heat sink. Easily connected for ± tracking supplies. 78MGT2C (pos) or 79MGT2 (neg) $2 5V, 3A T0-3 Regulator. Fairchild SH323KC monolithic regulator in TO-3 power package. Use it with the same ease of installation as the famous 309K (same pin arrangement). Take care of those heavy current requirements without separate regulator/pass transistor combinations. SH323K3 5V, 3A $9.95 MINIATURE ROCKER DIP SWITCHES Dual in-line SPST switch arrays for P.C. mounting. Spring loaded sliding ball contact system for positive, tease proof contact. Comes in contact arrangements from 4 to 10 per pack. Fits standard DIP sockets. Last two digits of stock Vindicate number of switches. DIS-76B04 $3.10 DIS-76B06 $3.50 DIS-76B07 $3.75 DIS-76B08 $3.95 DIS-76B10 $4.35 tRi tek, inc. P.O. BOX 14206, DEPT 7 PHOENIX, ARIZONA 85063 101 •••■■■II •lllllll the 6000 SERIES COMPUTER FAMILY ■iimii OHIO SCIENTIFIC INSTRUMENTS IS NOW OFFERING A COMPLETE LINE OF PIN COMPATABLE BUS ORIENTED 8BIT lMhz MICROPROCESSORS AND SUPPORT CHIPS BY MOTOROLA, AMI, MOS TECHNOLOGY AND OTHERS. EACH MICROPROCESSOR COMES COMPLETE WITH SUPERBOARD: A COMPLETE MINICOMPUTER P.C. BOARD (DOUBLE SIDED EPOXY ) WHICH ACCEPTS ANY 6000 SERIES PROCESSOR, SYSTEM CLOCK, 2- 1702 TYPE ROMS, IK X 8 RAM (2102 TYPE), 1 PIA , 1 ACIA, CURRENT LOOP AND PARALLEL INTERFACES AND HAS BUS EXPANSION CAPABILITIES. 6800 6501 AND SUPERBOARD- DIFFERENT INSTRUCTION SET, BUT JUST AS FAST 6502 AND SUPERBOARD- •THE TOP OF THE LINE" 99 49°" 54 00 AND SUPERBOARD- A 6501 WITH INTERNAL CLOCK ALSO AVAILABLE- SYSTEM MONITOR ROMS, PROMS, RAM, PIAs, ACIAs, UARTs , AND BUS TRANSCEIVERS RAM- ROM MEMORY EXPANDER BOARD SUPER I/O BOARD CONTAINING CASSETTE INTERFACE; X,Y DISPLAY AND A/D CONVERTER . COMING SOON- VIDEO GRAPHICS BOARD FIRMWARE BASIC BOARD (USES ROM AND CALCULATOR CHIP) ALL CHIPS ARE FULL SPEC. INDUSTRIAL QUALITY COMPLETE WITH FACTORY SPEC. SHEETS, SUPERBOARD, AND OUR OWN APPLICATION SCHEMATICS AND NOTES. CALL (216)-653-M8<* OR WRITE TODAY FOR OUR FLYER AND OUR NEW APPLICATIONS NOTE "THE 6000 SERIES BUS." D5I OHIO SCIENTIFIC INSTRUMENTS P.O. BOX 374, HUDSON. OHIO 44236 NEVER YOU MINI) OCCUPANT BOX BYTE PETERBOROUGH NH 03458 BIT COLLECTING Editor, First let me congratulate you and your staff on an extremely interesting and informative first issue. It is definitely the best first issue of a magazine that I have ever read. I, like thousands of others, decided on subscribing to BYTE after collecting a few bits of information concerning what you intended to publish. I was very pleased to see that you managed to get all the bits together to form a BYTE! I believe that while the MITS people have set the standard for "the affordable computer," the BYTE people are now setting the standard of how to educate people in using it! 1 was particularly interested in the comments of one reader regarding the playing of games between computers. I intend to develop a CHESS program for my Altair 8800, probably in MITS 8k BASIC language. I would like to correspond with all the people out there who share the same interest. While on this topic, I should say that I would like to see some competitions between small computers classified according to core size, instruction set, cost or whatever else will encourage people to pack the most efficiency and genius into the lowest cost system. In closing, I must make one final observation. I noticed in Don Lancaster's article on "Serial Interface," p. 35 [BYTE #1], that the originate modem tx and answer modem rx frequencies do not agree as is necessary for proper operation. The answer modem receive frequencies should be 1070 Hz space and 1270 Hz mark. Incidentally, I thought the article by Don was of his usual high calibre and should serve as an example for others to follow. Dan Clarke 105 Fir Court Fredericton NB Canada E3A 2E9 DOWN ON EARTH? Editor, BYTE: 1 ordered my subscription to BYTE when the first ad was printed in 73 Magazine last summer. The first book I got was #2 (October 1975). Where is my #1 ? Please send it. I have a good understanding of analog and logical circuitry — i.e., gates, counters, shift registers, radio, TV and machine control. But — The only down on earth articles from which I got the full meaning in issue 2 were "Television Interface" (best by far), "Quick Test of Keyboards,'' and "Asynchronitis." Please — I want to understand 8008 and 8080. What's inside, relating to the logic I know? When are they called for? And what must be used with them? Most articles start in the process of program development — much too late for the beginner. It seems many cute words add to the snow: Like byte, Basic, life, architecture, kluge??, algorithm, subroutines, language — various, 102 I 5% OFF ON ORDERS OVER $50.00 I 10% OFF ON ORDERS OVER $100.00 I 15% OFF ON ORDERS OVER $250.00 n TTL 7451 .17 74154 1.25 7400 % .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 741% 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 74L0O > .25 74L51 > .29 75L90 $1.49 74L02 .25 74L55 .33 74L91 1.45 74L03 .25 741.71 .25 74L93 1.69 74L04 .25 74L72 .39 74L95 1.69 74L06 .25 74L73 .49 74198 2.79 74L10 .25 74L74 .49 74L164 2.79 74L20 .33 74178 .79 74L165 2.79 74130 .33 74L85 1.25 74L42 1.49 74L86 .69 HIGH SPEED TTL 74H0O S .25 74H01 .25 74H04 .25 74H08 .25 7-IH10 .25 74H11 .25 74H20 .25 74H21 74H22 74H30 74H40 74H50 74H52 74H53 S .25 8000 SERIES 8091 8092 8095 8121 8123 8130 8200 8210 1.97 2.33 2.79 8214 8220 8230 8520 8551 8552 8554 8810 S1.49 1.49 2.19 1.16 1.39 2.19 2.19 .69 9000 SERIES 900'2 9301 $ .35 9309 1.03 9312 74H55 74H60 74H61 74H62 74H72 74H74 74H76 8811 8812 8822 8830 8831 8836 8880 8263 8267 9601 9602 S .25 .25 2.19 2.19 2.19 .25 1.19 5.79 2.59 TTL 7442 $ .59 7447 .69 7489 1.99 74153 .69 74193 .99 MEMORIES 1702 A $14.95 2101 2.95 2102-1 3.25 2102-2 3.25 5203 12.95 5260 .99 5261 .99 5262 2.95 DECEMBER SPECIALS 9 DIGIT LED DISPLAY FNA 37 On multiplexed substrate, comm. ca- thode compatable with all 8 digit calculator chips, 7 segment right hand decimal, red with clear magnifying lens, .12" character, 1 to 4 MA, 1.8 V typ 2 J /s" x >>" x '/"" high $3.95 NINE DIGIT SPERRY GAS DISCHARGE DISPLAY SP-425-09 1.25" x 3" overall — .25" digits — connects to 18 led edge connector ■ — hi voltage — prime quality $1.49 DVM CHIP 4V« DIGIT MM5330 — P channel device provides all logic for 4'/i digit digital volt meter 16 pin DIP with data $1 4.95 LINEAR 324 $1.19 380-8 1.09 565 1.49 739 .89 75491 .59 CLOCK CIRCUITS 5311 $3.95 5312 2.95 5314 3.95 CALCULATOR CHIPS 5001 $1.49 5002 1.98 5005 2.49 NEW ITEM - EXCLUSIVE WITH IEU RESISTOR ASSORTMENTS SUPPLIED WITH CONVENIENT STORAGE UNIT DESIGNED FOR EXPERIMENTERS, TECHNICIANS AND SCHOOLS RS1-25 $99.50 AN ASSORTMENT OF 2725 RESISTORS 170 VALUES FROM .51 OHMS TO 5.6M OHMS QUANTITIES DETERMINED BY TYPICAL USAGE V, WATT 5% CARBON FILM + $1.00 SHIPPING & HANDLING SHIPPING VIA UPS OR PARCEL POST REPLACEMENTS IMMEDIATELY AVAILABLE AT LOW COST BY MAIL FROM IEU Data sheets on request. With order add $.30 for items less than $1.00 ea. . ._„,.<.- y. * fc - v - C . v »<.*>. e «. *. i c • mi e ■ v C t « t •» f i, ' fe «, « < i; « . * ■ * - %. < $ <' f c 9 i k. lifili f < • « $ > * *• 6, *f MH • < •■ • * it < •< | • f ft. • * - tvf' <* \ * ■- fe. f < f < f { %':*'. %' ( *"- *>• 25 $114.50 RS 3-50 $69 5C * Rohm QUALITY '■ RCLIABIUJY AN ASSORTMENT OF 4000 RESISTORS 100 EACH OF 40 STANDARD VALUES 1 OHM TO 3.3M OHM '/< WATT 5% CARBON FILM AN ASSORTMENT OF 2000 RESISTORS 50 EACH OF 40 STANDARD VALUES 1 OHM TO 3.3M OHMS V, WATT 5% CARBON FILM LEO'S MV10B MV50 MV5020 ME4 MAN1 MAN2 MAN4 MAN5 MAN6 MAN7 MAN3 MAN8 MAN66 MCT2 Red TO 18 Axial leads lumbo Vis. Red (Red Dome) lumbo Vis. Red (Clear Dome) Infra red diff. dome Red 7 seg. .270" Red alpha num .32" Red 7 seg. .190" Green 7 seg. .270" .6" high solid seg. Red 7 seg. .270" Red 7 seg. .127" straight pins Yellow 7 seg. .270" .6" high spaced seg. Opto-iso transistor .29 3.45 3.75 MEMORIES 1101 .22 1103 1702A .22 .54 2102-2 2.19 5203 4.39 5260 1.95 5261 3.45 5262 4.25 7489 1.19 8223 74200 256 bit RAM MOS 1024 bit RAM MOS 2048 bit static PROM UV eras. 1024 bit static RAM 2048 bit UV eras PROM 1024 bit RAM 1024 bit RAM 2048 bit RAM 64 bit ROM TTL Programmable ROM 256 bit RAM tri-state S 1.50 3.95 17.95 4.25 17.95 2.49 2.69 5.95 148 3.69 5.90 MULTIPLE DISPLAYS NSN33 3 digit .12" red led 12 pin tits 1C skt. 5 digit .11 led magn. lens com. cath 4 digit .11 LED magn. lens comm. cath. 9 digit 7 seg led RH dec clr. magn. lens SP-425-09 9 digit .25" neon direct interface with MOS/LSI, 180 VDC. 7 seg. CALCULATOR » CLOCK CHIPS SHIFT REGISTERS 1024 bit accum. (!■ mDIP 500/512 bit dynarr QUAD 25 bit 937 944 946 949 962 963 12 DIG 4 (unct fix dec Same as 5001 exc btry power 12 DIG 4 fuel w/mem 6 DIG 4 funct chain & dec 18 pin 6 DIG 4 funct 8 DIG 5 funct K & mem 9 DIG 4 funct (btry sur) 2B pin BCD 6 dig mux 24 pin 1 pps BCD 4 dig mux 28 pin 1 pps BCD 6 dig mux 24 pin 6 dig mux 40 pin alarm 4 dig 2.79 2.99 1.98 4.45 5.35 5.35 4.45 4.45 4.45 5.39 Satisfaction guaranteed. Shipment will be made via lirst class mail in U.S., Canada and Mexico within 3 days from receipt ol order. Add $.50 to cover shipping and handling for orders under $25.00. Minimum order $5.00. California residents add sales tax. LINEAR CIRCUITS 300 Pos V Reg (super 723) TO-5 $ .71 301 Hi Perf Op Amp mDIP TO-5 .29 302 Volt follower TO-5 .53 304 Neg V Reg TO-5 .80 305 Pos V Reg TO-5 .71 307 Op AMP (super 741) mDIP TO-5 .26 308 Mciro Pwr Op Amp mDIP TO-5 .69 309K 5V 1A regulator TO-3 1.35 310 V Follower Op Amp mDIP 1.07 311 Hi perl V Comp mDIP TO-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 340T Pos V reg (SV, 6V, 8V, 12V, 15V, 18V, 24V) TO-220 1.49 372 AF-IF Strip detector DIP 2.93 373 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 382 Lo Noise Dual preamp DIP .71 550 Prec V Reg DIP .89 555 Timer mDIP .89 556A Dual 55S 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 709 Operational AMP TO-5 or DIP .26 710 Hi Speed Volt Comp DIP .35 711 Dual Difference Compar DIP .26 723 V Reg DIP .62 739 Dual Hi Perf Op Amp DIP 1.07 741 Comp Op Amp mDIP TO-5 .32 747 741 Dual Op Amp DIP or TO-5 .71 748 Freq Ad] 741 mDIP .35 1304 FM Mulpx Stereo Demod DIP 1.07 1307 FM Mulpx 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 3900 Quad Amplifier DIP .35 7524 Core Mem Sense AMPL DIP .71 8038 Voltage conlr. osc. DIP 4.25 8864 9 DIG Led Cath Drvr DIP 2.25 75150 Dual Une Driver DIP 1.75 75451 Dual Perepheral Driver mDIP .35 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 : < INTERNATIONAL ELECTRONICS UNLIMITED I g~ P.O. BOX 1708/ MONTEREY, CA. 93940 USA ■naSP PHONE (408) 659-3171 ~ $599.00 the pint size computer that does it all. The SRI-1000 Basic is built around National Semicon- ductor's "PACE". . . one of the most powerful 16-bit processors available. The system includes full keyboard control, status panel, 4K RAM*, Expandable Prom and rear panel connector access. Unit is completely assem- bled and tested in a compact, desk-top enclosure. "Additional RAM Available Options for Above: Cassette Interface (Includes Tape Program) Video Interface (R.F. or Video) Modem RS-232 Interface TTY Interface TTL Interface Parallel Interface Complete Video Display Assembly (Room for Floppy Disc) Floppy Disc Line Printer Tape Reader Export Version Available Note: All Above are Assembled and Tested. Send Cash or Check (MasterCharge or BankAmericard) with order to: SYSTEMS RESEARCH, INC. P.O. Box 151280 Salt Lake City UT 841 1 5 801-942-1093 Add $ 5J30 for Postage and Handling. BankAmericard # Master Charge # Exp. Date Signature 9080 Microproc $56.00 Replaces 8080 91 L02 1 K low power RAM 3.90 2102 1k RAM 2.90 ASCI I Keyboard Kit 79.50 FEATURES: Full 55 key, reliable scanning logic, N key rollover, TTL compatible parallel output. Also available-serial output, parity bit, TTY current loop output. * Other kits available: 1702 PROM Programmer 125.00 8223 PROM Programmer 79.50 Audio cassette interface 69.50 CRT TV display Write for information on our INTELLIGENT TERMINAL and other computer products A| MIKRA-D Inc., P.O. Box 403, Holliston MA 01746 compilers, stack, assembler, mnemonic, opcodes, disavowal. A uP could be used as the heart of an automatic bowling scorer, getting pinfall data, machine position data, bowler ID data and special information for error correction — and in turn would control the printer (or TV display) error correction display, etc. I have special interest in such a machine! A machine exists, implemented with IC logic — but what power has a u P ? 1 Programming the uP must come after a good knowledge of its inner workings and a good mental model is developed. I hope BYTE magazine will try to get to the basics of computing using the uP. What jobs are they fitted to? Could an 8080 be used for: 1 . A complex pin-ball machine control? 2. A computer like HP-65? 3. Bowling computer? 4. Automatic machine controls — various. I hope your magazine will direct some effort towards people with needs and interests like mine. Pat Murphy Muskegon MI You should be straightened out on the circulation error by now, Pat. We've had some articles on basics lo date, and will continue to do so in future issues. LOGICAL COMPLEMENT Dear Mr. Helmers, I was struck by your editorial in the October 1975 issue, "The Home Brew Voder," because I have long wanted to be able to use a small computer for exactly the opposite purpose. I want to be able to speak into a microphone and have an electric typewriter type out the words I am saying. I am a writer and, speaking as a writer, it has always been the most tedious (if necessary) chore when researching material to have to copy out my source material by hand, to make notes by hand, and then to rewrite my first drafts by hand (and by "hand" 1 mean by typewriter also). It would be much easier and more accurate when researching source material especially to be able to read the material out loud and have an accurate typescript made automatically, or, what amounts to the same thing, to read the material into a tape recorder for later transcription . . . ... If you or any of your readers can convert this idea of mine into practical circuits, I would certainly appreciate it, and I am sure the idea is commercially viable as well. M. Krieger 37 Eighth Ave. Brooklyn NY 11217 THE AUDIO CASSETTE TOWER OF BABEL Dear Mr. Helmers, Congratulations! I am glad to see a real magazine exclusively devoted to the "do it yourself" computer enthusiast — now 1 don't have to buy an audio or electronic magazine for one article about computers. You are right about the three areas to cover — hardware, software and applications. However, there is another area that ties these three together and without it we would have chaos — that area is standards! Now that so many manufacturers are getting into tne computer field everyone wants to do their own thing. That's fine - but, we do need standards. It is not really important what goes on in the "black box" or how fancy the operating system is as long as we can swap programs and they will run without having to rewrite them. As the first magazine in the field, you can be the driving force in helping to prevent a "Tower of Babel." We need a specification spread sheet so that 104 (TeH 7400N TTL *m SNMdUN 5N7401N SN7402N SH7403N SNM04N SN7405N SN74Q6N SN/40/N SN7408N SNM09N SIMM ION SNMIIN SN/4I2N SN74I3N SN7414N SN/416N SN74I7N SN7JI8N SN/420N SNM71N SNM73N SN/475N SNM2BN SNM2/N SN/*29N sn;«on SN7432N SN7437N SNM3BN SNM3HA SN7440N SN7441N SN/442N SN7443N SN7444N SN7445N SN7446N SN/447N SNM4BM SN/45UN SN7451N SN7453N SN7454N SN7459A SN746DN SN74 7QN SN7472N SN7473N SN7474N SN7475N SN747fiN SN7488N SN7-182N SN/483N SN7485N SN/486N SN7488N SN7489N SN7490N SN7491N 5N/492N SN7493N SN/494N 5N7495N SN7J96M SN 741 OON SN74107N 49 SN74I2IN 55 SN74122N 49 SN741Z3N l.Ob SN74125W 60 SN74I26N 81 SN74132N 3 0(1 SN74I41N 1 lb SN74142N bbll SN74I43N 7 0(1 SN74144N 7 0(1 I SN74I45N 1 lb I SN74148N 750 SN7415QN 1 III i Discount for I Oil Cmulii SN/4151N SN741'jjN SN 7-1 1 'j'IJM 125 SN74155N 1 21 SN 74 lb UN SN74157M SM741GON SN 74 16 IN SN74163N SN741G4N SN741F.5N SN74166N SN74167N SN74170N SN/4I/7N 18.00 SN/4I/3M 1.70 SN74174N I 9b SN74175N 1.95 SN74176N 90 SN7417 7N 90 SN74180N 1,05 SN711H1N 3.5b SN74182N SN74184N SN74 185N SN7418/IJ SN74I90N SN7419HJ SN74192fJ SN74193N SN74191N SN74195PI SN7419EH SN74I97N SN7419HN SN74I9UN SN74700N SN74251N SN74ZB4N SN74286N nil 7400s 3 00 2.30 2 70 Ei.00 I SO 1 00 2 25 2 25 7 00 2 50 600 6.00 LU40U0 CD400I CU40U2 CU40(lli CD4007 CD4009 CUIQIll UD4CJ1 1 CU40I2 CU4UI3 C04U16 C0401? CU4019 CIJ4070 LD4022 CU4023 C 04 074 C04025 CU4027 CU4028 ril4(l79 CMOS CO4030 CO4035 CD4040 CD4042 CD4044 CD404G C 1)404 1 C 04 049 CU4Q50 CD4051 CU4Q53 CIMQGO CD40G6 C 04069 CD4071 CU40SI 74COON 74C02N 74 COIN MC1UN 74C70N /4C30N 74C47N 74C73N 74C74 74C90N 74C96N 74C107N 74Clb1 74C154 74C157 74C1GO 74CI61 74C163 74C164 74C173 74C193 74C 19b BOC97 LMI 15.00 2 5U 3 75 LINEAR IM712H 7 00 LM300H BO LM301H 3/100 LM301CN 3.' 1.00 LM302H 7b LM3Q4H 1 00 LM305H 95 LM307CN 3b LU308H 1.00 LM30BCN 1.00 LM309H 1.10 IM309K 1 2b LM310CN 1 15 LM311 IM311N 90 9 00 50 LM'ilHLN 1.M319N LM319U LU32IIK 5 I 35 IU320K5 2 1 3b LMJ70K 12 1 3b LM370K 15 1 3b I.M323K! LH324N I Hll LM339N I 70 IM3'10K5 195 LM340K 17 I 95 LM340K lb 1 95 LM34UK 24 1 95 LM3401ub 1 7b LM340TnG 1.75 LM340In 12 1 75 LM340TO 15 I 75 lM3407o74 1 75 LU350N 1 00 LM35ICN 65 LM370N I 15 1M370H 1 IS LM373N LM377N LM380N IM380CN LM381N LM382N NE!i01K NE510A NE531H NE536T NE54QL NEbbGN NE553 NE555V NEbBbH NE565N NE5GGCN NE5G7H NES67V LM703CN LM709H 29 LM709N 29 LM710N 79 LM711N 39 LM723N .55 LM723H 5b LM733N 1 00 LM739N 1.29 LM741CH 3 1 00 LM741CN 3 1 00 LM741 14N 39 LM747H 79 LM747N 79 LM748H 39 LM74BN 39 LM13D3N 90 IMI304W 1 19 LMI305N 140 I.M1307N Kb 4 00 1 39 105 1 79 1 79 soo GOO 3 00 GOO GOO 79 2 50 .49 .99 1.25 1.S5 1.25 1.50 LM1310N 2.9 LM1351N 1G LM14I4N 1 7 LM1458C G LM 149GN 9 LMlbbGV 18 LM2111N 1.9 LM7901N 2 9 LM30B5H G LM39UUN G LM3905N G LMS556N 1 8 MC5558V l LM7b?bN 9 LM7578N 7 7 LM7534N 7 2 LM7535N 1 2 8038B 4 9 LM75450 4 75451CN 3 754b2CN 3 754b3CN 3 75454CW 3 75491CN 7 75492CN B 75494CN B RCA LINEAR CA3G13 1 / CA3023 2 1 CA303b 2 2 CA3039 1 3 CA3046 I 1 CA3059 2.4 CA30GO 2.8 CA3080 .8 CA3Q83 I G CA3086 -5 CA3089 3 1 CA3091 8 2 CA3173 IB CA3G00 17 DATA HANDBOOKS Pm-out 6 Description of 5400/7400 ICS S2.95 Descfiplion of 4000 Series ICS $2.95 S2.95 7400 CMOS LINEAR Pinout & Functional Description of Linear Circuit: 6' POWER SUPPLY CORDS ^^ ^CONDUCTORS SPECIAL ^P^"™" 3/S1.00 THUMBWHEEL SWITCHES j(^l TrillMHmilLl nviTClt QtiLY 5! DP | [i...,>, .■■„.,'i."i,t.| ; tg JAMES CHRISTMAS SPECIALS DIODES IN4U0I bOVisM Ainji lb-Si IN4D02 lOOVL-i I Amp 15 SI IN4003 200V I'M Amp 15 SI Il\41ia4 400V ,-- I Amp 15 SI IN4148 Sivtliliinij 2U SI TRANSISTORS 7N7y07APNPSwili:linui BSl.O 7l\l7222ANPNSwi.cli.ini G'Sl.O 7N3904 NPN Amp G'SI.O 7N390G PNPAmp C-S1 7M918 IVPNRF 6 SI 7N5951 NJFi-t CSI.O C10BB1 3.6AintiSCR 2'S1 TTL/LINEAR 74110 Gjle 7/SI0 7447 Decoder, 7 7490 Cuumei 4 74100 SBilLJtrii .9 74154 Decodei .9 74197 Countll 7 LMJOIH-LM741H 4/SI Q LM324N-Quail 741 1 I LH309H 5V R«g 10 5 .7 LM303K 5V Reij to 3 .9 MM5262 DYNAMIC 2KRAM $2.95 CLOCKS. CALC. CHIPS MM53HN MM5312N MM53I3N MM6314N MMS31GM MM5725N MM5736N MM5738N 4 Diyil G Digit 6 Digit G D.yil AUr ii 8 Dign-4 Fui G Digit 4 Fui B Digit 5 Fin S2.95 2J5 2.95 255 3.95 1.B5 . 1.9S . 2.95 26 Awg RIBBON CABLE 1 F t. Minimum 1 9 ft. 10 It. .79 11. .2511. .59 It. .49 It. .89 ti. .79 ft. 32 C .89 (t. 1.G9 1I. C/GITflirUDLT^IETER JEflQi GENERAL DESCRIPTION $39.99 Per Kit SINGLE UNIT Tilt; JE801 is a three and one half digit, auto polarity digital voltmeter, in a kit form. It features several options not available in any commercial digital voltmeter. Us low cost is perhaps the most important feature, which is achieved by olferinij It in a kit form. A kit allows the unit lo be used by small OEM's where cost effect tveness is an important factor, ami by the hobbyist who has to be concerned with cost. The unit also features on card regulators, allowing it to be operated ofl a single plus and minus fifteen volt, unregulated power supply. The unit has a small size of three inches width, three and three quarters of an inch length, and one and a quarter inch height. FND70 MAN 1 MAN 2 MAN 3 MAN 4 MAN 7 DL33 DL747 DISPLAY LEDS Com. Caih. .250 Com. Ano. .270 S 5x7M.ilmc .300 Com. Catlt. .125 Com. Cath. .187 Com. Ano, .30 Com. Callt. ,12b Com. Ano. .625 a DISCRETE LEDS MV 10 MV 50 MV 5024 MV 5024 MV 5074 MV 5(124 5 S I 01) li/S I 00 5/S1 DO 4 'SI. 00 4 'SI 00 4 SI 00 b.'Si oo \ IC SOLDERTAIL - LOW PROFILE (TIIMI SOCKETS SOLDERTAIL STANDARD (GOLD) WIRE WRAP SOCKETS (COLDI LEVEL .3 24 nil. SI 0b 28 n»i 1 40 3ii |t in 1 59 ASST. 1 E ASST.2 5 ASST. 3 i ASST. 4 £ ASST. 5 5 ASST. 6 5 ASST 7 5 RESISTOR ASSORTMENTS SI. 75 per assort. contains 50 pcj. of % watt. 5V ibu'sidis 10 OHM- 12 0HM- 15 OHM- 18 OHM- 22 OHM 27 OHM- 33 OHM 39 OHM- 47 OHM- 5G OHM G8 OHM- 82 OHM 100 OHM-120-OHM-15O OHM 1B0 OHM 720 OHM 270 OHM 330 0HM-39D OHM 170 OHM-5G0 OHM-680 OHM-870 OHM ; 1.2K 3.3K 33K 180K 470K I.7M 3.3M 1.8K 4.7K 220K 5G0K 1.5M 3.9M 2.2K 5.6K I00K 270 K G80K I.8M 4.7M 2.7K 6.8K 120K 330K B20K 2.2M 5.GM 14 PCS. POTENTIOMETER ASSORTMENTS S9.95 Each assortment cuntains 14 pes nl 10 turn pats. ASST.A 2ei: 10 OHM-20 OHM-50 OHM-1G0 OHM 200 OHM-250 OHM 500 OHM ASST.B 2m: IK, 2K, 2.5K, 10K, 20K. 2bK, 50K ASST. C 2 Da: 5DK. 100K, 200K, 250K, 500K, 1M, All | 2M oitutilu in tit . S.99 ea. DPST C&KROCKERSWITCH They arc rated at 125 Vac <°> 5A. They ate excellent in application such as Microcomputer Panel Switches (fcn cq Dim: 1"x1"x'/«" PRIME INTEGRATED flSsr g CIRCUIT ASSORTMENTS i:; ASS 7 I C4001 tO07 CD4QIE 4011 LM30II 301N Satisfaction Guaranteed. $5.00 Min. Order. U.S. Funds. California Residents — Add 6% Sales Tax Write for FREE 1976 Catalog - Data Sheets .254 each M7VSS P.O. BOX 822, BELMONT, CA. 94002 PHONE ORDERS - (415) 592-8097 MICROPROCESSOR COMPONENTS 8008 - $19.95 2102 $2.95 B223 37«B Prom 1JD2A 7K E Piom 57030 7K E Ptom 74S287 IK'l P'am 91L02 IK Sum: RAM Dlieci licplac Clot General Purpose Logic CARD Board 14. eiy High Noise Immunity ' Holds 12 ea. 14 pin DIPS 4 pin Edge Connection THE KILOBYTE RAM CARG ■Complete 1Kx8 Memory ■ Hiyli Noise Imm 'Single 5v supply '500NS Access Time SKit Board $49.95 . ICS 8 4 PDT SWITCHES, HIGH QUALITY PB. TYPES .69 KITS EXAR ICS - XR2206KA SPECIAL $17.95 Includes monolithic function neneialot IC, PCboatd.and assembly instruction manual. XR2206KB SPECIAL $27.95 Same as XR22Q6KA uliuve and includes external components for PC hoard. TIMERS XR-555CP SPECIAL XR-320P XR-55BCP XR-255GCP XR-2240CP SPECIAL PHASE LOCKED LOOPS XR 210 XR-215 XR-567CP XR-25G7CP SPECIAL 1.55 1.85 3.20 3.25 STEREO OECODERS XR-1310P XR-1310EP XR1800P WAVEFORM GENERATORS XR-205 8.40 XR-2206CP SPECIAL 4.49 XR2207CP 3.85 MISCELLANEOUS XR-2211CP XR-2261 S3. 20 3.20 3.20 6.70 3.79 *Special Requested Items* 1194 Dih k V Helj kR e , HC419S F93S8 Decoder LOI10/1 II UVM Clii|iSet CA3I3D Sii|ier CMOS Dp Am. MC140RI.7 A/U F334) FIFO 8Z63 87G7 B?BB 882G ZENERS-DIODES-RECTIFIERS TYPE VOLTS IN74G 3.3 IN751A 5.1 IN752 5.6 IM ?53 G? IN754 6.8 IN965B 15 IN5232 5.6 IN5234 6.2 IN5235 6.8 IN5236 7 5 IN456 25 114458 150 IN485A IfiO INrtOOl 50PIV IN4U0! I00PIV TYPE VOLTS W IN4003 200 PIV I AMP JN4004 400 PIV 1 AMP I/I Dl) IN3GQ0 4/1 00 4/1 00 4/1 00 IN4148 IN4154 IN4734 IN4735 IN4736 IN4738 IN474? IN4744 IN 1 183 INI 184 1w 35 AMP 100 PIV 35 AMP 1186 200 PIV 35 AMP IN 1 188 400PIV 35AMP MPS A05 5 1 00 MPS A0f> ?N2ri9A 7N2721 •mim*. ;n?3g? /rg?3fi!JA FN2415 7N2484 ?»290GA PN2907A 2N292& 7N3053 M.lt:i(l!,S 2mm 2N3398 SI Oil IS 100 TRANSISTORS PN3SC7 3S1.00 msblii 4SI.O0 PfJ3b(i9 ?N3)01 7N3705 7N370U 7N3JOJ ?N3'11 7N3774 21)3125 7N3903 7N3901 7N3i)0' J mms 7NA013 1N4D14 ^■SI.DO 5 ST 00 j-. S/SI.DU JTL 5.S1 00 \T III" ll PN.S2.19 PN 1.0 A. r.l, Ni G.3 V ( 1.5 A. 854 lb. 50 V. @> 1.5 A. ct. Si 6.3V (iB500 ma. 6 lb. 26 V. @ 1.0 A. ct. 8i6.3 V. 35 ma. ct. 8i 6.3 V. @> 2.7 A 2 lb. 70 V. @> 1.5 A. ct. Si 6.3 V @ 1.5 A. 7Lb. 35 V. <°> 6.0 Ct. Si 10 V. @> 10.0 A. 6.0 Lb. 64 or 32 V. S> 8.0 A. ct. 8i 18 V. @ 8.0 A ct B9313 B9314 B9315 B9316 B9318 B9319 B9321 B9322 B9906 3 50 2/6.00 6.50 2/12.00 9.95 2/19.00 6.50 2/12.00 3.75 2/7.00 6.95 2/13.00 3.50 2/6.00 6.75 2/13.00 8.95 ea. 10 lb. B9905 1 1.95 COMPUTER GRADE ELECTROLYTICS We carry a good selection of capacitors of all types, dipped micas, ceramic disks, mica trimmers, tantalums, silvered micas, tubulars, small electrolytics, high voltage, etc. Listed below are a few of our large computer grade electrolytic capacitors. VOLT MFD STOCK PRICE 10v lOv 10v 15v 25v 35v 50v 75v 200v 40,000 90,000 160,000 110,000 32,000 40,000 10,000 6,000 500 B2026 B2495 B2515 B2352 B2492 B2255 B2493 B2450 B2345 2.00 each, 3.00 each, 3.25 each, 3.50 each, 3.00 each, 3.50 each, 3.25 each, 3.50 each, 2.50 each. 6/11.00 3/8.00 4/12.00 3/9.00 4/10.00 3/9.00 4/12.00 4/12.00 4/9.00 709 47 09 741 747 741 747CT 1458 O P DESCRIPTION Hi Performance Dual 709 Hi Performance Dual 741 Hi Performance Dual 741 Dual 741 AMPS CASE STOCK PRICE TO-5 B4301 DIP B5301 DIP B4316 DIP B4317 Mini DIP B4345 TO-5 B3111 Mini DIP B31 12 .50 1.00 .65 1.25 .65 1.25 1.25 5/2.00 6/5.00 5/3.00 5/5.00 5/3.00 5/5.00 5/5.00 A DELTA ELECTRONICS CO. BOX 1, LYNN, MASSACHUSETTS 01903 Phone (61 7) 388-4705 MINIMUM ORDER $5.00. Include sufficient postage, excess refunded. Send for new 88 page Catalog 1 5, bigger than ever. fSBi BANKAMERICARD and MASTERCHARGE j*^J"d now accepted, minimum charge $15.00. Please OS include all numbers. Phone orders accepted. 109 RETAILING? BYTE Magazine is very new. And judging by the response from retail outlets that want to sell BYTE, we're sure it has a grand and glorious future. If you own or know of a friend who owns a retail store (electronic parts, radio-TV., hobby store, newsstand, student book store) we'd be more than happy to rush them our BYTE retail order form. We offer an extremely attractive discount, an unbeatable returns policy, and the only magazine for the serious computer hobbyist. More information? Write: BYTE Magazine Retail Sales Dept. Green Publishing, Inc. Peterborough, N. H. 03458 BYTE FOR RESALE Discovering BASIC - A Problem Solving Approach by Robert E. Smith, Hayden Publishing Co., New York NY, J 970. $7.95 hardcover, $5.95 paperback. Anyone who wants to learn BASIC for the Altair system or any other BASIC system should have this book. The book has very clear explanations that make it easy to comprehend. The book is divided into 37 two- to three-page lessons. There are four review tests and four test correcting programs. Yes, you program the computer to correct your test for you. The second half of the book contains 50 review problems covering many different interests: algebra, geometry, finance, statistics, puzzles and games. At the end is a set of program solutions to problems in the book. The reader will start to write simple programs after the first three pages. After that, more of the language is introduced bit by bit with activity reinforcement of each new command. Lessons include: numbers and variables, order of calculations, built-in and user defined functions, flow charting, program looping, printing headings, inputs during execution, FOR-NEXT instructions, use of subroutines and matrices. All in all it is a very clear and comprehensive text for the learning of BASIC. Thomas Charles Greer 224 N. Alabama St. San Gabriel CA 91775 MICRO 440... the MORE affordable computer/ The MICRO 440, with a price intended to turn the competition's hair gray. It's built around the Intel 4040 CPU. And although it has only a 4-bit word, it's no toy. It features a powerful set of 60 instructions to permit binary and decimal arithmetic, logic, loops and branching and real-time interrupts. It also features 24 on-chip registers (more than many more expensive micros) and subroutine nesting to seven levels. With the bare-bones kit you get a single PC board housing CPU, clock, I/O interface, front panel controls and displays, and 256 bytes of program/data RAM. You also get our complete and instructive 87-page manual. Order the complete kit, and you also get an enclosure, power supply, a standard input and output port and a standard Teletype interface. Need more memory? There's room for 8K of RAM or PROM memory, in 2K units. Each memory unit gives you extra I/O ports. The age of the microprocessor is here. They're already in sewing machines, parking garages, even pin-ball machines. Soon they'll be cooking your meals and controlling your TV. Have you been wanting to learn more about this exciting new technology? You could spend $300 to $600 to attend a course. Or, for less money, you can get unlimited hands-on experience with your own MICRO 440. With the basic kit you can enter a program up to 256 steps long, run and display the results. Following the simple instructions in our user's manual, you will learn the workings of the computer by loading and executing the many sample programs given, then learn to write your own programs. The usefulness of the MICRO 440 doesn't vanish as you learn. It's powerful enough to grow with you. Plug a Teletype or TV Typewriter into the back panel and greatly expand its capabilities. Add memory and peripherals, and you're ready for serious, efficient computing. Even fully expanded, the MICRO 440 won't cost you an arm and a leg. Would you believe a computer with 2K PROM, 6K RAM, 32 1/0 ports, TTY interface, and a TV Typewriter for less than $1300? PRICES: Bare Bones Kit $175 Complete Kit $275 Assembled & Tested _ J 375 PARTIAL KITS ALSO AVAILABLE. WRITE FOR PRICES. RO. BOX 1016 HUNTSVILLE, ALABAMA 35807 205-837-5100 110 LOGIC POWER SUPPLIES New Lambda transistorized, regulated, worth 2 or 3 times our price. 1. (LVEE-5)OV,5 VDC74amp 125.00 2. (LWD - 12) 12 VDC 26.5 amp 100.00 3. (LMB - 5) 5 VDC 3.7 amp 40.00 4. ( LMD - 1 5Y) 1 5 VDC 9 amp 45.00 SOPHISTICATED LOGIC SUPPLIES By Dressen-Barnes and NJE. Transistorized, finely filtered and regulated. 1 15 volt input. #61-5S Output 5VDC 21 Amp 27 lb $47.50 #51-5S Output 5VDC 10.5 Amp 16 1b 35.00 #421-32 Output 32VDC3.3 Amp 12 1b 20.00 #421-90 Output 90VDC1.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 ■■$S8B)& 1,000 mF 15 volt $ .35 2,000 fiF 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 ytte&nMd FREE CATALOG Please add shipping cost on above. MESHNA P0 Bx 62 E. Lynn Mass. 01904 111 BOTE reader service 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 91 □ ACM 15 D A. P. Products 2 □ BYTE Subscriptions 95 □ BYTE Retail Sales 110 □ Bytronics 39 □ Celdat 17 □ Centi-Byte 18 □ CMR 97 □ Comp-Sultants 110 □ Continental Specialties 81 □ Delta Electronics 109 D Dutronics 98 a Godbout 6, 7 □ Hickok 97,99 □ lasis 56, 57 □ IEEE 19 D Int'l Elec. Unltd. D Intron 104 D James 105,99 D Martin Research □ Meshna 111 □ Micro Digital 77 □ Mikra D 104 D MITS CIV, 40-47 □ Ohio Scientific 102 D Processor Tech. 28, 29 D RGS 25 D Scelbi 62, 63 , D Southwest Tech Clll □ Sphere 11, 13 □ Suntronix 107 □ Teleterminal 106 □ Tri-Tek 101 D Visulex 102 □ Windjammer 92, 93 103 16 Messages for the editor: Reader's Service BYTE Green Publishing Inc. Peterborough NH 03458 Please print or type. Name DECEMBER 1975 BYTE acquired via □ Subscription □ Newsstand □ Stolen Address City State Zip Coupon expires in 60 days . . . THE BITE QUESTIONNAIRE BYTE is dedicated to the needs of its readership. In order to better gauge matters of editorial policy and content, as well as to give our advertisers some "hard facts," we publish this questionnaire. In this month's list are a few more questions of editorial interest: What applications do you have in mind for your own personal computer system? Do you presently have a computer? If you own or use a personal computer system, what is its CPU chip or main frame computer design? Have you had any "on the job" training using computers as a tool for some purpose? Do you know what a computer language is? Would you list the computer languages (if any) which you know? These questions are a short form "letter to the editor." If you have additional comments, don't hesitate to write! Send completed questionnaires to BYTE, Dept. Q, Peterborough NH 03458. 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 should be limited 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 teims. Individual/club classifieds will be printed free on a space-avail- able basis in the earliest possible issue of BYTE. Feel free to photocopy this pane if you wish to keep your BYTE intact. 112 5Sifii6 oo The Computer System You Hove Been Waiting For A BENCHMARK SYSTEM-Using the MOTOROLA M6800 benchmark microprocessor family. wlm* 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 ASCII 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. # □ or BAC # Ex Date Bank #_ For My SWTPC Computer Kit □ | | Send data package NAME ADDRESS CITY STATE ZIP Southwest Technical Products Corp., Box 32040, San Antonio, Texas 78284 Tke MITS Altair 8800. (It's showing up in some or the most unusual places.)