For experimentation I want to import or receive into Arduino the output data from a TMS1000 (1980s) data bus. For model train controller Hornby Zero1, and the bus sends data to receivers, for loco number, speed, direction etc. I have all the data structure etc) Is it feasible to import to Arduino, and export from the same Arduino back to the original bus. Just to see it working, and then later experiment with the data in the Arduino. What libraries would be best ? Thanks Charles Harris

  • 1
    it is feasible ... nothing else can be said without any information .... please remove the can-bus and modbus tags
    – jsotola
    Dec 30, 2020 at 3:10
  • 1
    The Arduino does not have a bus but you can simulate it with some latches and data buffers. The TMS1000 is a family of microcontrollers introduced by Texas Instruments in 1974. It combined a 4-bit central processor unit, read-only memory (ROM), read/write memory (RAM), and input/output (I/O) lines as a complete “computer on a chip” You will have to give a lot more information if you want a usable answer.
    – Gil
    Dec 30, 2020 at 5:48

1 Answer 1


You're not going to find any pre-built libraries for this task which is somewhat unusual but not at all impossible.

Basically all you need to do is to connect the TMS1000 address/data and strobe lines to Arduino inputs and write yourself some relatively simple code to detect the various TMS1000 bus states and capture them when they happen. In order to detect specific events as you have mentioned you will need to know more about the TMS1000 software that's running and what I/O devices that it's selecting. But again, that's all pretty straightforward.

Keep in mind, however, that you are going to have to perform level shifting on ALL the inputs from the TMS1000. This old TI chip was implemented using a PMOS (i.e. a predecessor to both NMOS and CMOS) and uses a NEGATIVE power supply instead of the more common today POSITIVE supply.

So rather than being powered by a +5V supply the way an Arduino is, the TMS1000 is powered by a -15V supply. In this case ground is still at 0V but Vdd is -15V. That means the I/O signals adhere to a different scheme as noted in the datasheet:

TMS1000 Data

You can view the datasheet yourself at:

TMS1000 Datasheet

But what this means is that a LOW (i.e. Vil) is at -15V and a HIGH (i.e. Vih) is at 0V. You will need to translate these voltages so that you don't damage either the TMS1000 or the Arduino and you get the correct levels on the pins that you are watching.

The TMS1000 datasheet has some suggested circuits for interfacing to 74LSxx series parts (i.e. 5V logic) which will probably get you started. Note that the simplest method involves running the 5V logic with its VDD at 0V and it's "ground" at -5V. While this might seem odd, the Arduino will not know the difference as voltage is always relative.

  • voltage is relative. should be able to come up with a setup where -15V for Hornby is GND for arduino if you really wanted to.
    – Abel
    May 29, 2021 at 14:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.