Turing Trains | Isometric | Wang Tiles | Maze Arrays | i Logo


Turing Trains


computational train track layouts



This section demonstrates some interesting train track layouts. Each is constructed as a fixed 'table-top' circuit, and carries out a dedicated computation.

They work in your browser window as usual. Of course, any of these layouts can be built using Duplo track and points.

Passive Points

Passive points are single lazy points which direct the train back along the track from whence it came. This allows a function to be called from two different places, and the train returned correctly. Passive points are not interactive because they never need to be switched or reset by the operator.

Subroutine 'calls'
Click layout to pause/run train Click start circle to reset train

Also used in Add and Subtract functions to return the train to the correct stage to continue the calculation.

Halt sprung point

In computational layouts, the train must return to its start position to indicate successful completion of a subroutine. It then 'halts'. If the whole layout is a subroutine in some larger scheme, then the train can continue back to the 'calling' routine.

Overflow Error

Sometimes, you don't want a register to rollover. If the data is too large to be held in the register, then the calculation has 'failed' and any result will be incorrect. The calculation will have to be re-run with smaller data or larger registers.

To indicate an overflow error, the final stage can return the train along a separate 'overflow error' (oe) line, to a siding close to the start. This saves time scanning a large layout for trains which have failed to return.

If the whole layout is a subroutine, then the 'oe' line may 'bubble up' and pass the train back to the calling layout. Eventually, both Halt and 'oe' trains should return to the station where they originally started.

Inverted Lazy Point

Similar to a lazy point but a train arriving on a branch line switches the point to the opposite branch line, before exiting as normal on the main line.

The additional 'inverter circuit' of four sprung points causes the train to swop branch lines if it arrives on a branch line, but not on exit.

Used in Gray Code Counter circuit.

Inverted Lazy Point
inverted lazy point

Bypassed Lazy Point

A train arriving on the 'dead' or 'wrong' branch line never corrects the point as it passes onto the main line. This is called bypass and the effect can be achieved with extra sprung points.

Single Bypass
Trains arriving on the upper branch line bypass the lazy point and so never correct it. Trains arriving on the lower branch line correct the points as normal.

Dual Bypass
Uses a dual sprung point, which is just a neater way of drawing 2 separate sprung points. The lazy point is never corrected. It is 'uncorrectable'.

Used in R. A. Memory layout.

Single bypass
single bypass

Dual bypass
dual bypass


Some sections of track can be removed as they cannot be traversed by the loco or provide no extra capability.

Here, the branch lines from two sprung points are directly connected together. The central section of track can never be reached and so is redundant.

redundant track

Here, the lazy point can be removed as it makes no difference to the trains route. It may be needed though if the lazy point is linked to other points, as a returning train will switch the point to 0.

redundant track


User Input Points

These points help simplify some complex layouts where many user input points are required. They are shown with a blue border.

Full Point sprung point

Full points operate as normal lazy points, but, have an additional X 'don't care' horizontal position. They can be manually switched (cycled) between all 3 positions, and usually start in the default X position.

Trains can switch the points to either 0 or 1 branch lines, but, importantly, cannot switch points to the horizontal X position. If they could, the point would be a 3 position lazy point.

The DigiComp layout is much simplified with full points, as compared to the layout using normal lazy points.

Manual Point sprung point

If only one of the branch lines is used then this results in a 'half' point. These help simplify arrays of user input points, as used in the Switching Yard and Turing Machine layouts.

In both layouts, trains are never required to switch the point to a branch line. The Train Yard layout has 6 points (below the main diagonal) where a returning train arrives on the horizontal X line and, as expected, does not switch the point to that line.

As the train never switches these half points they are referred to as 'manual' points because they can only be switched manually.

Note that as half points cannot be switched by the train into both positions, they cannot replace normal lazy points. Also, they cannot be gang linked to form more complex operations.

I've added some additional code so that half points act like radio buttons. As one of them is switched, the others return to the default horizontal X position. This is not required by a Turing Trains layouts, but helps clarify the layout.

3 Position Lazy Point

Normal lazy points switch between 0 and 1 branch lines. 3 position lazy points have a third horizontal line, labelled 2. They introduce tertiary (base 3) logic systems. They are not used on these pages as all layouts follow the binary logic of todays computers.

They could be used to build 3 symbol Turing Machine layout, which would be quite compact.



zoom in to enlarge layouts