Release Notes for MPASM(tm) assembler version 3.00 
November 8, 2001

-----------------------------------------------------------------
Table of Contents
-----------------------------------------------------------------
* Device Support List
* Operating System Support List for v3.00
* Repairs and Enhancements Made in v3.00
* Repairs and Enhancements Made in v2.80
* Known Problems
* Serial EEPROM Support
* Using MPASM Assembler
* How to Contact Microchip
* Customer Change Notification - Development Systems 

----------------------------------------------------------------------
Command Line Device Options Supported
----------------------------------------------------------------------
12C508  
12C508A 
12C509  
12C509A 
12CR509A*
RF509AF*
RF509AG*
12CE518
12CE519
12C671
12C672
12CE673
12CE674
14000
16C432
16C433
16C505
16C52
16C54
16CR54
16C54A
16CR54A
16C54B
16CR54B
16C54C
16CR54C
16C55
16C55A
16HV540
16C554
16C558
16C56
16C56A
16CR56A
16C57
16CR57A
16CR57B
16C57C
16CR57C
16C58A
16CR58A
16C58B
16CR58B
16C5X
16C61
16C62
16CR62
16C62A
16C62B
16C620
16C620A
16CR620A
16C621
16C621A
16C622
16C622A
16CE623
16CE624
16CE625
16F627
16F628
16C63
16CR63
16C63A
16C64
16CR64
16C64A
16C642
16C65
16CR65
16C65A
16C65B
16C66
16C662
16C67
16C71
16C710
16C711
16C712
16C715
16C716
16C717
16C72
16CR72
16C72A
16C73
16F73
16C73A
16C73B
16C74
16F74
16C74A
16C74B
16C745
16C76
16F76
16C765
16C77
16F77
16C770
16C771
16C773
16C774
16C781
16C782
16CR83
16F83
16C84
16CR84
16F84
16F84A
16F870
16F871
16F872
16F873
16F873A*
16F874
16F874A*
16F876
16F876A*
16F877
16F877A
16C923
16C924
16C925
16C926
16CXX
17C42
17CR42
17C42A
17C43
17CR43
17C44
17C752
17C756
17C756A
17C762
17C766
17CXX
18F010*
18F020
18C242
18F242
18F248
18C252
18F252
18F258
18C442
18F442
18F448
18C452
18F452
18F458
18C601
18C658
18C801
18C858
18CXX
18F6620*
18F6720*
18F8620*
18F8720*
EEPROM8
EEPROM16


* Indicates new part support in this release

THESE PARTS MAY NOT ALL BE COMMERCIALLY AVAILABLE.

These can be chosen through the introductory screen, on the command
line, or in source file.  The selections 16C5X, 16CXX, 17CXX, and
18CXX are supported as generic family indicators.

The selections EEPROM8 and EEPROM16 are provided for generic memory
product support.  Read below for a description of how to use MPASM
assembler to generate files for programming Microchip Serial EEPROM
and I/O expander (MCP250XX) devices.

The standard header files have been updated to reflect these devices.
One header file, MEMORY.INC, is provided for generic memory product
support. Another header file, MCP250XX.INC, is provided for generic
MCP250XX device support.

NOTES:  
       - The 16C70 and 16C71A are now known as the 16C710 and 16C711,
 	 respectively.
       - Use the 12C509A.INC header file for the 12CR509A device.
       - Use the 16C620A.INC header file for the 16CR620A device.
       - Use the 16C5X.INC header file for the following devices:

		16CR54
		16CR54A
		16CR54B
		16CR54C
		16CR56A
		16CR57A
		16CR57B
		16CR57C
		16CR58A
		16CR58B
		16C55A
		16C56
		16C56A
		16C57
		16C57C
		16C58A
		16C58B
		16C52
		16C54
		16C54A
		16C54B
		16C54C
		16C55 


-----------------------------------------------------------------
Operating System Support List for v3.00
-----------------------------------------------------------------

MPASM.EXE is the command-line version of MPASM.  It is supported 
by the following platforms:

Windows 3.1x   Windows 95     Windows 98     Windows NT
Windows ME     Windows 2000


MPASMWIN.EXE is the 32-bit Window version of MPASM.  It is supported
by the following platforms:

Windows 95     Windows 98     Windows NT     Windows ME
Windows 2000


A 16-bit Window version of MPASM (MPASMW16.EXE) which runs on 
Windows 3.1x is available upon request.  

A DOS protected mode version of MPASM (MPASM_DP.EXE) for 
Windows 3.1x is available upon request. 


----------------------------------------------------------------------
Repairs and Enhancements Made in v3.00
----------------------------------------------------------------------

SSR 2444:  MPASMWIN.EXE is now a 32-bit application.

SSR 4377:  long macro arguments are no longer truncated in the listing file.	

SSR 4743:  leaving out the ENDM directive now generates a clearer error
  	   message.   

SSR 14373: a negative value for the RES directive now generates an error
	   message.

SSR 14484: the INCLUDE directive is now handled correctly in macros.

SSR 14858: labelling an ENDM statement now generates a clearer error
           message.

SSR 15168: When using the " __CONFIG <addr>, <expr>" directive, a 
	   space is no longer needed before "<expr>".

SSR 15390: a goto/call instruction with a PC-relative operand is now
           generated correctly in relocatable code.

SSR 15463: 0xF00000 has been added as the conventional start of data  
           EEPROM memory in the 18FXXX(X) parts.
		
SSR 15526: labels at odd bytes in relocatable code sections are now 
	   treated correctly.

SSR 15531: the access bit default value is now set correctly with a 
           constant file register operand.

SSR 15588: the P16C923.INC file now has the SPPSTAT bits SMP and CKE defined.

SSR 15589: the P16C923.INC file now has the SPPSTAT bits SMP and CKE defined.

SSR 15654: MPASMWIN.EXE no longer displays the error message 
           "Error Reading memo6.lines.Strings".

SSR 15673: the EECON1 bits are now defined in the 18FXX2 header files.

SSR 15744: the CMIF and CMIE bits are now defined in the 16F87XA header files.

SSR 15762: the CMIF and CMIE bits are now defined in the 18FXX8 header files.

SSR 15844: the P16C505.INC file's __MAXRAM value has been corrected.

SSR 15847: the P18C858.INC file's definition of PORTJ has been corrected.

SSR 15851: the P16F627.INC and P16F628.INC files now have the symbolic constants
           _DATA_CP_ON (data code protection on) and _DATA_CP_OFF (data code 
           protection off) defined.

SSR 15849: MPASM now allows a call/goto instruction into boot ram in the
           18C601 part.

SSR 15864: the IFDEF/IFNDEF directives are now handled correctly with
           macro parameters as arguments. 

SSR 15896: a new section directive, CODE_PACK, has been added which
           introduces a code section where zero padding to word boundaries
	   is NOT inserted.  This directive is only allowed for the 
	   18XXXX devices.
	   
	   For example, where
	  
	  	PROCESSOR 18C452 
	   	CODE 
		DB 1
		DB 2
		
	   will generate a code section of 4 bytes, consisting of 01, 00, 
	   02, 00 (in order of increasing addresses),
	  
	  	PROCESSOR 18C452 
	   	CODE_PACK
		DB 1
		DB 2
		
	   will generate a code section of 2 bytes: 01, 02.	

SSR 15899: default error/message/warning level behavior is now always correct.

SSR 15917: the __MAXROM and __BADROM directives are now implemented.
	   The syntax mirrors that of __MAXRAM and __BADRAM:
	   
	   	__MAXROM <expr>
		__BADROM <expr>[-<expr>] [,<expr>[-<expr>]]
		
	   The __MAXROM expression must evaluate to an address greater than
	   or equal to the target device's maximum ROM address.  __BADROM
	   may only be used following a __MAXROM.  Each __BADROM is only
	   effective until the next __MAXROM (or the end of the file).		
		
	   A warning will be emitted for the following circumstances: 
	    -- CALL and GOTO instructions whose target is evaluable by the
	       assembler to a constant and falls into a bad ROM region; 
	    -- LCALL and LGOTO pseudo-ops whose target is evaluable by the
	       assembler to a constant and falls into a bad ROM region; 
	    -- when generating a HEX file, part of an instruction falls 
	       into a bad ROM region. 
	       
	   Here's an example:
	  
	  		PROCESSOR 12C508 
	   		__MAXROM 0x1FF
			__BADROM 0x2 - 0x4, 0x5
			
			ORG 0x2
			; will emit warning (instruction in bad ROM)
		 L1:	MOVLW 5
			
			ORG 0x6
			; will emit warnings (targets in bad ROM)
			CALL L1 
			GOTO 0x3
			LCALL 0x4
			LGOTO 0x5
			
	       
	   The 18C601 header file has the region 0x40000 - 0x1FFDFF
	   specified as bad ROM (it's between external memory and boot RAM).

SSR 15938: Relocatable code generated for the generic processor type of 18CXX
 	   is now identified to the linker as for the 18C452 (it was 
	   identified as for the 18C958, which is now obsolete). 

SSR 15983: the ORG directive is no longer illegal when generating
           an object file (with the "/o" option).  In this circumstance,
	   the ORG directive introduces an absolute code section with an
	   internally generated name.  For example:
	   
	   	L1:	ORG	0x200
		
	   when assembled with the "/o" option is interpreted as 
	   
	   	.scnname	CODE	0x200
		L1:
		
    	   where ".scnname" is an internally generated name guaranteed
	   to be different than all previous names generated in such a 
	   circumstance.	

SSR 16112: correct relocatable code is now always generated for sequences
           of applications of the LOW/HIGH/UPPER operators 
	   (i.e., DB LOW x, HIGH x, LOW y).
	   
SSR 16121: the default .HEX file format is now INHX32.	   

SSR 16149: parameter settings and window position of MPASMWIN.EXE are
           now stored in MPLAB.INI and are persistent across invocations. 

----------------------------------------------------------------------
Repairs and Enhancements Made in v2.80
----------------------------------------------------------------------

SSR 14921: No error given if you use MOVFF with only one argument.

SSR 15425: PIC18Cxxx MOVFF instruction with the program counter as
destination needs to generate a warning.


----------------------------------------------------------------------
Known Problems
----------------------------------------------------------------------

The following is a list of known problems by SSR number.  For a list of
limitations, please see MPASM Assembler Help, Troubleshooting,
Assembler Limitations.

SSR 3347:	For the 16CXX parts, warnings about setting page bits 
		are not always emitted when crossing page boundaries.

SSR 1008:	There are no warnings when overflow or underflow occurs
		during expression evaluation. 
		
SSR 16176:	When generating an object file (with the "/o" option),
		the __CONFIG directive must come before all section
		directives in the source file. 
				

----------------------------------------------------------------------
Serial EEPROM Support
----------------------------------------------------------------------

Two "processor" selections are provided to generate byte data - EEPROM8
and EEPROM16.  Both generate data in terms of bytes, but EEPROM8
considers a "word" to be 8 bits wide, while EEPROM16 considers a "word"
to be 16 bits wide. The "program counter" is always incremented in terms
of bytes.

The default size for memory products is 128 bytes. This can be overridden
by using the LIST M=<max address> directive.  Note that <max address>
is always evaluated as a decimal number. The header file MEMORY.INC
is provided to define the maximum address for available memory devices.
The format of the defined symbols is _<device>; for example, to set the
maximum memory size for a 24LCS21, use the directive LIST M=_24LCS21.

The following data generation directives are supported for memory products:

	DW	   FILL	ORG

The behavior of other data generation directives is not guaranteed.
All other directives are unchanged.

An example of generating a file for programming a memory device is
as follows:

;*************************************************
; Generate data for a 8-bit wide memory device.

        LIST    P=EEPROM8, R=DECIMAL
        INCLUDE "MEMORY.INC"
        LIST    M=_24LCS21

#DEFINE MAX_VALUE       255

        ORG     0

;-------------------------------------------------
; Create a packed-byte, null terminated string.

        DW      "Hello World", 0

;-------------------------------------------------
; Create data representing a line.  The X position
; is implied from the position of the data in the
; device.  The Y values are stored in the device.

; First, define an equation for the line.

#DEFINE Line( X )       Slope * X + Y_Intercept

; Now define the values needed for the equation.

Slope                   EQU     10
Y_Intercept             EQU     5

; Declare and initialize the X and Y values.

        VARIABLE        X = 0, Y = Line( X )

; Generate values until the maximum Y value is
; reached or the device is filled up.

        WHILE (Y <= MAX_VALUE) && ($ <= _24LCS21)
           DW   Y
X = X + 1
Y = Line( X )
        ENDW

;-------------------------------------------------
; Perform some checking based on the line data
; generated above.

; If the device filled up before the end of the
; line was reached, generate an error. Otherwise,
; if the device is almost out of room, generate a
; message.

        IF (Y < MAX_VALUE)
           ERROR        "Device is full."
        ELSE
           IF (($+10) > _24LCS21)
              MESSG     "Device is nearly full."
           ENDIF
        ENDIF

;-------------------------------------------------
; Fill the rest of the device with zeroes.

        FILL    0, _24LCS21 - $ + 1

        END

CLRW COMMAND:

The CLRW encoding was changed on all 14-bit core devices from 0x0100
to 0x0103 (v1.40 and later). This will not affect the expected
operation of the instruction, but it will change the value for the
instruction in the hex file and therefore the checksum.


WARNING MESSAGE:

The text for Message #302 was modified to explain more clearly that
bank indication bits are stripped when assembling instructions that
access file registers. The appropriate bank must be selected by the
appropriate bank selection bits. For example, 14-bit core devices
contain the lower seven bits of the file register address in the
opcode, with two bank selection bits in the STATUS register. The
message was changed from:
        Argument out of range. Least significant bits used.
to:
        Register in operand not in bank 0. Ensure that bank
        bits are correct.


END DIRECTIVE:

Take care to not use the END directive in a macro. If the END directive
is encountered in a macro, it can cause the assembler to loop
indefinitely. Macros should be terminated with the ENDM directive.

----------------------------------------------------------------------
Using MPASM Assembler
----------------------------------------------------------------------


Create your source code with any text editor. The file should contain
ASCII text only. Assemble your code with the command line:

	mpasm <file>[.asm]

A version of MPASM assembler is also available for Windows. To invoke
this assembler, execute:

	mpasmwin

from within Windows. You will then be given a Windows interface window.
Help on using the interface is provided on-line. MPASMWIN.EXE can also
be invoked with parameters or through drag-and-drop. In these cases,
the interface screen is not displayed and assembly begins immediately.

Correct any syntax problems, referring to the MPASM Assembler User's
Guide with MPLINK and MPLIB (DS33014) for syntax help. MPASM assembler
assembles with INHX32 as the default hex output, and generates a 
listing file, error file, and .COD file.

MPASM assembler currently runs in DOS real mode. If you have "out of
memory" problems, you may request from Microchip the DOS protected mode 
(DPMI) version.  To use this assembler, you must have the files RTM.EXE and
DPMI16BI.OVL (also available upon request) available in your path
or in the current directory. You must also have EMM386 or another
memory manager running or run the assembler from a Windows DOS box.
To invoke this assembler, use the command:

	mpasm_dp <file>[.asm]


----------------------------------------------------------------------
How to Contact Microchip
----------------------------------------------------------------------

Online Support
---------------
Microchip provides online support on the Microchip World Wide Web (WWW)
site. The web site is used by Microchip as a means to make files and
information easily available to customers. To view the site, you must
have access to the Internet and a web browser such as Netscape or
Microsoft Explorer. Files are also available for FTP download from
our FTP site.

Connecting to the Microchip Internet Web Site
---------------------------------------------
The Microchip web site is available by using your favorite Internet
browser to attach to:

        www.microchip.com

The file transfer site is available by using an FTP service to connect to:

        ftp://ftp.microchip.com

The web site and file transfer site provide a variety of services.
Users may download files for the latest development tools, data sheets,
application notes, User's guides, articles, and sample programs. A
variety information specific to the business ofMicrochip is also
available, including listings of Microchip sales offices, distributors
and factory representatives. Other data available for consideration is:

        * Latest Microchip Press Releases

        * Technical Support Section with Frequently Asked Questions

        * Design Tips

        * Device Errata

        * Job Postings

        * Microchip Consultant Program Member Listing

        * Links to other useful web sites related to Microchip products

        * Conferences for products, Development Systems, technical
          information and more

        * Listing of seminars and events

Systems Information and Upgrade Hotline
----------------------------------------
The Systems Information and Upgrade Line provides system users with a
listing of the latest versions of all of Microchip's development systems,
software products, and information on how customers can receive any
currently available upgrade kits. The Hot Line Numbers are:

        1-800-755-2345 for U.S. and most of Canada, and

        1-480-792-7302 for the rest of the world.

----------------------------------------------------------------------
Customer Change Notification - Development Systems
----------------------------------------------------------------------

Microchip started the customer notification service to help our 
customers keep current on Microchip products with the least amount 
of effort. Once you subscribe, you will receive email notification
whenever we change, update, revise or have errata related to your
specified product family or development tool of interest.

Go to the Microchip WWW web page (http://www.microchip.com)
and click on Customer Change Notification under Items of Interest.
Follow the instructions to register.

The Development Systems product group catagories are:

* Compilers
* Emulators
* In-Circuit Debuggers
* MPLAB
* Programmers

Here is a description of these catagories:

COMPILERS - The latest information on Microchip C compilers, linkers
and assemblers.  These include MPLAB C17 C compiler, MPLAB C18 
C compiler, MPLINK object linker (as well as the MPLIB object 
librarian) and MPASM assembler.

EMULATORS - The latest information on Microchip in-circuit emulators.
These include the MPLAB ICE 2000 and PICMASTER emulator.

IN-CIRCUIT DEBUGGERS - The latest information on Microchip in-circuit
debuggers. This includes the MPLAB ICD.

MPLAB - The latest information on Microchip MPLAB IDE, the Windows
Integrated Development Environment for development systems tools.
This list is focused on the MPLAB IDE, MPLAB SIM simulator,
MPLAB IDE Project Manager and general editing and debugging features.

PROGRAMMERS - The latest information on Microchip PICmicro device
programmers. These include the PRO MATE II device programmer and
PICSTART Plus development programmer.

