<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tools.nes/lib/xixanta/src, branch main</title>
<subtitle>Tools for NES/Famicom development.
</subtitle>
<id>https://git.mssola.com/nes/tools.nes/atom?h=main</id>
<link rel='self' href='https://git.mssola.com/nes/tools.nes/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/'/>
<updated>2026-10-09T19:31:33Z</updated>
<entry>
<title>xixanta: Add an hint for the ending of data labels</title>
<updated>2026-10-09T19:31:33Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-10-09T19:31:33Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=aa5174fc055dc66e78a8aa7030c018e43cf588a1'/>
<id>urn:sha1:aa5174fc055dc66e78a8aa7030c018e43cf588a1</id>
<content type='text'>
Some raw labels may point at a bunch of data laid out with the .byte
family of statements. Add hints for each of these labels so we also have
a range for them. This way, tools like 'vnf' might be able to detect bad
accesses and these sets of data.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Don't error out on conditional .include</title>
<updated>2026-10-06T15:33:16Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-10-06T15:33:16Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=e71a73d0875c416507a3207bdec6fee145a79f68'/>
<id>urn:sha1:e71a73d0875c416507a3207bdec6fee145a79f68</id>
<content type='text'>
The hard requirement that an .include statement cannot be inside of
another block was, in the end, a bit short-sighted. Imagine the
following block:

.ifdef DEBUG
    .include "debug.s"
.endif

This is perfectly sound-looking code, and it should not be punished as
the developer is doing something that is not bending the assembler in
weird ways. Hence, just nuke this check.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>nasm: warn on labels that point out of bounds</title>
<updated>2026-09-29T21:37:48Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-09-29T21:37:48Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=54e3fc561add5ce9d776a11a286b988aacb59daa'/>
<id>urn:sha1:54e3fc561add5ce9d776a11a286b988aacb59daa</id>
<content type='text'>
Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>xixanta: simplify evaluate_hexadecimal()</title>
<updated>2026-09-15T16:03:36Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-09-15T16:03:36Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=21489a0a1b465e89d73b86689dc4b8a2a40610f9'/>
<id>urn:sha1:21489a0a1b465e89d73b86689dc4b8a2a40610f9</id>
<content type='text'>
The 'size' variable can be initialized directly from the value we get
from the match statement below. I was probably thinking more on the
style of C, but the latest Rust stable channel complained about this.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Remove the 'affected_on_page' member</title>
<updated>2026-09-06T13:47:46Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-27T05:25:08Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=c113a1c506e46f6bc5a4c95c7a786a72de081e34'/>
<id>urn:sha1:c113a1c506e46f6bc5a4c95c7a786a72de081e34</id>
<content type='text'>
It was created a long time ago in the hopes that it would be useful
whenever I wanted to create an emulator, but when that happened in the
form of 'runrom' I've seen that it's really not needed.

Remove it as it just pollutes the source code with hundreds of useless
lines.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Fix cycle count for the plp instruction</title>
<updated>2026-08-27T05:09:07Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-27T05:00:30Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=8736745acd3594d1f6200cbfb56fee5f4b17885f'/>
<id>urn:sha1:8736745acd3594d1f6200cbfb56fee5f4b17885f</id>
<content type='text'>
Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Do not mark some valid identifiers as invalid</title>
<updated>2026-08-18T14:44:27Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-18T14:44:27Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=34339ecae6c4d3284a099d34f09674b4c8bdfd62'/>
<id>urn:sha1:34339ecae6c4d3284a099d34f09674b4c8bdfd62</id>
<content type='text'>
Some identifiers like "@aa" were marked as invalid as "aa" is a
potentially hexadecimal value, but the "@" symbol actually disambiguates
this situation. Hence, if a non-alphanumeric character (that the parser
liked) is actually found, ensure it cannot be considered as an
hexadecimal value.

Provide also a test of is_valid_identifier(). The list is certainly not
exhaustive, but it should be good enough coupled with end-to-end tests.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Validate labels when walking through the context</title>
<updated>2026-08-18T14:41:34Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-18T14:41:34Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=6cb4215f55876a7fffb1fd33f2bd061283d2389f'/>
<id>urn:sha1:6cb4215f55876a7fffb1fd33f2bd061283d2389f</id>
<content type='text'>
The parser does not validate label names completely (it only takes care
of validating that it something that makes sense syntactically). The
assembler can tell whether the label is actually taking a reserved name,
or an invalid hexadecimal constant, etc.

Before this commit a user would get a cryptic "invalid identifier"
message when referencing an invalid label (e.g. "jmp 1234"). Fix this by
validating the identifier there, but also when the label was defined
before any of this.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Add global labels</title>
<updated>2026-08-18T14:39:37Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-18T14:39:37Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=fcd4c9a267b407e653ed6b21ae87f219f3e4c4af'/>
<id>urn:sha1:fcd4c9a267b407e653ed6b21ae87f219f3e4c4af</id>
<content type='text'>
These are labels that are declared by prefixing a '#' symbol to the
name, and it allows the label to be declared at the global scope instead
of the current one.

This is a feature which is not to be abused so to not make scopes
pointless, but it can be quite handy with some optimizations while not
abandoning scopes completely.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Fix the opcode for the 'sed' instruction</title>
<updated>2026-08-17T21:07:03Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-17T21:07:03Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=d479b0fbd3778f5b6fc8b63f46aa0c5364e4fe7e'/>
<id>urn:sha1:d479b0fbd3778f5b6fc8b63f46aa0c5364e4fe7e</id>
<content type='text'>
Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
</feed>
