6502bench

Digging Deeper

This tutorial will walk you through some of the fancier things SourceGen can do. We assume you've already finished the basic features tutorial, and know how to create projects and move around in them.

Start a new project. Select Generic 6502. For the data file, navigate to the Examples directory, then from the Tutorial directory select "Tutorial2".

t2-tutorial-top

Looking at the code list, the first thing you'll notice is that we immediately ran into a BRK, which is a pretty reliable sign that we're not in a code section. This particular file begins with 00 20, which could be a load address (e.g. some C64 binaries look like this). So let's start with that assumption.

As discussed in the introductory material, SourceGen separates code from data by tracing all possible execution paths from declared entry points. The generic profiles mark the first byte of the file as an entry point, but that's wrong here. We want to change the entry point to be after the 16-bit load address, at offset +000002.

t2-1000-edit1

Click on the first line of code at address $1000, and select Actions > Remove Analyzer Tags (Ctrl+H Ctrl+R). This removes the "code entry point" tag. Unfortunately the $20 is still auto-detected as being part of a string directive.

t2-1000-edit2

The string is making it hard to manipulate the next few bytes, so let's fix that by selecting Edit > Toggle Data Scan (Ctrl+D). This turns off the feature that automatically generates string and .FILL directives, so now each uncategorized byte is on its own line.

t2-1000-fmt-word

You could select the first two lines and use Actions > Edit Operand to format them as a 16-bit little-endian hex value, but there's a shortcut: select the first line with data (address $1000), then Actions > Format As Word (Ctrl+W). It automatically grabbed the following byte and combined them.

t2-1000-setcode

Since we currently believe $2000 is the load address for everything that follows, click on the line with address $1002, select Actions > Create/Edit Address Region, and enter "2000" for the address. Click OK. With that line still selected, use Actions > Tag Address As Code Start Point (Ctrl+H Ctrl+C) to tell the analyzer to start looking for code there.

t2-1000-ready

That looks better, but the branch destination ($203D) is off the bottom of the screen (unless you have a really tall screen or small fonts) because of all the intervening data. Use Edit > Toggle Data Scan (Ctrl+D) to turn the string-finder back on. Now it's easier to read.

« Previous Next »