0.9.1 ML Fatal Errors

Number Message

A1000 cannot open file: filename
  The assembler was unable to open a source, include, or output file.
  One of the following may be a cause:

The file does not exist.

The file is in use by another process.

The filename is not valid.

A read-only file with the output filename already exists.

Not enough file handles exist. In DOS, increase the number of file handles by changing the FILES setting in CONFIG.SYS to allow a larger number of open files. FILES=20 is the recommended setting.

The current drive is full.

The current directory is the root and is full.

The device cannot be written to.

The drive is not ready.

A1001 I/O error closing file
  The operating system returned an error when the assembler attempted to close a file.
  This error can be caused by having a corrupt file system or by removing a disk before the file could be closed.
A1002 I/O error writing file
  The assembler was unable to write to an output file.
  One of the following may be a cause:

The current drive is full.

The current directory is the root and is full.

The device cannot be written to.

The drive is not ready.

A1003 I/O error reading file
  The assembler encountered an error when trying to read a file.
  One of the following may be a cause:

The disk has a bad sector.

The file-access attribute is set to prevent reading.

The drive is not ready.

A1004 out of far memory, use /VM command-line option
  There was insufficient memory to assemble the program.
  One of the following may be a solution:

In DOS, use the /VM command-line option to enable virtual memory.

If you are using the NMAKE utility, try using NMK or assembling outside of NMAKE.

In PWB, try exiting and assembling using ML.

In OS/2, try increasing the swap space.

In DOS, remove terminate-and-stay-resident (TSR) software.

Change CONFIG.SYS to specify a lower number of buffers (the BUFFERS= command) and fewer drives (the LASTDRIVE= command).

Eliminate unnecessary INCLUDE directives.

A1005 assembler limit : macro parameter name table full
  Too many parameters, locals, or macro labels were defined for a macro. There was no more room in the macro name table.
  Define shorter or fewer names, or remove unnecessary macros.
A1006 invalid command-line option: option
  ML did not recognize the given parameter as an option.
A1007 nesting level too deep
  The assembler reached its nesting limit. The limit is 20 levels except where noted otherwise.
  One of the following was nested too deeply:

A high-level directive such as .IF, .REPEAT, or .WHILE

A structure definition

A conditional-assembly directive

A procedure definition

A PUSHCONTEXT directive (The limit is 10.)

A segment definition

An include file

A macro

A1008 unmatched macro nesting
  Either a macro was not terminated before the end of the file, or the terminating directive ENDM was found outside of a macro block.
  One cause of this error is omission of the dot before .REPEAT or .WHILE.
A1009 line too long
  A line in a source file exceeded the limit of 512 characters.
  If multiple physical lines are concatenated with the line-continuation character (\), the resulting logical line is still limited to 512 characters.
A1010 unmatched block nesting :
  A block beginning did not have a matching end, or a block end did not have a matching beginning. One of the following may be involved:

A high-level directive such as .IF, .REPEAT, or .WHILE

A conditional-assembly directive such as IF, REPEAT, or WHILE

A structure or union definition

A procedure definition

A segment definition

A POPCONTEXT directive

A conditional-assembly directive, such as an ELSE, ELSEIF, or ENDIF without a matching IF

A1011 directive must be in control block
  The assembler found a high-level directive where one was not expected. One of the following directives was found:

.ELSE without .IF

.ENDIF without .IF

.ENDW without .WHILE

.UNTIL[[CXZ]] without .REPEAT

.CONTINUE without .WHILE or .REPEAT

.BREAK without .WHILE or .REPEAT

.ELSE following .ELSE

A1012 error count exceeds 100; stopping assembly
  The number of nonfatal errors exceeded the assembler limit of 100.
  Nonfatal errors are in the range A2xxx. When warnings are treated as errors they are included in the count. Warnings are considered errors if you use the /Wx command-line option, or if you set the Warnings Treated as Errors option in the Macro Assembler Global Options dialog box of PWB.
A1013 invalid numerical command-line argument : number
  The argument specified with an option was not a number or was an invalid number.
A1014 too many arguments
  There was insufficient memory to hold all of the command-line arguments.
  This error usually occurs while expanding input filename wildcards (* and ?). To eliminate this error, assemble multiple source files separately.
A1015 statement too complex
  The assembler ran out of stack space while trying to parse the specified statement.
  One or more of the following changes may eliminate this error:

Break the statement into several shorter statements.

Reorganize the statement to reduce the amount of parenthetical nesting.

If the statement is part of a macro, break the macro into several shorter macros.

A1016 out of virtual memory
  The assembler was unable to allocate enough virtual memory to assemble this file.
  To eliminate this error, free some space on the drive specified by the TMP environment variable, or reassign TMP to a location where there is more free space. The assembler uses the current directory to store VM files if the TMP environment varible does not exist.
A1017 out of near memory
  There was insufficient memory to assemble the program.
  One of the following may be a solution:

If you are using the NMAKE utility, try using NMK or assembling outside of NMAKE.

In PWB, try exiting and assembling using ML.

In OS/2, try increasing the swap space.

In DOS, remove terminate-and-stay-resident (TSR) software.

Change CONFIG.SYS to specify a lower number of buffers (the BUFFERS= command) and fewer drives (the LASTDRIVE= command).

Eliminate unnecessary INCLUDE directives.

A1018 missing source filename
  ML could not find a file to assemble or pass to the linker.
  This error is generated when you give ML command-line options without specifying a filename to act upon. To assemble files that do not have a .ASM extension, use the /Ta command-line option.
  This error can also be generated by invoking ML with no parameters if the ML environment variable contains command-line options.
A1901 Internal Assembler Error
Contact Microsoft Product Support Services
  The MASM driver called ML.EXE, which generated a system error.
  Note the circumstances of the error and notify Microsoft Corporation by following the instructions on the Microsoft Product Assistance Request form at the back of one of your manuals.