@Dzomlija - What you suggest is basically a reinstall which is what I don't want to do, partly because my XP is 32bit and my Vista is 64bit and I don't want to mess up the XP MBR.
Anyway this problem is solved - I found I could use a simple and easy solution that works using EasyBCD.
System setup:
HD 0 partition 1 = XP 32bit, with XP MBR on harddisk.
HD 1 partition 1 = Vista 64, with Vista MBR on harddisk.
The problem:
I was swapping harddisk boot priority in BIOS to boot either OS, this was inconvenient so I needed to set up a dualboot. Ordinarily you would install Vista over (or from) XP so that the HD 0 remained the boot disk. Well, you can't install Vista 64 from XP 32bit so I'd installed Vista on a new empty harddisk (a different disk than the disk that XP is on). This allows booting to both XP and Vista but only by reassigning which harddisk is the boot disk in BIOS. There has also been the question of whether it is even possible to dualboot Vista 64 and XP 32. As it turns out that's not a problem.
The Solution:
In the BIOS harddisk boot priority, make the Vista 64 harddisk the system boot disk (HD 0,1), make the XP 32 harddisk the second harddisk (HD 1,1), make no other changes to the XP disk. Boot the computer, it will run Vista 64. Copy the files boot.ini, ntldr, and ntdetect.com from the XP root folder to the root folder of the Vista partition.
Change the boot.ini IN THE VISTA PARTITION:
from --> multi(0)disk(0)rdisk(0)partition(1)
to ----> multi(0)disk(0)rdisk(1)partition(1)
Note the change from "rdisk(0)" to "rdisk(1)", this is changed in two lines in the boot.ini, it's very important that both entries match. The entry "rdisk(1)" says that the XP harddisk is the second disk in the BIOS order. The (original) boot.ini found in the root folder of the XP partition IS NOT CHANGED. If the boot priority is ever changed to make the XP harddisk the system bootdisk then the computer will still boot into XP without any changes.
Ensure that the Vista harddisk is the system bootdisk in BIOS. Boot into Vista 64 if it's not already running. Now install EasyBCD into Vista 64 (not XP), it may complain that it can't find a copy of Vista, ignore that. Add the OS entry for XP, EasyBCD just needs to be told that the OS "type" is XP, it will set the drive - that means that it doesn't matter what the drive letter is for the XP harddisk (inside Vista). Actually it finds the XP boot files it needs in the Vista root folder, recall that they were copied there.
Now, restart Vista and the multiboot menu will have a Windows XP entry that actually works, it will boot into 32bit XP and the XP will run properly as drive "C:".
Why go to all this trouble? Because you do not want to mess with the XP MBR and because you cannot install Vista 64bit from XP 32bit. My next project is installing Windows 7 from Vista 64 - I hope it goes well.