mirror of
https://github.com/fadden/6502bench.git
synced 2025-02-18 08:30:28 +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 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
|
// address, and a label at the end of the current region will be offset
|
||||||
// from by this.)
|
// 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);
|
sym = SymbolTable.FindAddressByValue(attr.OperandAddress - 1);
|
||||||
}
|
}
|
||||||
// TODO(maybe): if this is a 65816, check for a symbol at addr-2, for the
|
// If that didn't work, try addr-2. Good for 24-bit addresses and jump
|
||||||
// benefit of long pointers.
|
// vectors that start with a JMP instruction.
|
||||||
|
if (sym == null && (attr.OperandAddress & 0xffff) > 1 && checkNearby) {
|
||||||
|
sym = SymbolTable.FindAddressByValue(attr.OperandAddress - 2);
|
||||||
|
}
|
||||||
if (sym != null) {
|
if (sym != null) {
|
||||||
mAnattribs[offset].DataDescriptor =
|
mAnattribs[offset].DataDescriptor =
|
||||||
FormatDescriptor.Create(mAnattribs[offset].Length,
|
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)
|
HPAG @ $E6 ;hi-res page to draw on ($20 or $40)
|
||||||
SCALE @ $E7 ;hi-res graphics scale factor
|
SCALE @ $E7 ;hi-res graphics scale factor
|
||||||
|
|
||||||
AMPERV @ $03F5 ;jump to function that handles Applesoft '&' cmds
|
AMPERV @ $03F5 ;JMP to function that handles Applesoft '&' cmds
|
||||||
AMPERV_ @ $03F6 ;vector to function that handles Applesoft '&' cmds
|
|
||||||
|
|
||||||
;
|
;
|
||||||
; Useful Applesoft routines.
|
; 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
|
and navigate to the Examples directory. In A2-Amper-fdraw, select
|
||||||
<code>AMPERFDRAW#061d60</code>. Click OK to create the project.</p>
|
<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.
|
<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
|
symbol file. Select Edit > Project Properties, then the Symbol Files
|
||||||
tab. Click Add Symbol Files. The file browser starts in the RuntimeData
|
tab. Click Add Symbol Files. The file browser starts in the RuntimeData
|
||||||
directory. In the Apple folder, select <code>Applesoft.sym65</code>, and
|
directory. In the Apple folder, select <code>Applesoft.sym65</code>, and
|
||||||
click Open. Click OK to close the project properties window.</p>
|
click Open. Click OK to close the project properties window.</p>
|
||||||
<p>The STA instructions now reference <code>AMPERV_</code>, which is noted
|
<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,
|
as a call vector. We can see the code setting up a jump to $1d70. As it
|
||||||
the start address of the code is $1d60 -- the last four digits of the
|
happens, the start address of the code is $1d60 -- the last four digits of
|
||||||
filename -- so let's make that change. Double-click the initial .ORG
|
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
|
statement, and change it from $2000 to $1d60. We can now see that $1d70
|
||||||
starts right after this initial chunk of code.</p>
|
starts right after this initial chunk of code.</p>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user