Bulletin number: 342 Products affected: D705B Description: iconf problems Component: iconf Date: Fri Sep 7 11:25:43 BST 1990 ----- Some more work has been done on the iconf problems mentioned in Bulletins 0054 and 0028 to produce what is thought to be a definitive workaround. Anyone coming across exceptions to the following should send the details with the smallest source possible to UK support who will then consolidate and distribute the info. Following the rules below when writing .pgm files should produce bootable and debuggable .btl files. Deviation from these rules produces unpredicatable results; sometimes unbootable .btl files, other times files which boot but confuse the debugger. And even files which work perfectly. So at least follow them in the first instance and then modify if you need to once you have a working program: 1/ #USE all SCs called from configuration level before #USEing any SCs not called from configuration level (See Bulletin 0054). 2/ Put all #USE statements at the beggining of the .pgm file. 3/ When using constructs of the following form in .pgm files: PLACED PAR i=2 FOR num.of.procs PROCESSOR i Txxx <-- T8xx & T4xx func(a,b) PLACE an array of fifty bytes in WORKSPACE. Fifty bytes is the minimum necessary to avoid the error message: Booting root transputer... Error - iserver - unable to write byte xxxx to the boot link. when attempting to boot the .btl file in all the cases we have been able to test. 4/ When placing small processes on Transputers even if no replicated PAR is used, also PLACE a fifty byte array in workspace as in 3 above. With larger pieces of code per processor the array size can be reduced on a trial and error basis if memory is really tight. In cases with a large amount of code per processor the array PLACEment becomes unnecessary. Below is an example .pgm file the layout of which works for everything we have tried. #INCLUDE "hostio.inc" #INCLUDE "linkaddr.inc" #USE "main.c4h" #USE "func.c4h" #USE "funclast.cah" VAL num.of.procs IS 4: CHAN OF SP fs,ts: [num.of.procs]CHAN OF BYTE up: PLACED PAR PROCESSOR 0 T800 PLACE ts AT link0.out: PLACE fs AT link0.in: PLACE up[0] AT link2.in: main(fs,ts,up[0]) PLACED PAR i = 1 FOR (num.of.procs - 2) PROCESSOR i T414 PLACE up[i-1] AT link1.out: PLACE up[i] AT link2.in: [50]BYTE array: PLACE array IN WORKSPACE: func(up[i],up[i-1]) PROCESSOR (num.of.procs - 1) T414 PLACE up[num.of.procs - 2] AT link1.out: funclast(up[num.of.procs - 2])