diff --git a/COPYING b/COPYING index 53ff4a1..950e8f2 100644 --- a/COPYING +++ b/COPYING @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2008-2012 Seth J. Morabito +Copyright (c) 2008-2013 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/README.md b/README.md index a9ac8cf..36783b4 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ SYMON - A 6502 System Simulator **NOTE: THIS IS BETA QUALITY SOFTWARE UNDER ACTIVE DEVELOPMENT. Feedback is welcome!** -**Version:** 0.8.2 +**Version:** 0.8.3 -**Last Updated:** 01 January, 2013 +**Last Updated:** 12 January, 2013 Copyright (c) 2008-2013 Seth J. Morabito <web@loomcom.com> @@ -140,14 +140,25 @@ running. ## 5.0 Revision History + - **0.8.3:** 12 January, 2013 - Added tool-tip text. Memory is no longer + cleared when resetting. Fixed swapped register labels. + - **0.8.2:** 01 January, 2013 - Fully passes Klaus Dormann's 6502 Functional Test suite! + - **0.8.1:** 30 December, 2012 + - **0.8.0:** 29 December, 2012 + - **0.7.0:** 9 December, 2012 + - **0.6:** 5 November, 2012 + - **0.5:** 21 October, 2012 - Able to run Enhanced BASIC for the first time. + - **0.3:** 14 October, 2012 + - **0.2:** 22 April, 2012 + - **0.1:** 20 January, 2010 ## 6.0 To Do diff --git a/pom.xml b/pom.xml index 4aa1799..aa8f3cf 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.loomcom.symon symon jar - 0.8.2 + 0.8.3 symon http://www.loomcom.com/symon diff --git a/screenshots/console.png b/screenshots/console.png index 5b7a757..833e503 100644 Binary files a/screenshots/console.png and b/screenshots/console.png differ diff --git a/screenshots/font_selection.png b/screenshots/font_selection.png index d62326e..9a58710 100644 Binary files a/screenshots/font_selection.png and b/screenshots/font_selection.png differ diff --git a/screenshots/full.jpg b/screenshots/full.jpg index 2977e57..4362504 100644 Binary files a/screenshots/full.jpg and b/screenshots/full.jpg differ diff --git a/screenshots/load_rom.png b/screenshots/load_rom.png index caba375..8666a3d 100644 Binary files a/screenshots/load_rom.png and b/screenshots/load_rom.png differ diff --git a/screenshots/memory_window.png b/screenshots/memory_window.png index 7ddf5f1..58aac7a 100644 Binary files a/screenshots/memory_window.png and b/screenshots/memory_window.png differ diff --git a/screenshots/trace_log.png b/screenshots/trace_log.png index 7ac1c87..00f71e0 100644 Binary files a/screenshots/trace_log.png and b/screenshots/trace_log.png differ diff --git a/src/main/java/com/loomcom/symon/Simulator.java b/src/main/java/com/loomcom/symon/Simulator.java index 86ae106..ef71dc3 100644 --- a/src/main/java/com/loomcom/symon/Simulator.java +++ b/src/main/java/com/loomcom/symon/Simulator.java @@ -270,10 +270,9 @@ public class Simulator implements Observer { } try { - logger.log(Level.INFO, "Cold reset requested. Resetting CPU and clearing memory."); + logger.log(Level.INFO, "Reset requested. Resetting CPU."); // Reset and clear memory cpu.reset(); - ram.fill(0x00); // Clear the console. console.reset(); // Reset the trace log. @@ -440,8 +439,6 @@ public class Simulator implements Observer { SwingUtilities.invokeLater(new Runnable() { public void run() { - // Tell the console to start handling key presses - console.startListening(); // Don't allow step while the simulator is running stepButton.setEnabled(false); menuBar.simulatorDidStart(); diff --git a/src/main/java/com/loomcom/symon/ui/Console.java b/src/main/java/com/loomcom/symon/ui/Console.java index 0e5ef3b..e6511c3 100644 --- a/src/main/java/com/loomcom/symon/ui/Console.java +++ b/src/main/java/com/loomcom/symon/ui/Console.java @@ -55,9 +55,6 @@ public class Console extends JTerminal implements KeyListener, MouseListener { // If true, send CRLF (0x0d 0x0a) whenever CR is typed private static final boolean SEND_CR_LF_FOR_CR = false; - // If true, the console is actively listening for key input. - private boolean isListening; - private FifoRingBuffer typeAheadBuffer; public Console(int columns, int rows, Font font) { @@ -65,7 +62,6 @@ public class Console extends JTerminal implements KeyListener, MouseListener { // A small type-ahead buffer, as might be found in any real // VT100-style serial terminal. this.typeAheadBuffer = new FifoRingBuffer(128); - this.isListening = false; setBorderWidth(DEFAULT_BORDER_WIDTH); addKeyListener(this); addMouseListener(this); @@ -87,14 +83,6 @@ public class Console extends JTerminal implements KeyListener, MouseListener { repaint(); } - public void startListening() { - this.isListening = true; - } - - public void stopListening() { - this.isListening = false; - } - /** * Returns true if a key has been pressed since the last time input was read. * @@ -110,23 +98,21 @@ public class Console extends JTerminal implements KeyListener, MouseListener { * @param keyEvent The key event. */ public void keyTyped(KeyEvent keyEvent) { - if (isListening) { - char keyTyped = keyEvent.getKeyChar(); + char keyTyped = keyEvent.getKeyChar(); - if (SWAP_CR_AND_LF) { - if (keyTyped == 0x0a) { - keyTyped = 0x0d; - } else if (keyTyped == 0x0d) { - keyTyped = 0x0a; - } + if (SWAP_CR_AND_LF) { + if (keyTyped == 0x0a) { + keyTyped = 0x0d; + } else if (keyTyped == 0x0d) { + keyTyped = 0x0a; } + } - if (SEND_CR_LF_FOR_CR && keyTyped == 0x0d) { - typeAheadBuffer.push((char) 0x0d); - typeAheadBuffer.push((char) 0x0a); - } else { - typeAheadBuffer.push(keyTyped); - } + if (SEND_CR_LF_FOR_CR && keyTyped == 0x0d) { + typeAheadBuffer.push((char) 0x0d); + typeAheadBuffer.push((char) 0x0a); + } else { + typeAheadBuffer.push(keyTyped); } keyEvent.consume(); diff --git a/src/main/java/com/loomcom/symon/ui/StatusPanel.java b/src/main/java/com/loomcom/symon/ui/StatusPanel.java index dad3450..1fa9f5d 100644 --- a/src/main/java/com/loomcom/symon/ui/StatusPanel.java +++ b/src/main/java/com/loomcom/symon/ui/StatusPanel.java @@ -122,6 +122,18 @@ public class StatusPanel extends JPanel { overflowFlagLabel = new JLabel(overflowOff, JLabel.CENTER); negativeFlagLabel = new JLabel(negativeOff, JLabel.CENTER); + // Add tool-tip text + carryFlagLabel.setToolTipText("Carry: The last operation caused an overflow " + + "from bit 7 of the result or an underflow from bit 0"); + zeroFlagLabel.setToolTipText("Zero: The result of the last operation was 0"); + irqDisableFlagLabel.setToolTipText("Interrupt Disable: Processor will not respond to IRQ"); + decimalModeFlagLabel.setToolTipText("Decimal Mode"); + breakFlagLabel.setToolTipText("Break: BRK instruction occurred"); + overflowFlagLabel.setToolTipText("Overflow: The result of the last operation was " + + "an invalid 2's complement result"); + negativeFlagLabel.setToolTipText("Negative: The result of the last operation set bit 7"); + + statusFlagsPanel.add(negativeFlagLabel); statusFlagsPanel.add(overflowFlagLabel); statusFlagsPanel.add(breakFlagLabel); @@ -139,6 +151,11 @@ public class StatusPanel extends JPanel { xLabel = makeLabel("X"); yLabel = makeLabel("Y"); + statusFlagsLabel.setToolTipText("6502 Processor Status Flags"); + opcodeLabel.setToolTipText("Instruction Register"); + pcLabel.setToolTipText("Program Counter"); + spLabel.setToolTipText("Stack Pointer"); + opcodeField = makeTextField(LARGE_TEXT_FIELD_SIZE); pcField = makeTextField(LARGE_TEXT_FIELD_SIZE); spField = makeTextField(SMALL_TEXT_FIELD_SIZE);