VOGONS


First post, by OzzFan

User metadata
Rank Member
Rank
Member

I've been bouncing back and forth between trying out different compilers and can't seem to make up my mind and settle on one. I have copies of Microsoft Visual C++ 1.52c, Symantec C++ 7.2, and Open Watcom 1.9. Each seems to come with their own advantages and drawbacks. Here is what I've determined after using each for a while:

MSVC Pros:

  • Excellent DOS/Win31 support
  • Decent compiled file size
  • Excellent Resource editor

MSVC Cons:

  • Cannot target Win32s or Win32
  • Confusing MDI file editor
  • Should I release my code under MIT license, not everyone can obtain MSVC to experiment or play with.
  • Only supports x86-16 inline assembly
  • .ASM files must be compiled separately and include .obj files for linking

Symantec Pros:

  • Great file editor
  • Can target DOS, Win31, Win32s, Win32
  • Has built-in mouse library for DOS apps
  • Excellent Resource editor
  • Supports x86-32 inline assembly
  • Can use MASM to assembly .ASM files

Symantec Cons:

  • Uses non-standard graphics library
  • Should I release my code under MIT license, not everyone can easily obtain a copy to experiment or play with.
  • Custom mouse library is not cross-compiler

Open Watcom Pros:

  • Great file editor
  • Supports "Safer C" (e.g. "printf_s()")
  • DOS4G/W / DOS32A support
  • Everyone can easily get a copy
  • Has WASM to assembly .ASM files

Open Watcom Cons:

  • File editor not completely functional in Windows NT 3.5x dev environment
  • Compiled file sizes are (sometimes considerably) larger than average
  • Confusing GUI options for compiling and linking
  • Terrible resource editor
  • WASM isn't as good as MASM

I'm open to other perspectives on what works for them. The only reason why I want to settle on one is for simplicity and commonality. I've been getting very frustrated with the OW compiler and have been thinking about going back to MSVC as I find it easier to work with and the performance of the executables is decent. Symantec is great but I don't like its lack of support for the <graph.h> library that comes standard with MS and OW.

Are there any good reasons to care about ensuring if other people can compile using the same compiler, or should I let them worry about that?

What compiler do you use for your retro coding and why?

Reply 1 of 9, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Is DJGPP not an option? I prefer MinGW32 GCC 4.7 (win32) and DJGPP (DOS32)

apsosig.png
long live PCem
FUCK "AI". It is a tool of fascism. We do not need it. We do not use it.

Reply 2 of 9, by Fish3r

User metadata
Rank Newbie
Rank
Newbie
OzzFan wrote on Yesterday, 22:58:

MSVC Cons:

  • Cannot target Win32s or Win32

I may be misunderstanding what you're referring to here but isn't MSVC what comes with every visual/developer studio? Those can target win32 just fine.

Reply 3 of 9, by Yoghoo

User metadata
Rank Oldbie
Rank
Oldbie
OzzFan wrote on Yesterday, 22:58:

Are there any good reasons to care about ensuring if other people can compile using the same compiler, or should I let them worry about that?

What compiler do you use for your retro coding and why?

I do retro programing for fun. So I use the tools I want to use and where I am comfortable with (mostly good old Borland stuff) and don't worry about other people.

If I would be creating a huge project and want others to collaborate than it's another story and in your case I would choose Open Watcom. But than again it's retro. So most projects aren't that big and most probably wouldn't attract a huge number of people who want to participate anyway.

My advice: use the one you like the most. 😀

Reply 4 of 9, by EduBat

User metadata
Rank Member
Rank
Member

I used djgpp for my last project ( BIOSDUMP - extract the BIOS without a hardware programmer )

Pros:
The editor is good, as well as the documentation
It compiles to 32 bits and comes with a dos extender which you can embed into the program you're writing
Cons:
It's a bit slow to compile programs with
Not sure about code density, speed, etc as I have not ran any comparisons

I did not try to link with asm code but the documentation shows how to do it. GAS is the assembler and it should be possible to use either intel or at&t syntax.
I'm just a hobbyist with little experience but I hope this helps.

Reply 5 of 9, by OzzFan

User metadata
Rank Member
Rank
Member
leileilol wrote on Today, 00:03:

Is DJGPP not an option? I prefer MinGW32 GCC 4.7 (win32) and DJGPP (DOS32)

I should have specified I'm mostly writing for real mode DOS or Win16 applications, but I've been developing Win32s versions of my Windows programs on the side.

Fish3r wrote on Today, 00:07:
OzzFan wrote on Yesterday, 22:58:

MSVC Cons:

  • Cannot target Win32s or Win32

I may be misunderstanding what you're referring to here but isn't MSVC what comes with every visual/developer studio? Those can target win32 just fine.

MSVC 1.52c is DOS/Win16 only. I have to use MSVC 2.2 or higher to get Win32, which isn't a huge problem for me.

Reply 6 of 9, by cyclone3d

User metadata
Rank l33t++
Rank
l33t++

The newer compilers for MSVC that support targeting Win32 are going to have much better compilers and give you better optimized code.

Visual Studio 2019 seems to be the last version that supports targeting Win32 without any shenanigans.

I don't much like GCC as I have had issues with it in the past where turning full optimization on creates code that crashes, while the same code with full optimization works perfectly fine when compiled with MSVC.

Yamaha modified setupds and drivers
Yamaha XG repository
YMF7x4 Guide
Aopen AW744L II SB-LINK

Reply 7 of 9, by jakethompson1

User metadata
Rank l33t
Rank
l33t

Have you looked at Digital Mars? It's the evolution of the Zortech compiler, and still maintained (maybe?) like OpenWatcom.

Reply 8 of 9, by OzzFan

User metadata
Rank Member
Rank
Member
jakethompson1 wrote on Today, 03:08:

Have you looked at Digital Mars? It's the evolution of the Zortech compiler, and still maintained (maybe?) like OpenWatcom.

I have, and I even bought a copy of it. It pretty much has the same pros and cons of the Symantec compiler, except it has an extra oddity in that to compile projects I have to go into the settings and either check or uncheck "Ignore capitalization." This happens regardless of what project I make, which tells me something is broken within the source headers/includes and no one has bothered to fix it. Maybe I'm being too cautious, but I have concerns about using a compiler whose headers/includes are broken. I don't really think it is being maintained anymore.

Reply 9 of 9, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie

For simple Winblows tools, I tend to use LCC, for more complex stuff I sometimes resort to MVSC

To crank out capabable & SMALL tools for DOS (and Winblows with my DVM virtual machine), I pretty much only use my own Micro-C/PC toolset,
there's an amazing extra understanding of a toolset when you've written it yourself!

https://dunfield.themindfactory.com ; "Daves Old Computers" ; SW dev addict best known:
ImageDisk: rd/wr ANY floppy PChw can ; Micro-C: compiler for DOS+ManySmallCPU ; DDLINK: simple/small filecopy(w/o netSW)via Lan/Lpt/Com