• Please review our updated Terms and Rules here
  • Exhibitor application for VCF West 2022 is now open! If you are interested in exhibiting, please fill out the form here.

IBM MASM and LINK programs CIRCA 1985

Hugo Holden

Veteran Member
Joined
Dec 23, 2015
Messages
2,434
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 ?
 

Chuck(G)

25k Member
Joined
Jan 11, 2007
Messages
39,071
Location
Pacific Northwest, USA
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.
 

Chuck(G)

25k Member
Joined
Jan 11, 2007
Messages
39,071
Location
Pacific Northwest, USA
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:

Trixter

Veteran Member
Joined
Aug 31, 2006
Messages
7,205
Location
Chicagoland, Illinois, USA
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!
 

Chuck(G)

25k Member
Joined
Jan 11, 2007
Messages
39,071
Location
Pacific Northwest, USA
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.
 

Hugo Holden

Veteran Member
Joined
Dec 23, 2015
Messages
2,434
Location
Australia
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.
 

yuhong

Experienced Member
Joined
Mar 2, 2010
Messages
333
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.
 

Chuck(G)

25k Member
Joined
Jan 11, 2007
Messages
39,071
Location
Pacific Northwest, USA
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).
 
Top