Is an Arduino fast enough for monitoring these lines? Too fast?

Hi I am interested in connecting an Arduino to an old Science Fair Microcomputer Trainer. This is mainly as a learning exercise for me on both platforms. The SFMT is a microcomputer based on a TMS-1000 CPU but with added instructions & code. Programs are entered into it via leaf metal contacts that serve as a keypad. The keypad is in a 5 column x 4 row matrix (see picture).

From how I understand it, each column of keys corresponds to one input line on the CPU. Each line is pulsed for 480 milliseconds before the next one is active, through all of them, then the cycle repeats. When a line is active I think the 4 keys in that column are checked for input. In that way a single key is identified. (I forgot key combinations make opcodes that are the instructions.) Assembly language programs are entered this way.

Because it is such a tedious and sometimes troublesome (switch bounce) way to enter programs and no programs can be saved, I was thinking a program of opcodes could be written in a text editor and sent via the Arduino to the SFMT. Is this feasible? I am not clear on monitoring and responding to active line signals. It would almost be like needing a parallel port interface to the Arduino for monitoring those 5 lines but without needing all 8? Would the Arduino and associated code be fast enough to see a line active and send the appropriate key signal for that line in time?

Cheers


That's an awfully long time - are you sure?

1 Like

Ooops. I think I meant 480 microseconds?

Easier would be to place a CMOS switch secretly across every real switch and run those by program from the Arduino just like you pressing buttons.

But a bit faster and more accurately you'd have to keep the speed down so a scan would certainly catch each press.

Or fewer switches possibly but basically hijacking the exist switch matrix and artificial created the row-column connection. Without compromising the use in the original intended manner.

HTH

And yeah, about 500 us it looks like.

a7

1 Like

I am not familiar with them so CMOS switches are something for me to learn about either way. Cool - thanks! Still open to other ideas too!

This Google computer museum lists the item, and comments on the bad switch bounce:

Use two of this multiplexer board

and wire it to your matrix like this

Then pressing a button is setting a row address on output lines from the Arduino and a column address from some more output lines, then hit the enable on both briefly to effect a switch press.

I've left out some pesky details I trust the heavies will fix this idea or improve it.

Four rows needs 2 address bits, five columns needs 3 address bits, so 6 output from the Arduino in total.

It does not matter which is active (row or column strobe) and which is passive (column or row sense). The CMOS switches are bidirectional.

a7

1 Like

It should not be difficult to write an emulator in Arduino C/C++ for the Science Fair Microcomputer Trainer.

Surely it would be fun to run the game programs described in the manual.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.