You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/changelog/index.html
+28-2Lines changed: 28 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -74,6 +74,8 @@ <h3>Contributors:</h3>
74
74
<ul>
75
75
<li>RPG Hacker</li>
76
76
<li>randomdude999</li>
77
+
<li>p4plus2</li>
78
+
<li>Atari2</li>
77
79
</ul>
78
80
79
81
<h3>Notes:</h3>
@@ -86,6 +88,9 @@ <h3>New features:</h3>
86
88
<li>The Asar test suite can now verify user-printable strings. (RPG Hacker)</li>
87
89
<li>The <code>error</code>, <code>warn</code> and <code>assert</code> commands now support the same functions as the print command. (RPG Hacker)</li>
88
90
<li>Static labels (i.e. labels that don't move between passes) can now be used in more places, including if statements. (RPG Hacker)</li>
91
+
<li>Asar can be built as a static library. (Atari2)</li>
92
+
<li>Asar now uses named warnings and errors instead of magic numbers as identifiers. (p4plus2, RPG Hacker)</li>
93
+
<li>Variadic macro parameters now use the syntax <codeclass="65c816_asar"><...[math]></code>, which makes them less ambiguous and helps prevent syntax parsing bugs. (RPG Hacker)</li>
89
94
</ul>
90
95
91
96
<h3>Bug fixes:</h3>
@@ -95,12 +100,33 @@ <h3>Bug fixes:</h3>
95
100
<li>Macro calls & definitions no longer break as easily from including whitespace. (RPG Hacker)</li>
96
101
<li>For invalid table files, Asar now prints the line number of the first invalid entry. (RPG Hacker)</li>
97
102
<li>When Asar generates addr-to-line mappings, it now includes multiple addresses for pseudo opcodes like "asl #4". (RPG Hacker)</li>
98
-
<li><code>'''</code> and <code>';'</code> can now be used without causing errors. (randomdude999, RPG Hacker)</li>
103
+
<li><code>'''</code> and <code>';'</code> are now valid can now be used without causing errors. (randomdude999, RPG Hacker)</li>
104
+
<li>Fixed some edge case bugs in Asar's virtual filesystem (usable via the DLL) on Windows. (Atari2)</li>
99
105
</ul></div>
100
106
101
107
<h3>Deprecated features:</h3>
102
108
<ul>
103
-
<li>Warning and error IDs: Asar now uses named warnings and errors. (p4plus2, RPG Hacker)</li>
109
+
<li>Warning and error IDs: Use new name strings instead.</li>
110
+
<li><code>JMP.l</code>: Use <code>JML</code> instead.</li>
111
+
<li>Quoted symbolic arguments to functions (e.g. <code>sizeof("my_struct")</code>): Remove the quotes (<code>sizeof(my_struct)</code>).</li>
112
+
<li>Redefining previously defined functions.</li>
113
+
<li><code>math round</code> and <code>math pri</code>: Use parentheses and explicit rounding where xkas-style math emulation is needed instead.</li>
114
+
<li><code>.d</code> length specifier on opcodes.</li>
115
+
<li><code>if !condition</code> to negate conditions: Use <code>if not(condition)</code> instead.</li>
116
+
<li>While blocks ending with <code>endif</code>: Use <code>endwhile</code> instead.</li>
117
+
<li><code>bankcheck on</code>: Use <code>bankcheck full</code> or <code>bankcheck half</code> instead.</li>
118
+
<li><code>rep</code> to repeat commands: Use while loops or unrolled loops instead.</li>
<li><code>table</code> command: Assign characters directly instead, like <code>'a' = $00</code>.</li>
121
+
<li>Labels in <code>padbyte</code> or <code>fillbyte</code> commands.</li>
122
+
<li><code>spc700-raw</code> architecture: Use <code>spc700</code> with <code>norom</code> instead.</li>
123
+
<li><code>fastrom</code>: Has never actually worked and can be removed.</li>
124
+
<li><code>header</code>: Doesn't do anything and can be removed.</li>
125
+
<li>Non-UTF-8 source files: Re-save your source files as UTF-8 in a text editor of choice.</li>
126
+
<li><code>;@command</code> and <code>@command</code> notation: Use <code>command</code> instead.</li>
127
+
<li>Wrapping defines to resolve in quotes (e.g. <code>db "!define"</code>): The quotes aren't needed (<code>db !define</code>).</li>
128
+
<li>Single-line/inline if statements: Use full if blocks with an <code>if</code>/<code>endif</code> pair instead.</li>
129
+
<li><codeclass="65c816_asar"><math></code> syntax for variadic macro parameters: Use <codeclass="65c816_asar"><...[math]></code> insread.</li>
In addition to named substitutions, if the variadic token <codeclass="65c816_asar">...</code> is specified as the last parameter Asar will allow an arbitrary number of parameters after all prior parameters have been satisfied.
2459
-
To access unnamed arguments of a variadic function they are declared numerically starting from 0 up to the number of provided parameters. To access the number of provided variadic arguments one may use <codeclass="65c816_asar">sizeof(...)</code>.
2460
-
Lastly, it is important to note that while traditionally macros do not parse defines at their creation variadic macros will. This is to allow iteration of arguments by using defines.
2458
+
In addition to named substitutions if the variadic token <codeclass="65c816_asar">...</code> is specified as the last parameter asar will allow an arbitrary number of parameters after all prior parameters have been satisfied.
2459
+
To access unnamed parameters of a variadic macro, use the syntax <codeclass="65c816_asar"><...[{math}]></code>, where <codeclass="65c816_asar">math</code> is any math expression evaluating to the index of a variadic parameter. These are declared numerically starting from 0 up to the number of provided parameters. To access the number of provided variadic arguments one may use <codeclass="65c816_asar">sizeof(...)</code>.
2460
+
Lastly, it is important to note that while traditional macros do not parse defines inside parameters, variadic macros will. This is to allow iteration of arguments by using defines.
{ ERR(pushns_without_pullns), "pushns without matching pullns." },
283
283
{ ERR(pullns_without_pushns), "pullns without matching pushns." },
284
284
285
-
{ ERR(label_forward), "The use of forward labels is not allowed in this context" },
285
+
{ ERR(label_forward), "The use of forward labels is not allowed in this context." },
286
286
{ ERR(undefined_char), "'%s' is not defined in the character table" },
287
287
288
288
{ ERR(invalid_utf8), "Invalid text encoding detected. Asar expects UTF-8-encoded text. Please re-save this file in a text editor of choice using UTF-8 encoding." },
{ ERR(invalid_vararg), "Trying to use variadic macro parameter syntax to resolve a non variadic argument." },
298
+
296
299
{ ERR(macro_param_outside_macro), "Reference to macro parameter outside of macro" },
297
300
{ ERR(invalid_depth_resolve), "Invalid %s resolution depth: Trying to backwards-resolve a %s using %i '^', but current scope only supports up to %i '^'." },
0 commit comments