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