mirror of
https://github.com/trudnai/Steve2.git
synced 2024-06-12 18:45:22 +00:00
BugFix: MouseWheel Scroll is wrong after address entered or sync to PC is on
This commit is contained in:
parent
10c437b872
commit
caf7662639
|
@ -599,6 +599,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>
|
||||||
|
|
|
@ -102,7 +102,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 +151,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)
|
||||||
|
@ -595,10 +595,24 @@ 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
|
||||||
|
|
||||||
if cpuState == cpuState_running {
|
if cpuState == cpuState_running {
|
||||||
remove_highlight(view: Disass_Display)
|
remove_highlight(view: Disass_Display)
|
||||||
|
@ -643,6 +657,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 +665,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,26 +682,19 @@ 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.Disass_Display, line: self.highlighted_line_number, attr: self.lineAttrAtPC)
|
self.highlight(view: self.Disass_Display, line: self.highlighted_line_number, attr: self.lineAttrAtPC)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user