Summary of changes/additions to the ASxxxx Assemblers from Version 4.11 to Version 5.05. Version 5.00 Update 5 2012_08_01 Update_05 for the ASxxxx Assembler and Linker Version 5.00 (use 'pkunzip -d u05500.zip' for extraction with MS-DOS) (use 'unzip -L -a u05500.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, and 4 with the addition of a new assembler and fixes: (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\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.
... Exit the ASxxxx Documentation
Last Updated: August 2012