1 Asxxxx/ASlink version 5.30 is considered
\r
2 a major release version.
\r
5 January 2019 Version 5.3
\r
7 (1) Added new assemblers:
\r
8 as78k0, as8008, as8008s, as8x300, and asz280
\r
10 (2) General assembler updates
\r
11 added -i to insert assember lines before input files
\r
12 fixed .macro listing options
\r
13 fixes related to <q> errors and the -bb option
\r
14 fix the escape processing of the '\' character
\r
15 .include file location illustrations
\r
17 (3) General linker updates
\r
18 fix library path file strings
\r
19 rewrite of .lst to .rst translation
\r
21 (4) Assembler specific fixes
\r
23 changed 2-byte code to 1-byte code definition
\r
26 Corrected bug in "sel" instruction in .8041 mode.
\r
29 Corrected documentation for asf2mc processor types.
\r
32 Fixed missing machine type variable definition
\r
33 Fixed 'tris' instruction
\r
36 Included add/addw/sub/subw sp,#byte modes.
\r
37 Added the int opcode. Cleaned up st8addr.c
\r
38 addressing mode comments and code.
\r
41 January 2017 Version 5.20
\r
43 (1) Completed the functionality for propagating
\r
44 the boundary specifications .odd, .even, and
\r
45 .bndry processed during assembly to the linker.
\r
47 (2) Restored the correct functionality of the
\r
48 .org directive in areas of REL type.
\r
50 (3) Added Intel Hex legacy start address record
\r
51 type 1 as an option.
\r
54 Summary of changes/additions to the ASxxxx Assemblers from Ver-
\r
55 sion 5.11 to Version 4.11.
\r
58 2015_06_27 Version 5.10 Update 1
\r
60 This update for Version 5.10 of the ASxxxx Cross
\r
61 Assemblers includes fixes for the following errors:
\r
63 (1) The as6500 assembler incorrectly assembled
\r
64 cpx # and cpy # instructions.
\r
66 (2) An error in asmain.c inhibited the listing of
\r
67 all .if.. assembly directives.
\r
70 2014_10_31 Version 5.10
\r
72 (1) Rewrite of listing to relocated listing translation
\r
73 code in the assembler and the linker base code.
\r
74 The Assemblers now create a .lst to .rst hint file
\r
75 with the extension .hlr (when both .lst and .rel
\r
76 files are created by the assembler).
\r
78 (2) Add as6100 assembler (Intersil IM6100 / Harris HM6100)
\r
80 (3) Add as78k0s assembler (Renesas/NEC 78K/0S)
\r
83 2013_05_12 Version 5.00 Update 6
\r
85 This update for Version 5.00 of the ASxxxx Cross
\r
86 Assemblers rolls up updates 1, 2, 3, 4, and 5 with fixes
\r
89 (1) Fix asscmp assembler (pre-increment on fetch).
\r
91 (2) Fix aslink error reporting for PC relative modes.
\r
94 2012_08_01 Version 5.00 Update 5
\r
96 Update_05 for the ASxxxx Assembler and Linker Version 5.00
\r
97 (use 'pkunzip -d u05500.zip' for extraction with MS-DOS)
\r
98 (use 'unzip -L -a u05500.zip' for extraction with Linux)
\r
100 See the note about merging
\r
101 this update with the
\r
102 asxv5pxx distribution.
\r
104 This update for Version 5.00 of the ASxxxx Cross
\r
105 Assemblers rolls up updates 1, 2, 3, and 4 with the addition of
\r
106 a new assembler and fixes:
\r
108 (1) A new cross assembler for the Fairchild
\r
109 F8 microprocessor (or Mostek 3870).
\r
111 (2) Minor syntactical changes for ANSI C compatability,
\r
112 fix type conversion warnings, and update the
\r
113 various build, make, and test files.
\r
118 (1) The AS8048 base opcode value for the JMPP
\r
119 instruction should be B3 and NOT 83.
\r
121 (2) The AS8051 assembler calculates incorrect
\r
122 offsets when using the program counter, ".",
\r
123 as a destination in the instructions having
\r
124 a PC-Relative addressing mode. These
\r
125 instructions include: jbc, jb, jbn, jc,
\r
126 jnc, jz, jnz, cjne, and djnz.
\r
131 (1) A new cross assembler for the Fairchild
\r
132 F8 microprocessor (or Mostek 3870).
\r
134 (2) Minor syntactical changes for ANSI C compatability,
\r
135 fix type conversion warnings, and update the
\r
136 various build, make, and test files.
\r
138 (3) New cross assemblers for STMicroelectronics
\r
139 ST6, ST7, and STM8 microprocessors.
\r
141 (4) An ASlink list file update error fix (-u option)
\r
142 causing some errors not to be inserted into the
\r
145 (5) An additional ASxxxx assembler option (-v) which
\r
146 enables checking for out of range signed / unsigned
\r
147 values in symbol equates and arithmetic operations.
\r
148 This option has some ambiguities as internally the
\r
149 assemblers use unsigned arithmetic for calculations.
\r
150 (e.g. for a 2-byte machine -32768 and 32768 are both
\r
151 represented as 0x8000)
\r
156 (1) When using the assembler directive .end to specify
\r
157 the code entry address the assembler fails to set
\r
158 the variable .__.END. as a global. Therefor the
\r
159 value of .__.END. is not passed to the linker and
\r
160 the start address frame is always zero.
\r
162 (2) The linker will fail to create a start address frame
\r
163 when there is no code generated within the area/bank
\r
164 referenced by the .__.END. variable.
\r
169 (1) The newest versions of gcc (and perhaps other
\r
170 compilers) give warnings about missing arguments
\r
171 in the fprintf() function. This update replaces
\r
172 fprintf(arg1, arg2) with fprintf(arg1, "%s", arg2)
\r
173 in each affected line of code.
\r
175 (2) The newest versions of gcc (and perhaps other
\r
176 compilers) have defined 'getline' as a standard
\r
177 function in 'stdio.h'. This conflicts with the
\r
178 function 'getline()' in the ASxxxx package.
\r
179 All references to 'getline()' have been changed
\r
183 Before merging the asxv5pxx directory and subdirectories with
\r
184 the V5.00 distribution the following files/directories must be
\r
187 [asxv5pxx\asf2mc8\f8mch.c
\r
188 [asxv5pxx\asf2mc8\f8adr.c
\r
189 [asxv5pxx\asf2mc8\f8pst.c
\r
190 [asxv5pxx\asf2mc8\f8.h
\r
192 [asxv5pxx\asxmak\vc6\asf2mc8]
\r
193 [asxv5pxx\asxmak\vs05\asf2mc8]
\r
196 2011_07_24 Version 5.00 Update 4
\r
198 This update for Version 5.00 of the ASxxxx Cross
\r
199 Assemblers includes fixes for the following errors:
\r
201 (1) The AS8048 base opcode value for the
\r
202 JMPP instruction should be B3 and NOT 83.
\r
204 (2) The AS8051 assembler calculates incorrect
\r
205 offsets when using the program counter, ".",
\r
206 as a destination in the instructions having
\r
207 a PC-Relative addressing mode. These
\r
208 instructions include: jbc, jb, jbn, jc,
\r
209 jnc, jz, jnz, cjne, and djnz.
\r
212 2010_10_31 Version 5.00 Update 3
\r
214 This update for Version 5.00 of the ASxxxx Cross
\r
215 Assemblers rolls up updates 1 and 2 with the addition of
\r
216 three new assemblers and fixes:
\r
218 (1) New cross assemblers for STMicroelectronics
\r
219 ST6, ST7, and STM8 microprocessors.
\r
221 (2) An ASlink list file update error fix (-u option)
\r
222 causing some errors not to be inserted into the
\r
225 (3) An additional ASxxxx assembler option (-v) which
\r
226 enables checking for out of range signed / unsigned
\r
227 values in symbol equates and arithmetic operations.
\r
228 This option has some ambiguities as internally the
\r
229 assemblers use unsigned arithmetic for calculations.
\r
230 (e.g. for a 2-byte machine -32768 and 32768 are both
\r
231 represented as 0x8000)
\r
236 (1) When using the assembler directive .end to specify
\r
237 the code entry address the assembler fails to set
\r
238 the variable .__.END. as a global. Therefor the
\r
239 value of .__.END. is not passed to the linker and
\r
240 the start address frame is always zero.
\r
242 (2) The linker will fail to create a start address frame
\r
243 when there is no code generated within the area/bank
\r
244 referenced by the .__.END. variable.
\r
249 (1) The newest versions of gcc (and perhaps other
\r
250 compilers) give warnings about missing arguments
\r
251 in the fprintf() function. This update replaces
\r
252 fprintf(arg1, arg2) with fprintf(arg1, "%s", arg2)
\r
253 in each affected line of code.
\r
255 (2) The newest versions of gcc (and perhaps other
\r
256 compilers) have defined 'getline' as a standard
\r
257 function in 'stdio.h'. This conflicts with the
\r
258 function 'getline()' in the ASxxxx package.
\r
259 All references to 'getline()' have been changed
\r
263 2010_04_01 Version 5.00 Update 2
\r
265 This update for Version 5.00 of the ASxxxx Cross
\r
266 Assemblers includes fixes for the following errors:
\r
268 (1) When using the assembler directive .end to specify
\r
269 the code entry address the assembler fails to set
\r
270 the variable .__.END. as a global. Therefor the
\r
271 value of .__.END. is not passed to the linker and
\r
272 the start address frame is always zero.
\r
274 (2) The linker will fail to create a start address frame
\r
275 when there is no code generated within the area/bank
\r
276 referenced by the .__.END. variable.
\r
279 2010_03_03 Version 5.00 Update 1
\r
281 This update for Version 5.00 of the ASxxxx Cross
\r
282 Assemblers includes fixes for the following errors:
\r
284 (1) The newest versions of gcc (and perhaps other
\r
285 compilers) give warnings about missing arguments
\r
286 in the fprintf() function. This update replaces
\r
287 fprintf(arg1, arg2) with fprintf(arg1, "%s", arg2)
\r
288 in each affected line of code.
\r
290 (2) The newest versions of gcc (and perhaps other
\r
291 compilers) have defined 'getline' as a standard
\r
292 function in 'stdio.h'. This conflicts with the
\r
293 function 'getline()' in the ASxxxx package.
\r
294 All references to 'getline()' have been changed
\r
298 2009_04_01 (Version 5.00)
\r
301 Added a general purpose macro processor to the ASxxxx assem-
\r
304 Added true (t), false (f), and true or false (tf) condition-
\r
305 als to the .if / .else / .endif construct. The conditionals
\r
306 .ift, .iff, and .iftf allow replacement of the .else directive
\r
307 making the .if / .endif construct more readable.
\r
309 e.g. .ift if condition is true
\r
312 An alternate .if construction has been added to the ASxxxx
\r
315 e.g. .if eq,... if argument == 0
\r
318 The immediate conditional statements have been added to the
\r
319 ASxxxx assemblers. These conditionals can replace the
\r
320 .if / ... / .endif construct for a single assembler source line:
\r
322 e.g. .iifeq arg label: .word 0x1234
\r
325 The alternate immediate conditional statements have also been
\r
326 added to the ASxxxx assemblers:
\r
328 e.g. .iif eq,arg label: .word 0x1234
\r
331 The listing options for the ASxxxx assemblers has been up-
\r
332 dated to enable/disable any of the following parameters from be-
\r
333 ing output to a generated listing file:
\r
337 bin assembler binary code
\r
338 eqt symbolic equates / if evaluations
\r
340 lin assembler source line number
\r
341 src assembler source code
\r
343 lst listing of .list / .nlist
\r
344 md macro definition
\r
346 meb macro expansion binary code
\r
348 ! sets the listing mode to
\r
349 !(.list) or !(.nlist) before
\r
350 applying the sublist options
\r
352 e.g. .nlist (lst,pag) ; disable .list/.nlist listing
\r
356 The NOT parameter, !, is used to set the listing mode to the
\r
357 opposite sense of the .list or .nlist directive. For example:
\r
359 .nlist (!) is equivalent to .list and
\r
360 .list (!) is equivalent to .nlist
\r
362 To enable listing and simultaneously disable the cycle count use
\r
367 or if you wish to suppress the listing of the .list / .nlist
\r
370 .nlist ; disables all listing
\r
371 .nlist (!,lst) ; enables all listing except
\r
372 : .list (...) and .nlist
\r
375 Normally the .list and .nlist directives are not evaluated
\r
376 when encountered within a FALSE conditional block. This default
\r
377 behavior can be modified by specifying a non zero argument in
\r
378 the .list or .nlist directive:
\r
380 .nlist 1,(!,lst) ; enables listing even within
\r
381 ; a FALSE conditional block
\r
385 The .bndry assembler directive has been added to ASxxxx. The
\r
386 .bndry directive changes the current location address to be
\r
387 evenly divisible by a specified integer value.
\r
400 Added the Cypress PSoc (M8C) ASM8C assembler
\r
405 Added the 8048 (8021, 8022, and 8041) AS8048
\r
406 assembler to Asxxxx.
\r
410 Added the SC/MP ASSCMP assembler to ASxxxx.
\r
413 2008_02_03 (Version 4.11 Update 4)
\r
415 An update to the AS2650 assembler to
\r
416 fix the following errors:
\r
418 1) The indexed addressing mode generates invalid
\r
419 code by using the first argument register as
\r
420 the index register: (addr = 0x1234)
\r
422 loda r0,[addr,r1] 0C F2 34
\r
423 this should give 0D F2 34
\r
425 2) The index addressing mode did not generate
\r
426 an addressing error when the first argument
\r
427 register was not r0:
\r
429 stra r1,[addr,r2] should give an <a>
\r
430 error, the source must be r0
\r
433 loda r2,[addr,r3] should give an <a>
\r
434 error, the destination must be r0
\r
436 3) The S2650 auto increment and decrement indexing
\r
437 modes always perform the register update before
\r
438 the register is used. i.e. +Rn or -Rn. The
\r
439 assembler now accepts +Rn or Rn+ as meaning
\r
440 pre-increment and -Rn or Rn- as meaning
\r
444 The AS2650 assembler tstscn files have been updated
\r
445 for testing the assemblers.
\r
449 2007_10_21 (Version 4.11 Fix)
\r
451 In the AS6816 assembler the instruction ANDP gives
\r
452 wrong object code. Changed from 37 2A to 37 3A.
\r
454 2007_04_01 (Version 4.11 Update 3)
\r
456 An update to the ASPIC assembler and
\r
457 associated fix to ASLINK:
\r
459 1) Change the pic addressing to lo/hi from hi/lo
\r
462 2) The update fixes an error in the pic17 series
\r
465 3) A rewrite of the pic18 series assembler to change
\r
466 the PC addressing from 1 per 16-bit word to 1 per
\r
467 8-bit byte and add the extended instruction set.
\r
469 4) Modify the Linker Merge Mode processing to take into
\r
470 account the discarded low order bits for PC Relative
\r
473 5) New tstscn files for testing the assemblers.
\r
476 2006_11_01 (Version 4.11 Optional Update 2)
\r
478 1) OS9 definition files and an OS9 assembler module
\r
479 which creates the OS9 header, code and data areas,
\r
480 and the module CRC block:
\r
482 os9_mod.def OS9 Module Definitions
\r
483 os9_sys.def OS9 Sytem Definitions
\r
484 os9_mod.asm OS9 Module Begin / End Code
\r
486 2) a program, s19os9, to post-process assembled OS9
\r
487 modules in S19 format into binary OS9 modules
\r
488 with the appropriate header checksum and module
\r
489 CRC values calculated.
\r
491 3) new make and project files which may be used to
\r
492 compile the s19os9 program.
\r
494 2006_11_01 (Version 4.11 Optional Update 01)
\r
496 The .list and .nlist directives are now modified
\r
497 by .if / .else / .endif processing so that they are
\r
498 active only in a TRUE clause.
\r
500 The .page and .include directives are now modified
\r
501 by the .list and .nlist directives so that pagination
\r
502 occurs only when listing is active.
\r
504 The new default functionality for the .list, .nlist
\r
505 and .page directives may be modified by including an
\r
506 optional argument in the directive as shown here for
\r
507 the the .list directive:
\r
511 a non-zero argument invokes the directive irrespective
\r
512 of the .if / .else / .endif status.
\r
515 2006_07_26 (Version 4.11 Patch 01)
\r
517 The assembly of a direct page instruction with a
\r
518 numeric constant causes a program crash when a .rel
\r
519 file is created. e.g.:
\r
524 The use of a symbolic constant or symbol plus a
\r
525 a constant compiles normally.
\r
533 The assemblers effected are:
\r
541 Summary of changes/additions to the ASxxxx Assemblers from
\r
542 Version 4.10 to Version 4.11.
\r
544 1. Incorporated the patches contained in p01410.zip which
\r
545 corrected a coding error that affected BANKS containing
\r
546 multiple ABS areas or mixed AREA types.
\r
548 2. Incorporated the patches contained in p02410.zip which
\r
549 corrected improper use of R_USGN in most addressing
\r
550 modes in AS6500. This caused unexpected <a> errors in
\r
551 V4.xx because of the ASxxxx core change to 32-bit in-
\r
552 tegers and arithmetic.
\r
554 3. Incorporated the patches contained in p03410.zip which
\r
555 corrected errors in the .local and .globl assembler
\r
556 directive processing routine that introduced unwanted
\r
557 side effects for variable and symbol definition files.
\r
558 These effects included improper definitions and incor-
\r
559 rect error warnings.
\r
561 4. The following new subdirectories and their files have
\r
562 been added to the asxtst directory:
\r
564 * areabank Area and Bank Processing Test
\r
565 This directory contains several test programs:
\r
566 ts.asm (single file - multiple areas), tm1.asm and
\r
567 tm2.asm (multiple file - multiple areas), and
\r
568 tbm.asm, tbm1.asm, and tbm2.asm ( multiple file -
\r
569 multiple areas within a bank) and several other
\r
570 files which verify the correct operation of the
\r
571 linker when used with a single linked file, multi-
\r
572 ple linked files having no banking, and multiple
\r
573 linked files with banking. These reference files
\r
574 show in detail how the .area and .bank directives
\r
577 * equtst Equate Processing Test
\r
578 This directory contains a test file for verifying
\r
579 the operation of the .globl, .local, .equ, .gblequ,
\r
580 and .lclequ directives and the =, ==, and =:
\r
583 * inctst Nested Include File Test
\r
585 * itst Include File Error Reporting Test
\r
588 5. Incorporated the updates contained in u01410.zip which
\r
589 added 10 undocumented 8085 instructions to the AS8085
\r
593 Summary of changes/additions to the ASxxxx Assemblers from
\r
594 Version 4.00 to Version 4.10.
\r
596 1. Added new assemblers for the Zilog EZ80, Zilog Z8, Sig-
\r
597 netics 2650, and Fujitsu F2MC8(L,FX) processors.
\r
599 2. Added the processor cycle count option (-c) to all pro-
\r
602 3. Several of the assemblers (ASZ80, ASRAB, AS6805,
\r
603 AS6808, AS6812, ASF2MC8, ...) now support subsets or
\r
604 supersets of their basic opcodes by the use of assem-
\r
605 bler specific directives.
\r
607 4. Added .ifeq, .ifne, .iflt, .ifgt, .ifle, and .ifge con-
\r
608 ditional assembly directives.
\r
610 5. Added support for the Tandy Color Computer Disc Basic
\r
611 binary file format to ASLINK.
\r
614 When an area size is equal to the 'address space size'
\r
615 the size parameter is reported as 0. (A normal condi-
\r
616 tion caused by address rollover to 0.) Aslink inter-
\r
617 preted this as a 0 size.
\r
620 A new area 'Output Code Flag' bit was defined to indi-
\r
621 cate when data is defined in an area. ASxxxx and
\r
622 Aslink have been updated to set and process this area
\r
626 The use of the .end assembler directive in an Asxxxx
\r
627 assembler would cause Aslink to output the optional
\r
628 start address in all output files.
\r
631 Updated Aslink to output the optional start address
\r
632 only in the output file associated with the area/bank
\r
633 containing the .end directive.
\r
636 Aslink creates output files for banks with no output
\r
640 Aslink now deletes any created output file for banks
\r
643 9. Incorporated the patches contained in p01400.zip for
\r
644 files t1802.asm and 1802pst.c to correct for an error
\r
645 in the opcodes generated for the BM, BL, and BNF
\r
648 10. Incorporated the patches contained in p02400.zip for
\r
649 file ds8adr.c to correct for an error in the direct
\r
650 page addressing mode of AS8xCxxx.
\r
652 11. Incorporated the patches contained in p03400.zip for
\r
653 file rabmch.c to correct for an error in the processing
\r
654 of the "ret cc" instruction.
\r
656 12. Made many corrections to internal code comments.
\r