- .current renamed to .shared

- Automatically witch to debugger and back to emulator view when debugging
This commit is contained in:
tudnai 2022-11-13 10:14:48 -08:00
parent 57e10e65e6
commit 82deef06aa
8 changed files with 101 additions and 97 deletions

View File

@ -46,7 +46,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
@IBAction func Disk1_Selected(_ sender: NSMenuItem) {
if let menuIdentifier = sender.identifier {
let woz_err = woz_loadFile( Bundle.main.resourcePath! + "/dsk/" + menuIdentifier.rawValue + ".woz" )
ViewController.current?.chk_woz_load(err: woz_err)
ViewController.shared?.chk_woz_load(err: woz_err)
woz_flags.image_file_readonly = 1
}
}
@ -61,42 +61,42 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
@IBAction func selectAnImageFromFile(sender: AnyObject) {
ViewController.current?.openDiskImageDialog()
ViewController.shared?.openDiskImageDialog()
}
func application(_ sender: NSApplication, openFile filename: String) -> Bool {
ViewController.current?.openDiskImage(url: URL(fileURLWithPath: filename))
ViewController.shared?.openDiskImage(url: URL(fileURLWithPath: filename))
return true;
}
@IBAction func openFile(_ sender: NSMenuItem) {
ViewController.current?.openDiskImageDialog()
ViewController.shared?.openDiskImageDialog()
}
@IBAction func saveFile(_ sender: NSMenuItem) {
ViewController.current?.saveFile()
ViewController.shared?.saveFile()
}
@IBAction func saveFileAs(_ sender: NSMenuItem) {
ViewController.current?.saveFileAs()
ViewController.shared?.saveFileAs()
}
@IBAction func Cheat_Wavy_Navy_Vitroy(_ sender: Any) {
ViewController.current?.Cheat_Wavy_Navy_Victory()
ViewController.shared?.Cheat_Wavy_Navy_Victory()
}
@IBAction func Cheat_Wavy_Navy_Add_3_Ships(_ sender: Any) {
ViewController.current?.Cheat_Wavy_Navy_Add_3_Ships()
ViewController.shared?.Cheat_Wavy_Navy_Add_3_Ships()
}
@IBAction func Cheat_Wavy_Navy_Never_Lose(_ menuItem: NSMenuItem) {
menuItem.state = (ViewController.current?.Cheat_Wavy_Navy_Never_Lose())!
menuItem.state = (ViewController.shared?.Cheat_Wavy_Navy_Never_Lose())!
}
@IBAction func Cheat_Wavy_Navy_Lose_To_Win(_ menuItem: NSMenuItem) {
menuItem.state = (ViewController.current?.Cheat_Wavy_Navy_Lose_To_Win())!
menuItem.state = (ViewController.shared?.Cheat_Wavy_Navy_Lose_To_Win())!
}
@IBOutlet weak var MenuItem_Cheat: NSMenuItem!
@ -105,21 +105,21 @@ class AppDelegate: NSObject, NSApplicationDelegate {
func Cheat_Menu() {
// print("Cheat_Menu Menu")
let ships = ViewController.current?.Get_Hard_Hat_Mack()
let ships = ViewController.shared?.Get_Hard_Hat_Mack()
MenuItem_Hard_Hat_Mack_Add_3_Macks.title = String(format: "Add 3 Macks (%d)", ships!)
}
@IBAction func Cheat_Hard_Hat_Mack(_ menuItem: NSMenuItem) {
print("Cheat_Hard_Hat_Mack SubMenu")
let ships = ViewController.current?.Get_Hard_Hat_Mack()
let ships = ViewController.shared?.Get_Hard_Hat_Mack()
MenuItem_Hard_Hat_Mack_Add_3_Macks.title = String(format: "Add 3 Macks (%d)", ships!)
}
@IBAction func Cheat_Hard_Hat_Mack_Add_3_Macks(_ menuItem: NSMenuItem) {
let _ = ViewController.current?.Cheat_Hard_Hat_Mack(add: 3)
let _ = ViewController.shared?.Cheat_Hard_Hat_Mack(add: 3)
}
@IBAction func Cheat_Hard_Hat_Mack_Never_Lose(_ menuItem: NSMenuItem) {
menuItem.state = (ViewController.current?.Cheat_Hard_Hat_Mack_Never_Lose())!
menuItem.state = (ViewController.shared?.Cheat_Hard_Hat_Mack_Never_Lose())!
}
@IBAction func showPreferences(_ sender: NSMenuItem) {
@ -130,39 +130,39 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
@IBAction func PowerOn(_ sender: Any) {
ViewController.current?.PowerOn(sender)
ViewController.shared?.PowerOn(sender)
}
@IBAction func Pause(_ sender: Any) {
ViewController.current?.Pause(sender)
ViewController.shared?.Pause(sender)
}
@IBAction func PowerOff(_ sender: Any) {
ViewController.current?.PowerOff(sender)
ViewController.shared?.PowerOff(sender)
}
@IBAction func ColdReset(_ sender: Any) {
ViewController.current?.Reset(sender)
ViewController.shared?.Reset(sender)
}
@IBAction func WarmReset(_ sender: Any) {
ViewController.current?.Reset(sender)
ViewController.shared?.Reset(sender)
}
@IBAction func DebugContinue(_ sender: Any) {
DebuggerWindowController.current?.ContinuePauseButton(sender)
DebuggerWindowController.shared?.ContinuePauseButton(sender)
}
@IBAction func DebugStepOver(_ sender: Any) {
DebuggerWindowController.current?.Step_Over(sender)
DebuggerWindowController.shared?.Step_Over(sender)
}
@IBAction func DebugStepIn(_ sender: Any) {
DebuggerWindowController.current?.Step_In(sender)
DebuggerWindowController.shared?.Step_In(sender)
}
@IBAction func DebugStepOut(_ sender: Any) {
DebuggerWindowController.current?.Step_Out(sender)
DebuggerWindowController.shared?.Step_Out(sender)
}

View File

@ -17,7 +17,7 @@ class CheatMenu: NSMenu {
// AppDelegate.current?.Cheat_Menu()
let /* ships */ _ = ViewController.current?.Get_Hard_Hat_Mack()
let /* ships */ _ = ViewController.shared?.Get_Hard_Hat_Mack()
// AppDelegate.current?.MenuItem_Hard_Hat_Mack_Add_3_Macks.title = String(format: "Add 3 Macks (%d)", ships!)
}

View File

@ -52,7 +52,7 @@ class DebuggerViewController: NSViewController {
UpdateImmediately()
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate(needUpdateMainToolbar: false)
}
}
@ -197,9 +197,9 @@ N V - B D I Z C
if c == 0xAA { // '*'
// converted.append("\u{E895}") // big dot (8x8)
// converted.append("\u{ED3C}") // big dot2 (8x8)
// converted.append("\u{E09B}") // right arrow
// converted.append("\u{E095}") // diamond
converted.append("\u{E080}") // closed apple
converted.append("\u{E095}") // right arrow
// converted.append("\u{E09B}") // diamond
// converted.append("\u{E080}") // closed apple
// converted.append("\u{E081}") // open apple
// converted.append("\u{E185}") // checkmark
}
@ -443,7 +443,7 @@ N V - B D I Z C
// if m6502.PC > disass_addr && m6502.PC < disass_addr + disass_addr_max {
if line_number_at_PC == 0 || need_disass {
ViewController.current?.UpdateSemaphore.wait()
ViewController.shared?.UpdateSemaphore.wait()
let m6502_saved = m6502
@ -485,7 +485,7 @@ N V - B D I Z C
}
m6502 = m6502_saved
ViewController.current?.UpdateSemaphore.signal()
ViewController.shared?.UpdateSemaphore.signal()
}
DispatchQueue.main.async {

View File

@ -26,11 +26,11 @@ import Cocoa
class DebuggerWindowController: NSWindowController, NSWindowDelegate {
static var current : DebuggerWindowController? = nil
static var shared : DebuggerWindowController? = nil
required init?(coder: NSCoder) {
super.init(coder: coder)
DebuggerWindowController.current = self
DebuggerWindowController.shared = self
}
@ -57,7 +57,7 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
}
func windowWillClose(_ notification: Notification) {
DebuggerWindowController.current = nil
DebuggerWindowController.shared = nil
}
@ -119,14 +119,14 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
m6502.debugger.wMask = 0
m6502.debugger.on = true
ViewController.current?.Resume()
ViewController.shared?.Resume()
}
func Pause() {
PauseButtonUpdate()
ViewController.current?.Pause(0)
ViewController.shared?.Pause(0)
m6502.debugger.wMask = 0
m6502.debugger.on = false
@ -153,7 +153,7 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
m6502.debugger.mask.out = 1
m6502.debugger.on = true
ViewController.current?.Resume()
ViewController.shared?.Resume()
}
else {
// not a JSR call, only do a single step
@ -171,7 +171,7 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
}
// TODO: Update Screen and speaker etc
ViewController.current?.Update()
ViewController.shared?.Update()
}
@ -182,7 +182,7 @@ class DebuggerWindowController: NSWindowController, NSWindowDelegate {
m6502.debugger.mask.out = 1
m6502.debugger.on = true
ViewController.current?.Resume()
ViewController.shared?.Resume()
}

View File

@ -53,34 +53,34 @@ class DisplayView: NSTextView {
override func mouseDown(with event: NSEvent) {
// print(#function + "DisplayView")
ViewController.current?.mouseDown(with: event)
ViewController.shared?.mouseDown(with: event)
// debugDisplayContraints()
}
override func mouseUp(with event: NSEvent) {
// print(#function + "DisplayView")
ViewController.current?.mouseUp(with: event)
ViewController.shared?.mouseUp(with: event)
}
override func rightMouseDown(with event: NSEvent) {
// print(#function + "DisplayView")
ViewController.current?.rightMouseDown(with: event)
ViewController.shared?.rightMouseDown(with: event)
}
override func rightMouseUp(with event: NSEvent) {
// print(#function + "DisplayView")
ViewController.current?.rightMouseUp(with: event)
ViewController.shared?.rightMouseUp(with: event)
}
override func otherMouseDown(with event: NSEvent) {
// print(#function + "DisplayView")
ViewController.current?.otherMouseDown(with: event)
ViewController.shared?.otherMouseDown(with: event)
}
override func otherMouseUp(with event: NSEvent) {
// print(#function + "DisplayView")
ViewController.current?.otherMouseUp(with: event)
ViewController.shared?.otherMouseUp(with: event)
}

View File

@ -251,7 +251,7 @@ class HiRes: NSView {
// blockChanged = [Bool](repeating: false, count: HiRes.blockRows * HiRes.blockCols)
if ( ViewController.current?.CRTMonitor ?? false ) {
if ( ViewController.shared?.CRTMonitor ?? false ) {
// do not clear the changes table
}
else {
@ -275,7 +275,7 @@ class HiRes: NSView {
if shadowScreen[ screenIdx ] != block {
blockChanged[ blockVertIdx + blockHorIdx ] = 0xFF
}
else if ( ViewController.current?.CRTMonitor ?? false ) {
else if ( ViewController.shared?.CRTMonitor ?? false ) {
// slow CRT fade out effect
if (y % HiRes.blockHeight == 0) && (blockChanged[ blockVertIdx + blockHorIdx ] > 0) {
blockChanged[ blockVertIdx + blockHorIdx ] = UInt8( Double(blockChanged[ blockVertIdx + blockHorIdx ]) / pixelTrail )
@ -571,7 +571,7 @@ class HiRes: NSView {
func Render() {
if ( ViewController.current?.ColorMonitor ?? true ) {
if ( ViewController.shared?.ColorMonitor ?? true ) {
RenderColor()
}
else {
@ -591,7 +591,7 @@ class HiRes: NSView {
// refresh the entire screen
let boundingBox = CGRect(x: 0, y: 0, width: frame.width, height: frame.height)
if ( ViewController.current?.CRTMonitor ?? false ) {
if ( ViewController.shared?.CRTMonitor ?? false ) {
currentContext?.interpolationQuality = .high // TODO: Make a switch that lets you turn on and off "old monitor effects"
}
else {

View File

@ -138,7 +138,7 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
PauseButton.state = .on
}
ViewController.current?.PowerOn(sender)
ViewController.shared?.PowerOn(sender)
default:
if let PauseToolbarItem = PauseToolbarItem {
@ -149,7 +149,7 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
PauseButton.state = .off
}
ViewController.current?.PowerOff(sender)
ViewController.shared?.PowerOff(sender)
}
}
@ -188,7 +188,7 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
}
if needUpdateDebugToolbar {
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate(needUpdateMainToolbar: false)
}
}
@ -197,10 +197,10 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
@IBAction func Pause(_ sender: Any) {
switch cpuState {
case cpuState_halted:
ViewController.current?.Pause(sender)
ViewController.shared?.Pause(sender)
case cpuState_running:
ViewController.current?.Pause(sender)
ViewController.shared?.Pause(sender)
default:
break
@ -208,46 +208,46 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
PauseButtonUpdate()
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate(needUpdateMainToolbar: false)
}
}
@IBAction func Reset(_ sender: Any) {
ViewController.current?.Reset(sender)
ViewController.shared?.Reset(sender)
}
@IBAction func SelectAll(_ sender: Any) {
// ViewController.current?.displayField.currentEditor()?.selectAll(nil)
// ViewController.current?.displayField.selectText(nil)
ViewController.current?.textDisplay.setSelectedRange(NSRange())
ViewController.shared?.textDisplay.setSelectedRange(NSRange())
}
@IBAction func Copy(_ sender: Any) {
ViewController.current?.Copy()
ViewController.shared?.Copy()
}
@IBAction func Paste(_ sender: Any) {
ViewController.current?.Paste()
ViewController.shared?.Paste()
}
@IBAction func Green(_ sender: Any) {
// print("NSToolbarItem:", sender.tag)
ViewController.current?.MonoMonitorChange(color: "Green")
ViewController.shared?.MonoMonitorChange(color: "Green")
}
@IBAction func Amber(_ sender: Any) {
// print("NSToolbarItem:", sender.tag)
ViewController.current?.MonoMonitorChange(color: "Amber")
ViewController.shared?.MonoMonitorChange(color: "Amber")
}
@IBAction func White(_ sender: Any) {
// print("NSToolbarItem:", sender.tag)
ViewController.current?.MonoMonitorChange(color: "White")
ViewController.shared?.MonoMonitorChange(color: "White")
}
@IBAction func Color(_ sender: Any) {
ViewController.current?.ColorMonitorSelector(color: true)
ViewController.shared?.ColorMonitorSelector(color: true)
}
@IBOutlet weak var SpeedSelector: NSToolbarItem!
@ -255,43 +255,43 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
@IBAction func SpeedSelected(_ slider: NSSliderCell) {
switch slider.intValue {
case 1:
ViewController.current?.setCPUClockSpeed(freq: 0.25)
ViewController.shared?.setCPUClockSpeed(freq: 0.25)
SpeedSelector.label = "0.25 MHz"
case 2:
ViewController.current?.setCPUClockSpeed(freq: 0.5)
ViewController.shared?.setCPUClockSpeed(freq: 0.5)
SpeedSelector.label = "0.5 MHz"
case 4:
ViewController.current?.setCPUClockSpeed(freq: 1.5)
ViewController.shared?.setCPUClockSpeed(freq: 1.5)
SpeedSelector.label = "1.5 MHz"
case 5:
ViewController.current?.setCPUClockSpeed(freq: 2)
ViewController.shared?.setCPUClockSpeed(freq: 2)
SpeedSelector.label = "2 MHz"
case 6:
ViewController.current?.setCPUClockSpeed(freq: 2.8)
ViewController.shared?.setCPUClockSpeed(freq: 2.8)
SpeedSelector.label = "2.8 MHz"
case 7:
ViewController.current?.setCPUClockSpeed(freq: 4)
ViewController.shared?.setCPUClockSpeed(freq: 4)
SpeedSelector.label = "4 MHz"
case 8:
ViewController.current?.setCPUClockSpeed(freq: 10)
ViewController.shared?.setCPUClockSpeed(freq: 10)
SpeedSelector.label = "10 MHz"
case 9:
ViewController.current?.setCPUClockSpeed(freq: 100)
ViewController.shared?.setCPUClockSpeed(freq: 100)
SpeedSelector.label = "100 MHz"
case 10:
ViewController.current?.setCPUClockSpeed(freq: 2000)
ViewController.shared?.setCPUClockSpeed(freq: 2000)
SpeedSelector.label = "MAX Speed"
default:
ViewController.current?.setCPUClockSpeed(freq: 14.31818 / 14.0)
ViewController.shared?.setCPUClockSpeed(freq: 14.31818 / 14.0)
SpeedSelector.label = "1.023 MHz"
}
}
@ -312,24 +312,24 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
@IBAction func GamePort(_ sender: NSPopUpButton) {
switch sender.selectedItem?.tag {
case 1: // "Keyboard -> Joystick"
if let state = ViewController.current?.Keyboard2Joystick {
ViewController.current?.Keyboard2Joystick = !state
if let state = ViewController.shared?.Keyboard2Joystick {
ViewController.shared?.Keyboard2Joystick = !state
sender.selectedItem?.state = state ? .off : .on
}
break
case 2: // "Mouse -> Joystick"
if let state = ViewController.current?.Mouse2Joystick {
ViewController.current?.Mouse2Joystick = !state
if let state = ViewController.shared?.Mouse2Joystick {
ViewController.shared?.Mouse2Joystick = !state
sender.selectedItem?.state = state ? .off : .on
ViewController.current?.mouseCursor(hide: !state)
ViewController.shared?.mouseCursor(hide: !state)
}
break
case 3: // "Mouse Enabled"
if let state = ViewController.current?.MouseInterface {
ViewController.current?.MouseInterface = !state
if let state = ViewController.shared?.MouseInterface {
ViewController.shared?.MouseInterface = !state
sender.selectedItem?.state = state ? .off : .on
}
break
@ -376,7 +376,7 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
@IBAction func CPUMode(_ sender: NSPopUpButton) {
switch sender.selectedItem?.tag {
case 1: // "Normal Mode"
ViewController.current?.setSimulationMode( mode: "Normal" )
ViewController.shared?.setSimulationMode( mode: "Normal" )
for i in sender.itemArray {
i.state = .off
}
@ -384,7 +384,7 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
break
case 2: // "Eco Mode"
ViewController.current?.setSimulationMode( mode: "Eco" )
ViewController.shared?.setSimulationMode( mode: "Eco" )
for i in sender.itemArray {
i.state = .off
}
@ -392,7 +392,7 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
break
case 3: // "Write Enabled"
ViewController.current?.setSimulationMode( mode: "Game" )
ViewController.shared?.setSimulationMode( mode: "Game" )
for i in sender.itemArray {
i.state = .off
}
@ -405,16 +405,16 @@ class ToolBarController: NSWindowController, NSWindowDelegate {
}
@IBAction func CRTModeOnOff(_ sender: NSButton) {
ViewController.current?.CRTMonitorOnOff(sender)
ViewController.shared?.CRTMonitorOnOff(sender)
}
@IBAction func Debugger(_ sender: Any) {
if DebuggerWindowController.current == nil {
if DebuggerWindowController.shared == nil {
let debuggerStoryboard = NSStoryboard.init(name: NSStoryboard.Name("Debugger"), bundle: nil)
debuggerStoryboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("debuggerWindowController"))
}
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.showWindow(self)
}
}

View File

@ -77,7 +77,7 @@ import Metal
class ViewController: NSViewController {
static var current : ViewController? = nil
static var shared : ViewController? = nil
var displayLink: CVDisplayLink?
@ -254,7 +254,7 @@ class ViewController: NSViewController {
self.upd.resume()
#endif
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate(needUpdateMainToolbar: false)
}
}
@ -322,7 +322,7 @@ class ViewController: NSViewController {
})
}
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate(needUpdateMainToolbar: false)
}
@ -348,7 +348,11 @@ class ViewController: NSViewController {
cpuState = cpuState_running
if let debugger = DebuggerWindowController.current {
DispatchQueue.main.async {
self.view.window?.windowController?.showWindow(self)
}
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate()
}
}
@ -363,7 +367,7 @@ class ViewController: NSViewController {
cpuState = cpuState_halted
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.PauseButtonUpdate()
}
}
@ -735,17 +739,17 @@ class ViewController: NSViewController {
Pause()
case F6FunctionKey:
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.Step_Over(event)
}
case F7FunctionKey:
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.Step_In(event)
}
case F8FunctionKey:
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
debugger.Step_Out(event)
}
@ -1272,7 +1276,7 @@ class ViewController: NSViewController {
if let debugger = DebuggerViewController.shared {
debugger.Update()
}
if let debugger = DebuggerWindowController.current {
if let debugger = DebuggerWindowController.shared {
DispatchQueue.main.async {
debugger.showWindow(self)
}
@ -1427,7 +1431,7 @@ class ViewController: NSViewController {
// print(#function)
super.init(coder: coder)
ViewController.current = self
ViewController.shared = self
}
@ -2085,7 +2089,7 @@ class ViewController: NSViewController {
case 1000: // Open Default Disk Image
if let menuIdentifier = sender.selectedItem?.title {
let woz_err = woz_loadFile( Bundle.main.resourcePath! + "/dsk/" + menuIdentifier + ".woz" )
ViewController.current?.chk_woz_load(err: woz_err)
ViewController.shared?.chk_woz_load(err: woz_err)
woz_flags.image_file_readonly = 1
}
@ -2285,6 +2289,6 @@ class ViewController: NSViewController {
@_cdecl("woz_ask_to_save")
func woz_ask_to_save() {
ViewController.current?.saveFile()
ViewController.shared?.saveFile()
}