

   Ed:
   For full details, docs, etc check our IOBoard PD disk, put together by
  Pieter Berkel - Disk code Misc 162. 
   Jeff Lavin runs a company in the US called "The Puzzle Factory", which
  puts out various useful software for the Amiga, including the Australian
  disassembler, Resource, and Origins genealogy (reviewed in this issue). 




                        [42m More Ports for Your Amiga [0m

                         [42m An I/O Expansion board [0m

   by Jeff Lavin
   Copyright ©1990,91 The Puzzle Factory


[32m   <> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <>
[0m

   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.


[33m   Raison d'etre
   =============[0m
  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.


 [33m  How it works
   ============[0m
  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.


   [33mThe Disclaimer
   ==============[0m
  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.


   [33mAssembly
   ========[0m
  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.


  [33m A500 Installation
   ================= [0m
  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".)


  [33m A1000 Installation
   ==================[0m
  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".)


   [33mA2000 Installation
   ==================[0m
  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.


  [33m Mechanical Installation
   =======================[0m
  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.


  [33m Debugging
   =========[0m
  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.


   [33mSoftware
   ========[0m
  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.


[33m   The Serial Driver
   -----------------[0m
  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


   [33mThe Parallel Driver
   -------------------[0m
  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.)


  [33m DOS-Level Support
   -----------------[0m
  "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!)


   [33mSupport Programs
   ----------------[0m
  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.


  [33m Credits
   =======[0m
  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.


   [33mConclusion
   ==========[0m
  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.


   [33m**************************************************************************
   [33m*                         APPENDIX A  -  SOURCES                         *
   [33m*                                                                        *
   [33m**************************************************************************
[0m
   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



   [33m**************************************************************************
   [33m*                                                                        *
   [33m*                       APPENDIX B  -  PARTS LIST                        *
   [33m*                                                                        *
   [33m**************************************************************************
[0m
   *** 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.


   [33m**************************************************************************
   [33m*                                                                        *
   [33m*                    APPENDIX C  -  PORT ASSIGNMENTS                     *
   [33m*                                                                        *
   [33m**************************************************************************
[0m
   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


   [33m**************************************************************************
   [33m*                                                                        *
   [33m*                        APPENDIX D  -  SOFTWARE                         *
   [33m*                                                                        *
   [33m**************************************************************************
[0m
   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.



[32m   <> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <%> 34 <>
[0m


