ISSUE #1 SEPTEMBER 1975 $1.50 the small systems journal Which Microprocessor for you? Cassette Interface — Your key to inexpensive bulk memory Assembling Your Assembler Can YOU use these SURPLUS KEYBOARDS? (You bet you can!) COMPUTERS - the World's Greatest Toy: 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. 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.) Family ' 7 8 9 I I 4 5 6 I I ' 2 3 Lc 0 • I Introducing the family of modular micros from Martin Research! Choose either the economical 8008 proces- sor, or the powerful 8080. Either CPU is compatible with our advanced bus structure! Plus, a convenient monitor program, in PROM memory, allows you to enter instruc- tions with the ease of a handheld calcul- ator. Six large digits display data in octal format. Modularity makes for easy expansion. First qualiry parts throughout. Professionally made PC boards with plated holes, solder- mask protection. 8080 CPU board features versatile interrupt structure, multiprocessing capability. Easy interfacing to input and output ports. MIKE 303A: CPU board with 8080, key board/display board, PROM/RAM board monitor PROM (256 bytes of RAM), breadboard, - hardware, and instructions: $395.00 kit, $495.00 assembled and tested. MIKE 203A: CPU board with 8008, key- board/display, PROM/RAM, breadboard, hardware, and instructions: $270.00 kit, $345.00 A&T. MIKE 3-5 or 2-5: 4K RAM board with 450 ns static RAM: $165.00 kit, $190.00 A&T. FREE CATALOG! Kits: US & Canada only. Master Charge accepted. OEMs: write for quantity prices. MARTIN RESEARCH Microcomputer Design 1825 S. Halsted St. Chicago. IL 60608 (312) 829-6932 shifts each digit left automatically as a new digit is entered! The value on the display is also entered into an internal CPU register, ready for the next opera- tion. Simply by pressing the write key, for example, the user loads 135 into memory. The MONITOR program also allows the user to step through memory, one loca- tion at a time (starting anywhere), to check his programming. Plus, the Swap Register Option allows use of the inter- rupt capabilities of the microprocessor: the MONITOR saves internal register status upon receipt of an interrupt re- quest; when the interrupt routine ends, the main program continues right where it left off. We invite the reader to compare the pro- grammability of the MIKE family of microcomputers to others on the mar- ket. Notice that some are sold, as basic units, without any memory capacity at all. This means they simply cannot be programmed, until you purchase a mem- ory board as an "accessory." Even then, adding RAM falls far short of a conve- nient, permanent MONITOR program stored in PROM. Instead, you have to enter your frequently-used subroutines by hand, each and every time you turn the power on. EASY I/O INTERFACE The MIKE family bus structure has been designed to permit easy addition of in- put and output ports. A hardware inter- face to the system generally needs only two chips— one strobe decoder, and one latching device (for output ports) or three-state driving device (for inputs). A new I/O board can be plugged in any- where on the bus; in fact, all the boards in the micro could be swapped around in any position, without affecting opera- tion. I/O addresses are easy to modify by reconnecting the leads to the strobe de- coder (full instructions are provided); this is in marked contrast to the clumsy input multiplexer approach sometimes used. POWER & HOUSING The micros described to the left are com- plete except for a cabinet of your own design, and a power supply. The basic micros require +5 V, 1.4 A, and — 9 V, 100 MA. The 4K RAM board requires 5 V, 1 A. A supply providing these volt- ages, and ±12 V also, will be ready soon. OPTIONS A number of useful micro accessories are scheduled for announcement. In addi- tion, the MIKE 3 and MIKE 2 may be purchased in configurations ranging from unpopulated cards to complete systems. For details, phone, write, or check the reader service card. 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 Forthe8080 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 In the Queue Foreground RECYCLING USED ICs 20 Hardware — Mikkelsen DECIPHERING MYSTERY KEYBOARDS 62 Hardware — Helmers LIFE Line 72 Applications — Helmers Background WHICH MICROPROCESSOR FOR YOU? 10 Hardware — Chamber/in RGS 008A MICROCOMPUTER KIT 16 Review— Hogenson SERIAL INTERFACE 22 Hardware — Lancaster WRYTE for BYTE 44 For Profit — Ryland WRITE YOUR OWN ASSEMBLER 50 Software — Fylstra Nucleus What is BYTE? 4 BYTE magazine is published HOW BYTE Started 9 monthly by Green Publishing, Inc., Peterborough, New OlIDS — Newsletters 40 Hampshire 0 3 4 5 8. Subscription rates are $12 for Book RevieWS 84 one year worldwide. Two years, $22. Three years, $30. Letters 87 Second class postage application Pending at Byter's Djgest gQ Peterborough, New Hampshire ' 3 "** 03458 and at additional RpoHpr'Q ^Prvirp Qfi mailing offices. Phone: neaaer s service yb 603-924-3873. Entire contents copyright 1975 by Green Publishing, Inc., Peterborough, NH 03458. Address editorial correspondence to Editor, BYTE, Box 378, Belmont MA 021 78. From inception to press in seven weeks — surely a magazine creation record. Guinness please take notice. BITE #1 SEPTEMBER 1975 ■/££ "^.'^P** *^-^,V>- HH (Mir- £v ip 4jL *» fc«* . piicfi i ii p. 10 " >*585, ' Cte SBk' r, mm p. 20 p. 22 p. 50 p. 62 Carl Helmers: What is BYTE? "It could not have been long before some wizard of verbal magic figured out that a group of little bits must con- stitute a mouth water- ing BYTE." "... the term byte has become part of the lexi- con." For the hardware per- son, "the fun is in the building." This is the first issue of a new publication — BYTE — a monthly compendium of information for the owners and users of the new microcomputer systems becoming widely available at moderate cost. To formal and informal students of computer science, the choice of the name BYTE is quite appropriate. For a large number of applications of this new technology of inexpensive computers, character string and text, data (basic unit, one byte) is an important consideration. Bytes are the units of data manipulated by many of the small computer systems designed by readers — or assembled using one of a number of kit products now on the market. The most c ommon definition of a byte is that of a unit of information containing 8 bits. This unit of information can at any time represent one of 28 = 256 possible things — for instance, one of the ASCII or EBCDIC character codes, one of the integers from 0 to 255, a signed integer from -128 to +127, etc. The origin of the term "byte" lies in IBM's documentation and terminology for the extremely successful System 360 series. The folk tale has it that IBM needed a more "personalized" (i.e. unique) term for the old standby of earlier generation computers, the "character". The term had to be less tied to a specific type of data such as character codes — and had to take on a generic meaning as "unit of storage". With that functional specification for the required term, it could not have been long before some wizard of verbal magic figured out that a group of little bits must constitute a mouth watering byte. With the term's widespread use in the computer field due to IBM's benign influence, the term byte has become part of the lexicon. The fundamental significance of a byte as a unit of information makes BYTE an appropriate name for the publication. BYTE is your unit of information on the state of the art of small computer systems for individual persons, clubs and classroom groups. Each month you will find information ranging from computer club announce- ments to manufacturers' advertisements, from technical details of hardware and software to humorous articles and editorial opinions. The Home Brew Computing Trilogy The story of computing is a story composed of several elements. A good way to look at the story is as a trilogy of interrelated themes . . . HARDWARE SOFTWARE APPLICATIONS. .. You need the hardware before you can progress through the first gate of a system. A virgin computer is useless so you add some software to fill it out. And the whole point of the exercise — in many but not all cases — is to come up with some interesting and exotic applications. The technical content of BYTE is roughly divided into the trilogy of hardware, software and applications. Each component of the trilogy is like a facet of a brilliant gem — the home brew computer applied to personal uses. The trilogy is not confined to home brew computers alone of course. In the personal computing field as in any endeavor there are people who will have foremost in their minds any one of these three topics to the exclusion of the other two. For instance some of the people I know are interested in software — and pretty exclusively software. They'll tend to concentrate on software as much as possible and try to get a minimal amount of hardware sufficient to experiment with software. A person with a primary interest in software will oftentimes be the person who purchases a kit computer because the kit minimizes the amount of hardware knowledge the person is required to have. An example of another kind of person — in terms of isolated characteristics — is the hardware kind of person. Here the emphasis of the work with home brew computing is on putting together the hardware, designing the hardware, making things that quote "work'' unquote. A "hardware person" in many cases may not do much else — but he or she certainly will accomplish the design goal. This is the person who builds (the first) editorial up a computer system to the state where it might even be able to do a bootstrap off tape — then drops the system and decides to build a better one. The fun here is in the building, not in the using and programming. Then in this description of possible ways of approaching the home brew hobby there is the applications person. This person's attitude is somewhat a synthesis of the other two types. The applications person is typically interested in getting a particular program up and running. So a Space War freak would spend a good portion of available time getting the hardware and software needed to play space war. A LIFE addict would spend a fair amount of time getting the hardware and software for the game of LIFE — and fooling around with LIFE patterns. And a person who enjoys other computer games — using the game as a goal — spends much time assembling a hardware/software system for the game. A person interested in toy robots would have a combined hardware/software problem of coordinating and controlling movement — this home roboteer must design the mechanical details, design a control algorithm — and if sophisticated fun is required, must design a pattern recognition input device and algorithm for interpreting scenes. A model railroader requiring a computer controlled layout again has this applications model — computer controlled yard and main line switches — and faces a choice of possible hardware and software components needed to make the application. Now, aspects of the trilogy exist in any particular person who experiments with the computer systems. A common combination is for the application to drive the hardware and software choices. Then there is the person who builds the hardware first — getting caught up in the "neatness" of a logical construction in the same way that a mathematician goes off the deep end with a neat theorem. If you're starting as such a hardware hacker, you may come to the point where you say "Hmmm — I've built the hardware, so now what do I do with it?" Here the applications are following the design of the computer. It's the same way with many kinds of programming ... the software is an exploration of the possibilities of the hardware. As a software hacker you might turn to the pure logic of programming — writing and trying out routines for things ranging from augmentations of the instruction set to file managers, to games simple and sophisticated. Or you may just fool around with programming with no specific end in mind in terms of applications, for the sole purpose of seeing what you can do with the machine. As a home brew computer software experimenter, you'll find an emotional kinship with the people who take part in the automotive hobbies. What does a "performance" automobile buff do with the machine — once all the optional improvements and features have been added underneath the personalized paint job? The auto nut takes his car out to the local drag strip or other test track and opens up the throttle to see what the engine and drive train will do in terms of speed and acceleration (proper spelling: exhilaration). Well, for computer experimenters there is a logical drag strip in every computer — an instruction set waiting to be explored. You exercise this logical drag strip by seeing what you can do in the invention of neat little (and not so little) programs to do useless (equivalent of real drag strip) performance tests in artificial circumstances — or really useful tasks (equivalent to normal transportation functions of autos). I haven't yet figured out what the computer equivalent of an air scoop hood is — or the equivalent of the weird mechanical contrivances I often see on the derriere of "muscle" cars. You might even be the type of person who wants to do a certain programming technique just for the sake of programming - you say to yourself: "OK — I want to write a BLURPTRAN language compiler and code generator, so what hardware do I need to do it?" As such a person, you would then choose a computer system in packaged and/or self-designed form such that it would fit the compiler writing goal. In truth many will find it best to seek a sort of "A virgin computer is useless so you add some software to fill it out . . ." Sophisticated fun re- quires sophisticated thought and hard work . . . "Hmmm — I've built the hardware, so now what do I do with it?" "Well, for computer experimenters there is a logical drag strip in every computer — an instruction set waiting to be explored . . ." interactive — balanced - relationship between the three aspects of the computer trilogy. At any given time, almost anyone has some aspects of all three combined within his own philosophy of home brew computing. BYTE — the magazine - addresses this mixture that occurs in various people by providing articles permuting and combining these areas. In this first issue hardware articles include "Deciphering Mystery Keyboards," an article on recycling used ICs, and Don Lancaster's article on serial output interfaces. Articles on software include a description of the assembler concept by Dan Fylstra. Applications are found in the first segment of LIFE Line. This application includes information on programming techniques as well as suggestions regarding required hardware. So here in the first issue you find an example of the mixtures of these factors which go into home brew computing. This mixture of aspects is a guiding theme of the current and following issues of BYTE — one of the key editorial goals is to cover a complete range of ideas spanning this triumvirate of concepts. The Impossible Dream or, "Wouldn't it be neat to have a computer all one's own without being as rich as Croesus?" The art of home brew computing has come a long way in the past few years. To paraphrase the science fiction author Robert Heinlein, "When it's time to do home brew computing, people do home brew computing." That time has come today, with the advances in memory and processor technology inherent in large scale integration. The present devices are not as good as the "Thorsen Memory Tubes" in Heinle in's Door Into Summer - but it's getting almost to the point where a basement tinkerer can put together a manufacturable robotic device and plant the economic acorn which will grow into an industrial oak tree. My own first exposure to the idea of home brew computing was about eight years ago when I was attending high school in rural New Jersey. A ham (radio amateur variety) friend of mine at that time was attempting to get a surplus RCA computer card rack into operation as his own conception of a home processor. I didn't know enough at the time even to ask an intelligent question about its design. The thing was a monstrous 3-level card rack with a heavy wire wrap back plane and transistor logic with integration to the level of modular cards. I don't think this friend of mine ever got his processor working to any significant extent — but the impression was made: "Wouldn't it be neat to have a computer all one's own without being as rich as Croesus?" I filed away the thought of a home brew computer as an "impossible" dream at that time — how could I afford a computer if I could barely afford a beat up old Hallicrafters SX-99 receiver and flea power ham transmitter? That did not stop me from having fun with computers — it merely caused a redirection of attention to the use of computers financed by agencies other than myself ... for a while. The while lasted several years as I bootstrapped myself through college with FORTRAN, COBOL, PL/1, BAL and a bit of financial aid from a private foundation. Along about 1972 when I started reading about the LSI computers being designed by Intel - the 8008 and 4004 - I began to revive that old dream of "having a personal computer." Here was a single IC chip - the 8008 - which would give me a real stored program machine at reasonable ("reasonable" = under $1000) cost. After attending an Intel seminar in 1972, I resolved that I would actually build an 8008 computer. The resolution was a long time being turned into reality — I did not actually begin design and construction until January 1974. I took my time for numerous reasons . . . among them being the fact that I had to learn something about the way hardware works, had to equip a laboratory of sorts, got this bug about self-publishing the results along the way*, and so on ... I finally got an 8008 computer which would execute instructions in the middle of the summer of 1974 — and to quote one of the subscribers to my self- published series of articles. "I learned a lot . . .," just as he did. So much for the personal involvement — I've built a kluge of sorts — the software hacker's first attempt at hardware — and have learned quite a bit as a result. You — the reader of BYTE — can go that route or use a much easier route — there are several manufacturers of kit products advertising in this magazine. And you'll find a magazine full of helpful information which I didn't have. . . . CARL *l got the idea of self-publishing from a pamphlet put out by SOL III Publications, Farmington, Maine — which has since been turned into a book entitled The Shoestring Publisher's Guide — full of useful materials on publishing by individuals and small organizations. World's Most Inexpe ASIC Language System $995 Limit: one per i uslomer. OEFER expires September 15, 1975 Two 4,096 word Memory Boards (kit) Allair 8K BASIC Language. This language was chosen for the Altair Computer because of its versatility and power and because it is easy to use (comes with complete documentation). Altair 8K BASIC has many features not normally found in BASIC lan- guage including an OUT statement and corresponding INPut function that allows the user to control low speed devices (machine control without assembly language). Leaves 1750 words in 8K machine lor programming and storage. NOTE: Altair BASIC comes in either paper tape or cassette tape. Specify when ordering. Interface Board Options. The Parallel Interface Board is used to connect the Altair 8800 to external devices that send and receive parallel signals. Many line printers require a Parallel Interface Board. I he RS232 Serial Board is used to connect the Altair 8800 to external devices that send and receive RS232 serial signals. Most computer terminals require an RS232 Serial Interface Board. The TTY Serial Interlace Board is used to connect the Altair 8800 to an ASR-33 or KSR-33 teletype (20 milliamp current loop). The TTL Serial Interlace Board is for custom interfacing. The Audio Cassette Interlace Board is used to connect the Altair 8800 to any cassette tape recorder. Il winks b\ changing the Your choice of Interface Boards (kit) Altair 8K BASIC Language electrical 'signals from the computer to audio tones. It can be used to store unlimited amounts of information coming out of the computer and it can be used to put information back into the computer. PRICES: Altair Computer kit with complete assembly instructions $439 Assembled and tested Altair Computer $621 1,024 Word Memory Board $97 kit and $139 assembled 4,096 Word Memory Board $264 kit and $338 assembled Full Parallel Interlace Board $92 kit and $114 assembled Serial Interface Board (RS232) $119 kit and $138 assembled Serial Interlace Board (TTL or TTY— teletype) $124 kit and $146 assembled Audio Cassette Interface Board $128 kit and $174 assembled 4K BASIC language (when purchased with Altair, 4,096 words of memory and Interface Board) $60 8K BASIC language (when purchased with Altair, two 4,096 word memory boards and Interface Board) $75 COMTER II $780 kit Teletype ASR-33 $1500 (assembled only) Inpul Output Devices. The Comter II Computer Terminal has a full alpha-numeric keyboard and a highly-readable 32-character display. It has its own internal memory of 25b characters and complete cursor control. Also has its own built-in audio cassette interface that allows you to connect the COMTER II to any tape recorder for both storing data from the computer and feeding it into the computer. Requires an RS232 Interface board. I he Standard ASR-33 Teletype prints 10 characters per second. It has a built-in paper tape reader and punch. Has standard 120 day Teletype warranty. Requires a Serial TTY Interface board. NOTE: The Altair 8800 can be connected to any number of input/output devices other than the ones listed above. MAIL THIS COUPON TODAY □ Enclosed is check i.c □ BankAmericard #™_ __- Dor Master Charge #-- "Creative Electronics" 6328 Linn, N.E., Albuquerque. NM 87I08 505/265-7553 * D $995 BASIC System Special with following Interface Board: D Parallel □ Serial RS232 □ Serial TTY □ Serial TTL □ Audio Cassette D Altair 8800 □ Kit D Assembled O Options (list on separate sheet) Include $8 for postage and handling □ Please send free Altair System Catalog NAME ADDRESS CITY —STATE & ZIP Credit Card Expiration date , . ___ MITS/6328 Linn. NE, 'Albuquerque. NM 87108 505/265-7553 Warranty: 90 class on parts for kits and 90 days on parts and labor for assembled units. Prices, specifications and delivery subject to change. • •••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• •••«. ••••• ••••• ••••• ••••■ ••••• ••••• ••••• ••••• ••••• ••••• ••••• ••••• •••• • •••••••••••••••••• § ••••••••••••••••• i • • • • i • • •••••••••• S • • • • • X - » titiitt* ttiiitittiiiiiitiittitii •••«*■«■" c% 2nd prize: |::::6060cpU •••• •••• •••• •••• ••*•■ !••••■ •••••• •••••• •••••■ •••••■ •••••■ •••••■ •••••■ •••••• •••••■ •••••• •••••• •••••■ •••••• •••••• •••••■ •••••• •••••■ •••••■ •••••• •••••■ •••••■ •••••■ •••••• •••••• •••••• •••••• •••••■ •••••• •••••■ •••••• •••••• •••••• •••••• •••••• •••••• •••••■ •••••• •••••• •••••• •••••■ ••••■ •••••■ •••••■ •••••• •••••• •••••• •••••■ ••••*• •••••• ••*••■ •••••■ ••••■ •••••• $•*..■ •••••■ •••v.* • * Jf : did prize: j dOOdcpu! We were 1st to offer the 8008 to hobbyists over 16 months ago; now we're setting the pace again with a powerful new 16 bit microcomputer IC in a 40 pin DIP, made by: RflDSI oxao o YOU MAY WIN ONE OF THESE CHIPS --- SIMPLY: 1) Reveal the Secret Microcomputer Co.'s true identity 2) Tell us in 25 words or less why you should re- ceive a free chip If you can convince our jaded judges, in a form suit- able for use in this family (?) magazine, you win. * •• • r ft r I -ri 41 CAVE 9rafi> FINE PRINT: ALL ENTRIES MUST BE POSTMARKED BY AUG. 31 AND BE IN OUR HANDS BY SEP 7, 1975; ENTRIES BECOME PROPERTY OF BILL G0DB0UT ELEC- TRONICS. ALL CONTESTANTS RECEIVE A DATA SHEET ABOUT OUR FIRST PRIZE FOR THEIR TROUBLE. WINNER WILL BE NOTIFIED BY OCT. 1, 1975. IF YOU DON'T WIN ANYTHING THIS TIME AROUND DON'T FEEL TOO BAD; ENTER OUR COMING CONTEST FOR A COMPLETE 16 BIT MICROCOMPUTER KIT. THESE CON- TESTS SPOTLIGHT PRODUCTS TO BE INTRODUCED BY US IN THE FALL OF '75. SEND ENTRIES TO "BYTE CONTEST", BOX 2355, OAKLAND AIRPORT, CA 94614. from the Publisher how BITE started Two series of events came together and triggered BYTE. One was the surprising response I received from the readers of 73 Magazine (amateur radio) every time I published an article involving computers. Being a curious person I decided to learn more about them, only to find my way blocked by formidable obstacles. The more I tried to dig into the subject the more I found that there was a need for information that was not being satisfied. The other event was the success of 73, with more subscriptions and advertising calling for some sort of computerization of the drudgery — the billing, record keeping, reader's service, indexing, and such. I knew what I wanted done and had a good idea of what I had to spend to accomplish this, so I started talking to computer salesmen . . . only to find that I wasn't even able to read their literature, much less have even a vague idea of what they were saying. Some deep well of obstinacy within me fought back and refused to let me throw a dart to pick out the computer system I needed. I felt that as a businessman running a good sized small business and as the editor and publisher of an electronics magazine, I damned well should be able to come to grips with the salesmen and pick out a computer system on some sort of rational basis. But the more I tried to get information, the more I realized that it was going to be very hard to get. Between my professional need to understand computers and my amateur interest in the subject I found myself subscribing to one newsletter after another . . . talking at exhaustive length with computer savvy 73 readers . . . reading books . . . and wearing computer salesmen out. I discovered an interesting thing — few of the hardware chaps could talk software — and vice versa. Further, neither could talk much about applications. There ought to be a magazine covering the whole thing, thought I. A magazine which would help the neophite to grapple with programming lan- guages . . . would permit the beginner to build microcomputers and peripherals . . . would provide a dialog for the more sophisticated to communicate as well. How about a publication which would cover all aspects of small computer systems? As the computer hobby newsletters arrived I looked them over. Some were very well done, some pretty juvenile. One chap was doing a splendid job . . . designing his own hardware . . . devel- oping software . . . plus writing and publishing a monthly magazine on the subject just about single handed. This was Carl Helmers and his ECS Journal, which was in its fifth issue, having just started in January (this at the time being May). I got together with Carl and explained my idea and suggested that it was time to get a good professional magazine going in the field, one which would help computer hobbyists get the information they needed and which might thus encourage manufacturers to come out with more hardware for the growing body. Carl had been building up his circulation to ECS gradually, with it being about 300 in May. We figured to go all out and run off 1000 copies of the first issue of continued on page 96 BITE staff EDITOR Carl T. Helmers Jr. ASSISTANT PUBLISHER Judith Havey ASSOCIATE EDITORS Dan Fylstra Chris Ryl'and CONTRIBUTING EDITORS Hal Chamberlin Don Lancaster EDITORS John Burnett Susan G. Philbrick PRODUCTION MANAGER Lynn Panciera-Fraser ART DEPARTMENT Nancy Estle Neal Kandel Peri Mahoney Bob Sawyer PRINTING Biff Mahoney PHOTOGRAPHY Bill Heydolph TYPESETTING Barbara Latti Marge McCarthy ADVERTISING Bill Edwards Nancy Cluff MARKETING David Lodge CIRCULATION Susan Chandler Dorothy Gibson Pearl Lahey INVENTORY CONTROL Marshall Raymond DRAFTING Bill Morello Which Microprocessor National Semiconductor's IMPS and IMP-16 computers were originally offered as completely- populated subsystem cards such as the one pictured here. by Hal Chamberlin Box 295 Cary NC 27511 At this time there are three microprocessor chips or chip sets readily available to the hobbyist: the 8008, the 8080, and the IMP-16. The first two were pioneered by Intel and the last is a National Semiconductor invention. Chips and/or kits utilizing each of the three microprocessors are available from at least two sources catering to hobbyists as of this writing. This level of availability and popularity is not even approached by other microprocessors, therefore this discussion is being confined to these three. Comparing computers is like comparing people: the conclusions depend on the application, the circumstances, and personal preference. The comparisons made will be based on use of the microprocessor as a general purpose computer. For our purposes a. general purpose computer is one which has read-write memory for the bulk of its storage, which is expected to run a variety of programs, and for which the end use is the development and execution of programs written by the user. General purpose computers are also expected to be able to control a variety of input-output equipment. Instruction sets will be compared on the basis of assembly language programming. Speed will be compared on the basis of the time1 necessary for the machine to complete a non-trivial task. Complexity will be compared on the basis of ease of understanding microprocessor operation as well as the sheer number of parts required to implement a system. Finally, cost will be compared on the basis of minimum systems capable of assembling programs for themselves given the existence of suitable I/O devices. Before getting into comparisons, we will take a brief look at the leading Reprinted from The Computer Hobbyist, Box 295, Cary NC 27511. 10 for You? The MITS Altair 8800 is one package in which you can purchase an 8080 based system. features of each microprocessor. Then the comparisons will be made in each performance area elaborating on individual features as necessary. The Intel 8008 Processor The 8008 was the first microprocessor to be introduced and the first to be available to the hobbyist. It has an 8 bit instruction and accumulator length. There are essentially only two memory addressing modes: immediate, and zero displacement indexed. Subroutine and branch addresses are full length absolute, allowing branching anywhere with one instruction. Subroutine return addresses are saved on an internal 8 level stack which puts a 7 deep restriction on subroutine nesting. Much of the instruction set power is derived from the six additional 8 bit index registers which may count, save, or address memory. The maximum directly addressable memory is 1 6k bytes; in addition, 8 input and 24 output devices may be directly addressed with a one byte instruction. CPU speed is modest ranging from 20 microseconds for a register operation to 32 microseconds for a memory operation to 44 microseconds for a jump or call. A selected chip, the 8008-1, reduces these times to 12.5, 20 and 27.5 microseconds respectively. A single level of interrupt is provided but external hardware is necessary for complete status saving during interrupts. Interfacing the chip to the rest of the system is fairly involved and requires from 20 to 70 TTL packages depending on the system performance desired. The lower figure will barely function while the higher one includes a console, complete interrupt system, and dynamic memory interface with direct memory access capability. Most of the interfacing complexity can be blamed on overzealous designers trying to make-do with an 18 lead package. Present cost to the experimenter ranges from $40 to $80 with the "dash one" version bringing roughly 50% more. The Intel 8080 Processor The 8080 is Intel's sequel to the 8008. Basically it has more of everything. The instruction set contains all of the 8008 instructions making it upward compatible at the assembly language level. Major additions to the instruction set include direct load and store of the accumulator, double precision (1 6 bits) add and increment for address calculation, and a pushdown stack of indefinite length in memory thus allowing unrestricted subroutine nesting. Addressable memory Comparing computers is like comparing people; the conclusions depend on the application, the circumstances, and per- sonal preference. has been increased to 64k bytes and addressable 1/0 devices have been increased to 256 inputs and 256 outputs at the expense of 2 byte 1/0 instructions. Execution speed has been considerably improved also. Register operations take 2 microseconds, memory operations require about 3.5 microseconds, and subroutine calls consume 8.5 microseconds. Interrupts work the same way as on the 8008 but everything required for complete status saving is provided as well as an interrupt enable/disable flag. Interfacing an 8080 is generally regarded as being simpler than interfacing an 8008. There is only a slight 11 The 8080 is Intel's sequel to the 8008. Basically it has more of everything . . . improvement in the minimum system, about 15 chips, but a full-bore system may be cut in half to 35 chips. The 40 lead package allows a separate 16 bit address bus and 8 bit data bus, as well as simplified timing and control. Present cost to the hobbyist is about $160. The National IMP-16 The IMP-16 is one of the older microprocessors and for a long time the only one with a 16 bit wordlength. The programmer is supplied with four 16 bit accumulators and a 16 word stack. The instruction set is typical of many 16 bit minicomputers, and in many ways resembles that of a NOVA. Four general address modes are provided, base page direct, program counter relative, and indexed using either accumulator 2 or accumulator 3. In addition, The IMP-16 is the first of the 16-bit micros . . A good instruction set should be well organ- ized . . . LOAD, STORE, JUMP, and CALL can be indirect addressed using any of the addressing modes to get to the address pointer. Two memory modification instruc- tions are provided, ISZ (Increment memory, Skip if Zero), and DSZ which allows much counting and indexing to be done in memory freeing the registers for arithmetic. The stack is used for subroutine return addresses but can also be used for saving registers and status. A unique feature is the availability of an extended instruction set chip which provides automatic multiply, divide, double word add and subtract, and byte manipulation. The CPU can address 64k words but this should be held to 32k if the byte instructions are used. The I/O instructions can also address 64k devices. Another unique feature is that several bits of input and output are provided by the microprocessor itself making communication with a teletype possible without any interface at all. Speed is good ranging from 4.2 microseconds for a register operation to 7 microseconds for a memory operation. A multiply takes about 160 microseconds which is still considerably faster than a software routine would be. The IMP-16 provides two priority levels of interrupt and all of the hardware necessary for complete status save/restore. Interfacing is conceptually simple and requires 25 to 50 packages depending on system sophistication. Part of this number is due simply to the fact that 16 bits are to be handled rather than 8. The microprocessor is in the form of five 24 lead packages which for the most part are simply wired in parallel. The extended instruction set resides in a sixth package. Present cost of the standard chip set is about $160. The extended instruction set chip is available only from National at this time for $80. Comparisons — Instruction Sets One of the most important performance areas of a microprocessor is the instruction set. A good instruction set should be well organized so that it is easy to learn, powerful so that complex routines can be coded with a small number of instructions, memory efficient so that complex routines require only small amounts of memory, and time efficient so that only a small number of memory cycles is necessary to complete a task. In addition, performance should be equally high on both character oriented tasks and numerically oriented tasks. Instruction set organization is best on the 8080 closely followed by the 8008 with the IMP-16 being somewhat disorganized. Consequently, the beginner will find the 8008/8080 the easiest to learn. Experience has shown that beginners prefer simple instruction sets and that they retain a certain "fondness" for their first machine long after they have graduated into much more sophisticated endeavors. The experienced programmer however should experience little difficulty keeping the little quirks, distinctions, and special cases straight when working with the I MP-1 6. Instruction set power is best on the IMP-16, followed by the 8080 with the 8008 a distant third. Based on actual experience, it may require as few as one half as many IMP-16 instructions to program a task as 8008 instructions. The 8080 falls about midway between the extremes. There are many reasons why the IMP-16 is superior. Memory addressing is much more flexible due to the four addressing modes and indirect addressing capability. An additional advantage is that the arithmetic word length is the same as the address length. Since the return addresses are put on a stack in all three machines, multiple entrypoint subroutines are easy but the IMP-16 also allows multiple return points (return to CALL+1 on error, CALL+2 otherwise, etc.) with no additional instructions. The 8080 is a big improvement over the 8008 because registers may be saved on the stack when they are used by a subroutine and then restored unaltered upon return. This allows subroutines to be called as needed without regard to which registers they may destroy. Note, however, that this capability may be added to the 8008 quite simply. The direct load and store instructions of the 8080 reduce the number of lines of code in a program. Memory efficiency of the instruction set is best on the IMP-16 but is closely followed by the 8080. The 8008 is not as bad as might be presumed but is definitely Instruction set organization and memory efficiency are usually conflicting requirements. 12 * ki. inferior. I n terms of numbers, the 8080 may require 10 to 1 5 percent more memory bits and the 8008 20 to 40 percent more. Note that these figures are based on optimized programs written by experienced programmers. The spread can be much greater with inexperienced programmers or hastily written programs. It is also interesting to note that instruction set organization and memory efficiency are usually conflicting require- ments. This is because many of the lesser used possible operation combinations have been culled from a memory efficient set in order to reduce the number of bits required to encode the instruction. Implied operands are also utilized in order to free up bits for other uses. Experienced programmers are able to plan ahead and avoid having these restrictions become restrictive. The 8008 and 8080 are as good as they are because many of the instructions are a single word (8 bits) long whereas the minimum instruction length in the IMP-16 is 16 bits. This is somewhat offset by the three word (24 bit) instructions of the 8008 and 8080 which in most cases would only require 16 bits in the IMP-16. A fringe benefit of high memory efficiency is that the shorter programs will load faster regardless of the loading method. Time efficiency is by far the best on the IMP-16 with the 8008 a distant second and the 8080 a slightly poorer third. On a classic minicomputer, a machine cycle was the same as a memory cycle in most cases. As a result, a time efficient instruction set meant a faster machine without faster hardware. Microcomputers on the other hand may have very few of their machine cycles being memory cycles. As a result, time efficiency may have little relation to actual machine speed but does represent the potential speed with an optimized CPU. Time efficiency can be important in multiprocessor systems with a shared memory where more memory cycles increase the probability that a CPU will have to await its turn. The IMP-16 has a high time, efficiency mainly because twice as much data is fetched in each memory cycle. Further improvement is due to the instruction set power, requiring fewer instructions to be fetched. The 8080 has poorer time efficiency than the 8008 mainly because the stack is in memory. A subroutine call, for example, requires 5 memory cycles, 3 to fetch the instructions and two to stack the return address. Historically some minicomputers were better at handling character oriented tasks and others were well Scelbi Computer Consulting Inc. is one of a number of companies who take the Intel 8008 computer, package it into a system design, and sell the result as a system. The photograph supplied hy Scelbi with a press release shows you the result of assembling their new "SCELBI-8B" version of the 8008. As a supplier to the computer enthusiast market from the start, Scelbi has done a very credible job of assembling a true system product as opposed to a bare-bones CPU which merely blinks its lights after assembly. adapted to number crunching tasks. Microcomputers are no exception. Most micros have been optimized for character handling because of expected high usage in terminals and the 8008 and the 8080 belong to this class. The IMP-16 on the other hand is much better at numerically Most micros have been optimized for character handling because of ex- pected high usage in terminals. oriented tasks and was aimed more toward machine tool control and industrial monitoring. Interestingly, use of the extended instruction set on the IMP-16 greatly improves both character handling and arithmetic capability. How About Running System Software? One performance area of interest to hobbyists is the suitability of a machine for running a BASIC system. The IMP-16 and the 8080 are about equal in their ability to compile BASIC quickly but the IMP-16 without the extended instruction set may 13 Speed in a hobby com- puter system can be a two-edged sword. execute BASIC twice as fast. This is due mainly to the all floating point arithmetic that BASIC r eq ui res. The extended instruction set may double the speed again if a lot of multiplies and divides are done. The 8008 can of course run BASIC also but compile and execution speeds are likely to be one tenth of the 8080. One other property of an instruction set is the ease with which it may be assembled, either by hand or with an assembler program. In this respect, the 8008 comes out on top with the 8080 next and the IMP-16 last. Use of the mnemonics and format recommended by the manufacturer is assumed in making this comparison. 8008 code is easy to hand assemble because the octal notation used corresponds to the various fields in the instruction word. Assemblers for 8008 code can also be quite simple because instructions require at most one operand and very few instruction formats exist. Further simplification results from all addresses being absolute and all mnemonics being three characters. 8008 assemblers run on an 8008 can be as small as 2.5k bytes for a limited implementation but 4k bytes is more realistic when providing an easy to use assembler. If the hexadecimal notation recommended by Intel is used with the 8080, hand assembly is definitely more difficult. The assembler also has a tougher time with the two operand format and other niceties defined for the 8080. The Intel version of the 8080 assembler requires 8k bytes but it should be noted that it provides macro capability. Hand coding and assembling for the IMP-16 is harder yet due mainly to relative addressing considerations and a wider variety of instruction formats. National's version of the assembler requires 4k words and can produce relocatable object code and handle external symbols. Is Speed Useful? Speed in a hobby computer system can be a two-edged sword. A high speed microprocessor requires higher speed in other system components such as memory in order to realize its higher speed. An 8008 for example can run at full speed with memories as slow as 3 microseconds access but the 8080 will have to wait on memories slower than 520 nanoseconds and the IMP-16 requires 420 nanoseconds. If the ready line is used on the 8008 and 8080 to permit the use of slower memories, the wait will be in increments of whole machine cycles which is 4 microseconds on the 8008 and 500 nanoseconds on the 8080. Thus if memory is a tad slow, one cycle will be added to each three cycle memory access sequence slowing the system down an average of 25 percent to 30 percent. The IMP-16 does not have a ready line, rather the user stretches one of the clock periods in a cycle long enough to permit memory access. This scheme has the advantage that the stretch can set to the exact amount needed. The higher time efficiency of the IMP-16 instruction set will greatly reduce the performance impact of a slow memory as compared to the 8080. How Complex is the Interface? The ranking on interface complexity is 8080 (least), IMP-16, and 8008. The comparison is based on sophisticated general purpose implementations having a complete 1/0 interrupt facility, software console using ASCII 1/0, and a generalized input/output memory bus allowing simultaneous direct memory access without affecting the CPU. The ranking is the same whether parts count or conceptual complexity is being considered. The difference between the 8080 and the IMP-16 is primarily due to the wider word of the IMP-16 and less confusing discussion of chip interfacing in the Intel manual. The 8008 is just plain difficult to understand and interface correctly but once that is done, either by the user, a magazine, or a manufacturer, the system should operate just as well. Software? Software support is often a big issue among industrial users of microprocessors. Unfortunately, the majority of the software they are fighting over is unavailable to the hobbyist because of high prices. It is not unusual for a program such as an assembler to cost as much as a handful of microprocessors. 8008 and 8080 users can look to Scelbi and MITS for some software at reasonable prices even if they did not purchase their machines from these sources. National has an excellent body of software for the IMP-16 but the package price is $200 for object tapes and source listings. The hobbyist will have to depend on himself, kit manufacturers, and publications for most of his software in the near future. Ultimately, the level of software support will be directly proportional to the popularity of the microprocessor. And Finally . . . There are a number of other performance areas that are only of minor interest to hobbyists. Although there is a large spread in the maximum memory size, all three machines are likely to have ample addressing capability for the hobbyist's memory budget. The same may be said relative to addressable I/O devices. Power supply voltages and power consumption are also usually of minor importance. All of the microprocessors can be successfully operated from standard +15, +5 and -15 system supply voltages using simple, •.■ fail-safe, zener regulators. Package size and pinout are unlikely to be factors in hobbyist use. This brings us to a comparison of overall system cost. First, the spread in chip cost is roughly from $50 to $1 50, so the spread in system cost would be $100 at most. An 8008 requires more interfacing circuitry however which reduces the spread somewhat. After enough memory to do assemblies or run BASIC and a few I/O devices are added, the $75 difference left may be small compared to the total investment. Nevertheless, an 8008 system will be the least expensive followed by an 8080 system closely followed thereafter by an IMP-16. Which microprocessor for you? The answer still depends on the application, circumstances, and personal preference, but hopefully the decision can be made with more authority after reading this article. 14 Last Chance - DON'T MISS THE BOAT! This is the last opportunity to become a CHARTER SUBSCRIBER to BYTE ... at the special Charter rate of $1 0 per year. Perhaps you've held off to see the first issue . . . perhaps you've just seen a friend's copy of BYTE . . . whatever the reason . . . send in your $10 and be sure to get your next issue of BYTE hot off the presses. If you are reading a pass-along copy, just mark the subscription order that you'd like your subscription to start with issue number 1 . Name. Address. City. | ~] BILLME [~| Start with #1 BYTE My occupation. .State. .Zip. □ Check for $10 enclosed j_] Bill BankAmericard or MasterCharge # D Start with #2 BYTE BYTE Peterborough NH 03458 15 The RGS 008A Microcomputer Kit Review by James Hogenson Box 295 Halstad MN 56548 The RGS 008A microcomputer is a general purpose machine based on the Intel 8008 CPU chip. The 008A uses a minimum of 1k of random access memory and a bus type of I/O system capable of handling up to 256 peripheral devices. The basic kit consists of 6 printed circuit boards and all components necessary to build the CPU, 1k of memory, the control panel and the power supply. Molex pins or sockets, edge connectors, backplane, front panel switches and LEDs, and a power transformer are included. A cabinet, some hardware, line cord and fuses are not included. The kit sells for $375, making this one of the least expensive kits on the market. Physical Construction The control switches are mounted directly on the control panel PC board, together with the LED indicators. A printed circuit backplane board is connected to the back side of the control panel. Once the control panel and backplane are wired together, anything plugged into an edge connector on the backplane is automatically connected to the system. The control panel and backplane measure 4.8" x 6.75". The double-sided plug-in boards measure 4" x 6" with 72-pin edge connectors, and have plated through holes. The CPU with all control circuitry included is fitted onto only two of these plug-in boards. Microcomputers, microcomputers and more microcom- puters! The number of options you have for a homebrew system is expanding at a rapid rate - with the corresponding difficulty in picking and choosing among the options. BYTE has an answer to this problem - reviews of kits and equipment from various manufacturers and advertisers in the magazine. The idea of a review is to give the user's evaluation of the product - and. in the process aid you in the choice of equipment for your own homebrew system. Here is BYTE's first review of an 8008 product - the RGS 008A microcom- puter kit (made by RGS Electronics, 3650 Charles St., Suite K, Santa Clara CA 95050). James Hogenson provides this review of the RGS product, based upon his own experiences assembling and utilizing the computer. Jim built the kit early this year as part of his high school Science Fair project activities designing an oscilloscope CRT display. I think you'll find Jim's account to be a useful source of information on the RGS product. . . . CARL 16 Is an RGS008A the computer for your system? Here is one RGS 008A's owner's evaluation. The control panel holds three 8-bit binary LED displays. Two of the displays indicate the memory address of the date or instruction presently being operated upon or executed. The third display shows the contents of the memory location indicated by the memory address displays. The two LEDs not used in the upper memory address are used to indicate the second and third bytes in a two and three byte instruction. Two additional LEDs indicate the stopped and waiting state of the CPU. The only switches used on the control panel are a common 8-bit binary switch register and 6 control switches. The six control switches and their functions are: Memory L oad . A momentary switch which loads the data presently on the 8-bit switch register into the memory location specified by the memory address register. Load L. A momentary switch which loads the address set on the 8-bit switch register into the lower memory address register. Load H. A momentary switch which loads the address on the switch register into the upper memory address register. (The three load switches will operate only when the CPU is in the stopped state.) Interrupt. A momentary switch for entering interrupt instructions. Step. A momentary switch for single stepping through a program. The run/ wait switch must be set on wait to single step a program. Run /Wait. A toggle switch which is used to set the CPU in either a run or a wait state. During the run state, the CPU operates normally. During the wait state, the CPU does nothing unless being single stepped. The 008A is designed to be panel mounted. The entire system is contained on plug-in boards mounted on the back of the control panel. The entire unit may then be mounted very neatly; however, a nice improvement would be for the manufacturer to offer a cabinet to mount the unit in. The p o wer su p ply included in the kit will provide enough power to allow for moderate expansion of the system. If necessary, auxiliary power supplies can be purchased from the kit manufacturer. The power supply included in the kit will produce -5 V at 5 Amps and -1 2 V at 1 Amp. The -9 V for the 8008 is derived from the -12 V. The only type of peripheral interface presently offered for the 008 A is a parallel TTL-compatible interface. The parallel interface boards are also 4" x 6" boards which may be plugged directly into the backplane if desired. Up to 256 interface cards may be used. The parallel interface kit sells for $43.75. A 008A cassette tape adapter is offered for $100. The FSK adapter's data rate is 300 bits per second. The popular 40-pin UART chip is used for parallel-to-serial and serial-to- parallel conversion. The cassette adapter kit includes a parallel interface kit for i nterfaci ng wi th the computer. Only a cassete deck with an auxiliary output or earphone plug and an optional remote start/stop plug is required. An ASCII keyboard is also available from RGS. This keyboard and the cassette tape adapter are intended to interface with the RGS 008A microcomputer, so adapta- tion would be a problem if you have some other make of computer. RGS says that a serial interface is being developed for use with teletype, as well as a TV typewriter. Highlights The 008A uses fewer components, compared to other 8008 systems I have seen. The 008A computer structure is basically similar to other 8008 systems, with one exception: The input/ output structure is unusual for an 8008 system. Instead of the more common port 17 system capable of handling only 8 input and 24 output devices, the 008A uses a bus system capable of handling 256 bi-directional data input/output channels. RGS uses several of the 8008 chip's I/O channels instructions to set up this bus I/O System. There are four input/ output instructions in the 008A's "instruction set:" Select, Control, Input, and Output. To select a peripheral, the device number is loaded into the accumulator and a select instruction is executed. This enables the peripheral device. If necessary, a control instruction is available. Upon its execution, the accumulator data is made available at the output and the control strobe line is pulsed. Once the device has been selected and initialized, data transfer using the input and output instructions is executed as it is in the port system. Each peripheral interface board is jumper-wired for its own device number. When the device number of a particular unit is selected, data transfer between the unit and the CPU is enabled until another device number is selected. When a control instruction is executed, the accumulator data is placed on the I/O bus. The interface transfers the data from the bus to the interface output. The control strobe line is then pulsed. An output instruction also causes the accumulator data to be placed on the I/O bus. The interface transfers the data to its output. This time the output strobe line is pulsed. On an input instruction, the interface transfers data from its input to the I/O bus. The CPU then transfers the data from the bus to the accumulator. The input strobe line is also pulsed. The bus system has three big advantages. The obvious one is the capability of handling up to 256 devices. The second advantage is that each of the 256 channels will perform both input and output. The third advantage is the ability to send control instruction, thus eliminating the need to use an adjacent I/O channel for device control. Ready and interrupt line expansions may also be brought out through the peripheral interface boards. Assembly Most of the circuitry is completed by soldering the components on the various PC boards. Although most of the PC boards are double sided, components need only be soldered on one side since all holes are plated through. Edge connectors are provided for each plug-in board. These connectors must be soldered on the backplane. Some 68 wires must be soldered between the backplane and the control panel. The backplane and control panel are fastened back to back using spacers on long machine screws. The control panel, CPU boards, memory boards, and parallel interface boards are double sided PC boards with plated through holes. These PC boards seem to be of good quality. The backplane board and the power supply board, however, are single sided and not quite as good. Extreme caution must be used as the foil patterns on these single sided boards will lift with very little excessive heat applied. Only about half the power supply circuitry is included on the power supply PC board. A power transistor and a voltage regulator, both in a T0-3 case, must be mounted in a heatsink (supplied in kit) on a chassis which must be provided by the builder. The power transformer, fuses, filter capacitors and power switch are also mounted on the builder supplied chassis. All of these components must be point to point wired. Wire must be supplied by the builder. Documentation The manuals and instructions provided for the 008A fall short. Anyone planning to write up any documentation in the future should take note of this and use the criticism constructively. The assembly instructions provided for the 008A are brief. The author of the documentation spent very little time on clarifications. Someone who has had considerable experience in both electronic engineering and computer science would have very few problems with the 008A. However, if a product is made with the intention of selling it to everyone, the documentation should be written to be understood by everyone. This includes people who are not experts in hardware or software. Much of the construction has to be done by following the component placement diagrams and circuit diagrams. A diagram of the foil pattern line-up for double sided boards should have been included in the 008A documentation. For easier reading, component placement diagrams should be black components on a grey foil pattern diagram rather than black on black. The 008A documentation provides only a brief definition of each software instruction. No information describing the circuit operation of the CPU is provided. A brief description of circuit operation is provided for the parallel interface kit and cassette adapter kit. Only a small amount of information is provided on the use and operation of the computer. Although the 008A documentation does include complete circuit diagrams with IC pinouts, absolutely no troubleshooting information is included. Logic circuit troubleshooting can be followed on the circuit diagram after you have checked wiring and component placement, but test points and voltages should be given on the power supply. Test points and waveforms should be given for devices such as a cassette tape adapter. Even in the 18 logic circuitry, a few major test points and the specifications wouldn't hurt anyone. This author obtained his troubleshooting information via long distance calls to California. The cause of several problems was narrowed down to about three faulty components which RGS cheerfully replaced free of charge. A nice addition to the owners manual for those who may assemble a 008A in the future would be a series of test routines to verify all operations of the computer. These routines should state specifically, step by step, what is to be done and the results of each step. When starting up a computer for the first time, it is sometimes difficult to determine whether a problem is in the hardware or the software, especially if you are not familiar with the machine in the first place. Software The only difference in the 008 A instruction set as compared to other 8008 based systems is the input/output instruction format as mentioned before. Initial program loading is through the control panel. Startup is achieved by setting the restart instruction on the 8-bit binary switch register and depressing the interrupt switch. As in other 8008 systems, the first 64 words of memory are divided into 8 program start-up locations. Any single-byte instruction will be accepted by the CPU at any time when the interrupt switch is depressed. Therefore, if you get your computer into a loop with no exit, set a halt or return instruction and depress the interrupt switch to get out. A software exchange program is slowly getting underway for the 008A. Each user is asked to submit a program to RGS. The programs are compiled as they come in, then sent out to each 008A manual holder. As of yet, exchange has been slow. Ray Stevens, owner and designer, expects the exchange program to pick up somewhat since the cassette tape adapter, ASCII keyboard, and some software for each have recently become available. The available software (sent out to owners of the units) deals with program loading and storage necessary in the development of further programs. Conclusion A generalized statement summarizing the 008A scene would have to be this: The 008A is one of the most economical systems on the market, offering a nearly complete kit and software exchange program. RGS holds good potential for becoming a healthy segment in the growing world of avocational computing. But there is some work yet to be done. In the meantime, if you are inexperienced in either electronics or computer science, you could run into difficulties in assembling a 008A. Those of us who already own a 008A microcomputer should work on building up the software exchange program to a point of excellence. In the interest of obtaining a revised, updated, improved and rewritten owners manual, let me suggest that all 008A owners send RGS a letter listing changes and improvements they would like to see. The 008A is one of the most econom ical systems on the market, offering a nearly complete kit and software exchange program . . . But there is some work yet to be done. 19 Sweep the blow torch over the ICs pins-one complete sweep once or twice a second. Recycli Used ICs n8 by Carl Mikkelsen 35 Brookline St., No. 5 Cambridge MA 02139 The surplus market is saturated with used printed circuit boards from early computer systems which offer a very inexpensive per chip source of ICs. Used boards typically contain 50-200 chips of small scale or medium scale integration, usually with many simple two input gates and four bit data registers. Common part numbers include 7400, 7402, 7404, 7408, 74126, 74174, 74175, etc. Through careful shopping, I have found boards with large numbers of multiplexors such as 74151, 74153, and even scratch pad registers - 7489. After removing chips from the boards and eliminating any non-functional units, cost per chip is from 3 to 8 cents, resulting in an overall cost of about one fourth to one tenth of the individual chip cost through other surplus outlets. Removing chips from boards offers advantages over purchasing chips surplus which makes them attractive for reasons other than price. Primarily, the companies which originally built the boards used top-quality, fully spec'ed components. All chips have already been tested, and most have already served in equipment. Given that you've found a serendipity of well soldered chips, it's necessary to unsolder them without either burning them or cracking their cases. Desoldering individual leads can be done, but usually the chip is made unnecessarily hot by the prolonged application of heat. Also, pulling each lead out separately results in bent, often broken leads. Devices are available which will heat all 14 or 16 pins of a small IC, but again a long time is needed to melt the solder since the total amount of energy available is limited to a small soldering pencil heating element. Most available boards are two sided and four layer boards aren't uncommon. Multi-layered boards make the required amount of energy even higher. When a board is built, the ICs are positioned in place with all other components, and the board is soldered by a three step process. 1. The underside is washed by hot, bubbling, liquid flux. 2. The clean board is passed over a small fountain of solder, so that the board just touches it. 3. After cooling, the board is immersed in FREON gas to remove any remaining flux. As you can see, the board is su b jected to high temperatures during the soldering phase, which takes around 5-10 seconds. The blow torch method of IC removal duplicates conditions during board soldering by heating all pins simultaneously; removing the IC is a single step. Equipment Needed To use this technique, you will need: A torch. Non-oxygenated propane and acetylene gas has been used. Clamps or a vise to hold the board fairly rigid during chip removal. A way to grip the chips, depending on how they are packed next to each other. Components, small vise grips, a small screw driver and a fine point awl should be all that are needed. A place where splashed solder will not be serious. Some form of eye protection. WARNING 1 Using this method involves heating PC boards to high temperatures. Some boards release Hydrogen Chloride (HCI), which becomes hydrochloric acid in your lungs. Do this only in a well ventilated area, and stop to allow air to clear if irritation develops. 20 Crip the IC a second after removing the flame and rock it away from the board. It should come free in a couple of seconds. m m I >»'»»> MM ■T W WARNING 2 When an IC is pulled from a board, the board often snaps back to its original position. This is especially true if it isn't fixed very rigidly in place. When the board flips, solder is often sprayed away from the back side of the board. I ruined a pair of pants by not considering this before I started. I, therefore, wear old clothes and if you don't want solder on the floor, cover it with newspapers. Enough warnings . . . following is how I pull ICs from boards: First I clamp the board to my bench so that I can get my vise grips on about half the ICs (this is with a 10" x 14" board). I adjust the vise grips so I can grip a 1 4 pin IC without the vise grips locking and then light the torch. The flame on my Benzo-matic torch with the narrow tip is about an inch long. Beginning with the lowest IC I can reach, I heat it with the torch by sweeping the torch over its pins (you obviously heat the non-component side). Especially when using a torch with a narrow flame it is necessary to move the flame over the pins. One complete sweep should be done once or twice a second. After a second or so, the IC should be gripped, and rocking tension away from the board applied. It helps to rock the IC, especially if corner pins have been bent over to hold the IC in place during assembly. The IC should very rapidly become loose, and in another couple of seconds should come free of the board. When the IC is removed, quickly drop it on the bench and move the torch and pliers to the IC above the one removed. Heating the lower IC pre- warms the board above, making the next removal easier. Also, the board position just heated will cool faster, thereby reducing the amount by which the board will be damaged. As each column of ICs is removed, the next is done. When all ICs on one half have been removed, reposition the board so the other half is accessible. I've found that the half-way point often can be a good excuse to let the room ventilate and drink a beer. No matter how carefully and rapidly I've worked, I always burn the board at least once because I have trouble removing an IC, or my pliers slip, or for some other reason. If you consistently burn each board position, your flame is probably too hot. If, however, it takes longer than 5 to 1 0 seconds to remove an IC, your flame is too cool. A certain amount of care is necessary when gripping the ICs. Too much pressure may crack them. Too little pressure will let the pliers slip, costing time to reposition them and marring the cases. When attempting to remove the larger ICs such as 74181s and 74154s, which come in 24 pin DIPs, I have trouble gripping them, so I remove them as a two step process. First, I place an awl under the middle of one side, say between pins 6 and 7. I heat that pin row and, with the awl applying leverage, pull out that row. I then grip the IC on its thinnest dimension, heat the remaining pins, and remove the IC. So far, by using this technique, my friends and I have removed about 1 000 ICs from surplus boards which have about 80-1 00 ICs each. I tend to break 2% of the chips I pull by applying too much force with the pliers. But a friend has never broken one, so it clearly is an individual matter. Of those chips removed unbroken, we have tested around 250, and have never found a bad chip. As an unrecommended demonstration of the ruggedness of ICs, I accidentally grossly overheated one, so that when I gripped it in vise grips, the chip was bent in a curve. The plastic case must have softened significantly. After allowing it to cool several minutes to the point where I could handle it by hand, I plugged it into a circuit, expecting it to have failed totally. It worked, although I didn't check out its ac characteristics. Out of general paranoiac distrust for a device so intensely mistreated, I discarded it. After removing ICs from boards it is usually necessary to clean and straighten the pins. Boards with plated through holes often lose their plating around the IC lead. I have found this method useful as a means of quickly building a stock of ICs ready to use in any project. It is limited mainly by the availability of exotic surplus chips, but most standard 7400 series TTL is easily available. The price of 4 cents/chip can't be beat, and the time required — about 10 to 20 minutes/80 chip board — is rather small. This technique provides a fast, cheap, safe means of removing chips. I hope it proves as effective for you as it does for me. 21 SERIAL We all know microcomputers use parallel data for internal operations. Computers - mini, micro or maxi - are often specified with the "bus data width" as a key parameter. This is the number of parallel bits which participate in operations at one time. Typical microprocessors now available have bus data widths of 4,8,12, or 16 bits. If you employ a used minicomputer in your system you may enjoy a 12,16,18, or 24 or even 32-bit wide bus. When shuffling data to or from memory and peripherals, the parallel lines of the bus are defined simultaneously - and you have to run at least as many physical wires to each interfaced subsystem. When wire is at a premium you can get by with only one channel if the data is sent in a time-ordered sequence, one bit at a time. Communicat- ions and peripheral interfaces thrive on diets of serial bits provided the speed is relatively low. In this article, Don Lancaster provides us with an excerpt from his forthcoming book, TV Typewriter Cookbook, to be published by Howard W. Sams, Indianapolis, Indiana. Don describes the basics of parallel to serial conversion and its inverse, using UART technology to do the transformation. His article this month concerns UARTs and serial interfaces which are relatively self-contained - local wires, tape recorders, etc. He also covers the communications aspects of serial data. ..radio and telephone network modem hardware. While Don wrote the article from the point of view of the TV Typewriter technology which he pioneered, the problems he discusses are just as applicable to the home brew computer context .. .simply read "computer" every time you see TVT in the text. Don's comments on the serial cassette interface will provide one input to the discussion of various possible recording interfaces in the pages of BYTE. . . . CARL by Don Lancaster Box 1112 Parker AZ 85344 Most TV typewriter circuits need all their ASCII character and command bits simultaneously available in parallel form. This is also true of most electronic keyboard encoders and the bidirectional data buses of many minicomputers and microprocessors. In simple systems, we can connect all these parallel sources and loads together as needed without any further interface circuitry. Sometimes, it's far more useful or convenient to have the bits march by one by one in serial form. While serial form is much slower, it has one big advantage — only a single wire or com- munications channel is needed, instead of multiple signal lines. Another benefit of serial form is that it can be made slow enough to communicate over ordinary phone lines, cassette tapes, radio channels, or electromechanical teletype systems. Some of the places where we'd like to use serial transmission are: Remote Keyboards, where a single pair interconnection gets used instead of expensive multiple conductor cable. Teletypes, where the bits have to be converted to signals based on current or no current in a wire loop. Industry Standard Interfaces, such as the RS232-C and the newer RS422 and GPIB, allowing signals to travel relatively long distances. Cassette Recorders, where we can store and exchange characters and programs with properly designed single channel, speed independent circuitry. Radio Transmission, where only two tones on a single transmitted frequency are often used. This is typical of ham RTTY. Modems, or Modulator- Demodulators that let us exchange data over the telephone line, either one way, or both ways at once. We can call the circuits 22 INTERFACE that get us from parallel to serial and back again serial interface. Usually, there are two distinct parts to the interface problem. The first is to convert from parallel to serial (or vice versa) at logic level, staying compatible with CMOS or TTL integrated circuits. This is often done in an industry standard single integrated circuit called a UART, short for Universal Asynchronous Receiver Transmitter. UARTs will simply and cheaply do the conversion and back again, along with providing all the necessary housekeeping bits, control signals, and noise immunity provisions. The second portion of our conversion process gets us from logic levels to whatever form of signal the serial part of the system uses — such as dc currents for teletypes, bipolar signals for standard interface, and carefully selected tones suitable for cassette recording or transmission over a radio channel or a phone line. We'll be taking a detailed look at most of these techniques later. How Fast? There are two basic types of serial transmission we can use, synchronous and asynchronous. In synchronous transmission, all the characters (called "words") are locked into system timing. We know the exact time position of each piece of data. If some time is to go by without doing anything useful, do-nothing words called nulls are provided. Timing signals must somehow be supplied to each end of a synchronous serial data system so we can tell when each word is to start. This usually means a separate timing channel or track or some sort of elaborate timing recovery circuit. Synchronous systems are usually fast and complex, but they are rarely used in most TV Typewriter applications. With asynch ronous transmission, the data words are not locked into system timing and can arrive with almost any spacing between words. To tell the beginning and end of a word, we have to add some new bit groupings, called start and stop bits, to the data. We don't have to provide any other locking signal between the source and destination of common Baud rates. The most popular of these include 110, 300, 600 and 1200 bits per second. 1200 BPS is usually the fastest that can be handled by the phone company without fully dedicated lines. Inside systems, and where special lines can be provided, faster synchronous standard Baud rates of 2400, 4800 and 9600 bits per second may be used. Should the Baud rate change between transmission and reception, such as when two recorders are used, or the batteries on one recorder age, the receiving end of the system has to be able to adjust itself to the new effective Baud rate if errors are to be avoided. 110 Baud is very popular for limited speed TV Serial Uses Remote keyboards Teletypes Cassette recorders Modems Fig. 2. Standard serial communications speeds. BAUD TELETYPE DDD PHONE RATE TYPE COMPATIBLE? COMPATIBLE? 110 BPS Asynchronous YES TWO WAY 300 BPS Asynchronous NO TWO WAY 600 BPS Asynchronous NO ONEWAY 1200 BPS Asynchronous NO ONEWAY 2400 BPS Synchronous NO NO 4800 BPS Synchronous NO NO 9600 BPS Synchronous NO NO FRAME UPDATE TIME TO LOAD COMPATIBLE? 512 CHARACTERS YES 51.2 SECONDS YES 18.7 SECONDS MAYBE 9.3 SECONDS NO 4.6 SECONDS NO 2.3 SECONDS NO 1.2 SECONDS NO 0.6 SECONDS the data. Asynchronous data is commonly used in TVT systems. Both ends of a serial transmission system have to exactly agree on a system speed, usually called the Baud Rate. The Baud rate is simply how many bits per second are going to be transmitted, including any start and stop bits. Fig. 1 shows us some Typewriter uses. This rate is compatible with the ASR-33 eight bit Teletype code and corresponds to a 100 word per minute typing rate. While this is the fastest that most teletypewriter systems can be driven, and is easily handled by two-way 103 style phone modems, it takes painfully long to fill the screen. Even with a 512 character screen, 23 THE START BIT IS ALWAYS A ZERO THE STOP SIGNAL IS ALWAYS AT LEAST TWO ONES — V- \ (NEXT WORD) — V START BIT '0" ASCII BIT I ASCII BIT 2 ASCII BIT 3 ASCII BIT A ASCII BIT 5 ASCII BIT G ASCII BIT 7 ASCII PARITY BIT STOP BIT "I" STOP BIT -9.09mSEC (TYPICAL) lOOmSEC "A START BIT "0" ANY AMOUNT OF TIME CAN PASS BETWEEN WORDS Fig. 2. llOBaud, 100 word per minute code. "0" is a space or an open line. "1" is a mark or a shorted line. UART = Universal Asynchronous Receiver Transmitter RTTY = Teletype Radio TVT = Television Typewriter it takes 51 .2 seconds, or almost a minute to load or retransmit the screen. 300 Baud is equal to 30 characters per second or 300 words per minute. This rate is the fastest normally used by a two frame update cursor system. It is also a rate easily handled by a cassette recorder, and by many two-way or full duplex modem systems. About 18.6 seconds are needed to load or dump a 512 character screen. These frame update and retransmission rates can be minimized by using a "virtual" update where one page is viewed while the other is updated, and by creative use of carriage return commands to return after the last character of each line, rather than going on out to the end of the line. Faster Baud rates usually take more in the way of circuit design, and are usually limited to one-way modem transmission, premium recording techniques, and a Direct Memory Access type of update in the TV Typewriter. A 110 Baud Standard The 110 Baud, 100 word per minute code is an industry standard for slow data e xc hange. 1 1 is compatible with the Model 33 and Model 35 Teletype systems, and other teleprinters using an 8 level code. The code takes 100 milliseconds to send a character. The next character can follow immediately or can be sent any time later. Fig. 2 shows us the standard. The original Teletype notation still carries over to this code. A Mark is a digital "1", a shorted line, or a completed connection. A Space is a digital "0", an open line or a broken connection. Between words, the teletype line or digital output is constantly putting out "1"s or marks, and is thus marking time. One of the reasons this was originally done was so that any break in communications is immediately known. There are eleven bits to the code. Each bit is an identical 9.09 milliseconds long for a total code time of 100 milliseconds per word. Each word begins with a start bit. The start bit is always a zero and tells the receiving circuitry that a new character is to begin. The start bit is essential since some ASCII words will begin with one or more "1 "s and there is no way to tell a marking time "1" from a "1" bit in an ASCII character code. The ASCII bits follow in sequential order, starting with bit B1 or the least significant bit. After the seven character bits, an eighth bit is sent either as a "1 " or providing a parity check bit for the rest of the word. At least two stop bits must follow the word. The stop bits are "1"s or marks, and any number of additional marking "1"s can follow between characters. The stop bits give the receiving circuitry a chance to shut itself down and await a new word. The receiver can be electronic in the case of a UART or electromechanical in the case of a teletype. Between words, the receiver just waits. Since the data transmission is asynchronous, the receiver has no way of knowing ahead of time when a new word is to arrive, so it has to wait for a new start bit before it can do anything. The arrival of this bit activates the receiver, which " then goes through a sequential procedure that sorts out the bits, puts them in parallel form, and outputs them. With a UART, sequential time intervals of 9.09 milliseconds each are electronically generated and the center of each interval window is tested against the incoming code to see whether a "1" or a "0" is received. These are accumulated in a shift register, error tested, and output as a parallel word at the end of the interval. The stop bits are used to reset and shut off the circuitry. With an electromechanical teletype, the break in line current caused by the stop bit releases a one-turn clutch on a mechanical scanning commutator that goes once around in 100 milliseconds. It sequentially routes the incoming code to a group of scanning solenoid magnets. These set up the code in parallel form, and at the end of the word, the scanner resets and the code is typed or output on paper tape. Tolerances It's extremely important that both the transmitter and receiver are clocking bits out at the same 9.09 millisecond rate, and that nothing happens in the channel to speed up or slow down the bits. There are many possible sources of error. If the bit 24 positions jitter around or are differentially delayed to by any tone keying, the filtering, or channel response, we get a bias error. Bias errors put individual bits ahead of or behind where they actually belong. One source of bias in a two tone modem or cassette system occurs when one tone is delayed more than the other in any filtering circuit. This is called the group delay distortion problem. If the basic transmission and reception rates differ so that the bits can get ahead of or behind where they're supposed to be, we have a skew error. Note that bias errors apply to individual bits, while skew errors are progressive, making each sequential bit decision that much more difficult to detect without error. We get a skew error if there is an absolute timing difference between transmitter and receiver. Cassette recording systems introduce a potential skew error if the record and playback rates differ. This easily happens with cheaper units susceptible to speed variations with battery voltage, and almost is inevitable if the recording is done on one machine and playback on a second. Recording skew errors are correctable if the recording signals are designed to include speed information, and the receiver is capable of using this information to speed up or slow down as needed to eliminate this error source. How accurate do we have to be? This is easy to calculate. Assume temporarily that there are zero jitter and zero bias errors in the channel, and that we are using an electronic receiver that very narrowly samples for valid data. The last data bit we are interested in is the parity bit. The center of the parity bit is 8Vt bits removed from the beginning of the start bit, a delay of 77.26 milliseconds. The receiver delay is also supposed to be 77.26 milliseconds. If our sampling is narrow enough, we can be up to just under half a bit slow or fast and still be able to read the parity bit without error. This corresponds to a time error of 4.53 milliseconds either way, or slightly over 5%. But, this figure leaves no room for bias and jitter errors and doesn't give the slower electromechanical circuits enough time width to reliably respond to the incoming data. As a practical rule, the receiver and transmitter bit times must match to well within plus or minus one percent. It is absolutely essential to hold things this close for low-error communications. A 300 Baud asynchronous timing system is very similar to Fig. 2 and uses the same eleven bit code of equally spaced bits. The only difference is that the per-bit time is 3.33 milliseconds, corresponding to a 300 Hertz clock rate. Optionally, only a single stop bit may be used. This rate is cassette and TV Typewriter compatible and may be used for full duplex (two way) operation in most modem circuits, but it is too fast for teletype use. Using UARTs Parallel to serial conversion and back again can obviously be done with CMOS or TTL circuits. Basically, you parallel load a shift register and serially clock out data or serially clock in data to a shift register and then latch its parallel outputs when the data is valid. By the time you add all the error testing circuitry, housekeeping bits, synchronization, and so on, the circuits tend to get specialized and complex. Instead of this route, you can use an industry standard MOS integrated circuit called a UART for virtually any serial to parallel conversion and return process. Several pin compatible UARTs appear in Fig. 3. These are general purpose, programmable devices that let you select the number of start and stop bits, the word length, type of parity, and so on to suit your particular system. Dedicated UART-like devices are also available for use with specific microprocessors. The Intel 8201 and the Motorola 6850 are typical of these. The standard UART comes in a 40 pin package, and has supply voltages of +5 routed to pin #1, -12 to pin #2, and ground to pin #3. The later versions of these devices are N channel types that need no -12 supply, and Fig. 3. Pin compatible UARTS. S1883 (American Microsystems) AY-5-1 01 2 (General Instruments) 2536 (Signetics) COM2502 (Standard Microsystems) TMS6012 (Texas Instruments) TR1602 (Western Digital) that pin is left unconnected. The General Instruments AY-5-1 01 4 is one of these. The low number pins (1-20) are the receive portion of the UART, while the high number pins (21-40) are the transmit portion. Except for common word length and parity programming, the two halves of the circuit are separate, although they often are used as a send-receive pair. Both the receiver and transmitter portions of the circuit need a clock. The clock frequency is usually sixteen times the Baud rate. This high frequency lets the UART do things like sample the center of each data interval and recheck for valid start signals and similar good things. For instance, a 110 25 Fig. 4. V ART circuit to transmit code of Fig. 2. I6X CLOCK INPUT O- 1760 Hz (NO BAUD) 4800Hz (300BAUD) ASCII PARALLEL INPUT MSB 6 5 4 3 2 LSB o o o o o o g KP SEND SI TOP VIEW + 3 -12 RECEIVER CONNECTION Baud circuit needs a clock of 1760 Hertz, while a 300 Baud one uses a 4800 Hertz clock and so on. The clock signals can be derived from a CMOS or 555 type of astable oscillator, but it is far better to digitally derive clock frequencies from TVT system timing or another stable source. Remember these clock signals must be held to well within one percent and ideally shouldn't have any adjustments. If our TVT has a 15,840 horizontal rate, we can divide this by nine to exactly get 1760 for a 110 Baud system. With a 15,720 rate, we get 1746.6 Hertz, a figure a bit low, but still useful and less than one percent under. The receiver and transmitter clock inputs are on separate pins. They are often tied to a common clock source in simple send-receive circuits. One important exception is when a UART is used as part of a speed-independent cassette interface. In this case, the receiver clock frequency is derived from the tape during playback. While it is nominally the same as the transmitter frequency, its exact value is set by speed information recovered from the recorder. This can be used to eliminate much of the skew error that would normally result from a change in tape speed from time to time or machine to machine. Fig. 4 shows us the connections for transmission of the 1 1 unit code of Fig. 2. The input ASCII code goes on pins 26 through 33, with the least significant or b1 bit on pin 26. A 16X clock goes into pin 40, and a KP send command goes to pin 23. The leading edge of this send command starts transmission, but the input data must be valid for the entire time the command is positive. Normally, this is a narrow pulse a few milliseconds wide, derived from a keypressed command on a keyboard. Serial output data appears on pin 25. Pins 34-39 program the UART for different bit lengths and codes. 34 is an enable that normally remains high. Pin 35 provides a parity bit if it is grounded and omits one if it is high. Pin 36 picks the number of stop bits. Ground gives you one and high gives you two. 37 and 38 together decide how many data bits are to be sent, ranging from 5 to 8. Both grounded provide for 5 data bits, useful for Baudot RTTY transmission. The connection shown gives us a seven bit data word. Note that if you use the parity bit, it adds to the number of data words. The code of Fig. 2 uses our start bit, seven data bits, one parity bit, and one stop bit for an eleven unit code. Pin 39 picks even or odd parity with ground giving odd parity. An optional reset input is provided on pin 21. It is normally grounded. Bringing it high resets the UART. Without resetting, the first word transmitted after power is first applied can be wrong. The UART transmitter is double buffered. This means you can load a new character as soon as the one already inside begins its transmission. Two optional outputs are provided. Pin 22 tells you when it is OK to provide a new character by going high. Pin 24 tells you that a character has been completely sent when it goes high. There are two ways you can use a UART transmitter, either unconditionally or handshaking. In the unconditional mode, any time a character arrives, it gets sent. This is the simplest, but you have to make absolutely certain that characters don't arrive spaced or grouped too closely together. While pairs of inputs can be closely spaced much the same way that two key rollover works in a keyboard, you have to be absolutely certain that the long term average is never exceeded by the word rate of the UART. This means a 100 millisecond character spacing for 110 Baud, and around one third that for a 300 Baud system. In the handshaking mode, the UART decides when it wants to receive a new character, using the pin 22 and 24 outputs. Circuits driving the UART are set up to provide characters only when they are asked for them. For most TVT uses, unconditional UART transmission is simpler and easier to use. 28 Fig. 5 shows us the UART receiver circuit, again set up for the code of Fig. 2. The receiver logic has elaborate noise elimination provisions, made possible by the sixteen times higher clock frequency. Whenever a start bit is purportedly received, that bit is retested later and verified to prevent a random noise pulse from generating an unwanted character output. All data bits are narrowly sampled in the middle of their possible time slots, allowing considerable bias and skew distortion to exist without error. The same pin 34-39 inputs that programmed the transmitter's word length and format identically program Baud rate, applied to pin 17. In send-receive systems, we can often tie the receiver and transmitter clocks together. In speed-independent cassette interface circuits, the receive clock is reconstructed from speed information recovered from the recorder to eliminate skew errors. The serial input is routed to pin 20 and converted to the equivalent seven bit parallel ASCII output on pins 6 through 12, with the least significant bit on pin 12. When the output is valid, a strobe on pin 19 goes high as an output. This output strobe must be reset before a new character can be output. If we're operating in a invert it, and reapply it to the strobe reset input pin 18. Fig. 5 shows us one way to do this with a RC network and a CMOS inverter. Many UART receiver problems are caused by failing to reset the strobe after each character — watch this particular detail very closely. Several additional outputs are available for use in fancier systems. Parity, framing, and overrun errors produce respective high outputs on pins 13 through 15. These can be used to ask for a repeat or put in a question mark to indicate a transmission error. All receiver UART outputs are tri-state and may be floated in systems where the UART's Fig. 5. UART circuit to receive code of Fig. 2. Parity, word length, and stop bits set by transmitter programming, pins 34-39. ADDITIONAL CIRCUIT NEEDED FOR UNCONDITIONAL OUTPUT IN9I4 (19) ■ w»- I00K TRANSMITTER CONNECTIONS .01 4049 (CMOS) I6X CLOCK 1760 Hz (110 BAUD) 4800 Hz (300 BAUD) 6 6 6 6 6 6 6 MSB 6 5 4 3 2 LSB ASCII PARALLEL OUTPUT IS JL NEXT CHARACTER ENABLE CHARACTER RECEIVED the receiver portion of the UART. Although the receiver and transmitter can be used in totally different circuits and at different baud rates, they have to operate with a common format, set by these pins. The receiver needs its own clock of sixteen times its handshaking mode, the TVT circuitry accepting the character sends back an acknowledgement or completion signal that momentarily drives pin 18 low. If we are using an unconditional output mode, you somehow have to delay the pin 19 strobe output, outputs must share a common or a bidirectional data buss. Making pin 4 positive disables the ASCII outputs, while making pin 16 positive disables the error outputs. Besides its usual use as a two way serial to parallel converter, there are other 27 useful circuit tricks you can do with a UART. For instance, by connecting the parallel outputs of the receiver back to the parallel inputs of the transmitter, you can change Baud rates. This is handy in speeding up slow data for use on a fast channel, and for correcting speed errors on cassette systems. If the UART is to accept data from several sources you can either tri-state combine the sources onto a single input buss, or else use an input eight pole, double throw selector switch to pick one of two input channels. This is common in TVT service, where the keyboard forms one channel and the screen retransmission output buss forms the other. 4502 hex tri-state drivers or 4019 four pole selectors are suitable CMOS devices to use. In general, tri-state lines onto a common buss are much preferable to selectors, but few keyboard encoders have inherent tri-state output, and the output buss on the TVT often has to continously drive the display if we want to view the retransmission process. Teletype Interface There are two common types of teletype systems in use today. The older type is the five code bit machine, typical examples of which are the Teletype model 28, the Creed model 75, and various Kleinschmidt models. While these machines are com- mercially obsolete, they still see usage for ham RTTY and some deaf communi- cations systems. Their reasonable price availability makes them attractive for home computer hard copy as well, although the available character presentation is extremely limited. These older machines all use the more or less obsolete Baudot code and are not directly ASCII and TVT compatible, unless conversion ROMs and figures-letters logic is added to them. We'll note in passing that a UART may be used in the Baudot code by applying the code to pins 26-30 with the least significant bit on pin 26, and making pin 35 high and grounding pins 37 and 38. Older UARTs will generate two stop bits, while more recent ones (such as the TR1602B) will automatically generate the needed 1 .42 stop bits in this mode. The second common type of machine is the computer and timesharing standard teletype — the Teletype models 33 and 35, particularly the ASR-33. Reception reverses the process. A momentary break representing the start bit releases a once-around commutator that distributes the code breaks to magnets which set up a pattern for printing when the scan is complete. Fig. 6 shows us the interface for a Model 33 teletype. For optimum use, the teletype is internally programmed to a 20 milliampere current loop and full duplex operation. This is done following the teletype's maintenance manual. Full duplex operation means that the keyboard and printer from the UART is read as a "1" by the teletype. Be sure to observe the line polarities shown. The transistors can be almost any medium power, reasonable gain devices. More information on teletype interface appears in the Intel MCS-8 Users Manual. Similar current-no current interface loops can be used with older teletype systems. However, some of these machines need substantially higher currents and are notorious as transient and ground noise generators. With these older machines, total isolation is strongly recommended, using small, Fig. 6. UART-teletype (ASR-33) interface. Teletype must be internally set to 20 mA loop current and full duplex operation. PWR SND RCV ASR-33 OUTPUT TERMINALS -0 + 5 + 5o DATA TOTTY FROM UART 2N2222 4049 (CMOS) -12 These use a standard eight bit ASCII code and follow the format of Fig. 2. They are directly compatible with TVT system coding. Either type of system is based on breaking current in a dc loop. This current is often either 20 or 60 milliamperes. Transmission occurs when a mechanically coded commutator generates an output code by once-around breaking the current as often as needed. aren't connected to each other. The keyboard can send and the printer receive both at the same time. The transmitter interface provides a 20 milliampere current for a mark or a one and an open circuit for a space or a zero. The receiver senses a closed contact for a mark or a one and an open contact for a space or a zero. Extra inverters are added as shown to make the codes correspond so that a "1" DATA FROM TTY TO UART high speed reed relays or else opto-isolator circuits. With any teletype system, the transmit Baud rate of the UART must match the needs of the teletype to within one percent. In the case of the ASR-33, a 110 Baud rate is needed, resulting in a 16X UART clock of 1760 Hertz. Industrial Interface There are presently quite a few "standard" interfaces used to get between 28 Fig. 7. Industrial interfaces for cable interconnections. (NATIONAL) 1/4 LM I486 (NATIONAL) I/4LMI489 WW"//'*-'' ^-3V + 3V ' ' rt- ■fc ST" 1/4 LM 1489 fa) RS232-C ENABLE ^ 400pF I/4LMMB8 ENABLE H2mA ///////// l/2 75108 '//////// 0mA (TEX. INST) 2 ,2mA 'N=££= IT /• M BALANCED L n. (■ 1/2 75108 (TEX. INST) EN IN (b) RS422 y////////.z 2.4V E%BLETJ3> 8V OV LINE J I/4MC3440 (MOTOROLA) (C) GPIB 0'»" ■ J* 1/4 MC3440 (MOTOROLA) commercial modems, printers, test equipment, computers, and anywhere else you need a reasonable distance, noise free interface. Three of the most common include the RS232, the RS422, and the General Purpose Interface Buss or GPIB. Fig. 7 shows us what's involved in the way of signal levels and inter face techniques. RS232-C is an old EIA standard that predates IC techniques and is somewhat unwieldy. It is widely used in commercial modem circuits and for most large scale computer serial interface. The signal is bipolar, with a logic "1" being defined as +3 to +9 volts or more and a logic "0" being defined as -3 to -9 volts or more. Capacitors on the drivers limit risetimes to 30 volts per microsecond or less to minimize ringing and transient effects. Capacitors on the receivers limit the response as needed to reject noise but pass the highest transmitted Baud rate. The 1488 and 1489 integrated circuits form a typical interface pair. RS422 is a newer EIA standard that uses balanced transmission lines and differential current sensing to eliminate any common mode noise. A current, typically of 6 to 12 milliamperes in one direction, defines a "1", while the reversed current defines a "0". The balanced line may be used either single direction or bidirectional, depending on how the receiver enables are used. In any bidirectional or party line system, it's extremely important to enable only one driver at a time. The 75108 and 75109 are typical balanced line drivers and receivers. The General Purpose Interface Buss or GPIB uses TTL compatible levels, but combines them with a terminated line, high drive capability, and receivers with hysteresis for good noise immunity. The GPIB is most often used in parallel form to interface test and measuring equipment with computers and calculators. It can also be used as an effective serial interface that takes no special power supplies. The 3440 is a quad bus transceiver useful for GPIB service. More information on EIA standards are available from the Electronic Industries Association, 2001 Eye St. NW, Washington DC 20006, while information on the GPIB interface is available from Hewlett Packard, 1501 Page Mill Rd., Palo Alto CA 94304. Cassette Interface Magnetic storage in the form of tape drive, disc files, and floppy discs have long been a standard and expensive way of storing bulk serial data for computer use. An obvious and extremely low cost substitute for these would seem to be the ordinary audio cassette recorder. Besides providing bulk storage, the cassette can replace paper tape and punched cards, and handle programs as well. One big advantage of cassettes is potentially low cost duplication and distribution and exchange of programs. Cassette recorders present several serious design problems when used for storage of digital data. Even a quality machine will vary its speed by a percent or more, and the machine to machine variations, particularly on lower cost units, can far exceed the amount of skew 29 Fig. 8 Speed independent cassette standards. 110 BAUD (CODE PER FIG. 2) ARK = 1 = 16 CYCLES OF 1760 HZ SPACE = 0 = 8 CYCLES OF 880 HZ 300 BAUD (FIG. 2 CODE WITH 300 HZ BIT RATE) MARK = 1 = 16 CYCLES OF 4800 HZ SPACE = 0 = 8 CYCLES OF 2400 HZ 600 BAUD (FIG. 2 CODE WITH 600 HZ BIT RATE) MARK = 1=8 CYCLES OF 4800 HZ SPACE = 0 = 4 CYCLES OF 2400 HZ (clock doubling required) distortion the code of Fig. 2 can stand — if the receiver UART is running at a constant clock rate. Some of the techniques used to send data over modems and radio channels will work with a single, quality recorder, but these circuits are far from optimum as they have no way to compensate for recorder speed variations. Similarly, many of the standard computer tape recording techniques may work, but they are based on a different type of recording head and system — one that works with pulses, saturated flux changes, and sense amplifers, rather than one that records and plays back sine waves more or less linearly. An ideal cassette interface would handle any machine and provide for machine to machine variations. We'd also like to supply some protection against dropouts, perhaps in the form of integration or multiple voting on what constitutes a one or a zero. A low cost, simple system using a single supply voltage and a minimum number of non-critical adjustments is obviously desirable, particularly if the system can be very tolerant of recorder levels and settings, and need no exotic codings, preambles or other limitations. We can base such a speed variation tolerant or "speed independent" system on a unique property of the UART. For every received one or zero bit, the UART needs exactly sixteen receiver clock pulses. By designing a standard so that sixteen cycles of clock are recovered from a one recorded on the tape, and sixteen cycles of clock are recovered from a zero on the tape, the UART will always receive just the exact number of clock pulses it needs per one or zero. Tape speed variations of plus and minus 30 percent or more should be possible. Fig. 9. Speed independent cassette interface. Values shown for 300 Baud rate. Recorder speed may vary ±30%. (a) Record circuit. DATA FROM UART O- TRANSMITTER + 5 o- 400I (CMOS) LOW=tI HIGH=v2 O^O 33K -vw- UART TRANSMITTER O CLOCK (MUST HAVE REASONABLE DUTY CYCLE) .001 TO RECORDER 'AUX? INPUT o (b) Playback circuit. .022 FROM RECORDER ■*""■ |0K "EAR" O j\ wv OUTPUT IN9I4 f RECEIVE CLOCK TO UART RECEIVE DATA °TO UART 0,+5 SUPPLY 30 Fig. 8 shows us a set of standards for speed independent cassette interface. All three standards are based on the code and bit timing of Fig. 2. A 110 Baud standard records 1 6 cycles of 1760 Hertz for a one and eight cycles of 880 Hertz for a zero. The 300 Baud version, which is recommended for most uses, records 1 6 cycles of 4800 Hertz for a "1 " and 8 cycles of 2400 Hertz for a zero. A 600 Baud version can be based on the 300 Baud standard by halving the length and doubling the clock recovery. Fig. 9 shows us the 300 Baud circuitry involved, along with the key waveforms of Fig. 10. Even including the $5 to $10 cost of the UART (usable elsewhere in the TVT anyway), the circuit is extremely simple, non- critical, and cheap. Fig. 9A shows the record circuit. As usual, a UART transmit clock of 1 6 times the Baud rate must be provided. For recorder use, the duty cycle of this clock must be stable and nearly 50%. Note that the UART serial data will always change synchronously with the UART clock, after a brief propagation delay. Clock and Data from the UART transmitter are sent to a gate and flip flop that divides the clock by two if the data is a zero and divides by one if the data is a one. This is done by resetting the flip flop about half way through a clock cycle if the data is a "1". We get sixteen clock frequency cycles with a "1" and eight half clock frequency cycles with a "0". Since the inputs are synchronized, there are no transient problems, and all cycles are full length. This output is 10:1 attenuated and moderately filtered to round the rise and fall times. This prevents excess peaking of the high frequency compensation inside the recorder. The output is capacitively coupled to the recorder AUX input. The receiver gets its signal from the recorder EAR output. This signal is high pass filtered and doubly limited, first by a pair of diodes and then by a CMOS op amp. This particular op amp lets you run the inputs at the same voltage as the "negative" supply. If you use a standard op amp here, you'll need either a negative supply or positive input bias. nothing for each one. The leading edges of these outputs are sensed and shortened to 25 microseconds, and then combined with the input 25 microsecond pulses. The result is 16 clock pulses routed to the UART receive clock — either sixteen from the data for a one, or eight from the data and eight from the monostable for a zero. The monostable's output also goes to a flip flop to recover the data. We get a Fig. 10. Key waveforms of speed independent cassette interface. LilMnJlMJ^^ (A) RECORDED a RECOVERED SIGNAL +5 O 25/iSEC PULSES (B) MONOSTABLE TRIGGER (C) MONOSTABLE OUTPUT (D) RECOVERED DATA UTRrLnjTrLru- ^ p O + 5 O I " (E) DELAYED 8 INTEGRATED DATA (F) RECOVERED CLOCK A CMOS gate following the op amp improves the rise and fall time. The gate's output is shortened and generates a pulse that lasts for 25 microseconds or so, coin- cident with the positive edge of the transmitter clock. This trips a negative recovery monostable set to two thirds the period of the lower frequency clock. If a string of "1 "s is received, the monostable keeps on being retriggered and never drops its output. If a string of "0"s is received, the monostable drops its output for the final one third of each cycle. The net result is that you get a train of 8 negative going pulses out for each zero and MM -H -H 4 1 M Vi 4\ ^— EFFECT OF SPEED VARIATION + 5 - O -+3 "1" out of the first flip flop whenever 1 6 cycles of high frequency data are received and a zero whenever 8 cycles of low frequency data are received. The second flip flop integrates the output of the first one to eliminate any noise pulses and to take an average of several sequential ones or zeros before providing an output. As the tape speeds up or slows down, the input square waves will also speed up or slow down. The monostable's output can absorb almost a 33 percent increase (from half to 2/3) of the high frequency clock period, or a 33 percent decrease (from 1 to 2/3) of the low frequency clock period without error. 31 Oddly enough, though the circuit will work with poor quality recorders, the tape quality should be good — bad tape means bad data. The spacing of alternate zero clock pulses to the UART will change as the speed changes - but the UART doesn't care about this so long as the clock pulses don't actually overlap. This jitter is automatically eliminated by circuits inside the UART. You calibrate the system by inputting a string of "1"s and noting the pot position where errors first happen. You then input a string of zeros and note the pot position where errors first happen. Then you set the pot one third of the distance from the limiting one to the limiting zero settings. This is a non-critical adjustment. The symmetry control can optionally be adjusted with a scope, or else by inputting alternate ones and zeros and adjusting for one half the supply voltage (as read on a meter) at the UART receiver data output. There is one little detail that must be checked. The positive edge of the UART transmit clock must be the same edge that, when received, is tripping the negative recovery monostable. If it isn't, you may get partial pulses instead of a nice uniform eight pulse train during a zero. Recorders may vary in their internal circuitry and may provide a phase inversion between input and output. If you have this problem, either use the Q output of the recorder flip flop, or interchange the connections on pins 2 and 3 of the receiver li miter. Once set for a given recorder, there should be no further problems along this line. While the circuit seems to work with amazingly poor recorders, best operation is gotten with a clean, medium to better grade recorder, preferably one that has an automatic level control on the input and tone controls available, along with an AUX input and an EAR output. Best operation will normally result with the output volume control about half way up and the tone control set to maximum treble boost. A very important point that's often overlooked is the tape quality. Bad tape means bad data. Use only fine grain premium tapes (Radio Shack Supertape is typical). The key thing to watch for is whether the amplitude variation is guaranteed to less than one decibel. If the variation isn't specified — don't use the tape. The cost difference between good and cheap tape is negligible. You should also always "certify" your tape before you use it by writing a repetitive and obvious pattern over the entire tape length and checking for errors, splices or dropouts. Extra controls to start and stop the recorder can optionally be added to make the storage more efficient. Data should never be entered or removed until the recorder is up to speed, and the UART's output lines can be gated to prevent garbage from getting into the system. Formatting data by setting it up on the TVT screen and then using a screen read to load the tape will give you dense storage. One final detail that may need watching is to make sure the cassette recorder can't overspeed the system if you happen to record on a slow machine and playback on a fast one. This could output characters faster than can be accepted by a teletype or a TVT frame update system. The way around this problem is to set some maximum possible character rate that will let the return characters speed up without problems — use of a 7.5 Hertz rate on a 110 Baud system or a 22.5 Hertz rate on a 300 Baud system is one example. A second potential solution is to use two separate UARTs — programming the transmitter for two stop bits and the receiver for only one. When going from a cassette to a teletype, data can be resynchronized by connecting the UART parallel receiver outputs to the UART parallel transmitter inputs. Once again, make sure you can't overspeed the system. Radio Data Links One of the more common methods of sending serial digital data over a radio channel is to use a two frequency frequency shift keyer method in which one frequency represents a digital one and the other a digital zero. Ham RTTY provides us with a typical example. At the audio baseband, two tones are used, defined as 2125 Hertz for a mark, or one, and 2925 Hertz for a zero or space. These tones represent the fifth and seventh harmonic of 425 Hertz. These tones may be digitally generated the same way the modem tones of the next section are produced, or may be generated by a voltage controlled oscillator such as a 555, 8038 or a 566. These frequency shifted tones are used to frequency modulate an rf carrier. Alternately, the carrier itself can remain at its normal frequency for a mark and can be shifted down 850 Hertz (the difference between 2125 and 2925) for a zero, with the audio differences being picked up by mistuning the receiver by 2125 Hertz. Fig. 1 1 shows us a typical receiver demodulator circuit. The carrier is received and detected by a FM receiver, adjusted to output audio tones of 2125 and 2925 Hertz. These tones are limited and routed to two bandpass filters, one set to the upper and one set to the lower frequency. Outputs are amplitude detected and compared, resulting in a one out for a frequency of 21 25 and a zero for 2925. This 32 output may be routed to a UART for serial to parallel conversion. Normally a 7.42 unit code of 60 or 1 00 words per minute, using Baudot encoding, is used for ham RTTY. Any radio carrier system must follow the rules and regulations for the particular frequencies used. Best performance of a frequency shifted keyed system normally results when the generated frequencies are sinewaves and are switched, transient free, at their zero crossings. Receiver filters should delay both sets of frequencies identically to prevent ones from getting ahead of zeros or vice versa, and thus creating times when neither a one or a zero, or both of them together are simultaneously present. As with any serial interface, input and output code formats and Baud rates must closely agree. Modems Modems, or modulator- demodulators, are ways to get tones or tone groups onto the telephone line and off again in order to send and receive digital data. Two common ways of coupling modems to the phone line are to use small speakers to acoustically couple to a standard handset, or to directly connect to the phone line through a suitable protective network or data access arrangement. Acoustical coupling can be used anywhere on an unmodified telephone, but has problems with frequency response, microphonics, and second harmonic distortion caused by the carbon transmitter. Direct coupling gives better control and better performance, but has to meet certain telephone company regulations and interconnect restrictions, needs a physical connection to the phone line, and needs its own hybrid or means of separating transmitted and received data. There are several basic ways to use modems. Simplex transmission goes one way only. Simplex with a back channel goes one way only, but provides for some low systems that are useful over ordinary telephone lines, based on the Bell 103, 202 and 400 series systems. You can rent these from the phone company or others, buy them outright from modem firms, or design your own with the guidelines of this chapter. Most of the commercial modems use RS232-C interface standards and include such logic and Fig. 1 1. Audio processor for RTTY receiver. 2125Hz ■ MARK'I 2925 Hz = SPACE =0 AUDIO INPUT FROM FM RECEIVER -r Wayne r the 8008 .i i- reside! so listings The .-lull ind Pl./M o i Hum) and 8008 assemblers. now has a responsibility t<> use this software in a non* proftl manner, which means no private or commercial deals. II you have a system large enough to house a copy of the mag tape and can make access available to the rest of the members, contact Gordon French Wayne also hrought a TV terminal Intel developed two years ago as a demonstration unit. The unit uses a -loo-t microprocessor and has both a character and a plot mode I5x 7 dot square you can move around). Wayne hooked it up to a TV and tuned it in on the edge ot channel 0. The current ROM gacc us onr choice of tic-tac-ioc or tennis. We played both. At the previous gathering Wayne had suggested using a shadow ROM for bootstrapping svhen you fust tutn on yout computer. This time on request he drew a schematic on the grcenhoatd. but I don't think many of the less technically oriented among us followed his explanation completely. Which btings me to a general observation: The club is quite a mixed gtoup We ate composed of outright novices to top flighi professionals and leaders in the industry. Many arc Somewhere inbetween. Only a few arc strong in both hardware and software. It seems to me. we need classes or some more paricnt and detailed means of convey- ing inlotmation across an ignorance gap. and at the .ame time not borr the more experienced among US. I think our sire is large enough now that t meeting as a svholc im say 7 to 9pm, we en break mm thtee fout small groups r more educationally iented discussions an hout. Anyone ' .^ a ^/JT^ have comments on this' 6 "-< ■ »-*Eivfirj, Perhaps thctc is enough learning taking place as it Is and any attempt to optimize*)! further will upset the telaxed inlormality ot the gatherings Comments? Thanks ro John Draper tor setting up a group library account for the club at Call Computet. Those who have accounts, have vour nnmber changed to a K-2'5 number. If we have enough join, the club won't be charged the $5 110 monthly base rate [We also pay 63 cents pet thousand chat- actcrs on file pcrmonth i The intention ts to have useful programs smtcu in the K-2I1H library tile Thanks to Dan Mr testing the 2 ll)2's the gtoup put- chased from Solid State Music. Thanks to Lenny and Frank tin setting up the auditorium for our use. Much thanks and appreciation to everyone for yout tunc .energy, and spirit in making the club what it is The MITS MOBILE came to Rickey's Hyatt House in Palo Alto June 5th is nth The room was packed { 1 50+) with amateurs and esperimcniers eager to find out about this nesv electronic toy Ihe evidence is overwhelming that people want computers, probable- lor self-cntettainiticiu and educational Usage Whs' did the Pig Companies miss this markcrr They were busy sellinj OthCf land the government and military to sell directly to the public. I'm all in MITS is having with the Altair because ( 1 1 lorcc the awakening of other eomp. for low-cost computers [or use in the h Competition, resulting in I the hand held calculator I nines to each I hey don'r wanr ar ol ihe splash all do ihree things s to the demand :. which will mean [list as happened with ompiucr clubs and hobby groups in form lo fill ihe tccbnic (3) help demystify computers. Computcts arc not magic. And it is important for the general public to begin to undci stand the limits of these machines and that humans are responsible for the programming Amateur Computer Society of New Jersey Is Up and Running The ACSNJ was th-st assembled on Friday, June 13, 1975. The feasibility study was performed by Sal Libes who has become its Operating Manager. The system will run monthly on the second or third Friday of the month. Input is in the form of 40 + enthusiastic hobbyists. Over 50% of the amateurs are hardware and/or software oriented. There are 10 home computers running in the group, 5 of which are Altairs. Output will be a local newsletter. The first issue will contain information compiled from a questionnaire given out at the meeting. Information was processed randomly. There were some minor bugs which had to be worked out; however, those assembled were pleased with the results. A parts supplier was on hand and welcomed as a local source. The second running of the ACSNJ was scheduled for Friday, July 18, at the Union County Technical Institute, 1776 Raritan Road, Scotch Plains, New Jersey. It's good news. The Amateur Computer Society of New Jersey Is Assembled and Running. George Fischer 72 So. Railroad Ave. Staten Island NY 10305 The Amateur Computer Society Stephen B. Gray 260 Noroton Ave. Darien CT 06820 Mr. Gray puts out a newsletter. No further information is available about The Amateur Computer Society. Homebrew Computer Club Newsletter Fred Moore, Editor 558 Santa Cruz Ave. Menlo Park CA 94025 The Homebrew Computer Club is an organization lo- cated in Northern California around Menlo Park. The club was founded by Fred Moore with a hand from Gordon French. A newsletter is published photo offset on a monthly schedule — although no price is quoted, a donation of 50-75^ per issue would be a fair recompense for costs listed in the club treasury report in issue No. 4. The newsletter has included some excellent design notes by Terry Lee, covering SART chips, power supplies, heat sinking, etc. Issue No. 4 reports the start of a San Francisco- Berkeley chapter, and refers to another California club: Sonoma County Minicomputer Club Mark Robinson, President 1-707-544-2865 (work) 1-707-525-1659 (home) ^fflfRW^fW^ 41 JAMES ELECTRONICS P. 0. BOX 822 BELMONT, CALIFORNIA 94002 (415) 592-8097 DIGITAL VOLTMETER % 1.3" high] play. Tha .5% lull scale accuracy. It v. the Siliconix LD110. LDll The voltmeter uses MAN7 n supply eDVM less power supply. $39.95 Per Kit LOGIC PROBE c Piobe Is a unit which Is foi the ! indespensiblc in trouble shooting lilies: TTL. DTL. RTL. CMOS. It e power it needs to operate directly 10 mA max. It uses a MAN3 readou symbols: CHI)— 1 (LOW)-o IPULSEI-P. Probe can detect high frequency pu's« 45 MHi. It can't be used at MOS level $9.95 Per Kit DIGITAL COUNTER ♦ $29.95 Per Kit This ,i a a digit counter un.t *h ch will count up lo 9999 and then prov.de an over (low pulse It is based around the Mostek MK5007 digital courtier chip. The un-t pet- forms the following (unctloni Coum Input, RESET, i .■:! '.■.■■■■■ .-. The counter uper- a 250 k . The c -T.LitU ..-, the only extra compone a timcbase. divider chain and gate. The u rcqu.res 5V, and -12V. The unil cor complete as shown on the lelt less pot supply. ONE KILOBYTE RANDOM ACCESS MEMORY ; lor n a HOMEBREW I es on array of 2102 1kx ess memories lo pioduce y compatible with most uier systems. We provide lality low profile sockets. iimn bypass capacitor. ♦ $69.95 Per Kit 5 VOLT 1 AMP "PL SUPPLY ♦ 5 VOLT 1 AMP J2 L SUPPLY This is a standard TTL power supply using Ihe well Known LM309K regulator IC to provide a solid 1 AMP ol current at 5 volts We try to make things easy for you by pioviding everything you need in one pack- age, including the hardwire for only: $9.95 Per Kit PLASTIC INSTRUMENT CASE uf our DVM and COUNTER kit enough left for power supply or (cullent for many other projects 2"x3l/8"x57/8". fc^ $5.95 Per Case Satisfaction Guaranteed. $5.00 Min. Order. U.S. Fundi. Add $1.25 for Postage — Write for FREE 1975S Catalog California Residents — Add 6% Sales Tax 0/iWSS P.O. BOX 822, BELMONT, CA. 94002 PHONE ORDERS - (415) 592-8097 Micro-8 User Group Newsletter Hal Singer, Editor Cabrillo Computer Center Cabrillo High School Lompoc CA 93436 1-805-733-3501 The "Mark-8" is one of the first widely marketed home computer kits — an 8008-oriented design of Jonathan Titus (TYCHON, Inc., PO Box 242, Blacksburg VA 24060). It first appeared Club in The Dallas-Fort Worth Texas Area Bill Fuller (2377 Dalworth 157, Grand Prairie, Texas — 1-214-264-01 1 1/1-214- 264-9017) organized an informal get together June 29 in a park near Hurst and Bedford, Texas. At that meeting, 12 people appeared - including three Altair owners, the owner of a Martin Research Mark 2 and one home brew purist. Contact Bill for the latest info on activities on the Lone Star state to date. The Digital Groups PO Box 6528 Denver CO 80206 This club provides a newsletter of technical and organizational interest which is reproduced photo offset at $6 per year (12 issues). Also offered are kits, boards, and assembled products for miscellaneous peripherals designed by members in the Denver area. on a large scale in an article in the July 1974 issue of the magazine Radio Electronics - and the result of a large response to this product is Hal Singer's formation of the Micro-8 User Group with an initial orientation to the 8008 as implemented via the Mark-8. The newsletter is a self-published offset publication available at $6 for six issues. Much of the information is original as submitted, although Hal summarizes a lot of the stuff with his text editor and printer at the Cabrillo Computer Center. For those interested in the history of one branch of the home computer hobby, the back issues of Micro-8 User Group Newsletter record much activity of the early pioneers of the hobby. Staccato Notes Derek McColl reports in phone conversation that he attended the first meeting of an as yet unnamed Los Angeles area computer club. You can reach Derek at 1715 Havemeyer, Redondo Beach CA 90278 to find out about that club. Was your club or newsletter omitted? No claim is made that this listing is complete. Organizers of clubs are invited to send details of their plans for publication in BYTE. New England Computer Kibitzers? (NECK) I'll act as an initial focal point for a Boston area computer club. Write BYTE Editorial Offices, Box 378, Belmont MA 02178, or call me at 1-6 17-729-6914 evenings/ weekends. . . . CARL 42 COMPUTER- DATA INPUT KEYBOARDS B5283 B5199 ASCII encoded keyboard. In its own enclosure. Originaly used in SANDERS ASSOCIATES 720 Terminal System. In like new condition. Usefull for any project requiring an ASCii encoded keyboard. 50 Alpha Numeric keys plus 11 computer symbols STOCK NO.B52S3 keyboard $35.00 2/65.00 MICRO— SWITCH (Honeywell) S bit binary coded board. 56 keys, alpha - meric and computer symbols Built in TTL decoder. New in factory cartons. A beautiful keyboard. STOCK NO.B5199 Microswitch keyboard. $45.00 2/80.00 KEYTOPS & SWITCHES TO MAKE YOUR OWN KEYBOARD We have a large selection of KEYTOPS and SWITCHES, made by RAYTHEON CO. The keytops come in black, grey and white, with contrasting legends. The switches mate with the tops, and are magnetic reed switches. The following combinations are available: 54 key typewriter set, keys only, black K9276 2.95 54 key typewriter set, keys only, grey K9278 2.95 54 key TTY set, no symbols white K9279 2.95 54 key TTY set, with symbols white K9282 2.95 54 key set, keys & switches black K9288 54 key set, keys & switches grey K9290 54 TTY set, no symbols keys & Sw. White K9291 54 TTY set, with symbols, keys & Sw. whiteK9291 11 Key Numeric set. Keys only Black 11 Key Numeric set. Keys only Grey 11 Key Numeric set. Keys only White 12 Key numeric set, Keys only white 11 Key Num. set, keys & switches Black 11 Key Num. set, keys & switchesGrey 1 1 Key Num. set, keys & switchesWhite 12 Key Num. set, keys & switcheswhite K9283 K9284 K9295 K9286 30.00 30.00 30.00 30.00 1.50 1.50 1.50 1.50 Blank key 1 XA keys wide Blank key 2 keys wide K9297A with switch K9297B with switch white white white white K9293 7.00 K9294 7.00 K9295 7.00 K9296 7.50 K9297A 3/.25 K9297B 3/.25 K9298A 3/2.00 K9298B 3/2.00 MINIATURE 7 SEGMENT READOUT Miniature 7 segment LED readout (EXITON XMN 101 Displays all numbers and 9 letters. O.D. 5/1 6"x 1/4" Display is .12 ". SPECIAL FOR THIS ISSUE ONLY STOCK NO.B5173 with data sheet .50 ea. 5/2.00 TRANSFORMERS Computer projects need power supplies. Finding the right power transformer can be a problem. We have one of the largest and most diversified stocks of power transformers in the country. Below we list some representative items in our inventory. Our catalog, free on request lists many more. 36 V. 1 .0 A. ct, & 6.3 V <°> 200 ma. 3 lbs. B931 3 70 V. 1.5 A. ct, & 6.3 V 500 ma. 6 lb. B9314 90 V. @> 2.0 A. ct, & 6.3 V @ 1.5 A. 8Vi lb. B9315 50 V.-@ 1.5 A. ct, & 6.3V @500 ma. 6 lb. B9316 26 V. 1 .0 A. ct. &6.3 V. @ 500 ma. 3 lb. B9318 38 V. @ 1.5 A. ct. & 6.0 V.@ 500 ma. 2 lb. B9319 350 V. @ 35 ma. ct. & 6.3 V. <§> 2.7 A 2 lb. B9321 70 V. @ 1.5 A. ct. Si 6.3 V @ 1.5 A. 7Lb. B9322 35 V. <9> 6.0 Ct. & 10 V. @ 10.0 A. 6.0 Lb. B9906 64 or 32 V. @> 8.0 A. ct. & 18 V. @ 8.0 A ct. 10 lb. B9905 1 1.95 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. VOLTAGE REGULATOR BOARDS B5169 is a board containing 3 15 volt high current regulators with 0.1% regulation. 2 of the regulators are rated @ 3 Amps., and the other @ 6.0 amps. The current in each regulator may be doubled with the regulation going to 0.5%.AM 3 regulators are short circuit proof, and 2 have electronic crowbar protect- ion. Brand new, in factory boxes. STOCK NO. B5 169 $11.95 ea. 2/21.00 B9013 is a triple regulator with +12 volt regulation @ 200 ma. and the third regulator is a tracking regulator, providing regulation from 0 to 5 volta @ .5 A. STOCK NO.B9013 $5.95 ea. 2/10.00 Roth regulators above come withcircuit diagrams. OPERATIONAL AMPLIFIERS (OP — AMPSl TYPE DESCRIPTION CASE STOCK PRICE 709 4709 741 747 741 747CT 1458 LM101A Hi Performance Dual 709 Hi Performance Dual 741 Hi Performance Dual 741 Dual 741 Gen, Purpose TO-5 DIP DIP DIP Mini TO-5 Mini TO-5 B4301 B5301 B4316 B4317 DIP B4345 B3111 DIP B3112 B4503 .50 1.00 .65 1.25 .65 1.25 1.25 .50 5/2.00 6/5.00 5/3.00 5/5.00 5/3.00 5/5.00 5/5.00 5/2.00 SELF SCAN PANEL DISPLAY jjT} Burroughs MODEL BURROUGHS SELF SCAN display, des- igned for numeric app- lication, requiring up to SSD 1000-0010 . I6 characters of numeric information. Display is made up of neon dot matrix. Each character is defined by a positive logic 4 bit code. Display operates in a scanning mode, scanning from left to right, one column at a time. Electronics is in inter ior of bezel, and consists of LSI chip and integrated circuits. Current distributor price is $135.00 . LIMITED QUANTITY STOCK NO. 5180 with data $49.50 2/90.00 Please include sufficient postage. Excess refunded MINIMUM ORDER $5.00 DELTA ELECTRONICS CO. BOX 1, LYNN, MASSACHUSETTS 01903 Phone (617) 388-4705 Send for the latest edition of our catalog. Loaded with electronic and computer bargains. 43 WRYTE for BYTE by Chris Ryland 25 FollenSt. Cambridge MA 02138 As an editor of BYTE, I gave a tour of the author-pitfall jungle to several interested people at a recent (if imaginary) small systems conference. Below is what transpired. "OK, gentlemen, step right this way; we're heading into the jungle now. Be careful of the pitfall directly to your left. Any questions about the terrain so far?" "Well, I have an idea for an article, but it's not very original . . . ," says one of the tourists, dropping into the pitfall. "Oops! 1 warned him about that! Anyway, the rest of you can benefit from his mistake: that objection just doesn't stand. A new idea might seeem old hat to you, simply because you thought of it. Or, a variation on an old idea can certainly be material for print — what scientist dares claim a bsolu te originality for his research? Furthermore, even small system lore, presented in a tutorial style or approached from a new angle, can be both original and valuable. Look out to your right! More questions?" ''But I can't write anyway ..." cries another pitfall victim. "I warned him! That's one of the deepest pitfalls around here. Well, the rest of you probably write much better than you think. It's necessary to have some humility here — your writing may sound bad to you, but no one expects you to win the Pulitzer Prize. Even if you don't write like a pro, think of BYTE as a device for getting good, if rough, ideas into print: submit an article when you've done your 'technical' best, and if we think it's worth it, we'll do our 'editorial' best to get it into publishable shape (leaving your style intact). This is worth emphasizing — most magazines accept only polished articles by professional writers, or else they force their writers into a stylistic straightjacket. But we feel that BYTE can do the most good, and be enjoyable to read, if we publish good ideas in as close to their original form as professionalism permits. "Well, we've passed through the most obvious dangers, so please be more careful where you walk. Another question?" "OK, I agree," says an ink-stained tourist, "my idea is good and I can write fairly well. But what good will it do . . ." Another one vanishes into an obvious pitfall. "I thought you'd all see that one! Your published idea can be invaluable to anyone working on a similar problem. It's unlikely that your work is so unique that no one else could benefit from it! There are also many personal advantages. There's the satisfaction of serving others in your field, and, not least importantly, the money from published articles. Getting your name in print can both give a boost to your professional prestige, and can sharpen your writing ability, a useful tool in any job. Finally, writing about your idea forces you to understand it more completely; also, any feedback from us or from other readers of BYTE can certainly be helpful. "This brings us nearly to the edge of the jungle. Since it's a lot safer here, you can look back and see where we've been." "I see! But what can I write about . . .?" "Darn, I thought I had spotted all the pitfalls! But you can learn from his mistake, and submit feature (medium to long) articles, short articles (tips and techniques, for example), or column contributions; at this point, you might even get a regular column started! As far as 'what to write about?', I'll quote Carl Helmers' ample answer to this question: 'I won't pretend to have a formula answer for that one . . . " 'Some suggestions of general areas come to mind . . . " 'Project articles on new software, hardware or applications designs for systems. Projects which you 44 have completed or have in progress can be written up for the use of other subscribers. Don't let that "new" intimidate you, either — if it's new to you, and you're enthusiastic about it, then the project is worth setting down on paper for a try at publication. " 'Special interests. Do your ideas tend to run along a particular train of thought? Are you a FORTRAN freak, a BASIC fundamentalist, an 8008 hacker, a PDP-8 fanatic, a space war addict, a lover of LIFE, or what have you? Submit an article or "n" to BYTE on your special interest, and it could become an important part of the lore of home brew computing — "bytology" for short. " 'Surplus equipment. In Boston, there is a whole fraternity of junk men who often don't know a thing about the stuff they sell, but who sell it at pennies on the dollar. Often such stuff is usable in a computer system, with appropriate knowledge of how to use it. I once picked up a $3000 printer for $10 because it didn't look like a printer, and was left in a heap of junk to rot. Write up an article on how to convert particular items of surplus equipment to small systems use, and you will earn the heartfelt thanks of all the other byters who can use your idea. Often the cheapest course to a computer is an appropriately surplus "mainframe" saved from a scrap dealer or found at an auction. But, beware — misadventures can also happen, if you're not careful. Don't be ashamed of your mistakes, though — capitalize — on them by writing up your experience for BYTE. " 'Games Byters Play. Fun-type applications make excellent articles. [See the beginning of a series of articles on the Game of LIFE, written by Carl, in this issue of BYTE. I There are other fun programs to be written using a graphics display or other peripherals with an interactive potential. If you want some ideas, write us, and we'll suggest one or two or two hundred — or, if you have your own ideas, but are puzzled as to how to put them into practice, maybe we can help and the net result would be an article in BYTE. " 'Practical applications. Do you also use your byter's system in your business? Many readers are businessmen — doctors, lawyers, architects, engineers, merchants — who justify their expenses by the practical, as well as the fun, applications of their systems. Write an article on business applications — billing, inventory, mailing lists, profit statements, etc. The businessmen in the audience will surely appreciate it. By saving their time and making their businesses more efficient, your article will help improve the commerce that makes all civilized amenities possible. " 'Education. Do you have a flair for writing elementary tutorial stuff, with the knowledge to back it up? Write an article or series of articles on the basics. As has been pointed out to me in many letters, the tutorial aspects of design and programming are not to be skimped on — especially if you want to teach your friends and associates so you can talk to them again! It always gives me a great satisfaction to see someone grasp a principle, discover a connection, and experience the delight of knowledge attained. With a published article, although you can't observe this at first hand, the feedback in correspondence should be evidence enough. " 'Reviews. Have you built a computer kit? Write an article reviewing your experience with the particular kit. Give the manufacturer an objective treatment — don't blame him for your mistakes — but also be fair to readers by pointing out relative advantages and disadvantages of the product . . . Did you find an interesting book on computer related objects? Review it for your compatriots in the field. Such books include technical works as well as fiction and science fiction along computer lines. (The microcomputer itself is so "science fictiony" that many of my own friends don't really believe in 'em!) " 'Human interest and creative writing. Byters appreciate the human aspects of computing. After all, computers are designed, built The chances are that you know a lot about some aspect of com- puters — this is your opportunity to write and help other readers. The Pitfall: Waiting for others to write. Fame (moderate) and Fortune (modest) await your contribution to BYTE. 45 Send your articles to: BYTE Box 378 Belmont MA 02178 Make sure your manuscript is: -neatly typed -double-spaced -one side of paper --and includes all drawings, photos, tables and other non-text materials needed. and used by human beings. There is room for creative writing, humorous anecdotes, and speculations on the evolution of technology, commentary on computing history, etc. Who will be the first to submit an article on the history of Herman Hollerith? " 'This is by no means an exhaustive list of all the possible topics for BYTE articles. If you don't see your own idea in this list of categories, we can always make a category to fit it into . . . provided you take the step of getting it down on paper .... In addition to the standard articles, we will print (without charge, of course) information about club meetings, club organizers, and individuals willing to help others with their home brew systems, in order to foster the growth of the small scale systems idea.' "Need I say more? And so ends our tour. Now that we're back in civilization, anyone still interested can follow me to the idea bar, where we'll drink a few hints about wryting for BYTE." Some How To's of Writing a Feature Article Here is not the place to give an "exposition on the com pleat article and its fashioning." But, if you've decided to write a feature article, and if the thought of writing seems to go against every bone in your body, then the following might help. You should feel completely free to approach this task in any way you want; these ideas are only suggestions. But, they have worked for many people. Here we go . . . Outline It Get your ideas down on paper. Write a few (2 to 5) sentences stating the central idea of your article; this will be your abstract. It should guide the outline — if you ever feel lost, return to the abstract and find where to pick up. Next, the outline. Write down the main section headings, choosing them from the list below, or adding any that are appropriate. Introduction: Flesh out your idea's skeleton, the abstract, relating the necessary motivation, background, assumptions, and source of ideas for the article. For example, you might tell how the idea came about, what previous BYTE articles your work is based on, and what kind of hardware and software systems it requires for operation. Overall Design: Discuss and outline the general shape of the sy stem being presented. This should be a "principles of operation" discussion at a relatively high level (but be practical about it), and will usually involve an "overview" of the system components, their actions and interactions. Visual aids such as block diagrams and flow charts are necessities here. Details of Construction: Whether it be schematics, printed circuit layouts, or program listings, the details are necessary. If they are just too bulky, then this section should cover the system in more detail than the previous section, to whatever level is most helpful. Construction and Debugging Techniques: The method of construction should be given here, if it is not obvious (and don't assume it is!). Any special techniques or touchy areas should be mentioned, as well as methods of system checkout (give, for example, diagnostic programs or hardware testing instructions). Operation Instructions: If not given in the overall design section, complete operating instructions should be listed here. Present the system as it appears to a user. Good examples of its use are the most helpful documentation. Conclusion: Write the inevitable ending section (as short as possible), with mention of possible further developments and applications. Using the guidelines for the outline headings above, jot down the main ideas under each heading. Take the result, shuffle the headings and ideas until you're satisfied with its structure (note cards with a single item per card are helpful here), and call this your outline. Make a permanent typewritten version of this outline, since it will be your guide in what follows. Write It To write an article is to enter a jungle of a different nature than the one we explored earlier. Without actually entering this writing pitfall jungle, I can forewarn you of the most dangerous pitfalls. "Scribophobia: " This "fear of writing" usually strikes at the outset of the journey. The solution: working directly from the outline, get a first draft written, without stopping to worry about clumsy language or the niceties of grammar. Write without inhibitions, no matter how bad it sounds. The important thing is to get the rough draft written; once it's done, the rest is easy by comparison. Prepare diagrams as you go — they should be written and revised as an integral part of the text, not as a concession to formula. Straying off the Path: The road to the end of the writing pitfall jungle is rather narrow, but you have a good map: your outline. Straying from it is asking for literary disaster. The written permanence of the outline (did you take my word for it earlier?) should discourage you from changing it too glibly. 46 Stuffiness: Avoid this clanger at all costs; don't confuse technical excellence with highbrow phrases and grammatical ''stuffed shirt"-isms. Although this is a matter of style, and would normally be considered in later drafts, the first goes much easier if you write as though talking to someone about your idea. Don't avoid humorous touches if that's your style — they help to keep up reader interest. For example, cartoons that amuse and instruct are a welcome aid. Be intolerant with circumlocutions and useless phraseology. It is clear that phrases like "it is very clear that ..." are redundant and only drag down the article with dead weight. Jargon: Be careful of the "in-crowd" approach to writing, which uses jargon and cute phrases unknown to the outsider. On the other hand, don't feel obliged to define common terms or standard abbreviations (but see the later section on article glossaries). Revise It Many "How to Write" authors have recommended the fermentation method of revision. Put the freshly-typed (or written) rough draft away, and only come back to it after a few days. This temporal distance gives some objectivity during the next step of revision. This step will usually involve several "passes" over the text, by yourself and hopefully others. Revision involves looking for spelling, technical and grammatical accuracy, logical sequence of ideas, consistency of notation, and completeness of presentation. For example, during revision you may find several out-of-place colloquialisms, a few spelling errors, or an omitted section on a detail of construction. Try and put yourself in the position of a reader who wants to use your idea: can he or she do so with what you've written? Are there any important but unstated assumptions? Any confusing diagrams or descriptions? Aim to be absolutely clear in the technical details of the article. Shorter Articles There's really no standard approach to writing shorter articles — the possible range of such articles is so great that it would be difficult to even hint at their "construction." Carl's section on article topics should be a source of some ideas, but my only further advice is this: if you have an idea that's not of feature-article length, then write it in any format you wish, send it in, and we'll try and fit it in somewhere. Don't Gloss over the Glossary Since BYTE is aimed at everyone in the small systems world, from junior high school experimenters to industry professionals, a good feature of any article is a glossary. Although it certainly isn't a strict necessity, a glossary should contain the definitions of any words, phrases, notions and abbreviations that might be unfamiliar to a good part of your intended audience. LIFE Line by Carl Helmers, in this issue, is a good example; since his article is (besides other things) a tutorial on system design, and is intended for a wiue range of readers, Carl has included definitions of software and hardware terms that might be confusing or "jargon-ish" to the reader. Carl's glossary illustrates that definitions needn't be boring or dry — any sort of information about the terms being defined can be useful, i nc I u ding humorous definitions, anecdotes about derivations or other uses of a term, stories of your previous confusion about some phrase (and how you cleared it up), and so on. If your article contains any kind of "side-light" information about possibly confusing words or concepts, then you should include these "tidbytes" as part of your glossary. Send It In! Some practicalities about submission of any kind of article: the text should be typewritten (double-spaced, with ample margins) —if you don't type, it's not expensive to have it done; the point of insertion for each diagram should be clearly marked; the illustrations should be clear and oversized, if they are reasonably simple — our own technical staff can do the final drawings; include any special editorial or publishing instructions in a conspicuous place; if there's a glossary, it should be distinguished from the main body of text in some way. For feature articles, include the abstract and outline in the submission — these items are costless since they are a "spin-off" from a properly-written article. Unusually bulky detailed layouts and listings, although not included in the article, should be submitted, since they can be made available separately. Probably the worst pitfall is putting off getting started on your article. Procrastination is the thief of fame and fortune, even in the modest amounts offered by BYTE. 47 THE CURVE TRACER THAT WON'T COLLECT DUST. The Hickok Model 440 semiconductor curve tracer is all purpose-and convenient to use. It's the ideal instrument for testing, evaluating, classifying and matching all types of transistors, FET's and diodes. You'll get stable, full range dynamic displays that you can accurately scale right from the screen. ■ Pull-out card for easy, fast set-up and operation. ■ Set-up marks for rapid set-up of 80% of tests. ■ Unique INSTA-BETA display takes the guesswork out of transistor and FET parameter measurement. ■ In-or-out of circuit testing. ■ A full range professional tracer at a price you can afford- $1fiC00 AT YOUR DISTRIBUTOR ^JLUil HICKOK the value innovator INSTRUMENTATION & CONTROLS DIVISION THE HICKOK ELECTRICAL INSTRUMENT CO 10514 Oupont Avenue • Cleveland, Ohio 44108 (216) 541-8060 • TWX: 810-421-8286 TROUBLED BY TRIGGERED SCOPES? The Hickok Model 512 Dual Trace Oscilloscope eliminates the set-up and precision problems you've had to accept using other triggered scopes. It's easy to set up ■ Simplified color-coded front panel controls. ■ Beam finder quickly locates off-scale traces. ■ Foolproof triggering to 15 MHz. It gives you superior performance ■ 10 MHz response flat within 3dB. Excellent pulse response. ■ 3% accuracy on vertical and hori- zontal ranger. Hickok industrial lab quality and con- struction Glass epoxy PC boards used through- out. Regulated power supply. AT YOUR DISTRIBUTOR %}§ O complete with probes and accessories HICKOK the value innovator INSTRUMENTATION & CONTROLS DIVISION THE HICKOK ELECTRICAL INSTRUMENT CO. 10514 Dupont Avenue • Cleveland, Ohio 44108 C216) 541-8060 • TWX: 810-421-8286 48 A PRECISION WAVEFORM GENERATOR AT A PRICE YOU CAN AFFORD. The Hickok Model 270 Function Generator gives you a lot more waveform generating capability than you'd expect for its price. ■ Puts stable, calibrated, high quality sine, square and triangle waveforms from 1 Hz to 500 kHz at your fingertips. ■ With external connections you can produce logic pulses, sweeps and ramps, AM and FM outputs, phase and frequency shift keying signals, tone bursts and more. ■ Its an audio generator and much more. AT YOUR DISTRIBUTOR $166 oo HICKOK the value innovator INSTRUMENTATION & CONTROLS DIVISION THE HICKOK ELECTRICAL INSTRUMENT CO 10514 Dupont Avenue • Cleveland. Ohio 44108 (216) 541-80S0 • TWX: 810-421-8286 DIGITAL PERFORMANCE YOU CAN RELY ON The Hickok Model 334 DMM is a rugged, non-temperamental, hardworking tool that's easy to use and easy on your eyes. Hickok has established a unique reputation in digital electronics during the past 10 years. The Model 334 is another example of our engineering expertise — an economical lab quality instrument with exceptional durability and accuracy. ■ Easy reading, green fluorescent display ■ 31/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 49 utey o ASSEMBLER To date I have not seen any detail descriptions of home brew self assembler systems for microcomputers such as the 8008, 8080, 6800 or PACE. Maybe Dan Fylstra's description of assemblers will start a few readers off in that direction. Dan describes in general terms what assemblers do, scanning techniques, symbol tables, hashing methods and some of the more advanced "bells and whistles" you might employ. Use Dan's article as a source of ideas on the organization and features for your own assembler software designs. . . . CARL by Dan Fylstra 14B 550 Memorial Drive Cambridge MA 02139 50 If you have done any work with microcomputers, you have doubtless seen programs written in assembly language. You probably know that assembly language programs must be translated into machine language before they can be executed on the computer. The translation is usually performed by another program, called an "assembler." Because assembly language lets you write mnemonic (easily remembered) names for instructions and data, rather than binary codes, programs may be written more quickly and with fewer errors. The assembler does the tedious job of putting together, or assembling, all of the right bit patterns to make up the program in machine language. Most of the assemblers presently available for microcomputers are cross-assemblers: They run on big computers or time-sharing systems, and produce output which must be loaded in some way into the microcomputer system. Commercial time-sharing services are expensive, and the whole point of having a home computer is to be able to perform computing chores, such as program assembly, on your own system at ultra-low cost. Since a resident assembler — one which runs on your own micro system — may be unavailable or very costly, you might be interested in writing your own assembler. By doing it yourself you can learn a lot about programming and software design as well as the specs of your own microcomputer, save yourself the cost of program development, and produce a customized language suited to your own needs or fancies. And who knows? — you might even find that other hobbyists or microcomputer users might be willing to pay you for a copy of the assembler program that you had so much fun writing. Now, it's only fair to warn you that writing an assembler is a big undertaking — you'll need a fair amount of time and perhaps some extra RAM chips to accommodate the finished product. But such obstacles have never stopped anyone with your boundless enthusiasm. So the only question is, how do you go about writing an assembler? That's the sort of question that BYTE magazine is designed to answer, and that's what this article is all about. What Does an Assembler Do? To answer this question, we have to take a look at some typical machine instructions and how they might be written in assembly language. A machine instruction usually consists of a binary code for some operation, such as addition, and one or more binary numbers denoting the "operands" of the operation. The binary number for an operand may have either of two interpretations: It may denote the binary value of, say, a number, or the ASCII code of a character, or it may denote the binary address of a memory location which holds the actual value of the operand. For example, on the Motorola 6800 the bit pattern 1000 1011 0011 0000 opcode operand means "add the number 48 (00110000 in binary) to the A accumulator." This might be represented in assembly language as ADDA #48 — note how much more convenient it is to write things this way! In contrast, the bit pattern: 1001 1011 0011 0000 means "add the 8-bit number found in memory location 48 to the A accumulator." This might be written in assembly language as ADDA BETA where it so happened that, just after the last instruction of a program which was 48 bytes long, the programmer had also written BETA RMB 1 meaning "reserve 1 memory byte at this point, and call it BETA." These examples illustrate the basic functions of an assembler. In the first case, the instruction's operand was the actual number to be added. (This is often called an "immediate operand.") The The assembler does the tedious job of putting together, or assembling, all of the right bit patterns to make up the program in machine language. start at location 0. He indicated this by means of the mnemonic RMB, for "reserve memory byte." Since this assembly language statement doesn't actually represent an instruction, but instead tells the assembler what to do, it is often called a "pseudo-op." The assembler read the entire program, counting up the number of bytes that the subroutine would take, and determined that the address of the take, and furthermore it doesn't know (yet) that the memory location BETA is supposed to be reserved just after the subroutine, since it hasn't seen the RMB pseudo-op." Forward Reference Fig. 1 illustrates a problem common to all assemblers and compilers, often called the "forward reference problem." There is no neat way out of it. In this case, the Fig. 1. The Forward Reference Problem opcode operand assembler read the characters "ADDA" and substituted the proper binary opcode 1 0001 01 1 , and converted the decimal number 48 to its binary equivalent, 00110000. In the second case, the instruction's operand was the address of a memory location. The programmer called this memory location BETA and decided to put it after the instructions of a subroutine, which was to memory location called BETA was therefore 48, or 00110000 in binary. It assembled this address into the instruction. All well and good. But, being an alert reader, you ask, "Wait a minute! What if the ADDA instruction is in the middle of the subroutine? When the assembler reads the ADDA instruction, it doesn't know how many bytes the rest of the subroutine will programmer could have reserved the memory location BETA before the subroutine rather than after it. But suppose that the subroutine had included a "jump" or "go to" statement: IMP NEXT NEXT ADDA #7 51 A two-pass assembler solves the forward reference problem by reading the program twice. It is rather impractical to try to write every program without any forward jumps! There are basically two ways to cope with this problem. The first is to read the program once, but to keep sections of the program in memory until all forward references are resolved. Since RAM costs us money in a microcomputer system, we will reject this approach. The second alternative is to read the program twice; an assembler which adopts this strategy is called a two-pass assembler. This approach is slow, but it's also cheap, and that's what we want! The first time that such an assembler reads the program (i.e., on the first pass), it simply I oo ks at the instruction mnemonics, counts up the number of locations that each instruction will take, and builds a symbol table in memory which lists all of the programmer defined names for memory locations and their corresponding addresses. (We need RAM for this, but not so much as would be required for the first approach.) This process is (somewhat fancifully) illustrated in Fig. 2. Notice that the assembler picks up only the statement labels, ignoring (for the purposes of Pass 1) appearances of the same symbols in the operand fields of instructions. On the second pass, binary opcodes are substituted for the instruction mnemonics, constants are converted to their binary representation, and programmer defined names are replaced by their actual memory addresses, found in the symbol table. This is illustrated in Fig. 3. Any name appearing in the operand field of an instruction which is not already in the symbol table on Pass 2 is undefined in the program, and will cause an error message. One other note: looking up the binary opcode for an instruction mnemonic is essentially the same process as looking up the address for a programmer defined name, so the symbol table can be used for both purposes. It should be pretty clear by now that an assembler spends most of its time 1) scanning characters, looking for names, numbers and punctuation symbols, and 2) building and searching the symbol table. If we can find simple and efficient ways of performing these operations, and avoid getting them hopelessly intertwined with the rest of the program logic, we should come out with a fairly decent assembler. So let's now take a look at programming techniques for scanning and searching symbol tables. Scanning Techniques Our assembler's first task is to scan the characters making up an assembly language program, and find things such as instruction mnemonics, constants and programmer defined names, while noticing but generally ignoring such things as blanks, punctuation symbols and comments. The amateur programmer's first impulse usually is to plunge in by writing a series of tests and branches to handle various Fig. 2. PASS 1 picks up the labels. sequences of characters which may appear on a line. This approach frequently leads to the type of scanner known as a "kluge." The computer scientist, on the other hand, has nothing but contempt for this "il l-structu red" approach, and prefers to work with regular expressions or right-linear grammars and finite automata. We will take a middle course, outlining some programming techniques that will help make a hand implemented scanner simpler, smaller and faster. The first technique, if you are designing your own assembly language, is to make it simple to scan! An assembly language statement usually consists of an optional statement label (which then represents the address of the location into which the instruction is assembled), an instruction mnemonic, an operand field, and room for comments. A typical example would be: Some assemblers require each element of an assembly language statement to begin in a fixed column or character position of a line, so that the problem of locating the elements for scanning is greatly simplified. However, this is a little rough on the assembly language user, and you will probably save yourself time in the long run by implementing a slightly more complex scanner. To permit a more flexible format, one may take either the "IBM approach," in which a statement label must begin in column 1, an instruction mnemonic must be preceded by at least one blank, and comments are separated from operands by a blank; or the "DEC approach,'' in which statement labels are followed by a colon (or other punctuation symbol), and comments are preceded by a semicolon. The "DEC approach" is somewhat more EVAL LDAA BETA statement instruction operand label mnemonic field BEGIN FUNCTION EVALUATION comments 52 Fig. 3. PASS 2 generates code referencing labels. convenient and less error-prone for the user, but is slightly harder to analyze. For instance, one must be willing to scan a string of alphameric characters followed by blanks, waiting for a colon or an alphabetic character in order to decide whether the string was a statement label or an in- struction mnemonic. Sometimes a decision as to what to do next must be made on the basis of the type of the next (non-blank) character. If several alternatives are possible, one would like to use a "jump table," or an array of branch addresses indexed by the character code, instead of a sequence of character comparisons. But the ASCII character set allows for 128 different character codes, of which only about 45 are used in assembly language statements. Hence, a common technique for complex scanning problems is to first translate from ASCII to a more convenient set of character codes, using a 128 byte character translation table. The new character codes can be chosen so as to facilitate the use of jump tables at other points. The elements of an assembly language statement (names, mnemonics and constants) generally consist of variable length character strings, separated by a variable number of blanks. Present-day computers, however, are more adept at handling fixed size objects such as bytes or words. So the most important technique you can use to keep your scanner coherent is to write a "next token" routine, which scans off an alphameric string, a constant (e.g., a string of digits) or a punctuation symbol each time it is called. This routine should return a code for the type of item or token just scanned (say, 1 for alphameric strings, 2 for digit strings, 3 for a colon, 4 for a comma, and so on), and a fixed-size descriptor giving the address of the first character and the number of characters in the string. Fig. 4 illustrates descriptors for the statement label, instruction mnemonic, and operand of a typical assembly language statement. Descriptors for character strings are handy for a number of pu rposes. Character string move and comparison routines can be written which take two descriptors as arguments. Output I ines can be constructed from a sequence of descriptors, and error messages can also be handled in this way. By storing the fixed-size descriptors in the symbol table and the character strings themselves in another area, you can avoid the arbitrary restriction on the length of names to six or eight characters found in many assemblers. Even more important, the Fig. 4. Descriptors Identify Text Tokens in a Line of Characters. f— length ■ — location II I 4 302 1 4 308 1 1 r " <» m (0 r» 00 1 o o o o o o {*> 1 1 o ("5 m M M m CO use of a "next token" routine separates the details of scanning individual characters from the problem of deciding how to process each element of a statement. The symbol table routines described below similarly separate the details of identifying particular names and mnemonics from the other problems of processing. These are examples of the use of modularity and hierarchical structure to organize the solution of a complex problem. Enough in the way of generalizations and philosophy; let's get on with an example to see how all this works. Fig. 5 shows the flow of information from a character code translation routine, to a next token routine, to a routine which determines the type of statement from the instruction mnemonic using a symbol table lookup subroutine. Assembly language for the Intel 8080 has been used in this example. Lower case letters are translated to upper case, and the codes for digits (0-9) and letters (A=10, B= 1 1 , . . ., 1 315 1 ■a- 53 Fig. 5. Typical (8080) Character Translate and Next Token Routines STATEMENT TYPE DETERMINATION ROUTINE CHARACTER CODE TRANSLATION ROUTINE LOOP: BRTAB: LETTER: SCAN: 'NEXT TOKEN" ROUTINE SYMBOL TABLE LOOKUP ROUTINE CHARACTER TRANSLATION ROUTINE MVI LXI MVI LDAX MOV MOV STAX I NX DCR JNZ H, TABLE D, LINE C,72 D L, A, D D C LOOP A ,M H -» page holding table DE ■» begin of line C = length of line get next char of line L = character code index A = table entry at index replace char in line advance to next char reduce no. chars remaining loop for all 72 chars 'NEXT TOKEN" ROUTINE LXI LDAX RLC MOV MVI DAD PCHL JMP JMP JMP JMP XCHG SHLD MVI MVI INX INR CMP JP LXI MOV BRTAB H -• branch table base get translated char from line times 2 for branch table index set up 16-bit index in registers B and C add to branch table base jump to appropriate routine LETTER DIGIT COLON COMMA DESCR + 1 A, 36 C,0 H C M SCAN H, DESCR M, C HL -> begin of alpha string put start addr in descriptor max translated code for alphameric initialize count of chars in string advance to next character increase character count code < max for Alphanumeric continue scan if so HL * length part of descriptor put in no. chars in string Z=35) are chosen so that alphameric and digit strings can be scanned off using a single comparison for each character. Note the use of a jump table "BRTAB" to select the appropriate handling routine for the next character in the next token routine. Descriptors are returned to the statement type determination routine, and are passed on to the symbol table lookup routine which uses them in character comparisons. The problem of distinguishing statement labels followed by a colon is handled easily at this level: The next token is obtained, and its descriptor is saved; the next token is obtained, and its code is tested; if a colon has been found, the saved descriptor is passed to the symbol table lookup routine, and two more tokens are obtained to balance things out before the instruction mnemonic is processed. Symbol Tables The greatest convenience that an assembler provides for the programmer is the ability to give names to memory locations and to refer to those names from other points in the program. The assembler determines the proper address of the memory location, and fills in the address wherever the name is referenced. The assembler accomplishes this by building a symbol table on its first pass. Each entry of the symbol table contains a programmer defined name in character string form, and the binary address corresponding to it. In addition, the symbol table may contain other character string names, such as the instruction mnemonics or assembler pseudo-ops. The entry for an instruction mnemonic would contain the corresponding binary opcode, and the entry for a pseudo-op might contain the address of a processing routine in the 54 Fig. 6. An Array Symbol Table. 4 5 3 A B C T H E T A N E X T assembler itself. For a computer with several different instruction formats, the entry for an instruction mnemonic might also contain a type code indicating the proper format for this instruction, the number of operands expected, and the interpretation of the operands as addresses or values. The simplest way of organizing the symbol table would be as an array of descriptors and address words, as illustrated in Fig. 6. Entries are added sequentially to the array during Pass 1. and a sequential search of the whole array is used to find the addresses of programmer defined names during Pass 2. (Each descriptor from the table is passed in turn to a character comparison routine, along with the descriptor for an operand. The comparison fails immediately if the string lengths in the descriptors were unequal.) This type of organization has the great virtue of simplicity, and is probably adequate for a first version of your own assembler. As the programs to be assembled get longer, however, the asembler will spend an increasing fraction of its time searching the symbol table. A faster way of searching the table is needed. Think about how y'ou would go about such a search, if you were the assembler. What do you do when you open a dictionary or a telephone book? Knowing the order of the alphabet and the thickness of the book, you look at the first character or two of the word, you make a guess at the approximate page, open the book to that page, and begin searching from that point. Let's have the assembler do the same sort of thing. We will divide up the table into twenty-six sections, one for names beginning with each letter of the alphabet. We know the starting address of each section of the table (we can make a small array of the twenty -six starting addresses), so to look up a name, we look at its first character, go to the appropriate section and search just that section rather than the whole table. This approach is depicted in Fig. 7. This is a good first try, but there are some drawbacks. In a program called "assembler," say, you might have a lot of names beginning with A, while in a program called "editor," you might have many names starting with E. On the other hand, your friend Zaborowski might start all of his names with Z. Should all of the sections be of the same size? If not, how do you know (at the beginning of an assembly) which sections to make larger? If a section becomes filled, we can simply add the extra names to the next section of the table; now, Fig. 7. An Alphabetically Indexed Symbol Table 'ALPHA' 'ADDA' 'BETA' 'CAT 'CRADLE' 'CALL' 'ZABOROWSKI' 55 What happens if we use a random assortment of the names, placing them haphazardly into the various sections of the table? however, if a name to be looked up on Pass 2 is not found in its original section, most of the following section will have to be searched before the name is found. This phenomenon is called "clustering." Your friend Zaborowski is especially likely to run into this problem, and even if you make the Z section large enough, searching the symbol table will take just as long using the new approach as it did with the old one. Can we overcome these drawbacks of the new method? Here's where a little lateral thinking will help. We are making use of our knowledge of the ordering of the alphabet. Try the opposite approach: What happens if we use a random assortment of the names, placing them haphazardly into the various sections of the table? At first this sounds absurd, but on closer examination we realize that it solves the problem! The problem arose because people are fairly likely to choose a set of names which are related in the alphabetic ordering; by using a randomly chosen ordering, we can minimize the likelihood that a large number of symbols will be placed in a single section of the table. This technique, which is called "hashing" or ' 'hash addressing" for obvious reasons, is used in most modern assemblers and compilers. So, instead of using the first character of a name to select the proper section of the table, we will use a random assortment of bits, or an arbitrary function of the bit pattern of the entire name, to select a starting point in the table. A function of this sort is called a "hash function". So long as the function's possible values are evenly distributed over the range of addresses for table entries, the problem of the "clustering" or grouping of names will be minimized. An example of a hash function which usually gives good results is to add together all of the bytes of a character string, ignoring overflow, or else to "exclusive or" the bytes together. Similarly, in order to minimize the clustering of names which hash to the same starting address, we can "re-hash" the names so as to randomly distribute them around the table. Such a method is called a "random rehash." The following method is easy to implement, efficient, and works well when the table size is a power of 2, say 2**fc (see Morris): Suppose a name initially hashes to table entry h, which is already occupied by Fig. 8. Hashing Symbol Table Descriptors. DESCRIPTORS another name. Initialize a variable R to 1 . To rehash the name: 1. Set R = R*5 (shift left two bits, and add to the original number). 2. Mask out all but the low-order k+2 bits of R, and save this as the new R. 3. Shift R right 2 bits and add it to h to get the next table entry h. If this entry is occupied, rehash the name again. To find a name in the table during Pass 2, we simply hash and rehash in exactly the same way, this time comparing each table entry h against the name to be found. The remarkable fact about this algorithm is that the number of comparisons needed to find an entry, on the average, depends only on how full the table is and not on how large it is. Even when the table is 90% full, only about 2.56 comparisons will be needed, on the average. In contrast, for a nearly full table of 512 entries, the sequential search method described earlier would take an average of 256 comparisons to find a name, or about 100 times as long! Random rehashing is illustrated in Fig. 8. The first name to hash to table entry 12, for example, would be stored there, while the next name whose hash function value was 12 would be rehashed to table entry 13, and the next one would be rehashed twice and finally stored in table entry 3. We have only described one method of hashing here; several other variations are possible. The most important of these is called "hashing with overflow chaining," in which all of the names which hash to the same starting address are chained together on a linked list. This method, which is often used on large computers with dynamic storage allocation, is less suitable for microcomputers because it requires an extra 56 address field for each symbol table entry. The references at the end of this article can be consulted for a more complete discussion of hashing. Now that you have become acquainted with some of the basic programming techniques used for scanning and searching symbol tables, you're about ready to start writing your own assembler! You might want to actually try this, using the simplest techniques outlined in this article: Perhaps a fixed-column scanner and a sequentially searched symbol table for a first version. Very often, when it comes to actually getting a program up and running, the simple-minded approach turns out to be the one that works best. Once you've got a basic assembler working, you can consider adding some of the features that we'll discuss next. More Assembler Features Up to this point, we have been concerned with only the basic functions of an assembler: The conversion of Very < jften, when it comes to actually getting a program up and running, the simp 1 e - m i n d e d approach turns out to be the one that works best. mnemonics and programmer defined names to instruction opcodes and addresses. Many other features can be added to an assembly language to make it even more convenient for programming. Some of the more useful features of this kind will be considered here. Defining Constants Most assembly languages have pseudo-ops which direct the assembler to reserve one or more locations containing constant values. For example, the Motorola 6800 assembly language has a pseudo-op FCB, for "form constant byte." An example of its use would be FCB 23,$FA which would reserve two bytes containing 00010111 (23 in decimal) and 111110 10 (FA in hexadecimal or base sixteen). Sometimes an instruction takes its operand in a memory location (rather than as an "immediate" operand), but the operand itself is actually a constant. Instead of writing ADDA THREE THREE FCB 3 we would like to be able to write ADDA =3 and have the assembler automatically reserve a memory location containing 3, and assemble its address into the instruction. Such an instruction operand is called a "literal." On machines where some instructions can address only a limited range of memory locations, this feature may be difficult to implement. Equivalences It is often convenient to be able to define a symbol with a constant value, or with the same value as another symbol. For example, a constant representing, say, the size of an array, may be used at several points in a program. By using a symbol in place of the constant throughout the program, and defining the symbol's constant value at the beginning of the program, we can make it easier to change the size of the array when producing a new version: Only the symbol need be redefined, and its new value will be substituted at the appropriate points by the normal process of assembly. (This is called "parameter- izing" the program.) This feature is not too difficult to implement, and most assemblers have a pseudo-op such as SIZE EQU 25 which allows us to write LDAA #SIZE ARRAY RMB SIZE or, in general to use the symbol SIZE wherever the constant 25 could appear. Expression Evaluation Besides defining constants and constant-valued symbols in a program, it is frequently useful to be able to combine such elements into arithmetic expressions whose values can be computed at assembly time, and to use those values in place of other constants. For example, the same program with a parameter SIZE for the size of an array might include statements such as ADDA #SIZE-1 SPACE EQU 3*SIZE+1 which would specify (for SIZE=25) that 24 should be added to the A accumulator, and that SPACE should have the constant value 76 wherever it appears in the program. It is remarkably easy to evaluate expressions of this kind, taking account of parentheses and the normal precedence of arithmetic operations. An algorithm to perform the evaluation of such expressions will be the subject of an article in a later issue of BYTE; if you are impatient, you can consult Mealy or Gries (see the references). Conditional Assembly We saw how a program could be parameterized by the use of equivalenced symbols and arithmetic expressions. Sometimes a program can be parameterized in another way: Entire sections of the program can be included or omitted, depending on the values of certain parameters. For example, if the maximum value of a certain variable is less than 256, it can be stored in a single byte on most machines; but if the maximum value is 256 or more, two bytes or a word must be used. Thus we might wish to write something like ARRAY ARRAY .IF MAXVAL LT 256 RMB SIZE .END .IF MAXVAL GE 256 RMB 2*SIZE .END 57 with the intent that, if an earlier EQU pseudo-op had defined MAXVAL as, say, 200, the first RMB statement would be assembled, while if MAXVAL had been defined as, say, 400, the second RMB would be assembled. This feature is not too difficult to implement, and it is extremely useful. The assembler must simply recognize the .IF and .END pseudo-ops, evaluate the relations, and skip the intervening text on both passes if the relation is false. It is easy to imagine (but somewhat more difficult to implement) extensions to this feature, such as the repetitive assembly of certain program segments. Macros and Relocation The most sophisticated assemblers are comparable to compilers in complexity, size and versatility. Some assemblers implement a macro facility, which enables the programmer to define new instruction mnemonics which are replaced by parameterized sequences of assembly language statements wherever they appear in the program. When combined with features for conditional assembly, a macro facility provides a powerful tool for extending an assembly language to suit it for a particular application. We have discussed only absolute assemblers: We began by assuming that the program was to be assembled starting at location 0 (or some other fixed location). When the program is going to be loaded into memory along with other, previously assembled programs, however, we don't know how big the other programs are or in which order they will be loaded. In this case it is necessary to put out relocation information along with the assembled program, which says, in effect, "If you load this program at location m, you should add the number m to the following bytes or words in order to make the addresses come out right." This relocation information is processed by a loader, which is responsible for loading all of the related programs into memory. While both of these topics are interesting and very important, many pages would be required to do them justice and this article is pretty long already! So we'll content ourselves with the topics already discussed. By this time, you probably have either decided that writing an assembler is too much work, and have stopped reading this article, or else you have found the whole idea very intriguing and are looking forward for the last word. So here it is: Now that you know how to write an assembler, why not get out and give it a try? You have nothing to lose but your innocence about the complexities of system software, and perhaps a little of your time. Good luck! Now that you know how to write an assembler, why not get out and give it a try? References Barron, D. W. Assemblers and Loaders. American Elsevier (Computer Monograph Series, No. 6), New York, 1969. The most complete, readily available text on the design of assemblers and loaders; also describes one-pass assemblers and meta-assemblers. Gries, David. Compiler Construction for Digital Computers. Wiley, New York, 1971. A highly recommended text on compiler design: Covers both the theoretical and practical aspects of the problem. Includes a good discussion of hashing and more sophisticated methods of scanning. Mealy, George. "A Generalized Assembly System (Excerpts)," in Saul Rosen (ed.), Programming Systems and Languages. McGraw-Hill, New York, 1967. A classic paper by one of the pioneers of language translators and operating systems. Presents the idea of descriptors for character strings as well as many other innovations. Morris, R. "Scatter Storage Techniques, " in Communications of the ACM 11:1 (January 1968), pp. 38-44. One of the best general surveys of hashing techniques; includes a good, brief description of hashing with overflow chaining. 58 RlGS ELECTROINlflCS DISCOUNTS: 10% OFF ORDERS OVER $25.00; 20% OFF ORDERS OVER $250.00. SPECIAL 1-8008 8-2102 ANOTHER POWER SUPPLY . . . PS 25-1 0 to 25v 1a lab type power supply with adjustable current limiting; remote sensing & remote programming for voltage & current. Insturctions included. All parts except chassis, meter(s), p.c. board. Kit of parts with schematics. S14.95 P.C. boards available, No. 007 $3.00 ea. 2K RAM BOARD KIT. ALL PARTSINCL. SOCKETS $84. 50 ICs 8008 MICROCOMP. CHIP$30.95 2102 1K STATIC RAM 3.00 5203 256x8 PROM 15.00 5204 512x8 PROM 25.00 INFO ON ABOVE CHIPS IF ASKED FOR. ORDERS OF $50 OR MORE GET FREE BYTE SUBSCRIPTION IF ASKED FOR (CONTINENTAL U.S. ONL Y). 008A MICROCOMPUTER KIT 8008 CPU, 1024 x 8 memory; memory is expand- able. Kit includes manual with schematic, program- ming instructions and suggestions; all ICs and parts supplied except cabinet, fuses & hardware. Includes p.c. board. $375.00 MANUAL ONLY, $25.00 (no discount on manual) 008A-K ASCII keyboard input kit. $135.00 008A-C Audio cassette adapter kit. $100.00 Details on computer, peripheral kits in our flyer. RGS ELECTRONICS 3650 Charles St., Suite K ■ Santa Clara, CA 95050 ■ (408) 247-0158 We sell many ICs and components not listed in this ad. Send a stamp for our free flyer. TERMS OF SALE: All orders prepaid; we pay postage. SI .00 handling charge on orders under SI 0.00. California residents please include sales tax. Please include name, address and zip code on all orders and flyer requests. Prices subject to change without notice. 59 TERMS AND ALL THAT STUFF: ADD 50* TO ORDERS UNDER $10. CALIFORNIANS ADD TAX. ITEMS IN THIS AD SHIPPED POSTPAID. SORRY, NO COD ORDERS TAKEN. BILL GODBOUT ELECTRONICS BOX 2355, OAKLAND AIRPORT, CA 94614 FLYER HYPE: THIS AD SHOWS ONLY THE TIP OF THE ICE- BERG. SEND US YOUR NAME, A STAMP, AND YOUR ADDRESS TO RECEIVE OUR FREE FLYER. NOW, , .CALL (415) 357-7007, 24 HOURS A DAY, TO FLACI MASTERCHARGE OR 3ANKAMERICARD ORDERS 610O Several months ago, in conjunction with Solid State Music, we put our our first computer type kit — a 'tK by 8 bit memo- ry board. The response has been great; but it's time to move on to newer and bigger things, so we're closing out the ones we have left. Compatible with the MK-8 and other micros; supplied with a 86) pin standard edge connector, sockets for all ICs; features plated - through holes, proper bypassing, flexible ad- dressing, and more. Board is 6i" x 9i". 61.5Q 641.95 DIP SWITCH -- These programming switches have 7 miniature SPST switches per DIP package. Ideal for computer/digital hobbyists. Thought you couldn't afford to wire wrap? Think again. Cordless for convenient op- eration. Complete with rechargeable bat- teries, charger, bit, and instructions; ready to go as soon as the batteries are charged. "2102" 1024 X 1 BIT RAM -- SINGLE +5 VOLT SUPPLY; STATIC OPERATION; FAST ACCESS. $1,95 lC "8008" 8 BIT MICROPROCESSOR -- POPULAR 8 BIT PROCESSOR IC. $27.95 V^5 "5203" ERASEABLE ROM -- ORGANIZE AS 4 X 512 OR 8 X 256 BIT MEMORY. STATIC AND NON-VOL- ATILE; FULLY PROGRAMMABLE AND ERASEABLE. NO CLOCK OR REFRESH REQUIRED. $14.50 <3*A povamw available We can program your 5203s, 1702s, and other ROMs for $7.50 a piece, or 10/ $35.00. Call our 24 hour phone line to request hexadecimal coding forms. 00^22 Hfe This is a flat, multiconductor wire, available in multiples of 10 conduc- tors up to 100 conductors. Comes in 20 ft. lengths only. Cost is If per conductor foot; for example , a 20 conductor cable 20 ft. long = $4.00 MHIIM NOM-VOLATILE STORAGE -—Lithium Core — -750 Ns Full Cycle Time ---350 Ns Access Time —3 Wires: X & Y Drive, Sense/Inhibit Lines ---Diode Decode Matrix On Board; Prints Supplied For Drive Electronics And Sense Amps —For 8 & 16 Bit Machines & stocks # docfcef W^^SiL We made a special purchase of PC mount soldertail sockets, including discon- tinued types and some that need higher than spec insertion force. Brand new from a leading manufacturer of quality IC sockets. (G)=gold plate contacts (T)=bright tin T 14 pin 11/$1.95 G 14 pin 10/$1.95 T 24 pin 5/$1.95 T 28 pin 5/$1.95 T 40 pin 5/$2.95 Low profile type sockets: G 16 pin 10/$1.95 G 40 pin 5/$2.95 ———————— ————————————————— GOOD LUCK, BYTE WE'RE GLAD TO SEE A MAGAZINE FOR THE COMPUTER CROWD! CAVE Tri-share is a trademark of National Semiconductor —————————■■■—>■■■■■■■>■■■■>——————— I— — — — « • WE ARE PROUD TO OFFER THIS EXCITING IC TO THE COM- PUTER ENTHUSIAST. IT'S A 10 PIN DIP WITH TRI-SHARE AND A POWERFUL INSTRUCTION SET. FAST AND EASY TO PROGRAM; HAS ASSEMBLER 8 EDITOR READILY AVAILABLE. FROM NATIONAL SEMICONDUCTOR, "THE SECRET MICROCOM- PUTER COMPANY". AVAILABLE SEPT. 1 - $125 BELOW IS AN ARTIST'S CONCEPT OF THE MICROCOMPUTER KIT WE'VE WRAPPED AROUND OUR PACE CHIP. YOU'LL AP- PRECIATE THE 7 SEGMENT READOUTS FOR EASY OCTAL DE- BUGGING ON BOTH ADDRESS AND DATA, AS WELL AS THE INTEGRAL AUDIO CASSETTE AND SERIAL/TELETYPE INTER- FACES... PLUS 2K BYTES OF INTEGRAL MEMORY. WE DO, HOWEVER, NEED A NAME FOR THE BEAST. SEND US YOUR IDEA— IF WE USE IT, YOU WIN A FREE KIT. A\AIL. SEPT. 1- Write for details! DECIPHERING • • • • • S A N ; MYSTERY KEYBOARDS Did you ever wonder about the use of surplus keyboards for use in your system? Here is an article describing one way to analyze such a keyboard — illustrated by a particular model which is available through one of BYTE's advertisers. Do you use a surplus keyboard already? This is one of the most common and usable of surplus subsystems — I'd like to see a few reader submitted articles on use of various keyboards available in surplus channels. . . . CARL by Carl Helmers Editor, BYTE One of the best sources of input data for your home brew computer system is the typewriter style keyboard device. A decent keyboard will give you the ability to enter parallel character data 8 bits at a time. The typical keyboard input devices will also include a flag of some sort to indicate that a key has been pressed. It might also include an "acknowledge" line to be pulsed after the computer had read the data. The parallel interface of a typical keyboard is illustrated in Fig. 1. Fig. 1 is a typical interface of a keyboard, and is used only as a guide to the analysis of an actual keyboard later on in this article. The manual input of the keyboard is its most important feature. It is the human operator's depression of a selected key which communicates some information to your system. When the key is depressed, it causes the keyboard input device's logic to generate an encoded binary pattern for the key. This encoded binary pattern is typically an ASCII character code presented on the data lines DO to D6. In addition to the encoding function, the keyboard has logic which produces a "flag" signal to indicate that some key has been depressed. This flag is either a pulse (see timing diagram example in Fig. 1 ) or a level state, depending upon the particular keyboard design involved. It is often the case (but not required) that the keyboard is designed for interactive control by the computer processor. In such cases, an "acknowledge" 62 signal must be generated by the computer and sent back to the keyboard to reset the logic of the keyboard input device. The encoding pattern of the keyboard input device depends upon the manufacturer's design and must be determined for a surplus keyboard before you can use it. For many keyboards, the ASCII pattern of Table I is applicable — each key maps into one of the 7-bit patterns listed. Unless stated by the dealer, you will have to approach the analysis of the surplus keyboard without any assumptions: it is likely to be ASCII but . . . you could wind up with a Univac ' ' F ieldata " encoded keyboard; you could wind up with an IBM EBCDIC keyboard, etc. Many non-standard encoding schemes for alphanumeric keyboards are derivatives of ASCII. Thus the example in this article is chosen with an ASCII encoding scheme in mind. (IBM surplus is rarely in usable form and the number of EBCDIC keyboards by non-IBM manufacturers is an unknown but assumed small number.) In Table I, the common character codes are shown in a typical graphic form as well as in binary, octal and hexadecimal representations. Now a new keyboard fully encoded for ASCII and/or EBCDIC is one option you have for implementing a keyboard input device. For example, a new commercial keyboard will typically sell in the $50 to $150 range depending upon options — a keyboard with a standard typewriter style layout and an LSI encoding method. As a second example, Southwest Technical Products Corp. used to sell a hobby quality keyboard at about $40 in kit form. The advantages of new keyboards are obvious: you get the complete description of the hardware along with the product — and an interface which will be similar to the one described in Fig. 1. With the newer LSI encoded boards, you will probably get a keyboard with an "n" key rollover feature to decipher multiple key strokes which overlap in quick succession. This is all well and good, but is there a less expensive alternative? The answer of course is "Yes", and the remainder of this article concerns the techniques involved. Using Surplus Keyboards The alternative to new equipment is "pre-owned" equipment, to borrow a term from standard used car dealers' lexicon. Since computers have been in use for a number of years there is a fairly wide selection of equipment in the "surplus" market, as you can find out by reading the advertising pages of BYTE. An item which is frequently found in surplus vendors' offerings is the keyboard input device. Prices for keyboards vary considerably — from $10 for real "junk" to about $40 for premium keyboards. The use you can get out of such a surplus board ranges from a complete subsystem ready to hook up — to a mere array of key switches which must have a new set of encoding logic to make it work. The keyboards you employ for this purpose must be selected and analyzed on an individual basis — there is no stock formula applicable to all such keyboards. Several rough guidelines will help you keep out of too much trouble: 1. Always look for a unit which is in sound physical condition. Get one which has the cleanest possible key tops, smoothly working keys, little sign of "hack" modifications to PC circuits, etc. Verify that the keyboard is a "switch" type — Hall effect or capacitive keyboards exist and should be avoided without proper documentation. 2. The most desirable keyboard will be one in which the encoding logic is readily decipherable. This will invariably be the case with diode matrix keyboards (see text below) — and may be possible if an LSI chip with a standard part number is utilized. 3. The most desirable keyboard will be one on which the PC layout people have made notations of nice little comments like "+5V", "-12V", "VCC", "A", "$", etc. These are great aids to figuring out the operation of the devices. If you (at a minimum) satisfy the first criterion above, the keyboard will ultimately be usable, provided it uses actual keyswitches, since you can always construct a switch scanner and/or diode matrix to encode the switches as ASCII binary information. Diode Matrix Keyboard Analysis — An Example To illustrate what can be done with surplus keyboards, the remainder of this article concerns the analysis of a particular keyboard input device. The keyboard in question has been advertised recently, and is a fairly typical diode matrix encoded ACKNOWLEDGE + 1 LSB KEYBOARD INPUT DEVICE MSB FLAG + DO Dl D2 D3 D4 D5 D6 TIMING (TYPICAL): HUMAN FINGER y FLAG rap ACKNOWLEDGE -it COMPUTER -RESPONSE- TIME Fig. 1. Typical keyboard functions. 63 The keyboard, with bottom plate removed and encoder board out in the open. The encoder printed circuit is separated from its mounting on the bottom plate but is still attached by its wiring harness. KEYBOARD HOUSING OUTPUf TERMINALS BYPASS CAPACITOR KEYBOARD ENCODER P.C. INTEGRATED CIRCUITS DIODE MATRIX keyboard of the 1966-1970 vintage. This keyboard is a surplus Sanders Associates Model 722-1 subsystem, which comes enclosed in a metal housing with a fairly typical Teletype style key layout. On the right hand side of the keyboard is a set of special function keys, which obviously had some meaning in the original system using the device. The keyboard and housing can be used "as is" in your system — with the only necessary modifications being the substitution of an interface plug and cable which can mate with your own equipment. The example of analyzing and figuring out this keyboard can be used as a guide to similar work with other surplus keyboards. Start at the Beginning The object of this project is to determine the details needed to make the Model 722-1 keyboard work — but without any original design documentation from the manufacturer, since it is surplus. The first step is to put on your Sherlock Holmes cap, crank up your deductive powers and begin disassembling the keyboard. In order to analyze the circuit, a likely place to start is the bottom cover plate. In the case of the 722-1, four screws hold the cover plate to the bottom of the housing. Upon opening the cover plate, the 722-1 will be found to have a printed circuit board attached to the plate — a thin plastic sheet glued to the cover plate prevents inadvertent shorting of PC conductors. The PC should be removed from the cover plate by unscrewing the four nuts securing it. The result will be a PC board hanging out the back of the housing/keyboard assembly by its wiring harness. The actual process of analysis of a keyboard such as this will probably take you an evening or so. The key features to look for in a diode matrix encoder keyboard are identified in the photo. Keyboard Encoder PC. The typical diode matrix keyboard will have a printed circuit board containing a large number (approximately 100-200) of computer diodes and several integrated circuits, with individual wires running from keyswitches to the PC. Sometimes the functions of encoding and control logic will all be mounted on the same printed circuit as in this example. Occasionally, the logic will be split up into smaller chunks on separate boards. Wiring Harness. A keyboard is easy to figure out if you can get at it "live" (under power). In this case, a wiring harness allows considerable room for extension so that the key switch matrix and housing can be separated from the encoder board. Diode Matrix. The way to tell a diode matrix board is by the regular array of diodes found at some point. In this example, the array is at the lower right in the photo. While the array is regular, the actual printed wiring is fairly random — although it will ultimately condense down into a set of bit busses. Integrated Circuits. This particular keyboard has a bunch of integrated circuits in the left hand portion of the encoder board. The photo illustrates arbitrary reference numbers U1 to U12 for the purposes of this article, since no references were built into the printed circuit board. Pull up Resistors. In diode matrix boards, a set of negative logic "wired or" busses is used to generate each bit of the encoded binary word. One pullup resistor (typically 1000 Ohms) is associated with each bus line. Identifying the Power Requirements One of the most critical items to be determined in figuring out a keyboard is to identify the power requirements. The best way is 64 Binary Octal Hex Common "Graphics"* 0000000 000 00 NUL character 0000001 001 01 0000010 002 02 0000011 003 03 00001 00 004 04 0000101 005 05 0000110 006 06 00001 1 1 007 07 Bell - Ring the Bell! 0001000 010 08 0001001 011 09 0001010 012 OA LF — Line Feed 0001011 013 OB 0001100 014 OC 0001101 015 OD CR — Carriage Return 0001110 016 OE 0001111 017 OF 0010000 020 10 0010001 021 11 0010010 022 12 0010011 023 13 0010100 024 14 0010101 025 15 0010110 026 16 001 01 1 1 027 17 0011000 030 18 0011001 031 19 0011010 032 1A 0011011 033 1B ESC — "Escape" 0011100 034 1C 0011101 035 1D 0011110 036 1E 0011111 037 1F 0100000 040 20 SP — Space 0100001 041 21 ! — Exclamation 0100010 042 22 " - Quotes 0100011 043 23 #— Number Sign 0100100 044 24 $- Dollar Sign 0100101 045 25 % — Percent 0100110 046 26 & — Ampersand 0100111 047 27 ' — Apostrophe 0101000 050 28 ( - Left Paren 0101001 051 29 ) - Right Paren, 0101010 052 2A * — Asterisk 0101011 053 2B + — Plus sign 0101100 054 2C , — Comma 0101101 055 2D Minus Sign (hyphen) 0101110 056 2E . — Decimal (period) 0101111 057 2F / - Slash 01 1 0000 060 30 0 0110001 061 31 1 0110010 062 32 2 0110011 063 33 3 0110100 064 34 4 0110101 065 35 5 0110110 066 36 6 0110111 067 37 7 0111000 070 38 8 0111001 071 39 9 0111010 072 3A : — Colon 0111011 073 3B ; — Semicolon 0111100 074 3C < — Less than 0111101 075 3D = — Equality 0111110 076 3E > — Greater than 01 1 1 1 1 1 C77 3F ? — Question Mark Table I. Binary, Octal and Hexadecimal ASCII Codes, This table contains common symbols for keyboard characters and the corresponding ASCII codes. Binary Octal Hex Co mmon "Graphics"* 1000000 100 40 @. - "at" 1000001 101 41 A 1000010 102 42 B 1000011 103 43 C 1000100 104 44 D 1000101 105 45 E 1000110 106 46 F 1000111 107 47 G 1001000 110 48 H 1001001 111 49 I 1001010 112 4A J 1001011 113 4B K 1001100 114 4C L 1001101 115 4D M 1001110 116 4E N 1001111 117 4F 0 1010000 120 50 P 1010001 121 51 Q 1010010 122 52 R 1010011 123 53 S 1010100 124 54 T 1010101 125 55 U 1010110 126 56 V 1010111 127 57 w 1011000 130 58 X 1011001 131 59 Y 1011010 132 5A z 1011011 133 5B [- Left bracket 1011100 134 5C \- Reverse slash 1011101 135 5D ] - Right bracket 1011110 136 5E 1011111 137 5F - Underscore 1100000 140 60 1100001 141 61 a 1 1 0001 0 142 62 b 1100011 143 63 c 1100100 144 64 d 1100101 145 65 e 1100110 146 66 f 1100111 147 67 g 1101000 150 68 h 1101001 151 69 i 1101010 152 6A J 1101011 153 6B k 1101100 154 6C I 1001101 155 6D m 1101110 156 6E n 1101111 157 6F 0 1110000 160 70 P 1110001 161 71 q 1110010 162 72 r 1110011 163 73 s 1110100 164 74 t 1110101 165 75 u 1110110 166 76 V 1110111 167 77 w 1111000 170 78 X 1111001 171 79 V 1111010 172 7A z 1111011 173 7B c- Left brace 1 1 1 1 1 00 174 7C 1111101 175 7D }- Right brace 1111110 176 7E 1111111 177 7F DEL - Delete 65 Diode matrix - this system of generating the ASCII code is used in older keyboards. H5V of course to get a keyboard which has power requirements listed on its encoder printed circuit in no uncertain terms. However, "the best" is often a matter of luck and judicious choice of equipment in surplus circles . . . you can make do with less than perfect documentation by employing some knowledge of common design practices. Figuring out power voltages requires the analysis of one circuit power line for each level of voltage involved to completely establish the requirements of the system. One of the least ambiguous ways to identify power lines is to look up the power pinouts of the integrated circuit components used in your keyboard. This method requires a supply of reference books and a keyboard encoder circuit VOM 300mA SCALE -«— *0= <rq Add 1. 10 r* if ilrm it p;>::>"-*: : , . . .■..■■■■... ■ ■ , "• • • GENERATION N+4 75 Fig. 4. The LIFE grid display with cursor detail (showing suggested pattern). 64 " x " positions " x,y) designated by cursor concepts of LIFE Line. The hardware requirements of this application's first simple form are three: 1 . An input method. The best all around input you can get for your computer is an ASCII encoded typewriter keyboard. This hardware will be assumed, with 7-bit ASCII codes used in the examples of programs. If you feel like embellishing the program with special hardware, a "paddle" with several keys can be wired in parallel with your main keyboard to control the special functions of the LIFE program. The input keys used to control the display will require a keyboard which can detect two simultaneous (or three) keys being pressed. A normal ASCII encoded keyboard with an LSI encoding chip will not work "as is" in this application since pressing two keys (other than control or shift and one other) will be resolved into two characters. An alternate "paddle" type of arrangement is to use a single input port with one switch key switch for each bit of the port, debounced by software. A keyboard which is encoded by a diode matrix can be used since the diode matrix will give a new code (logical sum) based upon which keys were depressed. 2. A processor. The game can be implemented on any conventional computer. As a measure of capacity, however, the simple form will assume a 64x64 bit array for the playing field, and an available home brew processor such as an Intel 8080 (i.e.: Altair), Motorola 6800, or National PACE. The total programming capacity of your memory should be roughly 4000 8-bit words, or 2000 1 6-bit words; the playing field will require 512 8-bit words, or 256 16-bit words — and programming will include a set of subroutines to access individual bits. 3. A display. My first version of LIFE was implemented on a PDP-6 in FORTRAN at the University of Rochester when I was a student. That program used a direct link out to a DEC Scope controlled by a PDP-8 - with a teletype for input. I have s ince implemented life programs using character-oriented terminal output and line printers. The display to be used for LIFE Line purposes I'll leave undefined in detail, but with the following characteristics: It should have an X-Y selection of coordinates for display elements (LIFE grid locations), which can be individually controlled. Its size will be assumed 64x64. A Note Regarding Speed The LIFE algorithm to be illustrated in LIFE Line is optimized fairly well for speed — a requirement which will become obvious in the context of your own system if you use a typical microprocessor. With a fairly large pattern of cells, it may take as much as a minute or more to compute the next generation. Trading off against speed is memory size — use of a packed bit structure is necessary if the matrix and programs are to fit in a micro computer which is inexpensive. But the packed bit structure requires time to access bits (eg: the shift/rotate instructions several times might be used in the access process). I predict that the program will be "dreadfully slow" if run on an 8008, and perhaps passably quick if you use a 6800 or 8080. ("Passably quick" means under 10 seconds per generation.) A used third-generation mini (high speed TTL) would be ideal. User Features No application is complete without taking in to consideration the user of the system. The interface which controls the system is an important section of the design. There is a temptation on the part of individuals such as you or I to say words to the effect: "Since I am making it for me, who the heck cares about the user interface." But! Removing the system from the working product realm to the purely personal realm does not eliminate the need to design a 76 usable system. You have at least one user to think of — yourself! In point of fact, however, I doubt that any reader who builds a scope or TV graphics interface will be able to resist the temptation to show it off to his or her family and friends; so, even for "fun'' systems, consideration of users is still a major input.to the design. The user interface for the LIFE program will provide the following functions to enable a pattern to be drawn on the screen and initiated: 1. Cursor. The display output should provide a "cursor" which is maintained all the time by a subroutine in the software at a given "X" and "Y" position of the matrix. Fig. 4 illustrates the point matrix of the screen (here assumed 64x64) and the cursor pattern. The cursor is a visual feedback through the display to the user of the LIFE program, illustrating where the program will place or erase information. Fig. 4 shows a blow-up of one possible cursor pattern. Two additional features are required for a useful cursor output of the program for LIFE. These are: - A blinking feature. Suppose you have filled the screen with a complicated pattern drawn with the cursor controls described below. A significant number of the screen points are now filled with dots — and there will be a strong tendency to confuse the cursor pattern of Fig. 4 with the actual data pattern you have entered. A "blink" feature can be built into the programs which create the cursor so that you will always be able to distinguish it by its flashes. — A blanking feature. For the LIFE game, a necessary attribute of cursor control is the ability to blank out the cursor during the actual evolution of patterns. I consider this necessary due to observation of a Birth - the cursor leaves a path of "cells," illuminated points. Death — cells in the cursor's path are eliminated. demonstration LIFE program for one desk top programmable CRT terminal: its cursor is always present and mildly annoying when the LIFE game is in operation. A basic way to make the cursor disappear from view at certain times is to require active control by cursor display routines when the program is in its input mode. If the LIFE program leaves the input mode to go evolve some patterns, the cursor will die a natural death until the active maintenance is resumed on return to the input mode. 2. Cursor Control. The whole purpose of the cursor is to provide a means of feeding back to you — the user — the current grid location the LIFE program is pondering. Movement of the cursor provides the opportunity for three types of data entry to the program: — Positioning of the Cursor. By simply moving the cursor under control of the keyboard (see below) you can direct the LIFE program's attention to different parts of the screen. — Sowing Seeds of LIFE. By moving the cursor while indicating a "birth" function, the cursor will leave a trail of "cells" indicated in the display by illuminated points. (One keyboard key is required for this function.) — The Grim Reaper. By moving the cursor while indicating a "death" function, any cells in the path of the cursor will be eliminated, by turning off the corresponding display point. (One keyboard key is required for this function.) Motion control is also used to enter data. By picking a data key and at the same time depressing one or two of the cursor direction keys, a "trail" will be left. A timing loop in the input program will be used to set a reasonable motion rate in the X (horizontal) and Y (vertical) directions, so that the data entry will be performed automatically as long as the keys are depressed. The motion control keys and useful combinations are illustrated in Fig. 5. 3. Program Control Commands. This is the section of the LIFE program design which is the software analog of the "backplane" data bus concept in a hardware system. LIFE Line concerns a modular LIFE program which will be subject to many variations and improvements. 77 KILLING TWO BIRDS WITH ONE STONE, or "HOW I DESIGNED A GENERAL INTERACTIVE GRAPHICS SOFTWARE INITIALIZATION PACKAGE IN THE GUISE OF A SPECIFIC APPLICATION. The ideas contained in this article are by no means limited to control of the graphics display type of device in the LIFE context used for this application. The only necessary connection between the LIFE program proper and the display "drawing" and updating functions is in the existence of several subroutines needed to turn on/ turn off selected points, and the ability of the display input ("drawing") routines to call the LIFE program. One logical extension of the program control mechanisms to be included in LIFE Line is to allow the invocation (ie: activation, calling, etc.) of other programs and games which use the display. When the "drawing" routines are up and running, even before you hook up the LIFE algorithm proper, you'll be able to manipulate the contents of the scope under software control and draw pictures on the screen. Fig. 5. Cursor motion control commands. The following commands (one key on your keyboard for each) are used to simply move the cursor in one of the grid directions at a rate set by the cursor control software: Typical "Key Tops" f UP J or (DOWN) or ( LEFT J or (rIGHt) or Move toward top of screen. Move toward bottom of screen. Move left on the screen. Move right on the screen. The following combinations can be used to achieve motion in diagonal directions: Toward Upper Right Corner- PRESS ( UP J AND (rIGHTJ AT THE SAME TIME. Toward Lower Right Corner- PRESS ( DOWN J AND (rIGHt) AT THE SAME TIME. Toward Lower Left Corner - PRESS (down) AND (left) AT THE SAME TIME. Toward Upper Left Corner -PRESS ( UP J AND f LEFT J AT THE SAME TIME. Remember that all eight of these possibilities can be used to "sow the seeds" or erase data if the appropriate data key is pressed simultaneously. The first demonstration of LIFE in these pages is just the bare bones of a LIFE program. When it is fully described you will see the input display routines, the evolution algorithm, the program control mechanism and little else. The program control mechanism, however, is quite general and will be used to integrate additional commands, variations on LIFE, etc. The means of achieving this modularity-is a set of "hooks" which enable you to add commands beyond the bare minimum by coordinating new modules with the program. The following is a minimum set of program control commands for the first version: RUN — a key assigned to this function will terminate the input ("drawing") mode, and begin the "run mode." DRAW — a key assigned to this function will be tested during the "run" mode to cause a return to the "draw" mode. CLEAR — a key assigned to this function will be used to clear the screen in the "drawing" mode, leaving only the cursor and a blank screen. The above features are only a minimum set of user controls for LIFE. Additional program control commands which will prove invaluable when added include: SAVE/RESTORE - commands to write and read LIFE patterns on cassette tape or other mass storage device in your home brew system. I N 1 T I ALIZATION - functional key entries for the generation of various "standard" LIFE patterns placed at the current cursor location. Next month, LIFE Line will enter into the realm of software design to describe the LIFE program software in more detail. 78 LIFE Line Glossary. Communication of meaning requires definition of terms. The following is a listing of selected terms used in LIFE Line with short explanations. Tire terms which are marked "L" are primarily significant only in the LIFE application - all others are fairly general terms. "Active Control" - in the LIFE example, a desired requirement for the cursor is that it disappear automatically if not continually refreshed. This can be accomplished in software by instituting a "garbage sweeper" for the screen which clears the screen memory periodically and updates from the latest non-cursor sources of data. Normally, the cursor control/display subroutine would be called after the screen is updated - but if the cursor control routine is not called, the cursor will be absent after garbage sweeping. The cursor is thus said to require "active control" because it must be explicitly posted on the screen following the garbage sweeping operation if it is to appear at all. (L) "Algorithm" - this term has a formal mathe- matical origin as the generalized methodology for arriving at some result. In the computer science area, it retains this definition: an algorithm is the most general processing required to achieve some result. "Algorithm" is a term which includes the term "program" in the following sense: a program is an algorithm (general) as written and coded for a specific system. "Application" - an application is a specific system designed to accomplish some goal. In the computer systems area, applications are generally composed of hardware and software components which must "play together" to accomplish the desired func- tions. The LIFE Line's target - a working game of LIFE - is an example of an application. "Backplane Bus" - the hardware concept of a set of wired connections between identical terminals of multiple sockets. In modular systems, the common wiring makes each socket identical to every other socket. Hardware modules can then be inserted without regard to position in the cabinet containing the equipment. "Cellular Automata" - conventional computers employ a serial or sequential method of processing. One instruction, then the next, is executed in a time-ordered sequence. The "cellular automata" concept is one way of visualizing large and compli- cated parallel computing elements. Hypothetically, the LIFE game could be played by such a cellular computer, one which calculates each matrix element simultaneously. In the present state of computer technology, this is not possible, so you have to settle for a simulation of the parallel computation's result, using a serially executing program.(L) "Coding" - the process of translating a functional specification of a program or routine into a set of machine readable elements for actual use in a computer. Coding can mean writing FORTRAN statements, writing PL/1 statements, writing assembly language statements, or ... if you have no compiler, coding is the writing of machine codes directly onto a sheet of paper using tables of op codes, an eraser and patience. "Cursor" — a mark on a display screen used to identify a particular place. This interpretation is an electronic adaptation of the standard definition in Webster. "Evolution" - patterns in the game of LIFE change from generation to generation according to the rules. The sequence of such changes can loosely be called the evolution of the pattern.(L) "Feedback" - in the context of system develop- ment, feedback is the use of observed system behavior to modify and improve the design of the system. "Functional Specification" — a functional specifi- cation of a system is one which describes "what" the system must do, more or less independent of any technology which is required to make the "what" work. It is easy to come up with loose functional specifications — the hard part is to refine the specification and pin it down to some- thing which is "do-able" in a given context of technology. I have a functional specification in my mind, for instance, of a useful interplanetary travel method - but whether or not I ever see such a system depends upon advances in physics, engineering and economic understanding. BYTE often concerns itself with functional specifications of much more "do-able" systems which readers can and will implement on home computers. "Generation" - this term in the LIFE context means the present "state" of all the locations in the "universe of the grid" at some point in time.(L) "Implement" - technical jargon verb for the creation of a system or element of a system. A hardware designer might implement a controller or a CPU; a software programmer implements a system of programs; a systems designer implements a hardware/software combination which achieves a desired functional end. "Indexing" — the technique of referencing data in collection of similar items by means of numerical "indices." In the LIFE Line example, the collec- tion is that of the 64x64 array of bits in the computer representation of "grid space." Indexing by row and by column is used to pick a particular bit within this array when the program requires the data. "Interact" - when a system "interacts" with "something/person" it is operating under an algorithm which allows conditional behavior dependent upon data. The data is obtained from the "something/person" and may in fact be influenced by previous interactions as well as new inputs. In many computer contexts "interact" has the additional implication of "quick" response in "real time." Thus when you think of an "interactive" terminal or game, you think of a computer programmed so that it keeps up with the inputs from the human operator. 79 INTEL 1K 2102 RAM Factory prime, tested units. Factory selected for much faster speed than units sold by others. 650 NS. These are static memories that are TTL compatible and operate off + 5 VDC. The real workhorse of solid state memories because they are so easy to use. Perfect for memories because they are so easy to use. Perfect for TV typewriters, mini-computers, etc. With specs. $3.95 ea. or 8 for $30 SIGNETICS1KP-ROM 82S129. 256 x 4. Bipolar, much faster than MOS devices. 50NS. Tri-state outputs. TTL compatible. Field programmable, and features on chip address decoding. Perfect for microprogramming appli- cations. 1 6 pin DIP. With spec. $2.95 ea. 8T97B By Signetics. Tri-State Hex Buffer MOS and TTL Interface to Tri-State Logic. Special $1.49 DO YOU NEED A LARGE COMMON ANODE READOUT AT A FANTASTIC PRICE? S.D. presents the MAN-64 by Monsanto - 40 inch character. All LED construction - not reflective bar type, fits 14 pin DIP. Brand new and factory prime. Left D.P. $1.59 ea. 6 for $7.50 MOTOROLA POWER DARLINGTON - $1.99 MJ3001 - NPN - 80 Volts - 10 Amps - HFE 6000 typ. To-3 Case. Ideal for power supplies, etc. We include a free 723 regulator w/schematic for power supply with purchase of the MJ3001. You get the two key parts for a DC supply for only $1.99. Regular catalog price for the MJ3001 is $3.82. LARGE SIZE LED LAMPS Similar to MV5024. Prime factory tested units. We include plastic mounting clips which are very hard to come by. Special 4 for $1 48 HOUR SERVICE You deserve, and will get prompt shipment. On orders not shipped in 48 HRS' a 20% cash refund will be sent. We do not sell junk. Money back guarantee on every item. WE PAY POSTAGE. Orders under $10 add 75^ handling. No C.O.D. Texas Res. add 5% tax. S. D. SALES CO. P. 0. BOX 28810 DALLAS, TEXAS 75228 J "Lexicon" - the list of buzzwords in any given field. This glossary is a subset of a lexicon coupled with explanations. In compiler and language design, "lexical analysis" is a derivative of this term concerned with language keywords and their rela- tion to a grammar. "n", "n+1", "n+2"... - when it is useful to specify a sequence of things, where no particular number is intended, a "relative" notation of the sequence is useful, "n" is some arbitrary number; "n+1" is one number greater than an arbitrary number, and so on. When I say "generation n+1" of LIFE, I mean the next generation after generation "n" where "n" is arbitrary. A suitable LIFE display peripheral is an oscilloscope graphics interface such as the Digital Graphic Display Oscilloscope Interface designed by James Hogenson and printed in the May 1975 issue of ECS Magazine, the predecessor to BYTE. The graphics interface article will be expanded and published in BYTE No. 2, October 1975. Until supplies are exhausted, back issues of May ECS (and earlier articles) can be ordered at $2 each. Orders and inquiries regarding ECS back issues should be sent to M. P. Publishing, Box 378, Belmont MA 021 78. "Partitioning" - the technique of "divide and conquer." Rather than view a complicated system as a monolithic blob of "function," an extremely useful design method is to partition the system into little "bloblets" of function which are easy to understand. Hardware designers of CPUs thus think of MSI chips as sub-elements in partitioning; hardware systems designers think of CPUs and peripherals and memories as sub-elements of parti- tioning, and software designers consider divisions of complicated programs and program libraries as their sub-elements. "State" - the present condition of some system, or elements of the system. This term applies to any system which has "memory" to distinguish one possible "state" from another. The term applies equally well to small sub-elements of a system such as the bits of a memory: in the LIFE Line context, the "state" of a single grid location is a number from 0 to 8 counting how many "neighbor cells" are present. "System " - the most general of all general purpose terms. A system is a collection of component elements (technological, hardware, software, human-interface) selected to play together accord- ing to some design or purpose. A system is a human-invented way of doing things. "Undefined in Detail" - I know what is needed, can specify its interface, but am not at present supplying the detail design. This is a useful attitude since it allows for "plug compatible" designs differing widely in their internal principles of operation. A similar expression would be to call the subsystem in question (the graphic display mentioned in this LIFE Line example) a "black box" and leave it at that. (Software always seems to reference hardware in this way, and hardware does the same for software.) A synonym for the attitude is the mathematician's way of saying "in principle there exists a solution!" without telling you what it is. "Universe of the Grid" - this is the set of all possible places in which a LIFE cell could be placed. These places are called "grid locations". (L) 80 MITS Altair Computer Report II MITS Announces Lower Memory Prices! On lulyl, 1975, MITS lowered the price of the Altair 1K Static Memory Card (88-1MCS). The kit price was dropped from $176 to just $97 while the assembled price was dropped from $209 to $139. This price reduction was made possible by a reduction in the price of the Altair 1K 8101 memory chips. Also affected was the price of 88-MM 256 byte (word) memory modules. The $53 kit price was lowered to just $14 and the $61 assembled price to $26. Altair BASIC-Not Just Anybody's BASIC Altair BASIC is an easy-to-use programming language that can solve applications problems in business, science and education. You will find that with only a few hours of using BASIC that you can already write programs with an ease that few other com- puter languages can match. Altair BASIC doesn't compromise power for simplicity. While- it is one of the simplest computer languages in existence, it is also a very powerful language. ALTAIR BASIC comes in three versions. The first of these is a 4K BASIC designed to run in an Altair with as little as 4,000 words of memory. This powerful BASIC language has 6 functions (RND, SQR, SIN, ABS, INT, and SGN) in addition to 15 statements (IF . . . THEN, GOSUB, RETURN, FOR, NEXT, READ, INPUT, END, DATA GOTO, LEX DIM, REM, RESTORE, PRINT, STOP) and 4 commands (LIST, RUN, CLEAR, SCRATCH). The second ALTAIR BASIC option is the 8K BASIC designed to run in an Altair with as little as 8,000 words of memory. This BASIC language is the same as the 4K BASIC only with 8 addi- tional functions (COS, LOG, EXP, TAN, ATN, INR FRE, POS) and 4 additional statements (ON . . . GOTO, ON . . . GOSUB, OUT, DEF) and 1 additional command (CONT). This BASIC has a multi- tude of advanced SFRING functions and it can be used to control low speed devices — features not normally found in many BASIC languages. The third ALTAIR BASIC is the EXTENDED BASIC version designed to run on an Altair with as little as 12,000 words of memory. It is the same as the 8K BASIC with the addition of ' PRINT USING, DISK I/O, and double precision (13 digit accuracy) add, substract, multiply and divide. Altair BASIC is only the beginning. MITS is currently engaged in an extensive software development program. Other software now available includes an Assembler, System Monitor, and Text Editor. Altair software comes with complete documentation. One Month Specials The Altair Users Group is quite possibly the largest computer hobbyist organization in the World. It is both a means of communi- cation among Altair Users and a method of building a comprehen- sive library of Altair programs. All Altair 8800 owners are entitled •to a free, one year membership in this group. For one month only, you can become an Associate Member lor one year at a reduced rate of $10 (regularly $30). Among other benefits you will receive a subscription to the monthly publication, Computer Notes, which contains complete update information on Altair hardware and software developments, programming tips, general computer articles and other useful information. Now available is the Altair Software Documentation Book I which contains technical data on the Altair Assembler, Text Editor, System Monitor and BASIC language software. This documentation is free to purchasers of Altair BASIC. For one month only, it is being offered for only $7.50 (regularly $10). Offers good until September 30, 1975. The IK Static Memory Card contains 1024 bytes of memory with a maximum access time of 850 nanoseconds. Now ready for production is the new Altair 2K Static Memory Card (88-2MCS) with 2048 bytes of memory. Like the IK Static Memory this new card contains memory protect features and provisions for disabling the ready. It has a maximum access time of 850 nanoseconds and is engineered with the finest components available. It is inexpen- sively priced at $145 kit and $195 assembled. HARDWARE PRICES: All air Computer kit with complete assembly instructions $439 Assembled and tested Altair Computer $621 1,024 Byte Sialic Memory Card $97 kit and $139 assembled 2,048 Byle Sialic Memory Card $145 kit and $195 assembled 4,096 Byle Dynamic Memory Card $264 kit and $338 assembled Full Parallel Interface Card $92 kit and $114 assembled Serial Interface Card RS232) $119 kit and $138 assembled Serial Interface Card (TTL or Teletype) . $124 kit and $146 assembled COMTER II* $780 kit and $920 assembled •The Cornier II Computer Terminal has a full alpha-numeric keyboard and a highly readable 32-character display. It has its own internal memory of 256 characters and complete cursor control. Also has its own built-in audio cassette interface that allows you to connect the Comter II to any tape recorder for both storing dala from the computer and feeding it into the computer. Requires an RS232 Interface Card. SOFTWARE PRICES: Altair 4K BASIC $350 Purchasers of an Altair 8800, 4K of Altair Memory, and Allair Serial I/O or Audio-Cassette I/O ONLY $60 Allair 8K BASIC $500 Purchasers of an Allair 8800, 8K of Altair Memory, and Altair Serial I/O or Audio-Casselle I/O ONLY $75 Allair EXTENDED BASIC $750 Purchasers of an Allair 8800, 12K of Allair Memory, and Allair Serial I/O or Audio-Casselle I/O ONLY $150 Allair PACKAGE ONE (assembler, text editor, syslem monitor) Purchasers of an Altair 8800, 8K of Allair Memory, and Allair I/O ONLY $30 NOTE: When ordering software, specify paper tape or cassette tape. Warranty: 90 days on parts for kits and 90 days on parts and labor for assembled units. Prices, specifications, and delivery subiect lo change. MAIL THIS COUPON TODAY! D [inclosed is chock for S □ BankAmericard n □ or Master Charge # □ Altair B800 □ Kit D Assembled □ Options Include $8 for postage & handling □ Altair Users Croup Associate D Please send free literature NAME ADDRESS C I TV (list on separate sheet) DSoftware Documentation .STATE & ZIP. MITS/6328 Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1951 Creative Electronics MITS/6328 Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1951 7400N TTL SN74Q0N SN7401N SN7402N SN7403N SN7404N SN74QSN SN7406N SN740/N SN7408N SN7409N SN74I0N SN74UN SN7412N SN74I3N SN74I4N SN741UN SN7417N SN74IHN SN7420N SN7421N SN7423N SN74ZSN SN742GN SN74?7N SN7429N SN7430N SN7437N SN7437N SN7438N SN7439A SN7440N SN7441N SN7442N SN7443N SN7444N SN7445N SN744GN SN7447N SN744BN SN745UN SN7451N SN7453N SN7454N SN7459A SN7460N SN7470N SN7472N SN7473N SN7474N SN7475N SN7476N SN7480N SN7482N I SN74B3N 1 SN7485N 1 SN748GN SN7488N 3 SN7489N 3 SN7490N SN7431N 1 SN7492N SN7493N SN7494N SN7495N SN7496N SN7410QN 1 SN74107N SN74I2IN SN74I22N SN74I23N 1 SN74125N SN74I26N SN74132N 3 SN74141N I SN74142N E SN74143N 1 SN74M4N 1 SN74145N 1 SN741A8N 3 SN74150N ' ounl for 100 C SN74I51N SN74153N SN74154fl SN74155N SN74156N SN74157N SN74160N SN741EIN SN741G3N SN741G4N SN74165N SN741GGN SN741G7N SN74 170N SNJ4172N SN74 173N KN74174N SN74175N SN74I7GN SN74 177N SN74180N SN74181N SN74182N SN74184N SN74 18SN SN741B7N SN74190N SN74I9IN SN74192N SN74193N SN74194N SN74 195N SN74 19GN SN74197N SN74I9BN SN74 193N SN7420GN SN74251N SN74284N SN74?BhN t 7400s crnooo CO4O0I CD4002 CD4Q0G CD4007 CD4CI0fl CO401O CD4011 CD40I? CD40I3 CO4016 CD40I7 CD40I9 CD402n CO4022 CD4023 C 04 024 CD4025 CD4027 CD4028 CD4029 CMOS 2.50 .29 2.90 CD4030 CD4035 CD4040 C04042 CD4044 GD4046 CD4047 CD4049 CD4050 CD4051 CD4Q53 CD4060 CO4066 CD40B9 CD4071 CD4D81 74C00N 74C02N 74C04N 74C10N 74G20N 74C30N 74C42N 74C73N 74C74 74C90N 74C95N 74C107N 74C15I 74CI54 74C157 74C160 74C161 74CIG3 74C1G4 74C173 74C193 '4C195 B0C97 15 00 2 50 3.75 LM100H LMIOGH LMI7IH LM212H LM300H LM3QIH LM30JCN 3. 1 LM302H LM3Q4H 1 LM305H LM307CN LM308H I LM308CN 1 LM309H 1 LM309K 1 LM3I0CN 1 LM311H LM3HN LM31BCN 1 LM319N 1 LM319D LM320K 5 LM320K 5.2 1.35 LM320K 12 1.35 LM320K I LM323K-5 LM324N 1.80 LM339N 1.70 LM340K-5 1.95 LM340K 12 1.95 LM340K 15 1.95 LM340K 24 1 95 LM340To5 1.75 LM340Ta6 1.75 LM340Tot21.75 LM340Tu 151.75 lM340To24 1.75 LM350N 1.00 LM35ICN 65 LM370N 1.19 LM370H 1 15 900 14,00 LINEAR LM373N 325 LM377N 4.00 LM380N 139 LM380CN 105 LM381N I 79 LM382N I 79 NE501K BOO NE5I0A G.00 NE531H 3.00 NE53GT 6.00 NE540L 6.00 NE550N .79 NE553 2 50 NE555V 75 NE5G5H 1.25 NE565N 1.95 NE566CN 1.95 NE567H 1-25 NE567V 1.95 LM703CN 45 LM709H 29 LM709N .29 LM710N 79 LM711N 39 IM723N .55 LM723H 55 LM733N 1.00 LM739N 1.29 LM741CH 3 I 00 LM741CN 3 1.00 LM74I 14N .39 LM747H .79 LM747N .79 LM748H .39 LM748N .39 LM1303N .90 LM1304N 1.19 LMI305N 1.40 LMI307N 85 LM1310N 2.9 LMI351N 1G LM1414N 1.7 LM145BC ,E LM149GN 9 LM155GV 18 LM2111N 1.9 LM2901N 2 9 LM3065N .fi LM3300N 5 LM3905N E LM5556N 1 8 MC5558V | 0 LM7525N 9 LM7528N 22 LM7534N 2 2 LM7535N 1 2 8038 B 4.9 LM75450 .4 7S451CN .3 75452CN ] 75453CN 3 75454CN 3 7549ICN .7 75492CN 8 75494CN 8 RCA LINEAR CA3013 1.7 CA3023 2.1 CA3035 2.2 CA3039 13 CA304G 1 1 CA3059 2.4 CA30GO 2.8 C A3 080 8 CA30B3 1 6 CA3086 .5 CA3089 3 2 CA3091 8.2 CA3123 18 CA3G00 1.7 MICROPROCESSOR COMPONENTS $29.35 8111 1024 RAM $12.95 7489 8599 1101 2102 8101 7010 IK NMOS RAM 2107 4K HAM Vacioi 149.95 1702A 2K PROM 64B RAM ri-State 7489 25GB RAM IK RAM 1024 RAM 2.95 3.50 2.25 4.95 11.95 52030 2KPR0M 8223 PROM 2401 2KSR 2533 1KSSR AY-51013 UAHT Retains data w/o Power 19.95 3.00 9.95 11.BS 7.95 450NS Access lime-22 p DIP General Purpose Logic CARD High Noisa Immunity 'Holds 12 ea. 14 pin DIPS n Edge Connection THE KILOBYTE RAM CARD 'Complete 1Kx8 Memory * High Noise Immu 'Single 5v supply '500NS Access Time SKit i Board Per Kit 69.95 iiiy Components icludes sockets, ICS 8. FREE With each $75 order ot Microprocessor components, S12.00 get a one year subscription to BYTE (he magazine lor Value computer PHREAKS FREE FBEE FREE 8000 SERIES 8223 8230 8263 82S7 ■3 0D 2.59 8820 S82G 8200 8210 8214 8220 DIGITAL COUNTER UNIT 4 Each - Man? Displays * * 10000 Counter 'Complete with Board . . ♦ DIGITAL VOLTMETER KIT 0-2 Volt, Auto Polarity 3K digits (MAN7) OVM M0S-LSI Design Size: 2%"x 2%" x K" $39.95 TTL Logic Probe Kit ^- — ^*-^ Detects TTL levels, ^S^ld^H^ pulses, with man 3 readout j S9.95 per kit DVP.l Chip Set Siliconix LDII0 Digilal A/D Processor 16.00 s7fl00Sp, mill Analog A/D Processor 13.00 DM8890N Complete Horiz.A/ert. Divider Chain for T.V. Type, Appl. 1.95 Each 4' POWER SUPPLY CORDS . Black 59« ea. THUMBWHEEL SWITCHES NEW PROTO BOARD IU0 Here's a low ci«t,li.B 10 IC caoacny lireailbaaid I.11 wilh all the quality 1)1 QT Sockets and Hie best nl (he Proto- Bnard series rninpletc down lo I lie last nut. bolt and screw. Includes 2 0T 35S Sockets. I OT-35B Bus Strip. 2 5 wav binding posts: 4 rubbei leet. nrnn, nuts, bolts, and easv assembly POCKET CALCULATOR KIT ilunc nplu: mt~ addressable muniury with iniiividual recall - 8 digit display plus overflow - bait saver - uses standard or rechargeable batteries - all necessary parts in ready lo assemble form - instruction included. 3" x 51/." OPTIONS- 115V AC Translormer . . G each "N" Alkaline BatteriE .394" DIAM. TRIMMER W STANDARD RESISTANCE VALUEI MODEL 1X11 WCtl IK Modal ran ""JEn"' .-. iD-» STDlOOfi .36 .30 ,'*&£.'/16 VECTOR BOARD r-g&Tg^- o*skm .. WALL or T.V. DIGITAL CLOCK 12 or 24 Hour 25' VIEWINC, DISTANCE Walnut Case G" i 3" : Hi St Mm IT High Seeomb-3" Higb KIT ftllComp A Case S39.95 Wiipl1& Asseiulilcd 115 Vac S44.95 CA MAN 1 MAN 2 MAN 3 MAN 4 MAN 7 DL33 DL747 DISPLAY LEDS Com. Ano. 5x7 Matrix Com. Caih. Com. Caih. Com. Ano. Com. Cath. Com. Ano. DISCRETE LEDS 1.95 2.50 MV 10 MV 50 MV 5024 MV 502-1 MV 6024 MV £024 6 /SI 00 G/Sl 00 5;S1.00 \ IGn.n 18 pm 22 pin 14 pin IE pin 18 put 24 pm ICSOLDERTAIL - LOW PROFILE (TIN) SOCKETS 2548 50 100 I 2-1 SOLDERTAIL STANDARD (TIN) ?8 2G 28 pm ! SOLDERTAIL STANDARD (GOLD) WIRE WRAP SOCKETS (GOLD) LEVEL .3 50 PCS. RESISTOR ASSORTMENTS $1.75 PER ASST. ID OHM 12 OHM 15 OHM 18 OHM 22 OHM 27 OHM 33 OHM 39 OHM 47 OHM 5G0HM G8 OHM 82 OHM 10U OHM 120 OHM 150 OHM 180 OHM 720 OHM270 OHM 330 OHM 390 OHM 470 OHM 560 OHM Gflu OHM 870 OHM I ?K 1 5K 1 BK 2.2K TOOK 270K IK 27K 6.8K 1/flWATT S%~- 50 PCS. 1/4 WATT 5%= 50 PCS. 1/4 WATT SK* 50 PCS. 1/4 WATT 5% = 50 PCS. 1/4 WATT B%= 50 PCS. l/fl WATT 5% = 5D PCS. IrtWAiTBS* 50 Pes. PRIME INTEGRATED flSS, 8 CIRCUIT ASSORTMENTS "SST ' ASST 1 SSI. TTL 1175 74IBD N19I MI93 Satisfaction Guaranteed. $5.00 Min. Order. U.S. Funds. California Residents — Add 6% Sales Tax Write for FREE 1975S Catalog — Data Sheets .25* each P.O. BOX 822, BELMONT, CA. 94002 PHONE ORDERS - (415) 592-8097 ICS [E2£/^Lr3 KITS FUNCTION GENERATOR KIT luUJtMsmt, XR-2206K '"*••>' "'ii IMctiON nfHfmicti my squarevvave. THO 0.5ft tW.; AM'rM cjiiabili XH2206KA $19.95 Includes monolithic funclion generator IC. PC board, and asseinlilv instruclion manual. XH2206KB $29.95 Same as XR 2206KA abowe and includes external components lot PC board TIMERS XR555CP XR320P XR-55GCP Monolithic Timer Precision Timer Dual-555 Timet XR-255GCP Dual Timing Circuit XR 2200CP Programmable CoonrerTimer PHASE LOCKED LOOPS XR-210 FSK Demotlulalor XR2I5 High Fieqtiency PLL XR567CP Tone Dccodei (mini DIP) XR-567CT Tone Decoder IT0-5) STEREO DECODERS XRI310P PLLSleieoDecodei XR-1310EP PLL Stereo Decoder XR1SO0P PLL Stereo Decode. WAVEFORM GENERATORS XR-205 Waveform Generator XR 22D6CP Monolithic Funclion Generator XR 2207CP Voltage Conltolled Oscillator OTHER EXAR ICS XR I468CN Dual i 15V Tracking Regutatot XR I488N Quad Line Orn/er XR 1489AN Quad Lute Receiver XR 2208CP Opsrational Multiplier XR-2211 CP FSK DemodulatorTTone Decoder XR-2261 Monolithic Proportional Servo IC System w/4 ea. Oliver Transistoi S 1. 10 155 5.20 6.60 i.95 I.JO 3.20 320 3.20 840 5.50 3.85 3.85 5.80 4 80 5.20 6.70. ♦ Special Requested Items* HC-1'194 QmiTuck V Req SS.Sb HC-1195 ' IS. PiLtk Bfg 3 35 MCI Ml HirjhSiUrt Qo Amu i 0U MCJDJrlr1 4SD CA313D Super CMOS OnAmn I J9 4114 10 3rtPNP 1 H 4DSH JrtNPrj i is {Zcnerl TYPE VOLTS IN74G 3.3 IN7S1A 5.1 \Ulh2 5.6 IN753 G.2 IN754 0.8 IN96SB 15 IN5232 5.6 IN5234 6.2 IN5235 G.8 IN5236 7.5 IN456 25 IN458 150 IN485A 180 iNiani 50piv IN400? 100 PtV 400m 400m 400m 400m MODES PRICE TYPE 4-1.00 IN4003 4 1 00 IM4004 4/1.00 IN3600 4/1.00 IN4148 4/1.00 IN4154 1T0D IN4734 .28 IN4735 28 IN473G IN4738 IN4742 IN4744 IN11S3 (RKiliierl VOLTS W 200 PIV I AMP 400 PIV 1 AMP 50 200m 6/1.00 6.1. 00 5/1.00 10m lw IN11B4 INII8G IN 1188 50 PIV 35 AMP 100 PIV 35 AMP 200 PIV 35 AMP 400 PIV 35 AMP TRANSISTORS MPSA05 2N918 2N2219A 2N2221 2N2222A 2N23G9 ZNZ3B9A 2N2484 5/S1 25 2N2906A 3 SI 2N2907A 2N3053 5 SI 2N3055 5 St 2N3725A 4/S1 2N3903 4'S1 2N3904 i 3 SI 2N2907A TT i SI 2N3053 j 5 SI 2N3Q55 II 5 SI 2N3725A I 2N3905 4/Sl 2M3906 5 SI PN4249 2 SI PN4250 95 2N4409 2 SI 2N5129 5,'Sl 2N5139 4 SI C1068I SCR « 22 pi 47 pi 100 pi 220 Dl 470 pi .OOlmt .0022 ,0047mf .01ml .15 35V .22 35V 33 35V 47 35V . .68 35V . 1 0 35V CAPACITOR CORNER 50 VOLT CERAMIC DISC CAPACITORS 100 VOLT MYLAR FILM CAPACITORS .10 .07 .022ml .13 11 .0 .10 .07 ,047ml .21 17 .1 .10 ,07 1ml .27 .23 .1 ,10 .07 .22ml .33 .27 .! K DIPPED TANTALUMS (SOLID) CAPACITOHS .23 17 15 35V 30 26 23 17 2.2 25V 31 27 .23 17 3.3 25V 31 27 .23 17 4.7 25V 32 28 23 17 68 25V .36 31 23 17 10 25V 40 35 23 17 15 25V 63 50 URE ALUMINUM ELECTROLYTIC CAPACITORS 15 13 10 33 29 27 24 20 18 ALTAIR 8800 USERS ! Did you know... • That all our modules are 1 00% compatible with the Altair 8800 computer, NO modifications necessary! • That our 4KRA Static Read/Write Memory module doesn't have to lose it's data when you pull the plug! • That our 3P+S Input/Output module will fully interface two TV Typewriters with keyboards and a modem or teletype at the same time! • That we make the most powerful alphanumeric Video Display module anywhere! •That our software is FREE, or close to it! • That all our modules are truly high quality, computer grade, but that our prices are the lowest in the industry! • That we have already shipped hundreds of modules on time, and we will continue to deliver what we promise, FAST! CHECK THE SPECS: 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 IC 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 MILSTD-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. The 2KRO 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 S25. 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 the 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, Available now. VDM-1 Video Display Module This module is the first real computer terminal display in kit form. Under software control the VDM-1 displays sixteen 64 character lines to any standard video monitor. Characters are produced in a 7x9 dot matrix, with a full 128 character set, upper and lower case plus control characters. Data is accessed by the VDM as a block from any 1K segment within the 65K address range of the 8800 computer. Multiple cursors are completely controlled by software and the display can begin anywhere on the screen (this is great for many video games). When the last line is filled the display scrolls up a line. Powerful editing capabilities are provided with the FREE software package included in every VDM-1 kit. Available in September '75. SOFTWARE Our Assembler, Text Editor and System Executive is being shipped now. This software package gives you very powerful Assembly Language capability in the Altair 8800. The Executive and Editor allow you to call programs by name (including BASIC) and then add, delete, change, or list programs by line number. The Assembler provides a formatted symbolic mnemonic listing as well as octal or binary object code from Assembly Language programs written using the Editor. The Assembler also gives valuable error messages to help in debugging those inevitable errors. The Assembler, Editor, Executive Package No. 1 will be available in read only memory along with an expanded Executive and a powerful Interpretive Simulator by October or November of 1975. We are working on two BASIC Language packages which should be ready by October. One will be a basic BASIC needing about 8K of memory as a minimum and the other will be an Extended version with additional string manipulation, matrix operations and double precision arithmetic capabilities requiring about 12K. Both these packages will be available in Read Only Memory for a reasonable price. PRICE LIST Item Kit A ssembled Delivery 2KRO EPROM module $ 50. S 75. 2 weeks ARO 3P+S I/O module 125. 165. 3 weeks ARO 4KRA-2 RAM module w/2048 8-bit words 135. 185. 2 weeks ARO 4KRA-4w/4096 8-bit words of RAM 215. 280. 2 weeks ARO RAM only, AMD91L02A 500n sec low power 8/S40 - 2 weeks ARO MB-1 Mother Board 35. - 2 weeks ARO VDM-1 Video Display m odule 160. 225. Sept. 29, '75 then 3 weeks ARO Send for our FREE fly er for more complete specifications and for pricing on additional items. TERMS: All items postpaid if full payment accompanies order. COD orders must include 25% deposit. MasterCharge gladly accepted, but please send us an order with your signature on it. DISCOUNTS: Orders over $375 may subtract 5%; orders over S600 may subtract 10%. E Processor Technology 2465 Fourth Street w Berkeley, Ca. 94710 wis) 549-0857 Memory Dumps «. Boards supplied separately @ $2.50 per digit. L I N E A R S NE555 Precision timer 90 NE560 Phase lock loop DIP 2.95 NE561 Phase lock loop DIP 3.00 NE565 Phase lock loop 2.95 NE566 Function generator T0-5 3.50 NE567 Tone decoder T0-5 3.50 709 Popular Op Amp DIP 40 710 Voltage comparator DIP 60 711 Dual comparator DIP 45 723 Precision voltage regulator DIP 1.00 741 Op amp T0-5/MINI DIP 45 748 Op Amp T0-5 80 CA3018 2 Isolated transistors and a Darling- ton-connected transistor pair 1.00 CA3045 5 NPN transistor array 1.00 LM100 Positive DC regulator T0-5 1.00 LM105 Voltage regulator 1.25 LM302 Op Amp voltage follower TO-5 1.25 LM308 Op Amp TO-5 2.00 LM309H 5V 200 MA power supply T0-5 1.00 LM309K 5V 1A power supply module T0-3 1.00 LM311 Comparator Mini 1.75 LM370 AGC amplifier 1.7 5 LM380 2-Watt Audio Amp 1.75 LM1595 4-Quadrant multiplier 1.70 MC1536T Op Amp 1 .35 n. *&w ': a Jk* hjuJ^brtM. (Pen C LETTERS "Amateur radio is a natural for the computer hobbyist." A TALE OF TWO HOBBIES Enclosed is $10 to cover my charter subscription to BYTE. 1 read about the magazine in yesterday's issue of HR Report. I think that it is a great idea! It fills a need that has been created by the recent boom in the computer hobby area. I am a ham radio operator (WB6ASR) and very interested in interfacing this hobby with computers. Since BYTE is going to be published by 73 it will be a perfect magazine for those who share my interest in these two hobbies. I hope to see many articles relating to this subject. First off I would like to see BYTE Magazine lead the fight with the FCC to allow ASCII to be used in amateur radio along with (or instead of) baudot. This is a basic step that has to be achieved in order to easily interface the two. Amateur radio is a natural for the computer hobbyist. I can see a network of computers tied together by repeaters. The group I am affiliated with (AMT, W6AMT, Box 1, Montebello CA 90640) is very interested in just that. For any help or information BYTE may like along these lines, feel free to contact us. I would also like BYTE to cover all areas of computers. Software: We should have a library of programs for free exchange among subscribers. Hardware: The more common computers that are in the hands of hobbyists should receive consideration [all DEC computers (including the new mi c r o- p r o c e ss o rs and micro-computers such as PDP-8A and LSI-1 1), the 8080 family, Altair, etc]. Peripheral: Terminals — what are the best ones for the lowest cost such as Decwritter II, floppy discs, tape — Dectape, paper, cassette. Gregory D. Campbell Montebello CA Thank you for your thoughts, Greg. We'll be trying hard to fill the bill for the home brew computer area and its interface to amateur radio - this new field of computers in the home is going to be big. We're in the same stage relative to c o m p u t i n g that transportation was at the turn of the present century - thousands of experimenters working on the applications and engineering of products which can eventually be mass produced . . . just as no one could imagine the eventual impact of automotive technology, the next half centry in small computer applications should be just as interesting. Why, in only that single area of amateur radio interfaces, the applications are wide and varied: digital remote control stations, the repeater networks you mention, digital station logs, automated ham rigs, packet switching communications nets which will expand upon the old amateur radio telegram network concept, program exchange frequencies for computer- hams to get together upon; ASCII RTTY communica- tions with intelligent transmitter/receiver rigs to send messages along with error correcting codes. . . . CARL THE DEADLY GRAPEVINE STRIKES AGAIN BYTE people: Please find enclosed my personal check for $10 to cover a first year subscription to BYTE. I would also like to make a few comments regarding your apparent " 'computer freak' only" editorial policy. Amateur radio today is one of the highest technology avocations to be organized worldwide. It is perhaps the hobby with the most political clout as well. Fraternal attitudes have traditionally led to cooperative technology development in amateur radio. The possibilities of time-sharing VHF-UHF repeaters, packet-switched worldwide traffic/data communication networks, or even the digital uses of the OSCAR satellites seem logically to preclude exclusion of amateur radio from BYTE. Encourage hams to become hackers, and hackers to get their licenses. The whole is too much greater than the sum of its parts to divide them at birth. While I am on my soapbox, there are some thoughts about what I would like to see from BYTE. How about contests between various game programs (bet my checker program can beat your checker program . . .)? Standardization on a global (met a) language for the descriptions of programs and algorithms? For fun it might be nice to have a mathematical games column 87 "Looking backward I'm kinda glad it didn't function properly when first plugged in. Otherwise, 1 would never have learned what certain circuits are doing, why they are doing it, and how they are doing it." (like Scientific American but hobby oriented). Also, a punched tape service for the dissemination of programs and other data would be popular. As the only (big) publication in the field (hmmm . . .) I hope that there is made some form of guidelines for the storage, format and medium of information. You could have "BYTE my ass" T shirts, "BYTE by BYTE" programming aids and booklets, pocket guides for innumerable things. You have really stumbled onto a whole new hobby at its birth (adolescence?). This letter has really tired me out. Thanks for BYTE. George Henry Flammer III Stanford CA PS: I was supposed to mention here something about a "life" membership or subscription. So I will. Ami going to hang myself in a grapevine? This is probably the first magazine ever to get editorial criticism, before a single issue is printed! (I'll qualify that: it's my first magazine...) The points are well taken. Examine the first issue and you'll find a breadth of articles ranging from games to hardware — and we even have a $99 introductory special on "Life Time Subscription ..." . . . CARL NUTS AND GUTS Happy to hear about BYTE being initiated. If it is in the tradition of 73, you got one perennial subscription. Since I'm not a ham buff, I only occasionally look at an issue of 73, but am impressed with their content and format. They haven't been afraid to provide articles that cost more than 15 bucks and have a detailed discussion of the circuit which until recently has been my complaint with PE, RE, etc. I remember back in '63 when I worked for the now defunct Electronics Illustrated magazine that the policy was tenth grade level and under $10, and how can we squeeze the articles between the ads. Anyway, maybe in the near future, I can get something together to submit to BYTE. Right now I'm trying to figure out why my EXAM/DEP NEXT won't work right on Altair. I had a hell of a lot of bugs in the unit until I got rid of the Molex Soldercons. An aside, a technique for plated thru holes filled with solder: Drilling out is not necessary, which ruins the hole plating and requires soldering on both sides of the board. After removing the Soldercon pins, I used round toothpicks which I pushed thru the hole while holding the iron to the soldered side. Philosophically, computer hobbyists must be nuts or have a lot of guts, if I'm any indication. Here I buy a sophisticated piece of equipment only knowing vaguely how logic works, with a 40-hr course in FORTRAN, a VOM and an ill-adjusted 1 5-year scope; yet, I plunge head-long into a vast unknown. Which brings up another want in future articles or at least my preference. I seem to prefer seeing timing diagrams along with circuit descriptions. At least this is what I found out when I analyzed my basic Altair to de-bug it. The Altair manual assumes "it'll work" right off or "if not, give us a call." So, my resort was to take each circuit function and write myself a description about it with logic equations, timing diagrams and everything I could remember from a course three years ago about logic design (which I incidentally took as a hobby interest to learn how those infernal machines functioned). Looking backward I'm kinda glad it didn't function properly when first plugged in. Otherwise, I would never have learned what certain circuits are doing, why they are doing it, and how they are doing it. Now back to that damn EXAM/DEP NEXT circuit. Bill Fuller Grand Prairie TX PS: Just got my copy of PCC May issue. Seems that others have had problems with the EXAM/DEP NEXT mono m/v in Altair. Anyway, with all my self-inflicted problems with the unit and some of theirs, I'm not disappointed in the unit considering the price of the 8080 chip was $360 at the time I went Altair; with their new price and the 8080 at $175 now, I might not go it. But as Baba Ram Dass says, "Do it now." Thanks, Bill. Sounds like you have all the prerequisites needed for the home brew computer hobby — curiosity and initiative. The VOM and scope certainly help, as well as the course in FORTRAN. But the really important prerequisite is the desire to know how computing machinery and logic work. The art of computing is what BYTE is all about translated into a personal use context. This art has come a long way since Napier's Bones, Babbage's engines, and Boole 's formal logic . . . and it will go a long way in the future as well - through extensions of present technology and new ways of solving problems. . . . CARL 88 five new breadboard testers from Continental Specialties Corp. offers a total line of breadboard test devices . . . everything from inexpensive kits to high-power professional units and logic monitors too. Each high quality, compact unit comes with a guarantee of complete satisfaction or your money back within 10 days. Here are but five of the "hottest" items we make.*. Power for the Professional! New Proto Boards PB-203 and PB-203A with built-in regulated short-proof power supplies! Ready-to-use. Just plug in and start building! 2 extra floating 5-way binding posts for external signals (PB-203 only). Completely self-contained with power switch, indicator lamp and power fuse. 24 14-pin DIP capacity. All metal construction... no chipping or cracking as with plastic cases. Two-tone quality case makes both PB-203 and PB-203A aesthetically, as well as technically attractive. PB-203 • 3 QT-59S Sockets • 4 QT-59B Bus Strips • 1 QT-47B Bus Strip • Fuse • Power Switch • Power-On Light • 9.75"L X 6.6"W x 3.25"H • Weight: 5 lbs. • 5V, 1 AMP regulated power supply 75. Add $2.50 shipping/handling OUTPUT SPECIFICATIONS Output Voltage SV ± y4v Ripple & Noise @ Vz AMP 10 millivolts Load Regulation Better than 1 % PB-203A • 3 QT-59S Sockets • 4 QT-59B Bus Strips • 1 QT-47B Bus Strip • Fuse • Power Switch • Power-On Light • 9.75"L X 6.6"W X 3.25"H • Weight: 5 lbs. • 5V, 1 AMP regulated power supply (same as PB-203) • +15V, y2 AMP regulated power supply • -15V, Vi AMP regulated power supply 120. Add $2.50 shipping/handling OUTPUT SPECIFICATIONS Output Voltage 15V, internally adjustable Ripple A Noise @ Vi AMP, 10 millivolts Load Regulation Better than 1 % Continental Specialties Corp. LOGIC MONITOR brings ICs to life faster than a scope . . safer than a voltmeter LM-1 Q/95 OH- each Add $2.50 shipping/handling Self-contained, pocket size. No adjustments or calibrations needed. life into digital designs. Just clip to any DIP IC up to 16 pins. NO POWER SUPPLY NEEDED! Simultaneously displays static and dynamic logic states of DTL, TTL, HTL or CMOS on 16 large high Intensity LEDs. Watch signals work through counters, shift registers, timers, adders, flip flops, decoders, entire systems. Concentrate on signal flow and input/output truth tables. Forget probe grounds, pin counting or sync polarity. Precision plastic guides and flexible plastic web* insure positive connections. Versatile. Fast. Accurate. Indispensable. Order yours today! PROTO BOARD 100 A complete mini- breadboard budget kit with full IC capacity Add $1.50 shipping/handling The PB-100 is a low cost, big 10 IC capacity breadboard kit, complete down to the last nut, bolt and screw. Includes 2 QT-35S Sockets; 1 QT-35B Bus Strip; 2 5-way binding posts; 4 rubber feet; screws and easy assembly instructions. 4.50" (114.3mm) wide x 6.00" (152.4mm) long x 1.35" (34.3mm) high. Order your PB-100 kit! Start building and testing now! 5EPR0T0-CLIP offers power-on . hands-off signal tracing . . . under $5! Trace signals or troubleshoot fast. Inject signals or wire unused circuits into existing boards. Flexible plastic web" construction eliminates springs and pivots. Plus, the narrow throat is perfect for high density pc boards. Order now! PC-14 14-pin Proto-Cllp: $4.50 ea. PC-16 16-pln Proto-Cllp: $4.75 ea. Add $1.00 shipping and handling Scope probes, test leads lock onto unique toothed grips .?*'■ I i COPYRIGHT CONTINENTAL SPECIALTIES CORPORATION 1975 All Continental Specialties breadboard test devices are made in the USA, and are available off-the-shelf from your local distributor or CSC. Direct purchases may be charged on BankAmericard, Master Charge or American Express. 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. Write or phone for complete illustrated catalog, plus the name and address of the CSC dealer nearest you. "Patents Pending ■B CONTINENTAL SPECIALTIES CORP. 44 Kendall St., Box 1942, New Haven, CT 06509 • 203/624-3103 West Coast Office: Box 7809, San Francisco, CA 94119 • 415/383-4207 CANADA: Available thru Len Finkler Ltd., Ontario Byter's Digest A Quick Kluge for Fastening Wire Wrap Sockets to Perforated Board: -WIRE WRAP PINS OF SOCKET If you want to wrap up a quick project, it is often handy to use perforated board (eg: Vector "P" pattern VECTORBOARD) to mount wire wrap sockets. I have used many methods for attaching boards — rivets, bolts, epoxy glue, cyanoacrylic glue, etc. One method which I dreamed up the other day to solve the mounting problem for a small test jig may prove useful to you at some point. Simply put the socket through the perforated board, then solder each corner pin with a "U" shaped retainer made of bus VECTOR P PATTERN OR EQUIVALENT WIRE WRAP SOCKET EACH CORNER PIN OF SOCKET HAS "U" OF BUS WIRE SOLDER IN PLACE AS RETAINER Using retainers to anchor wire wrap sockets. wire (e.g. about 14 to 18 gauge.) The result is a strong mechanical placement. When you solder on the retainer, use solder sparingly and employ a soldering iron with a narrow tip — of about 25 Watt capacity. Try to keep the solder as low on the pin as possible. When you wrap the circuit begin the first level of wraps higher up on the pins with retainers, to avoid the solder near the fastening. CARL A Note For Altair 8800 Users A copy of an advertising sheet was sent to me by Gordon French of Menlo Park, California, describing a set of 8800-compatible interface and memory cards. The advertising sheet for Processor Technology Co., 2465 Fourth Street, Berkeley CA 94710, mentions the following items: 1 . 4k Memory Board Kit with optional 1k ($85), 2k ($125) or 4k ($225) variations. 2. PROM Card Kit for Intel 1702A or National 5203 ultra-violet erasable PROM's, comes with address decode but not PROM's (you'll need a programmer and PROM chips) at $45. 3. I/O Board Kit providing both parallel and serial interfaces to the "real world." A UART is used for the serial interface optionally under program control, with selectable baud rates, choice of four EIA plus TTY and TTL serial interfaces ($125). The ad sheet said delivery begins June 1. If you're interested, I suggest you write these people to find out further details. Electronic News (June 9, 1975) reports in an article by Paul Plansky the announcement of a 12-bit PDP-8 compatible CMOS processor chip to be produced by Intersil. This sounds like a great idea for the home brew computer market — but not for a while. The "hardware starter kit" is reported to cost $3050 for a set of three boards. The boards include a memory board with 4k words, a CPU board with TTY interface, and a control panel board. The primary advantage outside of PDP-8 software compatibility is the CMOS nature of the product — the entire computer (all three boards) is quoted at a 2 mW requirement. (How this number is compatible with a TTY current loop output is not clear — but it is reasonable for the CMOS part alone.) This computer is not yet in a position where it can be used by the home brew computer market — but the idea of a PDP-8 (or PDP-11) compatible home brew machine is quite attractive due to the large amount of "public domain" software available for these machines. James Fry's Prototyping Board James Fry, PO Box 6585, Toledo OH 43612, sends along the layout of a general purpose prototyping board designed to mate with the connectors of the original TVT-1 TV Typewriter design of Don Lancaster. Jim has used his board in the process of modifying the design to mate with his 8008 system. The holes at the edge of the board allow for additional input and output connections plus the mounting of the Molex pin and socket combinations needed to extend the stack of TVT-1 boards by an additional layer. Jim will provide copies of this board undrilled for $6 postpaid, or you can take the idea and lay out your own version for contact printing and home fabrication. sifiiiiiiii tiitiiini iiiiiiiiii m iiiiiiiiiiiiii ! Illlllllllllllllllllllllllllllllllllllllllllllll .= liiTririirriTiIIr 90 ^P We've got a bunch of these fantastic video display terminals . . . and we've got a little problem. We promised Sanders Associates that we would sell them as scrap. A couple of wires disconnected makes them scrap, right? These VDTs should be great for SSTV, for a GW/RTTY keyer terminal, an oscilloscope, weather satellite monitor, or even a computer terminal (which they were). We've tested some of these and they seem to be near-perfect. You aren't likely to find a VDT system like this for less than ten times the price ... so order several right away while we've got 'em. ! G: ASCII KEYBOARD - This is the ASCII encoded keyboard used with the SANDER'S ASSOCIATES 720 System Terminal. Plugs into the front of the chassis mounting base. Makes a very professional Video Readout Terminal combination. These keyboards are in like new condition, have interconnection data etched on the IC- Diode matrix PC board. Tliey can be readily used for any ASCII encoded requirement. Similar keyboards, when available, sell for almost two times the very low SUNTRONIX price of - $49.95. PPD ITEM F: ENCLOSURE AND BEZEL FOR 12" CRT - This is the frosting on the cake. All components A thru E fit perfectly inside this enclosure. It is hinged and can be lifted for easy access to the electronics. It will really dross up any project. Measures approx. 22 "L x 18"W x 20"H and weighs approx. 10 lbs. Made of steel with a handsome blue crackle finish. Get 'em while they last, for — SI 1.95 (inci. bezel) FOB. ITEM B: BASIC CHASSIS AND MOUNTING BASE for 12" big-screen CRT. Tube can be mounted either vertically or horizontally by rotating front plate 90 degrees. Comes with base, on-off sw. and intensity control, four controls for vert, and horiz. Has plenty of room for most any electronics needed for your pet project. All subassemblies offered will perfectly fit in spaces provided. Why try to cut the metal yourself? This chassis will let you con- centrate on the electronics instead of the melal- work!! Order now for only - SI 4.95 FOB, less CRT. ITEM A: VERTICAL AND HORIZONTAL AltiPLlFIER Subassemblies - Good for a conservative 150V/ complementary DC coupled output. Freq. resp. beyond 2.0 MHz. Parts alone worth many times the low, Sow price of - $6.95 ea., or both for $10.95 PPD I C: FOUR PC BOARDS CHOCK-FULL OF GOODIES - Two D/A converters, one IC-loaded logic board, and one multipurpose board. We have no schematic data for these boards at present. We will supply any data vsc obtain [o purchasers as we gel it. Of course ivhen we finally figure out what these boards are good for, the price will change accordingly. Take die gamble now and well provide any data we get free of charge. Buy all four boards or just one — $1.50 ea. (our choice) or all four for S5.00. PPD ITEM D: CRT HIGH VOLTAGE POWER SUPPLY - This is a real super CRT High Voltage Power supply, providing all voltages needed for any CRT. Outputs 10-14KV DC, plus 490 Vdc, minus 150 Vdc. Needs inputs of plus 5.0 VDC, plus 16.0 VDC and a drive signal of approx 8.4 kHz @ 1.0 vrms or more. All inputs/outputs via plug/jack cables and even has a socket/cable assy for the CRT. A very fine buy at only - S14.95 (incl. data) FOB 10.QA; plus 5.0VDC @ more than 2.0A, all regulated. Mounts on the rear of the Basic Chassis (Item B) Weighs approx 45 lbs and will be shipped with interconnection data for only — S19.95 FOB. PACKAGE DEAL — For the really serious experimenter we'll make a very special offer — you can buy all of the sub-assemblies listed above plus a good 12" CRT, a muffin fan for cooling. We'll supply instructions for interconnection for all subassemblies so that you can, within minutes after receiving this once-in-a-lifetime deal, put an X-Y display on the CRT. We'll also include a list of possible applications for those with short imaginations! Don't miss out on this real money-saving buy; the individual prices for the sub-assemblies add up to $127.70. You can buy the entire package for a very low package price of — $79.95 FOB. On all postpaid orders, please ADD $1.50 to cover handling costs. Orders shipped same day in most cases. «flMU GOfllWHlY 6 KING RICHARD DRIVE, LONDONDERRY, N.H. 03053 G03 -434- 4 6 4 4 91 Byter's Digest The Inventors of the Prepunched Perforated Board Have Done it Again. - .: : -\ ' l! ?;:; ::::::::::::::::: jjiiliiiiUiuI' ::::::::::::::::::::::::.::::.f Edge connector configuration on Vector 3662A-6 Plugbord reduces insertion forces by 2-1 12 lbs. The Vector Electronic Co., Inc., announces a new variant on a traditional theme — the idea of a printed circuit edge connector with a lower- insertion force due to a unique design. Special W-shaped cut on the printed circuit board edge connector reduces insertion forces by two to eight pounds, depending on the type of receptacle and the number of contacts. First used on Vector Electronic Company's new Model 3662A-6 board, the "W" cut consists of a slight inwardly tapering chamfer across the face of the card edge which allows the board to be inserted with a gradually increasing force instead of the conventional high peak pressures. In addition, the two outside ground terminals engage first and disengage last to protect circuits if the board is inserted or removed with the power on. According to the press release this technique will be used on all new Plugbords manufactured by Vector. Vector cites tests on 22/44 edge connectors with terminals on 0.1 in. centers which indicate that average insertion force with the "W" cut is 9 lbs. compared to 11 lbs. with a conventional straight configuration. Average force on 15/30 connectors with 0.156 in. centers drops from 1 3 lbs. to 6.5 lbs. Similarly, average insertion force on 22/44 connectors with 0.156 in. spacing is reduced from 16.5 lbs. to 14 lbs., while the pressure on 36/72 connectors with 0.10 in. spacing declines from 31 lbs. to 23 lbs. With- drawal forces are unchanged by the new technique. The Vector Model 3662A-6 board illustrated has 22/44 edge contacts with 0.1 56 in. spacing. Contacts are two-oz. copper, nickel plated and gold flashed for long life and low contact resistance. Individual contacts are numbered for easy identification. The 4.5 in. by 6.5 in. by 0.0625 in. board uses a new blue-colored FR4-type epoxy laminate which meets or exceeds Ml L-P-1 3939-E GF. Prepunched 0.042 in. dia. holes are spaced on 0.1 in. centers. The top surface of the board has markers for the number one pin of 14-pin DIPs across the field and component placement indices around the board's periphery. The reverse side has a two-oz. copper ground plane with solder coating. The boards are priced at $7.55 in unit quantities with volume discounts available. Delivery is from factory stock. Vector Electronic Co., Inc., 12460 Gladstone Ave., Sy I mar C A 9 1 342. 1-213-365-9661; TWX 910-496-1539. THE BIT BUCKET is the name of a new publication now available from National Semiconductor Corporation (mailing address: COMPUTE/470, National Semiconductor Corporation, 2900 Semiconductor Drive, Santa Clara CA 95051). The Bit Bucket is a user "newsletter" supported by National, with a subscription tab of $1 5 per annum, for the purpose of exchanging info on the products National manufactures: IMPs of all kinds and the new PACE 16-bit micro. The info I got (in Volume One, Number One) includes seminar schedules, plugs for products of members of the club, a solicitation of members in COMPUTE (Club of Microprocessor Programmers, Users and Technical Experts), descriptions of an assembler and listings of the library of complimentary packages of software. If your home brew system idea is growing aPACE, you might find this publication useful . . . CARL 92 RAYTHEON KEYBOARDS From Raytheon Corp. and we were told they were made for the FAA in air traffic control computers. Appear to be unused condition. Switches are magnetic reed relay. Ascii encoded with PC board mounted under the switch board. Sorry to say but have no data with these at this time. Ship wgt. 6 lbs #SP-139 $30.00 HONEYWELL KEYBOARD A nice purchase from Honeywell of these unused keyboards with reed relay, magnetic switching. No encoder with these and they can be used in a variety of ways . . . Morse code generator, TV print out, terminal keyboard for computer work, etc. If you want an all purpose keyboard in new condition, this is it. Only about a hundred left. The price is deserving of a second look as it's a give-away. Ship wgt. 5 lbs #SP-165 $20.00 ASCII ENCODED From one of Americas largest manufacturers of keyboards. ASCII encoder mounted beneath board using ICs Picture shown is typical keyboard. There seems to be no end to customers wanting keyboards and we are lucky enough to keep coming up with more. These are clean and with all keytops in place. Ship wgt 6 lbs #SP-122 $35.00 KEYBOARDS A bargain in computer keyboards with encoder board attached. The low price is due to the fact that a few keytops may be missing. So if you can improvise, you acquire a bargain keyboard. We will furnish missing keytops though they may not have the correct letter, but you can stick any letter you want with tape. At $10 you can hardly miss. Ship wgt. 6 lbs #SP-123 $10.00 |ttnrrs'r?tl * i " ^y*rT*?,r~»~* mm mm UNIVAC KEYBOARD This keyboard with encoder (Holarith) mounted in dust proof enclosure has been one of our best movers no doubt due to its handsome desk top appearance. The encoder board is easily removed for re-working and the case is gray plastic. We have sold over a thousand of these to date and were sold out. But along came a supplier with several hundred more and we are back in business. Same price as we sold them for the last two years, no upgrading of price. Ship wgt. 6 lb #SP-124 $35.00 • • .-, , laniiBieist BisanaisQies si9iii8aeiiis Please add shipping cost on above. MESHNA P0 Bx 62 E. Lynn Mass. 01904 siie&fincz. FREE CATALOG BELLTONE PAGER Genuine "Ma Bell" belt clip radio receiver beeper. Picks up specific radio signals in 35 MHz area, encoded by internal reed encoder. Seems to be a "natural" for construction jobs, in-plant calling. An inter- esting experimental gadget. Self contained antenna, adjust- able coding by shifting wires on coding module. #SP-125 $5.00 each, 6/$25.00 93 THE COMPUTER "SYSTEM" CONCEPT A COMPUTER with a BUILT-IN CONSOLE TERMINAL from SPHERE The SPHERE 1 computer system was designed to provide an uncompromising computer system at minimal cost. Keyword . . . "System" The keyword to our design Is tne world "SYSTEM". Every phase of the design has been influenced by the "SYSTEM" philosophy. To justify the system title, a "COMPUTER" must perform an application acceptably. Re- cently the cost of peripherals and soft- ware have substantially exceeded the cost of the computer, but without them, a computer cannot perform much of anything acceptably. With the onset of the micro-processor, real design innovations have been possible, but without the system philosophy, a micro-processor can only reduce the processor cost. Peripherals, memory, and software continue to be expensive. The SPHERE 1 computer is uniquely cost effective because it utilizes real design innovations to reduce the amount of circuitry required throughout the system. The SPHERE add-on memory board will support 4, 8, 12, or 16K of dynamic random access memory (instead of four 4K memory boards and a mother board). Our power supply has been placed in a separate chassis to eliminate a common source of heat. This allows the system to run cooler and eliminates the need for an expensive fan. The system uses a standard TV for a 512 character display. The use of the TV and other common components has reduced the cost and allowed more machine versatility. Further cost reductions have been achieved by replacing the front console (lights and switches) with the TV terminal and a program in Read Only Memory (ROM) that performs the same function, only better. The Processor... A One Card Control System The CPU card is Packaged to provide all of the basic functions required by a useful system. It contains a Motorola M6800 micro-processor which is the most advanced micro-processor on the market today. The CPU Module also in- cludes 4K words of random access mem- ory which is the "minimum" required to perform useful functions. Sixteen lines of digital I/O have been provided as on option on this board. This allows the module to act as a stand-alone "system" in many instances. Further innovations have been added to enhance it's "system" capability. They are: 1)a Real-Time clock with INTERUPT capability at 31, 62, 125, 250, & 500 HZ. 2)buss lines are "high-drive" buffered to run many more peripherals. 3)the system buss is driven over flat- cables which means no mother-board is required for expansion and the system may be configured with space utilization efficiency. 4)the CPU has been provided with 1 K of Programmable Read-Only memory. This memory can contain a complete process control program for many applications. When initially delivered, it contains the PDS system which is described later. Peripherals... Floppy Disks, Line Printers, Paper Tape, Terminals.. In order to insure a full offering of high quality peripherals from the onset, we have selected manufacturers who already have peripherals which interface to our product. This philosophy has allowed us, in the case of our disk, to select already running software (namely a disk operating system) which we may offer to our users immediately. Other peripherals that are available with our system include a low cost line printer and a paper tape reader/perforator. These devices are interfaced to the system via a single interface module which also serves as a programmable digital Input/Output port. The Keyboard module includes tactile feed keyswitches, 2 key roll-over encoding, a numeric keypad and a star cursor editing keypad. The SPHERE system also supports the lowest cost terminals available today. PDS.... unparalleled The Program Development System (PDS) includes an EDITOR, and ASSEMBLER, and a debugging package. It also includes CRT display and audio cassette software drivers, plus a cassette loader and dumper. Although most computer processing occurs at the character (8 BIT) level, it is sometimes desirable to use 16 bit arithmetic so we have provided an extended instruction set in the PDS system. The extended instructions include 16 bit multiply, divide, add, subtract, etc. The instructions include input/output and binary (16 bit) to ASCII to binary conversion. PDS is entirely contained in the read-only memory of the CPU module. It rounds out the "SYSTEM" concept of our smallest systems. Basic Language FREE!! The BASIC package includes t following utility commands: APPEN CATALOG, DELETE, GET, KIL LENGTH, LIBRARY, LIST, NAM RENUMBER, RUN, SAVE, Ar< SCRATCH. The operators are: =, less tha greater than, less or equal, greater equal, not equal, AND, OR, NOT, MA MIN. The statements are: CHAIN, CO MON, DATA, Dim, EN FOR . . . NEXT, GO TO, TO ... O GOSUB, IF . . . THEN, IMAGE, INPU LET, NEXT, PRINT, PRINT USIN READ, REM, RETURN, STOP. T functions are DEF, ABS, EXP, IN LOG, RND, SQR, SIN, TAN ATN, LE SGN, TAB. Matrix operations are: DOI MAT IDN, MAT ZER, MAT CON, M/ INPUT, MAT PRINT, MAT +, MAT MAT *, =, MAT TRN, MAT INV. F processing statements are: OPEN, KIL FILES, PRINT # READ #, END #. Fl string processing is supported. This package will run in a 20 system with about 8K for user prograrr An 8K subset of our BASIC is availab with 4K available for user programs. / Sphere software is a part of tl "SYSTEM" price, and is available "SYSTEM" users for a minimal copyii fee. The FLOPPY DISK OPERATIN SYSTEM (FDOS) is supplied on : systems purchased with a disk un FDOS is an extended PROGRA DEVELOPMENT SYSTEM. It provid for named files, an extended editor, full assembler, and debugging systei This system includes a comprehensi 300 page programming manual. System Concept a Commitment The software supplied to make Sphere System a useful "SYSTEM" attractive; however, the real contribut that SPHERE offers is one commitment. The SPHERE "SYSTE concept demonstrates only the surf, of the real technological advances tl are possible when true design innovati is combined with foresight a state-of-the-art technology. ~\ SPHERE "SYSTEM" concept is tl commitment. WATCH AND SEE. OEM'S CHECK WITH US . . . WE'VE GOT COMPLETE ONE BOA CONTROL SYSTEMS FROM UNC $600 AMBITIOUS TYPES CHECK WITH US WE'VE GOT COMPLETE SYSTE STARTING AT $650. («ITS) Bank Americard and MasleiCharge accepted SPHERE CO 96 E. 5th South, Bountiful, Utah 84( $650 HOBBIEST! . 8-BIT PARALLEL COMPUTER • 4K WORDS of read/write memory i MOTOROLA 6800 MICROPROCESSOR • KEYBOARD WITH NUMERIC KEYPAD $750 INTELLIGENT!! USER PROGRAMMABLE FIRMWARE ASSEMBLER, EDITOR LOADER & EXTENDED INSTRUC- TIONS 16 LINE X 32 CHARACTER DISPLAY 23 KEY KEYBOARD BUILT IN MODEM AUDIO CASSETTE INTERFACE CASSETTES AND TV'S SHOWN FOR ILLUSTRATION ONLY INTRODUCTORY OFFER ENDS SEPTEMBER 30, 1975 96 EAST 500 SOUTH - BOUNTIFUL, UTAH - 84010 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 □ ACM CM □ AP Products CI 1 1 □ Babylon 86 □ Delta 43 □ Godbout 8, 60, 61 □ Hickok 48, 49 □ James 42,82 □ Martin Research 1 □ Meshna 93 D Micro Digital 2 D MITS CIV, 7,71, 81 □ Processor Technology 83 □ RGS 59 □ S.D. Sales 80 □ Scelbi 38,39 D Solid State 89 □ Sphere 94, 95 □ Suntronix 91 □ Wahl 70 To help the editors with a profile of the readers — what type of work do you do? Have you a microprocessor running yet? so? Messages for the editor: and which, if Reader's Service BYTE Green Publishing Inc. Peterborough NH 03458 Please print or type. Name SEPTEMBER 1975 BYTE acquired via □Subscription D Newsstand □ Stolen Address City State Zip Coupon expires in 60 days . . . How BYTE started from page 9 BYTE - make it a 24 pager. After talking the idea over with a couple of the manufacturers in the field it was obvious that we had been thinking too small. Okay, let's make it 5000 copies. The first announcement of the project was made in Hotline, an amateur radio newsletter with a very small circulation. The reaction was immediate: subscriptions began to come in at a good clip. As mailing lists came in from manufacturers and as the word spread, the first issue print run was upped to 10,000 . . . then 25,000 . . . 35,000.. .and finally 50,000 copies! As promises of ads came in there was a scramble to get enough articles to keep up with the ads. Ads are certainly of interest, but we didn't want to publish an all advertising magazine. No apologies are needed for the articles in this first issue — between Carl's contacts and mine we got things started. It would have been a lot easier if our original idea of a 1000 copy 24 page magazine (with maybe 30% ads) had come about. On the other hand, here is a great opportunity for all of you readers to get busy at your typewriter and pass along your particular area of expertise. The need for good articles is great . . . material for the rank beginners as well as the sophisticated computer designers . . . hard- ware . . . software . . . surplus conversions . . . applications. As we build a body of hobbyists, the market for reasonably priced equipment will be almost inexhaust- ible . . . microprocessors, video display units, keyboards, tape gear, discs, teletypes . . . endless list. MITS, RGS, Scelbi and Southwest Tech have a good start ... are you going to let them make all the money? Speaking of MITS et al, it didn't take me long to get one of the Altair 8800s to see what I could do with it. I'm afraid I didn't make it very far into the instruction book. I've got some more memory coming for it as well as their extended basic program and some I/O interfaces to hook onto a teletype or a VDT. 1 do have a VDT unit up and working ... the Southwest Technical job which we got in kit form and which was assembled over a weekend on a card table, with a good deal of the work being done by my 1 2 year old daughter. And, believe it or not, the unit works! We all agree that it was a lot of fun to assemble and we're glad we went the kit route ... we wouldn't have missed the fun. SWTPC sure did a fantastic job of getting that kit designed and produced. Well, that's how BYTE got started. Now it's up to you . . . you can guide the magazine with your advice . . . with your articles . . . and with your support in getting more subscribers. We'll do all we can to make the magazine accurate, have plenty of interesting ads, look nice and come out on time. None of this is easy, of course, but we're in one of the nicest areas in the country — in southern New Hampshire — working in a 220 year old colonial mansion — and we have an efficient system where everything except printing and mailing of the magazine is done under the one roof. If you happen to find yourself wandering around a bit northwest of Boston, why please drop in and say hello. We're very friendly and the atmosphere is unbelievably re- laxed . . . except near press time. . . . WAYNE GREEN 96 NEW . . . from A P Products c O o ALL-CIRCUIT EVALUATOR OBSOLETES ordinary breadboards — for fast, solderless, plug-in circuit building and testing A-C-E 2QD-K 4-9/1 by 7" V special 20% off introductory offer A-C-E $^095 2D1-K ASSEMBLE-IT-YOURSELF KIT Now you can enjoy the pleasure and convenience of checking out your circuits on an ACE from A P Products at this special low price! Just plug in and power up ... no soldering required! Incorporates the famous A P multi-tie-point plug-in feature throughout for optimum circuit design flexibility. OFFER EXPIRES SEPT. 30, 1975 No. ACE's Model Wo. Total Price Total cost of ACE's Residents of California and Ohio add sales tax Postage and Shipping 1 50 ORDER TOTAL $ ORDER TODAY AND SAVE D CASH: checkor M.a enclosed □ CHARGE: Master Charge j^ffi □ CHARGE: BankAmericard mm I— I Send r I FREE catalog Acct. No Expiration date , Send order to: ^S A P PRODUCTS U INCORPORATED Box 110-G, 72CorwinDr. Painesville, Ohio 44077 Master Charge Interbank No.: a NUMBERS OVER YCUfl NAME On all models . . . simply plug in your components and inter- connect with ordinary 22-ga. solid wire. No special patch cords required. All models will accept all DIP'S, TO-5's and discrete components with leads up to .032" diameter. Multiple buses can easily be linked for power and ground distribution, reset and clock lines, shift command, etc. ACE 200-K ... 728 tie points, holds up to 8 16-pin DIP's, two buses, two 5-way binding posts, kit form . . .$18.95 ACE 208 .. . 872 tie points, holds up to 8 16-pin DIP's, 8 buses, two 5-way binding posts, assembled . . . $28.95 ACE 201-K . . . 1032 tie points, holds up to 12 14-pin DIP's, two buses, two 5-way binding posts, kit form . . .$24.95 ACE 212 .. . 1224 tie points, holds up to 12 14-pin DIP's, 8 buses, two 5-way binding posts, assembled. . . $34.95 ACE 218 .. . 1760 tie-points, holds up to 18 14-pin DIP's, ten buses, two 5-way binding posts, assembled . $46.95 ACE 227 .. . 2712 tie points, holds up to 27 14-pin DIP's, 28 buses, four 5-way binding posts, assembled . .$59.95 ACE 236 .. . 3648 tie points, holds up to 36 14-pin DIP's, 36 buses, four 5-way binding posts, assembled . .$79.95 MATERIALS Anodized aluminum bases (also serve as ground plane); acetal copolymer dielectric; non-corrosive nickel/silver tie-point terminals; rubber bench feet. A P PRODUCTS INC. . Box 110-G • Painesville, OH 44077 / — ■s > In m rb n r-T\ n-M-.r-i L^J □ n~n MIT5 ALTAIP BQOD compLTER wmssa n uU U y /■ > 51 f \ t V N \ nfb n Lin n