		     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.

