
                          Copyright
Andy Rabagliati <andyr@wizzy.com> <URL http://www.rmii.com/~andyr/>

* Change History


* Jan 1995 - ported it to Linux and OS/2
*            Courtesy Linux driver from 
*            Christoph Niemann <niemann@swt.ruhr-uni-bochum.de>

* Nov, Dec 1994 - Made ispy tolerant of high latency links.
*                 Fixed bugs

* For AUTRONICA, Trondheim, Norway


ISPY is a network mapper

  The output of ISPY is designed to be fed into the other
programs via a pipe or redirection.  The programs can be chained
together to do a complete test of your hardware. A file piped
into ISPY will be used to impose that numbering scheme on the
Transputers, and carries C004 programming information.

  The programs are all written in ANSI C and will run on any
host that has an ANSI C Compiler and an INMOS standard link
module to drive the transputer hardware (see the file link.c).


ISPY - a transputer network mapper.

Determines Transputer types, versions, and topology of a
network and the speed of (which) boot link.

ISPY runs completely in internal RAM.

ISPY leaves an ISERVER compatible vestigial router at each
node, that is capable of:

  1) setting a default ISERVER-transparent path from the host to
     any Transputer in the network,

  2) Resetting a Transputer to a state similar to that just after
     reset, so it may be subsequently booted by any bootable code file.

Refer to the file protocol.doc for more information.

ISPY will number processors as a width-first search from the
root processor, starting at 0. This may not be the most
convenient numbering. For instance, with a mesh connection you
may wish to number them by rows and columns. ISPY will do this
by piping in a file.

ISPY takes a template input from a previous ISPY run.
  
ISPY will report missing link connections, (useful for
debugging hardware) and additional connections, and will
indicate extra transputers found. It returns an error code of 1
if any transputers or link connections are missing.

C004 connections are reported in one of two ways.

<linkx> - <linky>	says that linkx input connects to linky
			output, and linky input connects to
			linkx output.
			
<linkx> > <linky>	says that linkx input connects to linky
			output.

An example C004 report line follows. All whitespace is
an arbitrary number of spaces, tabs, carriage returns.

   2 C004b (1-5 7>8 23>30 26-28 )
   2 C004b   [ -5---1-8 -------- -------U --S-Q--- ]
   
   Both lines report the same configuration.  However, line 1
can be very verbose with big configurations, but is easy to
program. It is reported by ISPY -cl.
   
   Line 2 is of fixed length, and references links as 0-9, A-V.
It is position-dependent - the position determines the output
link, the letter the input link. It is reported as ISPY -C4.

Thus you can write your own.

If you are using the INMOS MMS software, you can configure it
once with the MMS, take a snapshot using ISPY, pipe the output
to a file, and use that file subsequently.

     ISPY -h      gives information on the program.

This suite of tools enables users to examine and configure networks 
of transputers. The toolset consists of:
     
     ispy  Network tester.
     mtest  Memory tester.

We shall now examine the use of each of these tools.

 ispy 
 -----
The ispy tool provides a means of examining a network of transputers. To use 
it simply type:
  
  ispy | mtest -c

   NOTE  The c option is used to give us results for the T2 processor.

This will produce the following results:


ispy 2.2 | mtest 2.01
     Part rate Link# [  Link0  Link1  Link2  Link3 ] RAM,cycle
   0 T800d-25 0.13 0 [   HOST    1:1    ...    ... ] 4K,1 28K,3 2016K,5 4K,3;
   1 T2   -17 0.56 1 [   C004    0:1    ...   C004 ] 2K,1.


In detail,

   Processor 0  has the following memory

     4K,1  4K bytes of 1 cycle memory (internal RAM) plus,
     28K,3  28K bytes of three cycle RAM plus,
     2016K,5  2016K bytes of five cycle RAM plus,
     4K,3  4K bytes of three cycle RAM.

   Processor 1  has the following memory

     2K,1  2K bytes of one cycle memory ( internal RAM ).

 Configuring An IMS B008 
 
 Introduction 

This section will describe how to configure the IMS B008 
development motherboard using the ispy tools.
 
 The IMS C004 

The IMS C004 is a 32 way link switch. It can be programmed
to enable any combination of links to be connected in any
manner. All of the spare links on the IMS B008 are brought to
the IMS C004. It is the job of the IMS T222 processor, on the
IMS B008 board,to configure the IMS C004 to set up the links.
  
The user can either write an explicit program for the IMS T222,
use the SGS-Thomson MMS tools, or can use the ispy 
tools.  We shall concentrate on the latter approach.
 
 Configuring Using ispy 
 
Our aim is to connect the IMS B008 so that the processor in slot
2 of the board is connected to the host processor. We can do
this in one of two ways
 
  Connect a physical link from PipeTail to a spare link.
  Connect a link from the last processor to the first via the IMS C004.
 
To configure the IMS B008 we use the following steps:
  
  ispy -cl > config.b8 
  ispy -cs < config.b8
 
In detail,
 
     ispy -CR  to clear the IMS C004.
     ispy -cl > config.b8  Store the current configuration.
     edit config.b8  Edit the configuration file.
     ispy -cs < config.b8  Reconfigure the IMS C004.
 
The file produced from Step 2 will look as follows:
 
     Part rate Link# [  Link0  Link1  Link2  Link3 ]
   0 T800d-25 0.13 0 [   HOST    1:1    3:1   ...  ]
   1 T2   -17 0.55 1 [    ...    0:1    ...   2:C  ]
   2 C004b ()
   3 T800c-17 0.13 1 [    ...    0:2    4:1   ...  ]
   4 T800c-17 0.13 1 [    ...    3:2    ...   ...  ]
 
This reads the current transputer configuration, including the
contents of any C004s it finds (the -cl  option).

Next, we must edit the config.b8 file to put in the desired
C004 connections as follows:
 
     Part rate Link# [  Link0  Link1  Link2  Link3 ]
   0 T800d-25 0.13 0 [   HOST    1:1    3:1   ...  ]
   1 T2   -17 0.55 1 [    ...    0:1    ...   2:C  ]
   2 C004b (2-10)
   3 T800c-17 0.13 1 [    ...    0:2    4:1   ...  ]
   4 T800c-17 0.13 1 [    ...    3:2    ...   ...  ]
 
This tells the IMS C004 to internally connect its Link2 
to its Link10.  On the IMS B008 board this
connects TRAM slot 2 Link0 to slot 0 Link3 .
 
The final stage is to pump this configuration file down to the
IMS C004. The output from this stage is as follows:-
 
     Part rate Link# [  Link0  Link1  Link2  Link3 ]  CHANGES
   0 T800d-25 0.13 0 [   HOST    1:1    3:1   4:0  ]       4+
   1 T2   -17 0.55 1 [    ...    0:1    ...   2:C  ]
   2 C004b (2-10 )
   3 T800c-17 0.13 1 [    ...    0:2    4:1   ...  ]
   4 T800c-17 0.13 1 [    0:3    3:2    ...   ...  ] 0+
 
This has an extra field that describes the changes from the
configuration pumped in to that actually found. On more complex
networks it would mark extra transputers as such, with all the
extra connections. If you wish, you may edit the file in step 2
above to include these proposed extra connections - then ispy 
would automatically match these to the connections found after
configuring the B008. If you wish to use a different numbering
scheme, ispy will follow that; e.g. processors in slot 1 and
above are numbered from 100.
 
It is possible on some SGS-Thomson/INMOS boards that ispy will
not find the C004s in the network. This is because a latch on
the configuration T2 has powered up such that the C004 is held
in a permanently reset state. The solution to this is to do the
following :-
 
     ispy | mtest -c -t2

Run the Memory test program
mtest on all T2x2s in the system, regardless of whether a C004
is found on the links. mtest ensures that the last thing it
writes to external memory of T2s is 0.

     ispy

  This should now find all C004s.

 Configuring An IMS B014 Using ispy 

To configure a fully connected IMS B014 VME card we must use the following
configuration script:


   ispy 2.2 
     Part rate Link# [  Link0  Link1  Link2  Link3 ]
   0 T800d-25 0.13 0 [   HOST    1:1    4:1    4:0 ]
   1 T2   -17 0.55 1 [    2:C    0:1    ...    3:C ] 
   2 C004b (1-2 3-6 7-8 9-10 11-12 ) 
   3 C004b (1-2 3-6 7-8 9-10 11-12 ) 
   4 T800d-20 0.76 1 [    0:3    0:2    5:1    5:0 ]
   5 T800d-20 0.77 1 [    4:3    4:2    6:1    6:0 ]
   6 T800d-20 0.77 1 [    5:3    5:2    7:1    7:0 ]
   7 T425a-25 0.77 1 [    6:3    6:2    8:1    8:0 ]
   8 T2   -20 0.80 1 [    7:3    7:2    ...    ... ]

MTEST  -  transputer memory test program

MTEST tests the memory of each transputer in your network.  It
reports sizes and cycle times, and tells you why it stopped
looking for more memory using the X switch. T2s with C004s off
links are not tested unless asked for with the C switch.

Please note that if you use the X switch it reports an error on
the last location it tested. THIS MEMORY MAY BE ABSENT, and should
thus not be construed as a fault on the board.

In a network, it tests all Transputers concurrently.

Usage:      CHECK | MTEST

Help:       MTEST /H

