Compare commits

...

5 Commits

4 changed files with 215 additions and 190 deletions

View File

@ -2022,7 +2022,7 @@
GCC_ENABLE_CPP_RTTI = YES; GCC_ENABLE_CPP_RTTI = YES;
GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_FAST_MATH = YES; GCC_FAST_MATH = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = g;
GCC_UNROLL_LOOPS = NO; GCC_UNROLL_LOOPS = NO;
HEADER_SEARCH_PATHS = src/cpu; HEADER_SEARCH_PATHS = src/cpu;
INFOPLIST_FILE = "A2Mac/Debug-Info.plist"; INFOPLIST_FILE = "A2Mac/Debug-Info.plist";
@ -2221,6 +2221,7 @@
GCC_ENABLE_CPP_RTTI = YES; GCC_ENABLE_CPP_RTTI = YES;
GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_FAST_MATH = YES; GCC_FAST_MATH = YES;
GCC_OPTIMIZATION_LEVEL = g;
GCC_UNROLL_LOOPS = NO; GCC_UNROLL_LOOPS = NO;
HEADER_SEARCH_PATHS = src/cpu; HEADER_SEARCH_PATHS = src/cpu;
INFOPLIST_FILE = A2Mac/Info.plist; INFOPLIST_FILE = A2Mac/Info.plist;

View File

@ -3,16 +3,28 @@
version = "1.0"> version = "1.0">
<ContextStates> <ContextStates>
<ContextState <ContextState
contextName = "m6502_Debug:6502.c"> contextName = "woz_write:woz.c">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "m6502.debugger.SP"> value = "WOZwrite.data">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.debugger.mask.ret"> value = "new">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.SP"> value = "WOZwrite.shift16">
</PersistentString>
<PersistentString
value = "WOZwrite.shift">
</PersistentString>
<PersistentString
value = "bitOffset">
</PersistentString>
<PersistentString
value = "(1 &lt;&lt; i) - 1">
</PersistentString>
<PersistentString
value = "WOZtmp.shift16">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -20,47 +32,47 @@
contextName = "HiRes.compute():HiRes.swift"> contextName = "HiRes.compute():HiRes.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "UnsafeRawBufferPointer(result)"> value = "computePipelineState.maxTotalThreadsPerThreadgroup">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "result[2]"> value = "result[2]">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "computePipelineState.maxTotalThreadsPerThreadgroup"> value = "UnsafeRawBufferPointer(result)">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "ViewController.mouseMoved(with:):ViewController.swift"> contextName = "HiRes.initMetal():HiRes.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "oldLocation"> value = "mtlBufferB">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "mouseLocation"> value = "addFunction">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "view.bounds"> value = "device">
</PersistentString>
<PersistentString
value = "mtlBufferA">
</PersistentString>
<PersistentString
value = "mtlBufferC">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "closure #1 in ViewController.Update():ViewController.swift"> contextName = "specialized closure #1 in DebuggerViewController.DisplayDisassembly():DebuggerViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "MEMcfg.is_80STORE"> value = "line_number">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "self.shadowTxt"> value = "currentScrollLine">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "txt"> value = "current_line_number">
</PersistentString>
<PersistentString
value = "MEMcfg.txt_page_2">
</PersistentString>
<PersistentString
value = "txtArr">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -99,10 +111,10 @@
value = "disassLineRange[forLine]"> value = "disassLineRange[forLine]">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disassLineRange.count"> value = "disassLineRange">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disassLineRange"> value = "disassLineRange.count">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -142,10 +154,10 @@
contextName = "HiRes.draw(_:):HiRes.swift"> contextName = "HiRes.draw(_:):HiRes.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "ctx?.height"> value = "linAddr">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "ctx?.data"> value = "shadowScreen">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "ctx?.width"> value = "ctx?.width">
@ -168,14 +180,14 @@
<PersistentString <PersistentString
value = "HiRes.blockCols"> value = "HiRes.blockCols">
</PersistentString> </PersistentString>
<PersistentString
value = "ctx?.height">
</PersistentString>
<PersistentString <PersistentString
value = "ctx?.bitsPerComponent"> value = "ctx?.bitsPerComponent">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "linAddr"> value = "ctx?.data">
</PersistentString>
<PersistentString
value = "shadowScreen">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -203,7 +215,7 @@
contextName = "DebuggerViewController.DisplayDisassembly():DebuggerViewController.swift"> contextName = "DebuggerViewController.DisplayDisassembly():DebuggerViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "disass_addr_min"> value = "line_number">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "disass_addr"> value = "disass_addr">
@ -212,7 +224,7 @@
value = "m6502.PC"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "line_number"> value = "disass_addr_min">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -241,6 +253,14 @@
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState
contextName = "closure #1 in DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift">
<PersistentStrings>
<PersistentString
value = "highlighted_line_number">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState <ContextState
contextName = "m6502_dbg_bp_get_last:6502_bp.c"> contextName = "m6502_dbg_bp_get_last:6502_bp.c">
</ContextState> </ContextState>
@ -260,14 +280,6 @@
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState
contextName = "dest_ind_Y:Apple2_mmio.h">
<PersistentStrings>
<PersistentString
value = "disassembly">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState <ContextState
contextName = "memwrite8_high:mmio.h"> contextName = "memwrite8_high:mmio.h">
<PersistentStrings> <PersistentStrings>
@ -277,19 +289,10 @@
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "auxMemorySelect:mmio.h"> contextName = "dest_ind_Y:Apple2_mmio.h">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "Apple2_64K_RAM + 0x200"> value = "disassembly">
</PersistentString>
<PersistentString
value = "shadowLowMEM">
</PersistentString>
<PersistentString
value = "currentLowMEM">
</PersistentString>
<PersistentString
value = "Apple2_64K_MEM + 0x200">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -310,6 +313,23 @@
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState
contextName = "auxMemorySelect:mmio.h">
<PersistentStrings>
<PersistentString
value = "Apple2_64K_RAM + 0x200">
</PersistentString>
<PersistentString
value = "shadowLowMEM">
</PersistentString>
<PersistentString
value = "currentLowMEM">
</PersistentString>
<PersistentString
value = "Apple2_64K_MEM + 0x200">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState <ContextState
contextName = "save_AUX:mmio.c"> contextName = "save_AUX:mmio.c">
<PersistentStrings> <PersistentStrings>
@ -471,7 +491,7 @@
value = "m6502_saved.PC"> value = "m6502_saved.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "isCurrentLine"> value = "scroll_line_number">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "highlighted_line_number"> value = "highlighted_line_number">
@ -480,7 +500,7 @@
value = "m6502.PC"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "scroll_line_number"> value = "isCurrentLine">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -494,7 +514,7 @@
value = "textDisplay_height_diff"> value = "textDisplay_height_diff">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textDisplay_width_diff"> value = "textDisplay.frame">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "frame.size"> value = "frame.size">
@ -503,10 +523,10 @@
value = "textDisplay.bounds"> value = "textDisplay.bounds">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "MonitorView.textViewBounds"> value = "textDisplay_width_diff">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textDisplay.frame"> value = "MonitorView.textViewBounds">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -572,10 +592,10 @@
contextName = "set_flags_NZC:common.h"> contextName = "set_flags_NZC:common.h">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "(unsigned)0xFF"> value = "(unsigned)test ">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(unsigned)test "> value = "(unsigned)0xFF">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -599,6 +619,14 @@
<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.scrollingDeltaY">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState <ContextState
contextName = "PLA:6502_instr_stack.h"> contextName = "PLA:6502_instr_stack.h">
</ContextState> </ContextState>
@ -672,10 +700,10 @@
value = "MEMcfg.int_Cx_ROM"> value = "MEMcfg.int_Cx_ROM">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.clkfrm"> value = "(int)IOframe">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(int)IOframe"> value = "m6502.clkfrm">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -686,10 +714,10 @@
value = "Apple2_64K_AUX + 0xC600"> value = "Apple2_64K_AUX + 0xC600">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "Apple2_64K_RAM + 0xC600"> value = "(void*)rom">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(void*)rom"> value = "Apple2_64K_RAM + 0xC600">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "strlen(fullPath)"> value = "strlen(fullPath)">
@ -813,16 +841,16 @@
contextName = "DisplayScrollView.scrollWheel(with:):DisplayScrollView.swift"> contextName = "DisplayScrollView.scrollWheel(with:):DisplayScrollView.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "documentView"> value = "textView.defaultParagraphStyle?.lineSpacing">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "subviews"> value = "subviews">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textView.defaultParagraphStyle?.lineSpacing"> value = "subviews[1].subviews">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "subviews[1].subviews"> value = "documentView">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -914,10 +942,10 @@
contextName = "_fetch_dbg:mmio.c"> contextName = "_fetch_dbg:mmio.c">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "disassembly.pOpcode"> value = "memread8_low(m6502.PC)">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "memread8_low(m6502.PC)"> value = "disassembly.pOpcode">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -925,13 +953,13 @@
contextName = "m6502_dbg_bp_add:6502_bp.c"> contextName = "m6502_dbg_bp_add:6502_bp.c">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "bp"> value = "bp_array">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "mem_bp_arr"> value = "mem_bp_arr">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "bp_array"> value = "bp">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1003,32 +1031,17 @@
contextName = "DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift"> contextName = "DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "disassLineRange"> value = "highlighted_line_number">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "isCurrentLine"> value = "isCurrentLine">
</PersistentString> </PersistentString>
<PersistentString
value = "disass_addr">
</PersistentString>
<PersistentString <PersistentString
value = "m6502.PC"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString
value = "line_number">
</PersistentString>
<PersistentString
value = "Disass_Display.string.utf8CString">
</PersistentString>
<PersistentString
value = "Disass_Display">
</PersistentString>
<PersistentString <PersistentString
value = "scroll_line_number"> value = "scroll_line_number">
</PersistentString> </PersistentString>
<PersistentString
value = "highlighted_line_number">
</PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
@ -1143,7 +1156,7 @@
contextName = "LoRes.Update():LoRes.swift"> contextName = "LoRes.Update():LoRes.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "UInt8( (block &gt;&gt; 4) &amp; 0x0F )"> value = "blockChanged[ screenIdx ]">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "UInt8(block)"> value = "UInt8(block)">
@ -1152,7 +1165,7 @@
value = "UInt8(block &amp; 4)"> value = "UInt8(block &amp; 4)">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "blockChanged[ screenIdx ]"> value = "UInt8( (block &gt;&gt; 4) &amp; 0x0F )">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1209,22 +1222,22 @@
value = "m6502"> value = "m6502">
</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>
<PersistentString <PersistentString
value = "m6502.ecoSpindown"> value = "m6502.ecoSpindown">
</PersistentString> </PersistentString>
<PersistentString
value = "m6502.PC">
</PersistentString>
<PersistentString <PersistentString
value = "Apple2_64K_AUX + 0x3600"> value = "Apple2_64K_AUX + 0x3600">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(void*)Apple2_64K_RAM"> value = "m6502.clkfrm">
</PersistentString>
<PersistentString
value = "Apple2_64K_RAM + 0x3600">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1238,7 +1251,7 @@
value = "pdl_value[pdl]"> value = "pdl_value[pdl]">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "normalized_time"> value = "normalized_time &gt;= pdl_value[pdl] ? 255 : 0">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(3300 * 255/3300)"> value = "(3300 * 255/3300)">
@ -1250,7 +1263,7 @@
value = "1 * 512 * (1 - ( 3300 / 3300.0 ))"> value = "1 * 512 * (1 - ( 3300 / 3300.0 ))">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "normalized_time &gt;= pdl_value[pdl] ? 255 : 0"> value = "normalized_time">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1269,10 +1282,10 @@
contextName = "ToolBarController.GamePort(_:):ToolBarController.swift"> contextName = "ToolBarController.GamePort(_:):ToolBarController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "ViewController.current?.mouseCursorHidden"> value = "ViewController.current?.mouseCursorJoystickEmulation">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "ViewController.current?.mouseCursorJoystickEmulation"> value = "ViewController.current?.mouseCursorHidden">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1495,7 +1508,7 @@
value = "m6502.PC"> value = "m6502.PC">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.debugger.on"> value = "m6502.clkfrm">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "textLines * (textCols+1) + textCols"> value = "textLines * (textCols+1) + textCols">
@ -1504,7 +1517,7 @@
value = "frameCounter"> value = "frameCounter">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "m6502.clkfrm"> value = "m6502.debugger.on">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "spkr_play_disk_motor_time"> value = "spkr_play_disk_motor_time">
@ -1530,6 +1543,20 @@
</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 <ContextState
contextName = "memwrite8_bank2:mmio.h"> contextName = "memwrite8_bank2:mmio.h">
<PersistentStrings> <PersistentStrings>
@ -1556,7 +1583,7 @@
value = "default_MHz_6502 * 1000 * 1000 / spkr_sample_rate"> value = "default_MHz_6502 * 1000 * 1000 / spkr_sample_rate">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "( (spkr_clk + m6502.clkfrm) / ( default_MHz_6502 * 1000 * 1000 / spkr_sample_rate)) * 2"> value = "( (spkr_clk + m6502.clkfrm) / ( 1024000 / spkr_sample_rate ) ) * 2">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "(int16_t)28000 + (int16_t)-32768"> value = "(int16_t)28000 + (int16_t)-32768">
@ -1574,7 +1601,7 @@
value = "(spkr_clk + m6502.clkfrm)"> value = "(spkr_clk + m6502.clkfrm)">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "( (spkr_clk + m6502.clkfrm) / ( 1024000 / spkr_sample_rate ) ) * 2"> value = "( (spkr_clk + m6502.clkfrm) / ( default_MHz_6502 * 1000 * 1000 / spkr_sample_rate)) * 2">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
@ -1593,62 +1620,36 @@
contextName = "AND:6502_instr_logic.h"> contextName = "AND:6502_instr_logic.h">
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "woz_write:woz.c"> contextName = "ViewController.mouseMoved(with:):ViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "WOZwrite.data"> value = "oldLocation">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "new"> value = "mouseLocation">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "WOZtmp.shift16"> value = "view.bounds">
</PersistentString>
<PersistentString
value = "WOZwrite.shift">
</PersistentString>
<PersistentString
value = "bitOffset">
</PersistentString>
<PersistentString
value = "(1 &lt;&lt; i) - 1">
</PersistentString>
<PersistentString
value = "WOZwrite.shift16">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>
<ContextState <ContextState
contextName = "HiRes.initMetal():HiRes.swift"> contextName = "closure #1 in ViewController.Update():ViewController.swift">
<PersistentStrings> <PersistentStrings>
<PersistentString <PersistentString
value = "mtlBufferB"> value = "txtArr">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "addFunction"> value = "self.shadowTxt">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "device"> value = "txt">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "mtlBufferA"> value = "MEMcfg.is_80STORE">
</PersistentString> </PersistentString>
<PersistentString <PersistentString
value = "mtlBufferC"> value = "MEMcfg.txt_page_2">
</PersistentString>
</PersistentStrings>
</ContextState>
<ContextState
contextName = "specialized closure #1 in DebuggerViewController.DisplayDisassembly():DebuggerViewController.swift">
<PersistentStrings>
<PersistentString
value = "line_number">
</PersistentString>
<PersistentString
value = "currentScrollLine">
</PersistentString>
<PersistentString
value = "current_line_number">
</PersistentString> </PersistentString>
</PersistentStrings> </PersistentStrings>
</ContextState> </ContextState>

View File

@ -255,6 +255,17 @@
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="1" colorSpace="calibratedRGB"/> <color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Mgy-Qm-MWH" userLabel="DisassCursor">
<rect key="frame" x="12" y="403" width="362" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="iWk-6p-CrU"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="clipping" drawsBackground="YES" id="nPK-EB-T0n">
<font key="font" size="10" name="PrintChar21"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="1" alpha="0.33000000000000002" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lw3-np-MbY" userLabel="Disassembly"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lw3-np-MbY" userLabel="Disassembly">
<rect key="frame" x="10" y="10" width="366" height="454"/> <rect key="frame" x="10" y="10" width="366" height="454"/>
<textFieldCell key="cell" lineBreakMode="clipping" id="V2q-LD-et1"> <textFieldCell key="cell" lineBreakMode="clipping" id="V2q-LD-et1">
@ -367,7 +378,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="-320" width="349" height="510"/> <rect key="frame" x="0.0" y="-372" 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"/>
@ -547,7 +558,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="-274" width="334" height="165"/> <rect key="frame" x="0.0" y="-288" 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"/>
@ -571,7 +582,7 @@
<rect key="frame" x="-100" y="-100" width="349" height="15"/> <rect key="frame" x="-100" y="-100" width="349" height="15"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="0.21428571428571427" horizontal="NO" id="dcm-z5-VNG"> <scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="0.14285714285714285" horizontal="NO" id="dcm-z5-VNG">
<rect key="frame" x="335" y="1" width="15" height="158"/> <rect key="frame" x="335" y="1" width="15" height="158"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
@ -782,6 +793,7 @@
</customView> </customView>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="Mgy-Qm-MWH" firstAttribute="leading" secondItem="lw3-np-MbY" secondAttribute="leading" id="3mY-nW-zNp"/>
<constraint firstAttribute="bottom" secondItem="jY7-ZU-I4z" secondAttribute="bottom" constant="10" identifier="Debugger View.Bottom - Disassembler.Bottom" id="8jC-7G-Ofh"/> <constraint firstAttribute="bottom" secondItem="jY7-ZU-I4z" secondAttribute="bottom" constant="10" identifier="Debugger View.Bottom - Disassembler.Bottom" id="8jC-7G-Ofh"/>
<constraint firstItem="uQh-oP-EwQ" firstAttribute="trailing" secondItem="lw3-np-MbY" secondAttribute="trailing" id="8q5-Sd-fZ8"/> <constraint firstItem="uQh-oP-EwQ" firstAttribute="trailing" secondItem="lw3-np-MbY" secondAttribute="trailing" id="8q5-Sd-fZ8"/>
<constraint firstItem="KwD-2D-fNp" firstAttribute="leading" secondItem="lw3-np-MbY" secondAttribute="leading" id="HHi-Vl-G7O"/> <constraint firstItem="KwD-2D-fNp" firstAttribute="leading" secondItem="lw3-np-MbY" secondAttribute="leading" id="HHi-Vl-G7O"/>
@ -789,6 +801,8 @@
<constraint firstItem="KwD-2D-fNp" firstAttribute="top" secondItem="lw3-np-MbY" secondAttribute="top" id="KjG-Xt-w0g"/> <constraint firstItem="KwD-2D-fNp" firstAttribute="top" secondItem="lw3-np-MbY" secondAttribute="top" id="KjG-Xt-w0g"/>
<constraint firstItem="KwD-2D-fNp" firstAttribute="trailing" secondItem="lw3-np-MbY" secondAttribute="trailing" id="LYb-x4-eZt"/> <constraint firstItem="KwD-2D-fNp" firstAttribute="trailing" secondItem="lw3-np-MbY" secondAttribute="trailing" id="LYb-x4-eZt"/>
<constraint firstItem="JUf-qx-iuW" firstAttribute="top" secondItem="Myj-W6-YvY" secondAttribute="top" constant="6" identifier="Debug Side Panel.Top - Debugger View.Top" id="OaJ-lc-b0j"/> <constraint firstItem="JUf-qx-iuW" firstAttribute="top" secondItem="Myj-W6-YvY" secondAttribute="top" constant="6" identifier="Debug Side Panel.Top - Debugger View.Top" id="OaJ-lc-b0j"/>
<constraint firstItem="Mgy-Qm-MWH" firstAttribute="trailing" secondItem="lw3-np-MbY" secondAttribute="trailing" id="PdI-W2-UUw"/>
<constraint firstItem="Mgy-Qm-MWH" firstAttribute="top" secondItem="lw3-np-MbY" secondAttribute="top" constant="46" id="R2c-sP-wWP"/>
<constraint firstAttribute="bottom" secondItem="JUf-qx-iuW" secondAttribute="bottom" constant="10" identifier="Debugger View.Bottom - Sebug Side Panel.Bottom" id="Y4T-sR-Hag"/> <constraint firstAttribute="bottom" secondItem="JUf-qx-iuW" secondAttribute="bottom" constant="10" identifier="Debugger View.Bottom - Sebug Side Panel.Bottom" id="Y4T-sR-Hag"/>
<constraint firstItem="uQh-oP-EwQ" firstAttribute="top" secondItem="lw3-np-MbY" secondAttribute="top" id="YuC-6J-6RS"/> <constraint firstItem="uQh-oP-EwQ" firstAttribute="top" secondItem="lw3-np-MbY" secondAttribute="top" id="YuC-6J-6RS"/>
<constraint firstItem="jY7-ZU-I4z" firstAttribute="top" secondItem="Myj-W6-YvY" secondAttribute="top" constant="6" identifier="Disassembler.Top - Debugger View.Top" id="cCh-QQ-pyz"/> <constraint firstItem="jY7-ZU-I4z" firstAttribute="top" secondItem="Myj-W6-YvY" secondAttribute="top" constant="6" identifier="Disassembler.Top - Debugger View.Top" id="cCh-QQ-pyz"/>
@ -805,6 +819,8 @@
<outlet property="CPU_Display" destination="Wrs-Qt-Kmd" id="SUW-Lc-Zv4"/> <outlet property="CPU_Display" destination="Wrs-Qt-Kmd" id="SUW-Lc-Zv4"/>
<outlet property="DisassAddressField" destination="bwO-w1-hlg" id="tBp-cc-OcF"/> <outlet property="DisassAddressField" destination="bwO-w1-hlg" id="tBp-cc-OcF"/>
<outlet property="DisassAddressPC" destination="zov-nz-fce" id="fhe-fN-yPd"/> <outlet property="DisassAddressPC" destination="zov-nz-fce" id="fhe-fN-yPd"/>
<outlet property="DisassCursor" destination="Mgy-Qm-MWH" id="6Pn-wq-woY"/>
<outlet property="DisassCursorContraint" destination="R2c-sP-wWP" id="7vt-Dc-wGf"/>
<outlet property="DisassHighlighter" destination="KwD-2D-fNp" id="bTl-R3-0bK"/> <outlet property="DisassHighlighter" destination="KwD-2D-fNp" id="bTl-R3-0bK"/>
<outlet property="DisassHightlighterContriant" destination="KjG-Xt-w0g" id="PrT-Dn-qaX"/> <outlet property="DisassHightlighterContriant" destination="KjG-Xt-w0g" id="PrT-Dn-qaX"/>
<outlet property="DisassTextField" destination="lw3-np-MbY" id="xv3-mQ-zMX"/> <outlet property="DisassTextField" destination="lw3-np-MbY" id="xv3-mQ-zMX"/>

View File

@ -37,6 +37,8 @@ class DebuggerViewController: NSViewController {
@IBOutlet weak var DisassTextField: NSTextField! @IBOutlet weak var DisassTextField: NSTextField!
@IBOutlet weak var DisassHighlighter: NSTextField! @IBOutlet weak var DisassHighlighter: NSTextField!
@IBOutlet weak var DisassHightlighterContriant: NSLayoutConstraint! @IBOutlet weak var DisassHightlighterContriant: NSLayoutConstraint!
@IBOutlet weak var DisassCursor: NSTextField!
@IBOutlet weak var DisassCursorContraint: NSLayoutConstraint!
let textFont : NSFont = NSFont(name: "Print Char 21", size: 10.0)! let textFont : NSFont = NSFont(name: "Print Char 21", size: 10.0)!
@ -102,7 +104,7 @@ class DebuggerViewController: NSViewController {
} }
let maxAddr = Float(65536) // Float(0xFFD0) let maxAddr = Float(0xFFFF)
/// Disassembly View Scroll changed /// Disassembly View Scroll changed
func disassScroller(needScroll : Bool = false) { func disassScroller(needScroll : Bool = false) {
@ -151,7 +153,7 @@ class DebuggerViewController: NSViewController {
// ) // )
let deltaY = Float(event.scrollingDeltaY) let deltaY = Float(event.scrollingDeltaY)
// print("scrollWheel:", deltaY) // print("scrollWheel:", event.scrollingDeltaY, deltaY)
scrollEvent(location: location, scrollView: Disass_Scroll, deltaY: deltaY, action: { scrollEvent(location: location, scrollView: Disass_Scroll, deltaY: deltaY, action: {
disassScroller(needScroll: true) disassScroller(needScroll: true)
@ -382,8 +384,8 @@ N V - B D I Z C
func getLineRange(_ lineRange : [LineRange_t], forLine: Int) -> NSRange? { func getLineRange(_ lineRange : [LineRange_t], forLine: Int) -> NSRange? {
// print("disassLineRange.count:", disassLineRange.count) // print("disassLineRange.count:", disassLineRange.count)
if 0 < forLine && forLine <= lineRange.count { if forLine >= 0 && forLine < lineRange.count {
let disassRange = lineRange[forLine - 1] let disassRange = lineRange[forLine]
return NSRange(location: disassRange.loc, length: disassRange.len) return NSRange(location: disassRange.loc, length: disassRange.len)
} }
@ -441,13 +443,15 @@ N V - B D I Z C
} }
} }
func remove_highlight_(view: NSTextView) {
remove_highlight(view: view, line: highlighted_line_number) let lineHeight = CGFloat(14.96) // magic number... No idea why... 10pt font size + 1.5 lineSpacing
highlighted_line_number = 0;
func remove_highlight(view: NSTextField) {
view.isHidden = true
} }
func remove_highlight(view: NSTextView) { func remove_highlight_attr(view: NSTextView) {
if highlighted_line_number > 0 { if highlighted_line_number > 0 {
if let lineRange = getLineRange(disassLineRange, forLine: highlighted_line_number) { if let lineRange = getLineRange(disassLineRange, forLine: highlighted_line_number) {
if let layoutManager = view.layoutManager { if let layoutManager = view.layoutManager {
@ -462,23 +466,20 @@ N V - B D I Z C
} }
func highlight(view: NSTextView, line: Int, attr: [NSAttributedString.Key : Any]) { func highlight(view: NSTextField, constraint: NSLayoutConstraint, line: Int) {
if line > 0 { if line > 0 {
// let lineSpacing = CGFloat(1.25)
// let lineHeight = CGFloat(view.font!.pointSize) * lineSpacing
let line = line > 0 ? line - 1 : 0 let line = line > 0 ? line - 1 : 0
// remove old highlighted line if getLineRange(disassLineRange, forLine: line) != nil {
// remove_highlight(view: view, line: line) constraint.constant = CGFloat(line) * lineHeight + 1
// if let lineRange = getLineRange(disassLineRange, forLine: line) { view.isHidden = false
// DispatchQueue.main.async { // to make sure not to remove higlight
// view.layoutManager?.addTemporaryAttributes(attr, forCharacterRange: lineRange) return
// } }
// }
let lineHeight = CGFloat(14.96) // magic number... No idea why... 10pt font size + 1.5 lineSpacing
DisassHightlighterContriant.constant = CGFloat(line) * lineHeight + 1
} }
// remove old highlighted line
remove_highlight(view: view)
} }
@ -514,22 +515,18 @@ N V - B D I Z C
/// - mouseLocation: Mouse location locally inside the ScrollView /// - mouseLocation: Mouse location locally inside the ScrollView
func highlightCursor(scrollView : NSScrollView, mouseLocation : NSPoint) { func highlightCursor(scrollView : NSScrollView, mouseLocation : NSPoint) {
let display = scrollView.documentView as! NSTextView let display = scrollView.documentView as! NSTextView
let location = mouseLocation
let parent_frame = scrollView.superview?.frame
// covering rectangle of the entire document // covering rectangle of the entire document
let minX = parent_frame!.minX + scrollView.frame.minX let minX = scrollView.frame.minX
let minY = parent_frame!.minY + scrollView.frame.minY let minY = scrollView.frame.minY
let maxX = minX + display.visibleRect.origin.x + scrollView.frame.width let maxX = scrollView.frame.maxX
let maxY = minY + display.visibleRect.origin.y + scrollView.frame.height let maxY = scrollView.frame.maxY - 4
if location.x > minX && location.x < maxX if mouseLocation.x > minX && mouseLocation.x < maxX
&& location.y > minY && location.y < maxY && mouseLocation.y > minY && mouseLocation.y < maxY
{ {
let line = getLine(inView: display, forY: location.y) let line = getLine(inView: display, forY: mouseLocation.y)
highlight(view: display, line: highlighted_line_number, attr: lineAttrAtPC) highlight(view: DisassCursor, constraint: DisassCursorContraint, line: line)
remove_highlight(view: display, line: line_number_cursor)
highlight(view: display, line: line, attr: lineAttrAtSelected)
line_number_cursor = line line_number_cursor = line
} }
} }
@ -595,13 +592,28 @@ N V - B D I Z C
var isCurrentLine = false var isCurrentLine = false
func DisplayDisassembly( scrollY : CGFloat = -1 ) { var disass = ""
var disass = "" var loc = 0
var loc = 0 func AddDisassLine() {
let line = ASCII_to_Apple2( line: String(cString: disassemblyLine()!) )
let len = disassLineLength + 1
let lineRange = LineRange_t(loc: loc, len: len)
disassLineRange.append(lineRange)
loc += len
disass += line + "\n"
}
func DisplayDisassembly( scrollY : CGFloat = -1 ) {
disass = ""
loc = 0
isCurrentLine = false
highlighted_line_number = -1 // getLine(forAddr: m6502.PC)
if cpuState == cpuState_running { if cpuState == cpuState_running {
remove_highlight(view: Disass_Display) remove_highlight(view: DisassHighlighter)
} }
line_number = 0 line_number = 0
@ -616,7 +628,6 @@ N V - B D I Z C
let need_scroll = scrollY > 0 || disass_addr_pc < disass_addr || UInt(disass_addr_pc) > UInt(disass_addr) + UInt(disass_addr_max) let need_scroll = 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)
disassLineRange.removeAll() disassLineRange.removeAll()
ViewController.shared?.UpdateSemaphore.wait() ViewController.shared?.UpdateSemaphore.wait()
@ -643,6 +654,7 @@ N V - B D I Z C
// try to sync disassembly code // try to sync disassembly code
let addr_min = disass_addr >= disass_addr_min ? disass_addr - disass_addr_min : disass_addr let addr_min = disass_addr >= disass_addr_min ? disass_addr - disass_addr_min : disass_addr
while m6502.PC < addr_min { while m6502.PC < addr_min {
m6502_Disass_1_Instr() m6502_Disass_1_Instr()
} }
@ -650,7 +662,10 @@ N V - B D I Z C
// hopefully instruction address is in sync // hopefully instruction address is in sync
disass_addr = m6502.PC disass_addr = m6502.PC
scroll_to_disass(addr: disass_addr) // Scroll by address is needed only when address is NOT calculated from scroll position...
if scrollY < 0 {
scroll_to_disass(addr: disass_addr)
}
// normal disassembly // normal disassembly
for _ in 1...lines_to_disass { for _ in 1...lines_to_disass {
@ -664,28 +679,20 @@ N V - B D I Z C
highlighted_line_number = line_number highlighted_line_number = line_number
} }
if m6502.PC == disass_addr_pc { if m6502.PC == disass_addr {
scroll_line_number = line_number scroll_line_number = line_number
} }
m6502_Disass_1_Instr() m6502_Disass_1_Instr()
AddDisassLine()
let line = ASCII_to_Apple2( line: String(cString: disassemblyLine()!) )
let len = disassLineLength + 1
let lineRange = LineRange_t(loc: loc, len: len)
disassLineRange.append(lineRange)
loc += len
disass += line + "\n"
} }
m6502 = m6502_saved m6502 = m6502_saved
ViewController.shared?.UpdateSemaphore.signal() ViewController.shared?.UpdateSemaphore.signal()
DispatchQueue.main.async { DispatchQueue.main.async {
self.disassDisplay(str: disass) self.disassDisplay(str: self.disass)
self.highlight(view: self.DisassHighlighter, constraint: self.DisassHightlighterContriant, line: self.highlighted_line_number)
self.highlight(view: self.Disass_Display, line: self.highlighted_line_number, attr: self.lineAttrAtPC)
} }
} }