Welcome

ASxxxx Cross Assembler Updates

*---*---*---*---*
Version 4.11 Update 4
2008_02_03

Update_04 for the ASxxxx Assembler and Linker Version 4.11 (23K)
(use 'pkunzip -d U04411.ZIP' for extraction with MS-DOS)
(use 'unzip -L -a U04411.ZIP' for extraction with Linux)

This update for Version 4.11 of the ASxxxx Cross Assemblers includes 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: (assume 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. Merge the update asxv4pxx directory and subdirectories with the V4.11 distribution. The following files will be overwritten: [asxv4pxx/as2650] s26adr.c s26mch.c t2650.asm t2650e.asm [asxv4pxx\asxxhtml] asxupt.htm You must recompile the AS2650 assembler to incorporate the update. *---*---*---*---*
*---*---*---*---*
Version 4.11 Update 3
2007_04_01

Update_03 for the ASxxxx Assembler and Linker Version 4.11 (122K)
(use 'pkunzip -d U03411.ZIP' for extraction with MS-DOS)
(use 'unzip -L -a U03411.ZIP' for extraction with Linux)

This update for Version 4.11 of the ASxxxx Cross Assemblers includes 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. Merge the update asxv4pxx directory and subdirectories with the V4.11 distribution. The following files will be overwritten: [asxv4pxx\aspic] pic.h picext.c picmch.c picpst.c [asxv4pxx\aspic\p12c5xx] tp12c5xx.asm [asxv4pxx\aspic\p12c67x] t12c67x.asm [asxv4pxx\aspic\p16cxxx] tpic16cx.asm [asxv4pxx\aspic\p17cxxx] tpic17cx.asm [asxv4pxx\aspic\p18cxxx] tpic18cx.asm tpic18cx.bat tpic18cx.def tpic18cx.lnk [asxv4pxx\asxmak\cygwin\misc] tstscn.bat [asxv4pxx\asxmak\cygwin\misc\backup] tstscn.bat [asxv4pxx\asxmak\djgpp\misc] tstscn.bat [asxv4pxx\asxmak\djgpp\misc\backup] tstscn.bat [asxv4pxx\asxmak\linux\misc] tstscn.mak [asxv4pxx\asxmak\linux\misc\backup] tstscn.mak [asxv4pxx\asxmak\symantec\misc] tstscn.bat [asxv4pxx\asxmak\symantec\misc\backup] tstscn.bat [asxv4pxx\asxmak\turboc3\misc] tstscn.bat [asxv4pxx\asxmak\turboc3\misc\backup] tstscn.bat [asxv4pxx\asxmak\vc6\misc] tstscn.bat [asxv4pxx\asxmak\vc6\misc\backup] tstscn.bat [asxv4pxx\asxxsrc]: asmain.c asout.c assubr.c asxxxx.h [asxv4pxx\linksrc]: aslink.h lkhead.c lkrloc4.c [asxv4pxx\asxxhtml] asxbug.htm asxupd.htm You must recompile all the ASxxxx assemblers and linker to incorporate the update. *---*---*---*---*
*---*---*---*---*
Version 4.11 Optional Update 2
2006_11_01

Update_02 for the ASxxxx Assembler and Linker Version 4.11 (50K)
(use 'pkunzip -d U02411.ZIP' for extraction with MS-DOS)
(use 'unzip -L -a U02411.ZIP' for extraction with Linux)

This update for Version 4.11 of the ASxxxx Cross Assemblers includes: 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. Merge the update asxv4pxx directory and subdirectories with the V4.11 distribution. Note: It is recommended that Optional Update 01 also be installed to update the default pagination behavior of the ASxxxx Assemblers .list, nlist, .page, and .include directives. Prepare your OS9 module as described in os9_mod.asm. os9_mod.asm contains a working OS9 module which can be built using the included module.asm and bldmod.bat files. Once you have assembled your module into an s19 file use the program s19os9 to create the binary OS9 module file. The program s19os9 is invoked from the command line: s19os9 mod.s19 -o mod.bin where mod.s19 is the input s19 file and mod.bin is the os9 binary output file. The following OS9 Driver assembler program shows the steps required when creating an OS9 Driver using the os9_mod.asm file. os9_mod.asm loads the os9_mod.def and os9_sys.def files, defines the software interrupt macro os9, and creates the os9 driver header and crc blocks. ;**** ; Step 1: ; Use the .define assembler directive ; to insert the parameters into the ; os9_mod.asm's header structure. ; ; Note: See the file os9_mod.asm for ; parameter names and definitions. ; .define OS9_ModNam, "LSTNAM" .define OS9_Typ, "PRGRM" .define OS9_Lng, "OBJCT" .define OS9_Att, "REENT" .define OS9_Rev, "1" .define OS9_ModExe, "LSTENT" .define OS9_ModMem, "LSTMEM" ; Step 2: ; Set the symbol OS9_Module equal to 1 ; and .include the file os9_mod.asm. OS9_Module = 1 ; OS9 Module Begin (==1) ; .include "os9_mod.asm" .nlist .include "os9_mod.asm" .list ;*** ;*******; Driver Code Begins ;*** ;*****-----*****-----*****-----*****-----*****-----***** ; LIST UTILITY COMMAND ; Syntax: list ; COPIES INPUT FROM SPECIFIED FILE TO STANDARD OUTPUT ; Step 3: ; Allocate the storage in .area OS9_Data .area OS9_Data ; STATIC STORAGE OFFSETS BUFSIZ .equ 200 ; size of input buffer Base = . IPATH = . - Base .rmb 1 ; input path number PRMPTR = . - Base .rmb 2 ; parameter pointer BUFFER = . - Base .rmb BUFSIZ ; allocate line buffer .rmb 200 ; allocate stack .rmb 200 ; room for parameter list LSTMEM = . - Base ; Step 4: ; Insert the Module Code into .area OS9_Module .area OS9_Module LSTNAM: .strs "List" ; String with last byte or'd with 0x80 LSTENT: stx *PRMPTR ; save parameter ptr lda #READ. ; select read access mode os9 I$OPEN ; open input file bcs LIST50 ; exit if error sta *IPATH ; save input path number stx *PRMPTR ; save updated param ptr LIST20: lda *IPATH ; load input path number leax *BUFFER,U ; load buffer pointer ldy #BUFSIZ ; maximum bytes to read os9 I$READLN ; read line of input bcs LIST30 ; exit if error lda #1 ; load std. out. path # os9 I$WRITLN ; output line bcc LIST20 ; Repeat if no error bra LIST50 ; exit if error LIST30: cmpb #E$EOF ; at end of file? bne LIST50 ; branch if not lda *IPATH ; load input path number os9 I$CLOSE ; close input path bcs LIST50 ; ..exit if error ldx *PRMPTR ; restore parameter ptr lda ,X cmpa #0x0D ; End of parameter line? bne LSTENT ; ..no, list next file clrb LIST50: os9 F$EXIT ; ... terminate ; ;*****-----*****-----*****-----*****-----*****-----***** ;*** ;*******; Driver Code Ends ;*** ; Step 5: ; Set the symbol OS9_Module equal to 0 ; and .include the file os9_mod.asm. OS9_Module = 0 ; OS9 Module End (==0) ; .include "os9_mod.asm" .nlist .include "os9_mod.asm" .list *---*---*---*---*

Version 4.11 Optional Update 1 2006_11_01
Update_01 for the ASxxxx Assembler and Linker Version 4.11 (52K)
(use 'pkunzip -d U01411.ZIP' for extraction with MS-DOS)
(use 'unzip -L -a U01411.ZIP' for extraction with Linux)

This update for Version 4.11 of the ASxxxx Cross Assemblers modifies the functionality of the .list, .nlist, .page, and .include directives. 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. Merge the update asxv4pxx directory and subdirectories with the V4.11 distribution. The following files will be overwritten: [asxv4pxx\asxxsrc]: asexpr.c aslex.c aslist.c asmain.c asout.c asxxxx.h [asxv4pxx\asxxhtml] asxupt.htm You must recompile all the ASxxxx assemblers to incorporate the update. Note: This update includes Patch 01 for Version 4.11 of the ASxxxx Cross Assemblers.

Version 4.11


   Version 4.11 of the  ASxxxx  Cross  Assemblers
feature the  addition  of  10   previously   undocumented
8085 instructions to AS8085 and includes all the patches
and updates for Version 4.10.

   Version 4.10 of the  ASxxxx  Cross  Assemblers
feature 4 additional assemblers:

        Fujitsu F2MC8L/FX Microprocessors
        Signetics 2650 processor
        Zilog ez80 processor
        Zilog z8 processor

   A new option, -c, has been added to the assemblers.
This option enables  the  listing  of  machine  cycles
for each assembled instruction.  For instructions with
variable execution times  the maximum  cycle  count is
listed.

   Additional conditional directives:   .ifeq,  .ifne,
.ifgt, .iflt, .ifge, and .ifle  have been added to the
assemblers.

   A new linker option, -t,  produces  the Tandy Color
Computer Disk Basic binary output format.


   Version  4.00  of   the   ASxxxx  Cross  Assemblers
featured 7 additional assemblers:

        Rabbit 2000/3000 processors
        Atmel AVR processors
        Microchip PIC processors
        Texas Instruments MPS430 processors

        Sharp SC61860 processor
        CDP1802 COSMAC processor
        Mitsubishi 740 processors


   Internally the assembler and linker cores have been
rewritten to support  processor  architectures  having
upto 32 bit addressing, independent program  and  data
addressing,  and  a  new  linker  bit  merging  method
allowing arbitrary positioning of  linking addresses /
data  within  an  instruction  opcode.  The bit scheme
allows simplified writing of assemblers for  the  AVR,
PIC,  DS80cxxx, 8051  or  newer RISC style instruction
processors  which  have  non contiguous address / data
bits within the instruction opcode.  The  bit  merging
definitions for any particular processor  are included
in the  .rel file  output  by  the  assembler for that
processor.  This method allows the linker  to  'learn'
the merge method for each  .rel file as it  is linked.
(The linker is also compatible with  Version 3  of the
ASxxxx assemblers.)

   One  of  the  additional  new  features  is  a  new
construct called a bank.  The bank is a collection  of
code and/or data areas which are linked as a group.  A
bank has optional attributes of  base  address,  size,
and of specifying a seperate linked output file.   The
bank  is  useful in  defining  banked  overlay/program
sections.

   Other  new  features  include  the   .local   ( =: )
directive which defines a local variable that  will not
be output to the  .rel file  even when the -a (make all
variables global) option is specified.  This feature is
useful  when  defining  a  large  number  of  assembler
constants  that  should   be  localized  to  a   single
assembly  process.   Additional  directives  have  been
added  which  are  synonyms  of   existing  directives:
.byte (.fcb),  .word (.fdb),  .blkb (.rmb, .rs), .ascii
(.fcc, .str), .ascis (.strs), and .asciz (.strz).   And,
the addition of many  new directives:   .equ,   .gblequ,
.lclequ, .end, .ifdef, .ifndef, .define,  and .undefine.

   The .define directive defines a  substitution  string
for a keyword in an assembly  input  line.  The  keyword
substitution is recursive  for  additional  flexibility.
The .undefine  directive  removes  the  definition  of a
defined keyword.  The .ifdef and .ifndef directives test
the existance of a .define keyword definition or  symbol
definition to assist in conditional assembly processing.

   The  assembler/linker  -z  option has been changed to
specify case insensitivity.

... Return to the ASxxxx Assembler Index

... Home Page

Last Updated: February 2008