mirror of
https://github.com/fadden/6502bench.git
synced 2024-11-26 06:49:19 +00:00
Expand reach of external symbol nearby-target test
If PTR is defined as an external symbol, we were automatically symbol-ifying PTR+1. Now we also symbolify PTR+2. This helps with 24-bit pointers on the 65816, and 16-bit "jump vectors", where the address is preceded by a JMP opcode. Removed the "AMPERV_" symbol I added to make the tutorial look right.
This commit is contained in:
parent
3a001c5f8a
commit
b37d3dba02
@ -702,11 +702,14 @@ namespace SourceGen {
|
||||
// address map split as well, since the first byte past is an external
|
||||
// address, and a label at the end of the current region will be offset
|
||||
// from by this.)
|
||||
if (sym == null && (attr.OperandAddress & 0xffff) != 0xffff && checkNearby) {
|
||||
if (sym == null && (attr.OperandAddress & 0xffff) > 0 && checkNearby) {
|
||||
sym = SymbolTable.FindAddressByValue(attr.OperandAddress - 1);
|
||||
}
|
||||
// TODO(maybe): if this is a 65816, check for a symbol at addr-2, for the
|
||||
// benefit of long pointers.
|
||||
// If that didn't work, try addr-2. Good for 24-bit addresses and jump
|
||||
// vectors that start with a JMP instruction.
|
||||
if (sym == null && (attr.OperandAddress & 0xffff) > 1 && checkNearby) {
|
||||
sym = SymbolTable.FindAddressByValue(attr.OperandAddress - 2);
|
||||
}
|
||||
if (sym != null) {
|
||||
mAnattribs[offset].DataDescriptor =
|
||||
FormatDescriptor.Create(mAnattribs[offset].Length,
|
||||
|
@ -26,8 +26,7 @@ ERRFLG @ $D8 ;$80 if onerr active
|
||||
HPAG @ $E6 ;hi-res page to draw on ($20 or $40)
|
||||
SCALE @ $E7 ;hi-res graphics scale factor
|
||||
|
||||
AMPERV @ $03F5 ;jump to function that handles Applesoft '&' cmds
|
||||
AMPERV_ @ $03F6 ;vector to function that handles Applesoft '&' cmds
|
||||
AMPERV @ $03F5 ;JMP to function that handles Applesoft '&' cmds
|
||||
|
||||
;
|
||||
; Useful Applesoft routines.
|
||||
|
@ -327,15 +327,16 @@ can do. We assume you've already finished the Basic Features tutorial.</p>
|
||||
and navigate to the Examples directory. In A2-Amper-fdraw, select
|
||||
<code>AMPERFDRAW#061d60</code>. Click OK to create the project.</p>
|
||||
<p>Not a lot to see here -- just half a dozen lines of loads and stores.
|
||||
We can make it a bit more meaningful by loading an additional platform
|
||||
This particular program interfaces with Applesoft BASIC, so we can make it
|
||||
a bit more meaningful by loading an additional platform
|
||||
symbol file. Select Edit > Project Properties, then the Symbol Files
|
||||
tab. Click Add Symbol Files. The file browser starts in the RuntimeData
|
||||
directory. In the Apple folder, select <code>Applesoft.sym65</code>, and
|
||||
click Open. Click OK to close the project properties window.</p>
|
||||
<p>The STA instructions now reference <code>AMPERV_</code>, which is noted
|
||||
as a call vector. We can see it setting up a call to $1d70. As it happens,
|
||||
the start address of the code is $1d60 -- the last four digits of the
|
||||
filename -- so let's make that change. Double-click the initial .ORG
|
||||
<p>The STA instructions now reference <code>AMPERV</code>, which is noted
|
||||
as a call vector. We can see the code setting up a jump to $1d70. As it
|
||||
happens, the start address of the code is $1d60 -- the last four digits of
|
||||
the filename -- so let's make that change. Double-click the initial .ORG
|
||||
statement, and change it from $2000 to $1d60. We can now see that $1d70
|
||||
starts right after this initial chunk of code.</p>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user