forked from vhelin/wla-dx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
1123 lines (1003 loc) · 59.9 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/6502/65C02/6510/65816/HUC6280/SPC-700 History
------------------------------------------------------------------------------
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 compiles 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 compiles 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 compiles 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 compiles 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 compiling, but without giving
an error message.
[ALL] Fixed a rare bug which caused WLA and WLALINK to
disagree on section id numbers.
[ALL] WLA compiles 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 compiling, and the old, crippled error
reporting engine.
[ALL] Removed .FOOTER and .HEADER (no longer required).
[ALL] WLA compiles 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.
v7.8 (13-May-2001) [ALL] Optimized preprocessor a little, output is now
even more compact than before.
[Z80] Reordered LD-mnemonics in the mnemonics table a
little so all common mnemonics get decoded faster.
[Z80] Added "RST $00" (plain "RST" is still there, too).
v7.7 (12-May-2001) [Z80] Fixed "LD ?,IX" and "LD ?,IY" to "LD (?),IX" and
"LD (?),IY".
v7.6 (10-May-2001) [ALL] Not all mnemonics were case insensitive, a bug
introduced in the previous release.
v7.5 (07-May-2001) [ALL] Optimized mnemonic decoders a little.
[651] Fixed all NOP -mnemonics to work.
v7.4 (02-May-2001) [ALL] Added many new error messages.
[ALL] Result placing in stack calculator could fail if the
result's position wasn't inside a section.
[ALL] Modulo/division by zero doesn't crash WLA anymore.
[ALL] Now also in ROM compiling mode it's possible to refer
to future value definitions with .DB and .DW.
[ALL] Win32 port uses now PID in the temp file name.
[ALL] Fixed few places which could generate incorrect
destination memory overwrite warnings.
[ALL] Program file compiler dislayed a wrong binary size
in verbose mode.
[ALL] Enhanced .INCBIN.
[Z80] Loose strings given to .SDSCTAG don't cause
overwrite warnings anymore.
[658] Fixed "STZ ?, X" to work (misclassified earlier).
[65x] Added new fixed value size mnemonics to the mnemonics
tables to speed up the coding and parsing (eg.
"CMP.W ?"). Only those mnemonics with multiple argument
size choices are affected.
[650] Fixed "DEC ?,X" and "DEC ?" to work (misclassified
earlier).
[658] Added .LOROM, .HIROM and .BASE to help generating
SNES 24bit addresses.
[658] Added .SLOWROM and .FASTROM for ROM memory speed
identification.
[658] .NAME works also in WLA-65816 (SNES ROM name string
starting at $FFC0).
v7.3 (12-Apr-2001) [ALL] Fixed possible problems with bank overflows
(bank size wasn't always up to date).
[ALL] Preprocessor modifications introduced a bug
which trashed included source files.
[ALL] Optimized preprocessor even more.
[ALL] .DEFINE and .REDEFINE missed linecounter
checks due to the new multibyte definitions.
[Z80] Added .SDSCTAG (SDSC ROM tag).
[Z80] Added .SMSTAG (SMS/GG ROM tag).
v7.2 (08-Apr-2001) [ALL] Rewrote the preprocessor code, now it produces
much more compact output and is generally faster.
[ALL] Files can now begin with "/*".
[ALL] Now there can be comments after one word
mnemonics (broken before).
[ALL] .REPT takes now also zero as argument.
[ALL] Multibyte definitions are now possible.
[ALL] WLA_TIME ended to a linefeed, thanks to
ctime(), but not anymore.
[Z80] Fixed "LD BC,(?)" and "LD BC,?" recognition to
work better.
v7.1 (13-Mar-2001) [ALL] Added 'x' switch to generate extra compile time
definitions (WLA_TIME, WLA_FILENAME).
[ALL] Characters can now be used in computations (eg.
LD A, 'F'-10).
[ALL] WLA could not get the correct section size
from a section name if more than one underline
was used.
[ALL] .INCLUDE and .INCBIN used wrong name in error
messages if the file was found on the current working
directory and not in the .INCDIR directory.
[ALL] Unix makefiles default now to gcc (if no CC/LD is
defined).
[ALL] .REPT can now be used inside macros.
[ALL] .REPTs can be used inside .REPTs.
[ALL] Macro arguments in computations work now better.
[ALL] Error engine's line counting works now inside
macros.
[ALL] File doesn't need to end to a line feed anymore.
[ALL] Added '>=' and '<=' to .IF.
[ALL] Added .IFGREQ and .IFLEEQ.
[ALL] .IF -directives should now work with computations.
[Z80] WLA gives only a warning if .COMPUTESMSCHECKSUM
is used on a ROM file smaller than 32KB.
[650] Fixed "INC ?" to work (wrong type previously).
v7.0 (03-Mar-2001) [ALL] WLA couldn't handle files starting with ";".
[ALL] Enhanced error messages.
[ALL] Compiling WLA DX under Unix is now done with egcs
(if no CC is defined).
[ALL] Added error messages to .ENUM and made it to accept
lowercase symbols. Also added fake symbols.
[ALL] Fixed a serious bug with 8bit pending calculations.
[ALL] Enhanced makefiles (behave now better under Unix).
[ALL] The code works now regardless of the endian type.
[ALL] .INCLUDE and .INCBIN try to find the file in the
current working directory if it's not in the .INCDIR
directory.
[ALL] Definitions take also strings as values.
[ALL] Code cleanups.
[ALL] Exporting an undefined definition doesn't break
the compiling loop (only a warning is issued).
[ALL] Quotation marks are accepted inside strings.
[ALL] Temporary files are placed into the current working
directory and under Unix the names incorporate PID.
[ALL] .DBSIN and the rest were broken due to a typo.
[ALL] Optimized string parsers.
[ALL] Added .IFEXISTS.
[ALL] Macro argument place holders (eg. "\1") and \@ can
now be used in computations (eg. "LD A, \1+\2+\@").
[ALL] Macros can be used inside macros (but macro arguments
cannot be directly forwarded to the next level).
[ALL] "/*/" isn't interpreted as an empty comment anymore.
[ALL] Section size can be defined insize the section name
string.
[Z80] Added TI-86 system include file to the archive.
[Z80] Added .COMPUTESMSCHECKSUM for computing the
Sega Master System ROM checksum.
[Z80] Fixed "LD (IX+x), x" to work.
[!GB] Few mnemonics caused stack calculator to create
garbage.
[GB ] Complement check computing could fail with some
really bad luck.
v6.9 (23-Oct-2000) [ALL] Enhanced .MACRO error messages.
[ALL] Enhanced .DW error recognition.
[ALL] .SECTION handling might broke with some bad luck.
[ALL] \@ can now be used inside strings inside a .MACRO.
[65x] Added support for "ASL", "LSR", "ROL" and "ROR".
[650] Fixed "STA ?" to $8D (was $80).
[650] Fixed "EOR ?" to $4D (was $40).
[650] Fixed "RTI" to $40 (was $4D).
[650] Fixed "STA ?,X" to $9D (was $90).
[650] Fixed "ORA ?,X" to $1D (was $10).
[650] Fixed "EOR ?,X" to $5D (was $50).
[650] Fixed "ADC ?" to $6D (was $60).
[650] Fixed "ADC ?,X" to $7D (was $70).
v6.8 (09-Oct-2000) [Z80] Fixed "LD C, RL*" -mnemonics.
[651] Added support for 6510 systems (wla-6510).
[ALL] Enhanced documentation.
[ALL] Library file compiling was broken in the previous
release.
v6.7 (07-Oct-2000) [ALL] Added NARGS to .MACRO.
[ALL] Enhanced documentation.
[ALL] Enhanced error messages.
[ALL] Optimized the first internal pass.
[ALL] Macros couldn't have .PRINTT directives with
linefeeds.
[65x] Added .8BIT and .16BIT.
[658] Added support for 65816 systems (wla-65816).
[658] Added .24BIT.
[Z80] Fixed RST-mnemonics.
[GB ] Moved lib to examples/gb.
v6.6 (25-Sep-2000) [ALL] .EMPTYFILL didn't function properly when .ROMBANKMAP
was used instead of .ROMBANKS.
[ALL] Fixed few byte size checks.
[650] Added support for 6502 systems (wla-6502).
[!GB] Header and footer sizes are now shown in the
verbose mode's result information.
v6.5 (20-Sep-2000) [ALL] Optimized number decoding.
[ALL] Enhanced documentation.
[ALL] Binary file compiling is now called program file
compiling (still doesn't suit it 100%).
[ALL] Macros couldn't be used before setting an ORG.
[Z80] Program file compiling accepts now BANKHEADER
section for bank 0.
[Z80] The default program file suffix is now '.prg'.
[Z80] NO$GMB symbol files can also be written.
v6.4 (12-Sep-2000) [ALL] Returned '*' commenting (from the beginning of a
line).
[ALL] 'LABEL:XYZ' is now correctly decoded.
[ALL] BIT/RES/RST/SET opcodes understand now defines
and calculations.
[ALL] References to local labels outside sections were
possible.
[ALL] Added a much faster and enhanced MACRO language.
[ALL] IF directives can now be nested.
[ALL] .INCBIN works in library files.
[ALL] Added .REDEFINE.
[ALL] Added .PRINTT and .PRINTV.
[ALL] Added .DBSIN, .DBCOS, .DWSIN and .DWCOS.
[ALL] Added .IFEQ, .IFNEQ, .IFGR and .IFLE.
[ALL] Added .IF with the following operators: '>', '<',
'!=' and '=='.
[ALL] Added .IFNDEFM and .IFDEFM.
[ALL] Added .UNDEF.
[ALL] Added .FAIL.
[ALL] Added SEMIFREE sections.
[ALL] Fixed a bug in opcode case sensitivity checks.
[ALL] Opcode case sensitivity mode can be changed so
WLA understands only uppercase letters (flag u).
[ALL] Added support for modulo ('#') in calculations.
[ALL] Enhanced error messages.
[ALL] ROM banks can be inserted into different sized
slots as long as the bank fits fully inside the slot.
[ALL] Computations are now computed internally with higher
precision when possible and the result is converted to
an integer.
v6.3 (04-Sep-2000) [ALL] Enhanced error messages.
[ALL] Optimized section handling.
[ALL] Optimized label handling.
[ALL] Removed support for '*' commenting.
[ALL] Added support for special ROM bank header sections.
[ALL] Added support for powers ('^') and shifts ('<<'
and '>>') in calculations.
[ALL] Fixed calculator engine to work better.
[ALL] Enhanced calculation detection.
[ALL] .DB and .DW take now comma separated data. Make
sure to use commas when placing arithmetic calculations
inside .DB and .DW data fields.
[ALL] .DSW, .DSB, .DW and .DB take labels and pending
computations as data.
[ALL] The following directives can be redefined as long
as the values equal: .ROMBANKS, .EMPTYFILL and
.ROMBANKSIZE.
[ALL] .ROMBANKMAPs and .ROMBANKS can be redefined as long
as they match (as much as possible). WLA will then use
the biggest defined ROM bank map.
[GB ] The following directives can be redefined as long
as the values equal: .NAME, .RAMSIZE,
.CARTRIDGETYPE, .LICENSEECODENEW, .LICENSEECODEOLD,
.COMPUTECHECKSUM, .COMPUTECOMPLEMENTCHECK, .ROMDMG,
.ROMGBC and .ROMSGB.
v6.2 (31-Aug-2000) [ALL] Enhanced error messages.
[ALL] Enhanced number size checks in the opcode decoding
loop.
[ALL] Braces are not needed anymore in arithmetics.
[ALL] Added a fully functional stack calculator engine.
[ALL] Unused local labels don't get smoked anymore.
[ALL] WLA could crash when including a file while
using the old error message engine.
[ALL] Negative values in the 16bit range are now
handled with better care.
[ALL] When compiling a ROM image and using a section
inside direct mapped code WLA would screw up the data.
v6.1 (26-Aug-2000) [ALL] Directives accept now definitions as arguments.
[ALL] Added more security checks to .MEMORYMAP.
[ALL] Optimized .MEMORYMAP building.
[ALL] Optimized SLOT usage.
[ALL] Added .ROMBANKMAP and .ENDRO.
[ALL] .BANKSIZE is now .ROMBANKSIZE.
[ALL] 4G worth of ROM banks are supported.
[ALL] SLOT numbers start from 0.
v6.0 (23-Aug-2000) [ALL] Rewrote and optimized opcode decoding.
[ALL] Preprocessing subroutine removed comments from inside
data strings.
[ALL] Support for old syntax directives is dropped.
[ALL] Enhanced the documentation.
[ALL] Enhanced the error messages.
[ALL] .INCBIN could break the line numbering in the
error messaging engine.
[ALL] Fixed a bug in .FORCE section handling.
[ALL] Added .BANKSIZE.
[ALL] Added .MEMORYMAP and .ENDME.
[ALL] Added .ENDASM and .ASM.
[ALL] '*' can also be used to comment away lines.
[ALL] WLA can now test compile (flag t).
[ALL] .ROMSIZE is replaced with .ROMBANKS.
[ALL] Changed FREE section positioning a little.
[Z80] Binary files can be compiled with the flag 'b'.
[Z80] Added .HEADER.
[Z80] Added .FOOTER.
v5.0 (09-Jul-2000) Enhanced brackets detection.
Enhanced the documentation.
Enhanced error messages.
WLA outputs now a NO$GMB symbolic information file along
with a ROM image (s flag).
.SECTION without a specifier is treated as a FREE section.
Optimized directive decoding.
Optimized parser loop.
If .RAMSIZE is not defined a warning is issued instead
of an error.
Added SWAP to .INCBIN.
Verbose mode shows data usage percentages (per bank
as well).
WLAD (WLA Disassembler) is now included with the WLA
archive.
v4.6 (21-Jun-2000) Enhanced the documentation.
Optimized directive decoding.
"JP (HL)" is now known as "JP HL".
GB-Z80 syntax parser supports now brackets as well.
WLA doesn't crash if the project's main file is missing.
v4.5 (15-Jun-2000) Enhanced the documentation.
Fixed the reintroduced '.INCDIR ""'-bug.
Target file name can now be left away as WLA has now
built in default suffices (.gb, .o and .lib).
Added lib-directory to the archive.
Trying to compile a compact ROM file will give a warning.
v4.4 (09-Jun-2000) Enhanced the documentation.
Fixed "RR A"->"RRCA" and "RL A"->"RLCA" transformations.
"EI" and "RST $x" were followed by a "NOP"!
Hexadecimal and binary values are supported in
arithmetics.
Optimized number decoding.
v4.3 (03-Jun-2000) Enhanced error messages.
Number decoding routines are now compatible with the
new error messaging system.
Optimized define and macro handling.
Optimized GB-Z80 opcode decoding.
Optimized source file parsing.
Very long (typos?) tokens don't crash WLA anymore.
.INCDIR accepts directory paths which are not terminated
with '/' (or '\' under MSDOS).
Added support for very simple arithmetics.
Fixed "LD HL, SP+x".
Removed "EX HL, (SP)".
Added OVERWRITE to .SECTION (patch tool function).
Added .BACKGROUND (patch tool function).
WLA would crash if the whole project was inside one
file, and if the file was not found.
"=" can be optionally left away from many directives.
Added "JP (HL)".
v4.2 (11-Apr-2000) Enhanced documentation.
Enhanced error messages.
WLA could crash if .REPT wasn't ended with .ENDR.
.MACRO and .REPT are now compatible with the new
error messaging system.
.REPT size is now 2k.
v4.1 (29-Mar-2000) Enhanced documentation.
Enhanced error messages.
Optimized number conversion.
Added ANSI-C -like commenting ("/* ... */").
v4.0 (19-Mar-2000) Optimized data parsing.
Added a much better error messaging system as default.
Added "-f" -option for fast compiling (uses old error
messaging system with few enhancements).
"LDH (x), A" and "LDH A, (x)" support was broken due to a
typo.
WLA accepts now negative values as well.
WLA's flags and usage changed totally! Read about the
changes in the documentation.
Input and output files cannot be the same.
Enhanced the documentation.
v3.0 (20-Feb-2000) Added support for "LDH (x), A", "LDH A, (x)",
"LD (HLI), A", "LD (HL+), A", "LD A, (HLI)",
"LD A, (HL+)", "LD (HLD), A", LD (HL-), A",
"LD A, (HLD)" and "LD A, (HL-)".
WLA filters away unreferenced local lables in
object/library output mode.
MSDOS temporary file directory is now the current
working directory.
Added "-co" -option for compact object file producing.
Added "-cl" -option for compact library file producing.
Enhanced .SECTION logic (syntax changed!).
Added new error messages.
Optimized temporary file usage.
Optimized directive decoding.
Optimized internal pass 2.
Optimized .SECTION handling.
Optimized .DSB and .DSW.
Optimized pass 1.
Optimized .INCLUDE.
v2.9 (16-Feb-2000) Section names with spaces crashed WLA.
Fixed address bound checking in .BANK.
Added more error messages.
v2.8 (15-Feb-2000) Added .EXPORT.
All strings starting with "." are treated as directives.
Directives are not case sensitive any more.
Fixed a broken 0x0D filter (in MSDOS text files).
Source file ending into a comment could crash WLA.
Optimized .INCLUDE.
Libraries can now have references outside.
Amiga object/library files were not compatible with
PC files.
Fixed a bug in object file generator that could crash WLA.
v2.7 (07-Feb-2000) WLA returns 0 when help information is displayed.
WLA returns 1 when execution ended in error. -1 produced
ugly error messages on Amiga computers.
WLA gives now an error when the user tries to produce
a library file which has references to outside.
Amiga version has version string.
Enhanced some error messages.
Enhanced documents.
v2.6 (03-Feb-2000) PC relative reference distances inside sections could be
more than 127 bytes.
v2.5 (29-Jan-2000) Enhanced documents.
Fixed GBC indicator from $C0 to $80.
v2.4 (26-Jan-2000) Fixed a typo "NET NC" to "RET NC".
Enhanced some error messages.
Added .ROMGBC, .ROMDMG and .ROMSGB.
Rewriting memory with equal data doesn't give an error.
v2.3 (23-Jan-2000) Added .SECTION, .ENDS.
Added "-l" -option for library file producing.
Fixed address calculations a little more.
WLA returns -1 when execution ended in error.
Local labels are now local to sections or object file.
Enhanced the documents.
v2.2 (16-Jan-2000) Added .DSW, .DW, .ENUM and .ENDE.
v2.1 (14-Jan-2000) Added $BE (Pocket Voice) to supported cartridge types.
Added "-v" -option for verbose information displaying.
Optimized pass 1.
Fixed possible errors in address calculations.
v2.0 (12-Jan-2000) Enhanced the documents.
Optimized internal pass 2 and directive including.
Fixed overflow check (in .ORG).
Added "-o" -option for object file producing.
Added linker executable "wlalink".
Added .INCDIR.
v1.9 (06-Jan-2000) Optimized .INCBIN, .INCLUDE and internal passes
1 and 2.
v1.8 (23-Dec-1999) Enhanced the documents.
Fixed overflow checker once again. Every bank gained one
byte more (total 16384).
v1.7 (04-Dec-1999) Enhanced the documents.
Added gb_hardware.i.
.INCBIN didn't free buffer memory.
Optimized .INCBIN.
.INCBIN now caches all the files.
Optimized internal passes 1 and 2.
Linux version is optimized for 486.
v1.6 (14-Nov-1999) Enhanced the documents.
Fixed nintendo_logo.i so it works on a real Game Boy.
Fixed complement check calculation to work.
Overflow checker thought GB ROM banks were 8KB each!
Fixed to 16KB. Ville no baka!
Added .REPT.
Added .ENDR.
v1.5 (10-Jun-1999) Enhanced the documents.
WLA does now one pass to the input data and
two passes to the internal data.
v1.4 (25-May-1999) Renamed nintendo_logo.s to nintendo_logo.i.
Fixed nintendo_logo.i Wzonka-Lad-compatible.
Fixed pass-texts, as WLA does actually one pass,
three of the old ones were made to the WLA's internal data.
Added one funky new optcode, "DEBUG", which will
translate to $ED (unused in GB-Z80). This one will
flash the power light when executed on Wzonka-Lad,
my Game Boy emulator. Use it only for debugging!
v1.3 (01-Jan-1999) Enhanced the documents.
WLA now shows the unused areas of the ROM file after
a successful compile in hexadecimal format.
Many WLA directives accepted non-pure values, not anymore.
Added .DSB.
.DB handles now strings as well.
v1.2 (21-Dec-1998) Enhanced the documents.
Added a list ("gb-z80.txt") of the supported GB-Z80 commands
to the archive.
Free strings don't break the compile loop anymore.
Added .INCBIN.
v1.1 (13-Dec-1998) Enhanced the documents.
Removed an unused function.
Number input now detects and discards numbers from
outside the word boundaries.
WLA now shows the unused areas of the ROM file after
a successful compile.
Added .IFNDEF.
Added .IFDEF.
Added .ELSE.
Added .ENDIF.
Added @@@ to .MACRO.
.DB accepted values from outside the byte boundaries.
v1.0 (12-Dec-1998) The first public release.
------------------------------------------------------------------------------
2... WLAB History
------------------------------------------------------------------------------
v1.2 (31-Mar-2003) Made address printing more useful.
v1.1 (04-Sep-2000) Uses now WLA v6.3+ syntax (introduced commas).
Accepts now files bigger than 64KB.
v1.0 (23-Aug-2000) The first public release.
------------------------------------------------------------------------------
3... WLAD History
------------------------------------------------------------------------------
v1.3 (21-Oct-2000) String detection works better.
v1.2 (01-Sep-2000) SLOT numbers are handled correctly.
Uses ROMBANKS instead of ROMSIZE.
String detection works better.
v1.1 (23-Aug-2000) Added flag 'a' to disable address output.
v1.0 (10-Jul-2000) The first public release.
------------------------------------------------------------------------------
4... WLALINK History
------------------------------------------------------------------------------
v5.7 (02-Mar-2008) A reference to a non existing anonymous label inside a
pending calculation would crash WLALINK.
Taking the bank number of an anonymous label inside a
pending calculation would return the label's address.
128 was the maximum legal distance to an 8bit reference,
fixed this to 127. The same range bug was in bank header
section calculations as well.
All the output when linking goes to stderr (some info went
to stdout, making the lines to mix in UltraEdit(?)).
v5.6 (01-Jan-2006) Anonymous labels don't fool the unused section discarder
to think that a section is referenced.
WLALINK could find anonymous labels that had been
inside discarded sections.
WLALINK can output WLA symbol files as well (option 'S').
Added more safety checks to anonymous label calculations.
Symbol file writers handle .BASE correctly.
Fixed SMC header writing (by Tobias Pflug).
v5.5 (30-Jul-2004) Added support for hexadecimal input values using the
suffix 'h'.
v5.4 (10-May-2004) SUPERFREE sections are now inserted into the output after
all FREE and SEMIFREE sections.
All sections are sorted by size and placed in the output
by starting from the largest section.
Added preliminary support for list files.
Added support for operators '>' (get the high byte) and
'<' (get the low byte).
Supported object file format is now "WLAK" and library
file format "WLAV".
FREE, SEMIFREE and SUPERFREE sections can be aligned.
v5.3 (23-Nov-2003) When finding the match the distances between anonymous
labels are now measured using their positions in the
output file, not using line numbers in the source files
(fixes anonymous labels inside .REPT).
Added "CADDR", label for referencing the current address.
SMS checksum should now be computed correctly, regardless
of the ROM size.
Fixed a rare segfault with computation definitions.
WLALINK displays better error messages when there is no
room for a section.
When positioning SUPERFREE sections the only suitable
bank candidates are those, which have the same size
than the slot of the section.
Supported object file format is now "WLAH" and library
file format is "WLAT".
v5.2 (06-Jun-2003) Supported object file format is now "WLAG" and library
file format is "WLAS".
Added support for SNES checksum computing.
Added support for SUPERFREE sections.
Fixed WLALINK to work with the new SNES/65816 banking
selection scheme.
Enhanced error messages.
v5.1 (22-Jan-2003) A bug introduced in v5.0 made local labels to fail
in some occasions.
Added support for longer filenames (> 63 characters).
Supported object file format is now "WLAE" and library
file format is "WLAR".
Object & library file structures weren't initialized
completely - could cause a crash if one of the files to
be linked was missing.
v5.0 (28-Nov-2002) When discarding unreferenced sections WLALINK will
process only FREE and SEMIFREE sections.
v4.9 (28-Apr-2002) When computing SMS ROM checksum WLALINK now writes
$4C to $7FFF (32KB checksum, and SMS export).
8bit label references are now allowed (zero page labels).
v4.8 (22-Jan-2002) Added support for yet another un-named label (__).
v4.7 (22-Dec-2001) Added support for un-named labels (-, --, +, ++, ...).
v4.6 (31-Aug-2001) It's possible to make value definitions inside the
linkfile.
v4.5 (16-Jul-2001) WLALINK wrote SNES ROM info byte into $FFD5 regardless
of the ROM mode.
Added XOR-operator (~) support to computations.
Added support for RAM sections.
v4.4 (30-Jun-2001) For example a reference to ":label_01" will give the
label_01's bank number instead of its address.
Linkfile's library loader supports now BASE (works
like WLA's .BASE).
Linkfile parser supports now hexadecimal values.