diff --git a/A2Mac.xcodeproj/project.xcworkspace/xcuserdata/trudnai.xcuserdatad/xcdebugger/Expressions.xcexplist b/A2Mac.xcodeproj/project.xcworkspace/xcuserdata/trudnai.xcuserdatad/xcdebugger/Expressions.xcexplist
index 377229b..364901f 100644
--- a/A2Mac.xcodeproj/project.xcworkspace/xcuserdata/trudnai.xcuserdatad/xcdebugger/Expressions.xcexplist
+++ b/A2Mac.xcodeproj/project.xcworkspace/xcuserdata/trudnai.xcuserdatad/xcdebugger/Expressions.xcexplist
@@ -490,6 +490,14 @@
+
+
+
+
+
+
@@ -994,13 +1002,16 @@
contextName = "DebuggerViewController.DisplayDisassembly(scrollY:):DebuggerViewController.swift">
+ value = "disassLineRange">
+ value = "m6502.PC">
+
+
@@ -1008,6 +1019,12 @@
+
+
+
+
-
-
-
-
0 {
if let lineRange = getLineRange(disassLineRange, forLine: highlighted_line_number) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.1, execute: {
- if let layoutManager = view.layoutManager {
+ if let layoutManager = view.layoutManager {
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.03, execute: {
layoutManager.removeTemporaryAttribute(NSAttributedString.Key.backgroundColor, forCharacterRange: lineRange)
layoutManager.removeTemporaryAttribute(NSAttributedString.Key.foregroundColor, forCharacterRange: lineRange)
- }
- })
+ })
+ }
}
}
+ highlighted_line_number = 0
}
@@ -518,11 +519,21 @@ N V - B D I Z C
var disassLineRange = [LineRange_t]()
+
+ func TrunDisassAddressPC(_ on: NSControl.StateValue = .on) {
+ if let disassAddressPC = DisassAddressPC {
+ disassAddressPC.state = on
+ }
+ }
+
+
func DisplayDisassembly( scrollY : CGFloat = -1 ) {
var disass = "" // String(repeating: "\n", count: 0x1800)
var loc = 0
- remove_highlight(view: Disass_Display)
+ if cpuState == cpuState_running {
+ remove_highlight(view: Disass_Display)
+ }
line_number = 0
@@ -575,6 +586,14 @@ N V - B D I Z C
addr_line.updateValue(line_number, forKey: m6502.PC)
let isCurrentLine = m6502.PC == m6502_saved.PC
+ if isCurrentLine {
+// line = invertLine(line: line)
+ highlighted_line_number = line_number
+ }
+
+ if m6502.PC == disass_addr_pc {
+ scroll_line_number = line_number
+ }
m6502_Disass_1_Instr()
@@ -585,14 +604,6 @@ N V - B D I Z C
disassLineRange.append(lineRange)
loc += len
- if isCurrentLine {
- // line = invertLine(line: line)
- highlighted_line_number = line_number
- }
- if m6502.PC == disass_addr_pc {
- scroll_line_number = line_number
- }
-
disass += line + "\n"
}
@@ -604,6 +615,7 @@ N V - B D I Z C
// let isEmpty = self.Disass_Display.string.isEmpty
if need_disass {
self.Disass_Display.string = disass // + String(repeating: "\n", count: 0x8000)
+ self.Disass_Display.scroll(CGPoint.zero)
// self.testTextField(str: "")
}
@@ -635,10 +647,12 @@ N V - B D I Z C
func UpdateImmediately() {
- DisplayRegisters()
- DisplayStack()
- DisplayMemory()
- DisplayDisassembly()
+ DispatchQueue.main.async {
+ self.DisplayRegisters()
+ self.DisplayStack()
+ self.DisplayMemory()
+ self.DisplayDisassembly()
+ }
}
@@ -646,9 +660,7 @@ N V - B D I Z C
func Update() {
if self.UpdateSemaphore.wait(timeout: .now()) == .success {
if Disass_Display != nil {
- DispatchQueue.global().async {
- self.UpdateImmediately()
- }
+ self.UpdateImmediately()
}
self.UpdateSemaphore.signal()
}
diff --git a/A2Mac/DebuggerWindowController.swift b/A2Mac/DebuggerWindowController.swift
index 99b83e6..8fb810b 100644
--- a/A2Mac/DebuggerWindowController.swift
+++ b/A2Mac/DebuggerWindowController.swift
@@ -112,8 +112,6 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
}
-
-
func Continue() {
PauseButtonUpdate()
@@ -190,8 +188,9 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
m6502_Step_dbg()
// TODO: This should be in Debugger!
- if let debugger = DebuggerViewController.shared {
- debugger.Update()
+ if let debuggerViewController = DebuggerViewController.shared {
+ debuggerViewController.remove_highlight(view: debuggerViewController.Disass_Display, line: debuggerViewController.highlighted_line_number)
+ debuggerViewController.Update()
}
// TODO: Update Screen and speaker etc
diff --git a/A2Mac/ViewController.swift b/A2Mac/ViewController.swift
index 8dbb3be..c332d61 100644
--- a/A2Mac/ViewController.swift
+++ b/A2Mac/ViewController.swift
@@ -339,7 +339,34 @@ class ViewController: NSViewController {
}
+ func debuggerShowWindow() {
+ if let debuggerWindowController = DebuggerWindowController.shared {
+ DispatchQueue.main.async {
+ debuggerWindowController.showWindow(self)
+ }
+ }
+ }
+
+
+ func debuggerRemoveHighlight() {
+ if let debuggerViewController = DebuggerViewController.shared {
+ debuggerViewController.remove_highlight(view: debuggerViewController.Disass_Display, line: debuggerViewController.highlighted_line_number)
+ }
+ }
+
+
+ func debuggerPauseUpdate() {
+ if let debuggerViewController = DebuggerViewController.shared {
+ debuggerViewController.TrunDisassAddressPC(.on)
+ debuggerViewController.remove_highlight(view: debuggerViewController.Disass_Display, line: debuggerViewController.highlighted_line_number)
+ debuggerViewController.Update()
+ }
+ }
+
+
func Resume() {
+ debuggerRemoveHighlight()
+
#if SCHEDULER_CVDISPLAYLINK
CVDisplayLinkStart(displayLink!)
#else
@@ -370,6 +397,8 @@ class ViewController: NSViewController {
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate()
}
+
+ debuggerPauseUpdate()
}
@@ -1265,20 +1294,12 @@ class ViewController: NSViewController {
func debugBreak() {
Pause()
-
- // TODO: This should be in Debugger!
- if let debugger = DebuggerViewController.shared {
- debugger.Update()
- }
- if let debugger = DebuggerWindowController.shared {
- DispatchQueue.main.async {
- debugger.showWindow(self)
- }
- }
-
spkr_play_disk_motor_time = 0
spkr_stopAll()
+ // TODO: This should be in Debugger!
+ debuggerPauseUpdate()
+ debuggerShowWindow()
}