Right so the 160Gb drive has windows on it, the 40gb doesn't?
This is the way i would do it.
I wouldn't format the 160gb drive since it already has windows on. So connect the 40gb drive as Master on the same IDE1 channel as the 160gb drive usually is. You can unplug the 160gb drive for this bit.
Put the windows disc in at bootup at set it up so that it installs on the 40gb drive. It will now format this, and install. (Make sure it does install on the 40gb)
After that has finished and you did want to format the 160gb drive too, install windows xp but select the 160gb drive to install it to by setting this as a Master, and you could take out the 40gb... (This might be the reason the boot loader isn't working though since its not setting one up)
Now it should boot up with a boot menu, and if it doesn't theres a way of setting this up:
Boot into windows on the 160gb one (The main using this as master and the 40gb as slave) and then go to the Control Panel, System, Advanced tab. Then under start up and recovery, click settings.
Press Edit to change the boot.ini.
This is how your should be set up, or something very much like this to get a boot loader. You can change the timeout to anything from 30 to 1 second. 0 doesn't work since you could just delete a drive from it to stop the boot process hehe
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="160gb " /fastdetect /NoExecute=OptIn
Basically it is set up so after 30 seconds, the default drive to load up is rdisk 0 (the 160gb drive), otherwise, you can choose between 140gb and 40gb. You can change these names to make it easier to know which one it is.
Partition 1 is always what windows is set up in at first, with rdisk 0 being the first IDE Master channel, and 1, 2, 3 with 3 drives for example.
So Save it, and restart after modifying. You should now have a boot up option.
I hope this helps