don't assert if a struct-type symbol hasn't been defined
[xorcyst.git] / doc / What_0027s-New.html
blobf493102dfa1a21d24528e998c1fcb086fbc64bed
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.5.2.
14 Copyright (C) 2004, 2005, 2007, 2008, 2009 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.5.2</h3>
40 More bug fixes.
42 <h3 class="heading">Version 1.5.0</h3>
44 Added some stuff, fixed some bugs.
46 <h3 class="heading">Version 1.4.5</h3>
48 <p><strong>Assembler</strong>
50 <ul>
51 <li>Fixed bug that prevented local labels from being used as operand to <code>DB</code>, <code>DW</code>, <code>DD</code> directives.
53 <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).
55 <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>).
57 <li>Added <code>BLT</code>, <code>BGE</code> as aliases for <code>BCC</code>, <code>BCS</code> (unsigned comparison).
59 </ul>
61 <p><strong>Linker</strong>
63 <ul>
64 <li>Prints physical addresses of relocated public symbols when <code>--verbose</code>.
66 </ul>
68 <h3 class="heading">Version 1.4.4</h3>
70 <p><strong>Linker</strong>
72 <ul>
73 <li>Fixed bug in RAM allocator.
75 <li>Prints statistics on RAM management (total, used, left) when <code>--verbose</code>.
77 </ul>
79 <h3 class="heading">Version 1.4.3</h3>
81 <p><strong>Assembler</strong>
83 <ul>
84 <li>Support for anonymous unions.
86 <li>Fixed bug in result of <code>sizeof</code> operator when applied to an initialized structure variable.
88 <li>Returns error code so that i.e. Make stops after the first erroneous invocation.
90 </ul>
92 <p><strong>Linker</strong>
94 <ul>
95 <li>Returns error code so that i.e. Make stops after the first erroneous invocation.
97 </ul>
99 <h3 class="heading">Version 1.4.2</h3>
101 <p><strong>Assembler</strong>
103 <ul>
104 <li>Symbols can be indexed statically, C-style; see section 3.2.16, &ldquo;Indexing symbols statically&rdquo;.
106 <li><code>sizeof</code> operator now works correctly when applied to an array.
108 <li>Fixed bug that lead to dysfunctional symbol table when using `=' equates.
110 </ul>
112 <p><strong>Linker</strong>
114 <ul>
115 <li>Fixed bug in RAM allocator.
117 <li>Fixed line number bug in error messages.
119 <li>Removed duplicate error message (unresolved symbols).
121 </ul>
123 <h3 class="heading">Version 1.4.1</h3>
125 <p>This is a bugfix release.
127 <p><strong>Assembler</strong>
129 <ul>
130 <li>Fixed bug in processing of declaration of array of user-defined type (!).
132 <li>Fixed bug that lead to no error message when declaring an uninitialized variable of non-existing user-defined type.
134 </ul>
136 <p><strong>Linker</strong>
138 <ul>
139 <li>Fixed imperfection in allocation of alignment-constrained data.
141 <li>Fixed memory leak in RAM allocator.
143 </ul>
145 <h3 class="heading">Version 1.4.0</h3>
147 <p><strong>Assembler</strong>
149 <ul>
150 <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.
152 <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).
154 <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;.
156 <li>PUBLIC modifier can be specified directly when defining a variable.
158 <li>Fixed a bug in code generation of exported string constants.
160 </ul>
162 <p><strong>Linker</strong>
164 <ul>
165 <li>Uses the information generated from the assembler <code>--debug</code> switch to produce descriptive warning and error messages.
167 <li>Rewrote data segment mapping function to take zeropage and alignment constraints into account.
169 <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.
171 <li>Fixed a linker script parsing bug.
173 </ul>
175 <h3 class="heading">Version 1.3.5</h3>
177 <p><strong>Assembler</strong>
179 <ul>
181 <li>Added ability to declare storage for array of user-defined types, C-style (works for native types too).
183 <li>Added ability to specify the type of data that a label addresses.
185 <li>Fixed bug in code generation of storage of user-defined types.
187 <li>Fixed some error detection and parsing woes.
189 <li>Added <code>DEFINE</code> directive (same semantics as <code>EQU</code>, but potentially more compact).
191 </ul>
193 <p><strong>Linker</strong>
195 <ul>
196 <li>Fixed a bad code relocation bug.
198 <li>Implemented bank operator (<code>^</code>).
200 <li><code>--verbose</code> switch now gives helpful info on what the linker is doing.
202 </ul>
204 <h3 class="heading">Version 1.3.0</h3>
206 <ul>
207 <li>Added support for user-defined records (<code>RECORD</code> directive, <code>MASK</code> operator).
209 <li>Added <code>WHILE</code> directive.
211 <li>Implemented <code>ELIF</code> directive.
213 <li>Improved <code>--define</code> switch: A value can now be assigned to the identifier (i.e. <code>--define a=10</code>).
215 <li><code>SIZEOF</code> operator now works on variable identifiers too.
217 <li>Fixed bug that prevented single-character identifiers from working.
219 <li>Added <code>--no-warn</code> switch to suppress assembler warnings.
221 <li>Early support for <code>--verbose</code> switch.
223 </ul>
225 <h3 class="heading">Version 1.2.0</h3>
227 <ul>
228 <li>Added support for forward/backward branches (<code>-</code>, <code>--</code>, <code>+</code>, <code>++</code>, and so on, up to eight levels (<code>++++++++</code>)).
230 <li>Fixed bug that caused the assembler to run out of file handles when including a large number of files.
232 <li>Fixed bug that caused <code>.db &lt;a, &gt;b</code> and other lines with <code>&lt; &gt;</code> to be parsed erroneously.
234 </ul>
236 <h3 class="heading">Version 1.1.0</h3>
238 <ul>
239 <li>Full support for user-defined types: Structures, unions and enums.
241 <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.
243 <li>Support for anonymous macros (<code>rept</code> directive).
245 <li>Crash-bug fixes (<code>if</code> directive, <code>incbin</code> directive).
247 <li>Preliminary support for <code>--define=</code><var>IDENT</var> assembler switch (can be used in <code>ifdef</code> and <code>ifndef</code> directives).
249 <li>Added <code>message</code> directive.
251 <li>Improved literal expression folding. <var>"hello " + 123</var> will now be folded to <var>"hello 123"</var>.
253 <li>Added assembler switch <code>--swap-parens</code>, which swaps the operators used for indirection from [ ] to ( ).
255 <li>Syntax of <code>extrn</code> directive changed slightly: Must now specify the symbol type.
257 <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.
259 </ul>
261 </body></html>