From 7268766cd6d8202621f04ff53d8a8e5912342597 Mon Sep 17 00:00:00 2001 From: Seth Morabito Date: Thu, 20 Mar 2025 15:03:32 -0700 Subject: [PATCH] Implement Step-Over functionality This change adds a new "Step Over" button, which is enabled when a "JSR" (Jump to Subroutine) instruction is encountered while stepping through execution one instruction at a time. Pressing "Step Over" will continue running instructions until a corresponding "RTS" (Return from Subroutine) is encountered. While stepping over a subroutine, the call stack depth is tracked in an attempt to halt only when the *correct* RTS is encountered. In other words, it should skip over other subroutines nested inside the call you want to step over: ``` JSR A # Step over here... ... JSR B ... RTS # Returns from 'B', doesn't halt ... RTS # Returns from 'A', halts after return ``` Implements feature request #18. --- README.md | 2 +- .../java/com/loomcom/symon/Breakpoints.java | 23 ++++++ src/main/java/com/loomcom/symon/Bus.java | 2 +- src/main/java/com/loomcom/symon/Cpu.java | 6 +- src/main/java/com/loomcom/symon/CpuState.java | 23 ++++++ .../com/loomcom/symon/InstructionTable.java | 6 +- src/main/java/com/loomcom/symon/Main.java | 5 +- .../java/com/loomcom/symon/MemoryRange.java | 2 +- .../java/com/loomcom/symon/Preferences.java | 2 +- .../java/com/loomcom/symon/Simulator.java | 71 ++++++++++++++++--- .../java/com/loomcom/symon/devices/Acia.java | 2 +- .../com/loomcom/symon/devices/Acia6551.java | 2 +- .../com/loomcom/symon/devices/Acia6850.java | 4 +- .../java/com/loomcom/symon/devices/Crtc.java | 2 +- .../com/loomcom/symon/devices/Device.java | 2 +- .../symon/devices/DeviceChangeListener.java | 2 +- .../com/loomcom/symon/devices/Memory.java | 2 +- .../java/com/loomcom/symon/devices/Pia.java | 2 +- .../loomcom/symon/devices/SdController.java | 4 +- .../com/loomcom/symon/devices/Via6522.java | 2 +- .../exceptions/FifoUnderrunException.java | 2 +- .../exceptions/MemoryAccessException.java | 2 +- .../exceptions/MemoryRangeException.java | 2 +- .../symon/exceptions/SymonException.java | 2 +- .../loomcom/symon/jterminal/JTerminal.java | 2 +- .../symon/machines/BenEaterMachine.java | 6 +- .../com/loomcom/symon/machines/Machine.java | 8 +-- .../symon/machines/MulticompMachine.java | 4 +- .../loomcom/symon/machines/SimpleMachine.java | 4 +- .../loomcom/symon/machines/SymonMachine.java | 4 +- .../loomcom/symon/ui/BreakpointsWindow.java | 2 +- .../java/com/loomcom/symon/ui/Console.java | 2 +- .../com/loomcom/symon/ui/MemoryWindow.java | 2 +- .../loomcom/symon/ui/PreferencesDialog.java | 2 +- .../com/loomcom/symon/ui/StatusPanel.java | 2 +- .../java/com/loomcom/symon/ui/TraceLog.java | 4 +- .../com/loomcom/symon/ui/VideoWindow.java | 2 +- .../loomcom/symon/util/FifoRingBuffer.java | 2 +- .../java/com/loomcom/symon/util/Utils.java | 2 +- 39 files changed, 164 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 563a479..d28d4b0 100644 --- a/README.md +++ b/README.md @@ -377,7 +377,7 @@ running. ## 8.0 Copyright and Acknowledgements -**Copyright (c) 2014 Seth J. Morabito <web@loomcom.com>** +**Copyright (c) 2008-2025 Seth J. Morabito <web@loomcom.com>** - Portions Copyright (c) 2014 Maik Merten <maikmerten@googlemail.com> diff --git a/src/main/java/com/loomcom/symon/Breakpoints.java b/src/main/java/com/loomcom/symon/Breakpoints.java index 1ca0f1d..4087c61 100644 --- a/src/main/java/com/loomcom/symon/Breakpoints.java +++ b/src/main/java/com/loomcom/symon/Breakpoints.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2008-2025 Seth J. Morabito + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + package com.loomcom.symon; import com.loomcom.symon.exceptions.MemoryAccessException; diff --git a/src/main/java/com/loomcom/symon/Bus.java b/src/main/java/com/loomcom/symon/Bus.java index ed70c21..3a54bb5 100644 --- a/src/main/java/com/loomcom/symon/Bus.java +++ b/src/main/java/com/loomcom/symon/Bus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/Cpu.java b/src/main/java/com/loomcom/symon/Cpu.java index 7910848..26385dd 100644 --- a/src/main/java/com/loomcom/symon/Cpu.java +++ b/src/main/java/com/loomcom/symon/Cpu.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -1699,6 +1699,10 @@ public class Cpu implements InstructionTable { return state.ir; } + public int getNextIr() { + return state.nextIr; + } + /** * @value The value of the Process Status Register bits to be set. */ diff --git a/src/main/java/com/loomcom/symon/CpuState.java b/src/main/java/com/loomcom/symon/CpuState.java index d207343..fc28c0e 100644 --- a/src/main/java/com/loomcom/symon/CpuState.java +++ b/src/main/java/com/loomcom/symon/CpuState.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2008-2025 Seth J. Morabito + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + package com.loomcom.symon; import com.loomcom.symon.util.Utils; diff --git a/src/main/java/com/loomcom/symon/InstructionTable.java b/src/main/java/com/loomcom/symon/InstructionTable.java index 829a42b..ac8b1b8 100644 --- a/src/main/java/com/loomcom/symon/InstructionTable.java +++ b/src/main/java/com/loomcom/symon/InstructionTable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -25,6 +25,10 @@ package com.loomcom.symon; public interface InstructionTable { + int BRK = 0x00; + int JSR = 0x20; + int RTS = 0x60; + /** * Enumeration of valid CPU behaviors. These determine what behavior and instruction * set will be simulated, depending on desired version of 6502. diff --git a/src/main/java/com/loomcom/symon/Main.java b/src/main/java/com/loomcom/symon/Main.java index 4641224..1f4b444 100644 --- a/src/main/java/com/loomcom/symon/Main.java +++ b/src/main/java/com/loomcom/symon/Main.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -22,7 +22,6 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - package com.loomcom.symon; import com.loomcom.symon.machines.*; diff --git a/src/main/java/com/loomcom/symon/MemoryRange.java b/src/main/java/com/loomcom/symon/MemoryRange.java index 9c4a098..6d12d36 100644 --- a/src/main/java/com/loomcom/symon/MemoryRange.java +++ b/src/main/java/com/loomcom/symon/MemoryRange.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/Preferences.java b/src/main/java/com/loomcom/symon/Preferences.java index bf7a88a..1585ad8 100644 --- a/src/main/java/com/loomcom/symon/Preferences.java +++ b/src/main/java/com/loomcom/symon/Preferences.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/Simulator.java b/src/main/java/com/loomcom/symon/Simulator.java index eaa9a16..92d0547 100644 --- a/src/main/java/com/loomcom/symon/Simulator.java +++ b/src/main/java/com/loomcom/symon/Simulator.java @@ -1,5 +1,5 @@ /* - * Copyrighi (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -37,6 +37,8 @@ import java.awt.*; import java.awt.event.*; import java.io.*; +import static com.loomcom.symon.InstructionTable.*; + /** * Symon Simulator Interface and Control. *

@@ -112,6 +114,7 @@ public class Simulator { private JButton runStopButton; private JButton stepButton; + private JButton stepOverButton; private JComboBox stepCountBox; private JFileChooser fileChooser; @@ -188,6 +191,8 @@ public class Simulator { runStopButton = new JButton("Run"); stepButton = new JButton("Step"); + stepOverButton = new JButton("Step Over"); + stepOverButton.setEnabled(false); JButton softResetButton = new JButton("Soft Reset"); JButton hardResetButton = new JButton("Hard Reset"); @@ -209,6 +214,7 @@ public class Simulator { buttonContainer.add(runStopButton); buttonContainer.add(stepButton); + buttonContainer.add(stepOverButton); buttonContainer.add(stepCountBox); buttonContainer.add(softResetButton); buttonContainer.add(hardResetButton); @@ -232,6 +238,7 @@ public class Simulator { }); stepButton.addActionListener(actionEvent -> Simulator.this.handleStep(stepsPerClick)); + stepOverButton.addActionListener(actionEvent -> Simulator.this.handleStepOver()); softResetButton.addActionListener(actionEvent -> { // If this was a CTRL-click, do a hard reset. @@ -325,11 +332,28 @@ public class Simulator { step(); } updateVisibleState(); + stepOverButton.setEnabled(machine.getCpu().getNextIr() == JSR); } catch (SymonException ex) { logger.error("Exception during simulator step", ex); } } + /** + * Step over a JSR / RTS function. This function is much more like a "run()" + * than a "step()", and may enter an infinite loop if no RTS is encountered. + */ + private void handleStepOver() { + if (runLoop != null && runLoop.isRunning()) { + // This should really never happen... + logger.error("Can't step over when the simulator is already running!"); + return; + } + + runLoop = new RunLoop(); + runLoop.haltOnRts(true); + runLoop.start(); + } + /** * Perform a single step of the simulated system. */ @@ -398,22 +422,36 @@ public class Simulator { */ class RunLoop extends Thread { private boolean isRunning = false; + private boolean haltOnRts = false; + // The number of JSR instructions we've seen since being asked to + // step over a subroutine. While stepping over, this is incremented + // on RTS instructions, and decremented on JSR instructions. + private int callStackDepth = 0; public boolean isRunning() { - return isRunning; + return this.isRunning; } public void requestStop() { - isRunning = false; + this.isRunning = false; + } + + public void haltOnRts(boolean value) { + this.haltOnRts = value; } public void run() { - logger.debug("Starting main run loop."); - isRunning = true; + if (this.haltOnRts) { + logger.debug("Running until next RTS instruction"); + } else { + logger.debug("Running"); + } + this.isRunning = true; SwingUtilities.invokeLater(() -> { // Don't allow step while the simulator is running stepButton.setEnabled(false); + stepOverButton.setEnabled(false); stepCountBox.setEnabled(false); menuBar.simulatorDidStart(); // Toggle the state of the run button @@ -423,6 +461,17 @@ public class Simulator { try { do { step(); + if (this.haltOnRts) { + var instruction = machine.getCpu().getInstruction(); + if (instruction == JSR) { + this.callStackDepth++; + logger.trace("Step-over call stack increased to {}", this.callStackDepth); + } else if (this.callStackDepth > 0 && instruction == RTS) { + this.callStackDepth--; + logger.trace("Step-over call stack decreased to {}", this.callStackDepth); + } + } + } while (shouldContinue()); } catch (SymonException ex) { logger.error("Exception in main simulator run thread. Exiting run.", ex); @@ -433,6 +482,7 @@ public class Simulator { memoryWindow.updateState(); runStopButton.setText("Run"); stepButton.setEnabled(true); + stepOverButton.setEnabled(machine.getCpu().getNextIr() == JSR); stepCountBox.setEnabled(true); if (traceLog.isVisible()) { traceLog.refresh(); @@ -448,9 +498,13 @@ public class Simulator { * @return True if the run loop should proceed to the next step. */ private boolean shouldContinue() { - return !breakpoints.contains(machine.getCpu().getProgramCounter()) && - isRunning && - !(preferences.getHaltOnBreak() && machine.getCpu().getInstruction() == 0x00); + var instruction = machine.getCpu().getInstruction(); + + var stepOverHalt = this.haltOnRts && this.callStackDepth == 0 && instruction == RTS; + var breakpointHalt = breakpoints.contains(machine.getCpu().getProgramCounter()); + var brkHalt = preferences.getHaltOnBreak() && instruction == BRK; + + return isRunning && !(stepOverHalt || breakpointHalt || brkHalt); } } @@ -924,7 +978,6 @@ public class Simulator { private void updateVisibleState() { // Immediately update the UI. SwingUtilities.invokeLater(() -> { - // Now update the state statusPane.updateState(); memoryWindow.updateState(); if (traceLog.shouldUpdate()) { diff --git a/src/main/java/com/loomcom/symon/devices/Acia.java b/src/main/java/com/loomcom/symon/devices/Acia.java index 12fb3d2..30b3e60 100644 --- a/src/main/java/com/loomcom/symon/devices/Acia.java +++ b/src/main/java/com/loomcom/symon/devices/Acia.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/Acia6551.java b/src/main/java/com/loomcom/symon/devices/Acia6551.java index 3401daa..9680328 100644 --- a/src/main/java/com/loomcom/symon/devices/Acia6551.java +++ b/src/main/java/com/loomcom/symon/devices/Acia6551.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/Acia6850.java b/src/main/java/com/loomcom/symon/devices/Acia6850.java index d3b1c93..5f2ace4 100644 --- a/src/main/java/com/loomcom/symon/devices/Acia6850.java +++ b/src/main/java/com/loomcom/symon/devices/Acia6850.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/Crtc.java b/src/main/java/com/loomcom/symon/devices/Crtc.java index 464da5f..5d2df65 100644 --- a/src/main/java/com/loomcom/symon/devices/Crtc.java +++ b/src/main/java/com/loomcom/symon/devices/Crtc.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/Device.java b/src/main/java/com/loomcom/symon/devices/Device.java index f7b9386..0d1ba01 100644 --- a/src/main/java/com/loomcom/symon/devices/Device.java +++ b/src/main/java/com/loomcom/symon/devices/Device.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/DeviceChangeListener.java b/src/main/java/com/loomcom/symon/devices/DeviceChangeListener.java index 72c431d..f0397cd 100644 --- a/src/main/java/com/loomcom/symon/devices/DeviceChangeListener.java +++ b/src/main/java/com/loomcom/symon/devices/DeviceChangeListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/Memory.java b/src/main/java/com/loomcom/symon/devices/Memory.java index 62dee95..01bc1e7 100644 --- a/src/main/java/com/loomcom/symon/devices/Memory.java +++ b/src/main/java/com/loomcom/symon/devices/Memory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/Pia.java b/src/main/java/com/loomcom/symon/devices/Pia.java index 1eaa667..a8c3301 100644 --- a/src/main/java/com/loomcom/symon/devices/Pia.java +++ b/src/main/java/com/loomcom/symon/devices/Pia.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/SdController.java b/src/main/java/com/loomcom/symon/devices/SdController.java index 0663272..6007b0c 100644 --- a/src/main/java/com/loomcom/symon/devices/SdController.java +++ b/src/main/java/com/loomcom/symon/devices/SdController.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/devices/Via6522.java b/src/main/java/com/loomcom/symon/devices/Via6522.java index 6b00007..5eb3e50 100644 --- a/src/main/java/com/loomcom/symon/devices/Via6522.java +++ b/src/main/java/com/loomcom/symon/devices/Via6522.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/exceptions/FifoUnderrunException.java b/src/main/java/com/loomcom/symon/exceptions/FifoUnderrunException.java index 0926c0b..6c9f1a4 100644 --- a/src/main/java/com/loomcom/symon/exceptions/FifoUnderrunException.java +++ b/src/main/java/com/loomcom/symon/exceptions/FifoUnderrunException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/exceptions/MemoryAccessException.java b/src/main/java/com/loomcom/symon/exceptions/MemoryAccessException.java index 312d5cf..40ee88f 100644 --- a/src/main/java/com/loomcom/symon/exceptions/MemoryAccessException.java +++ b/src/main/java/com/loomcom/symon/exceptions/MemoryAccessException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/exceptions/MemoryRangeException.java b/src/main/java/com/loomcom/symon/exceptions/MemoryRangeException.java index 074adec..8a5c833 100644 --- a/src/main/java/com/loomcom/symon/exceptions/MemoryRangeException.java +++ b/src/main/java/com/loomcom/symon/exceptions/MemoryRangeException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/exceptions/SymonException.java b/src/main/java/com/loomcom/symon/exceptions/SymonException.java index 63f1ac9..adda42a 100644 --- a/src/main/java/com/loomcom/symon/exceptions/SymonException.java +++ b/src/main/java/com/loomcom/symon/exceptions/SymonException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/jterminal/JTerminal.java b/src/main/java/com/loomcom/symon/jterminal/JTerminal.java index 0a2a9e2..9e0bbc7 100644 --- a/src/main/java/com/loomcom/symon/jterminal/JTerminal.java +++ b/src/main/java/com/loomcom/symon/jterminal/JTerminal.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * Portions Copyright (c) 2009-2011 Graham Edgecombe * * Permission is hereby granted, free of charge, to any person obtaining diff --git a/src/main/java/com/loomcom/symon/machines/BenEaterMachine.java b/src/main/java/com/loomcom/symon/machines/BenEaterMachine.java index 46bab91..3c471e3 100644 --- a/src/main/java/com/loomcom/symon/machines/BenEaterMachine.java +++ b/src/main/java/com/loomcom/symon/machines/BenEaterMachine.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten - * Chelsea Wilkinson + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten + * Chelsea Wilkinson * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/machines/Machine.java b/src/main/java/com/loomcom/symon/machines/Machine.java index d5502f9..527b870 100644 --- a/src/main/java/com/loomcom/symon/machines/Machine.java +++ b/src/main/java/com/loomcom/symon/machines/Machine.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the @@ -42,9 +42,9 @@ public interface Machine { Memory getRam(); Acia getAcia(); - + Pia getPia(); - + Crtc getCrtc(); Memory getRom(); diff --git a/src/main/java/com/loomcom/symon/machines/MulticompMachine.java b/src/main/java/com/loomcom/symon/machines/MulticompMachine.java index d16a13f..4f853ed 100644 --- a/src/main/java/com/loomcom/symon/machines/MulticompMachine.java +++ b/src/main/java/com/loomcom/symon/machines/MulticompMachine.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/machines/SimpleMachine.java b/src/main/java/com/loomcom/symon/machines/SimpleMachine.java index a46b0e6..a16154e 100644 --- a/src/main/java/com/loomcom/symon/machines/SimpleMachine.java +++ b/src/main/java/com/loomcom/symon/machines/SimpleMachine.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/machines/SymonMachine.java b/src/main/java/com/loomcom/symon/machines/SymonMachine.java index 550f157..36586cf 100644 --- a/src/main/java/com/loomcom/symon/machines/SymonMachine.java +++ b/src/main/java/com/loomcom/symon/machines/SymonMachine.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/ui/BreakpointsWindow.java b/src/main/java/com/loomcom/symon/ui/BreakpointsWindow.java index 211cac2..3794220 100644 --- a/src/main/java/com/loomcom/symon/ui/BreakpointsWindow.java +++ b/src/main/java/com/loomcom/symon/ui/BreakpointsWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/ui/Console.java b/src/main/java/com/loomcom/symon/ui/Console.java index 6bca639..5f85aa3 100644 --- a/src/main/java/com/loomcom/symon/ui/Console.java +++ b/src/main/java/com/loomcom/symon/ui/Console.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/ui/MemoryWindow.java b/src/main/java/com/loomcom/symon/ui/MemoryWindow.java index 7494e3e..9ac9db4 100644 --- a/src/main/java/com/loomcom/symon/ui/MemoryWindow.java +++ b/src/main/java/com/loomcom/symon/ui/MemoryWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/ui/PreferencesDialog.java b/src/main/java/com/loomcom/symon/ui/PreferencesDialog.java index 15fb243..8d425e6 100644 --- a/src/main/java/com/loomcom/symon/ui/PreferencesDialog.java +++ b/src/main/java/com/loomcom/symon/ui/PreferencesDialog.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/ui/StatusPanel.java b/src/main/java/com/loomcom/symon/ui/StatusPanel.java index f0e10e3..cef25fe 100644 --- a/src/main/java/com/loomcom/symon/ui/StatusPanel.java +++ b/src/main/java/com/loomcom/symon/ui/StatusPanel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/ui/TraceLog.java b/src/main/java/com/loomcom/symon/ui/TraceLog.java index 0601326..8e1599a 100644 --- a/src/main/java/com/loomcom/symon/ui/TraceLog.java +++ b/src/main/java/com/loomcom/symon/ui/TraceLog.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2016 Seth J. Morabito - * Maik Merten + * Copyright (c) 2008-2025 Seth J. Morabito + * Maik Merten * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/ui/VideoWindow.java b/src/main/java/com/loomcom/symon/ui/VideoWindow.java index e0a15d2..ca5db72 100644 --- a/src/main/java/com/loomcom/symon/ui/VideoWindow.java +++ b/src/main/java/com/loomcom/symon/ui/VideoWindow.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/util/FifoRingBuffer.java b/src/main/java/com/loomcom/symon/util/FifoRingBuffer.java index a7ec0ca..fcf636f 100644 --- a/src/main/java/com/loomcom/symon/util/FifoRingBuffer.java +++ b/src/main/java/com/loomcom/symon/util/FifoRingBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/src/main/java/com/loomcom/symon/util/Utils.java b/src/main/java/com/loomcom/symon/util/Utils.java index ff83107..48d2a15 100644 --- a/src/main/java/com/loomcom/symon/util/Utils.java +++ b/src/main/java/com/loomcom/symon/util/Utils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Seth J. Morabito + * Copyright (c) 2008-2025 Seth J. Morabito * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the