Not done one with a XP64 before but not expecting any resistance as I have booted 3 XP together before.
I would tackle it this way. You need a Linux Live CD with Grub support so that when boot it up you can invoke a Grub shell to hide any partition you want. Say if it is partition hda1, which is known to Grub as (hd0,0) as it counts from 0, you can make it invisible to MS systems by
to unhide it you just use "unhide" instead of "hide" and so on.
I would therefore install the first XP, which one isn't really matter but a MS system must reside in a primary partition say hda1 (known as "C"). Have it operational. Then I hide it.
I would proceed to install the next XP in a primary paritition again and have it operational say in hda2(again known as "C"). No need to hide it this time.
The last system should be the Linux installed in hda3 with a swap partition in hda4. If I plan to have more I would put the swap in a logical partition hda5 so that I can continue in future with hda6, hda7, hda8.....
When Suse Linux is operational I edit its /boot/grub/menu.lst to make sure it has these lines to boot the 2 XP
Code:
title XP64 in hda1
unhide (hd0,0)
root (hd0,0)
chainloader +1
title XP32 in hda2
unhide (hd0,1)
hide (hd0,0)
root (hd0,1)
chainloader +1
You can afford hda2 visible to become "D" while operating hda1. However in using hda2 you need to hide hda1 because any visible MS system in front of hda2 will grab the "C" drive and the hda2 will become unboootable (because it was installed in a "C" before).
Pretty straight forward. You can run as many MS systems in the PC. For multi disks environment you need to use the "map" statement to alter the boot disk order "on-th-fly".
The 100+ systems link in my signature has a Grub menu booting 3 Dos and 3 Windows to look at as an example.