Mode :
Check : XHTML 1.0 Strict

Software Projects

A generic overview about my past, current and (maybe) future software related transputer projects.

Rspy - a network topology mapper and research tool

Ispy is a well know tool and still essential for every transputer hobbyist. Rspy was the official successor and part of the later INMOS toolkits (e.g. D7414A). Unfortunately this Rspy is a DOS/Win16 program with a predetermined link interface. Part of an bigger transputer acquisition I've got access to the sources of Rspy 1.3. Meanwhile Rspy has been revitalized and enhanced in many ways. There is an DOS, WindowsNT (x86, amd64 and ia64) and Linux (x86, amd64 and arm) version available. I'm sorry to say that, but I use Ispy (if at all) only to compare it with Rspy output during tests.

rspy sample output

Rspy integrate the mtest and ftest functionality and a few features more. With Rspy you can measure the link speed of every link connection (in both ways) and check the error propagation system. The Mtest speed has been enhanced incredibly and is now a linear function O(N) of the available memory. The old mtest runs for O(N²). User with boards greater than 8MB know what I'm talking about. Rspy supports also the T450.

The picture to the left is a sample of an B012 Board with various Size2 TRAMs and a few C004 connections configured. Rspy supports up to 512 nodes in DOS and 1024 in all other occurrences. This program includes not only the recompiled C sources but also the Occam and assembler parts build from source. Contrary to the INMOS implementation, all transputer modules are part of the binary and not separate files. This makes the version management and deployment method really easy. The load delay for the transputer code parts can be omitted. If you think the runtime of the sample with 1.6s (including memory sizing of an 8MB TRAM) is fast, try it with a fully connected system.

There is a general documentation about the internal working of an earlier version of Rspy: rspy.pdf Routing Ispy Technical Documentation (rspy) - 27th August 1992

The INMOS Rspy has many players in the past. Involved people based on the source code headers are: Rupert Lane, James Smith, Brendan O'Connor, David J. McKay, Dave Edwards and Jonathan Elliott.

Peek & Poke - Two must-have basic troubleshooting tools

... your easy read/write access to the transputer memory.

Someone might think it is useless to build such tools. After I've implemented them out of a clear blue sky - I know, this is not true. In general there is not much to say, except you can:

  • peek or poke one or more values
  • read/write the data values from/to a file
  • display the readout in bytes or words
  • supports 16bit and 32bit targets
  • optional reset or analyse first
  • shows the state of the error signal
  • detailed logging or activity advertisement (optional)

Sokoban on the IMS B002

VT Sokoban

The IMS B002 is an ideal transputer board (maybe apart from its size) for a standalone application. It contains the PROMs for program storage, a power on reset facility and the always useful RS232 interface. In cooperation with a VT520 terminal this makes a nice gaming machine. As the VT520 terminal provides downloadable fonts, the game makes use of this pseudo graphic capability. The only thing which is really missing is a writable persistent storage to save the high scores.

To give you an idea of the appearance I've take a picture from a terminal emulation. You might observe a deformation which is only an anomaly of the emulation. The Sokoban himself has been assisted with a forklift. At the beginning it was only a placeholder for a nicer character but now it has become accustomed. I will keep it as my trademark.

The current implementation is for only one Terminal (the board has 2 serial interfaces) and polls the serial controller. The time between switching on the power supply and start gambling is dreamlike.

You can download both binaries - a single PROM file and an iserver loadable file. There is also a readme.txt which explains how to setup the terminal and the keyboard layout. There are 103 nice problems waiting for you...

Graphic demos for the IMS B020

ant (small)

The IMS B020 (also known as BOZO) is called by INMOS an iX High Performance Transputer X Terminal.

It contains a 32-bit T425 or T805 with 4 or 8MB of 4 cycle DRAM, a G332 with 1MB 5 cycle VRAM and two size-2 TRAM sockets. As it has been designed for the PC world, it's a full length ISA card with an IMS C012 link adapter. Unfortunate my G332 is limited to a maximum video frequency of 85MHz. For a CRT monitor this is really low, but fortunately modern LCD displays are operated with lower refresh rates.

Currently there are 3 different demos. The Ant, the Lines and the Birdman demo. They are standalone and don't have any association with X windows. The resolution of the generated pictures is configured by an environment variable called IVTG. The actual drawing programs are resolution independent but as they all use one byte per pixel, the resolution is limited by the size of the VRAM.

There are NO CHECKS! Not for the frequency of the CVC, not for the monitor timing, not for the amount of memory, not for ... and it will not run on your B419.

You start the demos plain with the iserver AFTER you have set the IVTG environment variable according to your hardware. To stop the demo you must press a key. To switch back to the VGA-In monitor content, press again a key.

For each demo there is a 1024x768 screenshot created directly from the transputer VRAM. This capture program is also included in the download and works only for one byte per pixel.


View a screenshot. This very simple algorithm which I found in an old "Spektum der Wissenschaft" generates surprising pictures. To disturb the evolution I sow about 100 pixel into the playing field. Otherwise the progress will not be so amazing. After about a minute the screen will be reinitialized.


View a screenshot. A test program for my Bresenham line draw algorithm, which is a enhanced and accelerated C version of the "A high performance line drawing algorithm" in the INMOS technical note 66 An introduction to using the B419 graphics TRAM was the origin of this demo. There is a similar demo in the ixcheck.btl program from the IMS S720 support software. It uses all palette entries.


View a screenshot. Monty Pythons birdman is an ideal figure for this demo. The implementation utilizes the move2d instructions from the transputer and also the hardware cursor. When you see the cursor, I believe that you know what to do next! To move the cursor you must use the mouse which is attached to the PC. INT33h is also supported in a VDM under WindowsNT!

To have a look at these demos, you can download them here. There is also a readme.txt about some specific hints which may be useful.

Raytracer from INMOS

Read more about the structure and background of this program in the INMOS technical note 7 Exploiting concurrency: a ray tracing example.

Raytrace RAY1 Raytrace RAY2 Raytrace RAY3 Raytrace RAY4

My adapted sources can be found here: []

Rayshade for T80X transputer

Rayshade WINECUP

During September 2006 I've done a quick port of rayshade for the transputer.
I'm sorry to say that there is NO MULTIPROCESSOR SUPPORT. The file format of the output is limited to Windows Bitmap.

More information and the original rayshade sources were originally here: ["].

You can download the transputer binary file and the winecup.ray source.

USAGE: iserver.exe /SB main.btl -F 1 -O winecup.bmp <winecup.ray

The winecup was calculated on a IMS B004 (T800D 20MHz and 2 MB RAM) in my WindowsNT Server. The 300x450 picture takes 18370 seconds or 306 minutes or a little bit more than 5 hours to calculate.

Note: You can click on the winecup to see the full 1200x1800 picture (642K).

DOS-B004-Support for WindowsNT

A few days after my first experiments with a DOS-Bootdisk and a network share in 2004, I decided to create a more convenient environment. Since Win9X was ineligible, I try to find a solution under WindowsNT 4.0.

Two problems have to be solved:

  • Reset timing were sometimes realized be counter-loops, which is unreliable.
  • The process has to access the port without interceptions. Otherwise the performance degradation was too high.

My solution is a combination of a physical device driver (PDD) and a virtual device driver (VDD) for the virtual dos machine (VDM). Every program which runs in a VDM loads the VDD. This DLL connects to the PDD. The PDD punches a hole of 4 bytes in the i386 I/O permission bitmap of this process. So the process can direct access the lower 4 bytes from the B004 register map. All other register are intercepted by the VDD and processed regularly over the PDD. If the process accesses the RESET or ANALYSE register an additional delay of 100ms is generated.

This solution allows me to run iserver, afserver, helios-server on my WindowsNT 4.0 box. It works so good, that I still use it.

You can download these two drivers. There is also a readme.txt which explains in very reduced and technical instructions how to install and uninstall them.

Note: I have no real experiences (except successfully install/start/stop/uninstall) under WindowsXP.

ISERVER for WindowsNT

My big picture:

B004.DLL   B032.DLL   B300.DLL
B004.SYS   B032.SYS  

So for example if you run icc on machine A and your transputer hardware is on machine B you will go through this layers:

  1. icc.exe (=driver.exe on machine A)
  2. iserver.dll
  3. iconnect.dll
  4. b300.dll
  5. b300svc.exe (now on machine B)
  6. iconnect.dll
  7. b032.dll
  8. b032.sys

This example requires an ethernet connection between machine A and machine B.

Still under development...

The iserver.dll generates a binary debug/trace file in the Microsoft Network Monitor format. I've written a parser dll which allows me to load and analyze this trace files in the Network Monitor 2.x. You can use the full power of Network Monitor, like Search, Filter, insert Comments etc. Unfortunately 2.x parsers are incompatible with the new Network Monitor 3.0. This part is mostly finished. As far as I know, you will find the latest Network Monitor 2.x in Windows Server 2003 as an optional component. These binaries are also installable under WindowsXP (->instructions) but I think this is unsupported :-)

Also finished is the processing of the ANSI control sequences. So idebug and isim works properly.

HELIOS B016 Support Resident Library

The IMS B016 contains a real time clock, interrupt controller, two asynchronous serial ports, Flash-ROM and some special things like MAP-RAM, a Byte multiplexer and so on.

To use most of these things, I plan to create a Resident Library which contains routines analogous to the F008A support library.

Still under development...

Transputer Emulator for WindowsNT

Note: WindowsNT is for me an alias for pure Win32 API usage. This emulator runs also on all WinOS greater than NT including the 64bit versions.

In the years 2010 and 2011 I've made some big extensions on this part mainly to support Gavin Crate on his [transputeremulator] project called jserver.

A big step forward in case of quality and trustworthiness was the invention of a validation suite which is a bunch of generated test programs which are able to run on a real transputer, on my emulator and also with jserver. Each test program receives a lot of different input pattern and generates out of them the output data. Currently there are 458 code snippets which produce more than 100MB of reference data which can easily compared.

This emulator fulfills three purposes:

  • To understand the inner transputer mechanism and have a checked representation of the functionality of each instruction.
  • To collect performance data like instruction usage, processor usage and link usage.
  • Maybe to have many of them on one or even numerous Wintel boxes and give these idle cores a second life.

To have the ability to check the emulator output direct with a real transputer output is also a great convenience for all software changes in the future.

Still under extension...

arrow upBack to the top

Last modification: 3/2/2023 9:00:08 AM