• Please review our updated Terms and Rules here

IBM MASM and LINK programs CIRCA 1985

Hugo Holden

Veteran Member
Joined
Dec 23, 2015
Messages
4,647
Location
Australia
Apparently IBM had a MASM macro assembler program which created object files and an associated program called LINK, which would convert these to executable programs. This software is referred to in a 1985 textbook I have on 8088 programming.

Does anybody know how these programs were initially sold, presumably they were on one or more 5.25 floppys produced by IBM ? would these be difficult to obtain now ?
 
I still have IBM-branded MASM 1.0. 160K floppies--and there was more than one version of the assembler on the disk--I believe that there was a "reduced" version that would run in low-resource (i.e. 64K, single floppy) systems. It cost $99.

When I think back to using it, I taste ashes. It was unbelievably buggy in ways that no assembler should ever be. MASM 2.0 actually was usable.

To this day, I doubt that MASM 1.0 was ever used at IBM. That would have stalled the introduction of the 5150 for years.
 
Well, it's been over 30 years, but there's a taste of it here. Generating incorrect code was perhaps the most annoying, followed by the frequent "Phase Error" messages that appeared at the end of assemblies without giving a clue as to what exactly was the cause. The macro part would often cause the assembler to error out with no error messages.

As I understand it, MASM was originally written in Pascal as a "quick and dirty" project at Microsoft and completely rewritten for 2.0. SCP-DOS, interestingly enough, was written using a Z80 cross-assembler.

Most telling is this from the old INFO-IBMPC list:

[Sorry about this. MASM 1.0 has caused me much misery. From now on
INFO-IBMPC official policy is that we won't support MASM 1.0 Kludges.]

The same list also illustrates various "interesting" problems with MASM 2.0-4.0. Really, the first decent version of MASM was 5.1--which is very sad, since a rock-solid assembler is the cornerstone of basic system development. Microsoft clearly wasn't using their own tools for early versions of MS-DOS.

I started using the Intel MDS assembler for 8086 in 1979. It wasn't fast, but it was pretty solid.

An excellent summary of MASM versions is here
 
Last edited:
Thanks for the references. To be somewhat fair, a lot of the bugs were due to incorrect source code input, like missing operands producing default values of 0 instead of an error message. I'm not defending MASM, but I can see how things like that would happen.

This, however, is indeed truly egregious:

Code:
Erroneous  code  will also be generated if square brackets are omitted in
certain operations, even thought an error message would be expected.

         MOV  BYTE PTR ES:DI,'$'      Is incorrect, and generates:
         MOV  BYTE PTR ES:[7],'$'       Rather than what was intended, which was:
         MOV  BYTE PTR ES:[DI],'$'

    This  appears to occur because the assembler finds DI in it's symbol
table, equated to it's register triplet '111'b, and substitutes the 7 as  if
the programmer had said DI equ 7.

THAT is blatantly incorrect code. Yikes!
 
I'll agree that the example you cited is incorrectly coded--but the fact is that no error message is generated! This is bad, very bad--it can make debugging pure hell.

I think the general problem lies in the nonisomorphic nature of 8086 syntax. "MOV" can generate a wide variety of opcodes, including some that are functionally equivalent to one another, but not coded the same.

Intel 8086 assembler (ASM86), at least in its early incarnations, read in a file containing nothing but OPDEFs for all of the instructions, which I thought was pretty clever.
 
Another question:

Is it known whether Microsoft's MASM V4.0 marketed to run on computers running MS-DOS will run in the IBM PC-DOS (v3.3) environment ? I have read that some programs are incompatible between the two DOS systems.
 
Another question:

Is it known whether Microsoft's MASM V4.0 marketed to run on computers running MS-DOS will run in the IBM PC-DOS (v3.3) environment ? I have read that some programs are incompatible between the two DOS systems.

It should.
 
Just checked; it runs on mine running PC-DOS 3.3.

MASM 1.0 will even run in a Windows XP command line session--but not on DOSBox (requires FCB support).
 
Back
Top