Looking for TRS-80 Model parts (and/or someone in the Phoenix, AZ area)

Kelly Leavitt kelly at catcorner.org
Tue Apr 25 08:28:38 CDT 2017

On 4/25/2017 at 3:55AM, Geoffrey Reed wrote:
> In the ³spare² sectors on the xenix 3.2 media there is information on
> hooking a Tandy 2000? Keyboard to a 16/6000 I forget which disk it is on
> :(  was told about it years ago by the xenix specialist at a RS computer
> center store

It's not that easy. It's a chicken and egg thing. You have to have the original keyboard to copy in the new z80ctl and related files, then wire up the 2000 keyboard.

Here are the instructions, I have the install software as well as the instructions for changing the 68000 to a 68010 if anyone is interested.
README starts here
          Z80 Control System  Version 3(121) and later
             18-Oct-87    710185

The instructions and files enclosed in this area allow owners of
Tandy Model 16A, 16B and Tandy 6000 systems to use the keyboard that is
made for the Tandy 2000/1000 family as the console keyboard.

On most systems, word processors and other applications are typically
difficult to use because of the limited functionality of the standard
16B/6000 keyboard.  These changes will allow you to use the console
to its full potential.  It will become a workstation people will
want to use.


At this time, these modifications ARE NOT officially supported or
approved by Tandy Corporation or Radio Shack.   The contents of
this tar file are provided "as is", without any warranty of any
kind.  It is entirely the responsibility of the user to determine
whether these files should be used with the users' system.   The user
shall make any adjustments or corrections necessary to use these materials.
By providing these materials, it should be understood that there is
no commitment of any kind to provide these materials in a supported form
in the future.

When reporting problems with your system or obtaining service, make sure
the problem persists when running with the standard release of the
operating system and the standard keyboard.  Problems that occur when
using the items in this tar archive may not be responded to and may not
be corrected.

The modifications have been heavily used on the systems used by the
XENIX System Programmers and other systems with few problems.  (Some
application software does not like the code sequences generated by the
arrow keys.)  Since no hardware modifications need to be made to the existing
keyboard or computer,  you can easily switch to the stock 3.2.0 operating
system if you suspect a problem, or when taking your system in for service.


Both the original 16B/6000 and the 2000 keyboard use a serial transmission
method, where the data is sent to the computer via a data and clock signal.
The 16B/6000 keyboard produces 8 bit ASCII characters, and sets the
high bit on some characters to increase the number of codes.
The 2000 keyboard produces 8 bit scan codes, generating one code when the
key is pressed and one when it is released.  Most keys also repeat
the "press" scan code if they are held down long enough.  It is up to
software to translate the scan code into a character, and to keep track
of the SHIFT, CTRL and ALT keys, changing the generated character accordingly.

Because the electrical interfaces are almost identical, the only thing
that prevents the 2000 keyboard from being used is the extra software that
is required to generate ASCII from the scan codes.

Starting with z80ctl 3(122), which is included in this area, the software
necessary to operate both the 16A/16B/6000 and the 2000 keyboards is

To make XENIX easier to use with the new keyboard and keep compatibility
with the old keyboards is a complicated task.


When you reach the Xenix Boot> prompt, a decision is made as to what type
of keyboard you have.  At this point, the first key pressed is of a
small group, and the system uses this to determine
what type of keyboard you have.  If you press some other key as the
first key, the system may ignore that key or select the wrong
keyboard type.  This is because some scan codes look exactly like normal
ASCII characters, and the boot track can make a mistake and select
the wrong keyboard type. If this happens, press RESET and try again, this
time avoiding pressing one of the "collision" keys.
The keys that the system "expects" as the first key struck are:
    d  h  x  z  <ENTER> <BACKSPACE> <F1> <F2> <CTRL><D> <?> <ESCAPE>

If you have autobooting enabled, then it is possible that no key will be
pressed when the system reboots.  When this happens, the boot code first
looks to see if z80ctl left the keyboard type in memory from the last time
it was running.  (This is always true after a shutdown, and usually
true after a crash.)  If there has been a power failure or some other
program has been run (like diskutil), this information may not
be present.  In that case, the boot track selects the default keyboard
type by looking on the hard disk.  This value is set to Model 16B/6000
by default, and can be changed using Patch to select the 2000 keyboard.
(Information on the one byte patch is provided below.)


There are three major steps below.  You will need to obtain the keyboard,
perform one of the two modifications listed, and install the software.

Obtaining the 2000 keyboard

    The first step is to obtain either a 1000 or 2000 keyboard.
    If you have a 2000 or 1000 system, you may want to get a new
    keyboard anyway as the modifications you may have to make
    may prevent it from working with the 2000 or 1000 computer
    without removing them.

    The part number for the 2000 keyboard is:
    AXX-0225    KEYBOARD, M2000 W/CASE&CBL    $183.93/EA

    However, this part has recently been placed on the "No Longer
    Available" list, and may not be obtainable.  It may be
    possible to obtain the equivalent by ordering the individual
    parts as follows:
    AXX-0220    90 KEY KEYBOARD            $100.77/EA
    AW-3203        KBD CABLE (2000)        $7.80/EA
    AZ-7114        KEYLID BOTTOM            $8.67/EA
    AZ-7121        KEYLID TOP (BEZEL)        $4.52/EA
    AHD-2773    SCREW 6x7/16 PPH (8 required)    $1.00/EA

    If you are unable to obtain all of these parts, then you
    can obtain a 1000 keyboard and either replace the connector
    or the entire cable with the cable used on the 2000 keyboard.
    Here is the 1000 keyboard part number:
    AXX-0235    KEYBOARD ASSY, MOD 1000    CMPLTE    $117.53/EA

    You may now either replace the connector with a DIN-5
    Cat. No. 274-003 $1.59/EA, or you can replace the entire cable
    and connector by ordering the 2000 keyboard cable:
    AW-3203        KBD CABLE (2000)        $7.80/EA

    All the prices are subject to change and availability, so
    contact your local store or National Parts for more information.

    Once you have obtained the equivalent of a 2000 keyboard and
    cable, follow the instructions below.  Be sure to use the
    instructions that are meant for the type of machine you own.

Instructions for connecting the 2000 keyboard to a Model 16A.

    If you have a Model 16A (identified by having the keyboard
    cable plug into a plug built into the keyboard), then
    no modification to the keyboard is required at all.  You
    must construct a gender-converting cable.  This can be
    built using a piece of five conductor wire and two
    female DIN-5 connectors.   The connectors are available
    from Radio Shack, Cat No. 274-006, and were $1.59 ea. in the
    1987 catalog.

    When wiring the cable, simply connect pin 1 to pin 1, 2 to 2, etc.
    The pins are marked, but are sometimes hard to see except
    under a strong light.  After you complete the assembly, you
    should use an ohmmeter to confirm there are no shorts and that
    the wiring is correct.

    Now skip down to the software installation instructions.

Instructions for modifying the 2000 keyboard for the 16B and 6000.

1.    Place the 2000 keyboard on a cloth with the keys facing downwards.
    Lower the tilt-feet if they are raised.  Then place a piece of
    scotch tape across each leg and the back to prevent it from moving.

2.    Remove the nine screws on the bottom.  Now, hold the keyboard with
    two hands and turn it over, making sure none of the screws are lost.
    Once this is done, gently lift the top half of the cover and set
    it aside.  If the tilt-feet assemblies slip out of position, push
    them back into place now.

3.    Locate the AMP connector on the keyboard where the coiled cable
    connects to the keyboard PCB.  Unplug this connector.  On some
    units a glob of glue was used to keep the connector from slipping
    off.  This must be removed before the connector can be

4.    Hold the plug and write down the color of the wires and which
    position they have in the connector.  A typical arrangement is:

        +------------------+  <---plug end away from you
        ! 1  x  3  4  5  6 !
        !                  !
        ! !  !  !  !  !  ! !  <---side with slits facing up
        ! !  !  !  !  !  ! !
        ! ^  !  ^  ^  ^  ^ !  <---locking hook (in slit)
        !                  !
          B  N  G  Y  R  B    NOTE:  SOME CONNECTORS WERE
          l  o  r  e  e  a           ASSEMBLED UPSIDE-DOWN AND
          a     e  l  d  r           ARE PLUGGED IN UPSIDE-DOWN.
          c  W  e  l     e           IF YOUR WIRING IS EXACTLY
          k  i  n  o                 BACKWARDS OF THE DRAWING,
             r     w               MAKE SURE YOUR CONVERTED
             e                   HOOKUP IS ALSO BACKWARDS.

5.    By using the tip of a fine screwdriver or an X-acto knife, you
    can remove the pins from the connector shell by pressing down
    on the locking hook on each contact.  These can be accessed
    through the slits as shown in the illustration above.  By pressing
    down (with mild force) on the metal at the end of the
    slit, the wire (and the pin) for that pin can be pulled out
    of the connector shell.  It may require a third hand for this
    step;  one to hold the connector, one to push the pin and one
    to pull on the wire.

6.    You will reposition the wires and re-insert them into the connector.
    If your wires had the same colors as the example, your re-worked
    connector should look like this:

        +------------------+  <---plug end away from you
        ! 1  x  3  4  5  6 !
        !                  !
        ! !  !  !  !  !  ! !  <---side with slits facing up
        ! !  !  !  !  !  ! !
        ! ^  !  ^  ^  ^  ^ !  <---locking hook (in slit)
        !                  !
          B  N  Y  B  G  R
          l  o  e  a  r  e
          a     l  r  e  d
          c  W  l  e  e
          k  i  o     n
             r  w

    When re-inserting the pins into the connector shell, make sure
    the locking hook is facing towards the slit.  Once inserted,
    the pin should lock in place and a gentle tug should not dislodge
    it.  If the pin will not stay in the connector, then spread
    the halves of the pin apart slightly and re-insert it.

    It is highly important to get the re-wiring correct.  +5 and Ground
    are present in the cable and if +5 is shorted to ground, a
    fuse inside the 16B/6000 will blow, requiring disassembly of
    the 16B/6000 computer to fix.

    If your wires do not match the above color code, it is
    suggested that you write the names of the colors listed in the first
    illustration on pieces of tape and attach those names to the
    wires as shown in the illustration, IGNORING the actual colors
    of the wires.  Then re-wire the connector based on the labels.
    Leave the labels on after finishing your work so that you can
    undo your work if you ever want to use the keyboard on a 2000
    or 1000 system in the future.

7.    Re-assemble the keyboard by placing the top half over the keyboard.
    Then turn the keyboard upside down, and re-insert the screws.
    Make sure the tilt-legs are still lined up properly.

Installing the software

    Before hooking up your modified keyboard, you need to install
    the software to utilize it.  The enclosed install script will
    install the files and make the necessary changes to /etc/termcap.

    Once you have shut XENIX down, leave the computer turned on
    and plug in the 2000 keyboard.  Immediately press the CAPS
    key.  If the light does not come on instantly, turn the computer
    off at once or unplug the keyboard.  Failure of the light to
    illuminate indicates one of the modifications is incorrect.

    Plug your old keyboard back in and turn the computer back
    on.  Press the CAPS key and confirm that the light comes on.
    If it does not, then you have blown the keyboard fuse inside
    the 16B/6000 and it must be replaced before any console
    keyboard will function.  The computer must be disassembled
    to reach the inline fuse holder, located near the keyboard

    If the CAPS light did operate on the 2000 keyboard, press RESET
    and at the Xenix Boot> prompt, press <ENTER>.  The word 'xenix'
    should appear.  When XENIX starts running, an asterisk should
    appear in the top right corner of the screen.  This indicates
    that the system thinks you have a 2000 keyboard.

    If you did not allow the script to change the /etc/ttytype file,
    you should do that now manually so it reflect the keyboard you
    plan to use.

Additional information

    At this time, diskutil does not know about the 2000 keyboard.
    Your existing 16/6000 keyboard must be used when using diskutil.
    This should not be a serious problem, since floppies and
    disk cartridges can be formatted while running XENIX.
    You can switch back and forth between keys while at the
    Xenix Boot> prompt as long as you press RESET after connecting
    the keyboard you are about to use.

    In the case of unattended power failures, some systems are
    configured to autoboot.  In this case, there will be no information
    in RAM on what keyboard is present.  In this event, the boot track
    examines a location on the disk.  You can use the patch utility to
    indicate what type of keyboard to use when the boot track is unsure.
    The byte in /dev/hdbt0 at offset 0x10 controls what keyboard
    will be used.  A zero indicates the 16B/6000 keyboard should
    be assumed.  A 0x01 indicates the 2000 keyboard should be assumed.

    The files in this directory may be used by any system that is
    using XENIX 3.2.0.  Earlier versions will not boot successfully.
    The development system is not a requirement for using these

    Although there are several international versions of the 1000 and
    2000 keyboards, they are not supported by this software and
    may not function.  This software is intended for use with the
    90-key (USA) keyboard.

    Because the 16/6000 hardware does not reset the keyboard microprocessor
    when RESET is pressed, the status of the CAPS and NUM LOCK keys
    will be unknown to XENIX when it boots.  XENIX always assumes
    that CAPS LOCK and NUM LOCK are NOT lit when XENIX boots.
    If that is not the case, you will have to press the CAPS or NUM LOCK
    key once to get XENIX in sync with the keyboard.

Keyboard Codes

    The following is a table of the codes produced when keys are
    pressed using the 2000/1000-style keyboard under XENIX.
    The majority of the codes are generally what would be
    received in a MS-DOS environment and should make the conversion
    of software easier.  On "Extended" character codes, a 0xff is
    prefixed to the code.  (In MS-DOS systems, the prefix byte was 0x00.)

    The table is shown assuming NUM LOCK is ON and CAPS LOCK is OFF.

Key             Unshifted        Shifted          Ctrl            Alt

<Escape>    0x1b (^[)    0x1b (^[)    0x1b (^[)    0xff8b
<1>        0x31 (1)    0x21 (!)    0x7c (|)    0xff78
<2>        0x32 (2)    0x40 (@)    0x00        0xff79
<3>        0x33 (3)    0x23 (#)    0x1d        0xff7a
<4>        0x34 (4)    0x24 ($)    0x1e        0xff7b

<5>        0x35 (5)    0x25 (%)    0x1f        0xff7c
<6>        0x36 (6)    0x5e (^)    0x7e (~)    0xff7d
<7>        0x37 (7)    0x26 (&)    0x1c        0xff7e
<8>        0x38 (8)    0x2a (*)    ----        0xff7f
<9>        0x39 (9)    0x28 (()    0x5c (\)    0xff80

<0>        0x30 (0)    0x29 ())    0x7c (|)    0xff81
<->        0x2d (-)    0x5f (_)    0x1f        0xff82
<=>        0x3d (=)    0x2b (+)    ----        0xff83
<Backspace>    0x08        0x08        0x7f (delete)    0xff8c
<Tab>        0x09        0xff0f        0xff8d        0xff8e

<Q> **        0x71 (q)    0x51 (Q)    0x11        0xff10
<W> **        0x77 (w)    0x57 (W)    0x17        0xff11
<E> **        0x65 (e)    0x45 (E)    0x05        0xff12
<R> **        0x72 (r)    0x52 (R)    0x12        0xff13
<T> **        0x74 (t)    0x54 (T)    0x14        0xff14

<Y> **        0x79 (y)    0x59 (Y)    0x19        0xff15
<U> **        0x75 (u)    0x55 (U)    0x15        0xff16
<I> **        0x69 (i)    0x49 (I)    0x09        0xff17
<O> **        0x6f (o)    0x4f (O)    0x0f        0xff18
<P> **        0x70 (p)    0x50 (P)    0x10        0xff19

<[>        0x5b ([)    0x7b ({)    0x1b        ----
<]>        0x5d (])    0x7d (})    0x1d        ----
<Enter>        0x0d        0x0d        0x0a        0xff8f
<A> **        0x61 (a)    0x41 (A)    0x01        0xff1e
<S> **        0x73 (s)    0x53 (S)    0x13        0xff1f

<D> **        0x64 (d)    0x44 (D)    0x04        0xff20
<F> **        0x66 (f)    0x46 (F)    0x06        0xff21
<G> **        0x67 (g)    0x47 (G)    0x07        0xff22
<H> **        0x68 (h)    0x48 (H)    0x08        0xff23
<J> **        0x6a (j)     0x4a (J)    0x0a        0xff24

<K> **        0x6b (k)    0x4b (K)    0x0b        0xff25
<L> **        0x6c (l)    0x4c (L)    0x0c        0xff26
<;>        0x3b (;)    0x3a (:)    0x7e (~)    ----
<'>        0x27 (')    0x22 (")    0x60 (`)        ----
<Up Arrow>    0xff48        0xff85        0x1e        0xff91

<Left Arrow>    0xff4b        0xff87        0xff73        0xff92
<Z> **        0x7a (z)    0x5a (Z)    0x1a        0xff2c
<X> **        0x78 (x)    0x58 (X)    0x18        0xff2d
<C> **        0x63 (c)    0x43 (C)    0x03        0xff2e
<V> **        0x76 (v)    0x56 (V)    0x16        0xff2f

<B> **        0x62 (b)    0x42 (B)    0x02        0xff30
<N> **        0x6e (n)    0x4e (N)    0x0e        0xff31
<M> **        0x6d (m)    0x4d (M)    0x0d        0xff32
<,>        0x2c (,)    0x3c (<)    ----        ----
<.>        0x2e (.)    0x3e (>)      ---- ++        ----

</>        0x2f (/)    0x3f (?)    0x5c (\)    ----
<Print>        ----        ----        0xff72        0xff46
<Space>        0x20 ( )    0x20 ( )    0x20 ( )    0xff20
<F1>        0xff3b        0xff54        0xff5e        0xff68
<F2>        0xff3c        0xff55        0xff5f        0xff69

<F3>        0xff3d        0xff56        0xff60        0xff6a
<F4>        0xff3e        0xff57        0xff61        0xff6b
<F5>        0xff3f        0xff58        0xff62        0xff6c
<F6>        0xff40        0xff59        0xff63        0xff6d
<F7>        0xff41        0xff5a        0xff64        0xff6e

<F8>        0xff42        0xff5b        0xff65        0xff6f
<F9>        0xff43        0xff5c        0xff66        0xff70
<F10>        0xff44        0xff5d        0xff67        0xff71
<Hold>        Alternately generates a 0x13 (^S) and 0x11 (^Q)
{7} +        0x37 (7)    0x5c (\)    0xff93        *

{8} +        0x38 (8)    0x7e (~)    0xff94        *
{9} +        0x39 (9)    0xff49        0xff84        *
<Down Arrow>    0xff50        0xff86        0xff96        0xff97
{4} +        0x34 (4)    0x7c (|)    0xff95        *
{5} +        0x35 (5)    0x35 (5)    ----

{6} +        0x36 (6)    0x36 (6)    ----        *
<Right Arrow>    0xff4d        0xff88        0xff7f        ----
{1} +        0x31 (1)    0xff4f        0xff75        *
{2} +        0x32 (2)    0x60 (`)    0xff9a        *
{3} +        0x33 (3)    0xff51        0xff76        *

{0} +        0x30 (0)    0xff9b        0xff9c        *
<Delete>    0x2d (-)    0xff53        0xff9d        0xff9e
<Break>        0x03        0x03        0x03        0xff03
<Insert>    0x2b (+)    0xff52        0xff9f        0xffa0
{.}        0x2e (.)    0xffa1        0xffa4        0xffa5

{Enter}        0x0d        0x0d        0x0a        0xff8f
<Home>        0xff47        0xff4a        0xff77        0xffa6
<F11>        0xff98        0xffa2        0xffac        0xffb6
<F12>        0xff99        0xffa3        0xffad        0xffb7

    ----    No code is produced for this keystroke sequence

    *    While the ALT key is held down, any keys that are
        pressed on the numeric keypad are saved.  When the ALT
        key is released, the resulting decimal number is converted
        to binary and passed to XENIX as a single 8 bit character.
        If more than three keys are pressed, only the last three
        are used.  The most significant digit is entered first. If
        a number larger than 255 is entered, it will be output
        as modulo-256.  To produce multiple characters, the ALT
        key must be released, then pressed and a new sequence can
        be entered.

    **    When CAPS LOCK is on, the codes listed in the Shifted
        column will be produced even when unshifted.

    +    When NUM LOCK is OFF, the codes listed in the
        Unshifted and Shifted columns are exchanged.

    ++    This keystroke toggles the screen saver on and off.
        XENIX will not see a character when this key is pressed.
        When the screen saver is enabled, the screen will go
        dark at once as a confirmation.  The next key pressed
        (ANY key including SHIFT and CTRL) will turn the display
        back on.

More information about the cctech mailing list