What do I need to compile a 16 bit DOS or Windows 3.1 program?

Sometimes people (unlucky people) are called upon to maintain old code that will only work on 16 bit platforms due to hardware requirements, or would be prohibitively expensive to port.

The last 16 bit compiler that Microsoft produced was Visual C 1.52c, and this can produce programs for both DOS and 16 bit Windows 3.x

If you are a registered owner of the current Visual C++ 32-bit product you can contact Microsoft and ask for a VC 1.52c CD for a nominal fee. That's the case at the time of writing, but circumstances can of course change.

You can try and buy second-hand on EBay: the original product is probably long gone now, but a copy of 1.52c used to ship in the box with 32-bit Visual C++ 4.0, so that's the one you'd have to aim for.

You can also contact your local Microsoft subsidiary direct, but be prepared for a struggle: many Microsoft staff don't even know that the 16 bit product existed, let alone that you can still get it. Certain EULA (End-User Licence Agreement) texts permit downgrading as of right: I believe this applies to commercial volume licence agreements. It appears from the page quoted above that this "privilege" <sheesh> also applies to the compiler product licences.

However you contact Microsoft, be prepared to provide your valid licence information. That would be your MSDN licence number, or the product identification number from your copy of VC 6.0. That's the number it gave you when you installed it. You know, the one you didn't write down :-)