Notes on MASM 6.11 Error Messages
(c) Copyright Microsoft Corp. 1994
This text file contains information on the following:
- 32-bit Linker Errors
- ML Errors Update
- Microsoft MS-DOS Extender Run-Time Errors
=============================================================================
32-Bit Linker Errors
--------------------
If you attempt to assemble a 16-bit executable file, but call the
32-bit version of LINK, you will receive a LNKnnnn error message.
The following output example illustrates specifically which error
messages you may receive:
**********************************************************
Microsoft (R) 32-Bit Executable Linker Version 1.0
Copyright (C) Microsoft Corp 1992-93. All rights reserved.
/z2
"afile.obj"
"afile.exe"
NUL
LINK : warning LNK4044: unrecognized option "z2"; ignored
LINK : warning LNK4044: unrecognized option "r"; ignored
LINK : error LNK1104: cannot open file "afile.exe"
**********************************************************
You may also receive the warning
cvtomf() : warning : 16-bit segment
If you are building a 16-bit executable file, use the LINK.EXE
included with MASM 6.11. If you have the directories for both the
16-bit and 32-bit linkers included in your PATH, the directory
containing the 16-bit LINK.EXE must be listed before the directory
containing the 32-bit linker.
ML Errors Update
----------------
The following is updated information on ML error messages. The
complete list of assembler error messages is located in Appendix A
of the MASM Environment and Tools book.
A1004: out of memory
The assembler could not load the file because all memory
is exhausted. For ML.EXE to run with the Microsoft Windows
operating system, a Windows swap file is often needed.
A1018: COFF error writing file
The assembler was unable to write to an output file. One
of the following may be the cause:
- The current disk is full.
- The current disk is read-only.
- The disk you are writing to is not ready.
A1019: invalid debug and browser data; file exceeds line limit
The assembler cannot generate debug or browse information
on an OMF file longer than 32,767 lines, or on a coff file
longer than 65,553 lines.
To eliminate this error:
- Break the file up into smaller pieces (each having less
than 32,767 lines for OMF files, 65,553 for coff files)
and reassemble, or
- Assemble without options /Zi, /Fr, or /FR.
A1020: cannot find LINK.EXE
This error occurs when LINK.EXE cannot be found on the
path. Placing LINK.EXE on the path will resolve this error.
A1021: cannot find cvpack.exe
This error occurs when CVPACK.EXE cannot be found on the
path. Placing CVPACK.EXE on the path will resolve this
error.
A2112: PROC and prototype calling conventions conflict
The assembler has detected that the proc and prototype
statements contain different calling conventions. Make sure
the calling conventions in the proc and prototype
statements are the same.
A2211: FAR not allowed in flat-model comm variables
The assembler has detected a FAR directive in a flat-model
program. The FAR directive is irrelevant for flat-model
programs and should be removed.
A2212: invalid .model parameter for flat model
The assembler has detected nearstack or farstack
directives in a flat-model program. These directives are
irrelevant for flat-model programs and should be removed.
A2213: ALIAS name is empty
The assembler has detected that a parameter in the alias
statement is empty. To remedy the situation, fill in the
empty alias parameter.
A2214: GROUP directive not allowed with /coff option
The assembler has detected that a group directive along
with the /coff option. The group directive and it's
parameters should be removed.
A2215: .FPO is not compatible with nested procedures.
The .FPO directive should not be used within nested
procedures. Remove the nested procedure or the .FPO
directive from the nested procedure.
ML Warnings Update
------------------
A4014: directive ignored with /coff switch
Directives .SEQ, .ALPHA, and .DOSSEG are ignored when
assembling with the /coff switch. These directives have no
effect and should be removed from flat-model code.
A4015: /Gc switch incompatible with flat model
The /Gc switch is incompatible when assembling a flat-
model program. The switch was ignored.
A4016: /AT switch incompatible with flat model
The /AT switch is incompatible when assembling a flat-
model program. The switch was ignored.
A4017: invalid command-line option: /<option>
ML has detected a command-line option that is invalid.
The option was removed and ML compiled as it normally
would.
A4018: directive ignored without /coff switch
The assembler has detected a directive that will be ignored
if the /coff command line option isn't used. The .FPO
directive must be used with the /coff switch.
A4019: directive ignored outside a procedure
The assembler has encountered a directive, such as the .FPO
directive, that should have been used within a procedure.
This directive will be ignored by the assembler.
A4020: LOADDS ignored in flat model
You have attempted to use the <loadds> operand in a
flat model program. Due to the nature of flat model
programming, the DS register need not be saved on
procedure calls. Remove the <loadds> operand from
your source.
A5006: calling convention not supported in flat model
ML has detected a calling convention not supported in
flat-model programs. The convention was ignored.
Microsoft MS-DOS Extender Run-Time Errors
-----------------------------------------
The MASM assembler, ML.EXE, is a 32-bit MS-DOS-extended program. An
MS-DOS Extender error can occur when you run ML. MS-DOS Extender
errors have the following format:
DOSXNT : error DXnnnn: message
DX1020: unhandled exception: exception; contact Microsoft
Support Services
A problem exists in ML.EXE. Additional information
appears after this error message. Note the circumstances
of the error and notify Microsoft Corporation by
following the instructions in the "Microsoft Support
Services" section in the Microsoft MASM Environment and
Tools book.
DX1070: GODOSXNT.EXE stub out of date
ML is not compatible with the version of DOSXNT.EXE
available. A compatible version of the Microsoft DOSXNT
MS-DOS Extender (DOSXNT.EXE) must exist in the same
directory or in a directory specified in the PATH
environment variable.
This error can result when Microsoft MASM 6.11 is
installed in the same directory as another language
product. Try reinstalling MASM 6.11 in a different
directory.
DX1140: DOSXNT.386 driver required to run with Windows
For ML.EXE to run with the Microsoft Windows operating
system, the driver called DOSXNT.386 must be specified
in the [386Enh] section of the SYSTEM.INI file as
follows:
DEVICE=<path>\DOSXNT.386
where <path> is the directory that contains the
DOSXNT.386 file.
DX1180: cannot load program : <reason>
The MS-DOS Extender could not load ML.EXE for the given
reason. The message describing the reason can be one of
the following:
- access denied to file
Change the access rights for the file.
- invalid or corrupted .EXE file
Contact Microsoft Support Services.
- out of memory
Remove some TSRs or add more memory.
- too many open files
Either close some files or increase the number of
file handles specified in the FILES= statement in
CONFIG.SYS.
DX1230: DOSXNT initialization failed
This error usually follows error DX5420.
DX1270: command-line error : unknown command switch
This error occurs if one of the following environment
variables is set: G, GO, GOT, GOTN, GOTNT, T, TN, TNT.
To see the current settings of environment variables, run
the SET command at the operating system prompt. To clear
an environment variable, run the command SET variable=,
where variable is the name of the variable to be cleared;
no other characters can appear before you press ENTER.
Changes in environment variables must be made outside of
Windows. Check the AUTOEXEC.BAT file for environment
variable settings.
DX1350: cannot load program: file not found
This error occurs if one of the following environment
variables is set: G, GO, GOT, GOTN, GOTNT, T, TN, TNT.
To see the current settings of environment variables,
run the SET command at the operating system prompt. To
clear an environment variable, run the command SET
variable=, where variable is the name of the variable to
be cleared; no other characters can appear before pressing
ENTER. Changes in environment variables must be made
outside of Windows. Check the AUTOEXEC.BAT file for
environment variable settings.
DX1390: cannot load program
DOSXNT cannot load the executable file because all memory
is exhausted. For ML.EXE to run with the Microsoft Windows
operating system, a Windows swap file may be required.
DX5420: CheckDPMI: error when checking for coprocessor support
For ML.EXE to run with the Microsoft Windows operating
system, the following must be specified in the [386Enh]
section of SYSTEM.INI:
DEVICE=*vmcpd
Phar Lap err 58: Can't create VM swap file of size 0 in
directory T:\
where T:\ is a read-only network drive. This error
may occur in the MS-DOS environment (outside of Windows)
when ML.EXE is located on a read-only network share.
To avoid this error, you can do one of the following:
- Set the DOSX environment variable to "-novm" as
follows:
set dosx=-novm
This instructs the dos extender not to use VM.
- Set the DOSX environment variable to "-swapdir
c:\<dir>" as follows:
set dosx=-swapdir c:\<dir>
where <dir> is a directory on drive C:. This instructs
the MS-DOS Extender to put the swap file in the
specified directory.