APPLE II INTERFACING: HOW TO CONTROL REAL-WORLD DEVICES VIA THE GAME PORT A Summary of the 1994 ICONference Session by Erick Wagner ------------ About Myself ------------ My name is Erick Wagner. I'm an Apple II enthusiast and an electronics hobbyist. I began using Apple II computers, specifically the II+, during the Summer of 1982 while attending Texas A&M University. I purchased my own computer, an Apple IIe, towards the end of 1984 and, as a challenge, attempted to interface my Epson APL printer card with a variety of external devices (LEDs, electronic drum, etc.). I briefly experimented with an I/O peripheral card featuring the Motorola 6821 Peripheral Interface Adapter (PIA) chip and then became distracted with other interests. I did not get back into computer interfacing until the Spring of 1994, when I enrolled in a Digital Control Applications course at my local community college. A 6502-based microcomputer trainer was used, the EMMA II from L.J. Electronics, along with a 6522 Versatile Interface Adapter (VIA) chip to program its built-in I/O ports and internal timers. This motivated me to try some new things on the Apple II, including interfacing via the built-in game ports. ----------- Why Bother? ----------- Question: Why would someone want to interface a computer with a real-world device? Perhaps it is the challenge; "because it is there" -- man (sorry ladies, not trying to be disrespectful) is a curious creature and seeks to understand and master his environment. Or perhaps there is a real problem or need that needs to be solved or satisfied. In case you are having difficulties in thinking of a reason, consider the following: o Monitor the pH level in a swimming pool o Build a home control system o Build a home security system o Construct an automated weather station to measure the temperature, wind speed, and barometric pressure o Learn the fundamentals of personal robotics (controlling stepper motors and sensors) ------------------- Types of Interfaces ------------------- PARALLEL - the simultaneous transmission of information over more than one wire; usually in multiples of 4 or 8. Most modern computers provide at least an 8-bit data bus but some offer a 16-bit or 32-bit bus. The most common parallel interfaces are typically used for disk drives or printers. Some well-known examples include SCSI and the Centronics interface. SERIAL - the time-sequential transmission of information over a single wire. The most common serial interfaces are typically used for keyboards, mice, printers, and modems. Some well-known examples are the Apple Desktop Bus (ADB) and RS-232. DIGITAL - A signal consisting of a group of pulses that are either on or off; discrete values ("1" and "0") are used. ANALOG - Circuitry that varies certain properties of electricity (such as voltage, current amplitude of waves or pulses, or frequencies of waves or pulses) continuously and smoothly over a certain range, rather than switching suddenly between certain levels. Signals that do not have discrete values, but are continuously variable. GAME PORT - Provides a combination of digital inputs (push button lines PB0 through PB2 -- or PB3 if you have a IIgs), digital outputs (annunciator lines AN0 through AN3) and analog inputs (GC0 through GC3) as well as a strobe output (only for II,II+,IIe). ------------------- Choice of Computers ------------------- The Apple II series is an ideal platform for learning about computer interfacing, although other computers are also well-suited for this task. The reasons in favor of the Apple II include but are not limited to: The Apple II series has provided a wide-range of interfaces (slots [II, II+, IIe, IIgs], cassette in/out [II, II+, IIe], 16-pin game port [II, II+, IIe, IIgs], 9-pin game port [IIe, IIc, IIc+, IIgs], and serial ports [IIc, IIc+, IIgs]). Notice that a general-purpose parallel interface is conspicuously missing. Today, Apple IIs are relatively inexpensive and readily available. You can find them at swap meets, consignment stores, garage sales, auctions, and listed in classified ads. ----------------- Items to Consider ----------------- In my opinion, the best Apple IIs to use for interfacing would be the Apple IIe or the IIgs, although a II+ will work just fine. The newer machines are better equipped to run the latest system software, such as ProDOS 8, and are more likely to be compatible with today's software. The closed-architecture machines (IIc, IIc+, Laser 128) provide access to fewer game port signals and the built-in serial ports are more difficult and expensive to interface with. ----------------------------- Explanation of Demonstrations ----------------------------- Use of Annunciator Outputs with a Game Port Breakout Box A custom ProDOS 8 system program and a homemade game port breakout box were used to "exercise" the annunciator lines of the 16-pin game port. The system program counted from 0 to 15 and sent the count value to the appropriate annunciator lines (AN3 AN2 AN1 AN0) so the value could be "seen" as a 4-bit value. The program used the arrow keys to increase or decrease the time delay value between each count. A logic probe was used to sample each of the annunciator output lines and proved that the computer was in fact doing something. A-to-D An inexpensive 10-bit Analog-to-Digital converter (Vernier kit #CAD-16 -- approximately $32) was used to monitor voltage inputs with a program that simulated a storage oscilloscope. The voltage input sources included a AA battery (1.5 VDC) and an electric motor which was manually manipulated to operate as a crude generator. A-to-D (also known as ADC or A/D) devices measure analog voltages (continuously variable values) and convert the voltage readings into digital numbers the computer can understand and work with. The 10-bit digital numbers were sent to the Apple II in serial format (one bit at a time) by pulsing or not pulsing the PB2 push button input. The particular integrated circuit (chip) used for this project was the Linear Technology LTC1092 which outputs it result in a serial format, rather than the more common parallel output. This project utilized the 16-pin game port because a couple of the annunciator output lines were used to control the LTC1092 chip. Stepper Motor A Unipolar Stepper Motor was interfaced to the 16-pin game port using the Allegro Microsystems (formerly Sprague) UCN-5804B integrated circuit (Vernier kit #CSU-16 -- approximately $16). With this chip, only two digital output lines (AN0 and AN1) are needed to control a stepper motor; additional lines could be used to provide even greater flexibility. One line was used to indicate the direction to turn (clockwise if HIGH or counter-clockwise if LOW) and the other line wass used to pulse the chip each time a step is desired. In case you didn't know, stepper motors are very precise motors which advance one increment each time the electrical signals to their lead wires are changed. Everyday uses include printers where they move the print head and rotate the platen and disk drives where they position the read/write head over the appropriate track. A program, called MOTOR.TEST, which accompanied the "Chaos in the Laboratory" book from Vernier Software provides the ability to rotate the motor in both directions and in three different speeds for the exact number of steps you specify. Ultrasonic Range Finder A Texas Instruments SN28827 module and a Polaroid ultrasonic transducer were interfaced to the 16-pin game port and used as a range finder capable of measuring distances ranging from 0.4 meters to 10.7 meters (1.33 feet to 35 feet). A carefully written (time dependent) program was used to send out pulses of ultrasonic sound and time how long it took for the echo to return. Computations based on the speed of sound were then used to calculate actual distance. ---------- References ---------- Apple II Technical Notes - these can be downloaded from most online services but a complete set can be purchased from the ByteWorks (previously, these were available from APDA and Resource Central) Books - hardware reference section/manual for your computer. Also see the list at the end of this article Internet Newsgroups (Usenet) - check out the computer, electronics, and robotics forums Online services (e.g., GEnie, CompuServe, America Online) Magazines - see the list at the end of this article User groups (e.g., computer, robotics) - visit or join your local computer and robotics user groups. You will definitely learn something new, make some new friends, and locate your local experts. ------------------- Equipment and Tools ------------------- Computer - this one's kind of obvious isn't it! Game Port Extender - a special extension cable which plugs into the 16-pin game port connector (II,II+,IIe,IIgs) on the motherboard and makes available a zero insertion force (ZIF) socket which is mounted outside of the computer. This makes the task of plugging and unplugging devices much less frustrating! Otherwise you have to: (1) "pop the lid" of your machine, (2) use a chip puller to remove the existing device from the 16-pin game port connector, (3) feed the plug of the new device through one of the holes on the back of the computer, (4) insert the new device into the socket with the correct orientation and without bending or breaking any pins, (5) replace the cover. With the ZIF, you simply: (1) move the lever in one direction to release the grip and easily lift out the current device's plug, (2) insert the plug of the new device, (3) move the lever back to lock it into place. Approximate cost is $16. Power Supply - If the devices you plan on hooking up to your computer require a significant amount of current (100 mA or more) or require voltages which are not available (anything but +5 V), you will need to purchase an external power supply. Be sure to get one that can supply more current than you will need; an ampere rating of 2 or 3 Amps should be plenty unless your equipment is power hungry. Be aware that when more than one power source is used (+5 V from the game port counts as a power source) and when one or more peripheral circuits are used together with the computer, you must USUALLY have the ground connections (Gnd) all tied together. Also, if you are using a high-efficiency switching power supply to power your external circuits, be aware that the supply might require a MINIMUM current draw to prevent damage to the power supply. For example, I have a Happ Controls, Inc. 80-0016-00 12 Amp Switching Power Supply and it has a warning label which reads "Supply outputs must be connected before applying line voltage. Failure to do so may result in damage to internal components and will void warranty." If it is a multi-voltage supply, then each output (+5 V, -5 V, +12 V) must have some type of load circuit attached before applying power. Logic Probe - an optional but handy device that can be used to "look" into a digital circuit and determine if a signal is either high ("1") or low ("0"). Most models provide multicolor LEDs and a tone generator to provide visual and auditory feedback. Approximate cost is within $20. Digital Multimeter - this is probably one of the most important pieces of test equipment you can own. You only need the basic functions: DC voltage and resistance. The resistance mode is useful for testing continuity (determining whether a connection is broken); a resistance of zero indicates a good connection, an infinite reading indicates an open in the circuit. Approximate cost is within $30. Hand Tools - electronics work is done with relatively small components, therefore use the correct size tools. Please don't use the same tools you use to work on the car or the kitchen sink; they're too big and probably not very clean. Your tools should include: a pair of needlenose pliers, wire snips, screw drivers (both kinds), and a chip puller. Soldering Iron - use a low-wattage (between 15 to 40 watts) soldering iron, pencil, or station. DO NOT use a soldering gun; these weapons are dangerous to semiconductor devices in terms of heat and the electricity flowing through the tip. Be sure to keep a damp sponge nearby to periodically wipe off the tip of your iron. Wire Wrap Tool - wire wrap is an alternative to soldering and provides good solid connections superior to those of a solder joint. Wire wrap connections can also be removed very easily (by unwrapping the connection). In fact, a lot of electronic circuitry is prototyped using wire wrap because of the ease of revision. Wire wrap requires use of a special wrapping tool, a supply of 30-gauge wire, and IC sockets or mounting posts which are specifically designed for wire wrap. ------------------ How To Get Started ------------------ Learn about the internals of your machine. Get familiar with the memory map of the Apple II. The $C0 page ($C000 through $CFFF) is reserved for memory mapped I/O and softswitches. Learn about and understand the binary, decimal, hexadecimal numbering systems. If you are a complete novice, you might begin by purchasing a low-cost kit or attempting a very simple project. The kits from Vernier Software are ideal but feel free to use any similar materials. Depending on your construction skills (e.g., soldering, wire wrap) you may need to learn or practice until you feel comfortable. By all means, take your time. You're supposed to have fun! You might also want to build a game port breakout box. This is a very useful, low-tech device which permits easy access to each signal available on the 9-pin and 16-pin game port connectors. Typically, the lid of a plastic box is replaced with a piece of perfboard that has been cut to match. Two of each type game port connector (DB-9 female and 16-pin DIP) and a connector (I used "RCA" phono jacks) for each game port signal is mounted on the perfboard. A faceplate can be utilized to help label each of the game port signal connectors. ------- Pinouts ------- 16-pin Dual Inline Package (DIP) socket for II+, IIe +-v------+ +5 V | 1 16 | Not used PB0 | 2 15 | AN0 PB1 | 3 14 | AN1 PB2 | 4 13 | AN2 Strobe | 5 12 | AN3 GC0 | 6 11 | GC3 GC2 | 7 10 | GC1 Gnd | 8 9 | Not used +--------+ 16-pin Dual Inline Package (DIP) socket for IIgs +-v------+ +5 V | 1 16 | Not used PB0 | 2 15 | AN0 PB1 | 3 14 | AN1 PB2 | 4 13 | AN2 +5 V pullup | 5 12 | AN3 GC0 | 6 11 | GC3 GC2 | 7 10 | GC1 Gnd | 8 9 | PB3 +--------+ DB-9 Connector +---------------------+ \ 5 4 3 2 1 / \ 9 8 7 6 / +---------------+ (View: Looking at female connector on the back of the Apple IIc,IIc+,IIe,IIgs) 1=PB1 2=+5 V 3=Gnd 4=GC2 5=GC0 6=PB2 7=PB0 8=GC1 9=GC3 +5 V - Total current drain on this pin must be less than 100 mA AN0 - Annunciator 0 output. The output is capable of sourcing 0.4 mA at 5 V in its logic 1 state, or it can sink 8 mA in its logic 0 state. AN1 - Annunciator 1 output. AN2 - Annunciator 2 output. AN3 - Annunciator 3 output. GC0 - Game Controller 0 input. An analog input designed to accept a variable resistance in the range of 0 to 150 K (ohms). Each GC input is part of an analog-to-digital (A-to-D or A/D) conversion circuit that allows an analog resistance value to be converted into a digital quantity. The resistance forms part of a simple "RC" (resistor-capacitor) timing circuit that sets the time constant for the 558 integrated circuit (a quad version of the 555 Timer). GC1 - Game Controller 1 input. Same as GC0. GC2 - Game Controller 2 input. Same as GC0. GC3 - Game Controller 3 input. Same as GC0. PB0 - Push Button 0 input. PB1 - Push Button 1 input. PB2 - Push Button 2 input. Strobe - Normally kept at a high logic level (+5 V), this signal goes low (near 0 V) for half of a clock cycle any time an address in the range $C040 through $C04F is accessed. Can be used to send a momentary pulse (a "strobe") to an external circuit. Such a pulse may be required to change the state of an on/off device or to latch data into the circuit so that it will not change until after it has been read or sent. ---------------- Apple Tech Notes ---------------- Apple IIe Tech Note #6: The Apple II Paddle Circuits Apple IIe Tech Note #9: Switch Input Changes ----- Books ----- "Apple Connection, The", James W. Coffron, Sybex, ISBN: 0-89588-085-7 "Apple House, The", John Blankenship, Prentice-Hall, Inc., ISBN: 0-13-038711-8 "Apple II Assembly Language", Marvin L. De Jong, Howard W. Sams & Co., ISBN: 0-672-21894-1 "Apple II Applications", Marvin L. De Jong, Howard W. Sams & Co., ISBN: 0-672-22035-0 "Apple II - 6502", Richard Haskell, Prentice-Hall, Inc., ISBN: 0-13-039230-8 "Apple Interfacing", Jonathan A. Titus, David G. Larsen, Christopher A. Titus, Howard W. Sams & Co., ISBN: 0-672-21862-3 "Apple Programmer's Handbook", (Chapter 8), Paul Irwin, Howard W. Sams & Co., ISBN: 0-672-22175-6 "Build Your Own Universal Computer Interface", Bruce Chubb, TAB Books, ISBN: 0-8306-3122-4 "Chaos in the Laboratory", David L. Vernier, etal, Vernier Software, ISBN: 0-918731-46-1 The "Ciarcia's Circuit Cellar" series, Steve Ciarcia, Byte Books/McGraw-Hill, these are reprints from his Byte Magazine column "Custom Apple & Other Mysteries, The", IJG, Inc., Winfried Hofacker, Ekkehard Floegel "Hardware Interfacing with the Apple II Plus", John E. Uffenbeck, Prentice-Hall, Inc., ISBN: 0-13-383844-7 "How to Build a Better Mousetrap and 13 Other Science Projects Using the Apple II", David L. Vernier, Vernier Software, ISBN: 0-918731-16-X "Interface Projects for the Apple II", Richard C. Hallgren, Prentice-Hall, Inc., ISBN: 0-13-469387-6 "Interfacing & Digital Experiments with your Apple", Charles J. Engelsher, Tab Books, Inc., ISBN: 0-8306-1717-5 "Programming & Interfacing the 6502, With Experiments", Marvin L. De Jong, Howard W. Sams & Co., ISBN: 0-672-21651-5 --------- Magazines --------- Byte (look for the Circuit Cellar column by Steve Ciarcia) Computer Applications Journal, The (Circuit Cellar Ink -- Steve Ciarcia) ComputerCraft (became MicroComputer Journal with Jan/Feb 1994 issue) Electronics Now InCider (look for the early issues before the merger with A+) MicroComputer Journal (formerly ComputerCraft) Modern Electronics Popular Electronics Radio Electronics Science Probe (look for the Computer Scientist column) --------- Resources --------- Byte Works 8000 Wagon Mound Drive N.W. Albuquerque, NM 87120 (505) 898-8183 America Online: MikeW50@aol.com GEnie: ByteWorks@genie.com GEnie: Category 45 of the A2 (m645) Bulletin Board and Category 36 of A2Pro (m530) Bulletin Board Vernier Software 8565 S.W. Beaverton-Hillsdale Hwy. Portland, OR 97225-2429 USA (503) 297-5317 Internet Mail: dvernier@vernier.com They sell books, hardware, software, and cables for the Apple II, Mac, and PC [Vernier Software has been producing laboratory interfacing software since 1982. They specialize in assisting schools teach scientific principles by using personal computer technology. So, if you are affiliated with a school or just an interested hobbyist, they certainly offer some interesting products (books, kits, sensors, probes, interfaces, cables, software). They currently support the following platforms: Apple II (game port, peripheral slot card), IBM PC (game port, peripheral slot card, serial interface), and Macintosh (serial interface). Call, write, or email for a current catalog.] Erick Wagner wagnere@netcom.com e.wagner10@genie.geis.com (GEnie) wagnere@aol.com (America Online) [end of document]