Hi,
I believe the default parameter passing for v6.4 is "compact", so anything other than that will require you to use non-default libraries (and change any asm routines like the one I showed that set the VBR).
One way to not have to deal with changing libraries when you change calling conventions is just to include the MSL source code rather than the libraries in your project... For example, I only use a few msl functions, so I just browse to include ctype.c, mem.c, mem_funcs.c, and string.c directly into my project... Then if I change calling conventions, those files just get recompiled. The downside of this is that if routines need to be initialized in some way (the ones I use do not need to be, but calloc, for example, does), you have to do that by hand.
Can you step thru with the debugger and make sure your VBR is being loaded up correctly? Also, you might want to step into some of the MSL routines just to be sure parameters are being passed correctly. There are a lot of different flavors of the MSL libraries and you have to make sure you have the right one for the calling convention you have selected. I definitely would not claim to understand all of the startup and library options!
I'm using CW7.0, but I think this is all true for CW6.4, as well. If you're using "register" ABI, make sure your libraries have ".RegABI" in their name; if you're using "standard" ABI, make sure your libraries have ".StdABI" in their name; if you're using "compact", they should have neither of those in their name.
-- Rich