|
The Memotech MTX Series |
|
MTX PC Keyboard Interface
This section describes the development of a PC keyboard interface for
the Memotech MTX computer.
This project is an offshoot of
MTXPlus+, our modern day, (almost) fully compatible, MTX
"super computer".
The prototype I/O interface board for MTXPlus+ incorporated a keyboard
interface using TTL logic, cloned from the original MTX computer
design, allowing an original MTX computer keyboard to be used on MTXPlus+. That
was great for users who had access to a MTX computer or spare
MTX keyboard, but for others, this was going to be
something of a problem. I had always intended to have a PS/2
keyboard interface for MTXPlus+ and had a draft (untested)
design using a couple of Altera MAX 7000 series CPLDs. Two were
required to provide sufficient logic capacity to do the
interface logic and keyboard decoding. As well as the cost, this
solution, although workable, took up quite a bit of space on the
I/O board that could potentially be used for other purposes if
the keyboard logic footprint could be reduced.
In 2017, Bill Brendling had helped Martin and I incorporate
his 80 column video board design into
CFX, our Compact Flash "disk" system for an unexpanded MTX
computer, to give MTX computer users the ability to run 80
column CP/M. Bill's 80 column card design is based on a
Parallax Propeller microcontroller. I asked Bill if he could
work his magic with the Propeller and come up with a PS/2
interface for MTXPlus+ to reduce the I/O board space requirement.
MTX Keyboard Interface
For a detailed description of the MTX keyboard interface,
take a look at my
keyboard
technical note, but in brief, the MTX matrix keyboard is divided into 8 sections, each
managing up to 10 keys, giving 80 possible key codes, of which
77 are used in an MTX. The keyboard is read using two I/O ports
which "drive" and "sense" the status of the lines of the 8 x 10
matrix.
Output port 5 is used to drive one of the 8 control lines
which selects which section of the keyboard that you want to
read. A 74LS273 Octal "D" type flip-flop (board location 3A)
latches the data line values onto the 8 drive lines, DR0 to DR7
when "clocked" by a write to Output Port 5. In this context,
each flip-flop is effectively a memory cell, storing the value
of the bit until the next time that the gate is "clocked" by an
OUT(5) command.
A 74LS244 Octal Buffer/Line Driver (board location 2A) passes
the sense data values from the 8 least significant bits of the
10 read lines back onto the data-bus under the control of Input
Port 5. Similarly, the 74LS244 Octal Buffer/Line Driver (board
location 1D) passes the sense data values from the 2 most
significant bits of the 10 read lines back onto the data-bus
under the control of Input Port 6.
Propeller Logic
Requirements
For the Propeller PS/2 keyboard interface to be "plug &
play", the firmware would need to drive the Propeller to mimic
the behavior of the MTX drive and sense lines, i.e., detecting
which drive line was currently latched low, then setting the
appropriate bit in response to a key press. Since the drive
lines are latched by the MTX keyboard interface, the propeller
does not need to monitor I/O port OUT(5) , the propeller can
just read the status of the drive lines to see which line is
latched.
Bill quickly came up with a potential solution and Martin
built a prototype board for testing on his MTXPlus+ and MTX
computers. This worked well and satisfied my original
requirement but Bill was able to take it a step further and
developed logic that can handle both PS/2 and USB keyboards.
Development
To reduce the size of this page, I have split description of
the development of the PC keyboard interface to create separate
pages for the hardware design and
firmware development. Bill has
written a really good description of the Propeller code, it is
reproduced on the firmware page,
along with firmware downloads.
Current Status - July 2018
Results to date have shown that all PS/2 keyboards, or dual
mode keyboards in PS/2 mode, work without issue.
A small number of USB keyboards have been found to have
issues, they are not being recognised by the Propeller
initialisation code. At this point, it is thought that this may
be an issue with high speed USB keyboards. This problem is not
likely to be fixed, or indeed, fixable. In my tests, the USB
failures have been with dual mode keyboards which have worked
fine in PS/2 mode. If your USB keyboard
does not work with the interface, then you will either need to
try another one, or switch to a PS/2 keyboard.
If you are using a keyboard not recorded in the table,
please let me know and I will update it. The more (successful)
test results we have, the more confident we can be that
additional keyboards are likely to work.
Keyboard
Test Results |
Manufacturer |
Model
Number |
Type |
Result |
Comments |
Ares |
K5 Rainbow
Gaming Keyboard |
USB |
Pass |
|
Cherry |
ML4100 USB
(D-91275) (Compact keyboard with USB plug) |
USB |
Fail |
USB mode selected on PCB |
PS/2 |
Pass |
PS/2 mode selected on PCB |
Chicony |
KB-5916 |
PS/2 |
Pass |
|
CIT |
KBMS-001 |
USB |
Pass |
|
Compaq |
KB-0133 (Assy
P/N 265987-038 UK) |
PS/2 |
Pass |
|
HiPoint |
KBH-510
(Cheap (£5) from eBay, with USB plug) |
USB |
Fail |
USB mode selected on PCB |
PS/2 |
Pass |
PS/2 mode selected on PCB |
Logitech |
Classic New
Touch Keyboard 200 |
USB |
Pass |
|
Microsoft |
Wireless
Multimedia 1.1 1014 |
USB |
Pass |
Type WUR0445 |
|
|
|
|
|
|
|
|
|
|
Availability
At this point, it meets my original design goal of allowing a
PS/2 keyboard to be used with an MTX computer with the added
benefit of also supporting (most) USB keyboards. The board is now available for purchase for anyone interested
in connecting a PC keyboard to their MTX.
The price is £40.00 + postage. The price includes an assembled interface PCB, short
jumper leads used to harvest power from the MTX computer PCB, a
short Type A USB header cable and a PS/2 to USB adapter. If you
are interested,
please drop me an email.
Please make sure that you are confident in your ability to
install it before purchasing. Read this
page first or
contact me to discuss further.
Available July 2018 |
Board
Rev |
Firmware+ |
Serial |
Status, Feedback |
Owner |
1.0 |
180610 |
1 |
Installed, Tested, Working |
DS |
1.0 |
180610 |
2 |
Installed, Tested, Working |
MA |
1.0 |
180610 |
3 |
Received, no feedback |
CD (us) |
1.0 |
Build --- |
4 |
|
|
1.0 |
Build --- |
5 |
|
|
1.0 |
Build --- |
6 |
|
|
1.0 |
Build --- |
7 |
|
|
1.0 |
Build --- |
8 |
|
|
1.0 |
Build --- |
9 |
|
|
1.0 |
Build --- |
10 |
|
|
Shipping address UK unless
otherwise noted (by Country Code) |
For firmware upgrades,
see here |
|