-
Notifications
You must be signed in to change notification settings - Fork 98
/
CHANGELOG
1867 lines (1721 loc) · 106 KB
/
CHANGELOG
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
---------------------------------------------------------------------------------------------------------------
1... WLA GB-Z80/Z80/Z80N/6502/65C02/65CE02/65816/68000/6800/6801/6809/8008/8080/HUC6280/SPC-700/SuperFX History
---------------------------------------------------------------------------------------------------------------
v10.7 (09-Apr-2024) [ALL] Prefixed by a hashtag didn't propagate though nested .MACRO
calls.
[ALL] Listfile creation for library files should now work.
[ALL] If an object file contained only .SECTIONs in ROM
bank X then ROM bank X's allocation info wasn't printed with
-v switch.
v10.6 (19-Nov-2023) [ALL] Conditions (e.g., "(A > 1 || B < 3)") can now be used
everywhere, outside .IFs.
[ALL] It's not any more possible to create labels and
definitions called "_b" and "_f" as they are reserved names.
[ALL] A definition and a label cannot any more share the same
name inside a source file for the sake of clarity.
[ALL] Added -MP for generating phony targets with -M.
[ALL] Added -MF for specifying a file to write the
dependencies to with -M.
[ALL] Added -c for continuing parsing after encountering an
unknown symbol or a mistyped instruction.
[ALL] Added -w for disallowing labels without a colon terminator.
[ALL] Added FILTERSIZE and FREADSIZE to .INCBIN.
[ALL] Namespace was added in some instances to a local label.
[ALL] Removed namespace propagation to unnamespaced .MACROs.
[ALL] Labels generated by a .MACRO inside an .INCLUDEd and
namespaced file have now namespace added to them.
[ALL] Added .WHILE.
[ALL] Added .CONTINUE and .BREAK that work with
.REPEAT/.REPT/.WHILE.
[ALL] Changed tmpfile creation on WIN32.
[ALL] It's now possible to put multiple instructions on the
the same line by separating them with " \ " (whitespace here
is important).
[ALL] WLA would crash calculating A-B if A was function(L)
where L is a label.
[ALL] .STRINGMAPTABLE uses now .INCDIR.
[ALL] .STRINGMAP and .STRINGMAPTABLE handle now special
characters like "\n" properly.
[ALL] WLA assembles now "WLAl" object files.
[ALL] The assembler has now a limited ability to find the
address of a label if the label is outside .SECTIONs or
inside FORCE and OVERWRITE .SECTIONs and the label is
defined lexically before it is referenced.
[ALL] Added -p (and -SX and -SY) for pausing the assembler
after a screen full of text has been printed to output.
[Z80] Added BASEADDRESS to .SMSHEADER.
[Z8N] Added support for Z80N.
v10.5 (23-Jun-2023) [ALL] .DSB, .DSW, .DSL and .DSD produced only one pending
calculation struct when encountered a pending calculation
thus the result was wrong.
[ALL] Added .ALIGN.
[ALL] Added .ASSERT.
[ALL] Added BANK, SLOT, BASE, ORG and ORGA to .SECTION.
[ALL] Added BASE to .RAMSECTION.
[ALL] Added a new .SECTION type: SEMISUPERFREE.
[ALL] Added AUTOPRIORITY to .SECTION.
[ALL] Added ISOLATED to .INCLUDE.
[ALL] References inside a .MACRO inside a namespaced file
have now the namespace added to them.
[ALL] .MACRO's named ARGS now only replace existing
definitions while the .MACRO is running.
[68K] Added support for MC68000.
[68K] Added .COMPUTESMDCHECKSUM and .SMDHEADER.
[658] Added support for "MVN $xxyy" and "MVP $xxyy".
v10.4 (24-Nov-2022) [ALL] If a value is .DEFINEd later in the same source file
than used in a pending calculation, WLA can now solve
the pending calculation before exporting it to WLALINK.
[ALL] Added .SEEDRANDOM (seeds random number generator
with current time -> random).
[ALL] Added built-in functions min(a,b), max(a,b),
random(min,max), sqrt(a), abs(a), cos(a), sin(a), tan(a),
acos(a), asin(a), atan(a), atan2(a,b), cosh(a), sinh(a),
tanh(a), log(a), log10(a), pow(a,b), sign(a) and
clamp(value,min,max).
[ALL] When a built-in function was called with a negative
sign the sign was ignored sometimes.
[ALL] Floating point values can be given to a .MACRO as
arguments and accessed via \1 etc., they are not rounded to
integers any more. Previously only named args would work
without rounding.
[ALL] When using a .FUNCTION the result was rounded to
an integer - not any more.
[ALL] .FUNCTION body can now be a single argument.
[ALL] Built-in (and .FUNCTION) arguments can now be put on
multiple lines.
[ALL] We now use ANSI C's tmpfile() to create tmp files.
This should allow multiple concurrent instances of WLA to
run in the same directory at the same time.
[ALL] When using -M, if you specify -o or -l later on the
command line you can output an object or a library file
at the same time. Disable file generation with -t.
[ALL] A calculation can be split into multiple lines if the
last symbol on the line is a '+', '-', '*'. etc.
[ALL] Unnamed .STRUCTs inside other .STRUCTs don't generate
_paddingof_* definitions any more.
[ALL] Pending calculations work now as macro arguments.
[ALL] Fixed INSTANCEOF in .ENUM when .STRUCT used SIZE
(WLA doesn't generate bytes in that case any more).
[ALL] Negating pending calculations inside parentheses inside
pending calculations ignored the sign.
[ALL] Negating calculations inside parentheses should now
work in every case.
[ALL] Dotted .INSTANCEOF works now in .ENUMs.
v10.3 (02-Oct-2022) [ALL] Improved parser for .HEX, and added BLOCK to .HEX.
[ALL] "\\" should now work inside strings.
[ALL] .MACRO calling another .MACRO, inside a namespaced
file, should now work.
[ALL] .MACRO arguments can now be put inside parentheses
when calling a .MACRO (e.g., "MyMacro(1, 2)").
[ALL] defined() can now process strings with substitution.
[ALL] Added an alternative way of defining a .MACRO
(e.g., ".macro SUM(value1,value2) isolated").
[ALL] Added .FUNCTION (for things like ".DB SUM(1, 2)").
[ALL] Multibyte .DEFINEs (e.g., "MB = $01 $00 $02") were
broken in v10.2.
[ALL] Multibyte .DEFINEs work now better inside other
multibyte .DEFINEs.
[ALL] Calculations like ">-VAR" and "2--1" work now,
only ">(-VAR)" and "2-(-1)" used to work before.
[ALL] Added -v1 and -v2 (shorter verbose levels).
[ALL] Changed the license to GPL-2.0-or-later.
[ALL] Parameters (SKIP, READ, SWAP, FSIZE and FILTER)
to .INCBIN can now be given in any order.
[ALL] Parameters (ONCE and NAMESPACE) to .INCLUDE can
now be given in any order.
[ALL] Parameters (NAME and SIZE) to .ARRAYDEFINE can
now be given in any order.
[ALL] Negative READ parameter to .INCBIN means that
many bytes are not read from the end of the file.
[ALL] WLA's ability to calculate A-B would break the
execution of the app if A was a definition.
[ALL] Added optional keywords COUNT, MIN and MAX to
.DBRND and .DWRND.
[GB ] Sometimes WLA-GB would generate unused pending
calculations when parsing the code, and namespaces would
not work in them thus breaking the linking phase.
[SPC] Structs should work now better with SPC-700's
instructions.
[GB ] Added flag aliases (C -> LSS and LST, NC -> GTE
and GEQ, NZ -> NEQ, Z -> EQU) to CALL, JP, JR and RET.
[Z80] Added flag aliases (C -> LSS and LST, M -> NEG,
NC -> GTE and GEQ, NZ -> NEQ, P -> POS, Z -> EQU) to
CALL, JP, JR and RET.
v10.2 (24-Jun-2022) [ALL] Added SIZE to .RAMSECTION.
[ALL] Added -d to disable WLA's ability to calculate A-B
where A and B are labels.
[ALL] If SIZE is used with a .SECTION or .RAMSECTION and
the section doesn't fit into it, we now issue an error
instead of a warning.
[ALL] .FOPEN should now work with makefile generation.
[ALL] WLA's summary is now printed to stdout instead of
stderr.
[ALL] Added support for UTF-8 source files (meaning labels,
macro names, definitions, etc. can all be UTF-8).
[ALL] When .ROMBANKMAP had ROM banks of different sizes,
the verbose summary's ROM information was not fully working.
[ALL] Memory overwrite messages should now have working
line numbers in all cases.
[ALL] WLA assembles now "WLAI" library files and "WLAk"
object files.
[ALL] Labels without ':' can now be used right on the next
line after a .MACRO call.
[ALL] Added keywords ISOLATED, ISOLATELOCAL and ISOLATEUNNAMED
to .MACRO. These make the local and unnamed labels
inside a .MACRO to stay inside and not affect the
outside world. The same goes for child label stack.
[ALL] We now don't do substitution in code that is skipped
using .IFs.
[ALL] Added SIZE to .DSTRUCT and .STRUCT and to INSTANCEOF
in .RAMSECTION and .ENUM.
[ALL] If padding is put to a .DSTRUCT or INSTANCEOF in
.RAMSECTION or .ENUM, _paddingof_* definition is created
unless -s is given.
[ALL] Added optional COUNT to INSTANCEOF in .RAMSECTION and
.ENUM.
[ALL] Added NOLABELS to .DSTRUCT.
[ALL] Added round(), floor() and ceil().
[Z80] Added "EX HL,DE" (an alias for "EX DE,HL").
[Z80] Added "EX HL,(SP)" (an alias for "EX (SP),HL").
[Z80] Added "EX IX,(SP)" (an alias for "EX (SP),IX").
[Z80] Added "EX IY,(SP)" (an alias for "EX (SP),IY").
[658] WDM takes now a byte (i.e., "WDM $12").
[651] Removed wla-6510 as wla-6502 can be used for 6510.
[650] Added undocumented opcodes to wla-6502.
[GB ] It's now possible to set the number of ROM banks to
any value larger than 0.
[GB ] WARNING: .ROMBANKS / .ROMBANKMAP don't write the ROM
size to $0148 any more, use .ROMSIZE for that.
[GB ] Added ROMSIZE to .GBHEADER.
v10.1 (19-Feb-2022) [ALL] Arguments to .SECTION and .RAMSECTION can be now
given in any order, only the first argument must be the
section's name.
[ALL] A definition can be substituted with its value in
labels (e.g., label_{COUNTER}) and in quoted strings
(e.g., {"ID={COUNTER}"}). Note that also label_{COUNTER+1}
works.
[ALL] Strings can be split to multiple lines using '\'.
[ALL] Added WINDOW and BITWINDOW to .SECTION and .RAMSECTION.
These can be used to limit where .SECTIONs and
.RAMSECTIONs are placed.
[ALL] The assembler is now able to calculate A-B where
A and B are labels in the same section. Only the linker
used to be able to do this.
[ALL] WLA assembles now "WLAG" library files and "WLAi"
object files.
[ALL] Fixed multiple memory leaks. Should now work better
on an Amiga.
[ALL] .STRINGMAPTABLE works now with makefile generation.
[ALL] We don't try to process special characters in
filenames in .INCDIR, .INCLUDE, .INCBIN, .FOPEN,
.BACKGROUND and .STRINGMAPTABLE.
[ALL] .IFs like ".if MINUS_ONE == -1" (negative value on
the right side) didn't use to work.
[ALL] "JR -" (similar direct jumps to local labels) should
work again.
[ALL] Sharing a namespace between sections should not make
WLA to crash at exit.
[ALL] MAX_NAME_LENGTH is now 2047 instead of 255. This
change allows longer strings/labels (NOTE: On Amiga
and MSDOS the limit is 511, due to limited stack).
[ALL] Turned some huge stack allocations into heap
allocations.
[ALL] \@ should now work in .IFs.
[ALL] __label__ should now work better in calculations.
[658] The maximum SRAMSIZE in SNES ROM header is now 7
instead of 3.
[SFX] Fixed "MOVE (xx),Rn" macro instruction parsing. And
even currently WLA cannot create a SMS instruction if
WLA postpones the argument's handling to WLALINK...
[Z80] Added CHECKSUMSIZE and FORCECHECKSUM to .SMSHEADER.
v10.0 (21-Jun-2021) [ALL] WARNING: Precedence of operators in calculations
that WLA calculates is now more fine grained and C like.
[ALL] WARNING: .ASC didn't map \0 and \x inside a string,
but now all bytes given to .ASC are mapped. Consider
using .ASCSTR if you don't want to map special
characters.
[ALL] All strings (inside "") now support \n, \r, \t, \0,
\x, \< and \>.
[ALL] '\n', '\r', '\t' and '\0' are now supported.
[ALL] ASC() has now wider input support: e.g., ASC('\n')
and ASC($D) work.
[ALL] It's possible to feed a definition's name to a
.MACRO by prefixing it with '&', e.g. &definition.
[ALL] Use ?1 inside a .MACRO to get the value of the
definition given as argument 1 (and prefixed with '&').
[ALL] Added support for nameless INSTANCEOFs in
.ENUMs, .STRUCTs and .RAMSECTIONs.
[ALL] Computations with 32-bit binary values with all 32
bits defined work now.
[ALL] It's possible to use binary values in command line
definitions (e.g., -D VALUE1=%10101010).
[ALL] Hexadecimal values can now also be given as 0xABCD,
binary values as 0b11110000.
[ALL] .FAIL defaults now to exit code 1, and takes an
optional exit code (e.g., ".FAIL 2").
[ALL] It's now possible to create, read and write into own
arrays using .ARRAYDEFINE/.ARRAYDEF/.ARRAYIN/.ARRAYOUT.
[ALL] Added .ARRAYDB, .ARRAYDW, .ARRAYDL and .ARRAYDD.
[ALL] Added .BITS (like .DB but for bits) and .ENDBITS.
[ALL] WLA assembles now "WLAF" library files and "WLAg"
object files.
[ALL] Added .FILTER (same as .DBM, but doesn't define
any bytes).
[ALL] Pending calculations inside bankheader sections
should work again.
[ALL] If an empty .SECTION/.RAMSECTION uses keyword KEEP
it is no longer discarded.
[ALL] The source section of APPENDTO operation is now
linked with its ID, not name, so multiple sources
with the same name work now.
[ALL] defined(DEF_A) can be used in conditions to ask
if DEF_A is defined.
[ALL] exists("file.bin") can be used in conditions to
ask if "file.bin" exists.
[ALL] .IF takes now complex conditions, e.g.,
".IF !defined(ZERO) && defined(ONE) && (ONE > 0)" works.
[ALL] Added .ELIF.
[ALL] Added ARG_IMMEDIATE to the types of an argument
of a .MACRO (asked using e.g., '\?1').
[ALL] Added a flag "-k" that forces WLA to keep all
empty sections.
[ALL] Added AFTER keyword to .SECTION and .RAMSECTION,
which makes sections to be placed OFFSET bytes apart.
[ALL] Added .FTELL (get the file position).
[ALL] Added .FSEEK (set the file position).
[ALL] -v prints now more information about the RAM/ROM
usage.
[ALL] Data generated by .MACROs and .REPEATs is now
visible in listfiles.
[ALL] Added support for LOBYTE() (get the low byte, bits
0-7), HIBYTE() (get the high byte, bits 8-15), LOWORD()
(get the low word, bits 0-15), HIWORD() (get the high
word, bits 16-31), BANKBYTE() (get the bank byte,
bits 16-23) and BANK() (get the bank).
[ALL] Unix file paths in assembly files (.INCDIR...)
should now work Amiga.
[SFX] Added Super FX support.
[GB ] Added alias "CPL A" (of "CPL").
[GB ] Added support for "STOP $01" - "STOP" with extra
byte.
[Z80] Added SL1 (alias for SLL).
[Z80] Added "RES 0,(IX+d),A", "RES 0,(IY+d),A",
"RL (IX+d),A", "RL (IY+d),A", "RLC (IX+d),A",
"RLC (IY+d),A", "RR (IX+d),A", "RR (IY+d),A",
"RRC (IX+d),A", "RRC (IY+d),A", "SET 0,(IX+d),A",
"SET 0,(IY+d),A", "SLA (IX+d),A", "SLA (IY+d)",A",
"SLL (IX+d),A", "SLL (IY+d),A", "SRA (IX+d),A",
"SRA (IY+d),A", "SRL (IX+d),A", "SRL (IY+d),A" and
variants.
v9.12 (20-Mar-2021) [ALL] Added support for ADDR and FARADDR to .TABLE.
[ALL] Added .STRINGMAP and .STRINGMAPTABLE.
[ALL] Multiple include directories (via multiple -I)
are now supported.
[ALL] Use LABEL_{\@+1} instead of LABEL_\@+1
inside a macro, if you want to reference the next
label instead of the label's address + 1.
[ALL] Missing .INCBIN/.INCLUDE files don't break makefile
rules generation (-M) any more.
[ALL] Fixed .DBM, .DWM and .DLM, and \2 in .DWM and .DWL.
[ALL] .MACRO string expansion (e.g., "\1") now uses parsed
arguments instead of just copying the plain text of
the argument.
[ALL] Object and library files support more than 256
source file IDs.
[ALL] WLA assembles now "WLAA" library files and "WLAb"
object files.
[ALL] Fixed listfile writer, now opcode data stays better
on the lines without spillovers. Affects 65816, Z80,
SPC-700, 65C02, 65CE02 and HuC6280.
[ALL] Added support for ASC('?') (.ASC for individual
characters), e.g., "LD A, ASC('A')".
[ALL] Source code line can be split to multiple lines
using '\' between elements, in many places.
[ALL] .FAIL takes now an optional string.
[ALL] .DL, .DSL, .DLM etc. work also on other targets
than 65816.
[ALL] Added support for .DD, .DSD, .DDM, the same as
.DB etc., but double word (32-bit).
[ALL] Added a flag "-h" to make all label references 16-bit
by default (size hints still work).
[ALL] Added support for .HEX (yet another way of
defining bytes).
[ALL] Added support for __label__ (last defined parent
label).
[ALL] Added .ASCSTR that maps (like .ASC) only supplied
strings, not loose bytes.
[658] SECTIONEND labels that overflowed from a bank
had wrong address in symbol files.
[Z80] Fixed the broken (broke in v9.11) regioncode
in .SMSHEADER.
[SPC] It's now possible to use e.g., defines with
mnemonics like BBC and SET1, not just raw numbers.
[SPC] In many mnemonics where a dot was required you can
now also use commas instead (e.g., BBC and SET1).
v9.11 (17-Jul-2020) [ALL] Stack calculator's string checker handled only
63 characters long strings.
[ALL] A directive with the first argument being
negative wasn't parsed properly.
[ALL] Added an alias for .INCLUDE (.INC).
[ALL] Added RETURNORG to .RAMSECTION.
[ALL] Using a .RAMSECTION without RETURNORG doesn't mess
up the .ORG any more.
[ALL] Macro names can now start with a '.'.
[ALL] Getting the ROM bank number using ':' can now be
used also with ROM addresses and their calculations.
[ALL] When using .MACROs, use '\.' to get the macro's name.
[ALL] SLOTs can now be given names.
[ALL] SLOTs can now be referenced by their name, ID
or address.
[ALL] .PRINT & .PRINTT can now print address labels.
[ALL] Simple additions and subtractions can be used with
"\@" in macros when creating/referencing a label.
[ALL] Plain "OFFSET = 10" is now also accepted as
a define. No .DEFINE/.DEF is required.
[ALL] .INCDIR, .INCBIN, .FOPEN, .INCLUDE, .OUTNAME,
.IFEXISTS and .BACKGROUND now also take strings
without quotation marks.
[ALL] Integrated https://github.com/mpaland/printf's
snprintf(), changed all sprintf() calls to snprintf().
[ALL] It's possible to skip bytes in .RAMSECTIONs using
"." as the label.
[ALL] Added support for FORCE, SEMIFREE and SEMISUBFREE
to .RAMSECTION.
[ALL] Added OFFSET to .SECTION and .RAMSECTION.
[ALL] The type of the argument for a .MACRO can now be
asked in an .IF using e.g., '\?1'.
[ALL] Added a flag "-s" to disable _sizeof_* definition
creation.
[ALL] .DSTRUCT can now create child labels (e.g.,
".DSTRUCT @Instance INSTANCEOF MyStruct VALUES").
[ALL] WLA assembles now "WLA9" library files and "WLAa"
object files.
[ALL] .ENDST should be case insensitive in all cases.
[ALL] .INCLUDE/.INC can now be used inside .MACROs.
[ALL] .INCLUDE/.INC can now be given the filename in
pieces, e.g. ".INC ROOTDIR, SUBDIR, "filename.s"".
[ALL] Added ONCE to .INCLUDE/.INC.
[ALL] Macro calls can now be made from the very beginning
of a new line (where labels are).
[ALL] Added NAMESPACE to .INCLUDE/.INC.
[ALL] Improved WLA's string.length parsing capabilities.
[ALL] Sections can avoid WLALINK's discard mechanism
with a keyword "KEEP" ('!' at the beginning of a
.SECTION's name works still also).
[ALL] Un-named labels (like "-", "+" and "__") don't need
to be defined at the very beginning of the line either.
[ALL] Removed some redundant definitions from .RAMSECTION
(.STRUCT) INSTANCEOF when the number of instances > 1.
[ALL] Added support for optional STARTFROM to .RAMSECTION
(.STRUCT) INSTANCEOF (starting index other than 1).
[Z80] Removed warnings for "JP (HL)", "JP (IX)" and
"JP (IY)".
[Z80] Added ROMSIZE to .SMSHEADER. Fixed automatic
ROMSIZE calculation.
[6CE] Added support for CSG65CE02.
[65C] Added support for W65C02S's "WAI" and "STP".
[658] Added support for WDC standard mnemonics via .WDC
and .NOWDC.
[658] Added support for .DLM (24-bit version of .DBM).
v9.10 (22-Dec-2019) [808] Added support for I8080.
[658] Fixed SNES ROM checksum calculation.
[658] Fixed 24-bit non-label symbols in NO$SNES symbol
file generator.
[Z80] Added aliases for ADC, ADD, AND, CP, OR, SBC,
SUB and XOR.
[Z80] Added aliases "LD PC,HL", "LD PC,IX",
"LD PC,IY", "JP HL", "JP IX" and "JP IY".
[Z80] WLA will now issue a warning if "JP (HL)",
"JP (IX)" or "JP (IY)" are used as they are
semantically wrong.
[Z80] Added register aliases HX (IXH), LX (IXL),
HY (IYH) and LY (IYL).
[GB ] Added aliases for ADC, ADD, AND, CP, OR, SBC,
SUB and XOR.
[GB ] Added alias "JP (HL)", but WLA will also issue a
warning if it's used as it's semantically wrong.
[ALL] Unary XOR (e.g., "~$FF") is now calculated as NOT.
[ALL] Added support for 24-bit and 32-bit XORs in
calculations.
[ALL] RST can now be used with a label/pending calculation.
[ALL] ".DEFINE INDEX \@" inside a macro works now.
[ALL] Added a fflush() to print_error() - now all error
messages should be printed on screen no matter what.
[ALL] .BLOCK name can now contain spaces.
[ALL] WLA assembles now "WLA6" library files and "WLAW"
object files.
v9.9 (15-Aug-2019) [ALL] Added unions: .UNION (and .NEXTU and .ENDU).
[ALL] Added a new syntax to .DSTRUCT (old works, too).
[ALL] Changed the way ".ENUM xyz DESC" works.
[ALL] .ROW and .DATA should now work better with 16-bit
and 24-bit values.
[ALL] Defines with negative values are now parsed better.
[ALL] .BLOCK (and .ENDB) prints the block size once again.
[ALL] Added support for C++ style comments (//).
[ALL] WLA assembles now "WLA4" library files and "WLAV"
object files.
[ALL] References to a pending computation from inside a
define from inside a pending computation should work now.
[ALL] WLA can now be given string definitions from the
command line.
[680] Added support for MC6800.
[680] Added support for MC6801.
[680] Added support for MC6809.
[800] Added support for I8008.
[658] 24-bit addresses of .RAMSECTION labels should work
now when using .LOROM / .HIROM. / .EXHIROM.
[GB ] Fixed Pocket Camera cartridge type, added support
for 64Mbit ROM and 512kbit RAM types.
v9.8 (21-Jun-2019) [ALL] Deprecated and removed section's size giving inside
section's name string.
[ALL] Getting bank number with :CADDR works again.
[ALL] WLA assembles now "WLA3" library files and "WLAU"
object files.
[ALL] .REPEATs, .DBs, .DWs, .DLs and macro calls don't
mess up listfiles any more.
[ALL] Added support for prioritizing sections when
placing them to the output ROM/PRG.
[ALL] The _sizeof_[label]s for labels that are followed by
a dotted .DSB etc. are now calculated correctly.
[ALL] The maximum allowed number of digits for floats is
now 24 instead of the old 8.
[ALL] _sizeof_[label]s are now calculated correctly
for .STRUCTs in .RAMSECTIONs.
[ALL] WLA's -x flag now creates SECTIONSTART_[section name]
and SECTIONEND_[section name] labels for each section.
[ALL] The assembler and the linker now display examples
about how to run them when run with incorrect parameters.
[ALL] .RAMSECTIONs can now be used inside libraries
but BANK and SLOT must be defined for the RAMSECTIONs
under [ramsections] in WLALINK's linkfile.
[ALL] WLA (WLALINK did this already) assumes that there
are 256 RAM banks for each SLOT. The number of ROM
banks doesn't affect the number of RAM banks any more.
[ALL] Added APPENDTO to .RAMSECTIONs.
[ALL] Added .TABLE, .ROW and .DATA - an alternative
to .DB, .DW and .DL.
[ALL] When allocating a new unknown reference, we'll set
its base to 0 instead of not initializing base at all.
[ALL] When inserting padding to a section (for example
for an unsolved 8-bit reference) we now set the padding
to be $CD instead of letting it be uninitialized.
[ALL] References from bank header sections are now found
when we discard unreferenced sections.
[ALL] Fix buffer overflow for \xXX strings.
[ALL] Fixed a possible crash bug when printing opcodes
in DEBUG executable.
[ALL] Allow .BACKGROUND file to be smaller than the
output ROM.
[ALL] Fixed a couple possible buffer overflows.
[ALL] Fixed CRC calculating on some 64-bit platforms.
[ALL] Macros rounded all floating point arguments to
integers - not any more.
[ALL] Added support for "string".length.
[ALL] The documentation is now ReadTheDocs.org compatible.
[ALL] Running the assembler/linker without arguments shows
now also the version's date.
[ALL] Added -A to WLALINK - Add address-to-line mapping
data to WLA symbol file.
[ALL] WLA and WLALINK give now more information about the
cause when a memory overwrite/overflow occurs.
[ALL] Added .ADDR (alias of .DW).
[ALL] Updated the dotted to-be-skipped directives list
in .ENUM and .RAMSECTION to contain missing items.
[ALL] .DEFINE now supports keyword EXPORT (auto export).
[ALL] Added .PRINT - a combination and more usable version
of .PRINTT and .PRINTV.
[ALL] .PRINTV's HEX/DEC are optional. Default is DEC.
[ALL] Added .ENUMID - creates definitions with an auto-
incrementing value. Can autoexport as well.
[GB ] Added support for .VERSION (Mask ROM version number).
[GB ] Fixed the handling of RAMSIZE inside of .GBHEADER.
[GB ] New licensee code is set to $0000 if old licensee
code is used.
[GB ] Added VERSION ($014C) to .GBHEADER.
[GB ] Added the following mnemonic aliases:
- LDH A,(C) --> LD A,($FF00+C)
- LDH (C),A --> LD ($FF00+C),A
[658] Added .DSL.
[658] Added .FARADDR (alias of .DL).
[658] Added support for DL/LONG/DSL to .STRUCT and
.RAMSECTION.
[658] Added support for .EXHIROM.
[658] MVN and MVP had source and destination in wrong
order in the output binary.
[SPC] Fixed a typo, RET1 is now RETI.
[SPC] Fixed a typo, "AND1 mem.bit, C" ($CA) is now
"MOV1 mem.bit, C"
[SPC] Fixed AND1, EOR1, MOV1, NOT1 and OR1 (used to take
two 8-bit arguments, now 13-bit address and 3-bit value.
[SPC] Fixed many 8-bit PC relative label references to be
direct references.
[Z80] Added shadow register aliases of opcodes that use
registers A, F, BC, DE and HL. For example, "AND A'"
assembles to the same (0xA7) as "AND A". The aliases
are meant for programmers who want to explicitly show
when they are using the shadow registers.
v9.7 (17-Apr-2018) [ALL] We now use CMake instead of plain Makefiles.
[ALL] Added INSTANCEOF support to .STRUCT.
[ALL] Removed DEBUG opcode from GB-Z80.
[ALL] WLALINK now reserves the bytes the checksummer uses
if WLA is used to calculate a checksum.
[ALL] Added ALIGN to .RAMSECTIONs.
[ALL] .RAMSECTIONs now use the BANK when placing sections.
[ALL] .BLOCK needs to be now terminated with .ENDB.
[ALL] Fixed some typos in error messages.
[ALL] Added a directory called "bug_exhibition" for
bug reports.
[ALL] When parsing "\1.w" the parser now associates the
".w" part with the "\1" part.
[ALL] Recursive macro calls with recursive argument
references should work now.
[ALL] .ASC can now map also byte data.
[ALL] Rewrote the macro argument expander.
[ALL] Fixed .INCDIR/.INCBIN cache bug.
[ALL] Added support for -I [include directory].
[ALL] Added ASCII commands to strings.
[ALL] Renamed .SECTION IDENTIFIER to NAMESPACE.
[ALL] Added support for local labels with @ prefix.
[ALL] "historical" contains now old. depcerated files.
[ALL] Updated WLA/WLALINK argument parser.
[ALL] Sphnix is now used to generate the documents.
[ALL] Various bug, crash and error message fixes.
[ALL] Labels can now be 255 characters long instead of 63.
[ALL] Various fixes to negative range for 8-bit two's
complement.
[ALL] Power operator supports fractional values.
[ALL] Expressions are allowed to be outside 16bit range.
[ALL] Added support for _sizeof_[label] automatic
definitions to WLALINK, these measure the distance
between two consecutive labels in bytes.
[ALL] Unreferenced section discarding now handles also
RAM sections.
[ALL] It's possible to append to a section using APPENDTO.
[ALL] .IFDEFs can be used in .ENUMs and .RAMSECTIONs.
[ALL] .BASE is now universal, not just 65816 specific.
[ALL] Speeded up label handling in WLALINK.
[Z80] Added .SMSHEADER.
[Z80] Added support for "SUB IXH" and "SUB IXL", and
kept the old aliases "SUB A, IXH" and "SUB A, IXL".
[Z80] Fixed .SDSCTAG parsing.
[658] Added support for .DL.
[GB ] Added support for .COUNTRYCODE.
[GB ] Added support for .GBHEADER.
[GB ] NO$GMB symbol files are now BGB (emulator)
compatible.
[GB ] Added support for .NINTENDOLOGO.
[GB ] Added DESTINATIONCODE as an alias for
COUNTRYCODE.
[GB ] Added support for .ROMGBCONLY.
v9.6 (27-Jan-2015) [ALL] Fixed usage info (was missing -i).
[ALL] Moved the project to GitHub:
https://github.com/vhelin/wla-dx
[ALL] Renamed local variables in a lot of functions to
make the code easier to understand.
[ALL] Moved LDFLAGS to end of GCC invocation to fix builds.
[ALL] Changed "-pedantic" to "-pedantic-errors -Wextras"
in WLA's and WLALINK's makefiles.
[ALL] Add ability to compile using Microsoft CL, LINK,
and NMAKE / Added makefile generator m4 scripts.
[ALL] Fixed .ROMBANKMAP and .BANKS allocation to prevent
heap corruption when .BANKS allocated exceeds .BANKSTOTAL
[ALL] Added support for more than 255 sections per file.
[ALL] WLA assembles now "WLAW" library files and "WLAL"
object files.
[ALL] Added optional running index definition to
.REPEAT / .REPT.
[ALL] The calculation parser in WLA DX is now smarter -
it knows more places when to stop parsing.
[ALL] Feeding address labels via named ARGS to a .MACRO
failed before, because they were interpreted as
strings, not address labels.
[ALL] Changed all references to bash to sh in scripts.
[ALL] Added support for SEMISUBFREE sections.
[Z80] .SDSCTAG & .SMSTAG & .COMPUTESMSCHECKSUM now work
with 8KB & 16KB ROMs.
[Z80] .SDSCTAG's minor version number is now parsed
correctly.
v9.5 (14-Aug-2008) [ALL] The unix.sh now takes the number of jobs make
commands should create, speeding up the compiling
on CPUs with more than one core.
[ALL] .DSTRUCTs can now be issued without passing values
to all struct members (will be init to $00 or
.EMPTYFILL).
v9.4 (02-Mar-2008) [ALL] Enhanced the documentation.
[ALL] .DEFINE without a definition value, and a .DEFINE
that would have an address label as the definition value
would make WLA count the linenumbers afterwards wrong.
[ALL] Issuing a loose .ENDM will give an error.
[ALL] All macros must have at least a name.
[ALL] Added .DBM (define bytes through a filter macro) and
.DWM (define words through a filter macro).
[ALL] Added FILTER to .INCBIN (circulate all the data
through a filter macro).
[ALL] Fixed overflow checks in .INCBIN's SKIP and READ.
[ALL] Integrated Mersenne Twister by Takuji Nishimura and
Makoto Matsumoto (.SEED, .DBRND and .DWRND use that now
instead of the stdlib's srand() and rand()).
[ALL] It's possible to use '\!' to get the name of the
currently parsed source file (works like '\@').
[Z80] If a pending computation follows "JR" or "DJNZ",
all the label references inside are relative.
[GB ] If a pending computation follows "JR",
all the label references inside are relative.
[65?] If a pending computation follows "BCC", "BCS", "BEQ",
"BMI", "BNE", "BPL", "BVC", "BVS", all the label
references inside are relative.
[65C] If a pending computation follows "BCC", "BCS", "BEQ",
"BMI", "BNE", "BPL", "BVC", "BVS", "BRA", "BBR*", "BBS*",
all the label references inside are relative.
[658] If a pending computation follows "BCC", "BCS", "BEQ",
"BMI", "BNE", "BPL", "BVC", "BVS", "BRA", "BRL", "PER",
all the label references inside are relative.
[HuC] If a pending computation follows "BCC", "BCS", "BEQ",
"BMI", "BNE", "BPL", "BVC", "BVS", "BSR", "BBR*", "BBS*",
"BRA", all the label references inside are relative.
[SPC] If a pending computation follows "BCC", "BCS", "BEQ",
"BMI", "BNE", "BPL", "BVC", "BVS", "BRA", "BBS", "BBC",
"CBNE *", "DBNZ *", all the label references inside
are relative.
v9.3 (09-Sep-2006) [ALL] Updated makefiles (by Tobias Pflug).
[ALL] Added 'memorymaps' directory, where you can find
default .MEMORYMAPs for various target machines.
[ALL] Enhanced .MEMORYMAP defining.
[ALL] Added .ASCIITABLE (.ASCTABLE) and .ASC.
[ALL] .DEFINE works also without a definition value
(defaults to 0).
[ALL] Added .BLOCK and .ENDB.
[ALL] Added .SYM (and alias .SYMBOL).
[ALL] Added .BR (and alias .BREAKPOINT).
[ALL] Added .SHIFT.
[ALL] Relaxed the MACRO argument counting. Any MACRO can now
be called with varying number of arguments.
[ALL] .DEFINE can now handle definitions where lone address
labels appear (e.g., only "MAIN+0" used to work).
[ALL] Added AmigaOS4 makefiles (by Ventzislav Tzvetkov).
[ALL] Some code cleanups.
[ALL] Fixed the WIN32 makefiles (by Daniël Hörchner).
[650] Fixed class 4 opcodes to work again.
v9.2 (22-Aug-2004) [ALL] WLA can generate makefile rules (flag 'M')
describing the dependencies of the main source file.
[ALL] Added flag 'q' to suppress .PRINT* -directives.
[ALL] Hexadecimal values can now be given using
the suffix 'h' (e.g., 10h and 0abh).
[ALL] Fixed the preprocessor to handle cases like "-: jr -".
[ALL] Sections did affect the .ORG outside of them,
in some special cases.
[ALL] Added "RETURNORG" to .SECTION to (hopefully) fix
this thing once and for all.
v9.1 (26-Jun-2004) [ALL] Sections do not affect the .ORG outside of them.
[ALL] Code cleanups.
[ALL] .IFs can compare string definitions.
[ALL] WLA assembles now "WLAV" library files and "WLAK"
object files.
[ALL] Added preliminary support for list files.
[ALL] Added aliases .DEF (.DEFINE), .REDEF (.REDEFINE),
.UNDEF (.UNDEFINE), .WORD (.DW), .BYT (.DB), .BYTE (.DB),
.ASC (.DB), .EQU (.DEFINE) and .REPEAT (.REPT).
[ALL] Added .FOPEN, .FCLOSE, .FREAD and .FSIZE.
[ALL] Increased the case insensitivity in many directives.
[ALL] It's possible to use "=" in .DEFINE and .REDEFINE.
[ALL] The initial size of a section can now be given with
the keyword "SIZE" (take a look at the README).
[ALL] .FAIL exits nicer.
[ALL] .ENUM can do descending enumeration.
[ALL] Added operators '>' (get the high byte) and '<'
(get the low byte).
[ALL] FREE, SEMIFREE and SUPERFREE sections can be aligned.
[ALL] Added "FSIZE" to .INCBIN.
[ALL] .STRUCT creates more definitions.
[ALL] Structure members can now be used in computations.
[ALL] Relaxed the handling of '.' in stack calculator. Now
for example "AND1 C,1+2+3.3-2-1" works (SPC-700).
[Z80] Fixed opcodes in group 7 to work again. A new feature
in 9.0 broke these.
[658] .SNESHEADER, .SNESNATIVEVECTOR and .SNESEMUVECTOR
don't work with libraries any more.
[658] .SNESNATIVEVECTOR and .SNESEMUVECTOR don't change
.ORG anymore.
[658] All the vectors of .SNESNATIVEVECTOR and
.SNESEMUVECTOR are optional and default to $0000.
[658] Added .SMC, .INDEX and .ACCU.
[658] Operand hinting overrides SEP/REP/.INDEX/.ACCU when
dealing with immediate value opcodes (now when did this
break?), and .8BIT/.16BIT/.24BIT affect only the rest of
the opcodes. WARNING! Check your code as this fix may
break it.
[658] "LDY.W #?" works now.
[658] Added 24bit operand hint .l.
[65x] Added more operand size checks to opcode parsers.
v9.0 (23-Nov-2003) [ALL] The number of arguments macros take is not limited
anymore.
[ALL] It is possible to give names to the macro arguments.
[ALL] A loose .ENDR gives now a proper error message.
[ALL] Trying to define reserved definition labels
(like "NARGS") will give an error.
[ALL] Stack calculator can now return floating point
values (.D*(SIN/COS) do not round the arguments
any more).
[ALL] WLA defaults to BANK 0 SLOT 0 ORG 0 at startup.
[ALL] Added .SLOT.
[ALL] .INCDIR, .INCLUDE and .INCBIN try to convert the
directory paths to the host operating system's syntax.
[ALL] WLA assembles now "WLAT" library files and "WLAH"
object files.
[ALL] It is possible to use floating point numbers in
all computations.
[ALL] It is possible to export floating point definitions.
[ALL] All computation values passed to WLALINK are now
in double format.
[ALL] Fixed a possible error when dealing with multivalue
definitions.
[ALL] .REDEFINE handles all the same definition types as
.DEFINE.
[ALL] Many opcodes, which take signed arguments, do not
let the user to specify too large values (e.g., -1 cannot
be given as $FF any more).
[658] Fixed opcodes "MVN" and "MVP".
[GB ] It is possible to give "LD HL,(SP-n)" instead of
only "LD HL,(SP+n)".
[Z80] The minor version number in SDSCTAG should now work
properly.
[Z80] It is possible to give e.g., "LD A,(IX-1)" (only
"LD A,(IX+-1)" used to work).
v8.9 (12-Jun-2003) [ALL] Added .SEED, .DBRND and .DWRND.
[ALL] Added lowercase versions of run-time definitions
WLA_TIME, WLA_FILENAME, WLA_VERSION and NARGS.
[ALL] Added support for lowercase versions of the
following symbols and directives: DEFAULTSLOT,
SLOTSIZE, SLOT, .ENDME, .ENDRO, BANKSTOTAL, BANKS,
BANKSIZE, .ASM and .ENDASM.
[ALL] WLA assembles now "WLAS" library files and "WLAG"
object files.
[ALL] Used Valgrind to locate memory allocated from the
heap that WLA didn't free at exit (good for Amiga users).
[ALL] Fixed few error messages to show the address in
hexadecimal format instead of decimal.
[ALL] Added support for computation definitions.
[ALL] Added .DS (an alias for .DSB).
[ALL] Added .DSTRUCT.
[ALL] Added .UNBACKGROUND.
[ALL] Added SUPERFREE sections.
[ALL] Macros can now pass their arguments directly to
other macros, and passing a computation to a macro
doesn't mess up things any more.
[ALL] The macros can now take only at max. 16 arguments.
[ALL] WLA doesn't crash when it tries to find the correct
mnemonic and has to free the very first computation stack.
[658] Added .COMPUTESNESCHECKSUM.
[658] Renamed "TBR" instructions to "TRB".
[658] $94 was defined as "STY x,Y". Fixed to "STY x,X".
[658] Added (by Zachary Keene) .SNESHEADER, .ENDSNES,
.SNESNATIVEVECTOR, .ENDNATIVEVECTOR, .SNESEMUVECTOR and
.ENDEMUVECTOR.
[658] .BASE can now be given before the first .ORG.
[658] WLA now automatically sets the 65816 bit in
object files. Previously only SNES directives would
enable the WLA to do this.
[658] .HIROM and .LOROM now override the user's ROM
bank map when computing the 24bit addresses and bank
references.
[GB ] Renamed .COMPUTECHECKSUM to .COMPUTEGBCHECKSUM
(.COMPUTECHECKSUM is still recognized, though).
[GB ] Renamed .COMPUTECOMPLEMENTCHECK to
.COMPUTEGBCOMPLEMENTCHECK (.COMPUTECOMPLEMENTCHECK is
still recognized, though).
[HuC] Fixed the "TST" instruction (swapped $93 and $A3).
v8.8 (25-Feb-2003) [65c] "DEA" assembled to $3a, $00. Removed the extra $00.
[65c] Added "PHP" ($08) and "PLP" ($28).
[65c] Badly placed "RTS" and "RTI" broke the opcode table
so sorted the opcodes better this time.
[HuC] "DEA" assembled to $3a, $00. Removed the extra $00.
[HuC] Added "PHP" ($08) and "PLP" ($28).
[HuC] Badly placed "RTS" and "RTI" broke the opcode table
so sorted the opcodes better this time.
[SPC] Fixed the byte ordering (to test first, branch label
next) in "CBNE" ($2E and $DE) and "DBNZ" ($6E).
[SPC] "ASL !?" was defined as $CC, fixed to $0C.
[ALL] Decimal number parser didn't work with all cases
when a dot was encountered.
[ALL] Added support for longer filenames (> 63 characters).
[ALL] A correctly, but partially written mnemonic would
cause WLA to break the assembling, but without giving
an error message.
[ALL] Fixed a rare bug which caused WLA and WLALINK to
disagree on section id numbers.
[ALL] WLA assembles now "WLAR" library files and "WLAE"
object files.
v8.7 (28-Nov-2002) [ALL] Added DSB and DSW, and EXPORT to .ENUM.
[ALL] Added DSB and DSW to .RAMSECTION.
[ALL] "dec" and "hex" work now in .PRINTV (only the
uppercase "DEC" and "HEX" used to work).
[ALL] Value parsers accept now big (32bit) values.
Previously only 16bit (and 24bit for 65816) values
were accepted.
[ALL] ".ende" works now also (only ".ENDE" used to work).
[ALL] Added .STRUCT.
[ALL] Macro and repeat stacks are now dynamic.
[Z80] The linenumber in memory references generated by
.SDSCTAG was incorrect.
[65x] Fixed a case where operand hinting was ignored.
v8.6 (02-May-2002) [65x] Forgot to add .b/.w operand hint support to
pure hexadecimal and binary operands.
[65x] Fixed a lot of 8bit relative operands to be absolute.
[65x] Added support for 65C02 systems (wla-65c02).
[HuC] Added support for HuC6280 systems (wla-huc6280).
[Z80] WLALINK would discard (with flag d) all SDSCTAG-
sections generated with .SDSCTAG.
[Z80] Added few missing Z80 opcodes (eg. "JP (IY)").
[Z80] Fixed a silly bug in .SDSCTAG.
[SPC] Renamed "wla-spc" to "wla-spc700".
v8.5 (19-Apr-2002) [ALL] All unidentified free strings were treated as labels.
Fixed so that labels can only start at the beginning of
a new line.
[ALL] Added support for yet another un-named label (__).
[ALL] ".endm" works now also (only ".ENDM" used to work).
[ALL] Fixed the preprocessor to work better.
[ALL] Fixed .DxSIN & .DxCOS to finally work properly.
[ALL] 'x' switch generates now also WLA_VERSION.
[ALL] Fixed the preprocessor to handle few special cases
related to the use of '+'.
[65x] WLA can now be also hinted about the operand size
with .b and .w in the operand (eg. "and 10.w").
v8.4 (24-Dec-2001) [ALL] Token parser could fail while skipping comma
separated tokens inside .IF.
[ALL] Updated the documentation (few crucial things were
missing).
[ALL] Fixed .RAMSECTION to work (was missing since its
introduction).
[ALL] Internal pass 1 failed to see duplicate labels.
[ALL] Address labels don't need to end to ':' any more.
[ALL] Added support for un-named labels
(-, --, +, ++, ...).
[ALL] Stack calculator can now return strings (and will
if the result consists of only one string).
v8.3 (21-Oct-2001) [ALL] Added .INPUT.
[ALL] It's now possible to set the bank/slot size to
full 65536 bytes.
[ALL] Removed switch u.
[ALL] Redefining a value definition to be a string
definition would crash WLA.
[SPC] Added support for SPC-700 systems (wla-spc).
[658] Class 4 mnemonic ("ADC #x", "LDA #x", etc) decoder
handles now labels correctly in 8bit operand mode.
[Z80] "SUB (IX+n)" was mistyped as "SUB A, (IX+n)".
[Z80] Updated .SDSCTAG to support the version 1.01
of SDSC ROM Tag Specification.
v8.2 (19-Jul-2001) [ALL] Added .OUTNAME.
[ALL] Added .ORGA.
[ALL] Added .RAMSECTION for variables.
[ALL] It's now possible to create string and value
definitions on the command line (-Ddefinition[=value]).
[ALL] Code cleanups.
[ALL] Optimized internal data format.
[ALL] Optimized stack calculator routines.
[ALL] Definition labels inside .ENUM can now end to ':'.
[ALL] Fixed parser holes in .ENUM.
[ALL] Added XOR-operator (~) support to computations.
[658] Fixed "BRL" to work (the fix was partially missing in
v8.1 due to a uncareful source tree merge).
[658] Fixed "PER" to work.
v8.1 (03-Jul-2001) [ALL] EXPORT'ing more than once the same definition
gives an warning instead of an error.
[ALL] It's now possible to export more than one
definition with .EXPORT.
[ALL] It's now possible to undefine more than one
definition with .UNDEF.
[ALL] Some directive arguments could only be accepted
if they were in uppercase (eg. FORCE, FREE, SWAP, ...).
[ALL] Unix users can now define the WLA DX compiling
flags by defining CFLAGS before executing make.
[ALL] Parse code cleanups.
[ALL] Macro argument place holders (eg. \1 and \@) can
now be used inside labels and strings.
[ALL] WLA doesn't even try to solve any of the label
references (even trivial), all that is now left
for WLALINK.
[65x] Now there are .B, .W and .L versions of all
the mnemonics that take immediate values.
[65x] BRK & COP -mnemonics now have a default signature
byte $00.
[65x] Added "BRK x" (and "COP x" to WLA-65816).
[658] Fixed BRL to work.
[658] Fixed .NAME to write the name data to $FFC0-> in
HiROM- and to $7FC0-> in LoROM-mode.
[658] All the SNES ROM information bytes WLA supports
obey now .HIROM and .LOROM.
[658] Fixed SNES directives.
[650] Fixed "STY x,Y" to "STY x,X".
[Z80] Fixed few cases where IX&IY were interpreted
as labels.
v8.0 (19-May-2001) [ALL] Simplified WLA engine a lot by leaving away ROM and
program file assembling, and the old, crippled error
reporting engine.
[ALL] Removed .FOOTER and .HEADER (no longer required).
[ALL] WLA assembles now "WLAQ" library files and "WLAD"
object files (merged old object file formats).
[ALL] Removed few redundant error messages.
[ALL] Removed label name compactor.
[ALL] Optimized internal pass 1.
[ALL] Optimized object and library file writing.
[ALL] Optimized Z80, 6502, 6510 and 65816 opcode tables
(smaller WLA executables).
[ALL] Empty sections get discarded (and labels inside
them as well).
[ALL] ".IF A==B" works now as well (only ".IF A == B"
used to work).
[ALL] WLA doesn't strip the size from the section name
if the size is explicitly defined.