CHARMM internally refers to atom types as integers, which are provided by the MASS statements in the topology (rtf) file. For the purpose of the following discussion, I will call these integers "MASS numbers" (even though it's a bit of a misnomer).
CHARMM has a hard-coded maximum MASS number of 500, and increasing this would make the static memory usage explode, which is bad because CHARMM constantly brushes the maximum static memory allocation on certain architectures. The MASS numbers in CGenFF have a range of 256, those in the carbohydrate FF have a range of 99, and those in the protein force field have a range of 121. 256+99+121=476, so you can renumber the MASS statements by adding a constant offset to the MASS numbers in CGenFF and another constant offset to the carbohydrate force field, but you have to choose those offsets carefully.
Note that these MASS lists are pretty sparse. CGenFF actually only contains 141 atom types, the carbohydrate force field 45, and the protein force field 95. 141+45+95=281, so, if you renumber each and every MASS statement, you can have a contiguous range of MASS numbers from 1-281, leaving plenty of room for other CHARMM force fields. But it's more work, and more prone to breaking the psf (see warning below).
Note that CGenFF uses the flexible parameter reader ("flex" keyword), which requires an ATOMS section in the parameter (prm) file that is a duplicate of the MASS list in the topology (rtf) file.

WARNING: changing the MASS number of an atom type has no physical impact, except that it invalidates any psf file containing that atom type! In other words, you have to re-generate the psf after changing the MASS numbers. This is the reason why the MASS lists are sparse as they are: to allow for future atom types to be inserted without requiring the user to regenerate their psf files.

Last edited by Kenno; 05/06/10 05:24 PM. Reason: Added "more prone to breaking the psf..."