3

I am trying to replicate the IBM System/23 Datamaster keyboard using off-the shelf components. This means that I am using a 8749 instead of the 8048 and some 7400s to replace the LST/MST. For your information, the microcontroller employs a copy of the original keyboard code. However, it doesn't seem to acquire the correct input at the input pin of the microcontroller and as such, it does not register the key.

The most similar keyboard IBM made was "keyboard type 2" as found in the PC/XT technical service manual (D-14, page 480).

I have been able to multiplex the eight output lines from the matrix and latch the result, but something seems to be missing and maybe it is related to capacitance.

4
  • Looking at Wikipedia (which also mentions the Model F used in the Datamaster), 'and thus "shorting" the contact pads with an easily detectable drop of capacitive reactance between them. Usually, this permits a pulse or pulse train to be sensed.' So I guess you need to read repeatedly to detect the pulse/pulse train. But that's just a guess. Commented 2 days ago
  • The pulse train reaches the latch and with that component, it is converted into a single, longer pulse. Still the key does not register. So I imagine that's something related to the nature of the matrix since I am using the original code in the microcontroller. Commented 2 days ago
  • So did you verify with a scope that the pulse train comes out of the latch? It's hard to debug your setup without a diagram and scope results... it's either (1) the latch, or (2) the logic to read the latch, and somehow you must divide-and-conquer and find the location of the problem. Commented 2 days ago
  • Yes, it was verified that the train pulse entered the latch and the resulting long pulse was fed into the microcontroller. The only differences between a Datamaster keyboard and a Pc one (the schematics I have linked) are the interface and the matrix. Commented 2 days ago

2 Answers 2

8

About PC keyboard (your direct question): there is a document about Model F details. It explains the principal routine of capacitive key matrix sensing, sending an impulse (so not a plain voltage as done with a resistor based device) and getting feedback, with timings and diagrams. Not sure it is enough but it definitely provides some clue. You may likely find more data searching all about Model F.

UPD: On advice by @dirkt, I link here the general 8048 description, not only for the capacitive keyboard design, but for the controller in general. It performed the keyboard side for 83/84-key keyboard (at least XT and early AT), but not 101/102-key one which, according to available resources, was implemented with Motorola 6809 and there is no published firmware.

In general, the full repository is useful for an amateur. Previously it was available at halicery dot com; this domain isnสผt in use now but archive.org has its saved copies.

1
  • Please also link to the firmware page, which explains it in more detail. Commented yesterday
3

And piggybacking on @Netch, who did the hard work by finding the references: The firmware page explains (or rather, does an informed guess, as there is an undocumented chip involved) how the actual sensing process works.

I am still not entirely clear about what exactly you are trying to do, but assuming

  • You have an original capacitive keyboard matrix
  • You want off-the-shelf components for the rest
  • You have replaced the 8048 with a 8749, which runs the same code
  • You have replaced the undocumented sense amplifier with some TTL components, probably with a simple MUX (it would help if you had explained what you actually did)

then my assumption would be that you are not replicating the sense amplifier correctly. The explanation reads:

It as an 8-channel multiplexer and a current sense amplifier with variable threshold. The 3 select lines have a double purpose: in RESET mode pulling Q high resets the input select latch, while pulling RESET high latches the threshold value for the comparator between 0..7. In amplification mode (RESET high), when a small current peak is above threshold on the selected input, it outputs low on Q. It seems like the output appears after a positive drive pulse (discharge).

So not only does it multiplex, you also need an analog part that compares a current to a threshold value, with the latching logic and some kind of D/A conversion for the threshold.

The mentioned patent "US4305135: PROGRAM CONTROLLED CAPACITIVE KEYBOARD VARIABLE THRESHOLD SENSING SYSTEM (1979)" may also give more information.

You may also have to tune the threshold table for your particular keyboard matrix:

All other key positions get a value between 1 and 4, probably due to path length, individual stray capacitance and other unknown electrical reasons. Finetuned for a given board.

4
  • 1
    My goal is to replicate the keyboard for its usage in model 5324, which often lose them. I am not using a capacitive matrix, but a regular hardwired matrix with regular keyswitches. Thanks to your input, I have seen many differences with my approach. I latched the output from the multiplexer instead of the input. I haven't connected the required I/O pin of the microcontroller in order to pull the value and finally I haven't implemented the /Reset logic of the MST/LST. With that in mind, I guess I should restart the glue logic design from start or change the MPU and corresponding code. Commented yesterday
  • To be clear, I'm not the halicery user, just referring him... and his work is, really, great. Commented yesterday
  • @BorgDrone changing the code and matching it to your regular matrix + whatever TTL you have is probably the simplest way. Since you need to program your replacement MPU anyway. Commented 23 hours ago
  • @dirkt I don't have the source code, unfortunately. I cannot use the PC firmware as a base either because the interface is completely different. I just dumped the original microcontroller code for preservation and repair purposes and burned it into a blank EPROM-based one. About the matrix, it is structured as the original one. Commented 5 hours ago

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.