From: jones@pyrite.cs.uiowa.edu
Subject: KL8JA (M8655) notes
Date: Mon, 15 Mar 1993 22:46:07 GMT

Technical notes for the M8655 KL8-JA OMNIBUS asynchronous interface board

by Douglas Jones
jones@cs.uiowa.edu

The M8655 board supports asynchronous communications at a variety of
baud rates, with either an RS232 or a current loop interface.  The board
uses a UART chip, but most of the options that might be programmable in a
more modern system are selected by jumpers on the board.

In most respects, the M8655 board and the M8650 board are interchangable,
but the M8655 can generate and detect parity, and it can support data
widths from 5 to 8 bits, while the M8650 can support higher nonstandard
baud rates and is thus more appropriate for high speed PDP-8 to PDP-8
links.  There's also no way to send a break on an M8655, while this can
be sent on an M8650 by jamming data into the transmit buffer while it is
transmitting.

General geography of the M8655 board:

      \\____//           \\____//          \\____//           \\____//
 ______||__||_____________||__||____________||__||_____________||__||_____
| o  ____      _ o  _o    _         o _o    _     _   o _ o  _   _ _ _ _ o|
|   |_   |    | |  | |   | |     o   : :   | |   | | ..| |  | |          ||
|     |  |    | |  | |   | |    FIL  : :   | |   | |   | |  | | |  CAN    |
|     |  |    |_|  |_|   |_|     o   :_:   |_|   |_| ..|_|  |_|  _ _ _ _ ||
|     |  |     _    _     _     _     _     _     _     _      _     ___  |
|     | B|    | |  | |   | |   | |   | |   | |   | |   | |    | |   |   | |
|     | E|    | |  | |   | |   | |   | |   | |   | |   | |    | |   |OSC| |
|     | R| .o |_|  |_|   |_|   |_|   |_|   |_|   |_|   |_|    |_|   |___| |
|    _| G| TTY _    _     _     _     _     _     _     _      _      _   |
|   |____| .o | |  | |   | |   | |   | |   | |   | |   | |    | |    | |  |
|             | |  | |   | |   | |   | |   | |   | |   | |  . | |    | |  |
|             |_|  |_|   |_|   |_|   |_|   |_|   |_|   |_|    |_|    |_|  |
|                                                           .             |
|   _     _    _    _     _     _     _                 _      _      _   |
|  | |   | |  | |  | |   | |   | |   | |               | |    : :    | |  |
|  | |   | |  | |  | |   | |   | |   | |    ____       | |    : :    | |  |
|  |_|   |_|  |_|  |_|   |_|   |_|   |_|   |    |      |_|    :_:    |_|  |
|   _     _    _    _     _     _     _    |    |       _     ___    ___  |
|  | |   | |  | |  | |   | |   | |   | |   |    |      | |   |   |  |   | |
|  | |   | |  | |  | |   | |   | |   | |   |    |  o o | |   |   |  |   | |
|  |_|   |_|  |_|  |_|   |_|   |_|   |_|   |    | NP SB|_|   |___|  |___| |
|   _     _    _    _     _     _     _    |    |  o o  _    XMIT    RCV  |
|  | | o | |  | |  | |   | |   | |   | |   |____| o o o| |    | |    | |  |
|  | |SWD| |  | |  | |   | |   | |   | |        EVN 1 2| |    | |    | |  |
|  |_|.o |_|  |_|  |_|   |_|   |_|   |_|          o o o|_|    |_|    |_|  |
|    W3                                                                   |
|_    .           __||               _||               __||              |
  |              |   |              |  |              |   |              |
  |______________|   |______________|  |______________|   |______________|

Given an M8655 board, various optional jumpers and switch settings must be
inspected and possibly changed prior to any use of the board.  The following
sections treat the primary options that limit the range of baud rates
supported, that select a particular rate, and that select the I/O device
addresses used for the board.


1) Jumpering to set-up basic communications options.

      \\____//           \\____//          \\____//           \\____//
 ______||__||_____________||__||____________||__||_____________||__||_____
| o  ____      _ o  _o    _         o _o    _     _   o _ o  _   _ _ _ _ o|
|   |_   |    | |  | |   | |     o   : :   | |   | | ..| |  | |          ||
|     |  |    | |  | |   | |    FIL  : :   | |   | |W5W2 |  | | |  CAN    |
|     |  |    |_|  |_|   |_|     o   :_:   |_|   |_| ..|_|  |_|  _ _ _ _ ||
|     |  |     _ 
|     | B|    | |                ^                   ^^
|     | E|W1  | |                A jumper between    A zero ohm resistor or
|     | R| .o |_|                these split lugs    wire jumper should be
|    _| G| TTY                   will insert 4       inserted at either W2
|   |____| .o                    nulls after each    or W5, but not both.
                                 linefeed. (This     This selects the highest
           ^                     is needed for the   baud rate the board will
           A jumper between the  DEC VT05 at 2400    support.
           TTY split lugs or     baud at 60 Hz.  
           a zero ohm resistor   This is a poor       W5 (left) = 19200 baud
           at W1 is required     design; it does      W2 (right) = 9600 baud
           for 110 baud current  not give enough
           loop operation, both  delay at 50 Hz,     The originl GI UART could
           must be absent for    and it is overkill  only do 9600 baud.  The
           higher baud rate      at 600 and 1200     SMC COM 2017 can do both.
           current loop service. baud.)


2) Jumpering for error reporting on received data.

|   _     _             The split lugs marked SWD are in parallel with the
|  | | o | |            jumper location W3.  If no jumper is present in either
|  | |SWD| |            location, the M8655 KL8JA board will look, to software,
|  |_|.o |_|            exactly like an M8650 KL8E board.
|    W3
|_    .           __|   If a jumper is present at this location, the board
  |              |      recognizes a new software option allowing reporting
  |______________|      of the UART status word with each character read.

The command to turn this option on and off is:

   KIE (6xx5) -- Bit 11 of AC is the interrupt enable bit, as usual;
                 Bit 10 of AC is the status word report reqest bit.

If the status report request bit is set, the data returned in AC by the
KRS (6xx4) and KRB (6xx6) commands is formatted as follows:

      bit[0]     -- error detected.
      bit[1]     -- parity error detected in this character
      bit[2]     -- framing error detected, this might not be a character
      bit[3]     -- overrun error detected, previous character lost
      bits[4-11] -- the data read (as usual)


3) Jumpering for data format:                           _      _      _   |
                                                       | |    | |    | |  |
There are 5 pairs of split lugs and one zero ohm       | |  . | |    | |  |
resistor or jumper wire in this group.  In general,    |_| W4 |_|    |_|  |
if none of these are jumpered, the board will behave        .             |
like an M8650.                                          _      _      _   |
                                                       | |    : :    | |  |
SB  -- number of stop bits                  ____       | |    : :    | |  |
W4  -- jumper in parallel with SB lugs     |    |      |_|    :_:    |_|  |
         jumper present - 1 stop bit       |    |       _     ___    ___  |
         jumper absent  - 2 stop bits      |    |      | |   |   |  |   | |
                                           |    |  o o | |   |   |  |   | |
NP  -- parity generation and checking      |    | NP SB|_|   |___|  |___| |
         present - 1 parity bit.           |    |  o o  _    XMIT    RCV  |
         absent  - no parity bits.         |____| o o o| |    | |    | |  |
                                                EVN 1 2| |    | |    | |  |
EVN -- sense of parity bit                        o o o|_|    |_|    |_|  |
         absent  - parity = odd(bitcount(data)                            |
         present - parity = even(bitcount(data)        __||              |
                                                      |   |              |
NB1,NB2 -- number of data bits         |______________|   |______________|
 0   0      8
 1   0      7   0 = jumper absent
 0   1      6   1 = jumper present
 1   1      5


4) Switch settings:
                                                              ___    ___  |
The two DIP switches are divided logically into 2 groups of  |   |  |   | |
switches to control the baud rate and device addresses.      |   |  |   | |
                                                             |___|  |___| |
The bottom 6 switches on each DIP switch cluster set the     XMIT    RCV  |
device addresses.  The left switches handle the transmit      | |    | |  |
address, the right handles the receive address.  Both         | |    | |  |
switch groups have the same format:                           |_|    |_|  |
                                                                          |
 |  ==-  | MD3 MSB of device address                      |              |
 |  ==-  | MD4                                            |              |
 |  ==-  | MD5   For all bits,                            |______________|
 |  ==-  | MD6   ON = 1, OFF = 0
 |  ==-  | MD7                              _______           _______
 |  ==-  | MD8 LSB of device address       |       |         |       |
 |_______|                                 |  ==-  |B3       |  ==-  |B1
                                           |  ==-  |R=150    |  ==-  |B2

The 3 baud rate bits, B1, B2, B3 give the baud rate:

  B1 B2 B3                                      
   0  0  0  =  110 baud                          As a special case, if the
   0  0  1  =  150 baud                          R=150 switch is on, the
   0  1  0  =  300 baud    On = 1, Off = 0       receive baud rate is set
   0  1  1  =  600 baud                          to 150 baud.  Normally,
   1  0  0  = 1200 baud                          the transmit and receive
   1  0  1  = 2400 baud                          baud rates are the same.
   1  1  0  = 4800 baud
   1  1  1  = 9600 or 19200 baud (see part 1, jumpers W2 and W5)


5) Discrete crystal versus integrated oscillator.             \\____//
                                                         ______||__||_____
As originally designed, the M8655 board used a large      o  _   _ _ _ _ o|
crystal can mounted over the large pad in the upper         | |          ||
right corner of the board.  This was not a satisfactory     | | |  CAN    |
design, and DEC abandoned this can in later revisions       |_|  _ _ _ _ ||
of the board.  Instead, the integrated circuit at position     _     ___  |
E4 (shown at OSC here) was replaced with a CTS 5.0688 MHZ     | |   |   | |
oscillator (DigiKey part CTX110).  This requires that the     | |   |OSC| |
circuit traces connecting to pins 1 and 8 of E4 be cut        |_|   |___| |
(note that pins 7 and 14 were unused), and it requires that               |
discrete components immediately above, below and to each side
of E4 be removed (be careful not to remove the power supply
decoupling capacitor below E4).  3 jumpers must then be installed:

   From pin 7 to ground (the left end of a nearby decoupling capacitor).
   From pin 14 to +5 (the right end of a nearby decoupling capacitor).
   From pin 13 to pin 8.

All these jumpers should be 30 gauge wire-wrap wire so that there is room
to put the jumper in the same hole as other component leads.  If your
oscillator has a metal can, mount it with a plastic shim (DigiKey K266-ND,
an OK Socket-Wrap ID tag, should work) so the case doesn't short to any
traces on the board below it.


6) Cables

      \\____//
 ______||__||______
| o  ____        o
|   |_   |
|     |  |    The cable plugged into the Berg connector determines whether
|     |  |    the board uses a current loop interface or an RS 232 interface.
|     |  |
|     | B|    The following connector hardware will mate with the Berg
|     | E|    connector on the board (DigiKey part numbers for AMP parts):
|     | R|
|    _| G|        ASC40G-ND  40 pin gold socket connector
|   |____|        ASSR40-ND  strain relief for above
                  ASPT40-ND  pull tab to make it easy to unplug

For an RS232 interface, you need the equivalent of DEC's BC01V cable.  This
mates with the Berg connector at one end and has a male DB25 connector at
the other end, in conformance with the RS232 specification.  For a current
loop interface, you need a 7008360 cable with a Mate-N-Lock connector at
the far end.

