It sounds to me like Windows XP is confused about which drives are where in the system. Did you, by any chance, install the OSes with the drive order changed in the bios? If so that could be the source of your OS's confusion. Once the second drive is in the system the automatic drive letter assignment doesn't work.
First, check the boot.ini for Windows XP. Make sure it is properly set up for booting from the second drive. This may solve your problem but I'm not sure. If it boots, but stuff is broken, you may have change XP's drive letters (in the Disk manager).
If this doesn't work for you, I would recommend installing from scratch. First, I'd partition both drives. Make the C: partition something Windows can't use and partition D: with NTFS. Then install XP on D: (which it might think is C:). After it's installed, re-letter the partition as needed in Disk management. Then install 7 on C:. You may need to temporarily change the partition type of D: so that it becomes hidden from 7's installer, or else it may try to upgrade that drive. For changing the partition type I normally use Linux's fdisk which can edit the type without making any other changes. Once 7 and XP are both installed, set up the boot.ini as Ted Elliot recommended.
I have not tested these instructions and a lot has changed since I last tried to dual-boot two different Windows installs but the general principle is to avoid changing partition layout and drive letter detection after the first install, so that it continues to work once you install the second drive.