# Initial values of the dsPIC30F registers under the ICD3 debugger

Ok, I created a simple project that consists of just a few assembler files and it is not using any libraries. What is it doing is not important here. After that I have put breakpoint in ICD3 right on the reset entry point and after booting I see the following:

Controls stays on the address 3c6. If I browse to the beginning of the program memory, I see the following:

This confirms that 3c6 is really the reset entry point. At the same time I see on the registers:

The W15 is 0x800, as it is written in the documentation, but SPLIM is not zero as it should be according to the docs. I would guess that ICD3 has set it. Is that right? Even more, ICD3 shows the first 80 bytes of the RAM as reserved:

My guess is that I should not use the stack setup that I inherited after reset (because it points right into the reserved area and seems co cover it all) but replace it with my own one.

So my questions:

1. Will ICD3 work fine on any stack? I cannot change W15 and SPLIM in one step, so there is a chance that stack will be inconsitent for a short while. Is this simply a small risk that I should take or there is something more there behind?
2. What other resources are used by ICD3?
3. What should I do/not do to cooperate nicely with ICD3?
4. Is it right that in the release version of the build there will be no 80 bytes reserved area?

p.s. Here is the build log:

It suggests that this 80 bytes area in the RAM are not a single piece of data. But SPLIM covers them all... Does anybody has any clue what this all might mean?