The inarguably most important thing we need is the original compiler and IDE used to compile EarthSiege 2. In our case, the file name CW3220.DLL tips us off that we're dealing with Borland C++ 5.00.
Unfortunately, at the time of writing there is only the version 5.02 from 1997 (providing us with CW3230.DLL) available for download on the 'net over at WinWorld. I have tried to order a 5.00 CD-ROM for a lot of money on eBay, but Canada Post lost track of the parcel for three weeks and now it's stuck in German customs hell. Jesus Christ.
Even more unfortunately, the 5.02 release also turned out to be incomplete - Borland seems to have forgotten to ship the source for the exception handlers. So until the 5.00 CD-ROM arrives at my door step, turns out to be readable and containing the stuff we need, we will need to live with the Borland C++ Builder, the successor, once again available over at WinWorld (use version 5). Its sources are a bit more recent and appear to have a lot of stuff #ifdef 0'd out in the exception handling code, but anyway... close enough to give us some information at least.
You'll also need Borland C++ 4.52, since the C0NT.ASM of 5.02 is too different.
In addition, we want some documentation:
Agner Fog's (TU Denmark) guide on Calling Conventions - this one will be invaluable
Borland's Open Architecture Handbook aka BC4BOA.zip
Since we'll be dealing with Borland's Turbo Assembler (TASM) syntax, we'll also wantBorland Turbo Assembler v5 User's GuideBorland Turbo Assembler v5 Quick Reference
Once you have all of this, mount the Borland C++ 5 ISO and install the full edition to c:\bc5 (you can install Borland's Database Engine, if you want, but we won't need it). Then, since the installer actually does not do a full installation (WTF?! Probably because space on spinning rust plates was expensive back then?), copy over the d:\bc5\source\rtl folder into c:\bc5\source so we have the RTL source available on the VM. Alternatively, copy it over to your host so you can enjoy a modern IDE at least for the C/C++ part (TASM ain't covered by anything modern).
That's it on the VM side (for now. TODO: get remote debugging working).