Welcome

ASxxxx Change Log

   Summary  of  changes/additions  to the ASxxxx Assemblers from
Version 4.11 to Version 5.06.  

Version 5.00 Update 6
2013_05_12

Update_06 for the ASxxxx Assembler and Linker Version 5.00
(use 'pkunzip -d u06500.zip' for extraction with MS-DOS)
(use 'unzip -L -a u06500.zip' for extraction with Linux)

       See the note about merging
       this update with the
       asxv5pxx distribution.

   This  update  for  Version  5.00  of the  ASxxxx Cross
Assemblers rolls up updates 1, 2, 3, 4, and 5 with the addition of
these fixes:

   (1)  Fix ASSCMP assembler (pre-increment on fetch).

   (2)  Fix ASLINK error reporting for PC relative modes.


   Update 5 Items

   (1)  A new cross assembler for the Fairchild
        F8 microprocessor (or Mostek 3870).

   (2)  Minor syntactical changes for ANSI C compatability,
        fix type conversion warnings, and update the
        various build, make, and test files.


   Update 4 Items

   (1)  The AS8048 base opcode value for the JMPP
        instruction should be B3 and NOT 83.

   (2)  The AS8051 assembler calculates incorrect
        offsets when using the program counter, ".",
        as a destination in the instructions having
        a PC-Relative addressing mode.  These
        instructions include: jbc, jb, jbn, jc,
        jnc, jz, jnz, cjne, and djnz.


   Update 3 Items

   (1)  A new cross assembler for the Fairchild
        F8 microprocessor (or Mostek 3870).

   (2)  Minor syntactical changes for ANSI C compatability,
        fix type conversion warnings, and update the
        various build, make, and test files.

   (1)  New cross assemblers for STMicroelectronics
        ST6, ST7, and STM8 microprocessors.

   (2)  An ASlink list file update error fix (-u option)
        causing some errors not to be inserted into the
        created .rst file.

   (3)  An additional ASxxxx assembler option (-v) which
        enables checking for out of range signed / unsigned
        values in symbol equates and arithmetic operations.
        This option has some ambiguities as internally the
        assemblers use unsigned arithmetic for calculations.
        (e.g. for a 2-byte machine -32768 and 32768 are both
        represented as 0x8000)


   Update 2 Items

   (1)  When using the assembler directive .end to specify
        the code entry address the assembler fails to set
        the variable .__.END. as a global.  Therefor the
        value of .__.END. is not passed to the linker and
        the start address frame is always zero.

   (2)  The linker will fail to create a start address frame
        when there is no code generated within the area/bank
        referenced by the .__.END. variable.


   Update 1 Items

   (1)  The newest versions of gcc (and perhaps other
        compilers) give warnings about missing arguments
        in the fprintf() function.  This update replaces
        fprintf(arg1, arg2) with fprintf(arg1, "%s", arg2)
        in each affected line of code.

   (2)  The newest versions of gcc (and perhaps other
        compilers) have defined 'getline' as a standard
        function in 'stdio.h'.  This conflicts with the
        function 'getline()' in the ASxxxx package.
        All references to 'getline()' have been changed
        to 'nxtline()'.


   Before merging the asxv5pxx directory and subdirectories with
the V5.00 distribution the following files/directories must be
deleted:

        [asxv5pxx\asf2mc8\f8mch.c
        [asxv5pxx\asf2mc8\f8adr.c
        [asxv5pxx\asf2mc8\f8pst.c
        [asxv5pxx\asf2mc8\f8.h

        [asxv5pxx\asxmak\vc6\asf2mc8]
        [asxv5pxx\asxmak\vs05\asf2mc8]


   Merge  the  update asxv5pxx directory and subdirectories with
the V5.00 distribution.  The following files  will  be  added  /
overwritten:  

        [asxv5pxx]
            u01500.txt
            u02500.txt
            u03500.txt
            u04500.txt
            u05500.txt
            _clean.bat
            _path.bat
            _prep.bat
        
        [asxv5pxx\as8048]
            i48pst.c
            t8048o.asm
            t8048s.asm
        
        [asxv5pxx\as8051]
            i51mch.c
            t8051.bat
            t8051r.asm
            t8051rl.asm
        
        [asxv5pxx\ascheck\end]]
            build.bat
            t01.asm
            t02.asm
            t03.asm
            t04.asm
            t05.asm
            t06.asm
            t07.asm
            t08.asm
        
        [asxv5pxx\asf2mc8]
            f2mc8.h
            f2mc8adr.c
            f2mc8mch.c
            f2mc8pst.c
        
        [asxv5pxx\asf8]
            f8.h
            f8adr.c
            f8mch.c
            f8pst.c
            tf8err.asm
            tf8err.bat
            tf8ext.asm
            tf8seq.asm
            tf8seq.bat
        
        [asxv5pxx\aspic]
            picmch.c
        
        [asxv5pxx\aspic\ptoa]
            pictoasx.c
            ptoa.h
        
        [asxv5pxx\asscmp]
            scmpadr.c
            scmpmch.c
            tscmp.asm
            tscmpe.asm
            tscmpe.bat

        [asxv5pxx\asst6]
            st6.h
            st6adr.c
            st6err.asm
            st6err.bat
            st6gbl.asm
            st6mch.c
            st6pst.c
            tst6.asm
            tst6.bat
        
        [asxv5pxx\asst7]
            st7.h
            st7adr.c
            st7err.asm
            st7err.bat
            st7gbl.asm
            st7mch.c
            st7pst.c
            tst7.asm
            tst7.bat
        
        [asxv5pxx\asst8]
            st8.h
            st8adr.c
            st8err.asm
            st8err.bat
            st8gbl.asm
            st8mch.c
            st8pst.c
            tst8.asm
            tst8.bat
        
        [asxv5pxx\asxhtml]
            aschng.htm
            ascont.htm
            asmlnk.htm
            asmlnk.pdf
            asmlnk.txt
            asf8.htm
            asst6.htm
            asst7.htm
            asst8.htm
            asxbld.htm
            asxdoc.htm
            asxxxx.htm
        
        [asxv5pxx\asxmak\cygwin\build]
            makefile
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\cygwin\build\backup]
            makefile
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\cygwin\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\cygwin\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\djgpp\build]
            build.bat
            makefile
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\djgpp\build\backup]
            build.bat
            makefile
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\djgpp\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\djgpp\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\linux\build]
            makefile
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\linux\build\backup]
            makefile
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\linux\misc]
            tstscn.bat
        
        [asxv5pxx\asxmak\linux\misc\backup]
            tstscn.bat
        
        [asxv5pxx\asxmak\symantec\build]
            asf2mc8.def
            asf2mc8.DPD
            asf2mc8.lnk
            asf2mc8.mak
            asf2mc8.opn
            asf2mc8.prj
            asf8.DPD
            asf8.LNK
            asf8.MAK
            asf8.OPN
            asf8.prj
            asst6.DEF
            asst6.DPD
            asst6.LNK
            asst6.MAK
            asst6.OPN
            asst6.prj
            asst7.DEF
            asst7.DPD
            asst7.LNK
            asst7.MAK
            asst7.OPN
            asst7.prj
            asst8.DEF
            asst8.DPD
            asst8.LNK
            asst8.MAK
            asst8.OPN
            asst8.prj
            make.bat
            _clean.bat
            _makeall.bat
            _prep.bat
            _setpath.bat
        
        [asxv5pxx\asxmak\symantec\build\backup]
            make.bat
            _clean.bat
            _makeall.bat
            _prep.bat
            _setpath.bat
        
        [asxv5pxx\asxmak\symantec\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\symantec\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\turboc30\build]
            asf2mc8.dsk
            asf2mc8.prj
            ASF8.DSK
            ASF8.PRJ
            ASST6.DSK
            ASST6.PRJ
            ASST7.DSK
            ASST7.PRJ
            ASST8.DSK
            ASST8.PRJ
            makefile
            _clean.bat
            _makeall.bat
        
        [asxv5pxx\asxmak\turboc30\build\backup]
            makefile
            _clean.bat
            _makeall.bat
            _prep.bat
            _setpath.bat
        
        [asxv5pxx\asxmak\turboc30\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\turboc30\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\vc6\build]
            make.bat
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\vc6\build\asf2mc8]
            asf2mc8.dsp
            asf2mc8.dsw
        
        [asxv5pxx\asxmak\vc6\build\asf8]
            asf8.dsp
            asf8.dsw
        
        [asxv5pxx\asxmak\vc6\build\asst6]
            asst6.dsp
            asst6.dsw
        
        [asxv5pxx\asxmak\vc6\build\asst7]
            asst7.dsp
            asst7.dsw
        
        [asxv5pxx\asxmak\vc6\build\asst8]
            asst8.dsp
            asst8.dsw
        
        [asxv5pxx\asxmak\vc6\build\backup]
            make.bat
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\vc6\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\vc6\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\vs05\build]
            make.bat
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\vs05\build\asf2mc8]
            asf2mc8.sln
            asf2mc8.vcproj
        
        [asxv5pxx\asxmak\vs05\build\asf8]
            asf8.sln
            asf8.vcproj
        
        [asxv5pxx\asxmak\vs05\build\asst6]
            asst6.sln
            asst6.vcproj
        
        [asxv5pxx\asxmak\vs05\build\asst7]
            asst7.sln
            asst7.vcproj
        
        [asxv5pxx\asxmak\vs05\build\asst8]
            asst8.sln
            asst8.vcproj
        
        [asxv5pxx\asxmak\vs05\build\backup]
            make.bat
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\vs05\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\vs05\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\vs10\build]
            make.bat
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\vs10\build\as1802]
            as1802.sln
            as1802.suo
            as1802.vcxproj
            as1802.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as2650]
            as2650.sln
            as2650.suo
            as2650.vcxproj
            as2650.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as430]
            as430.sln
            as430.suo
            as430.vcxproj
            as430.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as61860]
            as61860.sln
            as61860.suo
            as61860.vcxproj
            as61860.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6500]
            as6500.sln
            as6500.suo
            as6500.vcxproj
            as6500.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6800]
            as6800.sln
            as6800.suo
            as6800.vcxproj
            as6800.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6801]
            as6801.sln
            as6801.suo
            as6801.vcxproj
            as6801.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6804]
            as6804.sln
            as6804.suo
            as6804.vcxproj
            as6804.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6805]
            as6805.sln
            as6805.suo
            as6805.vcxproj
            as6805.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6808]
            as6808.sln
            as6808.suo
            as6808.vcxproj
            as6808.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6809]
            as6809.sln
            as6809.suo
            as6809.vcxproj
            as6809.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6811]
            as6811.sln
            as6811.suo
            as6811.vcxproj
            as6811.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6812]
            as6812.sln
            as6812.suo
            as6812.vcxproj
            as6812.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as6816]
            as6816.sln
            as6816.suo
            as6816.vcxproj
            as6816.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as740]
            as740.sln
            as740.suo
            as740.vcxproj
            as740.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as8048]
            as8048.sln
            as8048.suo
            as8048.vcxproj
            as8048.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as8051]
            as8051.sln
            as8051.suo
            as8051.vcxproj
            as8051.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as8085]
            as8085.sln
            as8085.suo
            as8085.vcxproj
            as8085.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\as8xcxxx]
            as8xcxxx.sln
            as8xcxxx.suo
            as8xcxxx.vcxproj
            as8xcxxx.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asavr]
            asavr.sln
            asavr.suo
            asavr.vcxproj
            asavr.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\ascheck]
            ascheck.sln
            ascheck.suo
            ascheck.vcxproj
            ascheck.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asez80]
            asez80.sln
            asez80.suo
            asez80.vcxproj
            asez80.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asf2mc8]
            asf2mc8.sln
            asf2mc8.suo
            asf2mc8.vcxproj
            asf2mc8.vcxproj.filters
        
        pasxv5pxx\asxmak\vs10\build\asf8]
            asf8.sln
            asf8.suo
            asf8.vcxproj
            asf8.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asgb]
            asgb.sln
            asgb.suo
            asgb.vcxproj
            asgb.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\ash8]
            ash8.sln
            ash8.suo
            ash8.vcxproj
            ash8.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\aslink]
            aslink.sln
            aslink.suo
            aslink.vcxproj
            aslink.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asm8c]
            asm8c.sln
            asm8c.suo
            asm8c.vcxproj
            asm8c.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\aspic]
            aspic.sln
            aspic.suo
            aspic.vcxproj
            aspic.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asrab]
            asrab.sln
            asrab.suo
            asrab.vcxproj
            asrab.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asscmp]
            asscmp.sln
            asscmp.suo
            asscmp.vcxproj
            asscmp.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asst6]
            asst6.sln
            asst6.suo
            asst6.vcxproj
            asst6.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asst7]
            asst7.sln
            asst7.suo
            asst7.vcxproj
            asst7.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asst8]
            asst8.sln
            asst8.suo
            asst8.vcxproj
            asst8.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asxcnv]
            asxcnv.sln
            asxcnv.suo
            asxcnv.vcxproj
            asxcnv.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asxscn]
            asxscn.sln
            asxscn.suo
            asxscn.vcxproj
            asxscn.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asz8]
            asz8.sln
            asz8.suo
            asz8.vcxproj
            asz8.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\asz80]
            asz80.sln
            asz80.suo
            asz80.vcxproj
            asz80.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\build\backup]
            make.bat
            _clean.bat
            _prep.bat
        
        [asxv5pxx\asxmak\vs10\build\s19os9]
            s19os9.sln
            s19os9.vcxproj
            s19os9.vcxproj.filters
        
        [asxv5pxx\asxmak\vs10\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\vs10\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\watcom\build]
            asf2mc8.lk1
            asf2mc8.mk
            asf2mc8.mk1
            asf2mc8.tgt
            asf2mc8.wpj
            asf8.lk1
            asf8.mk
            asf8.mk1
            asf8.tgt
            asf8.wpj
            asst6.lk1
            asst6.mk
            asst6.mk1
            asst6.tgt
            asst6.wpj
            asst7.lk1
            asst7.mk
            asst7.mk1
            asst7.tgt
            asst7.wpj
            asst8.lk1
            asst8.mk
            asst8.mk1
            asst8.tgt
            asst8.wpj
            make.bat
            _clean.bat
            _makeall.bat
            _prep.bat
            _setpath.bat
        
        [asxv5pxx\asxmak\watcom\build\backup]
            make.bat
            _clean.bat
            _makeall.bat
            _prep.bat
            _setpath.bat
        
        [asxv5pxx\asxmak\watcom\misc]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxmak\watcom\misc\backup]
            tstscn.bat
            tstwtee.bat
        
        [asxv5pxx\asxxmisc]
            asxxscan.c
        
        [asxv5pxx\asxxsrc]
            asdata.c
            asexpr.c
            aslex.c
            aslist.c
            asmain.c
            asmcro.c
            asout.c
            assubr.c
            asxxxx.h
        
        [asxv5pxx\linksrc]
            aslink.h
            lkbank.c
            lkdata.c
            lklex.c
            lklist.c
            lkmain.c
            lkrloc3.c
            lkrloc4.c
            lksym.c
        
        [asxv5pxx\s19os9]
            s19os9.c


   You must recompile the ASxxxx Assemblers
to incorporate the update.



2011_07_24 Version 5.00 Update 4

   This  update  for  Version  5.00  of the  ASxxxx Cross
Assemblers includes fixes for the following errors:

   (1)  The AS8048 base opcode value for the
        JMPP instruction should be B3 and NOT 83.

   (2)  The AS8051 assembler calculates incorrect
        offsets when using the program counter, ".",
        as a destination in the instructions having
        a PC-Relative addressing mode.  These
        instructions include: jbc, jb, jbn, jc,
        jnc, jz, jnz, cjne, and djnz.



2010_10_31 Version 5.00 Update 3

   This  update  for  Version  5.00  of the  ASxxxx Cross
Assemblers rolls up updates 1 and 2 with the addition of
three new assemblers and fixes:

   (1)  New cross assemblers for STMicroelectronics
        ST6, ST7, and STM8 microprocessors.

   (2)  An ASlink list file update error fix (-u option)
        causing some errors not to be inserted into the
        created .rst file.

   (3)  An additional ASxxxx assembler option (-v) which
        enables checking for out of range signed / unsigned
        values in symbol equates and arithmetic operations.
        This option has some ambiguities as internally the
        assemblers use unsigned arithmetic for calculations.
        (e.g. for a 2-byte machine -32768 and 32768 are both
        represented as 0x8000)


   Update 2 Items

   (1)  When using the assembler directive .end to specify
        the code entry address the assembler fails to set
        the variable .__.END. as a global.  Therefor the
        value of .__.END. is not passed to the linker and
        the start address frame is always zero.

   (2)  The linker will fail to create a start address frame
        when there is no code generated within the area/bank
        referenced by the .__.END. variable.


   Update 1 Items

   (1)  The newest versions of gcc (and perhaps other
        compilers) give warnings about missing arguments
        in the fprintf() function.  This update replaces
        fprintf(arg1, arg2) with fprintf(arg1, "%s", arg2)
        in each affected line of code.

   (2)  The newest versions of gcc (and perhaps other
        compilers) have defined 'getline' as a standard
        function in 'stdio.h'.  This conflicts with the
        function 'getline()' in the ASxxxx package.
        All references to 'getline()' have been changed
        to 'nxtline()'.



2010_04_01 Version 5.00 Update 2

   This  update  for  Version  5.00  of the  ASxxxx Cross
Assemblers includes fixes for the following errors:

   (1)  When using the assembler directive .end to specify
        the code entry address the assembler fails to set
        the variable .__.END. as a global.  Therefor the
        value of .__.END. is not passed to the linker and
        the start address frame is always zero.

   (2)  The linker will fail to create a start address frame
        when there is no code generated within the area/bank
        referenced by the .__.END. variable.



2010_03_03 Version 5.00 Update 1

   This  update  for  Version  5.00  of the  ASxxxx Cross
Assemblers includes fixes for the following errors:

   (1)  The newest versions of gcc (and perhaps other
        compilers) give warnings about missing arguments
        in the fprintf() function.  This update replaces
        fprintf(arg1, arg2) with fprintf(arg1, "%s", arg2)
        in each affected line of code.


   (2)  The newest versions of gcc (and perhaps other
        compilers) have defined 'getline' as a standard
        function in 'stdio.h'.  This conflicts with the
        function 'getline()' in the ASxxxx package.
        All references to 'getline()' have been changed
        to 'nxtline()'.



2009_04_01 (Version 5.00)


   Added  a general purpose macro processor to the ASxxxx assem-
blers 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) condition-
als to the  .if / .else / .endif  construct.   The  conditionals
.ift,  .iff,  and .iftf allow replacement 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 up-
dated to enable/disable any of the following parameters from be-
ing 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 pagination


   The  NOT parameter, !, is used to set the listing mode to the
opposite 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 PSoc (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 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
   a constant compiles normally.

        val = 0x02

        andb    *val
        andb    *extern+0x01


   The assemblers effected are:

        as6809
        as6812
        ash8
        aspic



   Summary  of  changes/additions  to the ASxxxx Assemblers from
Version 4.10 to Version 4.11.  

     1.  Incorporated  the patches contained in p01410.zip which
         corrected a coding error that affected BANKS containing
         multiple ABS areas or mixed AREA types.  

     2.  Incorporated  the patches contained in p02410.zip which
         corrected improper use of  R_USGN  in  most  addressing
         modes  in AS6500.  This caused unexpected 'a' errors in
         V4.xx because of the ASxxxx core change to  32-bit  in-
         tegers and arithmetic.  

     3.  Incorporated  the patches contained in p03410.zip which
         corrected errors in the  .local  and  .globl  assembler
         directive  processing  routine that introduced unwanted
         side effects for variable and symbol definition  files.
         These  effects included improper definitions and incor-
         rect error warnings.  

     4.  The  following  new subdirectories and their files have
         been added to the asxtst directory:  

          *  areabank     Area and Bank Processing Test 
             This  directory  contains  several  test  programs:
             ts.asm (single file - multiple areas), tm1.asm  and
             tm2.asm  (multiple  file  -  multiple  areas),  and
             tbm.asm, tbm1.asm, and tbm2.asm ( multiple  file  -
             multiple  areas  within  a  bank) and several other
             files which verify the  correct  operation  of  the
             linker  when used with a single linked file, multi-
             ple linked files having no  banking,  and  multiple
             linked  files  with banking.  These reference files
             show in detail how the .area and  .bank  directives
             work together.  

          *  equtst       Equate Processing Test 
             This  directory  contains a test file for verifying
             the operation of the .globl, .local, .equ, .gblequ,
             and  .lclequ  directives  and  the  =,  ==,  and =:
             equalities.  

          *  inctst       Nested Include File Test 

          *  itst         Include File Error Reporting Test 


     5.  Incorporated  the updates contained in u01410.zip which
         added 10 undocumented 8085 instructions to  the  AS8085
         assembler.  



   Summary  of  changes/additions  to the ASxxxx Assemblers from
Version 4.00 to Version 4.10.  

     1.  Added new assemblers for the Zilog EZ80, Zilog Z8, Sig-
         netics 2650, and Fujitsu F2MC8(L,FX) processors.  

     2.  Added the processor cycle count option (-c) to all pro-
         cessors.  

     3.  Several   of  the  assemblers  (ASZ80,  ASRAB,  AS6805,
         AS6808, AS6812, ASF2MC8, ...) now  support  subsets  or
         supersets  of  their basic opcodes by the use of assem-
         bler specific directives.  

     4.  Added .ifeq, .ifne, .iflt, .ifgt, .ifle, and .ifge con-
         ditional assembly directives.  

     5.  Added  support  for the Tandy Color Computer Disc Basic
         binary file format to ASLINK.  

     6.  Updated the assembler and linker source code to support
         16-Bit and 32-Bit compilers.  Tested with Borland Turbo
         C++  3.0  and  Symantec 7.2 C/C++ 16-Bit compilers, and
         with Visual C++ 6.0, Cygwin, DJGPP  V02.03,  and  Linux
         32-Bit compilers.  

     7.  Problem:  
         When  an area size is equal to the 'address space size'
         the size parameter is reported as 0.  (A normal  condi-
         tion  caused  by  address rollover to 0.) Aslink inter-
         preted this as a 0 size.  

         Fix:  
         A  new area 'Output Code Flag' bit was defined to indi-
         cate when data is  defined  in  an  area.   ASxxxx  and
         Aslink  have  been updated to set and process this area
         flag bit.  

     8.  Problem:  
         The  use  of  the .end assembler directive in an Asxxxx
         assembler would cause Aslink  to  output  the  optional
         start address in all output files.  

         Fix:  
         Updated  Aslink  to  output  the optional start address
         only in the output file associated with  the  area/bank
         containing the .end directive.  

     9.  Problem:  
         Aslink  creates  output  files for banks with no output
         data.  

         Fix:  
         Aslink  now  deletes  any created output file for banks
         with no data.  

    10.  Incorporated  the  patches  contained in p01400.zip for
         files t1802.asm and 1802pst.c to correct for  an  error
         in  the  opcodes  generated  for  the  BM,  BL, and BNF
         mnemonics.  

    11.  Incorporated  the  patches  contained in p02400.zip for
         file ds8adr.c to correct for an  error  in  the  direct
         page addressing mode of AS8xCxxx.  

    12.  Incorporated  the  patches  contained in p03400.zip for
         file rabmch.c to correct for an error in the processing
         of the "ret cc" instruction.  

    13.  Made many corrections to internal code comments.  

Go to the Documentation Index

... Exit the ASxxxx Documentation

... Home Page

Last Updated: May 2013