16 March 1991 More Ports for Your Amiga An I/O Expansion board by Jeff Lavin Copyright ©1990,91 The Puzzle Factory Many of you in the Amiga community have built Brad Fowles' excellent "LUCAS" accelerator board, which introduced the idea of "Public Domain Hardware". In this article I will present another public domain hardware project for the Amiga, which will enable you to add two parallel ports and two serial ports to your Amiga 500, 1000 or 2000 for $70. Furthermore, you can easily and inexpensively upgrade to four parallel ports and/or four serial ports at any time. The hardware consists of a small printed circuit board with a 40 pin cable and DIP jumper that plugs into the socket occupied by CIA B, and a small pcb that contains the serial interface (see file "IO_Exp_Diag.iff"). CIA B is physically moved onto the I/O Expansion board. Raison d'etre ============= As a hardware hacker of long standing, I have a number of small computers with all sorts of hardware attached to them, from extra ports to EPROM programmers, and longed to do the same with the Amiga. Since the Amiga uses a pair of 8520's (actually 6526's) for its I/O, I figured it would be a piece of cake to add more 65/68XX family peripheral chips and be up and running. The only problem was that, because there is no obvious chip select decoding, I could never figure out how the 8520's were addressed. One day a friend came by, and we were able to figure out that the I/O chips are "automatically" selected when certain addresses are generated by logic hidden in the PALS. Now that the final piece of the puzzle was in place, I wasted no time and had a prototype in my Amiga in two weeks. How it works ============ This hardware hack is possible because of two things the designers of the Amiga did for us: 1. The address space where the CIAs live is incompletely decoded. This means the 16 CIA registers are echoed repeatedly over a large range. 2. The locations where software is supposed to address the CIA registers is completely specified over a much smaller range. These two facts make it possible for us to take the chip select from one CIA, and divide it into four parts. The addresses in the upper part are routed to the CIA normally, and we "steal" the addresses from the remainder of the space for our own use (see file "IO_Exp_Diag.iff"). Because the "hard" part, most of the address decoding and the bus timing, has been done for us, we can get away with nothing more complicated than an additional address decoder to split off our address space. Unfortunately, this hack is not possible on the A3000 for the same reason that it is possible on earlier Amigas. The address decoding on the A3000 is complete; there are no "extra" incompletely decoded addresses to "steal". As you will note, the VIA and ACIA registers are still echoed over a pretty wide address range. We have specified where to address them for the same reason that Commodore has specified addresses for the CIAs: to ensure software compatibility (see file "IO_Exp_Diag.iff", Register Summary). We would very much like to see enough people build these boards to create an installed software base. So programmers, please use these addresses when you are writing all those neat multi-line BBS programs and multi-user applications, as well as process control programs, robotics demos, etc. The Disclaimer ============== This is a simple hack, and if you get the bare boards, or a parts kit, you should have no trouble putting it together and having it running on your Amiga in short order. You do not need to understand how this board works to enjoy using it, but it will help if you have to fix it. While not hard to build, from the time you start this project, it is your sole responsibility. If you fry your beloved Amiga, or have other problems, they're your problems. Because the RF shield is modified in order to install this board (on an Amiga 1000), it's your responsibility to comply with FCC regulations concerning RFI. If your neighbors complain of RFI on their TV sets, you must solve the problem. If you have no experience soldering or handling electronic components, don't try this project as your first one! I may be able to offer advice for some problems, but I will not be a repair resource for this project. I check BIX regularly, and my email address is jblavin. Usenet users may also send email to jlavin@cie.uoregon.edu, and please check your return path for accuracy. Alternatively, you can leave a message on my BBS, The Symposium, 24 hrs, 2400 baud, at (503) 935-7883. While every effort has been made to make these instructions as accurate and complete as possible, neither Jeff Lavin or The Puzzle Factory, Inc. accepts any responsibility arising from any inaccuracies contained herein. Assembly ======== If you're still with me, the first step is to get the bare board and all the required parts. Detailed assembly instructions will be supplied, on disk, with your order. See below for details and sources. Carefully follow the instructions that come with the boards and solder sockets for all the ICs onto the boards. Solder the capacitors, resistors, and the crystal into place. Solder the dual-row and single-row headers, being especially careful of solder bridges. Install all the other parts. Cut two pieces of wire about 8 inches long (28-30 gauge stranded wire will work well here), and solder one end of each wire to the posts of J3. Assemble the DIP adapter cable. Place the board on a piece of conductive foam or some foil. Install the ICs. One or both of the VIAs and/or DACIAs may be installed at this time. If you choose to install only one of either chip at this point, install it in the socket indicated. A500 Installation ================= Remove power from the Amiga. Remove the screws securing the cover and remove the cover from the Amiga. Remove the keyboard. On some A500s the keyboard connector is not polarized, so note it's orientation. You don't have to remove the disk drive, but it will help if you unplug it's cables from the motherboard and fold them out of the way. Toward the back of the motherboard are the two CIAs. Gently pry CIA B out of its socket (that's the one closest to the disk drive), and install it on the I/O Expansion Board at U1. Be careful to orient it correctly. After installing the I/O Expansion Board and Serial Interface Board(s) (see "Mechanical Installation"), remove the conductive material from the board and carefully insert the 40 pin DIP jumper on the end of cable, CA1, into the CIA B socket, ensuring that all 40 pins line up correctly. Then connect the 20x2 socket on the other end of the cable onto the header at P1 on the I/O Expansion Board. As long as you are careful and don't use excessive force, you should have no problems with this part of the installation. Now we're going to connect the two wires we attached to J3 earlier. These wires bring A14 and A15 into the address decoder. These signals are not available from the CIA socket, so we must look elsewhere. A good place to pick up these signals is from the ROM. Unfortunately, there are a number of different motherboards made for the A500. The best way to determine where A14 and A15 are located on the ROM is to take an ohmeter and find out which ROM pins are connected to pin 42 (A14) and pin 43 (A15) on the CPU. The corresponding pins on the ROM should be somewhere around pin 36. Some of the A500 schematics are incorrect as to the location of these signals on the ROM, so it's best to check! Solder the wire from the pad marked "A15" on the I/O Expansion Board to A15 on the ROM, and solder the wire from the pad marked "A14" on the I/O Board to A14 on the ROM. This just about completes the electronic installation. (Skip to "Mechanical Installation".) A1000 Installation ================== Remove power from the Amiga. Remove the plastic cover from the Amiga base unit. Admire all the names. Remove the RF shield and set aside. You don't have to remove the disk drive, but it will help if you unplug it's cable from the motherboard and fold it out of the way. Just in back of the internal drive are the two CIAs. Gently pry CIA B out of its socket (that's the one closest to the daughterboard), and install it on the I/O Expansion Board at U1. Be careful to orient it correctly. Remove the conductive material from the board and place it on the left side of the Amiga, near and to the rear of the three custom chips. Carefully insert the 40 pin DIP jumper on the end of cable, CA1, into the CIA B socket, ensuring that all 40 pins line up correctly. Then connect the 20x2 socket on the other end of the cable onto the header at P1 on the I/O Expansion Board. As long as you are careful and don't use excessive force, you should have no problems with this part of the installation. Now we're going to connect the two wires we attached to J3 earlier. These wires bring A14 and A15 into the address decoder. These signals are not available from the CIA socket, so we must look elsewhere. A good place to pick up these signals is from the back of the daughter board. A15 is located at U2L, pin 10, and A14 is located at U2K, pin 13 (see file "IO_Exp_Scheme.iff"). Solder the wire from the pad marked "A15" on the I/O Expansion Board to U2L, pin 10, and solder the wire from the pad marked "A14" on the I/O Board to U2K, pin 13. This just about completes the electronic installation. (Skip to "Mechanical Installation".) A2000 Installation ================== Note: The following installation was done on a Rev 4.2 motherboard. Other motherboards may be somewhat different. Remove power from the Amiga. Five screws hold the case together, 4 on the sides and 1 at the back. Unscrew them and slide off the top part of the case. Make a sketch indicating the orientation of all cables connecting the drive bay and the motherboard and/or other cards (such as hard drive controller cards), then unplug them. Remove the power supply/drive bay by unscrewing 2 screws in front and 4 in the back. At this point the motherboard should be completely exposed. Underneath where the power supply was, before you removed it, are the two CIAs. Gently pry CIA B (labeled U301) out of its socket, and install it on the I/O Expansion Board at U1. Be careful to orient it correctly. One of the most difficult decisions you will have is where to mount the I/O Board. The location you choose will be affected by how crowded your 2000 is, whether you have a board in the CPU slot, etc., so it's not possible to give definite instructions. Note that this decision will affect how you'll want to assemble the 40-pin DIP jumper, so hold off the construction of this cable until you have resolved the board's final location. One idea is especially attractive: Mount the I/O Board on a bare Zorro card, or maybe even a real Zorro card (a HD controller with unused space reserved for a hard disk would be ideal). This will give it sufficient mechanical sturdiness, and make it extremely easy to obtain A14 and A15 as well as additional power and ground lines. After you have determined where the I/O Board is to be installed, remove the conductive material from the board and install it. Assemble the 40 pin DIP jumper cable, CA1, and carefully insert the DIP plug into the CIA B socket, ensuring that all 40 pins line up correctly. Then connect the 20x2 socket on the other end of the cable onto the header at P1 on the I/O Expansion Board. As long as you are careful and don't use excessive force, you should have no problems with this part of the installation. Now we're going to connect the two wires we attached to J3 earlier. These wires bring A14 and A15 into the address decoder. These signals are not available from the CIA socket, so we must look elsewhere. There are only a few sources of A14 and A15 in the 2000. The unbuffered signals are available at the 68000/68010, the ROM, and Agnus. The use of the unbuffered address lines is not recommended. Instead, grab A14 and A15 from U601 (an 74LS245) or one of the 100-pin "Zorro II" slots, as follows: U601 ---- A14 - pin 12 A15 - pin 11 "Zorro II" slot --------------- A14 - pin 41 A15 - pin 43 This just about completes the electronic installation. Mechanical Installation ======================= Note: As the following section was written primarily for an A1000, only some portions will be applicable to other Amigas. We encourage you to read this section even if you own an A2000. Most of the remainder of the work is of a mechanical nature. At this point you must make some decisions. First of all, decide exactly where and how you want to secure the I/O Expansion Board in place. In my own A1000, I set one end of the board on top of the power harness, and supported the other end with plastic standoffs. Where do you want to mount the connectors for the serial ports? You will find that the four D-subminiature connectors will fit handily over the existing row of connectors on the Amiga's rear apron (see file "Installation.iff"). Each serial interface board connects to the I/O Expansion Board with a 20 pin ribbon cable and header sockets. The first two ports, Port 1 and Port 2, are connected to P4 on the I/O Expansion Board, while Port 3 and Port 4 are connected to P5. What kind of connectors do you want to use for the parallel ports? You could use D-subminiature connectors for the parallel ports if you can find a way to tell them apart from the serial ports. Centronics-type connectors are another option for the parallel ports. After deciding what type of connectors to use, either solder or crimp ribbon cable to them, as appropriate, and install them temporarily. Experiment with different wire routings until you are satisfied with the arrangement. Now attach the other end of the ribbon cable to the I/O Board connectors, making sure to attach grounds to the two ground pads provided near pin 1 of P2 and P3. Whatever connectors you do end up using will have to be installed somewhere. You will need to make cutouts for the connectors, and also cutouts in the RF shield. One option may be to just leave the shield off entirely, but remember that you are responsible for any RFI that results from your modifications. This completes the installation. Debugging ========= Note: The following section was written primarily for an A1000. With the exception of references to Kickstart, most of the remainder will be applicable to other Amigas. Before you start permanently attaching things to your Amiga, you will want to try things out. For simplicity, you may apply power to the I/O Expansion Board without having the Interface Board(s) connected. If you power up, and nothing at all happens, i.e. the screen doesn't change color - the power LED may not come on, etc., turn the power off immediately, as you probably have a short circuit. Visually inspect the board, and if you find nothing wrong, remove all the chips, except for the CIA at U1, and temporarily insert a jumper from U6, pin 1 to U6, pin 7. This will have the effect of making the CIA look electrically to the Amiga as if the I/O Board wasn't there at all. Try powering up again. If you get the Kickstart disk icon this time, you can pretty well suspect a bad IC, or a missing signal (or ground). One other thing you may try at this time is to solder a 10K resistor between the reset pin of any of the chips U2-U5 and +5V. On some Amigas the built-in pull-up resistor may be insufficient. If none of these remedies get you running, it's hardware debugging time, and I wish you luck. If the Amiga does all or any of the following: 1. Refuses to accept the Kickstart disk 2. The disk drive chatters and buzzes 3. Refuses to read the Workbench disk 4. Reads Workbench properly, but access light goes on and off, drive double-steps, etc. it is possible that you may be experiencing some noise problems, depending on when your Amiga was made. The first thing to suspect in this case is the PAL's on the daughterboard. Run additional ground and +5V busses to all 4 PAL's and both tower sockets. If this doesn't do the trick, run an extra ground lead directly to the I/O Expansion Board at the pad marked "-" adjacent to P1, pin 1. A +5 power lead may also be connected to the pad marked "+" adjacent to P1, pin 39, but should not normally be necessary. This should solve the problem. The only other possibility is to try a new 8520 (or 6526, which is considerably cheaper). A bad CIA is possible in this case, because the signals may be too weak to overcome the extra capacitive loading of the cable. If the CIA worked fine before installing it in the I/O Board, but will not work correctly in the board, try swapping it with the other CIA before buying a new one. Software ======== Of course, hardware is next to useless without software to drive it. This section describes the software available for the I/O Expansion Board. Please note well that although every effort has been made to ensure completeness and compatibility, this is a Public Domain project. All of the people who have created hardware or software for this project have done so in their spare time without remuneration other than glory. If you experience problems with the software, try to smile a lot and consider helping to write an updated version. In any case, please contact us if you find any major incompatibilities or bugs. The Serial Driver ----------------- Almost all programs written for the Amiga that use the serial port (with the notable exception of some MIDI software) access it indirectly via a standard software module called "serial.device". As a result, most existing software will work fine with the I/O Board given a suitable driver, and we supply one, named "newser.device". Simply copy it to your "DEVS:" directory and you're in business. Most programs will permit you to change the device name (from serial.device to newser.device) as well as the unit number (indicating which port is to be used), or you may use the supplied IOpatch utility, described below (see "Support Programs"). The newser.device supports 15 standard baud rates, from 50 to 38,400 baud, plus MIDI (31,250 baud). It also supports full hardware handshaking. Up to four units may be open at one time, although the cpu may not be able to keep up with all four units running above 2400 baud. A more technical discussion of the serial driver is beyond the scope of this article. However, it is worth noting that, as with all other programs relating to the I/O Board, we supply complete assembly language source code of the driver. If you encounter a problem - and all else fails - it's possible to fix it yourself. (Please be sure to send Dan a copy of the fixed version!) Technical questions, comments, praise, and criticism regarding the serial driver should be directed to the author: Dan Babcock P.O. Box 1532 Southgate, MI 48195 U.S.A. People/Link: DANBABCOCK Internet: dxb132@psuvm.psu.edu The Parallel Driver ------------------- The four parallel ports on the I/O Expansion Board are controlled by the eightbit.device. There are no known differences between this device and the V1.3 parallel.device. Applications should not experience any problems communicating with the eightbit.device on the device level. Full assembly language source code of the driver is supplied with the I/O Expansion board. (If you find and fix any bugs, please be sure to send Paul a copy of the fixed version!) Any questions, comments, praise, etc. pertaining to the parallel driver should be directed to the author: Paul Coward 12 Dinmore St., Moorooka Brisbane, Queensland 4105 AUSTRALIA (Mail to Paul may also be forwarded through The Puzzle Factory.) DOS-Level Support ----------------- "DOS-level support" refers to the ability to get and send data via the serial and parallel ports with standard AmigaDOS commands, such as TYPE or LIST, or with any program that does serial or parallel I/O via AmigaDOS, rather than directly via the Exec-level "newser.device" or "eightbit.device". Although this sort of capability is not frequently used, it is useful from time to time. In a perfect world, DOS-level support would mean nothing more than an appropriate MountList entry, specifying a driver name of "newser.device" or "eightbit.device", and some unit number of your choosing, corresponding to a DOS name such as "SER1:" or "PAR2:". Unfortunately, Commodore supplied a version of the Port-Handler and Aux-Handler with Workbench V1.3 that doesn't permit this; rather, they're hard-coded to use either "serial.device" or "parallel.device". The printer.device suffers from a similar limitation. At the time of this writing, we don't have a solution to the problem with the printer driver, other than using IOpatch. We do have a port handler, however. It's named "ioexp-handler". Put this in your "L:" directory, and copy the supplied mountlist to "DEVS:", and you're in business. In addition, the handlers in Workbench V2.0 have the capability to use any device and unit, so this whole problem is non-existent if you have V2.0. (Well, that's what Andy Finkel told me some months ago. As of 37.59 it hasn't happened!) Support Programs ---------------- Several programs are available for use with the I/O Expansion Board. SERprefs functions much the same as the serial section of Preferences, but allows you to set and save parameters for all four units of the newser.device. These are saved in "S:Serial-Preferences". Many programs allow you to specify the device name and unit number, so that using an alternate device driver is no problem. For those applications that insist on using a particular device, we have written a nice little hack called IOpatch. This program SetFunction()s the exec OpenDevice call. The user puts this program in his startup-sequence, or otherwise invokes it, before he runs his application program. This patch will make a small window appear, whenever OpenDevice() is called, with a choice of units; 0-4. Unit 0 will select the internal serial or parallel port, and units 1-4 will select one of the newser.device or eightbit.device units. Please note that the names of both drivers have been selected to be the same length as the names of the original devices. This has been done to facilitate file-zapping as a last resort. Of course, software may be written that names the newser.device or eightbit.device specifically. A suite of simple test programs to check the I/O Expansion Board Hardware can save you hours of hardware debugging time. Chip selects, as well as read and write signals, are generated for all chips. One program simulates a very simple character-oriented terminal program for checking an ACIA. Please see Appendix D for information on other software. A nice little program to drive a real-time clock-calendar is also available. The clock hardware, based on the OKI MSM5832, is capable of generating interrupts at 1024 hz, once per second, once per minute, or hourly. Software to take advantage of this feature is left as an exercize for the student. See the SOURCES section for availability of a bare board for this clock. Credits ======= I would like to thank Dan Babcock for the many hours he put in writing and debugging the serial device driver. This was surely one of the most difficult parts of this project. Paul Coward, of DigiSoft, provided us with the parallel device driver, no small achievement either. Jim Cooper, of The Software Distillery, made many helpful suggestions concerning software issues, especially in the area of DOS compatibility, and helped us get up to speed. Bill Seymour provided invaluable help in layout and pre-production of the PCBs, and also provided design help. Finally, this task was made easier by the help and encouragment of Doug Sears and Grace Lavin. Conclusion ========== I think this is a pretty neat little hack. I also feel that it is simple enough that if I hadn't come up with it, someone else would have. It provides some much-needed additional I/O for the Amiga 500, 1000 or 2000 at a rock-bottom price. If enough software becomes available to warrant it, I will try to set up some sort of software clearing house for use with this board. Keep an eye on BIX or my BBS, The Symposium, for any news. Meanwhile, I hope you enjoy using this board. And don't let the blue smoke out! Amiga, Kickstart & Workbench are trademarks of Commodore-Amiga, Inc. ***************************************************************************** * * * APPENDIX A - SOURCES * * * ***************************************************************************** Bare boards and other hard-to-find parts may be obtained from The Puzzle Factory. Detailed assembly instructions will be supplied, on disk, with kits 1, 1A, 2, 2A and 3. In particular, the CMOS serial and parallel chips, as well as the Maxim chips may be difficult to find in single quantities. Other parts may be found at the mail order electronic supply firms listed below, or any good parts house. The Puzzle Factory will make only the following items available for an indefinite period of time. Please do not request custom kits: 1. BAREBOARDS 1 PCB1 I/O Expansion Board 1 PCB2 Serial Interface Board $20.00 1A. BAREBOARDS2 1 PCB1 I/O Expansion Board 2 PCB2 Serial Interface Board $25.00 2. ALMOSTBARE Everything in BAREBOARDS, and the following ICs: 1 each: R65C22P1, R65C52P1, MAX238CNG $45.00 2A. ALMOSTBARE2 Everything in BAREBOARDS2, and the following ICs: 2 each: R65C22P1, R65C52P1 4 each: MAX238CNG $70.00 3. FOUR_PORTS Everything in ALMOSTBARE, and enough parts to build a complete I/O System with 2 serial and 2 parallel ports. (U7, OSC1, SO7 not included.) $70.00 4. FOUR_MORE All parts necessary to add 2 serial and 2 parallel ports to FOUR_PORTS. (U7, OSC1, SO7 not included.) $40.00 5. MIDI_UP 1 each: U7, OSC1, SO7 $ 6.00 6. CLOCKBOARD 1 PCB3 Clock/Calendar Board suitable for building a real-time clock/calendar based on the OKI MSM5832. Instructions for assembling the clock are included on disk with kits 1, 1A, 2, 2A and 3. (Parts are readily available, but not from us.) $ 6.50 Shipping: Prices for up to 1 lb. If shipping several kits $CALL -------- North America: UPS Ground $ 3.00 UPS Blue Label, or Small Packet Air $ 5.00 Federal Express Overnite $CALL Overseas: Small Packet Air only $ 8.00 Federal Express Overnite $CALL Prices are subject to change without notice. Please call for prices and availability before ordering. All prices are in U.S. dollars. Visa, MasterCard and Money Orders are preferred. No CODs will be accepted. The Puzzle Factory, Inc. Digi-Key, Corporation P.O. Box 986 701 Brooks Ave. South Veneta, OR 97486 P.O. Box 677 (503) 935-3709 Thief River Falls, NM 56701-0677 (800) 344-4539 Mouser Electronics Mouser Electronics Mouser Electronics 11433 Woodside Ave. 2401 Hwy 287 North 12 Emory Ave. Santee, CA 92071 Mansfield,TX 76063 Randolph, NJ 07869 (800) 346-6873 (800) 346-6873 (800) 346-6873 JDR Microdevices Jameco Electronics 2233 Branham Lane 1355 Shoreway Road San Jose, CA 95124 Belmont, CA 94002 (800) 538-5000 (415) 592-8097 ***************************************************************************** * * * APPENDIX B - PARTS LIST * * * ***************************************************************************** *** MAIN BOARD PARTS LIST *** PCB1 = I/O Expansion Board circuit board U1 = 8520 integrated circuit (CIA B from Amiga) U2, U3 = R65C22P1 VIA integrated circuit U4, U5 = R65C52P1 DACIA integrated circuit U6 = 74F139 integrated circuit U7 = 74LS90 integrated circuit (optional for MIDI) X1 = 3.6864 Mhz crystal OSC1 = 5.0 Mhz TTL clock oscillator (optional for MIDI) R1, R2 = 1K 1/4W 5% resistor C1, C2 = 18 pf capacitor C3 = 22 uf 6.3V decoupling capacitor C4-C10 = .01 uf decoupling capacitor P1 = 20x2 pin dual-row header P2, P3 = 20x1 pin single-row male header P4, P5 = 10x2 pin dual-row header J1, J2 = 3x1 pin single-row header J3 = 2x1 pin single-row header S1, S2 = Shorting jumpers, gold inlay SO1-SO5 = 40 pin DIP socket SO6 = 16 pin DIP socket SO7 = 14 pin DIP socket (Optional for MIDI) This parts list is for building a 4/4 port board. Depending on which set of parts you order, and whether you are building 2 or 4 ports, you may receive fewer parts than this. *** INTERFACE BOARD PARTS LIST *** PCB2 = Serial Interface Board U1, U2 = MAX238CNG R1, R2 = 1K 1/4W 5% resistor (Optional) C1, C5 = 4.7 uf 25V Capacitor, charge pump C2, C6 = 4.7 uf 25V Capacitor, charge pump C3, C7 = 10 uf 25V Capacitor, charge pump C4, C8 = 10 uf 25V Capacitor, charge pump P1 = 10x2 pin dual-row header P2, P3 = 25 pin right-angle pcb male D-sub connector SO1,SO2 = 24 pin DIP socket on .300" centers Please note that this parts list will build 1 Interface Board, which will provide 2 ports. For 4 serial ports, 2 Interface Boards are required. *** CABLE PARTS LIST *** N1 = 20x2 pin dual-row socket connector N2, N3 = 10x2 pin dual-row socket connector CA1 = 40 pin DIP plug with 9" 28 ga. ribbon cable, rainbow CA2 = 20 conductor, 28 ga. ribbon cable, rainbow Please note that this parts list will connect the I/O Expansion Board to the Amiga and to 1 Interface Board, which will provide 2 ports. For 4 serial ports, more parts are required. *** CLOCK PARTS LIST *** PCB3 = Clock/Calendar Board U1 = OKI MSM5832 Real-time Clock/calendar integrated circuit X1 = 32.768 Khz clock crystal C1 = 4.7 uf 6.3V decoupling capacitor C2 = 20 pf disc capacitor C3 = 5-35 pf variable capacitor R1 = 2.7K 1/4W 5% resistor R2 = 100 ohm 1/4W 5% resistor (Not required with lithium battery) D1 = 1N4000 diode (Not required with lithium battery) SO1 = 18 pin DIP socket P1 = 20x1 pin single-row right-angle socket connector B1 = NiCad or Lithium battery Please note that the above clock parts are readily available, but not from us, except for the printed circuit board, PCB3. ***************************************************************************** * * * APPENDIX C - PORT ASSIGNMENTS * * * ***************************************************************************** There are four possible units associated with the newser.device, as follows: Unit 1: U4, ACIA2 -> P4, pins 1-10 Unit 2: U4, ACIA1 -> P4, pins 11-20 Unit 3: U5, ACIA2 -> P5, pins 1-10 Unit 4: U5, ACIA1 -> P5, pins 11-20 The serial interface connector pinouts are arranged as follows. Note that these connectors are symmetrical: GND ( 1) ( 2) GND TxD01 ( 3) ( 4) RxD01 RTS01 ( 5) ( 6) CTS01 DTR01 ( 7) ( 8) DSR01 +5 ( 9) (10) DCD01 DCD00 (11) (12) +5 DSR00 (13) (14) DTR00 CTS00 (15) (16) RTS00 RxD00 (17) (18) TxD00 GND (19) (20) GND There are four possible units associated with the eightbit.device, as follows: Unit 1: U2, Port A -> P2, pins 1-10 + ground Unit 2: U2, Port B -> P2, pins 11-20 + ground Unit 3: U3, Port A -> P3, pins 1-10 + ground Unit 4: U3, Port B -> P3, pins 11-20 + ground The parallel interface connector pinouts are arranged as follows: Name P2 Name P3 Comments ==== == ==== == ======== CA1.2 1 CA1.3 1 Control line 1, Port A CA2.2 2 CA2.3 2 Control line 2, Port A PA0.2 3 PA0.3 3 Data line 0, Port A PA1.2 4 PA1.3 4 Data line 1, Port A PA2.2 5 PA2.3 5 Data line 2, Port A PA3.2 6 PA3.3 6 Data line 3, Port A PA4.2 7 PA4.3 7 Data line 4, Port A PA5.2 8 PA5.3 8 Data line 5, Port A PA6.2 9 PA6.3 9 Data line 6, Port A PA7.2 10 PA7.3 10 Data line 7, Port A PB0.2 11 PB0.3 11 Data line 0, Port B PB1.2 12 PB1.3 12 Data line 1, Port B PB2.2 13 PB2.3 13 Data line 2, Port B PB3.2 14 PB3.3 14 Data line 3, Port B PB4.2 15 PB4.3 15 Data line 4, Port B PB5.2 16 PB5.3 16 Data line 5, Port B PB6.2 17 PB6.3 17 Data line 6, Port B PB7.2 18 PB7.3 18 Data line 7, Port B CB1.2 19 CB1.3 19 Control line 1, Port B CB2.2 20 CB2.3 20 Control line 2, Port B GND.2 PAD GND.3 PAD ***************************************************************************** * * * APPENDIX D - SOFTWARE * * * ***************************************************************************** NewSER/newser.device ==================== A serial device driver which supports 15 standard baud rates, from 50 to 38,400 baud, plus MIDI (31,250 baud). It also supports full hardware handshaking. Up to four units may be open at one time, although the cpu may not be able to keep up with all four units running above 2400 baud. NewPAR/eightbit.device ====================== A parallel device driver similar in operation to the standard Amiga V1.3 parallel.device. Handler/ioexp-handler ===================== A small handler that supports AmigaDOS operations for the newser.device and eightbit.device. SERprefs/SERprefs ================= This program functions much the same as the serial section of Preferences, but allows you to set and save parameters for all four units of the newser.device. IOpatch/IOpatch =============== A nice little hack to allow use of the newser.device or eightbit.device with applications that insist on using a particular device. This program SetFunction()s the exec OpenDevice() call. Test/IOSetup ============ Places known values in certain registers on the I/O Expansion Board so that they may be verified with the IOPrint program. Test/IOPrint ============ Prints (to stdout) all the registers on the I/O Expansion Board. Test/IOTest =========== A suite of 9 simple test programs to check the I/O Expansion Board Hardware. Generates chip selects, as well as read and write signals, for all chips. One program simulates a very simple character-oriented terminal program for checking an ACIA. Test/PARtest ============ A test program for the Rockwell 65C22. This program takes a filespec as its only argument, and stuffs the file out parallel Port 2 (VIA #1, Port A) to a printer. No devices are involved; we go right to the hardware. In this version, interrupts are not used, and handshaking is accomplished by hardware polling. Time/Time ========= A small program to drive an OKI MSM5832 real-time clock-calendar. Provides system interface functions to allow setting the clock from sysTime, and setting sysTime from the clock. =eof=