Disassembly Scrolling started to work

This commit is contained in:
tudnai 2022-11-29 19:00:04 -08:00
parent 9c0148b437
commit d70df34013
5 changed files with 190 additions and 177 deletions

View File

@ -2059,6 +2059,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = W6TFQTZ4DA; DEVELOPMENT_TEAM = W6TFQTZ4DA;
GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_ENABLE_CPP_EXCEPTIONS = YES;
GCC_ENABLE_CPP_RTTI = YES; GCC_ENABLE_CPP_RTTI = YES;
@ -2255,6 +2256,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = W6TFQTZ4DA; DEVELOPMENT_TEAM = W6TFQTZ4DA;
GCC_ENABLE_CPP_EXCEPTIONS = YES; GCC_ENABLE_CPP_EXCEPTIONS = YES;
GCC_ENABLE_CPP_RTTI = YES; GCC_ENABLE_CPP_RTTI = YES;

View File

@ -3,31 +3,16 @@
version = "1.0"> version = "1.0">
<ContextStates> <ContextStates>
<ContextState <ContextState
contextName = "spkr_toggle:speaker.c"> contextName = "m6502_Debug:6502.c">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "default_MHz_6502 * 1000 * 1000 / spkr_sample_rate"> value = "m6502.debugger.SP">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "( (spkr_clk + m6502.clkfrm) / ( 1024000 / spkr_sample_rate ) ) * 2"> value = "m6502.debugger.mask.ret">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(int16_t)28000 + (int16_t)-32768"> value = "m6502.SP">
</PersistentString>
<PersistentString
value = "spkr_samples[spkr_sample_last_idx]">
</PersistentString>
<PersistentString
value = "(int)spkr_sample_idx_diff">
</PersistentString>
<PersistentString
value = "m6502.clkfrm">
</PersistentString>
<PersistentString
value = "(spkr_clk + m6502.clkfrm)">
</PersistentString>
<PersistentString
value = "( (spkr_clk + m6502.clkfrm) / ( default_MHz_6502 * 1000 * 1000 / spkr_sample_rate)) * 2">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -35,29 +20,49 @@
contextName = "HiRes.compute():HiRes.swift"> contextName = "HiRes.compute():HiRes.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "computePipelineState.maxTotalThreadsPerThreadgroup"> value = "UnsafeRawBufferPointer(result)">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "result[2]"> value = "result[2]">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "UnsafeRawBufferPointer(result)"> value = "computePipelineState.maxTotalThreadsPerThreadgroup">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "memwrite8_bank2:mmio.h"> contextName = "ViewController.mouseMoved(with:):ViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "WRD0MEM"> value = "oldLocation">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "WRHIMEM"> value = "mouseLocation">
</PersistentString>
<PersistentString
value = "view.bounds">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "AND:6502_instr_logic.h"> contextName = "closure #1 in ViewController.Update():ViewController.swift">
<PersistentStrings>
<PersistentString
value = "MEMcfg.is_80STORE">
</PersistentString>
<PersistentString
value = "self.shadowTxt">
</PersistentString>
<PersistentString
value = "txt">
</PersistentString>
<PersistentString
value = "MEMcfg.txt_page_2">
</PersistentString>
<PersistentString
value = "txtArr">
</PersistentString>
</PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "_INC:6502_instr_inc_dec.h"> contextName = "_INC:6502_instr_inc_dec.h">
@ -94,10 +99,10 @@
value = "disassLineRange[forLine]"> value = "disassLineRange[forLine]">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disassLineRange"> value = "disassLineRange.count">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disassLineRange.count"> value = "disassLineRange">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -137,10 +142,10 @@
contextName = "HiRes.draw(_:):HiRes.swift"> contextName = "HiRes.draw(_:):HiRes.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "linAddr"> value = "ctx?.height">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "ctx?.bitsPerComponent"> value = "ctx?.data">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "ctx?.width"> value = "ctx?.width">
@ -163,15 +168,15 @@
<PersistentString <PersistentString
value = "HiRes.blockCols"> value = "HiRes.blockCols">
</PersistentString> </PersistentString>
<PersistentString
value = "ctx?.bitsPerComponent">
</PersistentString>
<PersistentString
value = "linAddr">
</PersistentString>
<PersistentString <PersistentString
value = "shadowScreen"> value = "shadowScreen">
</PersistentString> </PersistentString>
<PersistentString
value = "ctx?.height">
</PersistentString>
<PersistentString
value = "ctx?.data">
</PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
@ -198,7 +203,7 @@
contextName = "DebuggerViewController.DisplayDisassembly():DebuggerViewController.swift"> contextName = "DebuggerViewController.DisplayDisassembly():DebuggerViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "line_number"> value = "disass_addr_min">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disass_addr"> value = "disass_addr">
@ -207,7 +212,7 @@
value = "m6502.PC"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disass_addr_min"> value = "line_number">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -463,10 +468,10 @@
contextName = "specialized closure #1 in DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift"> contextName = "specialized closure #1 in DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "scroll_line_number"> value = "m6502_saved.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502_saved.PC"> value = "isCurrentLine">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "highlighted_line_number"> value = "highlighted_line_number">
@ -475,7 +480,7 @@
value = "m6502.PC"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "isCurrentLine"> value = "scroll_line_number">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -489,7 +494,7 @@
value = "textDisplay_height_diff"> value = "textDisplay_height_diff">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textDisplay.frame"> value = "textDisplay_width_diff">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "frame.size"> value = "frame.size">
@ -501,7 +506,7 @@
value = "MonitorView.textViewBounds"> value = "MonitorView.textViewBounds">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textDisplay_width_diff"> value = "textDisplay.frame">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -567,10 +572,10 @@
contextName = "set_flags_NZC:common.h"> contextName = "set_flags_NZC:common.h">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "(unsigned)test "> value = "(unsigned)0xFF">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(unsigned)0xFF"> value = "(unsigned)test ">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -594,17 +599,6 @@
<ContextState <ContextState
contextName = "set_flags_Z:6502.c"> contextName = "set_flags_Z:6502.c">
</ContextState> </ContextState>
<ContextState
contextName = "DebuggerViewController.scrollWheel(with:):DebuggerViewController.swift">
<PersistentStrings>
<PersistentString
value = "event.deltaY">
</PersistentString>
<PersistentString
value = "event.deltaX">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState <ContextState
contextName = "PLA:6502_instr_stack.h"> contextName = "PLA:6502_instr_stack.h">
</ContextState> </ContextState>
@ -678,10 +672,10 @@
value = "MEMcfg.int_Cx_ROM"> value = "MEMcfg.int_Cx_ROM">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(int)IOframe"> value = "m6502.clkfrm">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.clkfrm"> value = "(int)IOframe">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -692,10 +686,10 @@
value = "Apple2_64K_AUX + 0xC600"> value = "Apple2_64K_AUX + 0xC600">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(void*)rom"> value = "Apple2_64K_RAM + 0xC600">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "Apple2_64K_RAM + 0xC600"> value = "(void*)rom">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "strlen(fullPath)"> value = "strlen(fullPath)">
@ -819,16 +813,16 @@
contextName = "DisplayScrollView.scrollWheel(with:):DisplayScrollView.swift"> contextName = "DisplayScrollView.scrollWheel(with:):DisplayScrollView.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "subviews[1].subviews"> value = "documentView">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "subviews"> value = "subviews">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "documentView"> value = "textView.defaultParagraphStyle?.lineSpacing">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textView.defaultParagraphStyle?.lineSpacing"> value = "subviews[1].subviews">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -920,25 +914,25 @@
contextName = "_fetch_dbg:mmio.c"> contextName = "_fetch_dbg:mmio.c">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "memread8_low(m6502.PC)"> value = "disassembly.pOpcode">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disassembly.pOpcode"> value = "memread8_low(m6502.PC)">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "m6502_dbg_bp_add:6502_bp.c"> contextName = "m6502_dbg_bp_add:6502_bp.c">
<PersistentStrings> <PersistentStrings>
<PersistentString
value = "bp">
</PersistentString>
<PersistentString <PersistentString
value = "mem_bp_arr"> value = "mem_bp_arr">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "bp_array"> value = "bp_array">
</PersistentString> </PersistentString>
<PersistentString
value = "bp">
</PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
@ -1009,7 +1003,7 @@
contextName = "DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift"> contextName = "DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "highlighted_line_number"> value = "disassLineRange">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "isCurrentLine"> value = "isCurrentLine">
@ -1033,7 +1027,7 @@
value = "scroll_line_number"> value = "scroll_line_number">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disassLineRange"> value = "highlighted_line_number">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1149,7 +1143,7 @@
contextName = "LoRes.Update():LoRes.swift"> contextName = "LoRes.Update():LoRes.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "blockChanged[ screenIdx ]"> value = "UInt8( (block &gt;&gt; 4) &amp; 0x0F )">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "UInt8(block)"> value = "UInt8(block)">
@ -1158,7 +1152,7 @@
value = "UInt8(block &amp; 4)"> value = "UInt8(block &amp; 4)">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "UInt8( (block &gt;&gt; 4) &amp; 0x0F )"> value = "blockChanged[ screenIdx ]">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1215,10 +1209,10 @@
value = "m6502"> value = "m6502">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(void*)Apple2_64K_RAM"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "Apple2_64K_RAM + 0x3600"> value = "m6502.clkfrm">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.ecoSpindown"> value = "m6502.ecoSpindown">
@ -1227,10 +1221,10 @@
value = "Apple2_64K_AUX + 0x3600"> value = "Apple2_64K_AUX + 0x3600">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.PC"> value = "(void*)Apple2_64K_RAM">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.clkfrm"> value = "Apple2_64K_RAM + 0x3600">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1244,7 +1238,7 @@
value = "pdl_value[pdl]"> value = "pdl_value[pdl]">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "normalized_time &gt;= pdl_value[pdl] ? 255 : 0"> value = "normalized_time">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(3300 * 255/3300)"> value = "(3300 * 255/3300)">
@ -1256,7 +1250,7 @@
value = "1 * 512 * (1 - ( 3300 / 3300.0 ))"> value = "1 * 512 * (1 - ( 3300 / 3300.0 ))">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "normalized_time"> value = "normalized_time &gt;= pdl_value[pdl] ? 255 : 0">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1275,10 +1269,10 @@
contextName = "ToolBarController.GamePort(_:):ToolBarController.swift"> contextName = "ToolBarController.GamePort(_:):ToolBarController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "ViewController.current?.mouseCursorJoystickEmulation"> value = "ViewController.current?.mouseCursorHidden">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "ViewController.current?.mouseCursorHidden"> value = "ViewController.current?.mouseCursorJoystickEmulation">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1501,7 +1495,7 @@
value = "m6502.PC"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.clkfrm"> value = "m6502.debugger.on">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textLines * (textCols+1) + textCols"> value = "textLines * (textCols+1) + textCols">
@ -1510,7 +1504,7 @@
value = "frameCounter"> value = "frameCounter">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.debugger.on"> value = "m6502.clkfrm">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "spkr_play_disk_motor_time"> value = "spkr_play_disk_motor_time">
@ -1536,6 +1530,17 @@
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState
contextName = "memwrite8_bank2:mmio.h">
<PersistentStrings>
<PersistentString
value = "WRD0MEM">
</PersistentString>
<PersistentString
value = "WRHIMEM">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState <ContextState
contextName = "ViewController.newUpdateTimer(timeInterval:):ViewController.swift"> contextName = "ViewController.newUpdateTimer(timeInterval:):ViewController.swift">
<PersistentStrings> <PersistentStrings>
@ -1544,6 +1549,35 @@
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState
contextName = "spkr_toggle:speaker.c">
<PersistentStrings>
<PersistentString
value = "default_MHz_6502 * 1000 * 1000 / spkr_sample_rate">
</PersistentString>
<PersistentString
value = "( (spkr_clk + m6502.clkfrm) / ( default_MHz_6502 * 1000 * 1000 / spkr_sample_rate)) * 2">
</PersistentString>
<PersistentString
value = "(int16_t)28000 + (int16_t)-32768">
</PersistentString>
<PersistentString
value = "spkr_samples[spkr_sample_last_idx]">
</PersistentString>
<PersistentString
value = "(int)spkr_sample_idx_diff">
</PersistentString>
<PersistentString
value = "m6502.clkfrm">
</PersistentString>
<PersistentString
value = "(spkr_clk + m6502.clkfrm)">
</PersistentString>
<PersistentString
value = "( (spkr_clk + m6502.clkfrm) / ( 1024000 / spkr_sample_rate ) ) * 2">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState <ContextState
contextName = "m6502_ColdReset:6502.c"> contextName = "m6502_ColdReset:6502.c">
<PersistentStrings> <PersistentStrings>
@ -1555,6 +1589,9 @@
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState
contextName = "AND:6502_instr_logic.h">
</ContextState>
<ContextState <ContextState
contextName = "woz_write:woz.c"> contextName = "woz_write:woz.c">
<PersistentStrings> <PersistentStrings>
@ -1565,7 +1602,7 @@
value = "new"> value = "new">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "WOZwrite.shift16"> value = "WOZtmp.shift16">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "WOZwrite.shift"> value = "WOZwrite.shift">
@ -1577,7 +1614,7 @@
value = "(1 &lt;&lt; i) - 1"> value = "(1 &lt;&lt; i) - 1">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "WOZtmp.shift16"> value = "WOZwrite.shift16">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1615,53 +1652,5 @@
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState
contextName = "m6502_Debug:6502.c">
<PersistentStrings>
<PersistentString
value = "m6502.SP">
</PersistentString>
<PersistentString
value = "m6502.debugger.mask.ret">
</PersistentString>
<PersistentString
value = "m6502.debugger.SP">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState
contextName = "ViewController.mouseMoved(with:):ViewController.swift">
<PersistentStrings>
<PersistentString
value = "oldLocation">
</PersistentString>
<PersistentString
value = "mouseLocation">
</PersistentString>
<PersistentString
value = "view.bounds">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState
contextName = "closure #1 in ViewController.Update():ViewController.swift">
<PersistentStrings>
<PersistentString
value = "txtArr">
</PersistentString>
<PersistentString
value = "self.shadowTxt">
</PersistentString>
<PersistentString
value = "txt">
</PersistentString>
<PersistentString
value = "MEMcfg.txt_page_2">
</PersistentString>
<PersistentString
value = "MEMcfg.is_80STORE">
</PersistentString>
</PersistentStrings>
</ContextState>
</ContextStates> </ContextStates>
</VariablesViewState> </VariablesViewState>

View File

@ -367,7 +367,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textView editable="NO" selectable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" horizontallyResizable="YES" verticallyResizable="YES" baseWritingDirection="leftToRight" findStyle="bar" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="Hwx-Gd-XW1" userLabel="Disass Display" customClass="DisassView" customModule="A2MacTests" customModuleProvider="target"> <textView editable="NO" selectable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" horizontallyResizable="YES" verticallyResizable="YES" baseWritingDirection="leftToRight" findStyle="bar" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="Hwx-Gd-XW1" userLabel="Disass Display" customClass="DisassView" customModule="A2MacTests" customModuleProvider="target">
<rect key="frame" x="0.0" y="-294" width="349" height="510"/> <rect key="frame" x="0.0" y="-320" width="349" height="510"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" red="0.12549019610000001" green="0.12549019610000001" blue="0.12549019610000001" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.12549019610000001" green="0.12549019610000001" blue="0.12549019610000001" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
@ -428,6 +428,9 @@
<scroller key="verticalScroller" verticalHuggingPriority="750" horizontal="NO" id="8wE-fn-MQK"> <scroller key="verticalScroller" verticalHuggingPriority="750" horizontal="NO" id="8wE-fn-MQK">
<rect key="frame" x="350" y="1" width="15" height="454"/> <rect key="frame" x="350" y="1" width="15" height="454"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<connections>
<action selector="DisassScrolled:" target="R5e-co-cXs" id="Fqn-Sa-PIH"/>
</connections>
</scroller> </scroller>
</scrollView> </scrollView>
</subviews> </subviews>
@ -544,7 +547,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textView editable="NO" selectable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" horizontallyResizable="YES" verticallyResizable="YES" baseWritingDirection="leftToRight" findStyle="bar" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="BHr-Q4-rBI" userLabel="Stack Display" customClass="DisplayView" customModule="A2MacTests" customModuleProvider="target"> <textView editable="NO" selectable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" horizontallyResizable="YES" verticallyResizable="YES" baseWritingDirection="leftToRight" findStyle="bar" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="BHr-Q4-rBI" userLabel="Stack Display" customClass="DisplayView" customModule="A2MacTests" customModuleProvider="target">
<rect key="frame" x="0.0" y="-267" width="334" height="165"/> <rect key="frame" x="0.0" y="-274" width="334" height="165"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>

View File

@ -79,7 +79,14 @@ class DebuggerViewController: NSViewController {
// For the fake text view scroller // For the fake text view scroller
// 64K RAM/2 as an average bytes / instruction // 64K RAM/2 as an average bytes / instruction
Disass_Display.string = String(repeating: "\n", count: 32768); // Disass_Display.string = String(repeating: "\n", count: 2220);
Disass_Display.string = ""
// for proper address scrolling
var r = Disass_Display.frame
r.size.height = 65535
Disass_Display.frame = r
} }
@ -97,29 +104,53 @@ class DebuggerViewController: NSViewController {
} }
override func scrollWheel(with event: NSEvent) { /// Disassembly View Scroll changed
super.scrollWheel(with: event) func disassScroller(needScroll : Bool = false) {
let location = event.locationInWindow var scrollTo = Disass_Display.visibleRect.origin
print("scrollWheel") let maxAddr = Float(0xFFD0)
let scrollPos = Disass_Scroll.verticalScroller?.floatValue ?? 0
let addr = scrollPos * maxAddr
disass_addr_pc = addr < maxAddr ? UInt16(addr) : UInt16(maxAddr)
if location.x > Disass_Scroll.frame.minX // print("disassScroller ", "scrollTo", scrollTo, "scrollPos", scrollPos, " addr:", disass_addr_pc)
&& location.x < Disass_Scroll.frame.maxX
&& location.y < Disass_Scroll.frame.minY
&& location.y < Disass_Scroll.frame.maxY
{
print("Disass_Scroll")
var scrollTo = Disass_Display.visibleRect.origin
let lineSpacing = CGFloat(1.5)
let fontPointSize = CGFloat(10) // Disass_Display.font!.pointSize
let lineHeight = fontPointSize * lineSpacing
let y1 = round( (scrollTo.y + round(event.scrollingDeltaY) * lineHeight) / lineHeight) * lineHeight
scrollTo.y = y1
if needScroll {
scrollTo.y = Disass_Display.frame.height * CGFloat(scrollPos)
Disass_Display.scroll(scrollTo) Disass_Display.scroll(scrollTo)
} }
DisassAddressPC.state = .off
DisplayDisassembly(scrollY: scrollTo.y)
}
override func scrollWheel(with event: NSEvent) {
super.scrollWheel(with: event)
let location = event.locationInWindow
// print("scrollWheel, location:", location,
// Disass_Scroll.frame.minX,
// Disass_Scroll.frame.maxX,
// Disass_Scroll.frame.minY,
// Disass_Scroll.frame.maxY
// )
if location.x > Disass_Scroll.frame.minX
&& location.x < Disass_Scroll.frame.maxX
&& location.y > Disass_Scroll.frame.minY
&& location.y < Disass_Scroll.frame.maxY
{
disassScroller()
}
}
/// Disassemby View had been Scrolled using the ScrollBar Y
/// - Parameter sender: ScrollBar
@IBAction func DisassScrolled(_ sender: NSScroller) {
disassScroller(needScroll: true)
} }
@ -271,7 +302,7 @@ N V - B D I Z C
var disass_addr : UInt16 = 0 /// Address disassembled in the window var disass_addr : UInt16 = 0 /// Address disassembled in the window
var disass_addr_pc : UInt16 = 0 /// Address to disassemble var disass_addr_pc : UInt16 = 0 /// Address to disassemble
let disass_addr_pre : UInt16 = 20 let disass_addr_pre : UInt16 = 20
let disass_addr_min_pre : UInt16 = 0 // 320 - 20 let disass_addr_min_pre : UInt16 = 32 // how many bytes we need to start to disassemble before our target address
var line_number = 0 var line_number = 0
var scroll_line_number = 0 var scroll_line_number = 0
var highlighted_line_number = 0 var highlighted_line_number = 0
@ -348,13 +379,14 @@ N V - B D I Z C
let lineFromTopToMiddle = 0 let lineFromTopToMiddle = 0
func scroll_to(view: NSTextView, line: Int) { func scroll_to(view: NSTextView, line: Int) {
let lineSpacing = 1.5 let lineSpacing = 1.5
let fontPointSize = 10.0 // Disass_Display.font!.pointSize let fontPointSize = 10.0 // Disass_Display.font!.pointSize
let lineHeight = fontPointSize * lineSpacing let lineHeight = fontPointSize * lineSpacing
let line = line > 0 ? line - 1 : 0 let line = line > 0 ? line - 1 : 0
if let lineRange = getLineRange(disassLineRange, forLine: line + lineFromTopToMiddle) { if getLineRange(disassLineRange, forLine: line + lineFromTopToMiddle) != nil {
view.scroll( NSPoint(x: 0, y: Double(line) * lineHeight ) ) view.scroll( NSPoint(x: 0, y: Double(line) * lineHeight ) )
} }
@ -544,7 +576,6 @@ N V - B D I Z C
var isCurrentLine = false var isCurrentLine = false
func DisplayDisassembly( scrollY : CGFloat = -1 ) { func DisplayDisassembly( scrollY : CGFloat = -1 ) {
// var disass = ""
var disass = "" var disass = ""
var loc = 0 var loc = 0
@ -565,7 +596,7 @@ N V - B D I Z C
disass_addr_pc = m6502.PC disass_addr_pc = m6502.PC
} }
// } // }
var need_disass = disass_addr_pc < disass_addr || UInt(disass_addr_pc) > UInt(disass_addr) + UInt(disass_addr_max) var need_disass = scrollY > 0 || disass_addr_pc < disass_addr || UInt(disass_addr_pc) > UInt(disass_addr) + UInt(disass_addr_max)
scroll_line_number = getLine(forAddr: disass_addr_pc) scroll_line_number = getLine(forAddr: disass_addr_pc)
highlighted_line_number = getLine(forAddr: m6502.PC) highlighted_line_number = getLine(forAddr: m6502.PC)
@ -637,34 +668,17 @@ N V - B D I Z C
DispatchQueue.main.async { DispatchQueue.main.async {
if need_disass { if need_disass {
self.Disass_Display.scroll(CGPoint.zero)
self.disassDisplay(str: disass) self.disassDisplay(str: disass)
} }
let currentScrollLine = self.get_scroll_line(view: self.Disass_Display) + 1 let currentScrollLine = self.get_scroll_line(view: self.Disass_Display) + 1
if self.highlighted_line_number <= currentScrollLine || self.highlighted_line_number > currentScrollLine + 25 { if self.highlighted_line_number <= currentScrollLine || self.highlighted_line_number > currentScrollLine + 25 {
if scrollY < 0 && self.DisassAddressPC.state == .off {
if scrollY < 0 { self.Disass_Display.scroll(NSPoint(x: 0, y: Int(self.disass_addr)))
self.scroll_to(view: self.Disass_Display, line: /*preLines +*/ self.scroll_line_number)
// at the beginning it takes a while to fill up the buffer -- maybe allocation issue?
// if currentScrollLine == 1 {
// // so we need to scroll a bit later when the string is already populated
// // DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
// self.scroll_to(view: self.Disass_Display, line: self.line_number_at_PC - 5)
// // }
// }
}
else {
// caller wants a specific scroll location...
self.Disass_Display.scroll(NSPoint(x: 0, y: scrollY))
} }
} }
self.highlight(view: self.Disass_Display, line: self.highlighted_line_number, attr: self.lineAttrAtPC) self.highlight(view: self.Disass_Display, line: self.highlighted_line_number, attr: self.lineAttrAtPC)
} }
// DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
// your code here
// }
} }
@ -700,6 +714,7 @@ N V - B D I Z C
// sender.stringValue = "4321" // MemoryAddressField.stringValue // sender.stringValue = "4321" // MemoryAddressField.stringValue
DisassAddressPC.state = .off DisassAddressPC.state = .off
disass_addr_pc = UInt16(sender.stringValue.hexValue()) disass_addr_pc = UInt16(sender.stringValue.hexValue())
// Disass_Display.scroll(NSPoint(x: 0, y: Int(disass_addr_pc)))
DisplayDisassembly() DisplayDisassembly()
} }

View File

@ -14,6 +14,7 @@ class DisplayScrollView : NSScrollView {
var scrollEnabled = false var scrollEnabled = false
override func scrollWheel(with event: NSEvent) { override func scrollWheel(with event: NSEvent) {
// print("DisplayScrollView.scrollWheel")
if scrollEnabled { if scrollEnabled {
super.scrollWheel(with: event) super.scrollWheel(with: event)
} }
@ -21,11 +22,14 @@ class DisplayScrollView : NSScrollView {
let textView = documentView as! NSTextView let textView = documentView as! NSTextView
var scrollTo = textView.visibleRect.origin var scrollTo = textView.visibleRect.origin
let lineSpacing = CGFloat(1.5) // textView.defaultParagraphStyle?.lineSpacing ?? CGFloat(1.5) let lineSpacing = CGFloat(1.5) // textView.defaultParagraphStyle?.lineSpacing ?? CGFloat(1.5)
let lineHeight = textView.font!.pointSize * lineSpacing let fontPointSize = CGFloat(10) // textView.font!.pointSize
let lineHeight = fontPointSize * lineSpacing
scrollTo.y = scrollTo.y + event.scrollingDeltaY * lineHeight scrollTo.y = scrollTo.y + event.scrollingDeltaY // * lineHeight
textView.scroll(scrollTo) textView.scroll(scrollTo)
DebuggerViewController.shared?.scrollWheel(with: event)
} }
} }