make sure string is 0-terminated
[xorcyst.git] / doc / What_0027s-New.html
blob2593cc1052b15bd9b788c2de7cae496f28b6b940
1 <html lang="en">
2 <head>
3 <title>What's New - The XORcyst Manual</title>
4 <meta http-equiv="Content-Type" content="text/html">
5 <meta name="description" content="The XORcyst Manual">
6 <meta name="generator" content="makeinfo 4.7">
7 <link title="Top" rel="start" href="index.html#Top">
8 <link rel="prev" href="index.html#Top" title="Top">
9 <link rel="next" href="Overview.html#Overview" title="Overview">
10 <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
11 <!--
12 This is the manual for The XORcyst version 1.4.5.
14 Copyright (C) 2004, 2005 Kent Hansen.-->
15 <meta http-equiv="Content-Style-Type" content="text/css">
16 <style type="text/css"><!--
17 pre.display { font-family:inherit }
18 pre.format { font-family:inherit }
19 pre.smalldisplay { font-family:inherit; font-size:smaller }
20 pre.smallformat { font-family:inherit; font-size:smaller }
21 pre.smallexample { font-size:smaller }
22 pre.smalllisp { font-size:smaller }
23 span.sc { font-variant:small-caps }
24 span.roman { font-family: serif; font-weight: normal; }
25 --></style>
26 </head>
27 <body>
28 <div class="node">
29 <p>
30 <a name="What_0027s-New"></a>Next:&nbsp;<a rel="next" accesskey="n" href="Overview.html#Overview">Overview</a>,
31 Previous:&nbsp;<a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
32 Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
33 <hr><br>
34 </div>
36 <h2 class="chapter">1 What's New</h2>
38 <h3 class="heading">Version 1.4.5</h3>
40 <p><strong>Assembler</strong>
42 <ul>
43 <li>Fixed bug that prevented local labels from being used as operand to <code>DB</code>, <code>DW</code>, <code>DD</code> directives.
45 <li>Fixed bug in processing of array of operands to <code>DB</code>, <code>DW</code>, <code>DD</code> directives (some high-level constructs were only reduced in first item).
47 <li>Negative immediate operand no longer gives truncation warning as long as it fits in signed byte (<code>DB</code>, immediate mode instructions) or word (<code>DW</code>).
49 <li>Added <code>BLT</code>, <code>BGE</code> as aliases for <code>BCC</code>, <code>BCS</code> (unsigned comparison).
51 </ul>
53 <p><strong>Linker</strong>
55 <ul>
56 <li>Prints physical addresses of relocated public symbols when <code>--verbose</code>.
58 </ul>
60 <h3 class="heading">Version 1.4.4</h3>
62 <p><strong>Linker</strong>
64 <ul>
65 <li>Fixed bug in RAM allocator.
67 <li>Prints statistics on RAM management (total, used, left) when <code>--verbose</code>.
69 </ul>
71 <h3 class="heading">Version 1.4.3</h3>
73 <p><strong>Assembler</strong>
75 <ul>
76 <li>Support for anonymous unions.
78 <li>Fixed bug in result of <code>sizeof</code> operator when applied to an initialized structure variable.
80 <li>Returns error code so that i.e. Make stops after the first erroneous invocation.
82 </ul>
84 <p><strong>Linker</strong>
86 <ul>
87 <li>Returns error code so that i.e. Make stops after the first erroneous invocation.
89 </ul>
91 <h3 class="heading">Version 1.4.2</h3>
93 <p><strong>Assembler</strong>
95 <ul>
96 <li>Symbols can be indexed statically, C-style; see section 3.2.16, &ldquo;Indexing symbols statically&rdquo;.
98 <li><code>sizeof</code> operator now works correctly when applied to an array.
100 <li>Fixed bug that lead to dysfunctional symbol table when using `=' equates.
102 </ul>
104 <p><strong>Linker</strong>
106 <ul>
107 <li>Fixed bug in RAM allocator.
109 <li>Fixed line number bug in error messages.
111 <li>Removed duplicate error message (unresolved symbols).
113 </ul>
115 <h3 class="heading">Version 1.4.1</h3>
117 <p>This is a bugfix release.
119 <p><strong>Assembler</strong>
121 <ul>
122 <li>Fixed bug in processing of declaration of array of user-defined type (!).
124 <li>Fixed bug that lead to no error message when declaring an uninitialized variable of non-existing user-defined type.
126 </ul>
128 <p><strong>Linker</strong>
130 <ul>
131 <li>Fixed imperfection in allocation of alignment-constrained data.
133 <li>Fixed memory leak in RAM allocator.
135 </ul>
137 <h3 class="heading">Version 1.4.0</h3>
139 <p><strong>Assembler</strong>
141 <ul>
142 <li>Added <code>--debug</code> switch (short form: <code>-g</code>). When this switch is given, the assembler will retain file and line information in the object file, which the linker can use to produce more descriptive link-time warning and error messages.
144 <li><code>LABEL</code> directive can take a specific address as argument, so that &ldquo;pointers&rdquo; can be made to any part of memory (i.e. you can address memory location <code>$200</code> as a structure (or array of structures), without having to explicitly define storage for it).
146 <li>Constraints can be communicated to the linker on how contents of data segments should be mapped to RAM; see section 3.2.19, &ldquo;Controlling data mapping&rdquo;.
148 <li>PUBLIC modifier can be specified directly when defining a variable.
150 <li>Fixed a bug in code generation of exported string constants.
152 </ul>
154 <p><strong>Linker</strong>
156 <ul>
157 <li>Uses the information generated from the assembler <code>--debug</code> switch to produce descriptive warning and error messages.
159 <li>Rewrote data segment mapping function to take zeropage and alignment constraints into account.
161 <li>Improved code relocation; as a result, the current PC ($) can be used freely in any expression, and the <code>origin</code> argument for the <code>pad</code> command works.
163 <li>Fixed a linker script parsing bug.
165 </ul>
167 <h3 class="heading">Version 1.3.5</h3>
169 <p><strong>Assembler</strong>
171 <ul>
173 <li>Added ability to declare storage for array of user-defined types, C-style (works for native types too).
175 <li>Added ability to specify the type of data that a label addresses.
177 <li>Fixed bug in code generation of storage of user-defined types.
179 <li>Fixed some error detection and parsing woes.
181 <li>Added <code>DEFINE</code> directive (same semantics as <code>EQU</code>, but potentially more compact).
183 </ul>
185 <p><strong>Linker</strong>
187 <ul>
188 <li>Fixed a bad code relocation bug.
190 <li>Implemented bank operator (<code>^</code>).
192 <li><code>--verbose</code> switch now gives helpful info on what the linker is doing.
194 </ul>
196 <h3 class="heading">Version 1.3.0</h3>
198 <ul>
199 <li>Added support for user-defined records (<code>RECORD</code> directive, <code>MASK</code> operator).
201 <li>Added <code>WHILE</code> directive.
203 <li>Implemented <code>ELIF</code> directive.
205 <li>Improved <code>--define</code> switch: A value can now be assigned to the identifier (i.e. <code>--define a=10</code>).
207 <li><code>SIZEOF</code> operator now works on variable identifiers too.
209 <li>Fixed bug that prevented single-character identifiers from working.
211 <li>Added <code>--no-warn</code> switch to suppress assembler warnings.
213 <li>Early support for <code>--verbose</code> switch.
215 </ul>
217 <h3 class="heading">Version 1.2.0</h3>
219 <ul>
220 <li>Added support for forward/backward branches (<code>-</code>, <code>--</code>, <code>+</code>, <code>++</code>, and so on, up to eight levels (<code>++++++++</code>)).
222 <li>Fixed bug that caused the assembler to run out of file handles when including a large number of files.
224 <li>Fixed bug that caused <code>.db &lt;a, &gt;b</code> and other lines with <code>&lt; &gt;</code> to be parsed erroneously.
226 </ul>
228 <h3 class="heading">Version 1.1.0</h3>
230 <ul>
231 <li>Full support for user-defined types: Structures, unions and enums.
233 <li>Better separation of symbol types. In the previous versions, <em>everything</em> was a label. The assembler now distinguishes properly between labels, procedures, variables, constants and user-defined types.
235 <li>Support for anonymous macros (<code>rept</code> directive).
237 <li>Crash-bug fixes (<code>if</code> directive, <code>incbin</code> directive).
239 <li>Preliminary support for <code>--define=</code><var>IDENT</var> assembler switch (can be used in <code>ifdef</code> and <code>ifndef</code> directives).
241 <li>Added <code>message</code> directive.
243 <li>Improved literal expression folding. <var>"hello " + 123</var> will now be folded to <var>"hello 123"</var>.
245 <li>Added assembler switch <code>--swap-parens</code>, which swaps the operators used for indirection from [ ] to ( ).
247 <li>Syntax of <code>extrn</code> directive changed slightly: Must now specify the symbol type.
249 <li>Relaxed syntax of <code>db</code>, <code>dsb</code> and similar directives. If no expression is given as argument, a single item is allocated.
251 </ul>
253 </body></html>