2009_04_01 (Version 5.00)

  Added a general purpose macro processor to the ASxxxx
assemblers with the following mnemonics:

    .macro	define a general macro
    .irp	define an indefinite repeat macro by arguments
    .irpc	define an indefinite repeat macro by characters
    .rept	define a repeating macro
    .mexit	exit to end of macro
    .endm	end of macro
    .nchr	assign number of characters to a symbol
    .narg	assign number of expansion arguments to a symbol
    .ntyp	assign 0/1 if argument is absolute/relocatable
    .nval	assign value of argument to an absolute symbol
    .mdelete	delete a macro definition


  The following additional conditionals provide testing of string
arguments most useful within macros:

    .ifb	if argument blank
    .ifnb	if argument not blank

    .ifidn	if arguments are identical
    .ifdif	if arguments are different


  Added true (t), false (f), and true or false (tf) conditionals
to the .if / .else / .endif construct.  The conditionals .ift,
.iff, and .iftf allow replacemment of the .else directive making
the .if / .endif construct more readable.

    .ift	if condition is true
    .iff	if condition is false
    .iftf	if condition is true or false


  An alternate .if construction has been added to the ASxxxx
assemblers:

    .if    eq,...	if argument == 0
    .if    ne,...	if argument != 0
    .if    lt,...	if argument <  0
    .if    ge,...	if argument >= 0
    .if    le,...	if argument <= 0
    .if    gt,...	if argument >  0

    .if    def,...	if argument is defined
    .if    ndef,...	if argument is not defined

    .if    b,...	if argument is blank
    .if    nb,...	if argument is not blank
    .if    idn,...,...	if arguments are the same
    .if    dif,...,...	if arguments are not the same

    .if    t		if condition is true
    .if    f		if condition is false
    .if    tf		if condition is true or false


  The immediate conditional statements have been added to the ASxxxx
assemblers.  These conditionals can replace the .if / ... / .endif
construct for a single assembler source line:

e.g.    .iifeq	arg	label:	.word	0x1234

    .iif	if argument != 0
    .iifeq	if argument == 0
    .iifne	if argument != 0
    .iiflt	if argument <  0
    .iifge	if argument >= 0
    .iifle	if argument <= 0
    .iifgt	if argument >  0

    .iifdef	if argument is defined
    .iifndef	if argument is not defined

    .iifb	if argument is blank
    .iifnb	if argument is not blank
    .iifidn	if arguments are the same
    .iifdif	if arguments are not the same

    .iift	if condition is true
    .iiff	if condition is false
    .iiftf	if condition is true or false


  The alternate immediate conditional statements have also been added
to the ASxxxx assemblers:

e.g.    .iif	eq,arg	label:	.word	0x1234

    .iif   eq,...	if argument == 0
    .iif   ne,...	if argument != 0
    .iif   lt,...	if argument <  0
    .iif   ge,...	if argument >= 0
    .iif   le,...	if argument <= 0
    .iif   gt,...	if argument >  0

    .iif   def,...	if argument is defined
    .iif   ndef,...	if argument is not defined

    .iif   b,...	if argument is blank
    .iif   nb,...	if argument is not blank
    .iif   idn,...,...	if arguments are the same
    .iif   dif,...,...	if arguments are not the same

    .iif    t		if condition is true
    .iif    f		if condition is false
    .iif    tf		if condition is true or false


  The listing options for the ASxxxx assemblers has been updated
to enable/disable any of the following parameters from being
output to a generated listing file:

    err		error codes
    loc		code location
    bin		assembler binary code
    eqt		symbolic equates / if evaluations
    cyc		machine cycles
    lin		assembler source line number
    src		assembler source code
    pag		paging control
    lst		listing of .list / .nlist
    md		macro definition
    me		macro expansion
    meb		macro expansion binary code

    !		sets the listing mode to
		!(.list) or !(.nlist) before
		applying the sublist options

e.g.	.nlist	(lst,pag)	; disable .list/.nlist listing
				; and .page listing

The NOT parameter, !, is used to reverse the sense of the .list
or .nlist directive.  For example:

    .nlist (!)  is equivalent to .list and
    .list  (!)  is equivalent to .nlist

to enable listing and simultaneously disable the cycle count
use the directive:

    .nlist  (!,cyc)

or if you wish to suppress the listing of the .list / .nlist
directives:

    .nlist		; disables all listing
    .nlist  (!,lst)	; enables  all listing except
    			: .list (...) and .nlist

Normally the .list and .nlist directives are not evaluated
when encountered within a FALSE conditional block.  This
default behavior can be modified by specifying a non zero
argument in the .list or .nlist directive:

    .nlist   1,(!,lst)	; enables listing even within
			; a FALSE conditional block


The .bndry assembler directive has been added to ASxxxx.
The .bndry directive changes the current location address
to be evenly divisible by a specified integer value.

e.g.	.org	0
	.bndry	4
	; . == 0

	.org	1
	.bndry	4
	; . == 4


2009_02

   Added the Cypress M8C ASM8C assembler to ASxxxx.


2008_09

   Added the 8048 (8021, 8022, and 8041) AS8048 assembler to ASxxxx.


2008_02

   Added the SC/MP ASSCMP assembler to ASxxxx.


2008_02_03 (Version 4.11 Update 4)

An update to the AS2650 assembler to
fix the following errors:

   1)  The indexed addressing mode generates invalid
       code by using the first argument register as
       the index register: (addr = 0x1234)

           loda    r0,[addr,r1]          0C F2 34
               this should give          0D F2 34

   2)  The index addressing mode did not generate
       an addressing error when the first argument
       register was not r0:

           stra    r1,[addr,r2]  should give an 'a'
               error, the source must be r0

           loda    r2,[addr,r3]  should give an 'a'
               error, the destination must be r0

   3)  The S2650 auto increment and decrement indexing 
       modes always perform the register update before
       the register is used. i.e. +Rn or -Rn.  The
       assembler now accepts +Rn or Rn+ as meaning
       pre-increment and -Rn or Rn- as meaning
       pre-decrement.

The AS2650 assembler tstscn files have been updated for
testing the assemblers.

	    
2007_10_21 (Version 4.11 Fix)

    In the AS6816 assembler the instruction ANDP gives
wrong object code. Changed from 37 2A  to  37 3A.


2007_04_01 (Version 4.11 Update 3)

An update to the ASPIC assembler and
associated fix to ASLINK:

   1)  Change the pic addressing to lo/hi from hi/lo
       byte ordering.

   2)  The update fixes an error in the pic17 series
       LCALL instruction.

   3)  A rewrite of the pic18 series assembler to change
       the PC addressing from 1 per 16-bit word to 1 per
       8-bit byte and add the extended instruction set.

   4)  Modify the Linker Merge Mode processing to take into
       account the discarded low order bits for PC Relative
       Addressing.

   5)  New  tstscn files for testing the assemblers.


2006_11_01 (Version 4.11 Optional Update 2)

   1)  OS9  definition files and an  OS9 assembler module
       which creates the OS9 header, code and data areas,
       and the module CRC block:

            os9_mod.def       OS9 Module Definitions
            os9_sys.def       OS9 Sytem  Definitions
            os9_mod.asm       OS9 Module Begin / End Code

   2)  a program, s19os9, to post-process  assembled  OS9
       modules in  S19  format into  binary  OS9  modules
       with the appropriate  header  checksum  and module
       CRC values calculated.

   3)  new  make  and  project files which may be used to
       compile the s19os9 program.


2006_11_01 (Version 4.11 Optional Update_01)

   The  .list and .nlist  directives are now  modified by
.if / .else / .endif  processing  so that they are active
only in a TRUE clause.

   The  .page  and  .include  directives are now modified
by the  .list  and  .nlist  directives so that pagination
occurs only when listing is active.

   The new  default functionality for the  .list,  .nlist
and  .page  directives  may  be  modified by including an
optional argument in the  directive as shown here for the
.list directive:

      .list    arg
		
a non-zero argument invokes the directive irrespective of
the .if / .else / .endif status.


2006_07_26 (Version 4.11 Patch_01)

   The assembly of a direct page instruction with a
numeric constant causes a program crash when a .rel
file is created. e.g.:

        andb    *0x02

   The use of a symbolic constant or symbol plus
a constant compiles normally.

        val = 0x02

        andb    *val
        andb    *extern+0x01

The assemblers effected are:

        as6809
        as6812
        ash8
        aspic

