A generic overview about my past, current and (maybe) future software related transputer projects.
- Sokoban on the IMS B002: A standalone, T414 based gaming machine. My children loves it.
- DOS-B004-Support for WindowsNT: To use the DOS server like iserver or helios io server under WindowsNT.
- Graphic demos for the IMS B020: A few small programs to demonstrate the capabilities of the board.
- ISERVER for WindowsNT: A more efficient and more modular approach than a simple recompile.
- Rayshade for T80X transputer: A simple, single processor port of Rayshade for a Transputer with FPU.
- HELIOS B016 Support Resident Library: To support the IMS B016 VMEbus master card under HELIOS 1.3.
- Transputer Emulator for WindowsNT: To collect information from running programs, which are difficult or impossible to aggregate on a real transputer.
Sokoban on the IMS B002
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...
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.
Graphic demos for the IMS B020
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.
ISERVER for WindowsNT
My big picture:
So for example if you run icc on machine A and your transputer hardware is on machine B you will go through this layers:
- icc.exe (=driver.exe on machine A)
- b300svc.exe (now on machine B)
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.
Rayshade for T80X transputer
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 are available from [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).
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...