This is one of my projects that isn’t quite ready to be released yet.
It’s quite a long-term project; something of a historical reconstruction, inspired by the works of genius that were the Inmos Transputer, occam and CSP.
Additional motivations are from Professor Niklaus Wirth’s Project Oberon, and his paper “A Plea for Lean Software”.
The project motto comes from one of my favourite lyrics: “Let’s rebuild the past, ‘cos the future won’t last.” – “The Hot Revivalist” by The High Llamas.
The goals are:
- to revisit a Transputer emulator I initially wrote several years ago
- write a toolchain to support development for it
- produce a port of eForth that runs on it
- extend eForth into a distributed OS kernel
- learn about process calculi
- investigate modern/concurrent/functional language design
- investigate building an FPGA Transputer system capable of running the above
The history of the project leading up to its current point can be found at the Parachute Project History page.
The current state is that I have the following three sub-projects - the README.md at the top-level of each of these repositories will give more detail…
All are IN PROGRESS, NOT YET RELEASED FORMALLY.
WORKING (assembles eForth correctly), STILL NOT FEATURE-COMPLETE - The Transputer MASM-subset Macro Assembler can be found at:
IN PROGRESS (needs I/O code changing to match my I/O server protocol) - Transputer eForth can be found at:
IN PROGRESS (needs porting to non-POSIX OS, e.g. Windows) - The Transputer emulator itself can be found at:
Other things I’ve always wanted to write: my own OS; my own language….
Niklaus Wirth’s Project Oberon is a huge inspiration - build a complete useful system that one person can understand all of.
Per Vognsen’s Bitwise project is similarly inspiring.
Once eForth works, and I can investigate the system, it needs to grow to provide the facilities I want so that this can be my version of Project Oberon. There will need to be an ELF loader, and a bootloader that can link with an ELF object. Then a higher level language (one or more) will be needed for later stages… perhaps best achieved by “just” writing a back end for LLVM that targets the T800…
The emulator itself could be reworked to run a virtual Transputer on each physical core, with links connecting the cores; it could have ‘video memory’ added via say the SDL library.
Modern Hardware Transputers
There’s an interesting project called OpenTransputer (that seems to have dried up), involving making a new Transputer in an FPGA, and with the links replaced with a switch to a Benes network. They have a version of occam written in Java; it’d be good to port that to use my back end toolchain…
Also, Uwe Mielke’s T42 Transputer in FPGA project.
There are more emulators now -
- Transputer Compiler Writer’s Guide (PDF) (open in new tab)
- Transputer Compiler Writer’s Guide Errata sheet (ASCII) (open in new tab)
So the Transputer isn’t dead… watch this space…
… to be continued …
Matt Gumbley, Fri 13 Apr 2018