[comp.sys.transputer] Problems loading transputer networks .....

MALENT%finabo.earn@NSS.CS.UCL.AC.UK (08/17/88)

 
 
        Hello, I hope someone could help
 
        I am developing Occam programs under D700C (beta 2 release)
        and I have some interesting problems running my Occam
        programs.
 
        When I load a network of Transputers (T212 or T800) the
        programs run randomly and I get a lot of error-flags set. When
        I use the network debugger to see what went wrong, the
        instructionpointer is way out of bounds. This is true for
        every processor but the first in the network. I did a lot of
        work trying to figure out what was wrong with my program, and
        I also tried to run small simple programs but they acted the
        same way. Only the first processor was running ok, all others
        acted randomly.
 
        When I studied the program I noticed that the entry point of
        the program was different for the first processor, it was
        higher. The memory map for every processor in the network is
        obtained by running the Config-Info utility. That was also
        what it supposed to be according to "Software Tools", chapter
        6 "Loading transputer networks" (minimum code load point).
        The I tried to include a dummy BYTE arry, so big that all
        processors had the same entry point. And suprise, suprise it
        worked. Funny (?).
 
        Now, when I fixed the bug in the program, it put me to wonder
        WHY. Is it the compiler, linker or loader ??????
 
        Is there anyone who could give an answer.
 
                                                Thanks Tor-E Malen
 
 

davidj@cernvax.UUCP (davidj) (09/06/88)

To: MALENT%finabo.earn@NSS.CS.UCL.AC.UK
Subject: Re: Problems loading transputer networks .....
Newsgroups: comp.sys.transputer
In-Reply-To: <8808170650.AA23442@uk.ac.ox.prg>
Organization: CERN European Laboratory for Particle Physics, CH-1211 Geneva, Switzerland
Cc: 
Bcc: 
If you mean 'the first processor has a higher entry point than the others...'
then is this the processor that TDS is running on ? If it is then this
explains why the entry pointis higher. TDS runs on the 'root' processor
and in rev-c of TDS occupies the low end of memory (i.e.) on chip memory
and upwards. So that your program will be loaded above this. Other processors
in the network don't have to worry about tds, so the program can start low
down in mem. In rev-d of TDS, the TDS code occupies the high end of the
transputer memory i.e. on a 2-mbyte card it sits up near 200000. I don't
really know why padding your program with a byte array mafe it work, but
perhaps you were overwriting some of the code in the unpadded version, and
all you did was hit the byte array in the the padded one ??????

	Dave Jeffery