-
Notifications
You must be signed in to change notification settings - Fork 20
/
history
1862 lines (1805 loc) · 101 KB
/
history
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
vasm history
=============
- 2.0 (13.10.24)
o Support for architectures which have bytes with more than 8 bits.
o Output formats bin, ihex, srec, test and vobj currently support >8-bit bytes.
o New options -obe and -ole to define the endianess of target-bytes in
binary output.
o New options -ibe and -ile to define the endianess of target-bytes in
binary includes (incbin).
o New option -underscore adds a leading underscore to all imported and
exported symbol names.
o New option -relpath to treat all include paths as relative first,
even when starting with '/' or '\'.
o Reworked relocations and added the option to define their signedness.
o New CPU backend for unSP (micro-nSP), having 16-bit bytes. Contributed
by Adrien Destugues.
o New CPU backend for the FPGA-CPU HANS, using 32-bit bytes. Contributed
by Yannick Stamm.
o New output module "pap", which outputs MOS Paper Tape files, as
documented in the KIM-1 User's Manual. Contributed by Dimitri Theulings.
o When printing error messages in macros, also print the source text line
calling the macro.
o A macro redefinition prints a warning with the previous definition.
The old macro is correctly replaced.
o Also warn about initialized space atoms (.space, etc.) in BSS sections.
o Workaround for a Windows bug, when reading a source text from stdin
directly via the terminal.
o Fixed output of 64-bit symbol values in vobjdump.
o Directives to suppress listing file output (like NOLIST) will no longer
appear in the listing file.
o Fixed string constants (in immediate addressing modes) with non-ASCII
characters.
o Fixed potential buffer overflow when generating a section name for
ORG directives (since V1.9f).
o Output modules now show the source line for unknown relocation errors.
o m68k: Most out of range errors have now become warnings.
o m68k: Out of range 8-bit immediate constants write to all 16 bits of
the extension word, with a warning (to be able to simulate the behaviour
of some old, faulty assemblers).
o m68k: Improved -opt-size optimization for move.l->moveq/lsl, which now
optimizes all values below 0x8000 where the highest and lowest bit set
does not span more than 7 bits (suggested by Erik Hemming).
o m68k: Float-constant optimization (OPT of, enabled by default) now also
supports integer constant optimization to 16-bit.
o m68k: Command line options of the form -opt-<option> execute a
Devpac-style option in the same way as an OPT directive at the top
of the source text.
o m68k: New options -warnabs16 and -warnabs32 to show a warning when
accessing absolute 16- oder 32-bit addresses.
o m68k: Fixed assigning another register list symbol with REG/EQURL, which
was broken since V1.9a.
o m68k: REG/EQURL directives optionally allow to specify register lists as a
register mask constant (BAsm compatibility).
o m68k: Add Apollo E-register banking for negx, swap, movex, sCC,
addiw.l, cmpiw.l, rol, ror, roxl, roxr, and perm.
o m68k: Apollo instructions pabsb, pabsw are gone (opcode space will be
reused in future).
o m68k: Apollo fmove.{b/w/l/s/d} En,Em is replaced by floadi and fstorei to
make clear whether the Em target is an integer or floating point register.
o m68k: New Apollo instructions: fmoverz, fmoveurz, moveiw, mov3q, movs,
movz, move2 (updated), clr.q.
o m68k: Do not allow Bcc.B with branch distance -130 for Apollo, as it
would encode as $6xff (opcode for 32-bit branch).
o 6502: Added al/as/xl/xs as aliases for a16/a8/x16/x8 directives.
Added longa/longi as WDC-style aliases for theses directives (65816).
o 6502: Absolute 16-bit addressing modes ignore the bank by default for 65816.
o 6502: Optionally allow alternative syntax with immediate operands for MVN,
MVP and PEA (65816).
o 6502: Out of range errors turned into warnings.
o 6502: CPU directive, to define the cpu model.
o 6502: Byte-selector operators are gone and turned into operand prefixes,
according to the official WDC syntax.
o 6502: New option -am to mask all immediate and data values to their
specified size.
o 6502: Hu6280 uses SETDP $2000 to move the zero page for automatic code
optimizations.
o 6502: New option -dpo to generate offset-relocs for zero- or direct-page
accesses.
o x86: Default to 16-bit addressing when -m selects a CPU below 386.
Default to 64-bit addressing with -m64.
o x86: Let the mnemonic's suffix always decide about the operation size,
even when the operand is a label (gas seems to do the same).
o x86: Mask all immediate operand relocations according to their size
(to allow something like movb $label,dest or movw $label,dest).
o x86: Fix macros with size-suffixes (b,w,l,s,q,x). Size qualifiers are
no longer allowed in x86-macros.
o x86: Allow multiple alternating .codeNN directives in the source.
o x86: Add missing prefix when using 32-bit registers in 16-bit mode.
o x86: Fixed relative calls with size suffix (callw, calll) in 16/32-bit mode.
o mot-syntax: Fixed non-zero offset in CNOP, which was broken since V1.7c.
o mot-syntax: TTL sets the listing file page title and not the unit name.
o oldstyle-syntax: MACRO (written in upper case) didn't work with arguments.
o oldstyle-syntax: New ifblank and ifnblank directives may be used to
check whether a macro argument was given.
o oldstyle-syntax: New directive exitmacro to exit recursive macro
invocations.
o oldstyle-syntax: New directive da as an alias for addr.
o oldstyle-syntax: New directive bss to reserve space, like ds or reserve.
o oldstyle-syntax: New directives blkl and dsl for defining space with a
32-bit pattern.
o oldstyle-syntax: Section attributes 'f' and 'z' may be used to designate
a section for far- or near-addressing (e.g. direct/zero-page).
o oldstyle-syntax: Fixed FCC for single characters (no expressions allowed).
o oldstyle-syntax: The closing quote-character (' or ") in single-character
expressions is now optional (compatibility with old Motorola sources).
o oldstyle-syntax: Broken hex-constants with the minus-operator following
the '$' are supported for compatibility reasons.
o oldstyle-syntax: Allow optional colon after a label for macro, equ
and set directives.
o std-syntax: The "true" result of logical operations should be 1 not -1.
o std-syntax: Allow XY' (alternate) registers with Z80.
o std-syntax: The .org directive always defines the absolute address for
subsequent code, as long as no relocatable section was defined (or -gas).
o std-syntax: .ifc and .ifnc directives for comparing strings.
o hunk-output: New option -noabspath to refrain from creating absolute
paths for source line debugging (LINE debug format).
o hunk-output: Automatic source line debugging output (-linedebug) also
includes BSS sections now, unless Devpac-compatibility was specified
(-devpac).
o hunk-output: New options -dbg-local and -dbg-globloc to include local
labels into the debug symbol hunk (HUNK_SYMBOL).
o hunk-output: Warn about odd relocation offsets, which might crash the
AmigaOS loader on 68000 and 68010 systems (suggested by Erik Hemming).
o o65-output: Support low-word relocs in 65816 mode.
o bin-output: Fixed overlapping misdetection with empty org-sections.
o bin-output: Foenix PGX format supports 65C02 and PGZ format supports 32-bit.
o bin-output: New option -coalesced to output org-blocks without padding.
o cdef-output: Do not output internal symbols.
o elf-output: Fixed advancing by more than 63 lines in the DWARF output
(patch by arcanist/EAB).
o tos-output: Fixed alignment problem with DRI object file relocs.
o tos-output: New option -zfile to output Sharp X68000 Z-file executables.
o xfile-output: New option -exec to define the execution label.
o xfile-output: New option -loadhigh to load the executable into high memory.
- 1.9f (10.11.23)
o Fix relative section offset directives, which must be unsigned to work
correctly over the whole target's address space.
o Fixed a few issues with named macro arguments.
o Do not warn about missing references to Common or Weak symbols.
o Binary output modules allow addresses outside of the backend's
address space.
o m68k: MOVEM (An),An/Am must not be optimized into two MOVE instructions.
This was a new bug in V1.9e.
o std-syntax: Fixed binary constant 0b...., which was erroneously mistaken
for a one-digit temporary label destination since V1.9a.
- 1.9e (30.09.23)
o Exit before reading the source (from stdin) when there were errors already.
o Make sure the relocated blocks within all sections are closed after
parsing. Otherwise the first pass may find the section in a wrong state.
o Output modules may define the default section, when no SECTION or ORG
directive was given. "bin", "ihex" and "srec" now default to "ORG 0".
o New output module "woz", which outputs sections as "wozmon" monitor
commands, suitable for ASCII transfer via a serial connection.
Contributed by anomie-p.
o m68k: Improved -opt-movem (OPT om+) optimizations, for MOVEM with two
registers.
o m68k: Fixed Apollo ADD/SUB->ADDQ/SUBQ optimization with AMMX registers.
o m68k: Enabled Apollo FPU instructions using 64-bit data registers:
Fxxx.D Dn,ea, FMOVE.D Fn,Dm, etc.
o m68k: Added missing PC-relative destination addressing modes for Apollo
shift instructions and FMOVE, FMOVEM.
o m68k: Apollo bchg/bclr/bset/btst Dn,An must not be allowed (conflicts
with MOVEP).
o m68k: New Apollo instructions FDBcc.L, DBcc En,lab; EXTUB.L and EXTUW.L.
o 6809: Fixed typo in the opcode for the 6309 LDMD instruction.
o mot-syntax: Allow multiple consecutive relocated blocks within a section.
o mot-syntax: New directives LOCAL and RSEVEN for compatibility.
o mot-syntax: Allow any type of expression for RSSET, SETSO, SETFO.
o madmac-syntax: Allow multiple consecutive relocated blocks within a section.
o oldstyle-syntax: The label defining the size of a STRUCT block may have
been moved into the previous section, or caused a segfault at ENDSTRUCT,
since V1.9b.
o tos-output: Also write absolute symbols (equates) into executables.
o tos-output: New option -szbx to enable unlimited symbol names using the
SozobonX extension.
o bin-output: New option -start to define the start address for the
default org-section.
- 1.9d (23.04.23)
o m68k: Using MOVEQ.L instead of MOVEQ must only disable the warning for
values between 128 and 255, but not allow any value without error.
o mot-syntax: XREF allows no definition and XDEF requires a definition.
o std-syntax: Fixed potential problem with "scratch at end of line"
warnings after a section attribute string.
o oldstyle-syntax: Fixed potential problem with "scratch at end of line"
warnings after a section attribute string.
o tos-output: Reloc-output in executables was broken since V1.9b! Restrict
to 32-bit absolute relocations again.
- 1.9c (29.03.23)
o Reverted a last-minute change in V1.9b, which broke the O65 output module,
used with 6502 and 65816.
- 1.9b (26.03.23)
o Fixed a rare expression evalulation bug. Previous versions may erroneously
evaluate "label - equate" as constant, when the equate is something like
"currentPCsymbol - label".
o Allow a label definition on the same line as a section directive and
warn about it.
o Macro arguments were lost at the second repeat-level inside a macro.
o Syntax modules warn about garbage characters in the operand field,
when the mnemonic doesn't take any operand.
o No longer cut symbol names in a wide-format listing file after 31 chars.
o Error messages on macros and repetitions now always include the
real source file name and line number in parentheses.
o Directives for printing expressions into the console (printv, echo, etc.)
now print undefined symbols as "<undefined>+offset".
o New output module "gst" for GST object files (Atari, GST-assembler, Devpac).
o New output file format "dri" for Atari M68k DRI object files.
o m68k: Experimental Apollo TEX instruction, using a simplified syntax
after a proposal of John H.
o m68k: Apollo extended/compressed Bcc.B displacements in the range of
-256 to 254.
o m68k: MOVEQ.L suppresses any warning about an out of range operand.
o m68k: Allow any size-extension for MOVEQ in Devpac-compatibility mode.
o m68k: Fixed a string-buffer conflict introduced in V1.9a, which occurs
when using local symbols in the label field and operand field
together with some cpu-specific directives, like EQUR, REG, etc.
o m68k: Optimize small data label in 020 base displacement to a 16-bit
offset, or even to (d16,An) when the index is suppressed, provided
that options -sd and -extsd have been given.
o 6502: Some mnemonics could be misdetected as implied addressing mode
when option -i was given: asl, asr, lsr, rol, ror. 45GS02: aslq, asrq,
deq, inq, lsrq, rolq, rorq. WDC02: dec, inc.
o mot-syntax: Do not allow a section with the same name and same type,
but with different memory attributes.
o mot-syntax: New option -nolocpfx to disable local symbols by label-
prefix (usually '.').
o mot-syntax: ELIF directive implements a real else-if.
o mot-syntax: Export equate symbols with double-colon in vasm-native mode.
o std-syntax: Fixed an issue caused by the introduction of one-digit
temporary labels in V1.9a. Labels beginning with _f or _b were
misdetected as forward/backward references to such labels.
o std-syntax: Added missing .elseif directive.
o oldstyle-syntax: All byte-directives (byt, byte, dfb, etc.) increment
the pc by one without any operand. All word-directives (wor, wrd, word,
etc.) increment the pc by two without any operand. Similar to a
"declare storage" directive.
o oldstyle-syntax: Whitespace between a label and its colon are allowed
again.
o hunk-output: Warn about inability of Kickstart 1.x to initialize BSS
sections greater than 256k.
o bin-output: ORIC file names in the tape header are limited to 15
characters and a ".tap" extension is removed automatically.
o bin-output: Added support for the PGX and PGZ format, used by 65816-
based C256 Foenix computers.
o tos-output: Support DRI-format object files. New option: -Fdri.
- 1.9a (02.10.22)
o Reads the input from stdin when no source file name is given.
o Small performance improvements. Tuned hash table sizes. Reduced
memory allocations and deallocations.
o Do not ignore the path from the main source when looking for a file.
o Can build low-memory version of vasm with minimal hash tables, by
compiling with -DLOWMEM.
o Do not allow exporting equates which are based on imported symbols.
o Search for include files in the current work directory first, then
in the compile directory.
o New option -maxpasses to adjust the maximum number of passes while
resolving a section.
o New option -nocompdir to disable compile directory based include file
lookup completely.
o New option -v to print version and copyright.
o m68k: -no-opt option really ovrrides all "opt o" and "opt a" directives
from the source now.
o m68k: Fixed 68030/68851 PMOVE issue with TC and MMUSR, caused by a
conflict with MOVEC control registers of the same name.
o m68k: New Apollo instructions DBcc.L and MOVE2.
o m68k: Fixed Apollo MOVE immediate addressing mode to vector register.
o m68k: Fixed Apollo SUBI banked instruction (one word missing).
o m68k: Added Apollo banking prefix support for MOVE.L Bn,<ea> and
MOVE.L <ea>,Bn.
o m68k: Apollo LSLQ and LSRQ default to a .W operation size when missing.
The remaining AMMX instructions should be .Q.
o m68k: Make sure AMMX 64-bit constants are parsed with full precision.
o m68k: Added missing Apollo FMOVE addressing modes.
o 6502: Added support for the WDC 65816 and 65802 8/16 bits instruction set,
including some new directives for selecting Accumulator and Index width.
o z80: Fix for GBZ80 "ld (c),a" and "ld a,(c)".
o mot-syntax: ASSERT directive.
o mot-syntax: macro arguments within <..> allow additional '>' characters
inside a string without terminating the argument (vasm default mode only,
not for Devpac-compatibility).
o std-syntax: New option -gas for stricter GNU-as compatibility.
o std-syntax: Supports one-digit temporary labels, where the nearest
previous label may be referenced by Nb and the nearest following by Nf.
o oldstyle-syntax: New directives SYMDEPEND and NEEDS. They define a
dependency of the current section from an external symbol, which must
be resolved by the linker.
o oldstyle-syntax: Anonymous labels may be defined with a single ':' and
referenced by ':+' or ':-'.
o hunk-output: Converts NONE-relocs to 8-bit ABS with a warning.
o hunk-output: Improved short-reloc output and work around AmigaOS
LoadSeg() limitations/bugs.
o o65-output: Check bad addends for 8-bit relocations.
- 1.9 (26.02.22)
o Removed inappropriate warning when using equates which are greater than
the target's address size.
o NARG-symbol (number of arguments in macro) can also be made
case-insensitive with the -nocase option.
o Stop parsing hexadecimal escape sequences in strings after two characters.
o m68k: Apollo banking prefix support for most important CPU instructions.
Patch by John Hankinson.
o m68k: Fixed Apollo FPU instructions of the form F<op> En,En,FPn.
o m68k: Non-standard fpu-id didn't work for some instructions. Do not
allow non-standard fpu-ids for CPUs with a fixed internal FPU.
o m68k: EQUR/FEQUR register assignments do not depend on target CPU/FPU
settings anymore.
o m68k: Allow Apollo vector register assignments with EQUR.
o m68k: Supports Packed Decimal floating point constants.
o m68k: New option -no-typechk, with the same effect like the "OPT t-"
directive.
o z80: EI is a valid GBZ80 instruction.
o z80: Warn about extra garbage characters in data operands.
o 6502: Added complete instruction set 65CE02 and all 32-bit MEGA65
extensions.
o 6800: Fixed -m68.. command line options.
o 6809: Avoid problems with PC-relative optimizations using a distance of
+127 or +255.
o mot-syntax: Improved ECHO directive.
o mot-syntax: DC.P directive for Packed Decimal.
o mot-syntax: REPT with a negative count should behave like REPT 0.
o aout-output: Make baserel (small-data) relocations compatible to
GNU-binutils. Value is always based on .data.
- 1.8l (19.07.21)
o ASCII output modules cdef, ihex, srec and test now use the host system's
line endings.
o m68k: Scale factor may be a (constant) symbol.
o m68k: Recognize local register symbols.
o m68k: Fixed -opt-jbra (opt ob+), which caused an illegal instruction error
since the last release.
o m68k: Enabled Apollo Core FPU instructions.
o m68k: Apollo FPU instruction banking prefix support. Patch by John Hankinson.
o jagrisc: Fixed (Rn+0) optimization to (Rn).
o z80: Support for the 12 additional 8085 instructions by Grzegorz Mazur.
o 6809: Added missing LSRW and support for the 6309 F-register (patch by
Jim Westfall).
o 6809: Fixed LDW indexed addressing mode.
o mot-syntax: showoffset for PhxAss compatibility.
o mot-syntax: Fixed DX directive, which was broken in the last release.
o madmac-syntax: ABS directive is no longer available for the jagrisc
cpu backend as it conflicts with the instruction name.
o std-syntax: .int uses the target's address size.
o oldstyle-syntax: addr uses the target's address size.
o hunk-output: Default section name comes from the syntax module now, in
case the output only contains symbols, but no data.
o srec-output: Added -crlf option to enforce CR/LF line endings (submitted
by Grzegorz Mazur).
o ihex-output: Added -crlf option to enforce CR/LF line endings (submitted
by Grzegorz Mazur).
- 1.8k (13.05.21)
o New output modules "o65" and "o65exe" to write object files and
executables for the 6502-family of processors.
o Symbols defined on the command line by -D must be Equates, so they
cannot be modified anymore in the source.
o New default listing file format (wide). The old one can still be
selected by -Lfmt=old.
o Improved listing file output for macros and repetitions. Also their
definitions are now printed.
o New listing file options: -Lbpl=<val>, -Lall, -Llo and -Lni. All valid
for the new wide-format.
o New option -uspc=<val> sets the fill value for uninitialized space
(defaults to zero).
o m68k: Support 64/96 bit immediate FMOVEM.L with two or three control
registers as destination.
o m68k: Fixed misdetection of labels with dots (-ldots) as registers with
size extension (e.g. "(pc.msg,pc)").
o m68k: Fixed Apollo instruction encoding: pcmpgeb, pcmpgew, pcmpgtb,
pcmpgtw. Changed Apollo instruction name: miniterm to minterm.
Patch by John Hankinson.
o m68k: New Apollo core instructions (John): lslq, lsrq, pabsb, pabsw,
storem2, storem3, transilo.
o m68k: Encoding a branch distance of -1 is not allowed for 68020+ CPUs.
o 6502: > and < modifiers may be used to enforce absolute or direct/zero-page
addressing modes.
o 6502: New directive zero or .zero starts a zero-page bss-section, which
makes symbol accesses to this section default to zero-page addressing.
o 6502: Implemented a few 45GS02 instructions (Mega65).
o 6809: Absolute constant offsets > 32767 are now negatively sign-extended
and will allow addressing mode optimizations.
o oldstyle-syntax: Besides .text, .data and .bss, also text, data and
bss section names are automatically recognized and provided with
correct attributes.
o oldstyle-syntax: -sect option can be used to enable the section
directives: text, data and bss. By default text and data directives
create string/data constants.
o oldstyle-syntax: Sections named .zero or zero get the zero-page
flag for 6502.
o oldstyle-syntax: Fixed crash with text/fcs directives without a string.
o bin-output: Added support for ORIC machine code file headers.
o bin-output: Uninitialized space is not written. At the moment it can only
be created with *=*+n directives in some syntax modules.
o tos-output: Report undefined symbols with source line number.
o xfile-output: Report undefined symbols with source line number.
- 1.8j (31.12.20)
o New CPU backend for the PDP-11 architecture.
o Fixed alignments in relocated-org blocks within a section.
o 6809: 16-bit branch with a negative distance of 127 bytes (-130 encoded)
was erroneously optimized to 8-bit branch (-129 encoded). Fixed.
o 6809: .dpage directive conflicts with .dpage section in std-syntax and
was renamed to .direct.
o 6809: Support label differences in immediate addressing modes, which
generate a pc-relative relocation.
o m68k: Fixed inappropriate cpu-type errors, when using directives or
macros starting with "mc", "mcf" or "ac".
o m68k: Illegal opcode extensions should also be reported in Devpac-
compatibility mode. Illegal opcode extensions for unsized instructions
are still ignored with -devpac.
o mot-syntax: pushsection and popsection directives.
o mot-syntax: msource directive to control source level debugging within
a macro (submitted by Soren Hannibal).
o mot-syntax: if1, if2, ifp1 directives for compatibility with a warning.
o oldstyle-syntax: org $addr works again for Z80.
- 1.8i (28.09.20)
o New CPU backend for 6809, 6309 and 68HC12.
o New output module "cdef" to write all absolute symbols as a series of
#define directives for inclusion in a C source.
o Do not read a source file with the same name from the CWD, when the
real source is actually located in a sub directory!
o Show an error when no numerical term follows a base-prefix.
o Do not show expression-evalulation errors before the final pass
(e.g. division by zero).
o New option -nomsg= to disable specific informational messages.
o Define an internal symbol depending on the host file system in use
(__UNIXFS, __AMIGAFS, __MSDOSFS).
o Fixed crash when printing errors from files with an absolute path.
o m68k: New option -extsd to allow small data with 020 extended addressing
modes.
o m68k: Disabled most of the new MOVE.L #x,Dn optimization from V1.8h for
ColdFire, which doesn't support .W and .B operations.
o m68k: Fixed encoding of ([...],ZRn,...).
o m68k: Fixed PFLUSHR immediate addressing mode.
o m68k: Some PMOVE reg,<ea> erroneously allowed immediate and PC-relative
addressing modes as destination.
o m68k: Allow A0 and A1 as small data base registers (near, -sdreg).
o m68k: External small-data symbol references may have a signed addend.
o jagrisc: Add more predefined condition codes. Now vasm supports the
same condition codes as the SMAC assembler.
o 6502: Fixed branches to external labels.
o 6502: New directive EZP. Like EQU, but use advises zero page addressing.
o 6502: -opt-branch can now also translate/optimize between BRA and JMP.
o ARM: Fixed a problems with auto-rotated immediate values. Now all
possible solutions should be found.
o ARM: Fixed oscillating optimization for ADR/ADRL (-opt-adr).
o ARM: Fixed handling of string/data directives with a single character.
o ARM: Fixed MSR status register bit mask (patch by Luna).
o mot-syntax: -devpac compatibility mode allows dots ('.') in labels (-ldots).
o mot-syntax: Fixed crash when reading a label field including '\' and
followed by a non-identifier character.
o oldstyle-syntax: -ast allows * to start comments in the first column.
o oldstyle-syntax: -i now also works for instructions with no operand.
o oldstyle-syntax: -ldots allows '.' within identifiers.
o oldstyle-syntax: added inline and einline directives from mot-syntax.
o oldstyle-syntax: added FCS directive, which is like FCC but sets the
MSB of the last character.
o madmac-syntax: Added missing .offset and .abs directives to start an
offset-section.
o std-syntax: Added .pushsection and .popsection directives.
o bin-output: Added support for Apple DOS binaries, Dragon DOS binaries
and Tandy Color Computer machine language files.
o vobj-output: Make some backends support larger sections sizes than
their target address allows.
- 1.8h (18.04.20)
o Reworked absolute ORG sections.
o -pic no longer reports references to undefined symbols.
o New option -pad=<value> can be used to define a different padding value
than zero for alignments and for filling gaps between absolute sections.
o Fixed alignment directives. Now also alignments which are not a power
of two are allowed (but probably not supported by all object file
formats).
o m68k: New optimizations for BAsm compatibility: MOVE.L #n,Dn is
transformed into a combination of MOVEQ and SWAP, ADD.W or NEG.W.
o m68k: New optimization flag for size, even when speed suffers. It will
optimize for example MOVE.L #x,Dn to MOVEQ #x>>n,Dn + LSL.W #n,Dn.
o m68k: Fix some situations where an absolute label from an ORG section
should be treated as a simple absolute value (e.g. MOVEQ).
o m68k: New option -nodpc to disallow direct encoding of absolute PC
displacements (also set automatically with -devpac compatibility).
o m68k: Added internal symbols _MOVEMBYTES and _MOVEMREGS for BAsm
compatibility.
o 6502: New directive ZPAGE, to declare a relocatable symbol as being
located in the zero-page, so vasm will use ZP-addressing, even on
external symbols.
o 6502: Allow 32-bit data directives.
o 6502: New option -bbcade for compatibility with the BBC ADE assembler,
contributed by Garry Marshall.
o z80: New option -intel-syntax switches to the old Intel 8080 syntax.
Contributed by Mark Jones.
o std-syntax: .org within a section allows an optional argument to define
a fill-value.
o mot-syntax: A SECTION directive with a single argument is interpreted
as section type when the selected output format does not support
section names (e.g. aout, tos, xfile). Otherwise the type defaults
to code, using the given argument as section name.
o mot-syntax: register list directives (REG, EQURL) also accept a
previously defined register list symbol.
o mot-syntax: Fix segfault/out-of-memory when a macro-argument enclosed in
< ... > is missing the '>'.
o mot-syntax: Allow comment-character directly attached to a macro directive.
o mot-syntax: RORG allows an optional argument to define a fill-value.
o mot-syntax: Only allow valid identifiers for macro names.
o mot-syntax: Fixed string expressions as macro arguments.
o mot-syntax: New directives db, dw and dl for ArgAsm, BAsm, HX68, Macro68,
MaxonAsm, OMA, ProAsm, Cape compatibility. They do not exist in PhxAss-
or Devpac-compatibility mode.
o oldstyle-syntax: The addend in the abyte directive is now a modifier,
where the special symbol ._ works as a placeholder for each expression
from the line.
o oldstyle-syntax: macro definitions and repetitions with -dotdir were
not correctly recognized.
o oldstyle-syntax: Fixed string expressions as macro arguments.
o oldstyle-syntax: New directives fi and str, contributed by Garry Marshall.
o oldstyle-syntax: New directives dsect and dend to implement offset-sections.
o madmac-syntax: Fixed string expressions as macro arguments.
o bin-output: option -atari-com may be used to output Atari 6502 COM files.
o output-hunk: Alignment directives behind DX are allowed.
- 1.8g (04.10.19)
o Do not print informational messages when generating dependencies.
o New option -depfile to specify a file name for the dependency output.
Code generation may happen in parallel in this case.
o Include the compile directory in the path, when printing error messages.
o Treat a subtraction of a label from a constant as constant, when the
label is from an absolute ORG section.
o m68k: -opt-allbra makes sure that branch-optimization is enabled.
o z80: "ld (BC/DE/HL),abs" is an illegal addressing mode.
o mot-syntax: SECTION directive with a single argument is interpreted as
section-type when the output format is "tos". Otherwise the type
defaults to CODE.
o mot-syntax: In devpac-compatibility mode allow '@' in the middle of labels.
o mot-syntax: -phxass compatibility mode allows dots ('.') in labels (-ldots).
o mot-syntax: Added support for Devpac IIF directive.
o output-hunk: Fixed LINE debug hunk output (-linedebug). Now it can
deal with code from multiple sources and the line numbers for
executing macros and repetitions are correct.
o output-hunk: New option -hunkpad=<code> selects the padding code for
code sections to achieve 32-bit alignment. Default to 0x4e71 (NOP)
for M68k.
- 1.8f (10.06.19)
o New option -wfail makes vasm return with an error code not only for
errors but also for warnings.
o 6502: Added missing WDC65C02 instructions (-wdc02): STP and WAI.
o m68k: Warn about DIVxL.L with identical quotient and remainder registers.
o m68k: Do not optimize or translate PC-relative addressing modes when
the referenced symbol is in a different section.
o m68k: RTD operand should be signed.
o m68k: Automatic optimization of absolute to base-relative addressing
(-sd option) must only be done when the target address is between offset
0 and 65535 in the small data section.
o z80: Forbid ixh/ixl operands on one side with h/l on the other.
o mot-syntax: Structure directives (RS, SO, FO) without an offset-expression
are not allowed in Devpac-compatibility mode (-devpac).
o mot-syntax: __LINE__ represents the correct line number again, after it
had been broken in the last version.
o mot-syntax: New directive DX for ProAsm/Barfly compatibility. Used to
create DataBss space in an executable file. Otherwise identical to DS.
o mot-syntax: New option -cnop=<code> sets a two-byte code for padding
CNOP-alignments. Defaults to 0x4e71 for M68k.
o output-hunk: Make sure all unsupported relocations in hunk-executables
are reported. Do not generate an executable with missing relocs.
o output-hunk: Do not pad a code section with 0x4e71 when skipping
DataBss contents at this point (-databss with -Fhunkexe).
- 1.8e (28.12.18)
o New option -dwarf automatically generates line debug information for
source level debugging in DWARF V2 or DWARF V3 format.
o New output module for Sharp X68000 Xfile executables. Can be selected
with the -Fxfile option.
o Repeatedly included files are only loaded once into memory.
o m68k: Avoid wrong branch-optimization info messages with -opt-allbra.
o 6502: Fixed LDA (zp,X) in 65C02 mode (-c02).
o 6502: -wdc02 enables the WDC65C02 extensions, like RMB, SMB, BBR, BBS.
o 6502: Support for Hudson Soft HuC6280 (new option -6280).
o 6502: New directive SETDP to set the current zero/direct-page address
for optimizations from abs to zp addressing modes.
o x86: Fixed crash with SWAPGS, when not supported by current cpu.
o std-syntax: Fixed potential buffer overflow when parsing macro arguments.
o output-hunk: Always try to include the full absolute source-path when
writing LINE debug hunks (-linedebug option).
- 1.8d (20.08.18)
o Repeat-loops with a single line generated a malformatted listing file.
o m68k: Recognize (PC) addressing mode and transform it into (0,PC).
o m68k: Only "fpu 1..7" may enable FPU code generation.
o m68k: -kick1hunks also prevents optimizing from absolute to 32-bit
PC-relative.
o ARM: Fixed instruction alignment in Thumb mode, which was broken since
1.8b (introduction of -noialign option).
o ARM: Fix for immediate operands like cmp r0,#'A' not working properly in
thumb mode (provided by Peter Petterson).
o PPC: tlbld is available as general PPC instruction again.
o z80: SBC addressing modes IX,ss and SBC IY,ss do not exist.
o z80: EX (SP),HL is not supported by GBZ80, but SRL is.
o mot-syntax: Report garbage at end of line for DC directives.
o mot-syntax: Labels with a double colon are automatically exported (xdef).
o mot-syntax: Allow '?' within identifiers, in Devpac-compatibility mode.
o madmac-syntax: Report garbage at end of line for DC directives.
o std-syntax: Fixed \@ (unique id) in macros, which was broken since 1.7h.
o vobj-output: Prevent crash when referencing undefined local symbols.
- 1.8c (15.03.18)
o Relocated ORG blocks within a section were not recognized, when their
start address was 0.
o The count in repeat-directives is always unsigned, even when given as
a negative value.
o Check for target address space overflows.
o Fixed crash when undefining non-existing register symbols.
o A redefined label is no longer a warning, but an error.
o ARM: Fixed compile-error from last release.
o vobj-output: Fixed uninitialized symbol index for internal/local symbols.
o oldstyle-syntax: New directive ROFFS to set the program counter relative
to the start of the current section.
- 1.8b (30.12.17)
o Option -noialign disables the automatic instruction alignment.
o m68k: New Apollo Core instructions (core >=4035.jic), provided by
Henryk Richter.
o m68k: Referencing absolute-short labels and optimizing labels into
absolute short addressing mode is allowed, when the label resides in
an absolute ORG section.
o jagrisc: Fixed MOVE PC,Rn instruction.
o oldstyle-syntax: Internal symbol __RPTCNT can be used as iteration counter
in the inner repeat loop.
o oldstyle-syntax: Numeric absolute symbol expansion is supported for macro
parameters of the form \<symbol>.
o vobj-output: Ignoring internal/local symbols does not work. Now we
create and use section symbols as a relocation reference.
- 1.8a (13.08.17)
o Increased number of fast-optimization passes from 50 to 200, as
very large sources (> 60000 lines), with lots of branches to optimize,
may still have optimization possibilities left after 50 passes.
o Repeat loops with an iterator symbol over an arbitrary sequence of values.
o m68k: New option -sd and directive OPT ON to enable optimizations of
absolute references to the small data section into a base register
relative addressing mode.
o m68k: New option -opt-jbra and directive OPT OB to convert all absolute
jumps to external labels into 32-bit PC-relative branches (68020 and up).
o m68k: OPT O+ in Devpac compatibility mode does not enable PC-relative
optimizations (an explicit OPT A+ is needed).
o m68k: New Apollo Core instructions: PMULA, PMULH, STOREC, UNPACK1632.
o m68k: -m68020up option no longer includes Apollo Core.
o m68k: Devpac OPT Ln (with n=0,1,2,etc. for Atari) is recognized,
although it has no effect at the moment.
o m68k: Suppressed index registers ZRn, which are explicitly written in
the source, are no longer optimized away.
o PPC: -m option to select the CPU model starts working. By default the
instruction set of a 32-bit PPC (G2, G3, G4) with AltiVec is supported.
o x86: Floating point constants (.float, .double) are supported.
o mot-syntax: Optional offset and length arguments for INCBIN
(contributed by Andreas Larsson).
o std-syntax: New directives for gas compatibility: .irp and .irpc.
o bin-output: Fixed another sign-problem while padding between sections.
o hunk-output: Print source line for undefined symbols, when generating
an executable.
o vobj-output: Ignore all internal/local symbols, except "*tmpNNNNNNNN*",
which is required for certain relocations.
- 1.8 (16.05.17)
o External references in ORG or RORG sections are allowed.
o Option -depend only prints relative include file names, while the new
option -dependall prints all included file names, also with absolute paths.
o m68k: Support for Apollo Core 68080 and AMMX ISA.
o m68k: MSP, ISP and MMUSR are no valid 68060 control registers.
o 6502: Fixed potential segfault during zero-page optimization (new since
last version).
o jagrisc: Fixed SHLQ instruction.
o mot-syntax: Make NREF directive work for PhxAss compatibility. Allows
optimization of absolute references to base-relative.
o std-syntax: Labels ending on '$' are only local when all preceding
characters are digits.
o madmac-syntax: Fixed .long directive (which only aligned to even bytes).
o oldstyle-syntax: New options -i (ignore everything in the operand after a
blank), -noc (no C-style constant prefixes) and -noi (no intel-style
constant suffixes).
o oldstyle-syntax: Z80 supports multiple directives or instructions per
line, separated by a ':' character.
o oldstyle-syntax: Fixed parser problem with nested repeat/endrepeat blocks.
o output-hunk: -kick1hunks must not forbid base relative relocs and
references. It was supported by some 1.3 linkers (blink for example).
- 1.7h (14.02.17)
o Implemented a dynamic line buffer. No limitations on line lengths anymore.
o Octal escape sequences are limited to a maximum of three digits.
o Allow assembler text output (echo, printv) in offset sections.
o Print a warning for initialized data in a bss-type section. This already
worked in the past (1.2c and later), but has been lost somewhere.
o Some single-character labels and symbols will be rejected (depending
on the syntax module).
o -maxerrors=0 should print all errors in the source.
o Print expressions in the listing file and the test output in decimal and
hexadecimal form.
o m68k: Immediate- and PC-relative destination addressing modes for 68851
PMOVE are not allowed. PMOVE ea,PCSR doesn't exist.
o 6502: Perform zero-page optimization with a known label from an absolute
section.
o std-syntax: Fixed problem with parentheses in character constants.
o oldstyle-syntax: New option -org=<address> to set the absolute base
address of the program from the command line.
o oldstyle-syntax: Implemented some listing file directives, but without
any function yet: nam, subttl, page, space.
o bin-output: Fixed output section sorting, which didn't work with some
implementations of qsort().
o elf-output: Fixed external references in stabs.
o elf-output: Use a hash table for ELF symbols to speed up the output.
o hunk-output: Optimization to make it faster with many sections.
o test-output: Fixed crash when printing stabs without a value.
- 1.7g (02.11.16)
o Avoid a crash or internal error in some output modules, when an equate
refers to an undefined (imported) symbol.
o m68k: Optimizing/translating to 68020+ addressing modes for MOVEM didn't
work. For example MOVEM (40000,A0) was not automatically translated into
a bd32 addressing mode, but had to be explicitly written as (40000.l,A0).
o m68k: Optimizing MOVEM was not attempted, when using a register list
symbol in one operand and a label in the other.
o m68k: Fixed -opt-movem & -opt-speed optimization of MOVEM with two
registers, which saw a wrong instruction size and moved following labels.
o aout-output: Instructions with more than one relocation were no longer
supported since V1.7f.
- 1.7f (17.09.16)
o Print a warning when a constant is not representable using the target
data type.
o Show warnings or errors when an expression overflows the backend's
address data types.
o Warn about overflows caused by negative expressions in space directives.
o New option -chklabels makes vasm issue a warning when a label conflicts
with a mnemonic or directive name.
o Reworked internal relocation representation.
o m68k: Base-displacement addressing modes and suppressed registers are
allowed for CPU32. Just memory-indirect is illegal.
o m68k: Added FJcc mnemonics for GNU-as compatibility (-gas option).
o PPC: Added complete support for 403, 405, 440, 460, Book-E, e300 and e500
instruction sets.
o 6800: Fixed a bug which suppressed command line options for syntax- and
output-modules.
o 6800: Support for 6801/6803 compatible CPUs added (contributed by
Adrien Destugues).
o ARM: Thumb-mode [PC,#imm] and [SP,#imm] addressing modes were not
recognized.
p ARM: Fixed thumb-mode SP-adjustment instructions: ADD SP,#<9-bit unsigned>
and SUB SP,#<9-bit unsigned> (missing).
o ARM: External subroutine calls in thumb-mode with BL were broken.
o x86: Fixed determining the operation size when last register is %DX.
o x86: 32-bit only instructions failed, when selecting a 32-bit cpu using
the -m command line option.
o x86: Avoid Illegal Relocation error for calls and jumps in absolute mode.
o std-syntax: Data directives do no longer enforce natural alignment, for
compatibility with GNU-as! Use the -align option to keep the old behaviour.
o std-syntax: '0f' is another allowed float-constant prefix for GNU-as
compatibility.
o std-syntax: .stabs should support escape-characters in its string-field.
o std-syntax: Support progbits and nobits section type arguments for ELF
compatibility.
o mot-syntax: Retain the possibility to use multiple ORG directives and
output a real binary file, as before V1.7e. Only an ORG directive
after a SECTION directive is now relocated within that section.
o mot-syntax: Added IFMI (=IFLT) and IFPL (=IFGE).
o mot-syntax: Fixed problems when macro arguments are followed by blanks
and the -spaces option is given.
o mot-syntax: New directives inline and einline, to define an isolated block
for local labels.
o mot-syntax: New directives ifmacrod and ifmacrond to conditionally assemble
a block when a macro is defined or undefined (compatible with the same
directives on the Barfly assembler).
o madmac-syntax: Make ORG behave like in mot-syntax.
o vobj-output: The byte-offset to a relocation now always defines the
base for all relocation calculations (e.g. PC-relative).
o vobj-output: For little-endian the bit position in a byte of a reloc-field
is now counted from right to left. You will need at least vlink V0.15b to
link more complex little-endian relocations (e.g. ARM).
o hunk-output: -keepempty prevents the assembler from deleting empty sections.
o elf-output: -keepempty prevents the assembler from deleting empty sections.
- 1.7e (12.03.16)
o Ability to print the source line also in output module error messages.
o Current PC symbol in absolute code regions was erroneously relocated to
the section's base address.
o Make sure that labels from absolute code regions are not relocated.
o m68k: Fix for a bug introduced in last version: fmovem list,(An) and
fmovem list,(d,An) were no longer recognized as valid for M68k FPUs.
o PPC: Fixed mtvscr instruction, which uses the vB field instead of vD.
o ARM: Accept the new SVC mnemonic as an alias for SWI.
o ARM: Fixed macros. Previously only three characters for a macro name were
allowed. Qualifiers are not allowed on ARM macros.
o std-syntax: Permit the '$' as start character and in the middle of a
label (note: a terminating '$' still defines a local label!).
o std-syntax: A missing last macro argument no longer causes an error
message, but is replaced by a default value (when defined) or an empty
string.
o std-syntax: .org directive defines the offset from the current section's
start address when it appears within a section (GNU-as compatibility).
o mot-syntax: ORG directive can be used within any normal section to define
a block of code relocated to an absolute start address.
o mot-syntax: Numeric absolute symbol expansion is supported for macro
parameters of the form \<symbol> or \<$symbol> (hexadecimal value).
o madmac-syntax: Removed the -rorg option, which is the default behaviour
now.
o oldstyle-syntax: The special macro argument \@ is replaced by an
underscore, followed by a six-digit number again, as before V1.7c.
o tos-output: Check for overflows in relocation fields.
o aout-output: Fixed a crash since last version, when embedding absolute
code regions in a section.
- 1.7d (05.10.15)
o New option -depend to print the list of file dependencies for the
assembled source with the given options and conditions.
o New output module for Motorola srecord format, contributed by Joseph
Zatarski. It can be selected with the -Fsrec option.
o m68k: Replace all short-branches, except BSR, which have a zero distance
by a no-operation instruction. Now we use LEA (A6),A6 for no operation
as NOP has a special meaning for certain 68k models.
o m68k: A zero width in bitfield instructions is accepted. It is equivalent
to a width of 32 and used in some sources.
o m68k: New option -gas enables GNU-as specific mnemonics and additions.
68020/68881 is selected by default.
o m68k: New option -sgs to enable & as an additional immediate operand
prefix (SGS assembler).
o m68k: New option -no-fpu to ignore any FPU directives or options.
o m68k: Support immediate register list masks also for FMOVEM.
o m68k: jbra/jbsr are always converted to branches, when the selected CPU
supports 32-bit branches (gas compatibility).
o tr3200: Add data relocations. Fix PC-relative RJMP instruction.
o ARM: Accept an additional operand after an immediate constant to specify
the even rotate-count (0-30). Usually vasm does that automatically.
o mot-syntax: The symbol __LINE__ always contains the current line number.
o std-syntax: Add .even directive.
o std-syntax: Besides 0f also allow 0r as a floating point constant prefix.
o aout-output: Fixed common symbols.
o aout-output: Implemented stabs support.
- 1.7c (15.05.15)
o Complete redesign of the internal macro handling, which gives each
syntax module more possibilities for individual macro features.
o New syntax module: madmac, which tries to be compatible to the Atari
Madmac assembler syntax, used for 6502, 68000 and Jaguar RISC targets.
o New CPU backend for the virtual Trillek TR3200 CPU (known from 0x10c).
o Allow arithmetic operations with more than one label from absolute ORG
sections (like label1|label2). Support also depends on cpu backend and
should work at least in data for most backends now.
o Stop parsing a file at CP/M EOF character (0x1a), as seen in some sources.
o No longer allow redefining a symbol, defined by an equ/equiv directive,
with a set-directive.
o Fixed problems with escape character sequences in strings inside a
macro definition, when syntax module supports escape characters.
o m68k: In MULx.L Dn,Dl the Dh bits (bit 0-2, 2nd word) are undefined. Most
assemblers set Dh=Dl, similar to Dr=Dq in DIVx.L. So should we.
o m68k: New option -regsymredef allows redefinition of register symbols
while parsing the source.
o m68k: Fixed "OPT 0" in PhxAss compatibility mode (broken since V1.7),
which made all branches 16-bit size.
o m68k: Register lists defined by REG, EQURL, FREQ, FEQURL must not be
redefinable.
o PPC: Support for floating point data constants.
o jagrisc: Added absolute and relative 5 bit source operand relocations.
Fixed relative JR relocations.
o jagrisc: Fixed (R14+Rn) addressing mode.
o jagrisc: New JRISC specific directives: GPU, DSP, REGEQU, EQUR, REGUNDEF,
EQURUNDEF, CCDEF, CCUNDEF (madmac/smac compatible).
o z80: Fixed RST (again), when referencing labels from an absolute section.
o mot-syntax: New option -allmp makes all 36 macro arguments available, also
in standard vasm mode (no PhxAss or Devpac compatibility required).
o mot-syntax: New option -warncomm to warn about blanks in the operand
field, which may start an unwanted comment.
o mot-syntax: CNOP fills the padding words with NOP instructions in an
M68k code section.
o mot-syntax: The optional third argument of the SECTION directive may be
written as a numerical constant to define any memory attributes (hunk
format only).
o mot-syntax: New directive WEAK, to declare a symbol having weak binding,
for those output formats which support it.
o mot-syntax: New directive COMMON, to create a common symbol.
o mot-syntax: Made PRINTT and PRINTV directives more compatible to AsmOne.
o mot-syntax: Fixed RS.x without operand (same as RS.x 0).
o std-syntax: The standard GNU-as macro syntax, with named arguments,
default values and qualifiers, is supported now. Macro names became
case-insensitive.
o std-syntax: Directives are case-insensitive.
o std-syntax: New optional, non-standard, third argument for the .section
directive defines target specific memory attributes (currently hunk
format only).
o std-syntax: .b/.w/.l extensions do not belong to an identifier, when
the CPU is M68k.
o std-syntax: Directives to define floating point constants in data:
.float, .single and .double.
o std-syntax: .equiv directive. Works like .set and .equ, but cannot be
redefined.
o aout-output: Absolute ORG sections are appended to a .text section.
Support for Jaguar, which uses MID 0.
o bin-output: Sort sections by their start address before writing them.
o hunk-output: Align M68k code sections with NOP instructions.
o hunk-output: Supports any memory attributes in objects and executables.
o hunk-output: Warn about unsupported weak symbols.
o hunk-output: Fixed illegal memory access with unreferenced common symbols.
o hunk-output: Automatically generate short relocation hunks (HUNK_DREL32)
in executables, when possible and not forbidden by a -kick1hunks option.
o hunk-output: Support for 32-bit PC-relative relocations in executables
(available since AmigaOS3.0).
o tos-ouput: Warn about unsupported weak symbols.
o elf-output: Add support for jagrisc (EM_JAGRISC = 0x9004). This is an
unofficial definition done by the Jaguar scene.
o aout-output: For M68k use the SUN010 or SUN020 MID, depending on the
highest cpu type being used in the source.
- 1.7b (28.12.14)
o Fixed stack overflow and crash when using recursively defined symbols.
Bug was present since introducing new 128-bit and float expressions in 1.7.
o Issue a warning when a symbol was declared as external, but nowhere
referenced in the source.
o m68k: Do not optimize MOVEM to MOVEA or MOVE when predecrement or
postincrement addressing mode is used with a register from the list.
o m68k: The Devpac directive OPT X (xdebug) works now as expected for
hunk-format object files and for TOS executables.
o m68k: In Devpac-compatibility mode (-devpac) the __LK symbol is predefined
and reflects the output file type: 0 = Atari executable, 3 = Amiga object,
4 = Amiga executable, 99 = all others which are unknown to Devpac.
o m68k: MOVEM #list,-(An) must not reverse the bit mask automatically, but
expect an already reversed one.
o m68k: BTST #n,#m is illegal.
o m68k: LEA (d32,An),Am translation to MOVE.L/ADD.L stopped working with
V1.6c. Fixed again.
o ARM: TEQP, TSTP, CMNP and CMPP were missing for AA2.
o ARM: Fixed recognition of addressing mode and condition codes with
instructions written in upper case.
o 6502: New option -c02 to enable 65C02 instructions.
o mot-syntax: In PhxAss- and Devpac-compatibility mode only the directives
which are known by the emulated assembler are supported.
o mot-syntax: RS, SO and FO offset directives use an aligned offset in
Devpac-compatibility mode or when the -align option is given.
o std-syntax: The optional third argument of .balign/.p2align/.align is now
really supported and defines a maximum number of padding bytes.
o std-syntax: New directives: .balignw, .balignl, .p2alignw, .p2alignl,
.zero, .swbeg.
o std-syntax: .word should rather define 16-bit than 32-bit constants.
o std-syntax: .local followed by .comm should be the same as .lcomm.
o oldstyle-syntax: Fixed recognizion of .equ/.eq/.set/.mac/.macro with
-dotdir option.
o hunk-output: New option -linedebug automatically generates a LINE DEBUG
hunk for the input source.
o aout-output: Always generate an external reference to a weak symbol,
even when the symbol is defined.
o elf-output: Always generate an external reference to a weak symbol,
even when the symbol is defined.
- 1.7a (25.08.14)
o Addend for "external_label-current_section_label" PC-relative relocation
was not calculated correctly.
o Do not generate relocations with absolute ORG sections. External
references from such a section are illegal.
o Fixed PC-relative references between absolute ORG sections.
o Defining a macro with the same name as a directive or mnemonic no longer
causes and error, but a warning. Like most other assemblers vasm will
ignore this macro definition.
o New option -unsshift to make right-shift operations unsigned (logical),
depending on the CPU's target address type.
o Fixed some problems caused by signed sizes and section offsets.
o Fixed -x option again. It only printed the first undefined symbol.
o When specifying a listing file with -L <name> the source was not
included. The default is now to include it. Can still be controlled
by list/nolist directives.
o Allow printing of multiple optimization messages for a single source
line (-showopt).
o Fixed infinite loop with huge octal and binary values, which got a decimal
point or exponent.
o Automatically rearrange nodes from "const-symbol-symbol", so that
"symbol-symbol" is evaluated first, as it may yield a constant.
o Fix compiling with pre MSVC 2013 versions (missing strtold()).
o m68k: -opt-fconst, which is enabled in vasm-default mode since 1.6a,
was broken for double to single precision conversions, as it moved
following labels by 4 bytes.
o m68k: -devpac compatibility includes unsigned right-shifts.
o m68k: NEAR CODE from PhxAss is supported and translates all absolute
JMP/JSR with an external symbol into 16-bit PC-relative addressing mode.
o m68k: New option -sc to set small code mode (same as NEAR CODE directive).
o mot-syntax: SECTION with a single argument defaults to a code section,
except when the name is "data" or "bss".
o hunk-output: New option -kick1hunks to use only those hunk types and
u external reference types which have been valid at the time of Kickstart
1.x for compatibility with old assembler sources and old linkers.
o tos-output: A 16-bit aligned section size must also show up in the header.
o tos-output: New option -monst for writing Devpac MonST-compatible
symbols.
- 1.7 (02.07.14)
o Labels in an absolute ORG section have no longer any restrictions
regarding arithmetic and logical operations on them.
o New expression evaluation module. Now also supports floating point and
huge integer (128-bit) expressions in all backends.
o New CPU backend for the Jaguar GPU and DSP RISC processors.