This was working fine for a year or three - something happened in the last month or so.
I'm pretty sure that the missing hal.dll file isn't the actual problem - the file is there, and windows works fine. (I found out the hard way that windows doesn't work without it(!?!), but that's another story.)
I've looked at the boot.ini file, but I don't see anything obvious (to me) wrong with it. It looks almost identical to the example in this thread. I'll try to post mine later today.
I can't think what might have changed. I vaguely recall an ubuntu update the last time I was using it - could that be an issue?