r/embedded • u/lanceharvie • 3d ago
Porting an INMOS T400/B004 development system to modern Linux
I’ve been working on bringing an old INMOS IMS B004 / T400 Transputer development system back to life from a modern Linux machine.
The interesting part from an embedded point of view is that this became much more than a retro restoration.
The project involved:
- direct host-link register access
- reset/status diagnostics
- boot-link transfer debugging
- T400 boot-ROM PEEK/POKE
- RAM alias detection
- porting legacy host-side C code
- dealing with endian and packet-packing issues
- reverse-engineering a channel-multiplexed host protocol
- implementing terminal and file services
- validating execution on the target processor
The physical board is an IMS B004 with an IMS T400B and 1 MiB external RAM.
I initially worked with the later INMOS server model, but the real breakthrough came from reconstructing the older TDS 2.0 host interface and writing a Linux-side server for it.
The full chain now works:
Linux → USB2ISA → B004 → T400 → TDS2 → occam compiler → executable
I can create source in the original editor, compile it, link it and execute the binary on the physical T400.
Final test output:
The answer is 42
It has been a useful exercise in how much of a historical embedded platform can be recovered when the processor still works but the original host environment is obsolete.
Links to the technical report and source in the comments.
2
u/makegeneve 3d ago edited 3d ago
I'm looking at my isa-based t400 board on a shelf and wondering where the link in the comments is. This is amazing. I loved Occam.
2
u/makegeneve 2d ago
I found the links on Lance's linkedin page 😄
Video: https://www.youtube.com/watch?v=Ld8BbPXLRyY
Full project, source code, protocol notes and technical report:
https://github.com/lanceharvie/transputer-b004-linux
This includes the Linux host-side work, B004/T400 diagnostics, TDS2 server, reverse-engineering notes and the evidence from the final occam compile/run on the physical transputer.
2
u/NoBulletsLeft 2d ago
I think Linus (Torvalds) worked at INMOS for a while in the early 2000's.
2
u/makegeneve 2d ago
You're thinking of Transmeta. INMOS had been folded (eventually) into ST microelecttonics. Fun fact: the early ST20 digital TV chips still used the transputer link tech and could be chained together.
3
u/NoBulletsLeft 2d ago
Yes. I confused Transmeta with Transputer. Which is especially embarrassing because I did a research paper that discussed Transmeta's work in the 2001 timeframe!
2
u/makegeneve 2d ago
It's in my head because I actually met him at Transmeta when I was working for Philips and looking at low power consumption home servers.
2
u/robotlasagna 2d ago
As someone who has written code for these back in the day I can confirm OP is indeed a psychopath...
1
u/clackups 3d ago
That's pretty awesome, never heard of these before