I still use MSVC 8.0 under DOSEMU on Linux. I've used it on DOS and Windows all told for nearly 20 years.

It's quite a good compiler; with /Ox optimization, some of the code is very good indeed. If you need a good assembler, MASM 6.10 is just the ticket. I don't think there's another assembler out there that surpasses its macro facility.

I do have Borland Turbo C, but was disappointed with some of the optimizations.

MSVC uses a linker library called oldnames.lib to resolve some of the underscore-naming peculiarities. If you're determined to use Borland, then you might be able to construct a similar one or perhaps a preprocessor file that provides the equivalents.

Adding a few include files, such as stdint.h to MSVC makes conversion of 16-bit code to 32- and 64-bit code (gcc) pretty straightforward, provided you use the stdint types.

I even compile with Microsoft's 32-bit C compiler under DOSEMU by using the HxDOS extender. No need to use Windows.