Subject: KL8/E (M8650) Technical Notes

From: [email-masked] (Douglas W. Jones,201H MLH,3193350740,3193382879)
Date: Wed, 24 Feb 1993 14:05:52 GMT

The following is the first of what I hope will be an irregular and
infrequent series of postings describing some of the more popular
boards for the 8/E, 8/F and 8/A.  If anyone cares to help with details
on other boards, please do!  I have an M8655, in particular, that I
know next to nothing about!  I did this board first simply because I have
three of them and I have plans and DEC's technical specifications.

==========================================================================

Technical notes for the M8650 KL8E OMNIBUS asynchronous interface board

by Douglas Jones
[email-masked]

The M8650 board supports asynchronous communications at a variety of
baud rates, with either an RS232 or a current loop interface.  The board
is, effectively, equivalent to a UART chip, but it is made with SSI and
MSI chips.  Most of the options that might be programmable in a modern
UART chip are available, but they are selected by jumpers or part
changes on the board.

General geography of the M8650 board:

      \\____//           \\____//          \\____//           \\____//
 ______||__||_____________||__||____________||__||_____________||__||_____
| o  ____        o   o              o  o    _         o   o   9 7531     o|
|   |_   |                         |_|     | |   _    _  o1_  o oooo  _   |
|     |  | |||||||| ||             [_]     | |  | |  | |Ho2 |   G 42 | |  |
|     |  |  O|||O|H H|                     |_|  | |  | | o| | o oooo | |  |
|     |  |  |   | H H             o1            |_|  |_| 3|_|10 86   |_|  |
|     | B|      + | |             2 _                                     |
|     | E|                _       o| |      _    _    _    _    _     _   |
|     | R|               | |      J| |     | |  | |  | |  | |  | |   | |  |
|    _| G|               | |      o|_|     | |  | |  | |  | |  | |   | |  |
|   |____|               |_|      3        |_|  |_|  |_|  |_|  |_|   |_|  |
|                                                                         |
|    _    _    _    _     _     _     _     _    _    _    _    _     _   |
|   | |  | |  | |  | |   | |   | |   | |   | |  | |  | |  | |  | |   | |  |
|   | |  | |  | |  | |   | |   | |   | |   | |  | |  | |  | |  | |   | |  |
|   |_|  |_|  |_|  |_|   |_|   |_|   |_|   |_|  |_|  |_|  |_|  |_|   |_|  |
|                                                                         |
|    _    _    _    _     _     _     _     _    _    _    _    _     _   |
|   | |  | |  | |  | |   | |   | |   | |   | |  | |  | |  | |  | |   | |  |
|   | |  | |  | |  | |   | |   | |   | |   | |  | |  | |  | |  | |   | |  |
|   |_|  |_|  |_|  |_|   |_|   |_|   |_|   |_|  |_|  |_|  |_|  |_|   |_|  |
|                                                                         |
|    _    _    _    _     _     _     _     _  oooooo _    _  oooooo  _   |
|   | |  | |  | |  | |   | |   | |   | |   | |       | |  | |        | |  |
|   | |  | |  | |  | |   | |   | |   | |   | | F E D | |  | | C B A  | |  |
|   |_|  |_|  |_|  |_|   |_|   |_|   |_|   |_|       |_|  |_|        |_|  |
|                                              oooooo         oooooo      |
|_                __||               _||               __||              |
  |              |   |              |  |              |   |              |
  |______________|   |______________|  |______________|   |______________|

Given an M8650 board, various optional parts and jumpers 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) General baud rate considerations

      \\____//           \\____//
 ______||__||_____________||__||___________
| o  ____        o   o              o  o
|   |_   |                         |_|
|     |  | |||||||| ||             [_]<Crystal
|     |  |  O|||O|H H|                    14.418 MHz for 110 baud
|     |  |  |   | H H                     19.6608 MHz for all others.
|     | B|      + | |                     (in the latter case, the
|     | E|      ^                         board is designated M8650 YA)
|     | R|  Unless the board is to be
|    _| G|  used with a 110 baud current  The CTS MP196 19.6608 MHz
|   |____|  loop interface, this 0.47 uf  crystal, sold by DigiKey as
            capacitor may be removed.     part CTX090 works here.
            If the board is to be used
            with a current loop interface
            at over 110 baud, this must
            be halved for every doubling
            of the baud rate, but it is
            usual to just remove it.

2) Jumpering for data format               \\____//           \\____//
                                   _________||__||_____________||__||_____
                                    o  o    _         o   o   9 7531     o|
                                   |_|     | |   _    _  o1_  o oooo  _   |
                                   [_]     | |  | |  | |Ho2 |   G 42 | |  |
                                           |_|  | |  | | o| | o oooo | |  |
                 Jumper group J > o1            |_|  |_| 3|_|10 86   |_|  |
                                  2 _                    ^
         The factory installed    o| |      Jumper group H
         jumper (a zero ohm       J| |
         resistor between lugs    o|_|  The factory installed jumper (zero
         2 and 3) gives 2 stop    3     ohm resistor) between lugs 1 and 2
         bits.  Cut it and solder       gives the same baud rate for transmit
         a jumper from lug 1 to 2       and receive.  Consult DEC's drawings
         for one stop bit.              For the effects of alternatives here.

3) Jumpering for a specific baud rate.     \\____//           \\____//
                                         ___||__||_____________||__||_____
                                                      o   o   9 7531     o|
       Jumper group G gives the baud rate        _    _  o1_  o oooo  _   |
                                                |E|  | |Ho2 |   G 42 |E|  |
       Only one jumper should be present in     |2|  | | o| | o oooo |0|  |
       this group!                              |2|  |_| 3|_|10 86   |5|  |

           7 to 8  --  110 baud or 150 baud (depending on crystal)
           5 to 6  --  300 baud
           3 to 4  --  600 baud
           1 to 2  -- 1200 baud
           9 to 10 -- 2400 baud

       The following "unofficial" jumperings between pins of E05 (the IC
       in the upper right corner of the board) and the adjacent trace can
       be used for higher baud rates.  Electrically, these are all parts
       of jumper group G.                                    \\
                                                       __ __  \\
           8  --   4800 baud                         =|1  14|= ||<jumper
           9  --   9600 baud                         =|     |= || to this
           12 --  19200 baud                         =|   12|= || trace.
           14 --  38400 baud                         =| E05 |= ||
                                                     =|     |= ||
       In addition, long jumpers from pins of E22    =|    9|= ||
       to lug number 9 of jumper group G can be      =|____8|= ||
       used for even higher nonstandard rates.                 ||
       With these high rates, special short cables may
       be required!  The 314400 baud rate is pushing the limits
       of the frequency divider circuitry by cutting out most of the
       synchronous counter in E22 and shunting a 9.8 MHz signal
       directly into asynchronous circuitry rated at 10 MHz.
                                                                   9   7 5
           6  --  78600 baud    __ __                              o   o o
           2  -- 157200 baud  =|     |=     __ __       __ __
           3  -- 314400 baud  =|2    |=    |     |     |     |         G
                              =|3    |=    |     |     |     |
                              =| E22 |=    |     |     |     |     o   o o
                              =|     |=    |     |     |     |    10   8 6
                              =|6    |=    |     |     |     |
                              =|     |=    |     |     |     |
                              =|_____|=    |_____|     |_____|

4) Jumpering for the device address.

Jumper groups F, E, D, C, B and A give      _  oooooo _    _  oooooo  _   |
the device addresses for the input and     | |       | |  | |        | |  |
output ports.                              | | F E D | |  | | C B A  | |  |
                                           |_|       |_|  |_|        |_|  |
Each jumper group is physically                oooooo         oooooo      |
set up as follows:                   _||               __||              |
                                       |              |   |              |
   2  1                                |______________|   |______________|
   o  o

   |  |  factory installed zero ohm resistors for the
   O  O <default address.  Although they look like they
   |  |  go from 2 to 4 and 1 to 3, they don't!

   o  o
   4  3     The layout of the lugs in each jumper group is almost random!
            Here it is, in detail:

            - r  - t  r -      r -  r -  t -    r = receive address bit
             F    E    D        C    B    A     t = transmit address bit
            MD5  MD6  MD7      MD8  MD3  MD4    - = set bit to zero
            t +  r +  + t      + t  + t  + r    + = set bit to one

The following are popular device address jumperings:

03/04       o-o  o o  o o      o o  o-o  o-o  Note that the wiring of the
  console   |    | |  | |      | |    |    |  split lugs doesn't match the
  default!  |    | |  | |      | |    |    |  apparent layout of the zero
            o o  o o  o o      o o  o o  o o  ohm resistors for the default.

40/41       o-o  o-o  o-o      o-o  o o  o-o
  usual     |    |      |           |      |
  second    |    |      |           |      |
  TTY       o o  o o  o o      o-o  o-o  o o

65/66       o-o  o o  o-o      o o  o o  o o
  usual     |      |           | |  |    |
  serial    |      |           | |  |    |
  printer   o o  o-o  o-o      o o  o-o  o-o

The KL8E board allows arbitrary addresses for transmit and receive, but
by convention, the receive address should always be one less than
the transmit address.

5) 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 (these are DigiKey part numbers):
|     | 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.

The BC01V cable supports most of the RS232 standard, but most devices don't
use more than 9 of the 25 pins in the standard.  The M8650 only requires
three of these, transmitted data (txd), received data (rxd), and ground
(gnd), but it provides support for request to send (rts) and data terminal
ready (dtr) both held high.  The following cable should work with any DEC
board that expects a BC01V cable, so it provides full support for all
9 commonly used signals.

Male DB25 connector                                    Female 40 pin plug
 as seen from back                                      as seen from back

   ---1                                                      A   B
  |       14                      This jumper configures
  |   2-----------.               the M8650 for RS232 use    C   D
  |       15       \                                  \
  |   3---------.   \                                   -----E  ,F  <txd
  |       16     \   \                           ,-----|-------'
  |   4-------.   \   \                         /      |     H  ,J  >rxd
  |       17   \   \   \    ,-----cts>------   /   ,---|-------'
  |   5---------\---\---\--'                 \/   /    |     K   L
  |       18     `---\---\-------<rts------. /\  /     |
  |   6-------.       \   \                 X  \/       -----M   N
  |       19   \       \   `-----<txd------' \ /\
   ---7---------\---.   \                     X  \           P   R
          20--.  \   `---\--------gnd--------/-\--\--.
      8-----.  \  \       \                 /   \  \  \      S  ,T  >cts
          21 \  \  \       `------rxd>-----'     \  `--\-------'
      9       \  \  \                             \     \    U  ,V  <rts
          22   \  `--\-----------<dtr----------.   `-----|-----'
      10        \     \                         \        |   W   X
          23     \     `----------dsr>-----------\--.    |
      11          \                               \  \   |   Y  ,Z  >dsr
          24       `--------------rsd>---------.   \  `--|-----'
      12                                        \   \    |   AA ,BB >rsd
          25                The cable should     `---\---|-----'
      13                    be 25 feet long.          \  |   CC ,DD <dtr
                                                       `-|-----'
8 conductor modular telephone cable works very           |   EE  FF
well for this, assuming that you do not have a           |
high noise environment.                                  |   HH  JJ
                                                         |
The order of conductors shown in the cable above         |   KK  LL
provides some noise immunity by routing the data         |
lines adjacent to the ground line and by surrounding     |   MM  NN
the data by other signal lines that rarely see much      |
use but are likely to be terminated at one end or the    |   PP  RR
other.                                                   |
                                                         |   SS  SS
A DB25 solder cup connector, with individually placed    |
wires works well for the 25 pin connector.               |   UU ,VV
                                                          -----'
At the M8650 end, an insulation displacement connector
such as the DigiKey connector cited above works well with modular telephone
cable, as long as each wire is carefully pressed into the contact forks
by hand (fingernails are useful here!) and as long as appropriate strain
relief is used (the strain relief bar that comes with the connector,
augmented by a cable tie holding the end of the sheathed cable in place).

In cross section, the connector, cable and pull tab are assembled as
follows:
                                                 Free side of the connector
                                       wires
                 ___________________    ||    crimp bar
               |                 ___ \  ||    /  _______
                \        Strain |   | | || -- __|       | Socket
                 \       relief |   | | |||  |__|       | body
                  \              ---  | || -- |||_______|
                    ------------------  ||____||
             Pull tab                    ------   Board side of the connector

   \\        \\____//
    \\  ______||__||______
     \\| o  ____        o
      \\  _|_   |
  ---------| |  |    This shows the finished cable installed on the M8650
 |         | |  |    card.  Note that the pull tab extends beyond the card
 |         H |  |    edge, and note that the cable has been routed through
 |         H | B|    the hollow of the pull tab to a cable-tie at location
 |         H | E|    EE that binds the end of the cable sheath to the
  ---------H | R|    strain relief bar.  The column of H characters shows
       | EEH_| G|    the route of the unsheathed conductors up the side
       |  -|____|    of the connector until they disappear between the
                     strain relief and the crimp bar.  Note that the strain
                     relief has one slightly hollow side.  This should face
                     the PC board to allow clearance for the cable tie
                     between the board and the connector.

6) Null Modems

When used with the BC01V cable, the M8650 conforms to the RS232
specification by having a male 25 pin connector on the far end, configured
as DTE (data terminal equipment).  Assuming the correct baud rate, this
may be plugged into any DCE (data communications equipment) connector,
since these are supposed to be female connectors.

Modems are usually configured as DCE devices, but essentially all other
RS232 devices such as terminals or other computers are usually configured
as DTE devices.  To connect one DTE device to another, for example, to
connect your M8650 to a terminal or another M8650, a null modem is required.

DEC's documentation for the M8650 specifies the H312 null modem.  INMAC
sells an H312A equivalent as part number H298-2, for $25.  You can build
one as follows from a pair of female DB25 connectors, a pair of 1.5 inch
4-40 threaded standoffs, and a few scraps of wire and screws.

           1--------------------------1        Protective ground
      14                         14
           2---------. .--------------2      < Transmitted data (txd)
      15              X          15
           3---------' `--------------3      > Received data (rxd)
      16                         16
   --------4                          4---   < Request to send (rts)
  |   17                         17       |
   --------5--------.   ,-------------5---   > Clear to send (cts)
      18             \ /         18
   --------6          X               6---   > Data set ready (dsr)
  |   19             / \         19       |
  |        7--------/---\-------------7   |    Signal ground
  |   20-----------/-. ,-\-------20       |  < Data terminal ready (dtr)
  |        8------'   X   `-----------8   |  > Received signal detect (rsd)
  |   21             / \         21       |
  |        9        /   \             9   |
   ---22-----------'     `-------22-------   > Ring indicator (rng)
           10                         10
      23                         23
           11                         11  (Note that in this wiring diagram,
      24                         24        all places where 4 wires seem to
           12                         12   meet are really places where two
      25                         25        wires cross without touching!)
           13                         13

The theory behind this is as follows:

 a) txd from one device becomes rxd to the other.
 b) rts from one device becomes cts for that device and rsd for the other.
 c) dtr from one device becomes dsr and rng for the other.

Parts b and c only really matter for devices that use EIA flow control.
Such devices lower dtr to stop the flow of incoming data, and they await
dsr before they send outgoing data.  In addition, they raise rts when
ready to transmit, and they await cts before transmitting.

---

From: [email-masked] (Charles Lasner)
Date: Sun, 28 Feb 1993 15:20:19 GMT

Looking through the Digi-Key catalog, it appears they do sell the 5.0688 and
19.6608 MHz TTL output crystal cans as part# X110 and XC314 respectively.

The M8655 explicitly was ECO'd for this kind of oscillator due to high
cost of the original oscillator which is literally taken from the R405 clock
card which is the original master oscillator for the original 1965 PDP-8.
That circuit uses one of the original large metal can plug-in crystals from
the '50's and a ceramic socket and a grounding clamp-type holder with rubber
cushion, plus some analog components to make it an oscillator.  Most M8655
have been updated, but you can see next to the 5.0688 oscillator can, a
ground pad area formerly occupied by the holder.  They no longer drill the
holes for the metal hold-down clamp though.

The M8650 was considered phased out by the time the M8655 was in vogue.
Remember, the M8655 replaced all known "normal" applications for the M8650,
since by DEC standards it was too unweildy:

1)	Didn't officially go past 2400 baud, and even that was achieved by
an ECO process, meaning in-house politics.  You have to understand that
manufacturing is a defender of the status quo - if a board is being made with a
certain amount of effort, they want to maintain that level of effort and
will not like any changes that increase that effort.  The only way to get
anything past manufacturing is to introduce a new etch.  That cannot be done
here to solve anything.  This kind of bickering is why some of the PDP-8/e
cpu cards are missing ECO's, i.e., they were "waivered" by the Galway, Ireland
plant.  (Worst offender: M8330 past revision L.  Revision M is actually
missing part of what revision L has; you must acquire M8330-YB revision N to
be on a par with revision M of M8330 otherwise; the two cards are always one
letter off!)

2)	Cannot be used as manufactured for both 110 baud and the other rates
150,300,600,1200,2400.  Only the YA variant does the multiple rates while the
standard card is for 110 baud teletypes only.  (And RS-232 lines at 110 baud
which admittedly occasionally happened when the M8650 was in vogue.  But most
had upgraded to 300 or possible 110/300 by then.)

3)	Cannot generate/detect parity.  DEC was starting to consider parity
as an issue by then.  This is one of the reasons for the M8655, which was
the second attempt at a true UART serial card for the Omnibus.  (The M8652
was a rare card known for a high failure rate.  I have only ever seen two
broken ones.  Anyone ever have more experience with that obscure beast?)

4)	Cannot support the VT05 delay.  This is a standard feature of the M8655
although implemented in a gross manner.  The *proper* way to delay the
VT05 is to merely hang the done flag for the proper time when a LF char is
sent.  (This figure is 1/60th of 1/50th of a second depending on local
power requirements; the terminal can be strapped either way to avoid flicker
with the local power frequency.)  Instead, it sends four NUL chars out all
by itself and then raises the done flag after the last of them.  (Note that
this is acceptable for 60 Hz usage for 2400 baud only, while it is an
excessive delay for 1200 and 600 baud, and inadequate for 2400 baud on 50 Hz
systems.)

5)	Isn't easy to field-change the device codes and baud rates.  The M8655
changed all those functions to DIP switches.  M8650 can do it, but it has to
be soldered for any changes.  The M8655 has to be soldered for a few things,
such as parity, number of stop bits, number of data bits, and whether the
highest settable rate (with the DIP switches) is 9600 baud or 19200 baud.
(Lower rates, including 110 baud are unaffected by the soldered jumper change.)

6)	Doesn't have an official way to increase the baud rate for current-loop
connections past 110 baud.  (All you have to do is cut/unsolder one end of a
filtering capacitor, but on the KL8-JA, that's accomplished with an official
split-lug jumper, which politically makes it acceptable.)

So, from DEC's point of view, the KL8E was obsolete.  Of course we know that
it has some other features that make it *more* desirable than the KL8-JA:

1)	Can be strapped for 4800, 9600, 19200, 38400, 76800 and higher values
that are non-standard.  All above 19200 are impossible with the KL8-JA and
that family of UART can't run above 19200; a premium variant could do 38400,
but that's considered an upper limit.  Warning: although pin compatible,
faster UART's such as the CMOS 6402 are not compatible!  Only units truly
compatible with the original GI UART can be used.  Newer designs don't handle
the input character available characteristics the same way, and the design
of the KL8-JA requires the older type.

2)	The KL8E can be programmed to create a BREAK condition on the
output line.  In fact, it's the only serial interface in the entire
PDP-8 line (pre-DECmate) that is capable of creating a break.  This is
necessary for example to interface to the serial DECtape II cassette drive.

The crystal oscillator on the M8330 is the same circuit as the KL8-JA, except
the can frequency is 20 MHz on the CPU, not 5.0688 MHz.  The original version,
found on M8330 below revision L is the identical circuit used on the KL8E.  The
oscillator circuit was deleted and replaced with a can on the M8330 because of
reliability problems.

So, had the M8650 not been phased out by the time the M8330 oscillator was
upgraded, the M8650 clearly would have undergone the same upgrade as the
CPU card.  (You can't use the example of the upgrade to the M8655, since that
was done merely to lower costs; the costs of the original overkill M8655 were
much higher than the costs for the M8650 analog oscillator circuit.  However,
it is conceivable that this design was implemented as a response to the
high failure rate of the older design, which is used in the M8330, the M8650
and the M860 "half" of the DK8EP, and possibly elsewhere.)

I routinely do this upgrade: you just remove the pulse transformer and all
of the surrounding analog components and the crystal can.  Then you place
a jumper from the output pin of the crystal can traces (Yes, the pulse
transformer lands are perfect for soldering in the canned oscillator.  The
+5V and ground leads are already present!) to the land where the original
oscillator output connects to the first divider.  This improves the overall
circuit since the divider is now getting cleaner TTL pulses, not the analog
output of the oscillator as its input.

The only other thing required is the can itself.  I usually put a plastic
pad underneath it to raise it off the board while soldering it in so that
any underlying lands sharp edges don't short to the can case.  Afterwards,
I suck out and solder-fill all of the now-empty lands to give the board a
wave-soldered look.

Overall, I think this is a much better upgrade for an M8650 to become a
useful board than merely changing the crystal, only to find that it fails
later.  Dropping the board even a little is likely to kill the pulse
transformer, so it's better to eliminate this kludge.

cjl