diff --git a/A2Mac/AppDelegate.swift b/A2Mac/AppDelegate.swift index 48ed420..5cd43eb 100644 --- a/A2Mac/AppDelegate.swift +++ b/A2Mac/AppDelegate.swift @@ -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) } diff --git a/A2Mac/CheatMenu.swift b/A2Mac/CheatMenu.swift index c4f01c4..feddf27 100644 --- a/A2Mac/CheatMenu.swift +++ b/A2Mac/CheatMenu.swift @@ -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!) } diff --git a/A2Mac/DebuggerViewController.swift b/A2Mac/DebuggerViewController.swift index a1b6898..d4fa42e 100644 --- a/A2Mac/DebuggerViewController.swift +++ b/A2Mac/DebuggerViewController.swift @@ -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 { diff --git a/A2Mac/DebuggerWindowController.swift b/A2Mac/DebuggerWindowController.swift index 213e787..55969a7 100644 --- a/A2Mac/DebuggerWindowController.swift +++ b/A2Mac/DebuggerWindowController.swift @@ -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() } diff --git a/A2Mac/DisplayView.swift b/A2Mac/DisplayView.swift index 7b274a5..9901663 100644 --- a/A2Mac/DisplayView.swift +++ b/A2Mac/DisplayView.swift @@ -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) } diff --git a/A2Mac/HiRes.swift b/A2Mac/HiRes.swift index 0c8d169..904540d 100644 --- a/A2Mac/HiRes.swift +++ b/A2Mac/HiRes.swift @@ -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 { diff --git a/A2Mac/ToolBarController.swift b/A2Mac/ToolBarController.swift index ca01fcb..4b18b4e 100644 --- a/A2Mac/ToolBarController.swift +++ b/A2Mac/ToolBarController.swift @@ -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) } } diff --git a/A2Mac/ViewController.swift b/A2Mac/ViewController.swift index 742c913..aa1fec9 100644 --- a/A2Mac/ViewController.swift +++ b/A2Mac/ViewController.swift @@ -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() }