Our C166 system works executes properly when erasing a flash sector. (we copy the code (that erases or writes to the flash) from flash to ram, call the ram location, and we're done. (this was done using the 'older' toolset from uVision and the compiler from Bitware, 1.31.) However... Using the same code and building with the newer Keil uVision 2, the code crashed. Inspection of the LST file shows that the two compilers did not compile to identical ASM code. Commenting out the line of code that makes the call to the routine in RAM allows the code to run. I suspect a problem with how the boot routine is compiled or linked. Any ideas? Thanks.