I am checking some terrible C source code; I haven't got any idea about how to maintain it or cooperate with it. But I found a very fundamental problem. It does NOT have a startup.asm; it has a startup.c using the powerful C extension "#pragma". So, the C runtime environment is setup by "#pragma section", "#pragma intvect", "#pragma asm". I quite worry about such a startup.c; so I contacted the FAE of our local distributor. The FAE is an experienced good engineer, but he told me that, this is not their standard way to setup C runtime environment; they definitely provided the startup.s from Day 1.
What will be the side-effect, when the C runtime environment is setup by the C extension "#pragma"?
"But, to minimize the effort, and maintain the compatibility, I will remedy the current startup.c, based on the original paper copy; and focus on the other critical problems, like a very huge single main.c ."
I would find it risky to attempt changing something you don't fully understand.
from what you described, the .c startup file seems to be working and the problem of its poor documentation can be remedied later, probably after you have fixed other problems, like introducing more structure to the user code.
it allows you more time to learn about the start-up and the .c startup code.
but then that's just me.