Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

MSDOS 4.0 -- MASM as standard (Announce)

posted by Rugxulo Homepage, Usono, 29.04.2025, 20:40

> Name clash.
>
> as86 as shipped on the PDOS/386 disk.
>
> https://github.com/robertapengelly/as86

I see a Makefile.wcd there, is it using OpenWatcom's wmake?
It does (allegedly) produce a large model DOS .EXE.

Wmake does support "*wcl" for longer cmdlines (indirectly via env vars). It also has "rm" built-in and some other nifty features.

(Speaking of "standard", why force Gmake on BSD? They have their own make.)

> It's a subset of masm and completely public domain.
>
> This is what I see as the future - enhancing this
> public domain assembler so that it gets closer to
> be able to do things like assemble MSDOS 4.0 source code.

I see your point, but MASM has a lot of heavy features. I don't think even TASM fully supported them all.

In particular, one thing that MASM and TASM supported was memory references without square brackets, e.g. "MOV MyWordVar,13" instead of "MOV [MyWordVar],13". This is somewhat ambiguous (albeit more concise) and not supported by almost anyone else (over a dozen different assemblers), so not just NASM.

Macros, structs, preprocessor, outputs, and other weird features. For just a "simple" assembler program, MASM is overkill.

Yes, it was popular, but no, it's not standard (or even commonly supported).

> > > > unlike the MASM that ships with the
> > > > 2024 April MS-DOS v4 release. So therefore I think NASM is better.

They ship MASM v5, right?

> > > I personally don't want to involved in a non-standard
> > > language.
> >
> > I don't see how NASM is "non-standard", unless you want to define a
> > "standard" as just whatever dialect has the single largest existing code
> > base or whatever tool has been the single most popular choice at one
> > point in time.

NASM was originally strictly two-pass, so some things they did without. (There are even one-pass assemblers with even more restrictions.)

> Yes, Microsoft has always set the standard in this area.

MS does not always support standards. Their BASICs were never "standard". However, I think C# did get a few standards, and some things (e.g. PowerShell, which even runs on Linux) are written in it.

I would not hold their work up as a good example of standard anything (nor Linux although some few people may try). Some people are more interested in feature creep and competitive advantages rather than portability to unsupported, no longer sold OSes or cpus. (Modern software seems to primarily care about x64 and AArch64.)

> Actually, I consider whatever works on masm, wasm, jwasm and as86
> to be "standard".

Just from (admittedly limited) personal experience, very few IA-16 assemblers agree on anything. It's not like C or Pascal (with actual standards) although even there, differences exist. (MASM was originally written in Pascal but switched to their C compiler for mixed memory model speedups. Of course, MASM also stopped being DOS-hosted in 1995, stopped being sold as a separate product later, and removed all 16-bit instruction support in 2010, IIRC. OS/2 support is also long gone.)

Standards exist, even unofficial ones, but you more or less have to cope with your own workarounds. (It's feasible to write a Sed script to quickly adapt syntax between assemblers for specific bits of code.)

"Standard"? You don't strictly need it. You can roll your own syntax. Admittedly weird (and annoying when everybody is incompatible) but totally valid if you can prove it's better somehow (ahem, TASM's Ideal mode).

 

Complete thread:

Back to the forum
Board view  Mix view
22552 Postings in 2097 Threads, 401 registered users, 49 users online (1 registered, 48 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum