Ok I'm guessing when you installed linux you had the hard drive with windows on it unpluged. The reason I say that is in your OP you said you could plug each OS into the 0 plug and it would boot.
Here is what I would do, plug in the drive with windows on it into the 0 spot so you can boot to it normal, and plug in the linux drive in the NO, 1 sata spot. Now go into your bios and to the boot option and set the linux drive first in boot order. Once you have this done save and exit the bios. When your system reboots and gets to the Grub screen, press c for command line, now edit the entry I have high-lighted start with (hd0,0) and work your way up like so (hd1,0) (hd2,0) ext.
Code:
title Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,1)
makeactive
chainloader +1
When you find the one that works, boot into linux and edit your /boot/grub/menu.lst to make things permanent.
I have a similar setup to yours only my windows is on a raid0 array, so I had to map to the first drive in the array. My menu.lst looks like this,
Code:
title Windows XP
root (hd2,0)
map (hd2) (hd0)
map (hd0) (hd2)
chainloader +1