1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-05-31 22:41:37 +00:00

Label rework, part 7 (of 7)

Updated documentation for non-unique label changes.  Added a new
section to tutorial #1.

Updated examples to use non-unique labels and variable tables.

Tweaked the EditLabel radio button names.
This commit is contained in:
Andy McFadden 2019-11-18 17:45:41 -08:00
parent d3670c48e8
commit 97a5623599
11 changed files with 387 additions and 278 deletions

View File

@ -1,8 +1,8 @@
### 6502bench SourceGen dis65 v1.0 ###
{
"_ContentVersion":1,"FileDataLength":661,"FileDataCrc32":2075163852,"ProjectProps":{
"CpuName":"6502","IncludeUndocumentedInstr":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"AnalyzeUncategorizedData":true,"MinCharsForString":4,"SeekNearbyTargets":true},
"_ContentVersion":3,"FileDataLength":661,"FileDataCrc32":2075163852,"ProjectProps":{
"CpuName":"6502","IncludeUndocumentedInstr":false,"TwoByteBrk":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"AnalyzeUncategorizedData":true,"DefaultTextScanMode":"LowHighAscii","MinCharsForString":4,"SeekNearbyTargets":true,"SmartPlpHandling":true},
"PlatformSymbolFileIdentifiers":["RT:Apple/F8-ROM.sym65","RT:Apple/Cxxx-IO.sym65","RT:Apple/Applesoft.sym65","PROJ:fdraw-exports.sym65"],"ExtensionScriptFileIdentifiers":[],"ProjectSyms":{
}},
"AddressMap":[{
@ -42,7 +42,7 @@
"Low":304,"High":304,"Hint":"Code"}],"StatusFlagOverrides":{
},
"Comments":{
"0":"JMP, in case it got","2":" trashed","37":"eat token, jump","85":"match Init result","95":"init \"previous hplot\"","96":" coord to zero","100":"279/2","104":"191/2","112":"page 1","114":"$c054","118":"page 2","120":"$c055","128":"probably useful","145":"restore color","191":"eat \u0027)\u0027 (we assume)","194":"X/Y unaltered","199":"multiply x32","209":"get color","238":"about to start drawing on 2?","240":"yes, show page 1","242":"no, show page 2","252":"well, that was easy","304":"check next token","307":"is this an \"HPLOT TO\"?","311":"get the first coord","317":"see if single point","322":"nope, draw line","324":"draw point, and save x/y","327":" for subsequent HPLOT TO","330":"\"HPLOT TO\", restore the","333":" previous coord to x0/y0","336":"(can\u0027t rely on f_in_zzz","339":" being there -- we might","342":" have drawn a rect)","348":"eat the TO","351":"get the coords","354":"draw it","357":"shift 1-\u003e0 for next round","363":"another TO?","365":"yes, branch","367":"no, save prev and bail","373":"store X/Y/A in coord1","463":"get vertex buffer address","469":"copy to A1L","477":"eat the comma","480":"get index buffer address","483":"leave it in LINNUM","489":"get the count","492":"range check (0-127)","500":"nothing to do","502":"double it","503":"stash it","516":"eat the AT","519":"the code that reads the","521":" hi-res coordinates will","522":" overwrite LINNUM, so","524":" we have to save \u0026 restore","553":"use BIT to skip the inc","569":"must be 0-127","580":"0-255, ok","584":"512+","588":"280-511","593":"Y is neg or \u003e 255","606":"hi byte of vertex","608":"x-coord","612":"sign-extend hi byte","630":"y-coord","634":"sign-extend hi byte","649":"$20 or $40","654":"Center-point coordinates","655":" for array-based line","656":" draw (\u0026AT, \u0026PLOT).","657":"16-bit coordinates for","659":" array-based line draw"},
"0":"JMP, in case it got","2":" trashed","16":"(jmptbl - cmdtab - 1)","37":"eat token, jump","85":"match Init result","95":"init \"previous hplot\"","96":" coord to zero","100":"279/2","104":"191/2","112":"page 1","114":"$c054","118":"page 2","120":"$c055","128":"probably useful","145":"restore color","191":"eat \u0027)\u0027 (we assume)","194":"X/Y unaltered","199":"multiply x32","209":"get color","238":"about to start drawing on 2?","240":"yes, show page 1","242":"no, show page 2","252":"well, that was easy","304":"check next token","307":"is this an \"HPLOT TO\"?","311":"get the first coord","317":"see if single point","322":"nope, draw line","324":"draw point, and save x/y","327":" for subsequent HPLOT TO","330":"\"HPLOT TO\", restore the","333":" previous coord to x0/y0","336":"(can\u0027t rely on f_in_zzz","339":" being there -- we might","342":" have drawn a rect)","348":"eat the TO","351":"get the coords","354":"draw it","357":"shift 1-\u003e0 for next round","363":"another TO?","365":"yes, branch","367":"no, save prev and bail","373":"store X/Y/A in coord1","463":"get vertex buffer address","469":"copy to A1L","477":"eat the comma","480":"get index buffer address","483":"leave it in LINNUM","489":"get the count","492":"range check (0-127)","500":"nothing to do","502":"double it","503":"stash it","516":"eat the AT","519":"the code that reads the","521":" hi-res coordinates will","522":" overwrite LINNUM, so","524":" we have to save \u0026 restore","553":"use BIT to skip the inc","569":"must be 0-127","580":"0-255, ok","584":"512+","588":"280-511","593":"Y is neg or \u003e 255","606":"hi byte of vertex","608":"x-coord","612":"sign-extend hi byte","630":"y-coord","634":"sign-extend hi byte","649":"$20 or $40","654":"Center-point coordinates","655":" for array-based line","656":" draw (\u0026AT, \u0026PLOT).","657":"16-bit coordinates for","659":" array-based line draw"},
"LongComments":{
"-2147483647":{
"Text":"\r\nAmper-fdraw\r\nBy Andy McFadden\r\nFor fdraw version 0.3\r\n\r\nApplesoft ampersand interface for fdraw.\r\n\r\n","BoxMode":true,"MaxWidth":30,"BackgroundColor":0},
@ -103,134 +103,136 @@
"604":{
"Text":"\r\nGet VX and VY, merging with AC, and store in 16-bit g_out_x and g_out_y. Range not checked here. On entry, A has vertex index.\r\n\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"649":{
"Text":"\r\nGlobal variables.\r\n\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0}},
"Text":"\r\nGlobal variables.\r\n\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"40":{
"Text":"All of the handler entry points can fit on a single page, so it\u0027s possible to save a few bytes by dropping the high jump table and just hardcoding the first page into the jump. This requires that the ORG be at $xx00.","BoxMode":false,"MaxWidth":80,"BackgroundColor":0}},
"Notes":{
},
"UserLabels":{
"16":{
"Label":"dispatch","Value":7536,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"dispatch","Value":7536,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"40":{
"Label":"cmdtab","Value":7560,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"cmdtab","Value":7560,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"29":{
"Label":"match","Value":7549,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"match","Value":7549,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"18":{
"Label":"loop","Value":7538,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":7538,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"70":{
"Label":"jmptabh","Value":7590,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"jmptabh","Value":7590,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"55":{
"Label":"jmptabl","Value":7575,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"jmptabl","Value":7575,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"85":{
"Label":"h_new","Value":7605,"Source":"User","Type":"GlobalAddr"},
"Label":"h_new","Value":7605,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"112":{
"Label":"h_hgr","Value":7632,"Source":"User","Type":"GlobalAddr"},
"Label":"h_hgr","Value":7632,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"118":{
"Label":"h_hgr2","Value":7638,"Source":"User","Type":"GlobalAddr"},
"Label":"h_hgr2","Value":7638,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"122":{
"Label":"hgr_com","Value":7642,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"hgr_com","Value":7642,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"170":{
"Label":"pg1","Value":7690,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"pg1","Value":7690,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"177":{
"Label":"h_scrn","Value":7697,"Source":"User","Type":"GlobalAddr"},
"Label":"h_scrn","Value":7697,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"191":{
"Label":"okay","Value":7711,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"okay","Value":7711,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"209":{
"Label":"h_hcolor","Value":7729,"Source":"User","Type":"GlobalAddr"},
"Label":"h_hcolor","Value":7729,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"228":{
"Label":"h_inverse","Value":7748,"Source":"User","Type":"GlobalAddr"},
"Label":"h_inverse","Value":7748,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"219":{
"Label":"okay1","Value":7739,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"okay","Value":7739,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"649":{
"Label":"g_cur_page","Value":8169,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_cur_page","Value":8169,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"243":{
"Label":"showpg1","Value":7763,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"showpg1","Value":7763,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"252":{
"Label":"h_clear","Value":7772,"Source":"User","Type":"GlobalAddr"},
"Label":"h_clear","Value":7772,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"255":{
"Label":"h_xdraw","Value":7775,"Source":"User","Type":"GlobalAddr"},
"Label":"h_xdraw","Value":7775,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"431":{
"Label":"getltrb","Value":7951,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"getltrb","Value":7951,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"261":{
"Label":"h_draw","Value":7781,"Source":"User","Type":"GlobalAddr"},
"Label":"h_draw","Value":7781,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"267":{
"Label":"h_exp","Value":7787,"Source":"User","Type":"GlobalAddr"},
"Label":"h_exp","Value":7787,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"277":{
"Label":"okay2","Value":7797,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"okay","Value":7797,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"283":{
"Label":"h_cos","Value":7803,"Source":"User","Type":"GlobalAddr"},
"Label":"h_cos","Value":7803,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"447":{
"Label":"getcxcyr","Value":7967,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"getcxcyr","Value":7967,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"289":{
"Label":"h_sin","Value":7809,"Source":"User","Type":"GlobalAddr"},
"Label":"h_sin","Value":7809,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"295":{
"Label":"h_at","Value":7815,"Source":"User","Type":"GlobalAddr"},
"Label":"h_at","Value":7815,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"421":{
"Label":"storeac","Value":7941,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"storeac","Value":7941,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"301":{
"Label":"h_plot","Value":7821,"Source":"User","Type":"GlobalAddr"},
"Label":"h_plot","Value":7821,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"463":{
"Label":"array_draw","Value":7983,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"array_draw","Value":7983,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"304":{
"Label":"h_hplot","Value":7824,"Source":"User","Type":"GlobalAddr"},
"Label":"h_hplot","Value":7824,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"330":{
"Label":"leadingto","Value":7850,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"leadingto","Value":7850,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"370":{
"Label":"getx1y1","Value":7890,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"getx1y1","Value":7890,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"402":{
"Label":"copy1to0","Value":7922,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"copy1to0","Value":7922,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"348":{
"Label":"hplot_to","Value":7868,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"hplot_to","Value":7868,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"383":{
"Label":"copy0toprev","Value":7903,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"copy0toprev","Value":7903,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"651":{
"Label":"g_prefxl","Value":8171,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_prefxl","Value":8171,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"652":{
"Label":"g_prefixh","Value":8172,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_prefixh","Value":8172,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"653":{
"Label":"g_prevy","Value":8173,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_prevy","Value":8173,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"654":{
"Label":"g_ac_xl","Value":8174,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_ac_xl","Value":8174,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"655":{
"Label":"g_ac_xh","Value":8175,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_ac_xh","Value":8175,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"656":{
"Label":"g_ac_y","Value":8176,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_ac_y","Value":8176,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"411":{
"Label":"store0","Value":7931,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"store0","Value":7931,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"373":{
"Label":"store1","Value":7893,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"store1","Value":7893,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"562":{
"Label":"done","Value":8082,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"done","Value":8082,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"499":{
"Label":"countok","Value":8019,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"countok","Value":8019,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"534":{
"Label":"noat","Value":8054,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":8054,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"563":{
"Label":"getvertex","Value":8083,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"getvertex","Value":8083,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"554":{
"Label":"skip2","Value":8074,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"skip2","Value":8074,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"556":{
"Label":"skip","Value":8076,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"skip","Value":8076,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"657":{
"Label":"g_out_x","Value":8177,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_out_x","Value":8177,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"590":{
"Label":"xok","Value":8110,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"xok","Value":8110,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"602":{
"Label":"badv","Value":8122,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"badv","Value":8122,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"659":{
"Label":"g_out_y","Value":8179,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_out_y","Value":8179,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"603":{
"Label":"goodv","Value":8123,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"goodv","Value":8123,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"604":{
"Label":"calcvertex","Value":8124,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"calcvertex","Value":8124,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"635":{
"Label":"ypos","Value":8155,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ypos","Value":8155,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"645":{
"Label":"nocarry","Value":8165,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nocarry","Value":8165,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"650":{
"Label":"g_hcolor","Value":8170,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"g_hcolor","Value":8170,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"392":{
"Label":"storeprv","Value":7912,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"storeprv","Value":7912,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"613":{
"Label":"xok1","Value":8133,"Source":"User","Type":"LocalOrGlobalAddr"}},
"Label":"xpos","Value":8133,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"}},
"OperandFormats":{
"5":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
@ -402,4 +404,23 @@
"657":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"659":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null}}}
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null}},
"LvTables":{
"463":{
"Variables":[{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"PCL","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"count","Value":58,"Source":"Variable","Type":"ExternalAddr","LabelAnno":"None"},
{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"PCH","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"cur","Value":59,"Source":"Variable","Type":"ExternalAddr","LabelAnno":"None"},
{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"A1L","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"vertices","Value":60,"Source":"Variable","Type":"ExternalAddr","LabelAnno":"None"}],"ClearPrevious":true},
"563":{
"Variables":[{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"LINNUM","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"indices","Value":80,"Source":"Variable","Type":"ExternalAddr","LabelAnno":"None"}],"ClearPrevious":false}}}

View File

@ -1,55 +1,55 @@
### 6502bench SourceGen dis65 v1.0 ###
{
"_ContentVersion":2,"FileDataLength":2087,"FileDataCrc32":315385475,"ProjectProps":{
"_ContentVersion":3,"FileDataLength":2087,"FileDataCrc32":315385475,"ProjectProps":{
"CpuName":"65816","IncludeUndocumentedInstr":false,"TwoByteBrk":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"AnalyzeUncategorizedData":true,"DefaultTextScanMode":"LowHighAscii","MinCharsForString":4,"SeekNearbyTargets":true,"SmartPlpHandling":true},
"PlatformSymbolFileIdentifiers":["RT:Apple/F8-ROM.sym65","RT:Apple/Cxxx-IO.sym65","RT:Apple/ProDOS8.sym65","RT:Apple/IIgs-ROM.sym65","PROJ:ZipChipGS.sym65"],"ExtensionScriptFileIdentifiers":["RT:Apple/ProDOS8.cs","RT:Apple/IIgs-Toolbox.cs"],"ProjectSyms":{
"DR_ENAB":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_ENAB","Value":1690,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_ENAB","Value":1690,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"DR_OPTA":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTA","Value":1739,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTA","Value":1739,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"DR_OPTB":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTB","Value":1599,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTB","Value":1599,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"DR_OPTC":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTC","Value":1847,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTC","Value":1847,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"DR_OPTF":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTF","Value":1867,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTF","Value":1867,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"DR_OPTP":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTP","Value":1719,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_OPTP","Value":1719,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"DR_SPDBAR":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_SPDBAR","Value":1236,"Source":"Project","Type":"ExternalAddr"},
"PTR":{
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"DR_SPDBAR","Value":1236,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"ptr":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"PTR","Value":2,"Source":"Project","Type":"ExternalAddr"},
"PTR2":{
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"ptr","Value":2,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"ptr2":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"PTR2","Value":4,"Source":"Project","Type":"ExternalAddr"},
"TMP":{
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"ptr2","Value":4,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"tmp":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"TMP","Value":0,"Source":"Project","Type":"ExternalAddr"}}},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"tmp","Value":0,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"}}},
"AddressMap":[{
"Offset":0,"Addr":8192}],"TypeHints":[{
"Low":0,"High":0,"Hint":"Code"}],"StatusFlagOverrides":{
},
"Comments":{
"3":"ProDOS startup protocol","5":"65 bytes of space","74":"disable 80-col store","77":"disable 80-col hardware","80":"disable MouseText","114":"set hi bit","123":"enable?","133":"disable","185":"enable","188":"100%","226":"convert to upper case","228":"secret option","252":"mark as disabled","255":"update options","266":"mark as enabled (0)","269":"update options","274":"down arrow","278":"left arrow","286":"at max?","288":"yes, don\u0027t update","298":"up arrow","302":"right arrow","310":"under 0, don\u0027t update","436":"convert \u00271\u0027-\u00277\u0027 to 1-7","441":"want bits 1-7 in mask","461":"carriage return","465":"write stuff to zip","470":"escape","474":"restore entry values","519":"lock the registers","528":"execute MLI Quit call","546":"clear all but board disable","550":"disable board","555":"enable board","558":"get current speed","561":"shift it back","565":"set speed","584":"only want low two bits","587":"two bytes/entry","621":"need Y-reg to start at 0","634":"back to zero","644":"advance ptr according to Y","645":"(could have \u003e256 bytes of data)","668":"line 1, column 1","709":"line 5, column 1","1098":"end of list","1100":"get current zip speed","1105":"want it x8","1117":"6 chars each","1123":"16 bits for both","1128":"ignore zip_mhz+1","1131":"mult * 256","1137":"now only x16","1140":"for each tick, drop 1/16th","1151":"don\u0027t subtract on 100%","1158":"now result = MHz * 256","1163":"leftmost char","1174":"subtract 10","1186":"put space or 1 on left","1188":"(16-bit store)","1193":"return to emulation mode","1197":"exactly zero?","1201":"counting 5-1, from first","1205":"result; start at two","1209":"how often do you see this?","1211":"save counter","1213":"divisible by 64?","1215":"nope","1220":"have to SBC for decimal mode","1230":"add two","1234":"reset Y","1238":"the base 16 fraction","1242":"very important!","1243":"now that we\u0027ve got it,","1245":" store it.","1273":"now X has 1=6.25%, 10=100%","1274":"inverse mode AND mask","1276":"AND mask","1301":"X hit 0, so switch to norrmal","1305":"2 * 16 settings","1474":"want bit 4","1593":"save the mask","1595":"get ZipGS options register","1598":"strip off the boring ones","1600":"note: reverse of board enb","1640":"bit 2 = slot 1","1699":"go back and do speaker delay","1704":"slot 1","1716":"slot 7","1718":"speaker delay","1729":"set native mode","1732":"clear the output buffer","1744":"do the actual speed calc","1747":"result is decimal speed,","1750":" so convert to a decimal","1753":" string","1754":"hiaddr","1757":"loaddr","1760":"length","1763":"unsigned","1773":"back to emulation mode","1780":"seek to end","1789":"kill last char","1792":"extend length by one","1800":"now scoot the two decimal","1801":" places over by one to make","1803":" room for the period","1813":"stuff the decimal point in","1818":"init to zero","1821":"10s column","1824":"set hi bit","1826":"stuff it into static string","1829":"is it a 1 (not expected 25)","1831":"yes, we\u0027re less than 10","1838":"1s column","1841":"set hi bit","1843":"stuff it","1847":"convert to numeric","1850":"add to what we got already","1881":"back to 8 bits","1889":"set slow mode (!)","1894":"FIX me","1896":"set 100% speed","1899":"enable board","1908":"disable ext del, CPS","1915":"this is a no-op?","1920":"(should clear cshupd)","1977":"ta-da!","2002":"6-10 MHz","2003":"raw #of cycles counted","2005":"what ENABLE should be","2006":"what LOCK should look like (/16)","2007":"what SLOTENAB should look like","2008":"what OPTIONS should look like","2009":"ENABLE on entry","2010":"LOCK on entry","2011":"SLOTENAB on entry","2012":"OPTIONS on entry","2028":"key hit?","2031":"yup, exit","2035":"get count","2037":"count == 0, so wait for key","2041":"get color","2043":"save for later","2045":"get line","2047":"mult x4","2048":"8 line per, but one bit in horicnt","2050":"add 128, just because","2053":"4 wait until scanner reaches line","2056":"3","2058":"3 found it, so change color","2059":"4","2062":"all done with changes?","2063":"nope, keep going","2072":"7 regions","2073":"to be set to current color","2074":"starting at line 0","2075":"black text / white bkgnd","2076":"starting at line 1","2077":"white text / blue bkgnd","2078":"starting at line 4","2079":"yellow text / blue bkgnd","2080":"starting at line 9","2081":"green text / blue bkgnd","2082":"starting at line 18","2083":"white text / blue bkgnd","2084":"starting at line 19","2085":"current color","2086":"line 23 (one up from bottom)"},
"3":"ProDOS startup protocol","5":"65 bytes of space","6":"we look here+1 (this is len)","74":"disable 80-col store","77":"disable 80-col hardware","80":"disable MouseText","114":"set hi bit","121":"convert to upper case","123":"enable?","133":"disable","185":"enable","188":"100%","226":"convert to upper case","228":"secret option","252":"mark as disabled (1)","255":"update options","266":"mark as enabled (0)","269":"update options","274":"down arrow","278":"left arrow","286":"at max?","288":"yes, don\u0027t update","298":"up arrow","302":"right arrow","310":"under 0, don\u0027t update","436":"convert \u00271\u0027-\u00277\u0027 to 1-7","441":"want bits 1-7 in mask","447":"no toggle the slot status","461":"carriage return","465":"write stuff to zip","470":"escape","474":"restore entry values","519":"lock the registers","528":"execute MLI Quit call","546":"clear all but board disable","550":"disable board","555":"enable board","558":"get current speed","561":"shift it back","565":"set speed","584":"only want low two bits","587":"two bytes/entry","621":"need Y-reg to start at 0","634":"back to zero","644":"advance ptr according to Y","645":"(could have \u003e256 bytes of data)","668":"line 1, column 1","709":"line 5, column 1","1098":"end of list","1100":"get current zip speed","1105":"want it x8","1117":"6 chars each","1123":"16 bits for both","1128":"ignore zip_mhz+1","1131":"mult * 256","1137":"now only x16","1140":"for each tick, drop 1/16th","1151":"don\u0027t subtract on 100%","1158":"now result = MHz * 256","1163":"leftmost char","1174":"subtract 10","1183":"\"0\" * 256","1186":"put space or 1 on left","1188":"(16-bit store)","1191":"short acc, short xy","1193":"return to emulation mode","1197":"exactly zero?","1201":"counting 5-1, from first","1205":"result; start at two","1209":"how often do you see this?","1211":"save counter","1213":"divisible by 64?","1215":"nope","1220":"have to SBC for decimal mode","1230":"add two","1234":"reset Y","1238":"the base 16 fraction","1242":"very important!","1243":"now that we\u0027ve got it,","1245":" store it.","1273":"now X has 1=6.25%, 10=100%","1274":"inverse mode AND mask","1276":"AND mask","1301":"X hit 0, so switch to norrmal","1305":"2 * 16 settings","1474":"want bit 4","1593":"save the mask","1595":"get ZipGS options register","1598":"strip off the boring ones","1600":"note: reverse of board enb","1640":"bit 2 = slot 1","1699":"go back and do speaker delay","1704":"slot 1 ($780+13)","1710":"...","1716":"slot 7","1718":"speaker delay","1729":"set native mode","1730":"16 bits","1732":"clear the output buffer","1744":"do the actual speed calc","1747":"result is decimal speed,","1750":" so convert to a decimal","1753":" string","1754":"hiaddr","1757":"loaddr","1760":"length","1763":"unsigned","1766":"_Int2Dec","1773":"back to emulation mode","1780":"seek to end","1789":"kill last char","1792":"extend length by one","1800":"now scoot the two decimal","1801":" places over by one to make","1803":" room for the period","1813":"stuff the decimal point in","1818":"init to zero","1821":"10s column","1824":"set hi bit","1826":"stuff it into static string","1829":"is it a 1 (not expected 25)","1831":"yes, we\u0027re less than 10","1838":"1s column","1841":"set hi bit","1843":"stuff it","1847":"convert to numeric","1850":"add to what we got already","1867":"still 16 bits on entry","1881":"back to 8 bits","1889":"set slow mode (!)","1894":"FIX me","1896":"set 100% speed","1899":"enable board","1908":"disable ext del, CPS","1915":"this is a no-op?","1920":"(should clear cshupd)","1977":"ta-da!","1980":"short a, long x","2002":"6-10 MHz","2003":"raw #of cycles counted","2005":"what ENABLE should be","2006":"what LOCK should look like (/16)","2007":"what SLOTENAB should look like","2008":"what OPTIONS should look like","2009":"ENABLE on entry","2010":"LOCK on entry","2011":"SLOTENAB on entry","2012":"OPTIONS on entry","2028":"key hit?","2031":"yup, exit","2035":"get count","2037":"count == 0, so wait for key","2041":"get color","2043":"save for later","2045":"get line","2047":"mult x4","2048":"8 line per, but one bit in horicnt","2050":"add 128, just because","2053":"4 wait until scanner reaches line","2056":"3","2058":"3 found it, so change color","2059":"4","2062":"all done with changes?","2063":"nope, keep going","2072":"7 regions","2073":"to be set to current color","2074":"starting at line 0","2075":"black text / white bkgnd","2076":"starting at line 1","2077":"white text / blue bkgnd","2078":"starting at line 4","2079":"yellow text / blue bkgnd","2080":"starting at line 9","2081":"green text / blue bkgnd","2082":"starting at line 18","2083":"white text / blue bkgnd","2084":"starting at line 19","2085":"current color","2086":"line 23 (one up from bottom)"},
"LongComments":{
"-2147483647":{
"Text":"ZipGS Control Program\r\nBy Andy McFadden\r\nv1.0 11-Dec-91\r\nv1.1 14-Dec-91\r\n\r\nThis program is in the public domain.","BoxMode":true,"MaxWidth":30,"BackgroundColor":0},
@ -120,220 +120,232 @@
"2065":{
"Text":"Done with colors, so branch back to top of main loop.\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"2067":{
"Text":"All done, so restore color and exit.\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0}},
"Text":"All done, so restore color and exit.\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"0":{
"Text":"This program uses the \"lean \u0026 mean\" approach to screen displays. Not much choice if we want to split the colors; we have to do all processing in the vbl period. Tough to modify, but hey, that\u0027s life in the big city.","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"1121":{
"Text":"print MHz\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"1508":{
"Text":"now do each of the other five (bpacf)\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0},
"2072":{
"Text":"\r\nData\r\n\r\n","BoxMode":false,"MaxWidth":80,"BackgroundColor":0}},
"Notes":{
},
"UserLabels":{
"71":{
"Label":"startup","Value":8263,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"startup","Value":8263,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"6":{
"Label":"stval","Value":8198,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"stval","Value":8198,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"143":{
"Label":"nostartup","Value":8335,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nostartup","Value":8335,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"123":{
"Label":"isupper1","Value":8315,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"isupper1","Value":8315,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"517":{
"Label":"quit","Value":8709,"Source":"User","Type":"GlobalAddr"},
"Label":"quit","Value":8709,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"2006":{
"Label":"zip_lock","Value":10198,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"zip_lock","Value":10198,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2010":{
"Label":"ent_lock","Value":10202,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ent_lock","Value":10202,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2005":{
"Label":"zip_enb","Value":10197,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"zip_enb","Value":10197,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2009":{
"Label":"ent_enb","Value":10201,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ent_enb","Value":10201,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2007":{
"Label":"zip_slot","Value":10199,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"zip_slot","Value":10199,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2011":{
"Label":"ent_slot","Value":10203,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ent_slot","Value":10203,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2008":{
"Label":"zip_opts","Value":10200,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"zip_opts","Value":10200,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2012":{
"Label":"ent_opts","Value":10204,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ent_opts","Value":10204,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"2073":{
"Label":"cc1","Value":10265,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"cc1","Value":10265,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"2085":{
"Label":"cc2","Value":10277,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"cc2","Value":10277,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"1728":{
"Label":"calc_speed","Value":9920,"Source":"User","Type":"GlobalAddr"},
"Label":"calc_speed","Value":9920,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"581":{
"Label":"draw_scrn","Value":8773,"Source":"User","Type":"GlobalAddr"},
"Label":"draw_scrn","Value":8773,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"1100":{
"Label":"draw_speed","Value":9292,"Source":"User","Type":"GlobalAddr"},
"Label":"draw_speed","Value":9292,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"1471":{
"Label":"draw_opts","Value":9663,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"draw_opts","Value":9663,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"1638":{
"Label":"draw_slot","Value":9830,"Source":"User","Type":"GlobalAddr"},
"Label":"draw_slot","Value":9830,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"2013":{
"Label":"color_scrn","Value":10205,"Source":"User","Type":"GlobalAddr"},
"Label":"color_scrn","Value":10205,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"215":{
"Label":"loop","Value":8407,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":8407,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"228":{
"Label":"isupper","Value":8420,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"isupper","Value":8420,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"246":{
"Label":"notbang","Value":8438,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notbang","Value":8438,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"2003":{
"Label":"zip_cyc","Value":10195,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"zip_cyc","Value":10195,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"260":{
"Label":"notD","Value":8452,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notD","Value":8452,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"274":{
"Label":"notE","Value":8466,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notE","Value":8466,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"282":{
"Label":"isslow","Value":8474,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"isslow","Value":8474,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"298":{
"Label":"notslow","Value":8490,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notslow","Value":8490,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"306":{
"Label":"isfast","Value":8498,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"isfast","Value":8498,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"320":{
"Label":"notfast","Value":8512,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notfast","Value":8512,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"355":{
"Label":"notp","Value":8547,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notp","Value":8547,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"337":{
"Label":"notb","Value":8529,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notb","Value":8529,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"373":{
"Label":"nota","Value":8565,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nota","Value":8565,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"391":{
"Label":"notc","Value":8583,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notc","Value":8583,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"409":{
"Label":"notf","Value":8601,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notf","Value":8601,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"427":{
"Label":"nots","Value":8619,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nots","Value":8619,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"461":{
"Label":"notnum","Value":8653,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notnum","Value":8653,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"441":{
"Label":"sloop","Value":8633,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"sloop","Value":8633,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"470":{
"Label":"notret","Value":8662,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notret","Value":8662,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"543":{
"Label":"update_zip","Value":8735,"Source":"User","Type":"GlobalAddr"},
"Label":"update_zip","Value":8735,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"503":{
"Label":"notesc","Value":8695,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notesc","Value":8695,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"534":{
"Label":"Quit_p","Value":8726,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"Quit_p","Value":8726,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"555":{
"Label":"enab","Value":8747,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"enab","Value":8747,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"558":{
"Label":"cont","Value":8750,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"cont","Value":8750,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"660":{
"Label":"cache_tab","Value":8852,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"cache_tab","Value":8852,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"711":{
"Label":"statline","Value":8903,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"statline","Value":8903,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"668":{
"Label":"screen_data","Value":8860,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"screen_data","Value":8860,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"659":{
"Label":"done","Value":8851,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"done","Value":8851,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"635":{
"Label":"txtloop","Value":8827,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"txtloop","Value":8827,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"609":{
"Label":"loop1","Value":8801,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":8801,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"644":{
"Label":"txtdone","Value":8836,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"txtdone","Value":8836,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1310":{
"Label":"perc_tab","Value":9502,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"perc_tab","Value":9502,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1438":{
"Label":"speed","Value":9630,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"speed","Value":9630,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1109":{
"Label":"ploop","Value":9301,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ploop","Value":9301,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"2002":{
"Label":"zip_mhz","Value":10194,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"zip_mhz","Value":10194,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"1150":{
"Label":"subloop","Value":9342,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"subloop","Value":9342,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1158":{
"Label":"subdone","Value":9350,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"subdone","Value":9350,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1182":{
"Label":"ok","Value":9374,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ok","Value":9374,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1243":{
"Label":"iszero","Value":9435,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"iszero","Value":9435,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1210":{
"Label":"xloop","Value":9402,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"xloop","Value":9402,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1224":{
"Label":"not64","Value":9416,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"not64","Value":9416,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1236":{
"Label":"not5","Value":9428,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"not5","Value":9428,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1280":{
"Label":"bloop","Value":9472,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"bloop","Value":9472,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1305":{
"Label":"not0","Value":9497,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"not0","Value":9497,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1488":{
"Label":"enb","Value":9680,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"enb","Value":9680,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1496":{
"Label":"copy","Value":9688,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"copy","Value":9688,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1573":{
"Label":"disabled_txt","Value":9765,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"disabled_txt","Value":9765,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1583":{
"Label":"enabled_txt","Value":9775,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"enabled_txt","Value":9775,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1508":{
"Label":"done1","Value":9700,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"done","Value":9700,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1498":{
"Label":"loop2","Value":9690,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":9690,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1593":{
"Label":"draw_enab","Value":9785,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"draw_enab","Value":9785,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"1612":{
"Label":"enb1","Value":9804,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"enb","Value":9804,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1630":{
"Label":"enab_txt","Value":9822,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"enab_txt","Value":9822,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1634":{
"Label":"disb_txt","Value":9826,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"disb_txt","Value":9826,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1620":{
"Label":"copy1","Value":9812,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"copy","Value":9812,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1622":{
"Label":"loop3","Value":9814,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":9814,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1704":{
"Label":"dr_slot","Value":9896,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"dr_slot","Value":9896,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1720":{
"Label":"slow_txt","Value":9912,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"slow_txt","Value":9912,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1724":{
"Label":"fast_txt","Value":9916,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"fast_txt","Value":9916,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1679":{
"Label":"copy2","Value":9871,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"copy","Value":9871,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1671":{
"Label":"disb","Value":9863,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"disb","Value":9863,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1681":{
"Label":"cloop","Value":9873,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"cloop","Value":9873,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1642":{
"Label":"loop4","Value":9834,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":9834,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1703":{
"Label":"done2","Value":9895,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"done","Value":9895,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1857":{
"Label":"ascii","Value":10049,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"ascii","Value":10049,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1867":{
"Label":"getspeed","Value":10059,"Source":"User","Type":"GlobalAddr"},
"Label":"getspeed","Value":10059,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"2000":{
"Label":"result","Value":10192,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"result","Value":10192,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"1779":{
"Label":"loop5","Value":9971,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":9971,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1803":{
"Label":"loop6","Value":9995,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop2","Value":9995,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1838":{
"Label":"lt10","Value":10030,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"lt10","Value":10030,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1873":{
"Label":"caloop","Value":10065,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop","Value":10065,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1998":{
"Label":"save_cya","Value":10190,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"save_cya","Value":10190,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1999":{
"Label":"save_opts","Value":10191,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"save_opts","Value":10191,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1931":{
"Label":"bloop1","Value":10123,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop1","Value":10123,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1937":{
"Label":"bloop2","Value":10129,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop2","Value":10129,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1943":{
"Label":"bloop3","Value":10135,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop3","Value":10135,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1949":{
"Label":"bloop4","Value":10141,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"loop4","Value":10141,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1953":{
"Label":"delay1","Value":10145,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"delay1","Value":10145,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"2072":{
"Label":"color_data","Value":10264,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"color_data","Value":10264,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"2028":{
"Label":"main_loop","Value":10220,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"main_loop","Value":10220,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"2067":{
"Label":"done3","Value":10259,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"done","Value":10259,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"2041":{
"Label":"color_loop","Value":10233,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"color_loop","Value":10233,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"2053":{
"Label":"wait_loop","Value":10245,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"wait_loop","Value":10245,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"133":{
"Label":"noten","Value":8325,"Source":"User","Type":"LocalOrGlobalAddr"}},
"Label":"noten","Value":8325,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"601":{
"Label":"drawit","Value":8793,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"1661":{
"Label":"enb","Value":9853,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"}},
"OperandFormats":{
"123":{
"Length":2,"Format":"NumericLE","SubFormat":"HighAscii","SymbolRef":null},
@ -375,10 +387,10 @@
"Label":"statline","Part":"Low"}},
"601":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"screen_data","Part":"Low"}},
"Label":"screen_data§00029c","Part":"Low"}},
"605":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"screen_data","Part":"High"}},
"Label":"screen_data§00029c","Part":"High"}},
"668":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"670":{
@ -463,36 +475,36 @@
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"1112":{
"Length":3,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"speed","Part":"Low"}},
"Label":"speed§00059e","Part":"Low"}},
"1177":{
"Length":3,"Format":"NumericLE","SubFormat":"HighAscii","SymbolRef":null},
"1188":{
"Length":3,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"speed","Part":"Low"}},
"Label":"speed§00059e","Part":"Low"}},
"1253":{
"Length":2,"Format":"NumericLE","SubFormat":"HighAscii","SymbolRef":null},
"1255":{
"Length":3,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"speed","Part":"Low"}},
"Label":"speed§00059e","Part":"Low"}},
"1262":{
"Length":2,"Format":"NumericLE","SubFormat":"HighAscii","SymbolRef":null},
"1264":{
"Length":3,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"speed","Part":"Low"}},
"Label":"speed§00059e","Part":"Low"}},
"1438":{
"Length":33,"Format":"StringNullTerm","SubFormat":"HighAscii","SymbolRef":null},
"1478":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"disabled_txt","Part":"Low"}},
"Label":"disabled_txt§000625","Part":"Low"}},
"1482":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"enabled_txt","Part":"High"}},
"Label":"enabled_txt§00062f","Part":"High"}},
"1488":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"enabled_txt","Part":"Low"}},
"Label":"enabled_txt§00062f","Part":"Low"}},
"1492":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"enabled_txt","Part":"High"}},
"Label":"enabled_txt§00062f","Part":"High"}},
"1502":{
"Length":3,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"DR_ENAB","Part":"Low"}},
@ -532,25 +544,25 @@
"Length":10,"Format":"StringNullTerm","SubFormat":"HighAscii","SymbolRef":null},
"1602":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"disb_txt","Part":"Low"}},
"Label":"disb_txt§000662","Part":"Low"}},
"1612":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"enab_txt","Part":"Low"}},
"Label":"enab_txt§00065e","Part":"Low"}},
"1616":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"enab_txt","Part":"High"}},
"Label":"enab_txt§00065e","Part":"High"}},
"1661":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"slow_txt","Part":"Low"}},
"Label":"slow_txt§0006b8","Part":"Low"}},
"1665":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"slow_txt","Part":"High"}},
"Label":"slow_txt§0006b8","Part":"High"}},
"1671":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"fast_txt","Part":"Low"}},
"Label":"fast_txt§0006bc","Part":"Low"}},
"1675":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"fast_txt","Part":"High"}},
"Label":"fast_txt§0006bc","Part":"High"}},
"1704":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"1706":{
@ -569,10 +581,10 @@
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"1738":{
"Length":3,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"ascii","Part":"Low"}},
"Label":"ascii§000741","Part":"Low"}},
"1741":{
"Length":3,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{
"Label":"ascii","Part":"Low"}},
"Label":"ascii§000741","Part":"Low"}},
"1754":{
"Length":3,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"1763":{

View File

@ -1,53 +1,53 @@
### 6502bench SourceGen dis65 v1.0 ###
{
"_ContentVersion":2,"FileDataLength":194,"FileDataCrc32":177347202,"ProjectProps":{
"CpuName":"6502","IncludeUndocumentedInstr":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"_ContentVersion":3,"FileDataLength":194,"FileDataCrc32":177347202,"ProjectProps":{
"CpuName":"6502","IncludeUndocumentedInstr":false,"TwoByteBrk":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"AnalyzeUncategorizedData":true,"DefaultTextScanMode":"LowHighAscii","MinCharsForString":4,"SeekNearbyTargets":true,"SmartPlpHandling":true},
"PlatformSymbolFileIdentifiers":["RT:Apple/F8-ROM.sym65"],"ExtensionScriptFileIdentifiers":[],"ProjectSyms":{
"A1H":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"hide platform def","HasWidth":false,"Label":"A1H","Value":-1,"Source":"Project","Type":"Constant"},
"Comment":"hide platform def","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"A1H","Value":-1,"Source":"Project","Type":"Constant","LabelAnno":"None"},
"copyptr":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"2b","HasWidth":true,"Label":"copyptr","Value":0,"Source":"Project","Type":"ExternalAddr"},
"Comment":"2b","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"copyptr","Value":0,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"dstptr":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"2b A2L","HasWidth":true,"Label":"dstptr","Value":62,"Source":"Project","Type":"ExternalAddr"},
"Comment":"2b A2L","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"dstptr","Value":62,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"in_dst":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":true,"Label":"in_dst","Value":766,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"in_dst","Value":766,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"in_src":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":true,"Label":"in_src","Value":764,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"in_src","Value":764,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"lz4fh_magic":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"ascii \u0027f\u0027","HasWidth":false,"Label":"lz4fh_magic","Value":102,"Source":"Project","Type":"Constant"},
"Comment":"ascii \u0027f\u0027","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"lz4fh_magic","Value":102,"Source":"Project","Type":"Constant","LabelAnno":"None"},
"savlen":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"1b","HasWidth":false,"Label":"savlen","Value":3,"Source":"Project","Type":"ExternalAddr"},
"Comment":"1b","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"savlen","Value":3,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"savmix":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"1b","HasWidth":false,"Label":"savmix","Value":2,"Source":"Project","Type":"ExternalAddr"},
"Comment":"1b","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"savmix","Value":2,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"srcptr":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"2b A1L","HasWidth":true,"Label":"srcptr","Value":60,"Source":"Project","Type":"ExternalAddr"},
"Comment":"2b A1L","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"srcptr","Value":60,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"tok_empty":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Decimal","SymbolRef":null},
"Comment":"","HasWidth":false,"Label":"tok_empty","Value":253,"Source":"Project","Type":"Constant"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"tok_empty","Value":253,"Source":"Project","Type":"Constant","LabelAnno":"None"},
"tok_eod":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Decimal","SymbolRef":null},
"Comment":"","HasWidth":false,"Label":"tok_eod","Value":254,"Source":"Project","Type":"Constant"}}},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"tok_eod","Value":254,"Source":"Project","Type":"Constant","LabelAnno":"None"}}},
"AddressMap":[{
"Offset":0,"Addr":768}],"TypeHints":[{
"Low":0,"High":0,"Hint":"Code"}],"StatusFlagOverrides":{
@ -83,45 +83,45 @@
},
"UserLabels":{
"0":{
"Label":"entry","Value":768,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"entry","Value":768,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"31":{
"Label":"fail","Value":799,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"fail","Value":799,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"75":{
"Label":"goodmagic","Value":843,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"goodmagic","Value":843,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"37":{
"Label":"hi2","Value":805,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"hi2","Value":805,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"41":{
"Label":"hi3","Value":809,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"hi3","Value":809,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"46":{
"Label":"hi4","Value":814,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"hi4","Value":814,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"50":{
"Label":"notempty","Value":818,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notempty","Value":818,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"55":{
"Label":"specialmatch","Value":823,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"specialmatch","Value":823,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"101":{
"Label":"nohi2","Value":869,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nohi2","Value":869,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"122":{
"Label":"nohi3","Value":890,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nohi3","Value":890,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"129":{
"Label":"nohi4","Value":897,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nohi4","Value":897,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"81":{
"Label":"mainloop","Value":849,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"mainloop","Value":849,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"70":{
"Label":"hi5","Value":838,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"hi5","Value":838,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"172":{
"Label":"nohi5","Value":940,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"nohi5","Value":940,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"130":{
"Label":"noliteral","Value":898,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"noliteral","Value":898,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"105":{
"Label":"shortlit","Value":873,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"shortlit","Value":873,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"107":{
"Label":"litloop","Value":875,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"litloop","Value":875,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"147":{
"Label":"shortmatch","Value":915,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"shortmatch","Value":915,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"},
"160":{
"Label":"_desthi","Value":928,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"_desthi","Value":928,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"174":{
"Label":"copyloop","Value":942,"Source":"User","Type":"LocalOrGlobalAddr"}},
"Label":"copyloop","Value":942,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"}},
"OperandFormats":{
"27":{
"Length":2,"Format":"NumericLE","SubFormat":"Symbol","SymbolRef":{

View File

@ -1,37 +1,37 @@
### 6502bench SourceGen dis65 v1.0 ###
{
"_ContentVersion":2,"FileDataLength":121,"FileDataCrc32":657890661,"ProjectProps":{
"CpuName":"65816","IncludeUndocumentedInstr":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"_ContentVersion":3,"FileDataLength":121,"FileDataCrc32":657890661,"ProjectProps":{
"CpuName":"65816","IncludeUndocumentedInstr":false,"TwoByteBrk":false,"EntryFlags":32702671,"AutoLabelStyle":"Simple","AnalysisParams":{
"AnalyzeUncategorizedData":true,"DefaultTextScanMode":"LowHighAscii","MinCharsForString":4,"SeekNearbyTargets":true,"SmartPlpHandling":true},
"PlatformSymbolFileIdentifiers":["RT:Apple/F8-ROM.sym65"],"ExtensionScriptFileIdentifiers":[],"ProjectSyms":{
"in_dst":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":true,"Label":"in_dst","Value":766,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"in_dst","Value":766,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"in_src":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"","HasWidth":true,"Label":"in_src","Value":764,"Source":"Project","Type":"ExternalAddr"},
"Comment":"","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"in_src","Value":764,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"lz4fh_magic":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"ascii \u0027f\u0027","HasWidth":false,"Label":"lz4fh_magic","Value":102,"Source":"Project","Type":"Constant"},
"Comment":"ascii \u0027f\u0027","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"lz4fh_magic","Value":102,"Source":"Project","Type":"Constant","LabelAnno":"None"},
"savlen":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"2b","HasWidth":true,"Label":"savlen","Value":2,"Source":"Project","Type":"ExternalAddr"},
"Comment":"2b","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"savlen","Value":2,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"savmix":{
"DataDescriptor":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},
"Comment":"2b","HasWidth":true,"Label":"savmix","Value":0,"Source":"Project","Type":"ExternalAddr"},
"Comment":"2b","HasWidth":true,"Direction":"ReadWrite","MultiMask":null,"Label":"savmix","Value":0,"Source":"Project","Type":"ExternalAddr","LabelAnno":"None"},
"tok_empty":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Decimal","SymbolRef":null},
"Comment":"","HasWidth":false,"Label":"tok_empty","Value":253,"Source":"Project","Type":"Constant"},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"tok_empty","Value":253,"Source":"Project","Type":"Constant","LabelAnno":"None"},
"tok_eod":{
"DataDescriptor":{
"Length":1,"Format":"NumericLE","SubFormat":"Decimal","SymbolRef":null},
"Comment":"","HasWidth":false,"Label":"tok_eod","Value":254,"Source":"Project","Type":"Constant"}}},
"Comment":"","HasWidth":false,"Direction":"ReadWrite","MultiMask":null,"Label":"tok_eod","Value":254,"Source":"Project","Type":"Constant","LabelAnno":"None"}}},
"AddressMap":[{
"Offset":0,"Addr":768}],"TypeHints":[{
"Low":0,"High":0,"Hint":"Code"}],"StatusFlagOverrides":{
@ -51,23 +51,23 @@
},
"UserLabels":{
"0":{
"Label":"entry","Value":768,"Source":"User","Type":"GlobalAddr"},
"Label":"entry","Value":768,"Source":"User","Type":"GlobalAddr","LabelAnno":"None"},
"109":{
"Label":"_dstmod","Value":877,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"_dstmod","Value":877,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"43":{
"Label":"mainloop","Value":811,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"mainloop","Value":811,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"24":{
"Label":"fail","Value":792,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"fail","Value":792,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"30":{
"Label":"notempty","Value":798,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"notempty","Value":798,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"38":{
"Label":"specialmatch","Value":806,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"specialmatch","Value":806,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"71":{
"Label":"shortlit","Value":839,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"shortlit","Value":839,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"75":{
"Label":"noliteral","Value":843,"Source":"User","Type":"LocalOrGlobalAddr"},
"Label":"noliteral","Value":843,"Source":"User","Type":"LocalOrGlobalAddr","LabelAnno":"None"},
"99":{
"Label":"shortmatch","Value":867,"Source":"User","Type":"LocalOrGlobalAddr"}},
"Label":"shortmatch","Value":867,"Source":"User","Type":"NonUniqueLocalAddr","LabelAnno":"None"}},
"OperandFormats":{
"13":{
"Length":2,"Format":"NumericLE","SubFormat":"Hex","SymbolRef":null},

View File

@ -46,10 +46,16 @@ the
<a href="intro.html#about-symbols">proper form</a>, and not have the same
name as another symbol. If you edit an auto-generated label you will
be required to change the name.</p>
<p>The label may be marked as local, global, or global and exported.
Local labels may be modified by the assembly code generator to have a more
convenient form, such as a local loop identifier. Global labels are
always output as-is. Exported labels are added to a table that may
<p>The label may be marked as non-unique local, unique local, global,
or global and exported. The default is Global. If you start typing
a label with the non-unique label prefix character (usually '@',
configurable in application settings), the selection will automatically
switch to non-unique local.</p>
<p>Local labels may be "promoted" to global if the assembler requires it.
Most assemblers define local scope as starting clean after each global
label, but there are exceptions. If a label's name conflicts or is
incompatible with the assembler, it will be renamed.</p>
<p>Exported labels are added to a table that may
be imported by other projects (see
<a href="advanced.html#multi-bin">Working With Multiple Binaries</a>).</p>
@ -77,7 +83,11 @@ applied automatically.</p>
<p>The editor will try to prevent you from using auto-generated
labels and local variables in the symbol field. These types of symbols
can be freely renamed by SourceGen, and thus cannot be reliably
referenced by name.</p>
referenced by name.
You can reference a non-unique local by writing it with the non-unique
label prefix character (default '@'). Ambiguous non-unique references
are not allowed, so if the symbol can't be found the label will
be discarded.</p>
<p>When you select a non-default format option, a "preview" of the
formatted operand will be shown.</p>
<p>The <code>MVN</code> and <code>MVP</code> instructions on the 65816

View File

@ -37,6 +37,7 @@ and 65816 code. The official web site is
<ul>
<li><a href="intro.html#internal-address-symbols">Internal Address Symbols</a></li>
<li><a href="intro.html#external-address-symbols">External Address Symbols</a></li>
<li><a href="intro.html#unique-local-global">Unique vs. Non-Unique and Local vs. Global</a></li>
<li><a href="intro.html#weak-refs">Weak References</a></li>
<li><a href="intro.html#symbol-parts">Parts and Adjustments</a></li>
<li><a href="intro.html#nearby-targets">Automatic Use of Nearby Targets</a></li>

View File

@ -27,8 +27,8 @@ cross-reference generation and color-highlighted bookmarks help
navigate the code while trying to figure out what it does. A
disassembler should help you understand the code, not just dump the
instructions to a text file.</p>
<p>The computer I built in 2014 has a 4GHz CPU and 8GB of RAM.
I figured we should put that kind of power to good use.</p>
<p>The computer I built back in 2014 has a 4GHz CPU and 8GB of RAM. I
figured we should put the power of modern computing hardware to good use.</p>
<p>The second purpose is to facilitate sharing and collaboration. Most
disassemblers generate output for a specific assembler, or in a way that's
@ -456,9 +456,9 @@ are referred to as <i>internal</i>. They come in two varieties.</p>
The editor will try to prevent you from creating a label that has the same
name as another symbol, but if you manage to do so, the user label takes
precedence over symbols from other sources. User labels may be tagged
as local, global, or global and exported. Local vs. global is important
for the label localizer, while exported symbols can be pulled directly
into other projects.</p>
as non-unique local, unique local, global, or global and exported. Local
vs. global is important for the label localizer, while exported symbols
can be pulled directly into other projects.</p>
<p><b>Auto labels</b> are automatically generated labels placed on
instructions or data offsets that are the target of operands. They're
@ -604,11 +604,51 @@ of <code>PTR</code> becomes <code>PTR_1</code>), and variables will have
global scope.</p>
<h3><a name="weak-refs">Weak References</a></h3>
<h3><a name="unique-local-global">Unique vs. Non-Unique and Local vs. Global</a></h3>
<p>Most assemblers have a notion of "local" labels, which have a scope
that is book-ended by global labels. These are handy for generic branch
target names like "loop" or "notzero" that you might want to use in
multiple places. The exact definition of local variable scope varies
between assemblers, so labels that you want to be local might have to
be promoted to global (and probably renamed).</p>
<p>SourceGen has a similar concept with a slight twist: they're called
non-unique labels, because the goal is to be able to use the same
label in more than one place. Whether or not they actually turn out
to be local is a decision deferred to assembly source generation time.
(You can also declare a label to be a unique local if you like; the
auto-generated labels like "L1234" do this.)</p>
<p>When you're writing code for an assembler, it has to be unambiguous,
because the assembler can't guess at what the output should be. For a
disassembler, the output is known, so a greater degree of ambiguity is
tolerable. Instead of throwing errors and refusing to continue, the
source generator can modify the output until it works. For example:<p>
<pre>
@LOOP LDX #$02
@LOOP DEX
BNE @LOOP
DEY
BNE @LOOP
</pre>
<p>This would confuse an assembler. SourceGen already knows which @LOOP
is being branched to, so it can just rename one of them to "@LOOP1".</p>
<p>One situation where non-unique labels cause difficulty is with
weak symbolic references (see next section). For example, suppose
the above code then did this:</p>
<pre>
LDA #&lt;@LOOP
</pre>
<p>While it's possible to make an educated guess at which @LOOP was
meant, it's easy to get wrong. In situations like this, it's best to
give the labels different names.</p>
<h3><a name="weak-refs">Weak Symbolic References</a></h3>
<p>Symbolic references in operands are "weak references". If the named
symbol exists, the reference is used. If the symbol can't be found, the
operand is formatted in hex instead.</p>
operand is formatted in hex instead. They're called "weak" because
failing to resolve the reference isn't considered an error.</p>
<p>It's important to know this when editing a project. Consider the
following trivial chunk of code:</p>

View File

@ -370,7 +370,8 @@ direction of the initial search chosen in the Find dialog.</p>
that offsets and addresses are always hexadecimal, and offsets start
with a '+'. If you have a label that is also a valid hexadecimal
address, like "FEED", the label takes precedence. To jump to the address
write "$FEED" instead.</p>
write "$FEED" instead. If you enter a non-unique label, the selection
will jump to the nearest instance.</p>
<p>When you edit something, lines throughout the listing can change. This
is different from a source code editor, where editing a line just changes

View File

@ -149,9 +149,6 @@ file is sent to other people, since it may not otherwise be obvious from
the source file what the intended target assembler is, or what options
are required to process the file correctly.</p>
<p>"Disable label localization" turns off the
<a href="codegen.html#localizer">label localizer</a>.</p>
<h3><a name="appset-displayformat">Display Format</a></h3>
@ -168,8 +165,14 @@ Sometimes the rules allow expressions to be written simply, other times
explicit grouping with parenthesis is required. Select whichever style
you are most comfortable with.</p>
<p>Non-unique labels are identified with a prefix character, typically
'@' or ':'. The default is '@', but you can configure it to any character
that isn't valid for the start of a label. (64tass uses '_' for locals,
but that's a valid label start character, and so isn't allowed here.)
The setting affects label entry as well as display.</p>
<p>If you would like your local variables to be shown with a prefix
character, you can set one here.</p>
character, you can set it in the "local variable prefix" box.</p>
<p>The "quick set" pop-up configures the fields on this tab to match
the conventions of the specified assembler. Select your preferred assembler

View File

@ -268,6 +268,27 @@ by editing the label on line $2009 directly, but in many cases --
particularly when the operand's target address is far off screen --
it's more convenient to work through the operand editor.</p>
<h3>Unique vs. Non-Unique Labels</h3>
<p>Most assemblers have a notion of "local" labels, which go out of
scope when a non-local (global) label is encountered. The actual
definition of "local" is assembler-specific, but SourceGen allows you
to create labels that serve the same purpose.</p>
<p>By default, newly-created labels have global scope and must be
unique. You can change that by editing the label. Up near the top of
the file, at address $1002, double-click on the label ("L1002").
Change the label to "LOOP" and click the "non-unique local" button.
Click OK.</p>
<p>The label at line $1002 should now be "@LOOP". By default, '@' is
used to indicate non-unique labels, though you can change it to a
different character in the application settings.</p>
<p>At address $2019, double-click to edit the label ("L2019"). If
you type "MAIN" or "IS_OK" you'll get an error, but if you type "@LOOP"
it will be accepted. Note the "non-unique local" button is selected
automatically if you start a label with '@'. Click OK.</p>
<p>You now have two lines with the same label, separated by global
labels. The assembly source generator may "promote" them to globals or
rename them if your chosen assembler requires it.</p>
<h3>Editing Data Operands</h3>

View File

@ -57,11 +57,11 @@ limitations under the License.
<StackPanel>
<RadioButton Content="{Binding NonUniqueButtonLabel, FallbackValue=_Non-unique local (\'!\')}"
IsChecked="{Binding IsNonUniqueChecked}" IsEnabled="{Binding IsNonUniqueEnabled}"/>
<RadioButton Content="_Local (if possible)" Margin="0,4,0,0"
<RadioButton Content="Unique _local" Margin="0,4,0,0"
IsChecked="{Binding IsLocalChecked}" IsEnabled="{Binding IsLocalEnabled}"/>
<RadioButton Content="_Global" Margin="0,4,0,0"
IsChecked="{Binding IsGlobalChecked}" IsEnabled="{Binding IsGlobalEnabled}"/>
<RadioButton Content="Global and marked for _export" Margin="0,4,0,0"
<RadioButton Content="Global, marked for _export" Margin="0,4,0,0"
IsChecked="{Binding IsExportedChecked}" IsEnabled="{Binding IsExportedEnabled}"/>
</StackPanel>
</GroupBox>