XP/Vista problems with Multiple HDDs


Okay so, here's the deal. I have a SATA HDD that is holding my OSes and school/worklike files. Then I have two IDE HDDs for games and virtual memory and tom-foolery. So I decided i'd play with Vista. I take out my IDE's to make partitioning less confusing, and threw out 20 gigs on my SATA for a Vista partition. Installed, rebooted, everyone's happy. XP Loads, Vista loads: Dance time, right? Wrong.

I plug in my IDEs and it goes to hell. Vista will boot, but Windows XP will not. It tells me that \NTRDL is bad and gives me an error akin to (this isn't exact, although I'll get the exact one later) 0x00000002

Tells me to fix my windows install, etc. Well I tried rebuilding based on the manual and no hope. So I've come to the conclusion that when I plug my IDEs in it kicks my SATA to some different hard-drive position. But how do I figure which one, and which to edit in my Boot.ini?

This is what it has now:

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /FASTDETECT /NOEXECUTE=OPTIN

Would it be disk() or rdisk() that I should fiddle with? And is there any danger? Or am I totally way off base? Any help would be vastly appreciated to end tons of frustration and loads of stress. Thank you.
Thanks, I will operate in that direction. I spose I'll just try it number by number starting with multi, then disk.

What exactly is multi() ? I'm asuming disk() is the disk position (such as it would show on a partition editor)
Hi soal,
I quote from the wiki
multi(0): The adapter of the hard disk that Windows is on. Keep it set to 0.
disk(0): The physical disk number to load Windows from if multi is not used. Since we're using multi, keep this 0 as well.
rdisk(x): The physical disk number to load Windows from. rdisk() begins counting from 0, so the first drive on your system is rdisk(0), the second is rdisk(1), and so on and so forth.
partition(y): The number of the partition on the drive rdisk(x). partition(y) starts counting from 1, so the first partition is partition(1), the second is partition(2), etc. partition(y) counts primary partitions first then counts extended partitions