> XPtr - Transputer Toy


XPtr gives your ATW800/2 some work to do! Transpute those pixels!

A retro 'supercomputing' toy which can render procedural images - in parallel - on your ATW800/2 Transputer network. Not a productive a tool of any kind, just something to play around & test your hardware with!

XPtr will run on a bare ATW800/2 using a the onboard synthetic Transputer. The real journey however was to try parallel computing on Atari and so the program can work faster with additional Transputers via the TRAM slots.

The scenes are a mixture of GLSL conversions/adaptations (shadertoy - individual attributions in the status window), some old POVRay classics remade in shader-like C and some original scenes made for the project. All of the scenes were carefully adapted to INMOS ANSI-C or written from scratch by hand.

The raytracing/raymarching/space-folding nature of the test scenes does make heavy use of floating point math (!) so physical T80x TRAMs are recommended as these have integrated FPUs. T4xx TRAMs are now also supported but will rely on a software floating point library.

Since the onboard synthetic Transputer is a T425 without FPU, it will run slower than a physical T80x added to one or more slots - at least for the current batch of test scenes. The T425 (Seurat core) has a much faster base clock though and has additional optimisations which can be taken advantage of in future, with more work. With most XPtr scenes, Seurat alone is roughly equivalent to two physical T425s.

All of the scenes are procedural. No textures are used - just code and some tables, in a few cases. This does mean they are not resolution-limited, can be zoomed, tweaked and they can all animate with a timestep.

While most of the converted GLSL cases are identical or very close to the originals, some did not translate well due to dependence on LOD-texture samplers and other GPU features not implemented here. In these cases I replaced textures with procedural noise approximations.
In some other cases, getting usable performance on non-GPU hardware required more extensive changes or compromises.
Not every scene I tried to convert was successful. Weird math bugs (which GLSL absorbs but the Transputers hate), unresolvable performance problems or aliasing at low resolutions resulted in a few being abandoned along the way. Most worked out ok with some tweaking.



> Compatibility



XPtr works on MegaST, MegaSTE, TT030 with ATW800/2 VME or MegaBus versions.

Works on the integrated, synthetic T425 Transputer (Seurat).

Works with additional Transputers in slot 1 & 2. Compatible with T800, T805, T425 CPUs. Some scenes may need 2MBytes per TRAM (voxel caching), most will be fine with 1MB or less.

Works with (and depends on!) either xVDI or NVDI. If using NVDI, remember to install with the ATW800-enhanced driver.

Can also work on the native Atari display (e.g. on TT030 256c) instead of HDMI but still needs NVDI for the OSB support.

Tested with ATW800/2 firmware v2.05, v2.08.



> Instructions



Before using the program, you need to make sure:
- Either xVDI or NVDI is installed & working. XPtr relies on offscreen-bitmap windowing support which these provide.
- FPGABIOS.TOS (from the ATW800/2 software pack) should be added to your AUTO folder as a .PRG - or just run it manually before using XPtr. These BIOS extensions are necessary to talk to the Transputers. Without FPGABIOS loaded, XPtr will still run but there will be no access to the ATW.

1. Select a scene from the 2D or 3D menu. Note that some scenes are muuuch slower than others, especially if running with a single Transputer. Recommend starting with 'Kishimisu'

2. Select 'Load Choice' from the top of the same menu. This loads the scene onto the ATW800/2 root Transputer and onwards to connected Transputers. You will see some details about the scene in the Status window on the left.

3. Configure parameters in the window on the right, if needed.

4. Tick any extra Transputers (if you have them) to participate in rendering, from the Device menu.

5. Select 'Render: Frame' from the menu to start rendering. Tiles should start to appear left-to-right, top-to-bottom.



> Tips...



> You can select 'Stop!' from the menu to interrupt rendering before it completes.

> You can fix the output image window size by editing the config.jsn before starting the program. This will auto-skip the resolution dialog on startup. Image size will be rounded to a multiple of 16 on both axes. When choosing a size, be cautious of available memory on e.g. a 4MB MegaST as the framebuffer is 24bit colour! A 640x480 image requires 1MB just for the image. The program itself is >300K and more is needed for the window buffer. It is possible to run out of RAM...

> You can also configure the slots for your physical Transputer configuration, with the config.jsn. The Transputer expansion pack ZIPs come with a replacement config.jsn to suit each configuration but still worth checking against your config. (the valid choices for slot1_device/slot2_device are now: 'empty' 'T4' or 'T8')

> Larger tilesize can be quicker for the fastest scenes at high resolution - but 8x8 is a good default.

> Interrupting a render with 'Stop!' is not immediate. All busy tile(s) need to complete to allow the Transputer network to reset. This means it is wiser to use a smaller tilesize for slow scenes to be more responsive to interruption.

> The 'sketch' option will sample a single pixel per tile, to give a quick preview of slow scenes. Combine this with tilesize to find the best balance. When changing the view settings (orientation/height/distance/zoom/FOV etc.) it helps to confirm the result with a fast sketch with a large tilesize before wasting time rendering a broken view.

> Some scenes are very slow without a T8 FPU - most were crafted for the latest GPUs, not 1980s technology. be patient :)

> Many of the scenes animate/change with time and can be recorded. Set the timestep to a smaller value if you want the result to have effectively higher FPS when replayed.


> Known issues...



- Image-compression time for 'png' format is extremely long for 8MHz ST when using 'Recording' mode and may even seem like a hang (!). The lowest effective PNG compression level is '5' with anything lower internally clamped to '5'. For speed on slower systems, Prefer the simpler 'tga' format with image_compress : "0" in the config.jsn.
- While it has been confirmed working with earlier ATW800/2 firmware, stability is not assured. The recommend version is v2.08 (latest at time of writing) or v2.05.
- If your HDMI display suddenly goes black when starting a render, it probably didn't crash/freeze but the HDMI signal from the FPGA *can* drift slightly under workload and some monitors may react by losing sync. This seems to be much less of an issue with newer FW versions.
- There is experimental support for 'host' rendering (68000 or 0x0+FPU) instead of Transputer, for comparisons/benchmarking etc. but this is not implemented yet and remains disabled. Meantime, the 'host' mode will just render empty red tiles.


> Full release: v0.33



- New scenes.
- Some improvements/tweaks to existing scenes.
- Gaps/omissions in scene info fixed.
- Improved UI responsiveness.


Base files - necessary to run the program on a bare ATW800/2 board

Download - base

Expansion pack for either 1 or 2 physical T80x Transputers

Download - T8s only

Expansion pack for either 1 or 2 physical T425 Transputers

Download - T4s only

Expansion pack to support special case of T4 & T8 both installed at the same time

Download - mixed support



> Full release: v0.32



- Many more new scenes.
- Many improvements & fixes to existing scenes.
- Most of the scenes have been at least partly optimised, targeted more for T425.
- Includes 68030+6888x build for TT host machines.
- Reorganised scene menus again, mainly to keep the depth of all menus sensible.
- More rendering options e.g. Jigsaw/random tile dispatch.
- Render time estimates for single Transputer cores of different types.
- Better indication of busy status during various operations.
- Better at recovering from a 'stuck' Transputer network if something goes wrong.
- Timepoint 'thumb' presets jump to interesting 'frames' in an animation (most scenes do animate with time).
- Some scenes have a 'clickzoom' option. Allows click-to-zoom on e.g. fractals & detailed scenes.
- Time scaling x1, x10, x100 allows the time bar to work for scenes with very long timelines.


Base files - necessary to run the program on a bare ATW800/2 board

Download - base

Expansion pack for either 1 or 2 physical T80x Transputers

Download - T8s only

Expansion pack for either 1 or 2 physical T425 Transputers

Download - T4s only

Expansion pack to support special case of T4 & T8 both installed at the same time

Download - mixed support



> Full release: v0.14



- Adds more new scenes (!)
- Improvements to existing scenes, more influenced by time animation, some optimisations.
- Reorganised scene menus, listed by increasing rendering time on the default system (Seurat/T425).
- Log windows now scroll properly when updating.
- Fix for ATW info in some memory/jumper configs.
- Fixed several other bugs & inconsistencies in the UI.


Base files - necessary to run the program on a bare board

Download - base

Expansion pack for either 1 or 2 physical T80x Transputers

Download - T8s only

Expansion pack for either 1 or 2 physical T425 Transputers

Download - T4s only

Expansion pack to support special case of T4 & T8 both installed at the same time

Download - mixed support



> Full release: v0.13



Replaces v0.12 (which had a bug in the Transputer enable/disable mechanism, producing empty renders and hangs).

This version add support for physical T425 Transputers, fixes some image-export issues, adds experimental support for TGA, BMP, JPG formats (in addition to existing PNG support). Note the default export format is now TGA (with RLE compression off) to save lengthy compression waiting times on slower machines (8MHz MegaST!).

Additional optimisations made to rendering system and some of the scenes. Sketch mode is also now faster.


Base files - necessary to run the program on a bare board

Download - base

Expansion pack for either 1 or 2 physical T80x Transputers

Download - T8s only

Expansion pack for either 1 or 2 physical T425 Transputers

Download - T4s only

Expansion pack to support special case of T4 & T8 both installed at the same time

Download - mixed support



> Full release: v0.12



(buggy version - has been removed)



> Incremental update: v0.11



Update adds 'Recording' mode to output .png images and sequences

This update should be applied on top of the v0.1 release

Download - update



> Initial full release: v0.1



Base files - necessary to run the program on a bare board

Download - base

Expansion pack for either 1 or 2 physical T80x Transputers

Download - T8



> TRAMTool memory test for Transputer TRAMs

TRAMTool performs a modified 'march' test of external SRAM/DRAM on the Transputer installed in TRAM slot #1


The test result will indicate if there are bad chips or soldering issues and in most cases, which chip is affected. Usually there will be 4x 8bit chips, making up a 32bit word.


This test only works for physical Transputers - it will not test the ATW800's own RAM!



> Update: v1.05


Bugfix for v1.04 memory size failing if all RAM is bad, potentially shortcutting the test

Download



> Update: v1.04


Now detects TRAM memory size and compatible with all T4xx/T8xx CPUs

Download



> First release: v1.02


Implements a fixed 2MB RAM test in slot #1

Download