Revert Java 1.8 changes. Buildable with Java 1.7
There are still active users on Java 1.7, so building with Java 8 was a no-no. This change reverts the recent migration to Java 8, allowing JDK 1.7 to compile the code. This means, at least for the time being, no more Lambda expressions (Boooooooooooooooo!!)
This commit is contained in:
1 parent
f3a5dd93ad
commit
66c52c8826
9 files changed
+232
-149
No files matched your search
@@ -4,7 +4,7 @@
|
|||||||
<groupId>com.loomcom.symon</groupId>
|
<groupId>com.loomcom.symon</groupId>
|
||||||
<artifactId>symon</artifactId>
|
<artifactId>symon</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>1.2.0</version>
|
<version>1.2.1</version>
|
||||||
<name>symon</name>
|
<name>symon</name>
|
||||||
<url>http://www.loomcom.com/symon</url>
|
<url>http://www.loomcom.com/symon</url>
|
||||||
<properties>
|
<properties>
|
||||||
@@ -91,8 +91,8 @@
|
|||||||
<version>3.1</version>
|
<version>3.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<compilerArgument>-Xlint:unchecked</compilerArgument>
|
<compilerArgument>-Xlint:unchecked</compilerArgument>
|
||||||
<source>1.8</source>
|
<source>1.7</source>
|
||||||
<target>1.8</target>
|
<target>1.7</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
|||||||
@@ -222,9 +222,11 @@ public class Bus {
|
|||||||
List<Integer> priorities = new ArrayList<>(deviceMap.keySet());
|
List<Integer> priorities = new ArrayList<>(deviceMap.keySet());
|
||||||
Collections.sort(priorities);
|
Collections.sort(priorities);
|
||||||
|
|
||||||
for(int priority : priorities) {
|
for (int priority : priorities) {
|
||||||
SortedSet<Device> deviceSet = deviceMap.get(priority);
|
SortedSet<Device> deviceSet = deviceMap.get(priority);
|
||||||
devices.addAll(deviceSet.stream().collect(Collectors.toList()));
|
for (Device device : deviceSet) {
|
||||||
|
devices.add(device);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return devices;
|
return devices;
|
||||||
|
|||||||
@@ -86,13 +86,16 @@ public class Main {
|
|||||||
|
|
||||||
final Simulator simulator = new Simulator(machineClass);
|
final Simulator simulator = new Simulator(machineClass);
|
||||||
|
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
try {
|
@Override
|
||||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
public void run() {
|
||||||
// Create the main UI window
|
try {
|
||||||
simulator.createAndShowUi();
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
} catch (Exception e) {
|
// Create the main UI window
|
||||||
e.printStackTrace();
|
simulator.createAndShowUi();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -185,13 +185,16 @@ public class Simulator {
|
|||||||
JButton hardResetButton = new JButton("Hard Reset");
|
JButton hardResetButton = new JButton("Hard Reset");
|
||||||
|
|
||||||
stepCountBox = new JComboBox<>(STEPS);
|
stepCountBox = new JComboBox<>(STEPS);
|
||||||
stepCountBox.addActionListener(actionEvent -> {
|
stepCountBox.addActionListener(new ActionListener() {
|
||||||
try {
|
@Override
|
||||||
JComboBox cb = (JComboBox) actionEvent.getSource();
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
stepsPerClick = Integer.parseInt((String) cb.getSelectedItem());
|
try {
|
||||||
} catch (NumberFormatException ex) {
|
JComboBox cb = (JComboBox) actionEvent.getSource();
|
||||||
stepsPerClick = 1;
|
stepsPerClick = Integer.parseInt((String) cb.getSelectedItem());
|
||||||
stepCountBox.setSelectedIndex(0);
|
} catch (NumberFormatException ex) {
|
||||||
|
stepsPerClick = 1;
|
||||||
|
stepCountBox.setSelectedIndex(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -211,24 +214,38 @@ public class Simulator {
|
|||||||
// Bottom - buttons.
|
// Bottom - buttons.
|
||||||
mainWindow.getContentPane().add(buttonContainer, BorderLayout.PAGE_END);
|
mainWindow.getContentPane().add(buttonContainer, BorderLayout.PAGE_END);
|
||||||
|
|
||||||
runStopButton.addActionListener(actionEvent -> {
|
runStopButton.addActionListener(new ActionListener() {
|
||||||
if (runLoop != null && runLoop.isRunning()) {
|
@Override
|
||||||
handleStop();
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
} else {
|
if (runLoop != null && runLoop.isRunning()) {
|
||||||
handleStart();
|
Simulator.this.handleStop();
|
||||||
|
} else {
|
||||||
|
Simulator.this.handleStart();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
stepButton.addActionListener(actionEvent -> handleStep(stepsPerClick));
|
stepButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
softResetButton.addActionListener(actionEvent -> {
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
// If this was a CTRL-click, do a hard reset.
|
Simulator.this.handleStep(stepsPerClick);
|
||||||
handleReset(false);
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
hardResetButton.addActionListener(actionEvent -> {
|
softResetButton.addActionListener(new ActionListener() {
|
||||||
// If this was a CTRL-click, do a hard reset.
|
@Override
|
||||||
handleReset(true);
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
|
// If this was a CTRL-click, do a hard reset.
|
||||||
|
Simulator.this.handleReset(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
hardResetButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
|
// If this was a CTRL-click, do a hard reset.
|
||||||
|
Simulator.this.handleReset(true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mainWindow.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
mainWindow.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||||
@@ -400,13 +417,16 @@ public class Simulator {
|
|||||||
logger.debug("Starting main run loop.");
|
logger.debug("Starting main run loop.");
|
||||||
isRunning = true;
|
isRunning = true;
|
||||||
|
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
// Don't allow step while the simulator is running
|
@Override
|
||||||
stepButton.setEnabled(false);
|
public void run() {
|
||||||
stepCountBox.setEnabled(false);
|
// Don't allow step while the simulator is running
|
||||||
menuBar.simulatorDidStart();
|
stepButton.setEnabled(false);
|
||||||
// Toggle the state of the run button
|
stepCountBox.setEnabled(false);
|
||||||
runStopButton.setText("Stop");
|
menuBar.simulatorDidStart();
|
||||||
|
// Toggle the state of the run button
|
||||||
|
runStopButton.setText("Stop");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -417,17 +437,20 @@ public class Simulator {
|
|||||||
logger.error("Exception in main simulator run thread. Exiting run.", ex);
|
logger.error("Exception in main simulator run thread. Exiting run.", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
statusPane.updateState();
|
@Override
|
||||||
memoryWindow.updateState();
|
public void run() {
|
||||||
runStopButton.setText("Run");
|
statusPane.updateState();
|
||||||
stepButton.setEnabled(true);
|
memoryWindow.updateState();
|
||||||
stepCountBox.setEnabled(true);
|
runStopButton.setText("Run");
|
||||||
if (traceLog.isVisible()) {
|
stepButton.setEnabled(true);
|
||||||
traceLog.refresh();
|
stepCountBox.setEnabled(true);
|
||||||
|
if (traceLog.isVisible()) {
|
||||||
|
traceLog.refresh();
|
||||||
|
}
|
||||||
|
menuBar.simulatorDidStop();
|
||||||
|
traceLog.simulatorDidStop();
|
||||||
}
|
}
|
||||||
menuBar.simulatorDidStop();
|
|
||||||
traceLog.simulatorDidStop();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
isRunning = false;
|
isRunning = false;
|
||||||
@@ -480,9 +503,12 @@ public class Simulator {
|
|||||||
// Now load the program at the starting address.
|
// Now load the program at the starting address.
|
||||||
loadProgram(program, preferences.getProgramStartAddress());
|
loadProgram(program, preferences.getProgramStartAddress());
|
||||||
|
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
console.reset();
|
@Override
|
||||||
breakpoints.refresh();
|
public void run() {
|
||||||
|
console.reset();
|
||||||
|
breakpoints.refresh();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: "Don't Show Again" checkbox
|
// TODO: "Don't Show Again" checkbox
|
||||||
@@ -623,9 +649,12 @@ public class Simulator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent actionEvent) {
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
console.setFont(new Font("Monospaced", Font.PLAIN, size));
|
@Override
|
||||||
mainWindow.pack();
|
public void run() {
|
||||||
|
console.setFont(new Font("Monospaced", Font.PLAIN, size));
|
||||||
|
mainWindow.pack();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -889,12 +918,15 @@ public class Simulator {
|
|||||||
|
|
||||||
private void updateVisibleState() {
|
private void updateVisibleState() {
|
||||||
// Immediately update the UI.
|
// Immediately update the UI.
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
// Now update the state
|
@Override
|
||||||
statusPane.updateState();
|
public void run() {
|
||||||
memoryWindow.updateState();
|
// Now update the state
|
||||||
if (traceLog.shouldUpdate()) {
|
statusPane.updateState();
|
||||||
traceLog.refresh();
|
memoryWindow.updateState();
|
||||||
|
if (traceLog.shouldUpdate()) {
|
||||||
|
traceLog.refresh();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import com.loomcom.symon.exceptions.MemoryRangeException;
|
|||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A memory-mapped IO Device.
|
* A memory-mapped IO Device.
|
||||||
@@ -115,7 +116,12 @@ public abstract class Device implements Comparable<Device> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void notifyListeners() {
|
public void notifyListeners() {
|
||||||
deviceChangeListeners.forEach(DeviceChangeListener::deviceStateChanged);
|
deviceChangeListeners.forEach(new Consumer<DeviceChangeListener>() {
|
||||||
|
@Override
|
||||||
|
public void accept(DeviceChangeListener deviceChangeListener) {
|
||||||
|
deviceChangeListener.deviceStateChanged();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,7 +30,10 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
|
import javax.swing.event.ListSelectionEvent;
|
||||||
|
import javax.swing.event.ListSelectionListener;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -62,21 +65,24 @@ public class BreakpointsWindow extends JFrame {
|
|||||||
breakpointsPanel.setLayout(new BorderLayout());
|
breakpointsPanel.setLayout(new BorderLayout());
|
||||||
breakpointsPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
|
breakpointsPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
|
||||||
|
|
||||||
JButton addButton = new JButton("Add");
|
final JButton addButton = new JButton("Add");
|
||||||
JButton removeButton = new JButton("Del");
|
final JButton removeButton = new JButton("Del");
|
||||||
removeButton.setEnabled(false);
|
removeButton.setEnabled(false);
|
||||||
|
|
||||||
JTextField addTextField = new JTextField(4);
|
final JTextField addTextField = new JTextField(4);
|
||||||
|
|
||||||
JTable breakpointsTable = new JTable(breakpoints);
|
final JTable breakpointsTable = new JTable(breakpoints);
|
||||||
breakpointsTable.setShowGrid(true);
|
breakpointsTable.setShowGrid(true);
|
||||||
breakpointsTable.setGridColor(Color.LIGHT_GRAY);
|
breakpointsTable.setGridColor(Color.LIGHT_GRAY);
|
||||||
breakpointsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
breakpointsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||||
breakpointsTable.getSelectionModel().addListSelectionListener(e -> {
|
breakpointsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
|
||||||
if (e.getFirstIndex() > -1) {
|
@Override
|
||||||
removeButton.setEnabled(true);
|
public void valueChanged(ListSelectionEvent e) {
|
||||||
} else {
|
if (e.getFirstIndex() > -1) {
|
||||||
removeButton.setEnabled(false);
|
removeButton.setEnabled(true);
|
||||||
|
} else {
|
||||||
|
removeButton.setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -86,37 +92,45 @@ public class BreakpointsWindow extends JFrame {
|
|||||||
|
|
||||||
breakpointsPanel.add(scrollPane, BorderLayout.CENTER);
|
breakpointsPanel.add(scrollPane, BorderLayout.CENTER);
|
||||||
|
|
||||||
ActionListener addBreakpointListener = e -> {
|
ActionListener addBreakpointListener = new ActionListener() {
|
||||||
int value = -1;
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
int value;
|
||||||
|
|
||||||
String newBreakpoint = addTextField.getText();
|
String newBreakpoint = addTextField.getText();
|
||||||
|
|
||||||
if (newBreakpoint == null || newBreakpoint.isEmpty()) {
|
if (newBreakpoint == null || newBreakpoint.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
value = (Integer.parseInt(addTextField.getText(), 16) & 0xffff);
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
logger.warn("Can't parse page number {}", newBreakpoint);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
breakpoints.addBreakpoint(value);
|
||||||
|
|
||||||
|
logger.debug("Added breakpoint ${}", Utils.wordToHex(value));
|
||||||
|
|
||||||
|
addTextField.setText(EMPTY_STRING);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
value = (Integer.parseInt(addTextField.getText(), 16) & 0xffff);
|
|
||||||
} catch (NumberFormatException ex) {
|
|
||||||
logger.warn("Can't parse page number {}", newBreakpoint);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
breakpoints.addBreakpoint(value);
|
|
||||||
|
|
||||||
logger.debug("Added breakpoint ${}", Utils.wordToHex(value));
|
|
||||||
|
|
||||||
addTextField.setText(EMPTY_STRING);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
addButton.addActionListener(addBreakpointListener);
|
addButton.addActionListener(addBreakpointListener);
|
||||||
addTextField.addActionListener(addBreakpointListener);
|
addTextField.addActionListener(addBreakpointListener);
|
||||||
|
|
||||||
removeButton.addActionListener(e -> breakpoints.removeBreakpointAtIndex(breakpointsTable.getSelectedRow()));
|
removeButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
breakpoints.removeBreakpointAtIndex(breakpointsTable.getSelectedRow());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
controlPanel.add(addTextField);
|
controlPanel.add(addTextField);
|
||||||
controlPanel.add(addButton);
|
controlPanel.add(addButton);
|
||||||
|
|||||||
@@ -97,19 +97,25 @@ public class PreferencesDialog extends Observable implements Preferences {
|
|||||||
JButton applyButton = new JButton("Apply");
|
JButton applyButton = new JButton("Apply");
|
||||||
JButton cancelButton = new JButton("Cancel");
|
JButton cancelButton = new JButton("Cancel");
|
||||||
|
|
||||||
cancelButton.addActionListener(actionEvent -> {
|
cancelButton.addActionListener(new ActionListener() {
|
||||||
updateUi();
|
@Override
|
||||||
dialog.setVisible(false);
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
|
PreferencesDialog.this.updateUi();
|
||||||
|
dialog.setVisible(false);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
applyButton.addActionListener(actionEvent -> {
|
applyButton.addActionListener(new ActionListener() {
|
||||||
haltOnBreak = haltOnBreakCheckBox.isSelected();
|
@Override
|
||||||
programLoadAddress = hexToInt(programLoadAddressField.getText());
|
public void actionPerformed(ActionEvent actionEvent) {
|
||||||
updateUi();
|
haltOnBreak = haltOnBreakCheckBox.isSelected();
|
||||||
// TODO: Actually check to see if values have changed, don't assume.
|
programLoadAddress = PreferencesDialog.this.hexToInt(programLoadAddressField.getText());
|
||||||
setChanged();
|
PreferencesDialog.this.updateUi();
|
||||||
PreferencesDialog.this.notifyObservers();
|
// TODO: Actually check to see if values have changed, don't assume.
|
||||||
dialog.setVisible(false);
|
PreferencesDialog.this.setChanged();
|
||||||
|
PreferencesDialog.this.notifyObservers();
|
||||||
|
dialog.setVisible(false);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
buttonsContainer.add(applyButton);
|
buttonsContainer.add(applyButton);
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ import javax.swing.*;
|
|||||||
import javax.swing.border.Border;
|
import javax.swing.border.Border;
|
||||||
import javax.swing.border.EtchedBorder;
|
import javax.swing.border.EtchedBorder;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UI component that displays the current state of the simulated CPU.
|
* UI component that displays the current state of the simulated CPU.
|
||||||
@@ -162,59 +164,74 @@ public class StatusPanel extends JPanel {
|
|||||||
yField = makeTextField(SMALL_TEXT_FIELD_SIZE, true);
|
yField = makeTextField(SMALL_TEXT_FIELD_SIZE, true);
|
||||||
|
|
||||||
// Make fields editable
|
// Make fields editable
|
||||||
pcField.addActionListener(e -> {
|
pcField.addActionListener(new ActionListener() {
|
||||||
try {
|
@Override
|
||||||
int newVal = getHexVal(pcField) & 0xffff;
|
public void actionPerformed(ActionEvent e) {
|
||||||
machine.getCpu().setProgramCounter(newVal);
|
try {
|
||||||
} catch (Exception ex) {
|
int newVal = StatusPanel.this.getHexVal(pcField) & 0xffff;
|
||||||
// Swallow exception
|
machine.getCpu().setProgramCounter(newVal);
|
||||||
}
|
} catch (Exception ex) {
|
||||||
|
// Swallow exception
|
||||||
|
}
|
||||||
|
|
||||||
updateState();
|
StatusPanel.this.updateState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
spField.addActionListener(e -> {
|
spField.addActionListener(new ActionListener() {
|
||||||
try {
|
@Override
|
||||||
int newVal = getHexVal(spField) & 0xff;
|
public void actionPerformed(ActionEvent e) {
|
||||||
machine.getCpu().setStackPointer(newVal);
|
try {
|
||||||
} catch (Exception ex) {
|
int newVal = StatusPanel.this.getHexVal(spField) & 0xff;
|
||||||
// Swallow exception
|
machine.getCpu().setStackPointer(newVal);
|
||||||
}
|
} catch (Exception ex) {
|
||||||
|
// Swallow exception
|
||||||
|
}
|
||||||
|
|
||||||
updateState();
|
StatusPanel.this.updateState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
aField.addActionListener(e -> {
|
aField.addActionListener(new ActionListener() {
|
||||||
try {
|
@Override
|
||||||
int newVal = getHexVal(aField) & 0xff;
|
public void actionPerformed(ActionEvent e) {
|
||||||
machine.getCpu().setAccumulator(newVal);
|
try {
|
||||||
} catch (Exception ex) {
|
int newVal = StatusPanel.this.getHexVal(aField) & 0xff;
|
||||||
// Swallow exception
|
machine.getCpu().setAccumulator(newVal);
|
||||||
}
|
} catch (Exception ex) {
|
||||||
|
// Swallow exception
|
||||||
|
}
|
||||||
|
|
||||||
updateState();
|
StatusPanel.this.updateState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
xField.addActionListener(e -> {
|
xField.addActionListener(new ActionListener() {
|
||||||
try {
|
@Override
|
||||||
int newVal = getHexVal(xField) & 0xff;
|
public void actionPerformed(ActionEvent e) {
|
||||||
machine.getCpu().setXRegister(newVal);
|
try {
|
||||||
} catch (Exception ex) {
|
int newVal = StatusPanel.this.getHexVal(xField) & 0xff;
|
||||||
// Swallow exception
|
machine.getCpu().setXRegister(newVal);
|
||||||
}
|
} catch (Exception ex) {
|
||||||
|
// Swallow exception
|
||||||
|
}
|
||||||
|
|
||||||
updateState();
|
StatusPanel.this.updateState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
yField.addActionListener(e -> {
|
yField.addActionListener(new ActionListener() {
|
||||||
try {
|
@Override
|
||||||
int newVal = getHexVal(yField) & 0xff;
|
public void actionPerformed(ActionEvent e) {
|
||||||
machine.getCpu().setYRegister(newVal);
|
try {
|
||||||
} catch (Exception ex) {
|
int newVal = StatusPanel.this.getHexVal(yField) & 0xff;
|
||||||
// Swallow exception
|
machine.getCpu().setYRegister(newVal);
|
||||||
}
|
} catch (Exception ex) {
|
||||||
|
// Swallow exception
|
||||||
|
}
|
||||||
|
|
||||||
updateState();
|
StatusPanel.this.updateState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
constraints.anchor = GridBagConstraints.LINE_START;
|
constraints.anchor = GridBagConstraints.LINE_START;
|
||||||
|
|||||||
@@ -122,10 +122,13 @@ public class VideoWindow extends JFrame implements DeviceChangeListener {
|
|||||||
*/
|
*/
|
||||||
private class CursorBlinker implements Runnable {
|
private class CursorBlinker implements Runnable {
|
||||||
public void run() {
|
public void run() {
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
if (cursorBlinkRate > 0) {
|
@Override
|
||||||
hideCursor = !hideCursor;
|
public void run() {
|
||||||
repaint();
|
if (cursorBlinkRate > 0) {
|
||||||
|
hideCursor = !hideCursor;
|
||||||
|
VideoWindow.this.repaint();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user