1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-11-29 10:50:28 +00:00

Clone 20152-local-variables

Generate a 6502 test from the 65816 version by substituting the
16-bit instructions with 8-bit no-ops.  There's a lot of project
edits and weird stuff in the test, so this was much easier than
starting over.

The 65816 variant is largely unchanged, though it could now be
stripped down to the stack-offset instructions.
This commit is contained in:
Andy McFadden 2020-10-19 17:14:56 -07:00
parent 84e3dd3df2
commit 345dff7765
10 changed files with 2181 additions and 96 deletions

Binary file not shown.

View File

@ -0,0 +1,774 @@
### 6502bench SourceGen dis65 v1.0 ###
{
"_ContentVersion":4,
"FileDataLength":151,
"FileDataCrc32":-1030691121,
"ProjectProps":{
"CpuName":"6502",
"IncludeUndocumentedInstr":false,
"TwoByteBrk":false,
"EntryFlags":32702671,
"AutoLabelStyle":"Simple",
"AnalysisParams":{
"AnalyzeUncategorizedData":true,
"DefaultTextScanMode":"LowHighAscii",
"MinCharsForString":4,
"SeekNearbyTargets":false,
"UseRelocData":false,
"SmartPlpHandling":false,
"SmartPlbHandling":true},
"PlatformSymbolFileIdentifiers":[],
"ExtensionScriptFileIdentifiers":[],
"ProjectSyms":{
"__ENABLE_LABEL_LOCALIZATION":{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Decimal",
"SymbolRef":null},
"Comment":"",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"__ENABLE_LABEL_LOCALIZATION",
"Value":1,
"Source":"Project",
"Type":"Constant",
"LabelAnno":"None"},
"CONST_ONE":{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project const",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST_ONE",
"Value":241,
"Source":"Project",
"Type":"Constant",
"LabelAnno":"None"},
"CONST_ZERO":{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project const",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST_ZERO",
"Value":240,
"Source":"Project",
"Type":"Constant",
"LabelAnno":"None"},
"PROJ_ONE":{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project addr",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PROJ_ONE",
"Value":1,
"Source":"Project",
"Type":"ExternalAddr",
"LabelAnno":"None"},
"PROJ_ZERO":{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project addr",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PROJ_ZERO",
"Value":0,
"Source":"Project",
"Type":"ExternalAddr",
"LabelAnno":"None"},
"PTR_2":{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project addr, should clash",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_2",
"Value":248,
"Source":"Project",
"Type":"ExternalAddr",
"LabelAnno":"None"}}},
"AddressMap":[{
"Offset":0,
"Addr":4096},
{
"Offset":126,
"Addr":128}],
"TypeHints":[{
"Low":0,
"High":0,
"Hint":"Code"}],
"StatusFlagOverrides":{
},
"Comments":{
"4":"could be PROJ_ONE+2, but \"nearby\" is off"},
"LongComments":{
"-2147483647":{
"Text":"Edited to have duplicate labels (PROJ_ZERO, DPCODE).",
"BoxMode":false,
"MaxWidth":80,
"BackgroundColor":0},
"81":{
"Text":"Test name redefinition. This is mostly of interest for assemblers without redefinable variables, but also of interest to the cross-reference window.",
"BoxMode":false,
"MaxWidth":80,
"BackgroundColor":0}},
"Notes":{
"0":{
"Text":"Should add a variable that conflicts with an auto-label.",
"BoxMode":false,
"MaxWidth":80,
"BackgroundColor":-256}},
"UserLabels":{
"87":{
"Label":"PTR_1",
"Value":4183,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"},
"126":{
"Label":"DPCODE",
"Value":128,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"},
"136":{
"Label":"SPLIT1",
"Value":138,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"},
"143":{
"Label":"SPLIT2",
"Value":145,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"}},
"OperandFormats":{
"8":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Symbol",
"SymbolRef":{
"Label":"CONST_ZERO",
"Part":"Low"}},
"24":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Decimal",
"SymbolRef":null},
"26":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Decimal",
"SymbolRef":null},
"136":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Ascii",
"SymbolRef":null},
"143":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Ascii",
"SymbolRef":null}},
"LvTables":{
"12":{
"Variables":[{
"DataDescriptor":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAR_ZERO",
"Value":0,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAR_TWO",
"Value":2,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAR_THREE",
"Value":3,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST_ZERO_VAR",
"Value":240,
"Source":"Variable",
"Type":"Constant",
"LabelAnno":"None"}],
"ClearPrevious":false},
"28":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"clash with project symbol",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PROJ_ZERO",
"Value":16,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"clash with user label",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"DPCODE",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"34":{
"Variables":[],
"ClearPrevious":false},
"44":{
"Variables":[],
"ClearPrevious":true},
"51":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"hidden table",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"HIDDEN0",
"Value":0,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"hidden table",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"HIDDEN1",
"Value":1,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"60":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"not hidden",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"NH0",
"Value":0,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"not hidden",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"NH1",
"Value":1,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"71":{
"Variables":[{
"DataDescriptor":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR0",
"Value":16,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":4,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST0",
"Value":16,
"Source":"Variable",
"Type":"Constant",
"LabelAnno":"None"}],
"ClearPrevious":false},
"81":{
"Variables":[{
"DataDescriptor":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"#1",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR",
"Value":32,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"83":{
"Variables":[{
"DataDescriptor":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"#2",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR",
"Value":34,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"85":{
"Variables":[{
"DataDescriptor":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"#3",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR",
"Value":36,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"88":{
"Variables":[{
"DataDescriptor":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_A",
"Value":32,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"90":{
"Variables":[{
"DataDescriptor":{
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_B",
"Value":31,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"92":{
"Variables":[{
"DataDescriptor":{
"Length":4,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_C",
"Value":29,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"94":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_D",
"Value":33,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"96":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL0",
"Value":48,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL1",
"Value":49,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL2",
"Value":50,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL3",
"Value":51,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL4",
"Value":52,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL5",
"Value":53,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"108":{
"Variables":[{
"DataDescriptor":{
"Length":4,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL14",
"Value":49,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"120":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"same as org",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"DPNOP",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"138":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"SPLITTER",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"139":{
"Variables":[{
"DataDescriptor":{
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"FOO",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"145":{
"Variables":[],
"ClearPrevious":false}},
"Visualizations":[],
"VisualizationAnimations":[],
"VisualizationSets":{
},
"RelocList":{
},
"DbrValues":{
}}

View File

@ -1,207 +1,770 @@
### 6502bench SourceGen dis65 v1.0 ###
{
"_ContentVersion":2,"FileDataLength":151,"FileDataCrc32":-814797830,"ProjectProps":{
"CpuName":"65816","IncludeUndocumentedInstr":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"AnalyzeUncategorizedData":true,"DefaultTextScanMode":"LowHighAscii","MinCharsForString":4,"SeekNearbyTargets":false,"SmartPlpHandling":false},
"PlatformSymbolFileIdentifiers":[],"ExtensionScriptFileIdentifiers":[],"ProjectSyms":{
"_ContentVersion":4,
"FileDataLength":151,
"FileDataCrc32":-814797830,
"ProjectProps":{
"CpuName":"65816",
"IncludeUndocumentedInstr":false,
"TwoByteBrk":false,
"EntryFlags":32702671,
"AutoLabelStyle":"Simple",
"AnalysisParams":{
"AnalyzeUncategorizedData":true,
"DefaultTextScanMode":"LowHighAscii",
"MinCharsForString":4,
"SeekNearbyTargets":false,
"UseRelocData":false,
"SmartPlpHandling":false,
"SmartPlbHandling":true},
"PlatformSymbolFileIdentifiers":[],
"ExtensionScriptFileIdentifiers":[],
"ProjectSyms":{
"__ENABLE_LABEL_LOCALIZATION":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Decimal","SymbolRef":null},
"Comment":"","Label":"__ENABLE_LABEL_LOCALIZATION","Value":1,"Source":"Project","Type":"Constant"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Decimal",
"SymbolRef":null},
"Comment":"",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"__ENABLE_LABEL_LOCALIZATION",
"Value":1,
"Source":"Project",
"Type":"Constant",
"LabelAnno":"None"},
"CONST_ONE":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"project const","Label":"CONST_ONE","Value":241,"Source":"Project","Type":"Constant"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project const",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST_ONE",
"Value":241,
"Source":"Project",
"Type":"Constant",
"LabelAnno":"None"},
"CONST_ZERO":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"project const","Label":"CONST_ZERO","Value":240,"Source":"Project","Type":"Constant"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project const",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST_ZERO",
"Value":240,
"Source":"Project",
"Type":"Constant",
"LabelAnno":"None"},
"PROJ_ONE":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"project addr","Label":"PROJ_ONE","Value":1,"Source":"Project","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project addr",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PROJ_ONE",
"Value":1,
"Source":"Project",
"Type":"ExternalAddr",
"LabelAnno":"None"},
"PROJ_ZERO":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"project addr","Label":"PROJ_ZERO","Value":0,"Source":"Project","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project addr",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PROJ_ZERO",
"Value":0,
"Source":"Project",
"Type":"ExternalAddr",
"LabelAnno":"None"},
"PTR_2":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"project addr, should clash","Label":"PTR_2","Value":248,"Source":"Project","Type":"ExternalAddr"}}},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"project addr, should clash",
"HasWidth":false,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_2",
"Value":248,
"Source":"Project",
"Type":"ExternalAddr",
"LabelAnno":"None"}}},
"AddressMap":[{
"Offset":0,"Addr":4096},
"Offset":0,
"Addr":4096},
{
"Offset":126,"Addr":128}],"TypeHints":[{
"Low":0,"High":0,"Hint":"Code"}],"StatusFlagOverrides":{
"Offset":126,
"Addr":128}],
"TypeHints":[{
"Low":0,
"High":0,
"Hint":"Code"}],
"StatusFlagOverrides":{
},
"Comments":{
"4":"could be PROJ_ONE+2, but \"nearby\" is off"},
"LongComments":{
"-2147483647":{
"Text":"Edited to have duplicate labels (PROJ_ZERO, DPCODE).","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"Text":"Edited to have duplicate labels (PROJ_ZERO, DPCODE).",
"BoxMode":false,
"MaxWidth":80,
"BackgroundColor":0},
"81":{
"Text":"Test name redefinition. This is mostly of interest for assemblers without redefinable variables, but also of interest to the cross-reference window.","BoxMode":false,"MaxWidth":80,"BackgroundColor":0}},
"Text":"Test name redefinition. This is mostly of interest for assemblers without redefinable variables, but also of interest to the cross-reference window.",
"BoxMode":false,
"MaxWidth":80,
"BackgroundColor":0}},
"Notes":{
"0":{
"Text":"Should add a variable that conflicts with an auto-label.","BoxMode":false,"MaxWidth":80,"BackgroundColor":-256}},
},
"UserLabels":{
"87":{
"Label":"PTR_1","Value":4183,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"PTR_1",
"Value":4183,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"},
"126":{
"Label":"DPCODE","Value":128,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"DPCODE",
"Value":128,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"},
"136":{
"Label":"SPLIT1","Value":138,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"SPLIT1",
"Value":138,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"},
"143":{
"Label":"SPLIT2","Value":145,"Source":"User","Type":"LocalOrGlobalAddr"}},
"Label":"SPLIT2",
"Value":145,
"Source":"User",
"Type":"LocalOrGlobalAddr",
"LabelAnno":"None"}},
"OperandFormats":{
"8":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"CONST_ZERO","Part":"Low"}},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Symbol",
"SymbolRef":{
"Label":"CONST_ZERO",
"Part":"Low"}},
"24":{
"Length":2,"Format":"NumericLE","SubFormat":"Decimal","SymbolRef":null},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Decimal",
"SymbolRef":null},
"26":{
"Length":2,"Format":"NumericLE","SubFormat":"Decimal","SymbolRef":null},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Decimal",
"SymbolRef":null},
"136":{
"Length":2,"Format":"NumericLE","SubFormat":"Ascii","SymbolRef":null},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Ascii",
"SymbolRef":null},
"143":{
"Length":2,"Format":"NumericLE","SubFormat":"Ascii","SymbolRef":null}},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Ascii",
"SymbolRef":null}},
"LvTables":{
"12":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAR_ZERO","Value":0,"Source":"Variable","Type":"ExternalAddr"},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAR_ZERO",
"Value":0,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAR_TWO","Value":2,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAR_TWO",
"Value":2,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAR_THREE","Value":3,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAR_THREE",
"Value":3,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"CONST_ZERO_VAR","Value":240,"Source":"Variable","Type":"Constant"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST_ZERO_VAR",
"Value":240,
"Source":"Variable",
"Type":"Constant",
"LabelAnno":"None"}],
"ClearPrevious":false},
"28":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"clash with project symbol","Label":"PROJ_ZERO","Value":16,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"clash with project symbol",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PROJ_ZERO",
"Value":16,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"clash with user label","Label":"DPCODE","Value":128,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"clash with user label",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"DPCODE",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"34":{
"Variables":[],"ClearPrevious":false},
"Variables":[],
"ClearPrevious":false},
"44":{
"Variables":[],"ClearPrevious":true},
"Variables":[],
"ClearPrevious":true},
"51":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"hidden table","Label":"HIDDEN0","Value":0,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"hidden table",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"HIDDEN0",
"Value":0,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"hidden table","Label":"HIDDEN1","Value":1,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"hidden table",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"HIDDEN1",
"Value":1,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"60":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"not hidden","Label":"NH0","Value":0,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"not hidden",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"NH0",
"Value":0,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"not hidden","Label":"NH1","Value":1,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"not hidden",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"NH1",
"Value":1,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"71":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"PTR0","Value":16,"Source":"Variable","Type":"ExternalAddr"},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR0",
"Value":16,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":4,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"CONST0","Value":16,"Source":"Variable","Type":"Constant"}],"ClearPrevious":false},
"Length":4,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"CONST0",
"Value":16,
"Source":"Variable",
"Type":"Constant",
"LabelAnno":"None"}],
"ClearPrevious":false},
"81":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"#1","Label":"PTR","Value":32,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"#1",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR",
"Value":32,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"83":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"#2","Label":"PTR","Value":34,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"#2",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR",
"Value":34,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"85":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"#3","Label":"PTR","Value":36,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"#3",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR",
"Value":36,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"88":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"PTR_A","Value":32,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_A",
"Value":32,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"90":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"PTR_B","Value":31,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":2,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_B",
"Value":31,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"92":{
"Variables":[{
"DataDescriptor":{
"Length":4,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"PTR_C","Value":29,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":4,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_C",
"Value":29,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"94":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"PTR_D","Value":33,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"PTR_D",
"Value":33,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"96":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAL0","Value":48,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL0",
"Value":48,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAL1","Value":49,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL1",
"Value":49,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAL2","Value":50,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL2",
"Value":50,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAL3","Value":51,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL3",
"Value":51,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAL4","Value":52,"Source":"Variable","Type":"ExternalAddr"},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL4",
"Value":52,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAL5","Value":53,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL5",
"Value":53,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"108":{
"Variables":[{
"DataDescriptor":{
"Length":4,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"VAL14","Value":49,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":4,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"VAL14",
"Value":49,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"120":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"same as org","Label":"DPNOP","Value":128,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"same as org",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"DPNOP",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"138":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"SPLITTER","Value":128,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"SPLITTER",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"139":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","Label":"FOO","Value":128,"Source":"Variable","Type":"ExternalAddr"}],"ClearPrevious":false},
"Length":1,
"Format":"NumericLE",
"SubFormat":"Hex",
"SymbolRef":null},
"Comment":"",
"HasWidth":true,
"Direction":"ReadWrite",
"MultiMask":null,
"Label":"FOO",
"Value":128,
"Source":"Variable",
"Type":"ExternalAddr",
"LabelAnno":"None"}],
"ClearPrevious":false},
"145":{
"Variables":[],"ClearPrevious":false}}}
"Variables":[],
"ClearPrevious":false}},
"Visualizations":[],
"VisualizationAnimations":[],
"VisualizationSets":{
},
"RelocList":{
},
"DbrValues":{
}}

View File

@ -0,0 +1,118 @@
;Edited to have duplicate labels (PROJ_ZERO, DPCODE).
.cpu "6502"
.enc "sg_ascii"
.cdef $20,$7e,$20
CONST_ZERO = $f0 ;project const
PROJ_ZERO = $00 ;project addr
PROJ_ONE = $01 ;project addr
* = $1000
ldy PROJ_ZERO
lda (PROJ_ONE),y
sta $03 ;could be PROJ_ONE+2, but "nearby" is off
ldx $04
lda #CONST_ZERO
ora #$f1
VAR_ZERO .var $00
VAR_TWO .var $02
VAR_THREE .var $03
CONST_ZERO_VAR .var $f0
ldy VAR_ZERO
lda (VAR_ZERO+1),y
sta VAR_THREE
ldx $04
lda #$f0
ora #$f1
eor 0
ora 240
PROJ_ZERO_DUP1 .var $10 ;clash with project symbol
DPCODE_DUP1 .var $80 ;clash with user label
lda VAR_ZERO
lda VAR_ZERO+1
lda VAR_TWO
lda VAR_THREE
lda $04
lda PROJ_ZERO_DUP1
lda $11
lda DPCODE
ldx PROJ_ZERO
ldx PROJ_ONE
ldx $02
bit $ffa9
ldy PROJ_ZERO
ldy PROJ_ONE
ldy $02
.byte $2c
NH0 .var $00 ;not hidden
NH1 .var $01 ;not hidden
L103C lda #$fe
beq L103C
ldy NH0
ldy NH1
ldy $02
nop
PTR0 .var $10
CONST0 .var $10
lda PTR0
ldx PTR0+1
ldy $12
lda #$10
ora #$13
;Test name redefinition. This is mostly of interest for assemblers without
;redefinable variables, but also of interest to the cross-reference window.
PTR .var $20 ;#1
ldx PTR
PTR .var $22 ;#2
ldx PTR
PTR .var $24 ;#3
ldx PTR
_PTR_1 nop
PTR_A .var $20
ldy PTR_A
PTR_B .var $1f
ldy PTR_B+1
PTR_C .var $1d
ldy PTR_C+3
PTR_D .var $21
ldy PTR_C+3
VAL0 .var $30
VAL1 .var $31
VAL2 .var $32
VAL3 .var $33
VAL4 .var $34
VAL5 .var $35
and VAL0
and VAL1
and VAL2
and VAL3
and VAL4
and VAL5
VAL14 .var $31
and VAL0
and VAL14
and VAL14+1
and VAL14+2
and VAL14+3
and VAL5
DPNOP .var $80 ;same as org
lda DPCODE
jsr DPCODE
rts
.logical $0080
DPCODE nop
lda DPCODE
lda @wDPCODE
nop
ora @wDPCODE
_SPLIT1 lda #','
SPLITTER .var $80
ldx $1234
beq _SPLIT1
_SPLIT2 lda ','
ldx $5678
beq _SPLIT2
rts
.here

View File

@ -0,0 +1,228 @@
;Edited to have duplicate labels (PROJ_ZERO, DPCODE).
!cpu 6502
CONST_ZERO = $f0 ;project const
PROJ_ZERO = $00 ;project addr
PROJ_ONE = $01 ;project addr
* = $0000
!pseudopc $1000 {
ldy PROJ_ZERO
lda (PROJ_ONE),y
sta $03 ;could be PROJ_ONE+2, but "nearby" is off
ldx $04
lda #CONST_ZERO
ora #$f1
!zone Z00000c
.VAR_ZERO = $00
.VAR_TWO = $02
.VAR_THREE = $03
.CONST_ZERO_VAR = $f0
ldy .VAR_ZERO
lda (.VAR_ZERO+1),y
sta .VAR_THREE
ldx $04
lda #$f0
ora #$f1
eor 0
ora 240
!zone Z00001c
.VAR_ZERO = $00
.VAR_TWO = $02
.VAR_THREE = $03
.PROJ_ZERO_DUP1 = $10 ;clash with project symbol
.DPCODE_DUP1 = $80 ;clash with user label
.CONST_ZERO_VAR = $f0
lda .VAR_ZERO
lda .VAR_ZERO+1
lda .VAR_TWO
!zone Z000022
.VAR_ZERO = $00
.VAR_TWO = $02
.VAR_THREE = $03
.PROJ_ZERO_DUP1 = $10 ;clash with project symbol
.DPCODE_DUP1 = $80 ;clash with user label
.CONST_ZERO_VAR = $f0
lda .VAR_THREE
lda $04
lda .PROJ_ZERO_DUP1
lda $11
lda+1 DPCODE
!zone Z00002c
ldx PROJ_ZERO
ldx PROJ_ONE
ldx $02
bit $ffa9
ldy PROJ_ZERO
ldy PROJ_ONE
ldy $02
!byte $2c
!zone Z00003c
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
L103C lda #$fe
beq L103C
ldy .NH0
ldy .NH1
ldy $02
nop
!zone Z000047
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
lda .PTR0
ldx .PTR0+1
ldy $12
lda #$10
ora #$13
;Test name redefinition. This is mostly of interest for assemblers without
;redefinable variables, but also of interest to the cross-reference window.
!zone Z000051
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR = $20 ;#1
ldx .PTR
!zone Z000053
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR = $22 ;#2
ldx .PTR
!zone Z000055
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR = $24 ;#3
ldx .PTR
@PTR_1 nop
!zone Z000058
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_A = $20
.PTR = $24 ;#3
ldy .PTR_A
!zone Z00005a
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_B = $1f
.PTR = $24 ;#3
ldy .PTR_B+1
!zone Z00005c
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_C = $1d
.PTR = $24 ;#3
ldy .PTR_C+3
!zone Z00005e
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_C = $1d
.PTR_D = $21
.PTR = $24 ;#3
ldy .PTR_C+3
!zone Z000060
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_C = $1d
.PTR_D = $21
.PTR = $24 ;#3
.VAL0 = $30
.VAL1 = $31
.VAL2 = $32
.VAL3 = $33
.VAL4 = $34
.VAL5 = $35
and .VAL0
and .VAL1
and .VAL2
and .VAL3
and .VAL4
and .VAL5
!zone Z00006c
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_C = $1d
.PTR_D = $21
.PTR = $24 ;#3
.VAL0 = $30
.VAL14 = $31
.VAL5 = $35
and .VAL0
and .VAL14
and .VAL14+1
and .VAL14+2
and .VAL14+3
and .VAL5
!zone Z000078
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_C = $1d
.PTR_D = $21
.PTR = $24 ;#3
.VAL0 = $30
.VAL14 = $31
.VAL5 = $35
.DPNOP = $80 ;same as org
lda+1 DPCODE
jsr DPCODE
rts
} ;!pseudopc
!pseudopc $0080 {
DPCODE nop
lda+1 DPCODE
lda+2 DPCODE
nop
ora+2 DPCODE
@SPLIT1 lda #','
!zone Z00008a
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_C = $1d
.PTR_D = $21
.PTR = $24 ;#3
.VAL0 = $30
.VAL14 = $31
.VAL5 = $35
.SPLITTER = $80
ldx $1234
beq @SPLIT1
@SPLIT2 lda ','
!zone Z000091
.NH0 = $00 ;not hidden
.NH1 = $01 ;not hidden
.PTR0 = $10
.CONST0 = $10
.PTR_C = $1d
.PTR_D = $21
.PTR = $24 ;#3
.VAL0 = $30
.VAL14 = $31
.VAL5 = $35
.SPLITTER = $80
ldx $5678
beq @SPLIT2
rts
} ;!pseudopc

View File

@ -0,0 +1,117 @@
;Edited to have duplicate labels (PROJ_ZERO, DPCODE).
.setcpu "6502"
CONST_ZERO = $f0 ;project const
PROJ_ZERO = $00 ;project addr
PROJ_ONE = $01 ;project addr
; .segment "SEG000"
.org $1000
ldy PROJ_ZERO
lda (PROJ_ONE),y
sta $03 ;could be PROJ_ONE+2, but "nearby" is off
ldx $04
lda #CONST_ZERO
ora #$f1
VAR_ZERO .set $00
VAR_TWO .set $02
VAR_THREE .set $03
CONST_ZERO_VAR .set $f0
ldy VAR_ZERO
lda (VAR_ZERO+1),y
sta VAR_THREE
ldx $04
lda #$f0
ora #$f1
eor 0
ora 240
PROJ_ZERO_DUP1 .set $10 ;clash with project symbol
DPCODE_DUP1 .set $80 ;clash with user label
lda VAR_ZERO
lda VAR_ZERO+1
lda VAR_TWO
lda VAR_THREE
lda $04
lda PROJ_ZERO_DUP1
lda $11
lda z:DPCODE
ldx PROJ_ZERO
ldx PROJ_ONE
ldx $02
bit $ffa9
ldy PROJ_ZERO
ldy PROJ_ONE
ldy $02
.byte $2c
NH0 .set $00 ;not hidden
NH1 .set $01 ;not hidden
L103C: lda #$fe
beq L103C
ldy NH0
ldy NH1
ldy $02
nop
PTR0 .set $10
CONST0 .set $10
lda PTR0
ldx PTR0+1
ldy $12
lda #$10
ora #$13
;Test name redefinition. This is mostly of interest for assemblers without
;redefinable variables, but also of interest to the cross-reference window.
PTR .set $20 ;#1
ldx PTR
PTR .set $22 ;#2
ldx PTR
PTR .set $24 ;#3
ldx PTR
PTR_1: nop
PTR_A .set $20
ldy PTR_A
PTR_B .set $1f
ldy PTR_B+1
PTR_C .set $1d
ldy PTR_C+3
PTR_D .set $21
ldy PTR_C+3
VAL0 .set $30
VAL1 .set $31
VAL2 .set $32
VAL3 .set $33
VAL4 .set $34
VAL5 .set $35
and VAL0
and VAL1
and VAL2
and VAL3
and VAL4
and VAL5
VAL14 .set $31
and VAL0
and VAL14
and VAL14+1
and VAL14+2
and VAL14+3
and VAL5
DPNOP .set $80 ;same as org
lda z:DPCODE
jsr DPCODE
rts
; .segment "SEG001"
.org $0080
DPCODE: nop
lda DPCODE
lda a:DPCODE
nop
ora a:DPCODE
SPLIT1: lda #','
SPLITTER .set $80
ldx $1234
beq SPLIT1
@SPLIT2: lda ','
ldx $5678
beq @SPLIT2
rts

View File

@ -0,0 +1,13 @@
# 6502bench SourceGen generated linker script for 20150-local-variables
MEMORY {
MAIN: file=%O, start=%S, size=65536;
# MEM000: file=%O, start=$1000, size=126;
# MEM001: file=%O, start=$0080, size=25;
}
SEGMENTS {
CODE: load=MAIN, type=rw;
# SEG000: load=MEM000, type=rw;
# SEG001: load=MEM001, type=rw;
}
FEATURES {}
SYMBOLS {}

View File

@ -0,0 +1,114 @@
;Edited to have duplicate labels (PROJ_ZERO, DPCODE).
CONST_ZERO equ $f0 ;project const
PROJ_ZERO equ $00 ;project addr
PROJ_ONE equ $01 ;project addr
org $1000
ldy PROJ_ZERO
lda (PROJ_ONE),y
sta $03 ;could be PROJ_ONE+2, but "nearby" is off
ldx $04
lda #CONST_ZERO
ora #$f1
]VAR_ZERO equ $00
]VAR_TWO equ $02
]VAR_THREE equ $03
]CONST_ZERO_VAR equ $f0
ldy ]VAR_ZERO
lda (]VAR_ZERO+1),y
sta ]VAR_THREE
ldx $04
lda #$f0
ora #$f1
eor 0
ora 240
]PROJ_ZERO_DUP1 equ $10 ;clash with project symbol
]DPCODE_DUP1 equ $80 ;clash with user label
lda ]VAR_ZERO
lda ]VAR_ZERO+1
lda ]VAR_TWO
lda ]VAR_THREE
lda $04
lda ]PROJ_ZERO_DUP1
lda $11
lda DPCODE
ldx PROJ_ZERO
ldx PROJ_ONE
ldx $02
bit $ffa9
ldy PROJ_ZERO
ldy PROJ_ONE
ldy $02
dfb $2c
]NH0 equ $00 ;not hidden
]NH1 equ $01 ;not hidden
L103C lda #$fe
beq L103C
ldy ]NH0
ldy ]NH1
ldy $02
nop
]PTR0 equ $10
]CONST0 equ $10
lda ]PTR0
ldx ]PTR0+1
ldy $12
lda #$10
ora #$13
;Test name redefinition. This is mostly of interest for assemblers without
;redefinable variables, but also of interest to the cross-reference window.
]PTR equ $20 ;#1
ldx ]PTR
]PTR equ $22 ;#2
ldx ]PTR
]PTR equ $24 ;#3
ldx ]PTR
:PTR_1 nop
]PTR_A equ $20
ldy ]PTR_A
]PTR_B equ $1f
ldy ]PTR_B+1
]PTR_C equ $1d
ldy ]PTR_C+3
]PTR_D equ $21
ldy ]PTR_C+3
]VAL0 equ $30
]VAL1 equ $31
]VAL2 equ $32
]VAL3 equ $33
]VAL4 equ $34
]VAL5 equ $35
and ]VAL0
and ]VAL1
and ]VAL2
and ]VAL3
and ]VAL4
and ]VAL5
]VAL14 equ $31
and ]VAL0
and ]VAL14
and ]VAL14+1
and ]VAL14+2
and ]VAL14+3
and ]VAL5
]DPNOP equ $80 ;same as org
lda DPCODE
jsr DPCODE
rts
org $0080
DPCODE nop
lda DPCODE
lda: DPCODE
nop
ora: DPCODE
:SPLIT1 lda #$2c
]SPLITTER equ $80
ldx $1234
beq :SPLIT1
:SPLIT2 lda $2c
ldx $5678
beq :SPLIT2
rts

View File

@ -0,0 +1,159 @@
; Copyright 2019 faddenSoft. All Rights Reserved.
; See the LICENSE.txt file for distribution terms (Apache 2.0).
;
; Assembler: Merlin 32
; 6502 version
org $1000
; Define these as project symbols.
PROJ_ZERO equ $00
PROJ_ONE equ $01
CONST_ZERO equ $f0
CONST_ONE equ $f1
PTR_2 equ $f8 ;used to test uniqifier later on
ldy PROJ_ZERO
lda (PROJ_ONE),y
sta $03 ;undefined yet
ldx $04 ;undefined yet
lda #CONST_ZERO
ora #CONST_ONE
; TABLE - test redefinition of project symbol values
]VAR_ZERO equ $00 ;2b
]VAR_TWO equ $02 ;1b
]VAR_THREE equ $03 ;1b
]CONST_ZERO equ $f0 ;1b const
ldy PROJ_ZERO ;should become ]VAR_ZERO
lda (PROJ_ONE),y ;should become ]VAR_ZERO+1
sta $03 ;should become ]VAR_THREE
ldx $04 ;undefined yet
lda #CONST_ZERO
ora #CONST_ONE
eor $00 ;explicitly format as decimal
ora $f0 ;explicitly format as decimal
; TABLE - test redefinition of symbol labels
]PROJ_ZERO equ $10 ;EDIT: rename to PROJ_ZERO
]DPCODE equ $80 ;EDIT: rename to DPCODE
lda $00
lda $01
lda $02
lda $03
lda $04
lda $10
lda $11
lda $80
; TABLE/CLEAR - empty table
ldx $00
ldx $01
ldx $02
; confirm that hidden tables are skipped over
dfb $2c
; TABLE (hidden)
]HIDDEN0 equ $00
]HIDDEN1 equ $01
lda #$ff
ldy $00
ldy $01
ldy $02
dfb $2c
; TABLE (not hidden)
]NH0 equ $00
]NH1 equ $01
:label lda #$fe
beq :label
ldy $00
ldy $01
ldy $02
nop
; TABLE
]PTR0 equ $10 ;2b
]CONST0 equ $10 ;4b
lda ]PTR0
ldx ]PTR0+1
ldy ]PTR0+2 ;should be hex
lda #]CONST0
ora #]CONST0+3
; test redefinition of name
; TABLE
]PTR equ $20 ;2b
ldx ]PTR
; TABLE
]PTR equ $22 ;2b
ldx ]PTR
; TABLE
]PTR equ $24 ;2b
ldx ]PTR
; define user label to try to trip up the uniqifier
PTR_1 nop
; test redefinition of value
; TABLE/CLEAR
]PTR_A equ $20 ;2b
ldy ]PTR_A ;PTR_A
]PTR_B equ $1f ;2b
ldy ]PTR_A ;PTR_B+1
]PTR_C equ $1d ;4b
ldy ]PTR_A ;PTR_C+3
]PTR_D equ $21 ;1b
ldy ]PTR_A ;should come up as hex
; TABLE
]VAL0 equ $30 ;1b
]VAL1 equ $31 ;1b
]VAL2 equ $32 ;1b
]VAL3 equ $33 ;1b
]VAL4 equ $34 ;1b
]VAL5 equ $35 ;1b
and ]VAL0
and ]VAL1
and ]VAL2
and ]VAL3
and ]VAL4
and ]VAL5
; TABLE
]VAL14 equ $31 ;4b
and ]VAL0
and ]VAL1 ;these four become ]VAL14
and ]VAL2
and ]VAL3
and ]VAL4
and ]VAL5
; TABLE - test direct page label vs. variable
]DPNOP equ $80
lda ]DPNOP
jsr DPCODE
rts
org $0080
DPCODE nop
lda DPCODE ;should be DPNOP
lda |DPCODE ;should be DPCODE
nop
ora |DPCODE ;should be DPCODE
; Local label test. ca65 v2.18 erases cheap local label scope when it
; encounters a constant or .set.
LOCAL1 lda #$2c ;EDIT: format as ASCII
ldx $1234 ;put variable table here with one arbitrary entry
beq LOCAL1
LOCAL2 lda $2c ;EDIT: format as ASCII
ldx $5678 ;put empty variable table here
beq LOCAL2
rts

View File

@ -2,8 +2,7 @@
; See the LICENSE.txt file for distribution terms (Apache 2.0).
;
; Assembler: Merlin 32
; EDIT: add __ENABLE_LABEL_LOCALIZATION to project symbols
; 65816 version
org $1000