*---*---*---*---* Version 4.11 Update 3 2007_04_01
Update_03 for the ASxxxx Assembler and Linker Version 4.11 (105K)
(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\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 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 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
Last Updated: March 2007